diff --git a/change-notes/1.20/analysis-cpp.md b/change-notes/1.20/analysis-cpp.md index 66778a04ebd..d69208baca3 100644 --- a/change-notes/1.20/analysis-cpp.md +++ b/change-notes/1.20/analysis-cpp.md @@ -26,4 +26,5 @@ ## Changes to QL libraries -There is a new `Namespace.isInline()` predicate, which holds if the namespace was declared as `inline namespace`. +* There is a new `Namespace.isInline()` predicate, which holds if the namespace was declared as `inline namespace`. +* The `Expr.isConstant()` predicate now also holds for _address constant expressions_, which are addresses that will be constant after the program has been linked. These address constants do not have a result for `Expr.getValue()`. diff --git a/change-notes/1.20/analysis-csharp.md b/change-notes/1.20/analysis-csharp.md index 6fabd4b276d..6541be1877d 100644 --- a/change-notes/1.20/analysis-csharp.md +++ b/change-notes/1.20/analysis-csharp.md @@ -16,7 +16,9 @@ | Dereferenced variable may be null (cs/dereferenced-value-may-be-null) | Improved results | The query has been rewritten from scratch, and the analysis is now based on static single assignment (SSA) forms. The query is now enabled by default in LGTM. | | SQL query built from user-controlled sources (cs/sql-injection), Improper control of generation of code (cs/code-injection), Uncontrolled format string (cs/uncontrolled-format-string), Clear text storage of sensitive information (cs/cleartext-storage-of-sensitive-information), Exposure of private information (cs/exposure-of-sensitive-information) | More results | Data sources have been added from user controls in `System.Windows.Forms`. | | Use of default ToString() (cs/call-to-object-tostring) | Fewer false positives | Results have been removed for `char` arrays passed to `StringBuilder.Append()`, which were incorrectly marked as using `ToString`. | - +| Use of default ToString() (cs/call-to-object-tostring) | Fewer results | Results have been removed when the object is an interface or an abstract class. | +| Unused format argument (cs/format-argument-unused) | Fewer false positives | Results have been removed where the format string is empty. This is often used as a default value and is not an interesting result. | + ## Changes to code extraction * Fix extraction of `for` statements where the condition declares new variables using `is`. @@ -24,6 +26,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 diff --git a/change-notes/1.20/analysis-java.md b/change-notes/1.20/analysis-java.md index 36ce1c094af..8c59d936ef1 100644 --- a/change-notes/1.20/analysis-java.md +++ b/change-notes/1.20/analysis-java.md @@ -24,5 +24,8 @@ `semmle.code.java.dataflow.DataFlow`, `semmle.code.java.dataflow.TaintTracking`, and `semmle.code.java.dataflow.FlowSources` since 1.16. +* Taint tracking now includes additional default data-flow steps through + collections, maps, and iterators. This affects all security queries, which + can report more results based on such paths. diff --git a/change-notes/1.20/analysis-javascript.md b/change-notes/1.20/analysis-javascript.md index 21129c3ffec..49b786e41e3 100644 --- a/change-notes/1.20/analysis-javascript.md +++ b/change-notes/1.20/analysis-javascript.md @@ -10,11 +10,16 @@ * The taint tracking library now recognizes flow through persistent storage, class fields, and callbacks in certain cases. This may give more results for the security queries. +* Type inference for function calls has been improved. This may give additional results for queries that rely on type inference. + +* The [Closure-Library](https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide) module system is now supported. + ## New queries | **Query** | **Tags** | **Purpose** | |-----------------------------------------------|------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Arrow method on Vue instance (`js/vue/arrow-method-on-vue-instance`) | reliability, frameworks/vue | Highlights arrow functions that are used as methods on Vue instances. Results are shown on LGTM by default.| +| Cross-window communication with unrestricted target origin (`js/cross-window-information-leak`) | security, external/cwe/201, external/cwe/359 | Highlights code that sends potentially sensitive information to another window without restricting the receiver window's origin, indicating a possible violation of [CWE-201](https://cwe.mitre.org/data/definitions/201.html). Results are shown on LGTM by default. | | Double escaping or unescaping (`js/double-escaping`) | correctness, security, external/cwe/cwe-116 | Highlights potential double escaping or unescaping of special characters, indicating a possible violation of [CWE-116](https://cwe.mitre.org/data/definitions/116.html). Results are shown on LGTM by default. | | Incomplete regular expression for hostnames (`js/incomplete-hostname-regexp`) | correctness, security, external/cwe/cwe-020 | Highlights hostname sanitizers that are likely to be incomplete, indicating a violation of [CWE-020](https://cwe.mitre.org/data/definitions/20.html). Results are shown on LGTM by default.| | Incomplete URL substring sanitization | correctness, security, external/cwe/cwe-020 | Highlights URL sanitizers that are likely to be incomplete, indicating a violation of [CWE-020](https://cwe.mitre.org/data/definitions/20.html). Results shown on LGTM by default. | @@ -28,6 +33,7 @@ | **Query** | **Expected impact** | **Change** | |--------------------------------------------|------------------------------|------------------------------------------------------------------------------| | Client-side cross-site scripting | More true-positive results, fewer false-positive results. | This rule now recognizes WinJS functions that are vulnerable to HTML injection, and no longer flags certain safe uses of jQuery. | +| Hard-coded credentials | Fewer false-positive results | This rule no longer flag the empty string as a hardcoded username. | | Insecure randomness | More results | This rule now flags insecure uses of `crypto.pseudoRandomBytes`. | | Uncontrolled data used in network request | More results | This rule now recognizes host values that are vulnerable to injection. | | Unused parameter | Fewer false-positive results | This rule no longer flags parameters with leading underscore. | diff --git a/cpp/ql/src/AlertSuppression.ql b/cpp/ql/src/AlertSuppression.ql index 1b4fe330ff2..48a9568b87d 100644 --- a/cpp/ql/src/AlertSuppression.ql +++ b/cpp/ql/src/AlertSuppression.ql @@ -64,7 +64,7 @@ class SuppressionScope extends ElementBase { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo(string filepath, int startline, int startcolumn, int endline, int endcolumn) { this.(SuppressionComment).covers(filepath, startline, startcolumn, endline, endcolumn) diff --git a/cpp/ql/src/Critical/LargeParameter.cpp b/cpp/ql/src/Critical/LargeParameter.cpp index 27d48f64430..3e2df4e66ee 100644 --- a/cpp/ql/src/Critical/LargeParameter.cpp +++ b/cpp/ql/src/Critical/LargeParameter.cpp @@ -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 ... } diff --git a/cpp/ql/src/Critical/LargeParameter.ql b/cpp/ql/src/Critical/LargeParameter.ql index c2fd1053ae0..783d31a230e 100644 --- a/cpp/ql/src/Critical/LargeParameter.ql +++ b/cpp/ql/src/Critical/LargeParameter.ql @@ -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() diff --git a/cpp/ql/src/Documentation/CommentedOutCode.qll b/cpp/ql/src/Documentation/CommentedOutCode.qll index f6e0e3ba99b..0956b1a306a 100644 --- a/cpp/ql/src/Documentation/CommentedOutCode.qll +++ b/cpp/ql/src/Documentation/CommentedOutCode.qll @@ -127,7 +127,7 @@ class CommentBlock extends Comment { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo(string filepath, int startline, int startcolumn, int endline, int endcolumn) { this.getLocation().hasLocationInfo(filepath, startline, startcolumn, _, _) and diff --git a/cpp/ql/src/Likely Bugs/Likely Typos/LogicalExprCouldBeSimplified.ql b/cpp/ql/src/Likely Bugs/Likely Typos/LogicalExprCouldBeSimplified.ql index 9847b0c4a71..31c3aeeb9c8 100644 --- a/cpp/ql/src/Likely Bugs/Likely Typos/LogicalExprCouldBeSimplified.ql +++ b/cpp/ql/src/Likely Bugs/Likely Typos/LogicalExprCouldBeSimplified.ql @@ -43,7 +43,7 @@ string comparisonOnLiterals(ComparisonOperation op) { simple(op.getLeftOperand()) and simple(op.getRightOperand()) and not op.getAnOperand().isInMacroExpansion() and - if op.isConstant() + if exists(op.getValue()) then result = "This comparison involves two literals and is always " + op.getValue() + "." else result = "This comparison involves two literals and should be simplified." } diff --git a/cpp/ql/src/Metrics/Internal/CallableExtents.ql b/cpp/ql/src/Metrics/Internal/CallableExtents.ql index b8ac8803734..4f1c5e4ac0f 100644 --- a/cpp/ql/src/Metrics/Internal/CallableExtents.ql +++ b/cpp/ql/src/Metrics/Internal/CallableExtents.ql @@ -17,7 +17,7 @@ class RangeFunction extends Function { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo(string path, int sl, int sc, int el, int ec) { super.getLocation().hasLocationInfo(path, sl, sc, _, _) diff --git a/cpp/ql/src/Security/CWE/CWE-190/ArithmeticTainted.ql b/cpp/ql/src/Security/CWE/CWE-190/ArithmeticTainted.ql index 2c60591de62..8b71e684651 100644 --- a/cpp/ql/src/Security/CWE/CWE-190/ArithmeticTainted.ql +++ b/cpp/ql/src/Security/CWE/CWE-190/ArithmeticTainted.ql @@ -16,18 +16,18 @@ import semmle.code.cpp.security.Overflow import semmle.code.cpp.security.Security import semmle.code.cpp.security.TaintTracking -predicate taintedVarAccess(Expr origin, VariableAccess va) { - isUserInput(origin, _) and - tainted(origin, va) -} - -from Expr origin, Operation op, VariableAccess va, string effect -where taintedVarAccess(origin, va) - and op.getAnOperand() = va +from Expr origin, Operation op, Expr e, string effect +where isUserInput(origin, _) + and tainted(origin, e) + and op.getAnOperand() = e and ( - (missingGuardAgainstUnderflow(op, va) and effect = "underflow") or - (missingGuardAgainstOverflow(op, va) and effect = "overflow") + (missingGuardAgainstUnderflow(op, e) and effect = "underflow") or + (missingGuardAgainstOverflow(op, e) and effect = "overflow") or + (not e instanceof VariableAccess and effect = "overflow") + ) and ( + op instanceof UnaryArithmeticOperation or + op instanceof BinaryArithmeticOperation ) -select va, "$@ flows to here and is used in arithmetic, potentially causing an " + effect + ".", +select e, "$@ flows to here and is used in arithmetic, potentially causing an " + effect + ".", origin, "User-provided value" diff --git a/cpp/ql/src/definitions.qll b/cpp/ql/src/definitions.qll index b067c22040c..bb2f8fc2005 100644 --- a/cpp/ql/src/definitions.qll +++ b/cpp/ql/src/definitions.qll @@ -23,7 +23,7 @@ class Top extends Element { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo(string filepath, int startline, int startcolumn, diff --git a/cpp/ql/src/semmle/code/cpp/File.qll b/cpp/ql/src/semmle/code/cpp/File.qll index 278762887d5..ff0d29ec505 100644 --- a/cpp/ql/src/semmle/code/cpp/File.qll +++ b/cpp/ql/src/semmle/code/cpp/File.qll @@ -34,7 +34,7 @@ abstract class Container extends Locatable, @container { * DEPRECATED: Use `getLocation` instead. * Gets a URL representing the location of this container. * - * For more information see https://lgtm.com/help/ql/locations#providing-urls. + * For more information see [Providing URLs](https://help.semmle.com/QL/learn-ql/ql/locations.html#providing-urls). */ deprecated abstract string getURL(); diff --git a/cpp/ql/src/semmle/code/cpp/Location.qll b/cpp/ql/src/semmle/code/cpp/Location.qll index 5696ecd9675..e2be4975fd3 100644 --- a/cpp/ql/src/semmle/code/cpp/Location.qll +++ b/cpp/ql/src/semmle/code/cpp/Location.qll @@ -68,7 +68,7 @@ class Location extends @location { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn) { diff --git a/cpp/ql/src/semmle/code/cpp/controlflow/BasicBlocks.qll b/cpp/ql/src/semmle/code/cpp/controlflow/BasicBlocks.qll index c254ed333f6..d59a27b691c 100644 --- a/cpp/ql/src/semmle/code/cpp/controlflow/BasicBlocks.qll +++ b/cpp/ql/src/semmle/code/cpp/controlflow/BasicBlocks.qll @@ -195,7 +195,7 @@ class BasicBlock extends ControlFlowNodeBase { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). * * Yields no result if this basic block spans multiple source files. */ diff --git a/cpp/ql/src/semmle/code/cpp/controlflow/internal/CFG.qll b/cpp/ql/src/semmle/code/cpp/controlflow/internal/CFG.qll index 184f9fca2a9..df0ef7a6797 100644 --- a/cpp/ql/src/semmle/code/cpp/controlflow/internal/CFG.qll +++ b/cpp/ql/src/semmle/code/cpp/controlflow/internal/CFG.qll @@ -461,38 +461,16 @@ private predicate skipInitializer(Initializer init) { */ private predicate runtimeExprInStaticInitializer(Expr e) { inStaticInitializer(e) and - if - e instanceof AggregateLiteral - or - e instanceof PointerArithmeticOperation - or - // Extractor doesn't populate this specifier at the time of writing, so - // this case has not been tested. See CPP-314. - e.(FunctionCall).getTarget().hasSpecifier("constexpr") + if e instanceof AggregateLiteral then runtimeExprInStaticInitializer(e.getAChild()) - else ( - // Not constant - not e.isConstant() and - // Not a function address - not e instanceof FunctionAccess and - // Not a function address-of (same as above) - not e.(AddressOfExpr).getOperand() instanceof FunctionAccess and - // Not the address of a global variable - not exists(Variable v | - v.isStatic() - or - v instanceof GlobalOrNamespaceVariable - | - e.(AddressOfExpr).getOperand() = v.getAnAccess() - ) - ) + else not e.getFullyConverted().isConstant() } /** Holds if `e` is part of the initializer of a local static variable. */ private predicate inStaticInitializer(Expr e) { exists(LocalVariable local | local.isStatic() and - e.(Node).getParentNode*() = local.getInitializer() + e.getParent+() = local.getInitializer() ) } diff --git a/cpp/ql/src/semmle/code/cpp/exprs/Expr.qll b/cpp/ql/src/semmle/code/cpp/exprs/Expr.qll index 83a35a745ac..0ef892daccf 100644 --- a/cpp/ql/src/semmle/code/cpp/exprs/Expr.qll +++ b/cpp/ql/src/semmle/code/cpp/exprs/Expr.qll @@ -2,6 +2,7 @@ import semmle.code.cpp.Element private import semmle.code.cpp.Enclosing private import semmle.code.cpp.internal.ResolveClass +private import semmle.code.cpp.internal.AddressConstantExpression /** * A C/C++ expression. @@ -84,7 +85,12 @@ class Expr extends StmtParent, @expr { string getValueText() { exists(@value v | values(v,_,result) and valuebind(v,underlyingElement(this))) } /** Holds if this expression has a value that can be determined at compile time. */ - predicate isConstant() { valuebind(_,underlyingElement(this)) } + cached + predicate isConstant() { + valuebind(_,underlyingElement(this)) + or + addressConstantExpression(this) + } /** * Holds if this expression is side-effect free (conservative diff --git a/cpp/ql/src/semmle/code/cpp/internal/AddressConstantExpression.qll b/cpp/ql/src/semmle/code/cpp/internal/AddressConstantExpression.qll new file mode 100644 index 00000000000..102dfe79af0 --- /dev/null +++ b/cpp/ql/src/semmle/code/cpp/internal/AddressConstantExpression.qll @@ -0,0 +1,184 @@ +private import cpp +private import semmle.code.cpp.dataflow.EscapesTree + +predicate addressConstantExpression(Expr e) { + constantAddressPointer(e) + or + constantAddressReference(e) + or + // Special case for function pointers, where `fp == *fp`. + constantAddressLValue(e) and + e.getType() instanceof FunctionPointerType +} + +/** Holds if `v` is a constexpr variable initialized to a constant address. */ +private predicate addressConstantVariable(Variable v) { + addressConstantExpression(v.getInitializer().getExpr().getFullyConverted()) and + // Here we should also require that `v` is constexpr, but we don't have that + // information in the db. See CPP-314. Instead, we require that the variable + // is never defined except in its initializer. + forall(Expr def | definition(v, def) | def = any(Initializer init).getExpr()) +} + +/** + * Holds if `lvalue` is an lvalue whose address is an _address constant + * expression_. + */ +private predicate constantAddressLValue(Expr lvalue) { + lvalue.(VariableAccess).getTarget() = any(Variable v | + v.(Variable).isStatic() + or + v instanceof GlobalOrNamespaceVariable + ) + or + // There is no `Conversion` for the implicit conversion from a function type + // to a function _pointer_ type. Instead, the type of a `FunctionAccess` + // tells us how it's going to be used. + lvalue.(FunctionAccess).getType() instanceof RoutineType + or + // String literals have array types and undergo array-to-pointer conversion. + lvalue instanceof StringLiteral + or + // lvalue -> lvalue + exists(Expr prev | + constantAddressLValue(prev) and + lvalueToLvalueStep(prev, lvalue) + ) + or + // pointer -> lvalue + exists(Expr prev | + constantAddressPointer(prev) and + pointerToLvalueStep(prev, lvalue) + ) + or + // reference -> lvalue + exists(Expr prev | + constantAddressReference(prev) and + referenceToLvalueStep(prev, lvalue) + ) +} + +/** Holds if `pointer` is an _address constant expression_ of pointer type. */ +private predicate constantAddressPointer(Expr pointer) { + // There is no `Conversion` for the implicit conversion from a function type + // to a function _pointer_ type. Instead, the type of a `FunctionAccess` + // tells us how it's going to be used. + pointer.(FunctionAccess).getType() instanceof FunctionPointerType + or + addressConstantVariable(pointer.(VariableAccess).getTarget()) and + pointer.getType().getUnderlyingType() instanceof PointerType + or + // pointer -> pointer + exists(Expr prev | + constantAddressPointer(prev) and + pointerToPointerStep(prev, pointer) + ) + or + // lvalue -> pointer + exists(Expr prev | + constantAddressLValue(prev) and + lvalueToPointerStep(prev, pointer) + ) +} + +/** Holds if `reference` is an _address constant expression_ of reference type. */ +private predicate constantAddressReference(Expr reference) { + addressConstantVariable(reference.(VariableAccess).getTarget()) and + reference.getType().getUnderlyingType() instanceof ReferenceType + or + addressConstantVariable(reference.(VariableAccess).getTarget()) and + reference.getType().getUnderlyingType() instanceof FunctionReferenceType // not a ReferenceType + or + // reference -> reference + exists(Expr prev | + constantAddressReference(prev) and + referenceToReferenceStep(prev, reference) + ) + or + // lvalue -> reference + exists(Expr prev | + constantAddressLValue(prev) and + lvalueToReferenceStep(prev, reference) + ) +} + +private predicate lvalueToLvalueStep(Expr lvalueIn, Expr lvalueOut) { + lvalueIn = lvalueOut.(DotFieldAccess).getQualifier().getFullyConverted() + or + lvalueIn.getConversion() = lvalueOut.(ParenthesisExpr) + or + // Special case for function pointers, where `fp == *fp`. + lvalueIn = lvalueOut.(PointerDereferenceExpr).getOperand().getFullyConverted() and + lvalueIn.getType() instanceof FunctionPointerType +} + +private predicate pointerToLvalueStep(Expr pointerIn, Expr lvalueOut) { + lvalueOut = any(ArrayExpr ae | + pointerIn = ae.getArrayBase().getFullyConverted() and + hasConstantValue(ae.getArrayOffset().getFullyConverted()) + ) + or + pointerIn = lvalueOut.(PointerDereferenceExpr).getOperand().getFullyConverted() + or + pointerIn = lvalueOut.(PointerFieldAccess).getQualifier().getFullyConverted() +} + +private predicate lvalueToPointerStep(Expr lvalueIn, Expr pointerOut) { + lvalueIn.getConversion() = pointerOut.(ArrayToPointerConversion) + or + lvalueIn = pointerOut.(AddressOfExpr).getOperand().getFullyConverted() +} + +private predicate pointerToPointerStep(Expr pointerIn, Expr pointerOut) { + ( + pointerOut instanceof PointerAddExpr + or + pointerOut instanceof PointerSubExpr + ) and + pointerIn = pointerOut.getAChild().getFullyConverted() and + pointerIn.getType().getUnspecifiedType() instanceof PointerType and + // The pointer arg won't be constant in the sense of `hasConstantValue`, so + // this will have to match the integer argument. + hasConstantValue(pointerOut.getAChild().getFullyConverted()) + or + pointerIn = pointerOut.(UnaryPlusExpr).getOperand().getFullyConverted() + or + pointerIn.getConversion() = pointerOut.(Cast) + or + pointerIn.getConversion() = pointerOut.(ParenthesisExpr) + or + pointerOut = any(ConditionalExpr cond | + cond.getCondition().getFullyConverted().getValue().toInt() != 0 and + pointerIn = cond.getThen().getFullyConverted() + or + cond.getCondition().getFullyConverted().getValue().toInt() = 0 and + pointerIn = cond.getElse().getFullyConverted() + ) + or + // The comma operator is allowed by C++17 but disallowed by C99. This + // disjunct is a compromise that's chosen for being easy to implement. + pointerOut = any(CommaExpr comma | + hasConstantValue(comma.getLeftOperand()) and + pointerIn = comma.getRightOperand().getFullyConverted() + ) +} + +private predicate lvalueToReferenceStep(Expr lvalueIn, Expr referenceOut) { + lvalueIn.getConversion() = referenceOut.(ReferenceToExpr) +} + +private predicate referenceToLvalueStep(Expr referenceIn, Expr lvalueOut) { + // This probably cannot happen. It would require an expression to be + // converted to a reference and back again without an intermediate variable + // assignment. + referenceIn.getConversion() = lvalueOut.(ReferenceDereferenceExpr) +} + +private predicate referenceToReferenceStep(Expr referenceIn, Expr referenceOut) { + referenceIn.getConversion() = referenceOut.(Cast) + or + referenceIn.getConversion() = referenceOut.(ParenthesisExpr) +} + +/** Holds if `e` is constant according to the database. */ +private predicate hasConstantValue(Expr e) { valuebind(_, underlyingElement(e)) } diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/FunctionIR.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/FunctionIR.qll index 8038083b8a7..99b82b95b7a 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/FunctionIR.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/FunctionIR.qll @@ -56,6 +56,11 @@ class FunctionIR extends TFunctionIR { result.getFunctionIR() = this } + pragma[noinline] + final UnmodeledUseInstruction getUnmodeledUseInstruction() { + result.getFunctionIR() = this + } + /** * Gets the single return instruction for this function. */ diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/IRBlock.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/IRBlock.qll index f94fad4f527..40643aae411 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/IRBlock.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/IRBlock.qll @@ -90,6 +90,10 @@ class IRBlock extends IRBlockBase { blockSuccessor(this, result, kind) } + final IRBlock getBackEdgeSuccessor(EdgeKind kind) { + backEdgeSuccessor(this, result, kind) + } + final predicate immediatelyDominates(IRBlock block) { blockImmediatelyDominates(this, block) } @@ -132,7 +136,10 @@ private predicate startsBasicBlock(Instruction instr) { exists(Instruction predecessor, EdgeKind kind | instr = predecessor.getSuccessor(kind) and not kind instanceof GotoEdge - ) // Incoming edge is not a GotoEdge + ) or // Incoming edge is not a GotoEdge + exists(Instruction predecessor | + instr = Construction::getInstructionBackEdgeSuccessor(predecessor, _) + ) // A back edge enters this instruction ) } @@ -152,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) { @@ -184,6 +180,41 @@ private cached module Cached { ) } + cached predicate backEdgeSuccessor(TIRBlock pred, TIRBlock succ, EdgeKind kind) { + backEdgeSuccessorRaw(pred, succ, kind) + or + forwardEdgeRaw+(pred, pred) and + blockSuccessor(pred, succ, kind) + } + + /** + * Holds if there is an edge from `pred` to `succ` that is not a back edge. + */ + private predicate forwardEdgeRaw(TIRBlock pred, TIRBlock succ) { + exists(EdgeKind kind | + blockSuccessor(pred, succ, kind) and + not backEdgeSuccessorRaw(pred, succ, kind) + ) + } + + /** + * Holds if the `kind`-edge from `pred` to `succ` is a back edge according to + * `Construction`. + * + * There could be loops of non-back-edges if there is a flaw in the IR + * construction or back-edge detection, and this could cause non-termination + * of subsequent analysis. To prevent that, a subsequent predicate further + * classifies all edges as back edges if they are involved in a loop of + * non-back-edges. + */ + private predicate backEdgeSuccessorRaw(TIRBlock pred, TIRBlock succ, EdgeKind kind) { + exists(Instruction predLast, Instruction succFirst | + predLast = getInstruction(pred, getInstructionCount(pred) - 1) and + succFirst = Construction::getInstructionBackEdgeSuccessor(predLast, kind) and + succ = MkIRBlock(succFirst) + ) + } + cached predicate blockSuccessor(TIRBlock pred, TIRBlock succ) { blockSuccessor(pred, succ, _) } diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/IRVariable.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/IRVariable.qll index ca55fc040c8..b25e47b4d25 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/IRVariable.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/IRVariable.qll @@ -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() { diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/Instruction.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/Instruction.qll index ad7df6a2159..ce88bfd9aa6 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/Instruction.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/Instruction.qll @@ -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 @@ -157,23 +155,60 @@ module InstructionSanity { blockCount = count(instr.getBlock()) and blockCount != 1 } + + private predicate forwardEdge(IRBlock b1, IRBlock b2) { + b1.getASuccessor() = b2 and + not b1.getBackEdgeSuccessor(_) = b2 + } + + /** + * Holds if `f` contains a loop in which no edge is a back edge. + * + * This check ensures we don't have too _few_ back edges. + */ + query predicate containsLoopOfForwardEdges(FunctionIR f) { + exists(IRBlock block | + forwardEdge+(block, block) and + block.getFunctionIR() = f + ) + } + + /** + * Holds if `block` is reachable from its function entry point but would not + * be reachable by traversing only forward edges. This check is skipped for + * functions containing `goto` statements as the property does not generally + * hold there. + * + * This check ensures we don't have too _many_ back edges. + */ + query predicate lostReachability(IRBlock block) { + exists(FunctionIR f, IRBlock entry | + entry = f.getEntryBlock() and + entry.getASuccessor+() = block and + not forwardEdge+(entry, block) and + not exists(GotoStmt s | s.getEnclosingFunction() = f.getFunction()) + ) + } + + /** + * Holds if the number of back edges differs between the `Instruction` graph + * and the `IRBlock` graph. + */ + query predicate backEdgeCountMismatch(Function f, int fromInstr, int fromBlock) { + fromInstr = count(Instruction i1, Instruction i2 | + i1.getFunction() = f and i1.getBackEdgeSuccessor(_) = i2 + ) and + fromBlock = count(IRBlock b1, IRBlock b2 | + b1.getFunction() = f and b1.getBackEdgeSuccessor(_) = b2 + ) and + fromInstr != fromBlock + } } /** * 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() } @@ -196,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() } /** @@ -216,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 @@ -261,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() + "]" @@ -330,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() } /** @@ -373,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, _) } /** @@ -395,7 +430,7 @@ class Instruction extends Construction::TInstruction { * the integer value loaded from variable `x`. */ final predicate isGLValue() { - glvalue = true + Construction::instructionHasType(this, _, true) } /** @@ -412,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() ) } @@ -423,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) } /** @@ -489,6 +520,24 @@ class Instruction extends Construction::TInstruction { result = Construction::getInstructionSuccessor(this, kind) } + /** + * Gets the a _back-edge successor_ of this instruction along the control + * flow edge specified by `kind`. A back edge in the control-flow graph is + * intuitively the edge that goes back around a loop. If all back edges are + * removed from the control-flow graph, it becomes acyclic. + */ + final Instruction getBackEdgeSuccessor(EdgeKind kind) { + // We don't take these edges from + // `Construction::getInstructionBackEdgeSuccessor` since that relation has + // not been treated to remove any loops that might be left over due to + // flaws in the IR construction or back-edge detection. + exists(IRBlock block | + block = this.getBlock() and + this = block.getLastInstruction() and + result = block.getBackEdgeSuccessor(kind).getFirstInstruction() + ) + } + /** * Gets all direct successors of this instruction. */ @@ -578,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() { @@ -607,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() { @@ -623,7 +672,7 @@ class FieldAddressInstruction extends FieldInstruction { class UninitializedInstruction extends VariableInstruction { UninitializedInstruction() { - opcode instanceof Opcode::Uninitialized + getOpcode() instanceof Opcode::Uninitialized } override final MemoryAccessKind getResultMemoryAccess() { @@ -640,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() { @@ -668,7 +717,7 @@ class ReturnValueInstruction extends ReturnInstruction { class CopyInstruction extends Instruction { CopyInstruction() { - opcode instanceof CopyOpcode + getOpcode() instanceof CopyOpcode } final Instruction getSourceValue() { @@ -678,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() { @@ -694,7 +743,7 @@ class LoadInstruction extends CopyInstruction { class StoreInstruction extends CopyInstruction { StoreInstruction() { - opcode instanceof Opcode::Store + getOpcode() instanceof Opcode::Store } override final MemoryAccessKind getResultMemoryAccess() { @@ -708,7 +757,7 @@ class StoreInstruction extends CopyInstruction { class ConditionalBranchInstruction extends Instruction { ConditionalBranchInstruction() { - opcode instanceof Opcode::ConditionalBranch + getOpcode() instanceof Opcode::ConditionalBranch } final Instruction getCondition() { @@ -726,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 } } @@ -766,7 +815,7 @@ class StringConstantInstruction extends Instruction { class BinaryInstruction extends Instruction { BinaryInstruction() { - opcode instanceof BinaryOpcode + getOpcode() instanceof BinaryOpcode } final Instruction getLeftOperand() { @@ -789,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 } } @@ -857,7 +906,7 @@ class PointerArithmeticInstruction extends BinaryInstruction { int elementSize; PointerArithmeticInstruction() { - opcode instanceof PointerArithmeticOpcode and + getOpcode() instanceof PointerArithmeticOpcode and elementSize = Construction::getInstructionElementSize(this) } @@ -872,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() { @@ -906,7 +955,7 @@ class UnaryInstruction extends Instruction { class ConvertInstruction extends UnaryInstruction { ConvertInstruction() { - opcode instanceof Opcode::Convert + getOpcode() instanceof Opcode::Convert } } @@ -958,7 +1007,7 @@ class InheritanceConversionInstruction extends UnaryInstruction { */ class ConvertToBaseInstruction extends InheritanceConversionInstruction { ConvertToBaseInstruction() { - opcode instanceof Opcode::ConvertToBase + getOpcode() instanceof Opcode::ConvertToBase } } @@ -968,7 +1017,7 @@ class ConvertToBaseInstruction extends InheritanceConversionInstruction { */ class ConvertToVirtualBaseInstruction extends InheritanceConversionInstruction { ConvertToVirtualBaseInstruction() { - opcode instanceof Opcode::ConvertToVirtualBase + getOpcode() instanceof Opcode::ConvertToVirtualBase } } @@ -978,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 } } @@ -1017,7 +1066,7 @@ class CompareNEInstruction extends CompareInstruction { */ class RelationalInstruction extends CompareInstruction { RelationalInstruction() { - opcode instanceof RelationalOpcode + getOpcode() instanceof RelationalOpcode } /** @@ -1050,7 +1099,7 @@ class RelationalInstruction extends CompareInstruction { class CompareLTInstruction extends RelationalInstruction { CompareLTInstruction() { - opcode instanceof Opcode::CompareLT + getOpcode() instanceof Opcode::CompareLT } override Instruction getLesserOperand() { @@ -1068,7 +1117,7 @@ class CompareLTInstruction extends RelationalInstruction { class CompareGTInstruction extends RelationalInstruction { CompareGTInstruction() { - opcode instanceof Opcode::CompareGT + getOpcode() instanceof Opcode::CompareGT } override Instruction getLesserOperand() { @@ -1086,7 +1135,7 @@ class CompareGTInstruction extends RelationalInstruction { class CompareLEInstruction extends RelationalInstruction { CompareLEInstruction() { - opcode instanceof Opcode::CompareLE + getOpcode() instanceof Opcode::CompareLE } override Instruction getLesserOperand() { @@ -1104,7 +1153,7 @@ class CompareLEInstruction extends RelationalInstruction { class CompareGEInstruction extends RelationalInstruction { CompareGEInstruction() { - opcode instanceof Opcode::CompareGE + getOpcode() instanceof Opcode::CompareGE } override Instruction getLesserOperand() { @@ -1122,7 +1171,7 @@ class CompareGEInstruction extends RelationalInstruction { class SwitchInstruction extends Instruction { SwitchInstruction() { - opcode instanceof Opcode::Switch + getOpcode() instanceof Opcode::Switch } final Instruction getExpression() { @@ -1145,7 +1194,7 @@ class SwitchInstruction extends Instruction { */ class CallInstruction extends Instruction { CallInstruction() { - opcode instanceof Opcode::Call + getOpcode() instanceof Opcode::Call } /** @@ -1188,7 +1237,7 @@ class CallInstruction extends Instruction { */ class SideEffectInstruction extends Instruction { SideEffectInstruction() { - opcode instanceof SideEffectOpcode + getOpcode() instanceof SideEffectOpcode } final Instruction getPrimaryInstruction() { @@ -1202,7 +1251,7 @@ class SideEffectInstruction extends Instruction { */ class CallSideEffectInstruction extends SideEffectInstruction { CallSideEffectInstruction() { - opcode instanceof Opcode::CallSideEffect + getOpcode() instanceof Opcode::CallSideEffect } override final MemoryAccessKind getResultMemoryAccess() { @@ -1216,7 +1265,7 @@ class CallSideEffectInstruction extends SideEffectInstruction { */ class CallReadSideEffectInstruction extends SideEffectInstruction { CallReadSideEffectInstruction() { - opcode instanceof Opcode::CallReadSideEffect + getOpcode() instanceof Opcode::CallReadSideEffect } } @@ -1225,7 +1274,7 @@ class CallReadSideEffectInstruction extends SideEffectInstruction { */ class IndirectReadSideEffectInstruction extends SideEffectInstruction { IndirectReadSideEffectInstruction() { - opcode instanceof Opcode::IndirectReadSideEffect + getOpcode() instanceof Opcode::IndirectReadSideEffect } } @@ -1234,7 +1283,7 @@ class IndirectReadSideEffectInstruction extends SideEffectInstruction { */ class BufferReadSideEffectInstruction extends SideEffectInstruction { BufferReadSideEffectInstruction() { - opcode instanceof Opcode::BufferReadSideEffect + getOpcode() instanceof Opcode::BufferReadSideEffect } } @@ -1243,7 +1292,7 @@ class BufferReadSideEffectInstruction extends SideEffectInstruction { */ class IndirectWriteSideEffectInstruction extends SideEffectInstruction { IndirectWriteSideEffectInstruction() { - opcode instanceof Opcode::IndirectWriteSideEffect + getOpcode() instanceof Opcode::IndirectWriteSideEffect } override final MemoryAccessKind getResultMemoryAccess() { @@ -1257,7 +1306,7 @@ class IndirectWriteSideEffectInstruction extends SideEffectInstruction { */ class BufferWriteSideEffectInstruction extends SideEffectInstruction { BufferWriteSideEffectInstruction() { - opcode instanceof Opcode::BufferWriteSideEffect + getOpcode() instanceof Opcode::BufferWriteSideEffect } override final MemoryAccessKind getResultMemoryAccess() { @@ -1272,7 +1321,7 @@ class BufferWriteSideEffectInstruction extends SideEffectInstruction { */ class IndirectMayWriteSideEffectInstruction extends SideEffectInstruction { IndirectMayWriteSideEffectInstruction() { - opcode instanceof Opcode::IndirectMayWriteSideEffect + getOpcode() instanceof Opcode::IndirectMayWriteSideEffect } override final MemoryAccessKind getResultMemoryAccess() { @@ -1286,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 @@ -1298,7 +1347,7 @@ class BufferMayWriteSideEffectInstruction extends SideEffectInstruction { */ class ThrowInstruction extends Instruction { ThrowInstruction() { - opcode instanceof ThrowOpcode + getOpcode() instanceof ThrowOpcode } } @@ -1307,7 +1356,7 @@ class ThrowInstruction extends Instruction { */ class ThrowValueInstruction extends ThrowInstruction { ThrowValueInstruction() { - opcode instanceof Opcode::ThrowValue + getOpcode() instanceof Opcode::ThrowValue } /** @@ -1330,7 +1379,7 @@ class ThrowValueInstruction extends ThrowInstruction { */ class ReThrowInstruction extends ThrowInstruction { ReThrowInstruction() { - opcode instanceof Opcode::ReThrow + getOpcode() instanceof Opcode::ReThrow } } @@ -1339,7 +1388,7 @@ class ReThrowInstruction extends ThrowInstruction { */ class UnwindInstruction extends Instruction { UnwindInstruction() { - opcode instanceof Opcode::Unwind + getOpcode() instanceof Opcode::Unwind } } @@ -1348,7 +1397,7 @@ class UnwindInstruction extends Instruction { */ class CatchInstruction extends Instruction { CatchInstruction() { - opcode instanceof CatchOpcode + getOpcode() instanceof CatchOpcode } } @@ -1359,7 +1408,7 @@ class CatchByTypeInstruction extends CatchInstruction { Type exceptionType; CatchByTypeInstruction() { - opcode instanceof Opcode::CatchByType and + getOpcode() instanceof Opcode::CatchByType and exceptionType = Construction::getInstructionExceptionType(this) } @@ -1380,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() { @@ -1399,7 +1448,7 @@ class UnmodeledDefinitionInstruction extends Instruction { */ class AliasedDefinitionInstruction extends Instruction { AliasedDefinitionInstruction() { - opcode instanceof Opcode::AliasedDefinition + getOpcode() instanceof Opcode::AliasedDefinition } override final MemoryAccessKind getResultMemoryAccess() { @@ -1409,7 +1458,7 @@ class AliasedDefinitionInstruction extends Instruction { class UnmodeledUseInstruction extends Instruction { UnmodeledUseInstruction() { - opcode instanceof Opcode::UnmodeledUse + getOpcode() instanceof Opcode::UnmodeledUse } override string getOperandsString() { @@ -1429,7 +1478,7 @@ class UnmodeledUseInstruction extends Instruction { */ class PhiInstruction extends Instruction { PhiInstruction() { - opcode instanceof Opcode::Phi + getOpcode() instanceof Opcode::Phi } override final MemoryAccessKind getResultMemoryAccess() { @@ -1481,7 +1530,7 @@ class PhiInstruction extends Instruction { */ class ChiInstruction extends Instruction { ChiInstruction() { - opcode instanceof Opcode::Chi + getOpcode() instanceof Opcode::Chi } override final MemoryAccessKind getResultMemoryAccess() { @@ -1511,7 +1560,7 @@ class ChiInstruction extends Instruction { */ class UnreachedInstruction extends Instruction { UnreachedInstruction() { - opcode instanceof Opcode::Unreached + getOpcode() instanceof Opcode::Unreached } } @@ -1521,6 +1570,6 @@ class UnreachedInstruction extends Instruction { */ class BuiltInInstruction extends Instruction { BuiltInInstruction() { - opcode instanceof BuiltInOpcode + getOpcode() instanceof BuiltInOpcode } } diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/PrintIR.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/PrintIR.qll index 8fb77621426..748faeee590 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/PrintIR.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/PrintIR.qll @@ -287,7 +287,9 @@ query predicate edges(PrintableIRBlock pred, PrintableIRBlock succ, string key, ( ( key = "semmle.label" and - value = kind.toString() + if predBlock.getBackEdgeSuccessor(kind) = succBlock + then value = kind.toString() + " (back edge)" + else value = kind.toString() ) or ( key = "semmle.order" and diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/internal/SSAConstruction.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/internal/SSAConstruction.qll index 88914e21c3a..585243a5f21 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/internal/SSAConstruction.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/internal/SSAConstruction.qll @@ -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,13 +115,14 @@ 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 - instruction instanceof UnmodeledUseInstruction and - tag instanceof UnmodeledUseOperandTag and - result instanceof UnmodeledDefinitionInstruction and - instruction.getFunction() = result.getFunction() + exists(FunctionIR f | + tag instanceof UnmodeledUseOperandTag and + result = f.getUnmodeledDefinitionInstruction() and + instruction = f.getUnmodeledUseInstruction() + ) or tag instanceof ChiTotalOperandTag and result = getChiInstructionTotalOperand(instruction) @@ -207,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 @@ -229,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()) ) } @@ -256,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)) @@ -272,12 +198,106 @@ cached private module Cached { ) ) or exists(OldInstruction oldInstruction | - instruction = getChiInstruction(oldInstruction) and + instruction = Chi(oldInstruction) and result = getNewInstruction(oldInstruction.getSuccessor(kind)) ) ) } + cached Instruction getInstructionBackEdgeSuccessor(Instruction instruction, EdgeKind kind) { + exists(OldInstruction oldInstruction | + not Reachability::isInfeasibleInstructionSuccessor(oldInstruction, kind) and + // There is only one case for the translation into `result` because the + // SSA construction never inserts extra instructions _before_ an existing + // instruction. + getOldInstruction(result) = oldInstruction.getBackEdgeSuccessor(kind) and + // There are two cases for the translation into `instruction` because the + // SSA construction might have inserted a chi node _after_ + // `oldInstruction`, in which case the back edge should come out of the + // chi node instead. + if hasChiNode(_, 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()) } @@ -328,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 } @@ -352,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()) @@ -374,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] @@ -404,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) ) } @@ -517,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" ) } diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/FunctionIR.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/FunctionIR.qll index 8038083b8a7..99b82b95b7a 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/FunctionIR.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/FunctionIR.qll @@ -56,6 +56,11 @@ class FunctionIR extends TFunctionIR { result.getFunctionIR() = this } + pragma[noinline] + final UnmodeledUseInstruction getUnmodeledUseInstruction() { + result.getFunctionIR() = this + } + /** * Gets the single return instruction for this function. */ diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/IRBlock.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/IRBlock.qll index f94fad4f527..40643aae411 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/IRBlock.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/IRBlock.qll @@ -90,6 +90,10 @@ class IRBlock extends IRBlockBase { blockSuccessor(this, result, kind) } + final IRBlock getBackEdgeSuccessor(EdgeKind kind) { + backEdgeSuccessor(this, result, kind) + } + final predicate immediatelyDominates(IRBlock block) { blockImmediatelyDominates(this, block) } @@ -132,7 +136,10 @@ private predicate startsBasicBlock(Instruction instr) { exists(Instruction predecessor, EdgeKind kind | instr = predecessor.getSuccessor(kind) and not kind instanceof GotoEdge - ) // Incoming edge is not a GotoEdge + ) or // Incoming edge is not a GotoEdge + exists(Instruction predecessor | + instr = Construction::getInstructionBackEdgeSuccessor(predecessor, _) + ) // A back edge enters this instruction ) } @@ -152,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) { @@ -184,6 +180,41 @@ private cached module Cached { ) } + cached predicate backEdgeSuccessor(TIRBlock pred, TIRBlock succ, EdgeKind kind) { + backEdgeSuccessorRaw(pred, succ, kind) + or + forwardEdgeRaw+(pred, pred) and + blockSuccessor(pred, succ, kind) + } + + /** + * Holds if there is an edge from `pred` to `succ` that is not a back edge. + */ + private predicate forwardEdgeRaw(TIRBlock pred, TIRBlock succ) { + exists(EdgeKind kind | + blockSuccessor(pred, succ, kind) and + not backEdgeSuccessorRaw(pred, succ, kind) + ) + } + + /** + * Holds if the `kind`-edge from `pred` to `succ` is a back edge according to + * `Construction`. + * + * There could be loops of non-back-edges if there is a flaw in the IR + * construction or back-edge detection, and this could cause non-termination + * of subsequent analysis. To prevent that, a subsequent predicate further + * classifies all edges as back edges if they are involved in a loop of + * non-back-edges. + */ + private predicate backEdgeSuccessorRaw(TIRBlock pred, TIRBlock succ, EdgeKind kind) { + exists(Instruction predLast, Instruction succFirst | + predLast = getInstruction(pred, getInstructionCount(pred) - 1) and + succFirst = Construction::getInstructionBackEdgeSuccessor(predLast, kind) and + succ = MkIRBlock(succFirst) + ) + } + cached predicate blockSuccessor(TIRBlock pred, TIRBlock succ) { blockSuccessor(pred, succ, _) } diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/IRVariable.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/IRVariable.qll index ca55fc040c8..b25e47b4d25 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/IRVariable.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/IRVariable.qll @@ -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() { diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/Instruction.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/Instruction.qll index ad7df6a2159..ce88bfd9aa6 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/Instruction.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/Instruction.qll @@ -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 @@ -157,23 +155,60 @@ module InstructionSanity { blockCount = count(instr.getBlock()) and blockCount != 1 } + + private predicate forwardEdge(IRBlock b1, IRBlock b2) { + b1.getASuccessor() = b2 and + not b1.getBackEdgeSuccessor(_) = b2 + } + + /** + * Holds if `f` contains a loop in which no edge is a back edge. + * + * This check ensures we don't have too _few_ back edges. + */ + query predicate containsLoopOfForwardEdges(FunctionIR f) { + exists(IRBlock block | + forwardEdge+(block, block) and + block.getFunctionIR() = f + ) + } + + /** + * Holds if `block` is reachable from its function entry point but would not + * be reachable by traversing only forward edges. This check is skipped for + * functions containing `goto` statements as the property does not generally + * hold there. + * + * This check ensures we don't have too _many_ back edges. + */ + query predicate lostReachability(IRBlock block) { + exists(FunctionIR f, IRBlock entry | + entry = f.getEntryBlock() and + entry.getASuccessor+() = block and + not forwardEdge+(entry, block) and + not exists(GotoStmt s | s.getEnclosingFunction() = f.getFunction()) + ) + } + + /** + * Holds if the number of back edges differs between the `Instruction` graph + * and the `IRBlock` graph. + */ + query predicate backEdgeCountMismatch(Function f, int fromInstr, int fromBlock) { + fromInstr = count(Instruction i1, Instruction i2 | + i1.getFunction() = f and i1.getBackEdgeSuccessor(_) = i2 + ) and + fromBlock = count(IRBlock b1, IRBlock b2 | + b1.getFunction() = f and b1.getBackEdgeSuccessor(_) = b2 + ) and + fromInstr != fromBlock + } } /** * 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() } @@ -196,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() } /** @@ -216,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 @@ -261,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() + "]" @@ -330,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() } /** @@ -373,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, _) } /** @@ -395,7 +430,7 @@ class Instruction extends Construction::TInstruction { * the integer value loaded from variable `x`. */ final predicate isGLValue() { - glvalue = true + Construction::instructionHasType(this, _, true) } /** @@ -412,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() ) } @@ -423,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) } /** @@ -489,6 +520,24 @@ class Instruction extends Construction::TInstruction { result = Construction::getInstructionSuccessor(this, kind) } + /** + * Gets the a _back-edge successor_ of this instruction along the control + * flow edge specified by `kind`. A back edge in the control-flow graph is + * intuitively the edge that goes back around a loop. If all back edges are + * removed from the control-flow graph, it becomes acyclic. + */ + final Instruction getBackEdgeSuccessor(EdgeKind kind) { + // We don't take these edges from + // `Construction::getInstructionBackEdgeSuccessor` since that relation has + // not been treated to remove any loops that might be left over due to + // flaws in the IR construction or back-edge detection. + exists(IRBlock block | + block = this.getBlock() and + this = block.getLastInstruction() and + result = block.getBackEdgeSuccessor(kind).getFirstInstruction() + ) + } + /** * Gets all direct successors of this instruction. */ @@ -578,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() { @@ -607,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() { @@ -623,7 +672,7 @@ class FieldAddressInstruction extends FieldInstruction { class UninitializedInstruction extends VariableInstruction { UninitializedInstruction() { - opcode instanceof Opcode::Uninitialized + getOpcode() instanceof Opcode::Uninitialized } override final MemoryAccessKind getResultMemoryAccess() { @@ -640,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() { @@ -668,7 +717,7 @@ class ReturnValueInstruction extends ReturnInstruction { class CopyInstruction extends Instruction { CopyInstruction() { - opcode instanceof CopyOpcode + getOpcode() instanceof CopyOpcode } final Instruction getSourceValue() { @@ -678,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() { @@ -694,7 +743,7 @@ class LoadInstruction extends CopyInstruction { class StoreInstruction extends CopyInstruction { StoreInstruction() { - opcode instanceof Opcode::Store + getOpcode() instanceof Opcode::Store } override final MemoryAccessKind getResultMemoryAccess() { @@ -708,7 +757,7 @@ class StoreInstruction extends CopyInstruction { class ConditionalBranchInstruction extends Instruction { ConditionalBranchInstruction() { - opcode instanceof Opcode::ConditionalBranch + getOpcode() instanceof Opcode::ConditionalBranch } final Instruction getCondition() { @@ -726,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 } } @@ -766,7 +815,7 @@ class StringConstantInstruction extends Instruction { class BinaryInstruction extends Instruction { BinaryInstruction() { - opcode instanceof BinaryOpcode + getOpcode() instanceof BinaryOpcode } final Instruction getLeftOperand() { @@ -789,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 } } @@ -857,7 +906,7 @@ class PointerArithmeticInstruction extends BinaryInstruction { int elementSize; PointerArithmeticInstruction() { - opcode instanceof PointerArithmeticOpcode and + getOpcode() instanceof PointerArithmeticOpcode and elementSize = Construction::getInstructionElementSize(this) } @@ -872,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() { @@ -906,7 +955,7 @@ class UnaryInstruction extends Instruction { class ConvertInstruction extends UnaryInstruction { ConvertInstruction() { - opcode instanceof Opcode::Convert + getOpcode() instanceof Opcode::Convert } } @@ -958,7 +1007,7 @@ class InheritanceConversionInstruction extends UnaryInstruction { */ class ConvertToBaseInstruction extends InheritanceConversionInstruction { ConvertToBaseInstruction() { - opcode instanceof Opcode::ConvertToBase + getOpcode() instanceof Opcode::ConvertToBase } } @@ -968,7 +1017,7 @@ class ConvertToBaseInstruction extends InheritanceConversionInstruction { */ class ConvertToVirtualBaseInstruction extends InheritanceConversionInstruction { ConvertToVirtualBaseInstruction() { - opcode instanceof Opcode::ConvertToVirtualBase + getOpcode() instanceof Opcode::ConvertToVirtualBase } } @@ -978,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 } } @@ -1017,7 +1066,7 @@ class CompareNEInstruction extends CompareInstruction { */ class RelationalInstruction extends CompareInstruction { RelationalInstruction() { - opcode instanceof RelationalOpcode + getOpcode() instanceof RelationalOpcode } /** @@ -1050,7 +1099,7 @@ class RelationalInstruction extends CompareInstruction { class CompareLTInstruction extends RelationalInstruction { CompareLTInstruction() { - opcode instanceof Opcode::CompareLT + getOpcode() instanceof Opcode::CompareLT } override Instruction getLesserOperand() { @@ -1068,7 +1117,7 @@ class CompareLTInstruction extends RelationalInstruction { class CompareGTInstruction extends RelationalInstruction { CompareGTInstruction() { - opcode instanceof Opcode::CompareGT + getOpcode() instanceof Opcode::CompareGT } override Instruction getLesserOperand() { @@ -1086,7 +1135,7 @@ class CompareGTInstruction extends RelationalInstruction { class CompareLEInstruction extends RelationalInstruction { CompareLEInstruction() { - opcode instanceof Opcode::CompareLE + getOpcode() instanceof Opcode::CompareLE } override Instruction getLesserOperand() { @@ -1104,7 +1153,7 @@ class CompareLEInstruction extends RelationalInstruction { class CompareGEInstruction extends RelationalInstruction { CompareGEInstruction() { - opcode instanceof Opcode::CompareGE + getOpcode() instanceof Opcode::CompareGE } override Instruction getLesserOperand() { @@ -1122,7 +1171,7 @@ class CompareGEInstruction extends RelationalInstruction { class SwitchInstruction extends Instruction { SwitchInstruction() { - opcode instanceof Opcode::Switch + getOpcode() instanceof Opcode::Switch } final Instruction getExpression() { @@ -1145,7 +1194,7 @@ class SwitchInstruction extends Instruction { */ class CallInstruction extends Instruction { CallInstruction() { - opcode instanceof Opcode::Call + getOpcode() instanceof Opcode::Call } /** @@ -1188,7 +1237,7 @@ class CallInstruction extends Instruction { */ class SideEffectInstruction extends Instruction { SideEffectInstruction() { - opcode instanceof SideEffectOpcode + getOpcode() instanceof SideEffectOpcode } final Instruction getPrimaryInstruction() { @@ -1202,7 +1251,7 @@ class SideEffectInstruction extends Instruction { */ class CallSideEffectInstruction extends SideEffectInstruction { CallSideEffectInstruction() { - opcode instanceof Opcode::CallSideEffect + getOpcode() instanceof Opcode::CallSideEffect } override final MemoryAccessKind getResultMemoryAccess() { @@ -1216,7 +1265,7 @@ class CallSideEffectInstruction extends SideEffectInstruction { */ class CallReadSideEffectInstruction extends SideEffectInstruction { CallReadSideEffectInstruction() { - opcode instanceof Opcode::CallReadSideEffect + getOpcode() instanceof Opcode::CallReadSideEffect } } @@ -1225,7 +1274,7 @@ class CallReadSideEffectInstruction extends SideEffectInstruction { */ class IndirectReadSideEffectInstruction extends SideEffectInstruction { IndirectReadSideEffectInstruction() { - opcode instanceof Opcode::IndirectReadSideEffect + getOpcode() instanceof Opcode::IndirectReadSideEffect } } @@ -1234,7 +1283,7 @@ class IndirectReadSideEffectInstruction extends SideEffectInstruction { */ class BufferReadSideEffectInstruction extends SideEffectInstruction { BufferReadSideEffectInstruction() { - opcode instanceof Opcode::BufferReadSideEffect + getOpcode() instanceof Opcode::BufferReadSideEffect } } @@ -1243,7 +1292,7 @@ class BufferReadSideEffectInstruction extends SideEffectInstruction { */ class IndirectWriteSideEffectInstruction extends SideEffectInstruction { IndirectWriteSideEffectInstruction() { - opcode instanceof Opcode::IndirectWriteSideEffect + getOpcode() instanceof Opcode::IndirectWriteSideEffect } override final MemoryAccessKind getResultMemoryAccess() { @@ -1257,7 +1306,7 @@ class IndirectWriteSideEffectInstruction extends SideEffectInstruction { */ class BufferWriteSideEffectInstruction extends SideEffectInstruction { BufferWriteSideEffectInstruction() { - opcode instanceof Opcode::BufferWriteSideEffect + getOpcode() instanceof Opcode::BufferWriteSideEffect } override final MemoryAccessKind getResultMemoryAccess() { @@ -1272,7 +1321,7 @@ class BufferWriteSideEffectInstruction extends SideEffectInstruction { */ class IndirectMayWriteSideEffectInstruction extends SideEffectInstruction { IndirectMayWriteSideEffectInstruction() { - opcode instanceof Opcode::IndirectMayWriteSideEffect + getOpcode() instanceof Opcode::IndirectMayWriteSideEffect } override final MemoryAccessKind getResultMemoryAccess() { @@ -1286,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 @@ -1298,7 +1347,7 @@ class BufferMayWriteSideEffectInstruction extends SideEffectInstruction { */ class ThrowInstruction extends Instruction { ThrowInstruction() { - opcode instanceof ThrowOpcode + getOpcode() instanceof ThrowOpcode } } @@ -1307,7 +1356,7 @@ class ThrowInstruction extends Instruction { */ class ThrowValueInstruction extends ThrowInstruction { ThrowValueInstruction() { - opcode instanceof Opcode::ThrowValue + getOpcode() instanceof Opcode::ThrowValue } /** @@ -1330,7 +1379,7 @@ class ThrowValueInstruction extends ThrowInstruction { */ class ReThrowInstruction extends ThrowInstruction { ReThrowInstruction() { - opcode instanceof Opcode::ReThrow + getOpcode() instanceof Opcode::ReThrow } } @@ -1339,7 +1388,7 @@ class ReThrowInstruction extends ThrowInstruction { */ class UnwindInstruction extends Instruction { UnwindInstruction() { - opcode instanceof Opcode::Unwind + getOpcode() instanceof Opcode::Unwind } } @@ -1348,7 +1397,7 @@ class UnwindInstruction extends Instruction { */ class CatchInstruction extends Instruction { CatchInstruction() { - opcode instanceof CatchOpcode + getOpcode() instanceof CatchOpcode } } @@ -1359,7 +1408,7 @@ class CatchByTypeInstruction extends CatchInstruction { Type exceptionType; CatchByTypeInstruction() { - opcode instanceof Opcode::CatchByType and + getOpcode() instanceof Opcode::CatchByType and exceptionType = Construction::getInstructionExceptionType(this) } @@ -1380,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() { @@ -1399,7 +1448,7 @@ class UnmodeledDefinitionInstruction extends Instruction { */ class AliasedDefinitionInstruction extends Instruction { AliasedDefinitionInstruction() { - opcode instanceof Opcode::AliasedDefinition + getOpcode() instanceof Opcode::AliasedDefinition } override final MemoryAccessKind getResultMemoryAccess() { @@ -1409,7 +1458,7 @@ class AliasedDefinitionInstruction extends Instruction { class UnmodeledUseInstruction extends Instruction { UnmodeledUseInstruction() { - opcode instanceof Opcode::UnmodeledUse + getOpcode() instanceof Opcode::UnmodeledUse } override string getOperandsString() { @@ -1429,7 +1478,7 @@ class UnmodeledUseInstruction extends Instruction { */ class PhiInstruction extends Instruction { PhiInstruction() { - opcode instanceof Opcode::Phi + getOpcode() instanceof Opcode::Phi } override final MemoryAccessKind getResultMemoryAccess() { @@ -1481,7 +1530,7 @@ class PhiInstruction extends Instruction { */ class ChiInstruction extends Instruction { ChiInstruction() { - opcode instanceof Opcode::Chi + getOpcode() instanceof Opcode::Chi } override final MemoryAccessKind getResultMemoryAccess() { @@ -1511,7 +1560,7 @@ class ChiInstruction extends Instruction { */ class UnreachedInstruction extends Instruction { UnreachedInstruction() { - opcode instanceof Opcode::Unreached + getOpcode() instanceof Opcode::Unreached } } @@ -1521,6 +1570,6 @@ class UnreachedInstruction extends Instruction { */ class BuiltInInstruction extends Instruction { BuiltInInstruction() { - opcode instanceof BuiltInOpcode + getOpcode() instanceof BuiltInOpcode } } diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/PrintIR.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/PrintIR.qll index 8fb77621426..748faeee590 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/PrintIR.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/PrintIR.qll @@ -287,7 +287,9 @@ query predicate edges(PrintableIRBlock pred, PrintableIRBlock succ, string key, ( ( key = "semmle.label" and - value = kind.toString() + if predBlock.getBackEdgeSuccessor(kind) = succBlock + then value = kind.toString() + " (back edge)" + else value = kind.toString() ) or ( key = "semmle.order" and diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/IRConstruction.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/IRConstruction.qll index 64a2a539ca2..e155d1e0c20 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/IRConstruction.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/IRConstruction.qll @@ -5,30 +5,15 @@ private import semmle.code.cpp.ir.internal.TempVariableTag private import InstructionTag private import TranslatedElement 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 @@ -38,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 | @@ -87,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, @@ -101,12 +75,112 @@ 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 + // get joined too early. The join order for the loop cases goes like this: + // - Find all loops of that type (tens of thousands). + // - Find all edges into the start of the loop (x 2). + // - Restrict to edges that originate within the loop (/ 2). + pragma[noopt] + cached Instruction getInstructionBackEdgeSuccessor(Instruction instruction, EdgeKind kind) { + // While loop: + // Any edge from within the body of the loop to the condition of the loop + // is a back edge. This includes edges from `continue` and the fall-through + // edge(s) after the last instruction(s) in the body. + exists(TranslatedWhileStmt s | + s instanceof TranslatedWhileStmt and + result = s.getFirstConditionInstruction() and + exists(TranslatedElement inBody, InstructionTag tag | + result = inBody.getInstructionSuccessor(tag, kind) and + exists(TranslatedElement body | body = s.getBody() | inBody = body.getAChild*()) and + instruction = inBody.getInstruction(tag) + ) + ) + or + // Do-while loop: + // The back edge should be the edge(s) from the condition to the + // body. This ensures that it's the back edge that will be pruned in a `do + // { ... } while (0)` statement. Note that all `continue` statements in a + // do-while loop produce forward edges. + exists(TranslatedDoStmt s | + s instanceof TranslatedDoStmt and + exists(TranslatedStmt body | body = s.getBody() | result = body.getFirstInstruction()) and + exists(TranslatedElement inCondition, InstructionTag tag | + result = inCondition.getInstructionSuccessor(tag, kind) and + exists(TranslatedElement condition | condition = s.getCondition() | + inCondition = condition.getAChild*() + ) and + instruction = inCondition.getInstruction(tag) + ) + ) + or + // For loop: + // Any edge from within the body or update of the loop to the condition of + // the loop is a back edge. When there is no loop update expression, this + // includes edges from `continue` and the fall-through edge(s) after the + // last instruction(s) in the body. A for loop may not have a condition, in + // which case `getFirstConditionInstruction` returns the body instead. + exists(TranslatedForStmt s | + s instanceof TranslatedForStmt and + result = s.getFirstConditionInstruction() and + exists(TranslatedElement inLoop, InstructionTag tag | + result = inLoop.getInstructionSuccessor(tag, kind) and + exists(TranslatedElement bodyOrUpdate | + bodyOrUpdate = s.getBody() + or + bodyOrUpdate = s.getUpdate() + | + inLoop = bodyOrUpdate.getAChild*() + ) and + instruction = inLoop.getInstruction(tag) + ) + ) + or + // Goto statement: + // As a conservative approximation, any edge out of `goto` is a back edge + // unless it goes strictly forward in the program text. A `goto` whose + // source and target are both inside a macro will be seen as having the + // same location for source and target, so we conservatively assume that + // such a `goto` creates a back edge. + exists(TranslatedElement s, GotoStmt goto | + goto instanceof GotoStmt and + not isStrictlyForwardGoto(goto) and + goto = s.getAST() and + exists(InstructionTag tag | + result = s.getInstructionSuccessor(tag, kind) and + instruction = s.getInstruction(tag) + ) + ) + } + + /** Holds if `goto` jumps strictly forward in the program text. */ + private predicate isStrictlyForwardGoto(GotoStmt goto) { + 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) { @@ -117,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) { @@ -179,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)) } } diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/InstructionTag.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/InstructionTag.qll index 34cbdaa1ee3..147b6ae4a96 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/InstructionTag.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/InstructionTag.qll @@ -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. diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll index f8c55464de7..d516a9780e8 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCall.qll @@ -255,26 +255,22 @@ abstract class TranslatedDirectCall extends TranslatedCall { */ abstract class TranslatedCallExpr extends TranslatedNonConstantExpr, TranslatedCall { - Call call; - - TranslatedCallExpr() { - expr = call - } + override Call expr; override final Type getCallResultType() { result = getResultType() } override final predicate hasArguments() { - exists(call.getArgument(0)) + exists(expr.getArgument(0)) } override final TranslatedExpr getQualifier() { - result = getTranslatedExpr(call.getQualifier().getFullyConverted()) + result = getTranslatedExpr(expr.getQualifier().getFullyConverted()) } override final TranslatedExpr getArgument(int index) { - result = getTranslatedExpr(call.getArgument(index).getFullyConverted()) + result = getTranslatedExpr(expr.getArgument(index).getFullyConverted()) } } @@ -282,14 +278,11 @@ abstract class TranslatedCallExpr extends TranslatedNonConstantExpr, * Represents the IR translation of a call through a function pointer. */ class TranslatedExprCall extends TranslatedCallExpr { - ExprCall exprCall; + override ExprCall expr; - TranslatedExprCall() { - expr = exprCall - } override TranslatedExpr getCallTarget() { - result = getTranslatedExpr(exprCall.getExpr().getFullyConverted()) + result = getTranslatedExpr(expr.getExpr().getFullyConverted()) } } @@ -297,22 +290,18 @@ class TranslatedExprCall extends TranslatedCallExpr { * Represents the IR translation of a direct function call. */ class TranslatedFunctionCall extends TranslatedCallExpr, TranslatedDirectCall { - FunctionCall funcCall; - - TranslatedFunctionCall() { - expr = funcCall - } + override FunctionCall expr; override Function getInstructionFunction(InstructionTag tag) { - tag = CallTargetTag() and result = funcCall.getTarget() + tag = CallTargetTag() and result = expr.getTarget() } override predicate hasReadSideEffect() { - not funcCall.getTarget().(SideEffectFunction).neverReadsMemory() + not expr.getTarget().(SideEffectFunction).neverReadsMemory() } override predicate hasWriteSideEffect() { - not funcCall.getTarget().(SideEffectFunction).neverWritesMemory() + not expr.getTarget().(SideEffectFunction).neverWritesMemory() } } @@ -321,8 +310,8 @@ class TranslatedFunctionCall extends TranslatedCallExpr, TranslatedDirectCall { */ class TranslatedStructorCall extends TranslatedFunctionCall { TranslatedStructorCall() { - funcCall instanceof ConstructorCall or - funcCall instanceof DestructorCall + expr instanceof ConstructorCall or + expr instanceof DestructorCall } override Instruction getQualifierResult() { diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCondition.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCondition.qll index 25959a23473..6f2853272e0 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCondition.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedCondition.qll @@ -75,11 +75,7 @@ abstract class TranslatedFlexibleCondition extends TranslatedCondition, } class TranslatedParenthesisCondition extends TranslatedFlexibleCondition { - ParenthesisExpr paren; - - TranslatedParenthesisCondition() { - paren = expr - } + override ParenthesisExpr expr; final override Instruction getChildTrueSuccessor(TranslatedCondition child) { child = getOperand() and @@ -92,16 +88,12 @@ class TranslatedParenthesisCondition extends TranslatedFlexibleCondition { } final override TranslatedCondition getOperand() { - result = getTranslatedCondition(paren.getExpr()) + result = getTranslatedCondition(expr.getExpr()) } } class TranslatedNotCondition extends TranslatedFlexibleCondition { - NotExpr notExpr; - - TranslatedNotCondition() { - notExpr = expr - } + override NotExpr expr; override Instruction getChildTrueSuccessor(TranslatedCondition child) { child = getOperand() and @@ -114,7 +106,7 @@ class TranslatedNotCondition extends TranslatedFlexibleCondition { } override TranslatedCondition getOperand() { - result = getTranslatedCondition(notExpr.getOperand().getFullyConverted()) + result = getTranslatedCondition(expr.getOperand().getFullyConverted()) } } @@ -131,11 +123,7 @@ abstract class TranslatedNativeCondition extends TranslatedCondition, abstract class TranslatedBinaryLogicalOperation extends TranslatedNativeCondition, ConditionContext { - BinaryLogicalOperation op; - - TranslatedBinaryLogicalOperation() { - op = expr - } + override BinaryLogicalOperation expr; override final TranslatedElement getChild(int id) { id = 0 and result = getLeftOperand() or @@ -157,17 +145,17 @@ abstract class TranslatedBinaryLogicalOperation extends } final TranslatedCondition getLeftOperand() { - result = getTranslatedCondition(op.getLeftOperand().getFullyConverted()) + result = getTranslatedCondition(expr.getLeftOperand().getFullyConverted()) } final TranslatedCondition getRightOperand() { - result = getTranslatedCondition(op.getRightOperand().getFullyConverted()) + result = getTranslatedCondition(expr.getRightOperand().getFullyConverted()) } } class TranslatedLogicalAndExpr extends TranslatedBinaryLogicalOperation { TranslatedLogicalAndExpr() { - op instanceof LogicalAndExpr + expr instanceof LogicalAndExpr } override Instruction getChildTrueSuccessor(TranslatedCondition child) { @@ -188,9 +176,7 @@ class TranslatedLogicalAndExpr extends TranslatedBinaryLogicalOperation { } class TranslatedLogicalOrExpr extends TranslatedBinaryLogicalOperation { - TranslatedLogicalOrExpr() { - op instanceof LogicalOrExpr - } + override LogicalOrExpr expr; override Instruction getChildTrueSuccessor(TranslatedCondition child) { (child = getLeftOperand() or child = getRightOperand()) and diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll index 6ca38c6505d..9b20eabc650 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll @@ -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. @@ -17,53 +18,42 @@ Type getIntType() { result.(IntType).isImplicitlySigned() } -/** - * If `expr` is a conversion, gets the expression being converted. Otherwise, - * returns `expr`. - */ -private Expr getUnconvertedExpr(Expr expr) { - if expr instanceof Conversion then ( - result = getUnconvertedExpr(expr.(Conversion).getExpr()) - ) else ( - result = expr - ) -} - /** * Gets the "real" parent of `expr`. This predicate treats conversions as if * they were explicit nodes in the expression tree, rather than as implicit * nodes as in the regular AST representation. */ private Element getRealParent(Expr expr) { - if expr.hasConversion() then ( - // The expression has a conversion, so treat that as its parent - result = expr.getConversion() - ) - else ( - // Either the expression is a top-level conversion, or it's not a - // conversion. The real parent is the parent of the original unconverted - // expression. - result = getUnconvertedExpr(expr).getParent() or - // The parent of a DestructorDestruction is the destructor itself. - result.(Destructor).getADestruction() = expr - ) + result = expr.getParentWithConversions() + or + result.(Destructor).getADestruction() = 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` is a constant of a type that can be replaced directly with + * its value in the IR. This does not include address constants as we have no + * means to express those as QL values. + */ +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` 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 // Ignore descendants of constant expressions, since we'll just substitute the // constant value. - getRealParent(expr).(Expr).isConstant() or + isIRConstant(getRealParent(expr)) or // The `DestructorCall` node for a `DestructorFieldDestruction` has a `FieldAccess` // node as its qualifier, but that `FieldAccess` does not have a child of its own. // We'll ignore that `FieldAccess`, and supply the receiver as part of the calling @@ -73,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 } /** @@ -94,7 +85,7 @@ private predicate ignoreExprOnly(Expr expr) { */ private predicate ignoreExpr(Expr expr) { ignoreExprOnly(expr) or - ignoreExprAndDescendants(getRealParent*(expr)) + ignoreExprAndDescendants(expr) } /** @@ -146,7 +137,7 @@ private predicate translateStmt(Stmt stmt) { */ private predicate isNativeCondition(Expr expr) { expr instanceof BinaryLogicalOperation and - not expr.isConstant() + not isIRConstant(expr) } /** @@ -159,7 +150,7 @@ private predicate isFlexibleCondition(Expr expr) { expr instanceof NotExpr ) and usedAsCondition(expr) and - not expr.isConstant() + not isIRConstant(expr) } /** @@ -637,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 } /** @@ -646,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, _) } /** diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll index 50ac4d0927b..2f4a046f710 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll @@ -369,11 +369,7 @@ class TranslatedLoad extends TranslatedExpr, TTranslatedLoad { } class TranslatedCommaExpr extends TranslatedNonConstantExpr { - CommaExpr comma; - - TranslatedCommaExpr() { - comma = expr - } + override CommaExpr expr; override Instruction getFirstInstruction() { result = getLeftOperand().getFirstInstruction() @@ -412,20 +408,16 @@ class TranslatedCommaExpr extends TranslatedNonConstantExpr { } private TranslatedExpr getLeftOperand() { - result = getTranslatedExpr(comma.getLeftOperand().getFullyConverted()) + result = getTranslatedExpr(expr.getLeftOperand().getFullyConverted()) } private TranslatedExpr getRightOperand() { - result = getTranslatedExpr(comma.getRightOperand().getFullyConverted()) + result = getTranslatedExpr(expr.getRightOperand().getFullyConverted()) } } abstract class TranslatedCrementOperation extends TranslatedNonConstantExpr { - CrementOperation op; - - TranslatedCrementOperation() { - op = expr - } + override CrementOperation expr; override final TranslatedElement getChild(int id) { id = 0 and result = getOperand() @@ -564,7 +556,7 @@ abstract class TranslatedCrementOperation extends TranslatedNonConstantExpr { } final TranslatedExpr getOperand() { - result = getTranslatedExpr(op.getOperand().getFullyConverted()) + result = getTranslatedExpr(expr.getOperand().getFullyConverted()) } final Opcode getOpcode() { @@ -572,14 +564,14 @@ abstract class TranslatedCrementOperation extends TranslatedNonConstantExpr { resultType = getResultType() and ( ( - op instanceof IncrementOperation and + expr instanceof IncrementOperation and if resultType instanceof PointerType then result instanceof Opcode::PointerAdd else result instanceof Opcode::Add ) or ( - op instanceof DecrementOperation and + expr instanceof DecrementOperation and if resultType instanceof PointerType then result instanceof Opcode::PointerSub else @@ -591,9 +583,7 @@ abstract class TranslatedCrementOperation extends TranslatedNonConstantExpr { } class TranslatedPrefixCrementOperation extends TranslatedCrementOperation { - TranslatedPrefixCrementOperation() { - op instanceof PrefixCrementOperation - } + override PrefixCrementOperation expr; override Instruction getResult() { if expr.isPRValueCategory() then ( @@ -612,9 +602,7 @@ class TranslatedPrefixCrementOperation extends TranslatedCrementOperation { } class TranslatedPostfixCrementOperation extends TranslatedCrementOperation { - TranslatedPostfixCrementOperation() { - op instanceof PostfixCrementOperation - } + override PostfixCrementOperation expr; override Instruction getResult() { // The result is a prvalue copy of the original value @@ -623,11 +611,7 @@ class TranslatedPostfixCrementOperation extends TranslatedCrementOperation { } class TranslatedArrayExpr extends TranslatedNonConstantExpr { - ArrayExpr arrayExpr; - - TranslatedArrayExpr() { - arrayExpr = expr - } + override ArrayExpr expr; override Instruction getFirstInstruction() { result = getBaseOperand().getFirstInstruction() @@ -689,11 +673,11 @@ class TranslatedArrayExpr extends TranslatedNonConstantExpr { } private TranslatedExpr getBaseOperand() { - result = getTranslatedExpr(arrayExpr.getArrayBase().getFullyConverted()) + result = getTranslatedExpr(expr.getArrayBase().getFullyConverted()) } private TranslatedExpr getOffsetOperand() { - result = getTranslatedExpr(arrayExpr.getArrayOffset().getFullyConverted()) + result = getTranslatedExpr(expr.getArrayOffset().getFullyConverted()) } } @@ -733,10 +717,9 @@ abstract class TranslatedTransparentExpr extends TranslatedNonConstantExpr { } class TranslatedTransparentUnaryOperation extends TranslatedTransparentExpr { - UnaryOperation op; + override UnaryOperation expr; TranslatedTransparentUnaryOperation() { - op = expr and ( // *p is the same as p until the result is loaded. expr instanceof PointerDereferenceExpr or @@ -747,31 +730,28 @@ class TranslatedTransparentUnaryOperation extends TranslatedTransparentExpr { } override TranslatedExpr getOperand() { - result = getTranslatedExpr(op.getOperand().getFullyConverted()) + result = getTranslatedExpr(expr.getOperand().getFullyConverted()) } } class TranslatedTransparentConversion extends TranslatedTransparentExpr { - Conversion conv; + override Conversion expr; TranslatedTransparentConversion() { - conv = expr and ( - conv instanceof ParenthesisExpr or - conv instanceof ReferenceDereferenceExpr or - conv instanceof ReferenceToExpr + expr instanceof ParenthesisExpr or + expr instanceof ReferenceDereferenceExpr or + expr instanceof ReferenceToExpr ) } override TranslatedExpr getOperand() { - result = getTranslatedExpr(conv.getExpr()) + result = getTranslatedExpr(expr.getExpr()) } } class TranslatedThisExpr extends TranslatedNonConstantExpr { - TranslatedThisExpr() { - expr instanceof ThisExpr - } + override ThisExpr expr; override final TranslatedElement getChild(int id) { none() @@ -817,18 +797,14 @@ class TranslatedThisExpr extends TranslatedNonConstantExpr { } abstract class TranslatedVariableAccess extends TranslatedNonConstantExpr { - VariableAccess access; - - TranslatedVariableAccess() { - access = expr - } + override VariableAccess expr; override final TranslatedElement getChild(int id) { id = 0 and result = getQualifier() // Might not exist } final TranslatedExpr getQualifier() { - result = getTranslatedExpr(access.getQualifier().getFullyConverted()) + result = getTranslatedExpr(expr.getQualifier().getFullyConverted()) } override Instruction getResult() { @@ -874,18 +850,13 @@ class TranslatedNonFieldVariableAccess extends TranslatedVariableAccess { override IRVariable getInstructionVariable(InstructionTag tag) { tag = OnlyInstructionTag() and - result = getIRUserVariable(access.getEnclosingFunction(), - access.getTarget()) + result = getIRUserVariable(expr.getEnclosingFunction(), + expr.getTarget()) } } class TranslatedFieldAccess extends TranslatedVariableAccess { - FieldAccess fieldAccess; - - TranslatedFieldAccess() { - //REVIEW: Implicit 'this'? - fieldAccess = access - } + override FieldAccess expr; override Instruction getFirstInstruction() { result = getQualifier().getFirstInstruction() @@ -908,16 +879,12 @@ class TranslatedFieldAccess extends TranslatedVariableAccess { override Field getInstructionField(InstructionTag tag) { tag = OnlyInstructionTag() and - result = access.getTarget() + result = expr.getTarget() } } class TranslatedFunctionAccess extends TranslatedNonConstantExpr { - FunctionAccess access; - - TranslatedFunctionAccess() { - access = expr - } + override FunctionAccess expr; override TranslatedElement getChild(int id) { none() @@ -942,13 +909,13 @@ class TranslatedFunctionAccess extends TranslatedNonConstantExpr { Type resultType, boolean isGLValue) { tag = OnlyInstructionTag() and opcode instanceof Opcode::FunctionAddress and - resultType = access.getType().getUnspecifiedType() and + resultType = expr.getType().getUnspecifiedType() and isGLValue = true } override Function getInstructionFunction(InstructionTag tag) { tag = OnlyInstructionTag() and - result = access.getTarget() + result = expr.getTarget() } override Instruction getChildSuccessor(TranslatedElement child) { @@ -962,7 +929,7 @@ class TranslatedFunctionAccess extends TranslatedNonConstantExpr { abstract class TranslatedNonConstantExpr extends TranslatedCoreExpr, TTranslatedValueExpr { TranslatedNonConstantExpr() { this = TTranslatedValueExpr(expr) and - not expr.isConstant() + not isIRConstant(expr) } } @@ -974,7 +941,7 @@ abstract class TranslatedNonConstantExpr extends TranslatedCoreExpr, TTranslated abstract class TranslatedConstantExpr extends TranslatedCoreExpr, TTranslatedValueExpr { TranslatedConstantExpr() { this = TTranslatedValueExpr(expr) and - expr.isConstant() + isIRConstant(expr) } override final Instruction getFirstInstruction() { @@ -1035,15 +1002,11 @@ class TranslatedArithmeticLiteral extends TranslatedConstantExpr { } class TranslatedStringLiteral extends TranslatedConstantExpr { - StringLiteral stringLiteral; - - TranslatedStringLiteral() { - stringLiteral = expr - } + override StringLiteral expr; override StringLiteral getInstructionStringLiteral(InstructionTag tag) { tag = OnlyInstructionTag() and - result = stringLiteral + result = expr } override Opcode getOpcode() { @@ -1127,11 +1090,7 @@ class TranslatedUnaryExpr extends TranslatedSingleInstructionExpr { } abstract class TranslatedConversion extends TranslatedNonConstantExpr { - Conversion conv; - - TranslatedConversion() { - conv = expr - } + override Conversion expr; override Instruction getFirstInstruction() { result = getOperand().getFirstInstruction() @@ -1193,15 +1152,15 @@ abstract class TranslatedSingleInstructionConversion extends TranslatedConversio */ class TranslatedSimpleConversion extends TranslatedSingleInstructionConversion { TranslatedSimpleConversion() { - conv instanceof ArithmeticConversion or - conv instanceof PointerConversion or - conv instanceof PointerToMemberConversion or - conv instanceof PointerToIntegralConversion or - conv instanceof IntegralToPointerConversion or - conv instanceof GlvalueConversion or - conv instanceof ArrayToPointerConversion or - conv instanceof PrvalueAdjustmentConversion or - conv instanceof VoidConversion + expr instanceof ArithmeticConversion or + expr instanceof PointerConversion or + expr instanceof PointerToMemberConversion or + expr instanceof PointerToIntegralConversion or + expr instanceof IntegralToPointerConversion or + expr instanceof GlvalueConversion or + expr instanceof ArrayToPointerConversion or + expr instanceof PrvalueAdjustmentConversion or + expr instanceof VoidConversion } override Opcode getOpcode() { @@ -1214,7 +1173,7 @@ class TranslatedSimpleConversion extends TranslatedSingleInstructionConversion { */ class TranslatedDynamicCast extends TranslatedSingleInstructionConversion { TranslatedDynamicCast() { - conv instanceof DynamicCast + expr instanceof DynamicCast } override Opcode getOpcode() { @@ -1237,22 +1196,19 @@ class TranslatedDynamicCast extends TranslatedSingleInstructionConversion { * expression. */ class TranslatedInheritanceConversion extends TranslatedSingleInstructionConversion { - InheritanceConversion inheritanceConv; + override InheritanceConversion expr; - TranslatedInheritanceConversion() { - inheritanceConv = conv - } override predicate getInstructionInheritance(InstructionTag tag, Class baseClass, Class derivedClass) { tag = OnlyInstructionTag() and - baseClass = inheritanceConv.getBaseClass() and - derivedClass = inheritanceConv.getDerivedClass() + baseClass = expr.getBaseClass() and + derivedClass = expr.getDerivedClass() } override Opcode getOpcode() { - if inheritanceConv instanceof BaseClassConversion then ( - if inheritanceConv.(BaseClassConversion).isVirtual() then + if expr instanceof BaseClassConversion then ( + if expr.(BaseClassConversion).isVirtual() then result instanceof Opcode::ConvertToVirtualBase else result instanceof Opcode::ConvertToBase @@ -1267,9 +1223,7 @@ class TranslatedInheritanceConversion extends TranslatedSingleInstructionConvers * a comparison with zero. */ class TranslatedBoolConversion extends TranslatedConversion { - TranslatedBoolConversion() { - conv instanceof BoolConversion - } + override BoolConversion expr; override Instruction getInstructionSuccessor(InstructionTag tag, EdgeKind kind) { @@ -1471,11 +1425,7 @@ class TranslatedBinaryOperation extends TranslatedSingleInstructionExpr { } abstract class TranslatedAssignment extends TranslatedNonConstantExpr { - Assignment assign; - - TranslatedAssignment() { - expr = assign - } + override Assignment expr; override final TranslatedElement getChild(int id) { id = 0 and result = getLeftOperand() or @@ -1506,20 +1456,20 @@ abstract class TranslatedAssignment extends TranslatedNonConstantExpr { final TranslatedExpr getLeftOperand() { result = getTranslatedExpr( - assign.getLValue().getFullyConverted() + expr.getLValue().getFullyConverted() ) } final TranslatedExpr getRightOperand() { result = getTranslatedExpr( - assign.getRValue().getFullyConverted() + expr.getRValue().getFullyConverted() ) } } class TranslatedAssignExpr extends TranslatedAssignment { TranslatedAssignExpr() { - assign instanceof AssignExpr + expr instanceof AssignExpr } override Instruction getInstructionSuccessor(InstructionTag tag, @@ -1570,11 +1520,7 @@ class TranslatedAssignExpr extends TranslatedAssignment { } class TranslatedAssignOperation extends TranslatedAssignment { - AssignOperation assignOp; - - TranslatedAssignOperation() { - expr = assignOp - } + override AssignOperation expr; override Instruction getInstructionSuccessor(InstructionTag tag, EdgeKind kind) { @@ -1629,10 +1575,10 @@ class TranslatedAssignOperation extends TranslatedAssignment { } private Type getConvertedLeftOperandType() { - if(assignOp instanceof AssignLShiftExpr or - assignOp instanceof AssignRShiftExpr or - assignOp instanceof AssignPointerAddExpr or - assignOp instanceof AssignPointerSubExpr) then ( + if(expr instanceof AssignLShiftExpr or + expr instanceof AssignRShiftExpr or + expr instanceof AssignPointerAddExpr or + expr instanceof AssignPointerSubExpr) then ( // No need to convert for a shift. Technically, the left side should // undergo integral promotion, and then the result would be converted back // to the destination type. There's not much point to this, though, @@ -1652,18 +1598,18 @@ class TranslatedAssignOperation extends TranslatedAssignment { } private Opcode getOpcode() { - assignOp instanceof AssignAddExpr and result instanceof Opcode::Add or - assignOp instanceof AssignSubExpr and result instanceof Opcode::Sub or - assignOp instanceof AssignMulExpr and result instanceof Opcode::Mul or - assignOp instanceof AssignDivExpr and result instanceof Opcode::Div or - assignOp instanceof AssignRemExpr and result instanceof Opcode::Rem or - assignOp instanceof AssignAndExpr and result instanceof Opcode::BitAnd or - assignOp instanceof AssignOrExpr and result instanceof Opcode::BitOr or - assignOp instanceof AssignXorExpr and result instanceof Opcode::BitXor or - assignOp instanceof AssignLShiftExpr and result instanceof Opcode::ShiftLeft or - assignOp instanceof AssignRShiftExpr and result instanceof Opcode::ShiftRight or - assignOp instanceof AssignPointerAddExpr and result instanceof Opcode::PointerAdd or - assignOp instanceof AssignPointerSubExpr and result instanceof Opcode::PointerSub + expr instanceof AssignAddExpr and result instanceof Opcode::Add or + expr instanceof AssignSubExpr and result instanceof Opcode::Sub or + expr instanceof AssignMulExpr and result instanceof Opcode::Mul or + expr instanceof AssignDivExpr and result instanceof Opcode::Div or + expr instanceof AssignRemExpr and result instanceof Opcode::Rem or + expr instanceof AssignAndExpr and result instanceof Opcode::BitAnd or + expr instanceof AssignOrExpr and result instanceof Opcode::BitOr or + expr instanceof AssignXorExpr and result instanceof Opcode::BitXor or + expr instanceof AssignLShiftExpr and result instanceof Opcode::ShiftLeft or + expr instanceof AssignRShiftExpr and result instanceof Opcode::ShiftRight or + expr instanceof AssignPointerAddExpr and result instanceof Opcode::PointerAdd or + expr instanceof AssignPointerSubExpr and result instanceof Opcode::PointerSub } override predicate hasInstruction(Opcode opcode, InstructionTag tag, @@ -1779,15 +1725,14 @@ class TranslatedAssignOperation extends TranslatedAssignment { */ abstract class TranslatedAllocationSize extends TranslatedExpr, TTranslatedAllocationSize { - NewOrNewArrayExpr newExpr; + override NewOrNewArrayExpr expr; TranslatedAllocationSize() { - this = TTranslatedAllocationSize(newExpr) and - expr = newExpr + this = TTranslatedAllocationSize(expr) } override final string toString() { - result = "Allocation size for " + newExpr.toString() + result = "Allocation size for " + expr.toString() } override final predicate producesExprResult() { @@ -1812,7 +1757,7 @@ TranslatedAllocationSize getTranslatedAllocationSize(NewOrNewArrayExpr newExpr) */ class TranslatedConstantAllocationSize extends TranslatedAllocationSize { TranslatedConstantAllocationSize() { - not exists(newExpr.(NewArrayExpr).getExtent()) + not exists(expr.(NewArrayExpr).getExtent()) } override final Instruction getFirstInstruction() { @@ -1823,7 +1768,7 @@ class TranslatedConstantAllocationSize extends TranslatedAllocationSize { Type resultType, boolean isGLValue) { tag = AllocationSizeTag() and opcode instanceof Opcode::Constant and - resultType = newExpr.getAllocator().getParameter(0).getType().getUnspecifiedType() and + resultType = expr.getAllocator().getParameter(0).getType().getUnspecifiedType() and isGLValue = false } @@ -1844,7 +1789,7 @@ class TranslatedConstantAllocationSize extends TranslatedAllocationSize { override final string getInstructionConstantValue(InstructionTag tag) { tag = AllocationSizeTag() and - result = newExpr.getAllocatedType().getSize().toString() + result = expr.getAllocatedType().getSize().toString() } } @@ -1856,11 +1801,10 @@ class TranslatedConstantAllocationSize extends TranslatedAllocationSize { * the extent by the element size. */ class TranslatedNonConstantAllocationSize extends TranslatedAllocationSize { - NewArrayExpr newArrayExpr; + override NewArrayExpr expr; TranslatedNonConstantAllocationSize() { - newArrayExpr = newExpr and - exists(newArrayExpr.getExtent()) + exists(expr.getExtent()) } override final Instruction getFirstInstruction() { @@ -1870,7 +1814,7 @@ class TranslatedNonConstantAllocationSize extends TranslatedAllocationSize { override final predicate hasInstruction(Opcode opcode, InstructionTag tag, Type resultType, boolean isGLValue) { isGLValue = false and - resultType = newExpr.getAllocator().getParameter(0).getType().getUnspecifiedType() and + resultType = expr.getAllocator().getParameter(0).getType().getUnspecifiedType() and ( // Convert the extent to `size_t`, because the AST doesn't do this already. tag = AllocationExtentConvertTag() and opcode instanceof Opcode::Convert or @@ -1909,7 +1853,7 @@ class TranslatedNonConstantAllocationSize extends TranslatedAllocationSize { override final string getInstructionConstantValue(InstructionTag tag) { tag = AllocationElementSizeTag() and - result = newArrayExpr.getAllocatedElementType().getSize().toString() + result = expr.getAllocatedElementType().getSize().toString() } override final Instruction getInstructionOperand(InstructionTag tag, @@ -1929,7 +1873,7 @@ class TranslatedNonConstantAllocationSize extends TranslatedAllocationSize { } private TranslatedExpr getExtent() { - result = getTranslatedExpr(newArrayExpr.getExtent().getFullyConverted()) + result = getTranslatedExpr(expr.getExtent().getFullyConverted()) } } @@ -1939,15 +1883,14 @@ class TranslatedNonConstantAllocationSize extends TranslatedAllocationSize { */ class TranslatedAllocatorCall extends TTranslatedAllocatorCall, TranslatedDirectCall { - NewOrNewArrayExpr newExpr; + override NewOrNewArrayExpr expr; TranslatedAllocatorCall() { - this = TTranslatedAllocatorCall(newExpr) and - expr = newExpr + this = TTranslatedAllocatorCall(expr) } override final string toString() { - result = "Allocator call for " + newExpr.toString() + result = "Allocator call for " + expr.toString() } override final predicate producesExprResult() { @@ -1955,11 +1898,11 @@ class TranslatedAllocatorCall extends TTranslatedAllocatorCall, } override Function getInstructionFunction(InstructionTag tag) { - tag = CallTargetTag() and result = newExpr.getAllocator() + tag = CallTargetTag() and result = expr.getAllocator() } override final Type getCallResultType() { - result = newExpr.getAllocator().getType().getUnspecifiedType() + result = expr.getAllocator().getType().getUnspecifiedType() } override final TranslatedExpr getQualifier() { @@ -1979,11 +1922,11 @@ class TranslatedAllocatorCall extends TTranslatedAllocatorCall, // an error node, so we need to provide the correct size argument in any // case. if index = 0 then - result = getTranslatedAllocationSize(newExpr) - else if(index = 1 and newExpr.hasAlignedAllocation()) then - result = getTranslatedExpr(newExpr.getAlignmentArgument()) + result = getTranslatedAllocationSize(expr) + else if(index = 1 and expr.hasAlignedAllocation()) then + result = getTranslatedExpr(expr.getAlignmentArgument()) else - result = getTranslatedExpr(newExpr.getAllocatorCall().getArgument(index)) + result = getTranslatedExpr(expr.getAllocatorCall().getArgument(index)) } } @@ -2009,11 +1952,7 @@ abstract class StructorCallContext extends TranslatedElement { */ class TranslatedDestructorFieldDestruction extends TranslatedNonConstantExpr, StructorCallContext { - DestructorFieldDestruction destruction; - - TranslatedDestructorFieldDestruction() { - destruction = expr - } + override DestructorFieldDestruction expr; override final TranslatedElement getChild(int id) { id = 0 and result = getDestructorCall() @@ -2023,7 +1962,7 @@ class TranslatedDestructorFieldDestruction extends TranslatedNonConstantExpr, Type resultType, boolean isGLValue) { tag = OnlyInstructionTag() and opcode instanceof Opcode::FieldAddress and - resultType = destruction.getTarget().getType().getUnspecifiedType() and + resultType = expr.getTarget().getType().getUnspecifiedType() and isGLValue = true } @@ -2050,12 +1989,12 @@ class TranslatedDestructorFieldDestruction extends TranslatedNonConstantExpr, override final Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) { tag = OnlyInstructionTag() and operandTag instanceof UnaryOperandTag and - result = getTranslatedFunction(destruction.getEnclosingFunction()).getInitializeThisInstruction() + result = getTranslatedFunction(expr.getEnclosingFunction()).getInitializeThisInstruction() } override final Field getInstructionField(InstructionTag tag) { tag = OnlyInstructionTag() and - result = destruction.getTarget() + result = expr.getTarget() } override final Instruction getReceiver() { @@ -2063,17 +2002,13 @@ class TranslatedDestructorFieldDestruction extends TranslatedNonConstantExpr, } private TranslatedExpr getDestructorCall() { - result = getTranslatedExpr(destruction.getExpr()) + result = getTranslatedExpr(expr.getExpr()) } } class TranslatedConditionalExpr extends TranslatedNonConstantExpr, ConditionContext { - ConditionalExpr condExpr; - - TranslatedConditionalExpr() { - condExpr = expr - } + override ConditionalExpr expr; override final TranslatedElement getChild(int id) { id = 0 and result = getCondition() or @@ -2256,29 +2191,29 @@ class TranslatedConditionalExpr extends TranslatedNonConstantExpr, } private TranslatedCondition getCondition() { - result = getTranslatedCondition(condExpr.getCondition().getFullyConverted()) + result = getTranslatedCondition(expr.getCondition().getFullyConverted()) } private TranslatedExpr getThen() { - result = getTranslatedExpr(condExpr.getThen().getFullyConverted()) + result = getTranslatedExpr(expr.getThen().getFullyConverted()) } private TranslatedExpr getElse() { - result = getTranslatedExpr(condExpr.getElse().getFullyConverted()) + result = getTranslatedExpr(expr.getElse().getFullyConverted()) } private predicate thenIsVoid() { getThen().getResultType() instanceof VoidType or // A `ThrowExpr.getType()` incorrectly returns the type of exception being // thrown, rather than `void`. Handle that case here. - condExpr.getThen() instanceof ThrowExpr + expr.getThen() instanceof ThrowExpr } private predicate elseIsVoid() { getElse().getResultType() instanceof VoidType or // A `ThrowExpr.getType()` incorrectly returns the type of exception being // thrown, rather than `void`. Handle that case here. - condExpr.getElse() instanceof ThrowExpr + expr.getElse() instanceof ThrowExpr } private predicate resultIsVoid() { @@ -2290,11 +2225,8 @@ class TranslatedConditionalExpr extends TranslatedNonConstantExpr, * IR translation of a `throw` expression. */ abstract class TranslatedThrowExpr extends TranslatedNonConstantExpr { - ThrowExpr throw; + override ThrowExpr expr; - TranslatedThrowExpr() { - throw = expr - } override predicate hasInstruction(Opcode opcode, InstructionTag tag, Type resultType, boolean isGLValue) { @@ -2325,7 +2257,7 @@ abstract class TranslatedThrowExpr extends TranslatedNonConstantExpr { class TranslatedThrowValueExpr extends TranslatedThrowExpr, InitializationContext { TranslatedThrowValueExpr() { - not throw instanceof ReThrowExpr + not expr instanceof ReThrowExpr } override TranslatedElement getChild(int id) { @@ -2362,7 +2294,7 @@ class TranslatedThrowValueExpr extends TranslatedThrowExpr, override IRVariable getInstructionVariable(InstructionTag tag) { tag = InitializerVariableAddressTag() and - result = getIRTempVariable(throw, ThrowTempVar()) + result = getIRTempVariable(expr, ThrowTempVar()) } override final predicate hasTempVariable(TempVariableTag tag, Type type) { @@ -2395,7 +2327,7 @@ class TranslatedThrowValueExpr extends TranslatedThrowExpr, TranslatedInitialization getInitialization() { result = getTranslatedInitialization( - throw.getExpr().getFullyConverted()) + expr.getExpr().getFullyConverted()) } override final Opcode getThrowOpcode() { @@ -2403,7 +2335,7 @@ class TranslatedThrowValueExpr extends TranslatedThrowExpr, } private Type getExceptionType() { - result = throw.getType().getUnspecifiedType() + result = expr.getType().getUnspecifiedType() } } @@ -2411,9 +2343,7 @@ class TranslatedThrowValueExpr extends TranslatedThrowExpr, * IR translation of a `throw` expression with no argument (e.g. `throw;`). */ class TranslatedReThrowExpr extends TranslatedThrowExpr { - TranslatedReThrowExpr() { - throw instanceof ReThrowExpr - } + override ReThrowExpr expr; override TranslatedElement getChild(int id) { none() @@ -2493,9 +2423,7 @@ abstract class TranslatedBuiltInOperation extends TranslatedNonConstantExpr { * The IR translation of a `BuiltInVarArgsStart` expression. */ class TranslatedVarArgsStart extends TranslatedBuiltInOperation { - TranslatedVarArgsStart() { - expr instanceof BuiltInVarArgsStart - } + override BuiltInVarArgsStart expr; override final Opcode getOpcode() { result instanceof Opcode::VarArgsStart @@ -2506,9 +2434,7 @@ class TranslatedVarArgsStart extends TranslatedBuiltInOperation { * The IR translation of a `BuiltInVarArgsEnd` expression. */ class TranslatedVarArgsEnd extends TranslatedBuiltInOperation { - TranslatedVarArgsEnd() { - expr instanceof BuiltInVarArgsEnd - } + override BuiltInVarArgsEnd expr; override final Opcode getOpcode() { result instanceof Opcode::VarArgsEnd @@ -2519,9 +2445,7 @@ class TranslatedVarArgsEnd extends TranslatedBuiltInOperation { * The IR translation of a `BuiltInVarArg` expression. */ class TranslatedVarArg extends TranslatedBuiltInOperation { - TranslatedVarArg() { - expr instanceof BuiltInVarArg - } + override BuiltInVarArg expr; override final Opcode getOpcode() { result instanceof Opcode::VarArg @@ -2532,9 +2456,7 @@ class TranslatedVarArg extends TranslatedBuiltInOperation { * The IR translation of a `BuiltInVarArgCopy` expression. */ class TranslatedVarArgCopy extends TranslatedBuiltInOperation { - TranslatedVarArgCopy() { - expr instanceof BuiltInVarArgCopy - } + override BuiltInVarArgCopy expr; override final Opcode getOpcode() { result instanceof Opcode::VarArgCopy @@ -2546,11 +2468,7 @@ class TranslatedVarArgCopy extends TranslatedBuiltInOperation { */ abstract class TranslatedNewOrNewArrayExpr extends TranslatedNonConstantExpr, InitializationContext { - NewOrNewArrayExpr newExpr; - - TranslatedNewOrNewArrayExpr() { - expr = newExpr - } + override NewOrNewArrayExpr expr; override final TranslatedElement getChild(int id) { id = 0 and result = getAllocatorCall() or @@ -2600,7 +2518,7 @@ abstract class TranslatedNewOrNewArrayExpr extends TranslatedNonConstantExpr, } private TranslatedAllocatorCall getAllocatorCall() { - result = getTranslatedAllocatorCall(newExpr) + result = getTranslatedAllocatorCall(expr) } abstract TranslatedInitialization getInitialization(); @@ -2610,16 +2528,14 @@ abstract class TranslatedNewOrNewArrayExpr extends TranslatedNonConstantExpr, * The IR translation of a `new` expression. */ class TranslatedNewExpr extends TranslatedNewOrNewArrayExpr { - TranslatedNewExpr() { - newExpr instanceof NewExpr - } + override NewExpr expr; override final Type getTargetType() { - result = newExpr.getAllocatedType().getUnspecifiedType() + result = expr.getAllocatedType().getUnspecifiedType() } override final TranslatedInitialization getInitialization() { - result = getTranslatedInitialization(newExpr.(NewExpr).getInitializer()) + result = getTranslatedInitialization(expr.getInitializer()) } } @@ -2627,12 +2543,10 @@ class TranslatedNewExpr extends TranslatedNewOrNewArrayExpr { * The IR translation of a `new[]` expression. */ class TranslatedNewArrayExpr extends TranslatedNewOrNewArrayExpr { - TranslatedNewArrayExpr() { - newExpr instanceof NewArrayExpr - } + override NewArrayExpr expr; override final Type getTargetType() { - result = newExpr.getAllocatedType().getUnspecifiedType() + result = expr.getAllocatedType().getUnspecifiedType() } override final TranslatedInitialization getInitialization() { @@ -2650,11 +2564,7 @@ class TranslatedNewArrayExpr extends TranslatedNewOrNewArrayExpr { * ``` */ class TranslatedConditionDeclExpr extends TranslatedNonConstantExpr { - ConditionDeclExpr condDeclExpr; - - TranslatedConditionDeclExpr() { - condDeclExpr = expr - } + override ConditionDeclExpr expr; override final Instruction getFirstInstruction() { result = getDecl().getFirstInstruction() @@ -2687,10 +2597,10 @@ class TranslatedConditionDeclExpr extends TranslatedNonConstantExpr { } private TranslatedConditionDecl getDecl() { - result = getTranslatedConditionDecl(condDeclExpr) + result = getTranslatedConditionDecl(expr) } private TranslatedExpr getConditionExpr() { - result = getTranslatedExpr(condDeclExpr.getVariableAccess().getFullyConverted()) + result = getTranslatedExpr(expr.getVariableAccess().getFullyConverted()) } } diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedInitialization.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedInitialization.qll index 6d026f0c2bf..63e2a7f481a 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedInitialization.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedInitialization.qll @@ -120,16 +120,12 @@ abstract class TranslatedListInitialization extends TranslatedInitialization, class TranslatedClassListInitialization extends TranslatedListInitialization { - ClassAggregateLiteral initList; - - TranslatedClassListInitialization() { - initList = expr - } + override ClassAggregateLiteral expr; override TranslatedElement getChild(int id) { exists(TranslatedFieldInitialization fieldInit | result = fieldInit and - fieldInit = getTranslatedFieldInitialization(initList, _) and + fieldInit = getTranslatedFieldInitialization(expr, _) and fieldInit.getOrder() = id ) } @@ -141,16 +137,12 @@ class TranslatedClassListInitialization extends */ class TranslatedArrayListInitialization extends TranslatedListInitialization { - ArrayAggregateLiteral initList; - - TranslatedArrayListInitialization() { - initList = expr - } + override ArrayAggregateLiteral expr; override TranslatedElement getChild(int id) { // The children are in initialization order result = rank[id + 1](TranslatedElementInitialization init | - init.getInitList() = initList | + init.getInitList() = expr | init order by init.getElementIndex() ) } @@ -231,9 +223,7 @@ class TranslatedSimpleDirectInitialization extends */ class TranslatedStringLiteralInitialization extends TranslatedDirectInitialization { - TranslatedStringLiteralInitialization() { - expr instanceof StringLiteral - } + override StringLiteral expr; override predicate hasInstruction(Opcode opcode, InstructionTag tag, Type resultType, boolean isGLValue) { @@ -434,11 +424,7 @@ class TranslatedStringLiteralInitialization extends class TranslatedConstructorInitialization extends TranslatedDirectInitialization, StructorCallContext { - ConstructorCall ctorCall; - - TranslatedConstructorInitialization() { - ctorCall = expr - } + override ConstructorCall expr; override predicate hasInstruction(Opcode opcode, InstructionTag tag, Type resultType, boolean isGLValue) { @@ -1008,9 +994,7 @@ TranslatedConstructorCallFromConstructor getTranslatedConstructorBaseInit(Constr * Represents the IR translation of a delegating constructor call from within a constructor. */ class TranslatedConstructorDelegationInit extends TranslatedConstructorCallFromConstructor { - TranslatedConstructorDelegationInit() { - call instanceof ConstructorDelegationInit - } + override ConstructorDelegationInit call; override final string toString() { result = "delegation construct: " + call.toString() diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll index 6e4bb2c6d1e..c4eb18b0e6b 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll @@ -632,7 +632,7 @@ class TranslatedForStmt extends TranslatedLoop { exists(forStmt.getInitialization()) } - private TranslatedExpr getUpdate() { + TranslatedExpr getUpdate() { result = getTranslatedExpr(forStmt.getUpdate().getFullyConverted()) } diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/FunctionIR.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/FunctionIR.qll index 8038083b8a7..99b82b95b7a 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/FunctionIR.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/FunctionIR.qll @@ -56,6 +56,11 @@ class FunctionIR extends TFunctionIR { result.getFunctionIR() = this } + pragma[noinline] + final UnmodeledUseInstruction getUnmodeledUseInstruction() { + result.getFunctionIR() = this + } + /** * Gets the single return instruction for this function. */ diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/IRBlock.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/IRBlock.qll index f94fad4f527..40643aae411 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/IRBlock.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/IRBlock.qll @@ -90,6 +90,10 @@ class IRBlock extends IRBlockBase { blockSuccessor(this, result, kind) } + final IRBlock getBackEdgeSuccessor(EdgeKind kind) { + backEdgeSuccessor(this, result, kind) + } + final predicate immediatelyDominates(IRBlock block) { blockImmediatelyDominates(this, block) } @@ -132,7 +136,10 @@ private predicate startsBasicBlock(Instruction instr) { exists(Instruction predecessor, EdgeKind kind | instr = predecessor.getSuccessor(kind) and not kind instanceof GotoEdge - ) // Incoming edge is not a GotoEdge + ) or // Incoming edge is not a GotoEdge + exists(Instruction predecessor | + instr = Construction::getInstructionBackEdgeSuccessor(predecessor, _) + ) // A back edge enters this instruction ) } @@ -152,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) { @@ -184,6 +180,41 @@ private cached module Cached { ) } + cached predicate backEdgeSuccessor(TIRBlock pred, TIRBlock succ, EdgeKind kind) { + backEdgeSuccessorRaw(pred, succ, kind) + or + forwardEdgeRaw+(pred, pred) and + blockSuccessor(pred, succ, kind) + } + + /** + * Holds if there is an edge from `pred` to `succ` that is not a back edge. + */ + private predicate forwardEdgeRaw(TIRBlock pred, TIRBlock succ) { + exists(EdgeKind kind | + blockSuccessor(pred, succ, kind) and + not backEdgeSuccessorRaw(pred, succ, kind) + ) + } + + /** + * Holds if the `kind`-edge from `pred` to `succ` is a back edge according to + * `Construction`. + * + * There could be loops of non-back-edges if there is a flaw in the IR + * construction or back-edge detection, and this could cause non-termination + * of subsequent analysis. To prevent that, a subsequent predicate further + * classifies all edges as back edges if they are involved in a loop of + * non-back-edges. + */ + private predicate backEdgeSuccessorRaw(TIRBlock pred, TIRBlock succ, EdgeKind kind) { + exists(Instruction predLast, Instruction succFirst | + predLast = getInstruction(pred, getInstructionCount(pred) - 1) and + succFirst = Construction::getInstructionBackEdgeSuccessor(predLast, kind) and + succ = MkIRBlock(succFirst) + ) + } + cached predicate blockSuccessor(TIRBlock pred, TIRBlock succ) { blockSuccessor(pred, succ, _) } diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/IRVariable.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/IRVariable.qll index ca55fc040c8..b25e47b4d25 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/IRVariable.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/IRVariable.qll @@ -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() { diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/Instruction.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/Instruction.qll index ad7df6a2159..ce88bfd9aa6 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/Instruction.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/Instruction.qll @@ -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 @@ -157,23 +155,60 @@ module InstructionSanity { blockCount = count(instr.getBlock()) and blockCount != 1 } + + private predicate forwardEdge(IRBlock b1, IRBlock b2) { + b1.getASuccessor() = b2 and + not b1.getBackEdgeSuccessor(_) = b2 + } + + /** + * Holds if `f` contains a loop in which no edge is a back edge. + * + * This check ensures we don't have too _few_ back edges. + */ + query predicate containsLoopOfForwardEdges(FunctionIR f) { + exists(IRBlock block | + forwardEdge+(block, block) and + block.getFunctionIR() = f + ) + } + + /** + * Holds if `block` is reachable from its function entry point but would not + * be reachable by traversing only forward edges. This check is skipped for + * functions containing `goto` statements as the property does not generally + * hold there. + * + * This check ensures we don't have too _many_ back edges. + */ + query predicate lostReachability(IRBlock block) { + exists(FunctionIR f, IRBlock entry | + entry = f.getEntryBlock() and + entry.getASuccessor+() = block and + not forwardEdge+(entry, block) and + not exists(GotoStmt s | s.getEnclosingFunction() = f.getFunction()) + ) + } + + /** + * Holds if the number of back edges differs between the `Instruction` graph + * and the `IRBlock` graph. + */ + query predicate backEdgeCountMismatch(Function f, int fromInstr, int fromBlock) { + fromInstr = count(Instruction i1, Instruction i2 | + i1.getFunction() = f and i1.getBackEdgeSuccessor(_) = i2 + ) and + fromBlock = count(IRBlock b1, IRBlock b2 | + b1.getFunction() = f and b1.getBackEdgeSuccessor(_) = b2 + ) and + fromInstr != fromBlock + } } /** * 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() } @@ -196,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() } /** @@ -216,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 @@ -261,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() + "]" @@ -330,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() } /** @@ -373,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, _) } /** @@ -395,7 +430,7 @@ class Instruction extends Construction::TInstruction { * the integer value loaded from variable `x`. */ final predicate isGLValue() { - glvalue = true + Construction::instructionHasType(this, _, true) } /** @@ -412,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() ) } @@ -423,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) } /** @@ -489,6 +520,24 @@ class Instruction extends Construction::TInstruction { result = Construction::getInstructionSuccessor(this, kind) } + /** + * Gets the a _back-edge successor_ of this instruction along the control + * flow edge specified by `kind`. A back edge in the control-flow graph is + * intuitively the edge that goes back around a loop. If all back edges are + * removed from the control-flow graph, it becomes acyclic. + */ + final Instruction getBackEdgeSuccessor(EdgeKind kind) { + // We don't take these edges from + // `Construction::getInstructionBackEdgeSuccessor` since that relation has + // not been treated to remove any loops that might be left over due to + // flaws in the IR construction or back-edge detection. + exists(IRBlock block | + block = this.getBlock() and + this = block.getLastInstruction() and + result = block.getBackEdgeSuccessor(kind).getFirstInstruction() + ) + } + /** * Gets all direct successors of this instruction. */ @@ -578,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() { @@ -607,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() { @@ -623,7 +672,7 @@ class FieldAddressInstruction extends FieldInstruction { class UninitializedInstruction extends VariableInstruction { UninitializedInstruction() { - opcode instanceof Opcode::Uninitialized + getOpcode() instanceof Opcode::Uninitialized } override final MemoryAccessKind getResultMemoryAccess() { @@ -640,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() { @@ -668,7 +717,7 @@ class ReturnValueInstruction extends ReturnInstruction { class CopyInstruction extends Instruction { CopyInstruction() { - opcode instanceof CopyOpcode + getOpcode() instanceof CopyOpcode } final Instruction getSourceValue() { @@ -678,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() { @@ -694,7 +743,7 @@ class LoadInstruction extends CopyInstruction { class StoreInstruction extends CopyInstruction { StoreInstruction() { - opcode instanceof Opcode::Store + getOpcode() instanceof Opcode::Store } override final MemoryAccessKind getResultMemoryAccess() { @@ -708,7 +757,7 @@ class StoreInstruction extends CopyInstruction { class ConditionalBranchInstruction extends Instruction { ConditionalBranchInstruction() { - opcode instanceof Opcode::ConditionalBranch + getOpcode() instanceof Opcode::ConditionalBranch } final Instruction getCondition() { @@ -726,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 } } @@ -766,7 +815,7 @@ class StringConstantInstruction extends Instruction { class BinaryInstruction extends Instruction { BinaryInstruction() { - opcode instanceof BinaryOpcode + getOpcode() instanceof BinaryOpcode } final Instruction getLeftOperand() { @@ -789,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 } } @@ -857,7 +906,7 @@ class PointerArithmeticInstruction extends BinaryInstruction { int elementSize; PointerArithmeticInstruction() { - opcode instanceof PointerArithmeticOpcode and + getOpcode() instanceof PointerArithmeticOpcode and elementSize = Construction::getInstructionElementSize(this) } @@ -872,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() { @@ -906,7 +955,7 @@ class UnaryInstruction extends Instruction { class ConvertInstruction extends UnaryInstruction { ConvertInstruction() { - opcode instanceof Opcode::Convert + getOpcode() instanceof Opcode::Convert } } @@ -958,7 +1007,7 @@ class InheritanceConversionInstruction extends UnaryInstruction { */ class ConvertToBaseInstruction extends InheritanceConversionInstruction { ConvertToBaseInstruction() { - opcode instanceof Opcode::ConvertToBase + getOpcode() instanceof Opcode::ConvertToBase } } @@ -968,7 +1017,7 @@ class ConvertToBaseInstruction extends InheritanceConversionInstruction { */ class ConvertToVirtualBaseInstruction extends InheritanceConversionInstruction { ConvertToVirtualBaseInstruction() { - opcode instanceof Opcode::ConvertToVirtualBase + getOpcode() instanceof Opcode::ConvertToVirtualBase } } @@ -978,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 } } @@ -1017,7 +1066,7 @@ class CompareNEInstruction extends CompareInstruction { */ class RelationalInstruction extends CompareInstruction { RelationalInstruction() { - opcode instanceof RelationalOpcode + getOpcode() instanceof RelationalOpcode } /** @@ -1050,7 +1099,7 @@ class RelationalInstruction extends CompareInstruction { class CompareLTInstruction extends RelationalInstruction { CompareLTInstruction() { - opcode instanceof Opcode::CompareLT + getOpcode() instanceof Opcode::CompareLT } override Instruction getLesserOperand() { @@ -1068,7 +1117,7 @@ class CompareLTInstruction extends RelationalInstruction { class CompareGTInstruction extends RelationalInstruction { CompareGTInstruction() { - opcode instanceof Opcode::CompareGT + getOpcode() instanceof Opcode::CompareGT } override Instruction getLesserOperand() { @@ -1086,7 +1135,7 @@ class CompareGTInstruction extends RelationalInstruction { class CompareLEInstruction extends RelationalInstruction { CompareLEInstruction() { - opcode instanceof Opcode::CompareLE + getOpcode() instanceof Opcode::CompareLE } override Instruction getLesserOperand() { @@ -1104,7 +1153,7 @@ class CompareLEInstruction extends RelationalInstruction { class CompareGEInstruction extends RelationalInstruction { CompareGEInstruction() { - opcode instanceof Opcode::CompareGE + getOpcode() instanceof Opcode::CompareGE } override Instruction getLesserOperand() { @@ -1122,7 +1171,7 @@ class CompareGEInstruction extends RelationalInstruction { class SwitchInstruction extends Instruction { SwitchInstruction() { - opcode instanceof Opcode::Switch + getOpcode() instanceof Opcode::Switch } final Instruction getExpression() { @@ -1145,7 +1194,7 @@ class SwitchInstruction extends Instruction { */ class CallInstruction extends Instruction { CallInstruction() { - opcode instanceof Opcode::Call + getOpcode() instanceof Opcode::Call } /** @@ -1188,7 +1237,7 @@ class CallInstruction extends Instruction { */ class SideEffectInstruction extends Instruction { SideEffectInstruction() { - opcode instanceof SideEffectOpcode + getOpcode() instanceof SideEffectOpcode } final Instruction getPrimaryInstruction() { @@ -1202,7 +1251,7 @@ class SideEffectInstruction extends Instruction { */ class CallSideEffectInstruction extends SideEffectInstruction { CallSideEffectInstruction() { - opcode instanceof Opcode::CallSideEffect + getOpcode() instanceof Opcode::CallSideEffect } override final MemoryAccessKind getResultMemoryAccess() { @@ -1216,7 +1265,7 @@ class CallSideEffectInstruction extends SideEffectInstruction { */ class CallReadSideEffectInstruction extends SideEffectInstruction { CallReadSideEffectInstruction() { - opcode instanceof Opcode::CallReadSideEffect + getOpcode() instanceof Opcode::CallReadSideEffect } } @@ -1225,7 +1274,7 @@ class CallReadSideEffectInstruction extends SideEffectInstruction { */ class IndirectReadSideEffectInstruction extends SideEffectInstruction { IndirectReadSideEffectInstruction() { - opcode instanceof Opcode::IndirectReadSideEffect + getOpcode() instanceof Opcode::IndirectReadSideEffect } } @@ -1234,7 +1283,7 @@ class IndirectReadSideEffectInstruction extends SideEffectInstruction { */ class BufferReadSideEffectInstruction extends SideEffectInstruction { BufferReadSideEffectInstruction() { - opcode instanceof Opcode::BufferReadSideEffect + getOpcode() instanceof Opcode::BufferReadSideEffect } } @@ -1243,7 +1292,7 @@ class BufferReadSideEffectInstruction extends SideEffectInstruction { */ class IndirectWriteSideEffectInstruction extends SideEffectInstruction { IndirectWriteSideEffectInstruction() { - opcode instanceof Opcode::IndirectWriteSideEffect + getOpcode() instanceof Opcode::IndirectWriteSideEffect } override final MemoryAccessKind getResultMemoryAccess() { @@ -1257,7 +1306,7 @@ class IndirectWriteSideEffectInstruction extends SideEffectInstruction { */ class BufferWriteSideEffectInstruction extends SideEffectInstruction { BufferWriteSideEffectInstruction() { - opcode instanceof Opcode::BufferWriteSideEffect + getOpcode() instanceof Opcode::BufferWriteSideEffect } override final MemoryAccessKind getResultMemoryAccess() { @@ -1272,7 +1321,7 @@ class BufferWriteSideEffectInstruction extends SideEffectInstruction { */ class IndirectMayWriteSideEffectInstruction extends SideEffectInstruction { IndirectMayWriteSideEffectInstruction() { - opcode instanceof Opcode::IndirectMayWriteSideEffect + getOpcode() instanceof Opcode::IndirectMayWriteSideEffect } override final MemoryAccessKind getResultMemoryAccess() { @@ -1286,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 @@ -1298,7 +1347,7 @@ class BufferMayWriteSideEffectInstruction extends SideEffectInstruction { */ class ThrowInstruction extends Instruction { ThrowInstruction() { - opcode instanceof ThrowOpcode + getOpcode() instanceof ThrowOpcode } } @@ -1307,7 +1356,7 @@ class ThrowInstruction extends Instruction { */ class ThrowValueInstruction extends ThrowInstruction { ThrowValueInstruction() { - opcode instanceof Opcode::ThrowValue + getOpcode() instanceof Opcode::ThrowValue } /** @@ -1330,7 +1379,7 @@ class ThrowValueInstruction extends ThrowInstruction { */ class ReThrowInstruction extends ThrowInstruction { ReThrowInstruction() { - opcode instanceof Opcode::ReThrow + getOpcode() instanceof Opcode::ReThrow } } @@ -1339,7 +1388,7 @@ class ReThrowInstruction extends ThrowInstruction { */ class UnwindInstruction extends Instruction { UnwindInstruction() { - opcode instanceof Opcode::Unwind + getOpcode() instanceof Opcode::Unwind } } @@ -1348,7 +1397,7 @@ class UnwindInstruction extends Instruction { */ class CatchInstruction extends Instruction { CatchInstruction() { - opcode instanceof CatchOpcode + getOpcode() instanceof CatchOpcode } } @@ -1359,7 +1408,7 @@ class CatchByTypeInstruction extends CatchInstruction { Type exceptionType; CatchByTypeInstruction() { - opcode instanceof Opcode::CatchByType and + getOpcode() instanceof Opcode::CatchByType and exceptionType = Construction::getInstructionExceptionType(this) } @@ -1380,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() { @@ -1399,7 +1448,7 @@ class UnmodeledDefinitionInstruction extends Instruction { */ class AliasedDefinitionInstruction extends Instruction { AliasedDefinitionInstruction() { - opcode instanceof Opcode::AliasedDefinition + getOpcode() instanceof Opcode::AliasedDefinition } override final MemoryAccessKind getResultMemoryAccess() { @@ -1409,7 +1458,7 @@ class AliasedDefinitionInstruction extends Instruction { class UnmodeledUseInstruction extends Instruction { UnmodeledUseInstruction() { - opcode instanceof Opcode::UnmodeledUse + getOpcode() instanceof Opcode::UnmodeledUse } override string getOperandsString() { @@ -1429,7 +1478,7 @@ class UnmodeledUseInstruction extends Instruction { */ class PhiInstruction extends Instruction { PhiInstruction() { - opcode instanceof Opcode::Phi + getOpcode() instanceof Opcode::Phi } override final MemoryAccessKind getResultMemoryAccess() { @@ -1481,7 +1530,7 @@ class PhiInstruction extends Instruction { */ class ChiInstruction extends Instruction { ChiInstruction() { - opcode instanceof Opcode::Chi + getOpcode() instanceof Opcode::Chi } override final MemoryAccessKind getResultMemoryAccess() { @@ -1511,7 +1560,7 @@ class ChiInstruction extends Instruction { */ class UnreachedInstruction extends Instruction { UnreachedInstruction() { - opcode instanceof Opcode::Unreached + getOpcode() instanceof Opcode::Unreached } } @@ -1521,6 +1570,6 @@ class UnreachedInstruction extends Instruction { */ class BuiltInInstruction extends Instruction { BuiltInInstruction() { - opcode instanceof BuiltInOpcode + getOpcode() instanceof BuiltInOpcode } } diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/PrintIR.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/PrintIR.qll index 8fb77621426..748faeee590 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/PrintIR.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/PrintIR.qll @@ -287,7 +287,9 @@ query predicate edges(PrintableIRBlock pred, PrintableIRBlock succ, string key, ( ( key = "semmle.label" and - value = kind.toString() + if predBlock.getBackEdgeSuccessor(kind) = succBlock + then value = kind.toString() + " (back edge)" + else value = kind.toString() ) or ( key = "semmle.order" and diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll index 88914e21c3a..585243a5f21 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll @@ -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,13 +115,14 @@ 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 - instruction instanceof UnmodeledUseInstruction and - tag instanceof UnmodeledUseOperandTag and - result instanceof UnmodeledDefinitionInstruction and - instruction.getFunction() = result.getFunction() + exists(FunctionIR f | + tag instanceof UnmodeledUseOperandTag and + result = f.getUnmodeledDefinitionInstruction() and + instruction = f.getUnmodeledUseInstruction() + ) or tag instanceof ChiTotalOperandTag and result = getChiInstructionTotalOperand(instruction) @@ -207,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 @@ -229,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()) ) } @@ -256,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)) @@ -272,12 +198,106 @@ cached private module Cached { ) ) or exists(OldInstruction oldInstruction | - instruction = getChiInstruction(oldInstruction) and + instruction = Chi(oldInstruction) and result = getNewInstruction(oldInstruction.getSuccessor(kind)) ) ) } + cached Instruction getInstructionBackEdgeSuccessor(Instruction instruction, EdgeKind kind) { + exists(OldInstruction oldInstruction | + not Reachability::isInfeasibleInstructionSuccessor(oldInstruction, kind) and + // There is only one case for the translation into `result` because the + // SSA construction never inserts extra instructions _before_ an existing + // instruction. + getOldInstruction(result) = oldInstruction.getBackEdgeSuccessor(kind) and + // There are two cases for the translation into `instruction` because the + // SSA construction might have inserted a chi node _after_ + // `oldInstruction`, in which case the back edge should come out of the + // chi node instead. + if hasChiNode(_, 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()) } @@ -328,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 } @@ -352,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()) @@ -374,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] @@ -404,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) ) } @@ -517,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" ) } diff --git a/cpp/ql/src/semmle/code/cpp/ir/internal/TIRVariable.qll b/cpp/ql/src/semmle/code/cpp/ir/internal/TIRVariable.qll new file mode 100644 index 00000000000..3f1116b83d7 --- /dev/null +++ b/cpp/ql/src/semmle/code/cpp/ir/internal/TIRVariable.qll @@ -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) + } + diff --git a/cpp/ql/src/semmle/code/cpp/rangeanalysis/RangeAnalysis.qll b/cpp/ql/src/semmle/code/cpp/rangeanalysis/RangeAnalysis.qll index 32b3d4ee4fc..7811c86730f 100644 --- a/cpp/ql/src/semmle/code/cpp/rangeanalysis/RangeAnalysis.qll +++ b/cpp/ql/src/semmle/code/cpp/rangeanalysis/RangeAnalysis.qll @@ -559,47 +559,44 @@ private predicate boundedCastExpr( private predicate boundedInstruction( Instruction i, Bound b, int delta, boolean upper, boolean fromBackEdge, int origdelta, Reason reason ) { - isReducibleCFG(i.getFunction()) and - ( - i instanceof PhiInstruction and - forex(PhiOperand op | op = i.getAnOperand() | - boundedPhiCandValidForEdge(i, b, delta, upper, fromBackEdge, origdelta, reason, op) - ) - or - i = b.getInstruction(delta) and - (upper = true or upper = false) and - fromBackEdge = false and - origdelta = delta and - reason = TNoReason() - or - exists(Operand mid, int d1, int d2 | - boundFlowStep(i, mid, d1, upper) and - boundedNonPhiOperand(mid, b, d2, upper, fromBackEdge, origdelta, reason) and - delta = d1 + d2 and - not exists(getValue(getConstantValue(i))) - ) - or - exists(Operand mid, int factor, int d | - boundFlowStepMul(i, mid, factor) and - boundedNonPhiOperand(mid, b, d, upper, fromBackEdge, origdelta, reason) and - b instanceof ZeroBound and - delta = d*factor and - not exists(getValue(getConstantValue(i))) - ) - or - exists(Operand mid, int factor, int d | - boundFlowStepDiv(i, mid, factor) and - boundedNonPhiOperand(mid, b, d, upper, fromBackEdge, origdelta, reason) and - d >= 0 and - b instanceof ZeroBound and - delta = d / factor and - not exists(getValue(getConstantValue(i))) - ) - or - exists(NarrowingCastInstruction cast | - cast = i and - safeNarrowingCast(cast, upper.booleanNot()) and - boundedCastExpr(cast, b, delta, upper, fromBackEdge, origdelta, reason) - ) + i instanceof PhiInstruction and + forex(PhiOperand op | op = i.getAnOperand() | + boundedPhiCandValidForEdge(i, b, delta, upper, fromBackEdge, origdelta, reason, op) + ) + or + i = b.getInstruction(delta) and + (upper = true or upper = false) and + fromBackEdge = false and + origdelta = delta and + reason = TNoReason() + or + exists(Operand mid, int d1, int d2 | + boundFlowStep(i, mid, d1, upper) and + boundedNonPhiOperand(mid, b, d2, upper, fromBackEdge, origdelta, reason) and + delta = d1 + d2 and + not exists(getValue(getConstantValue(i))) + ) + or + exists(Operand mid, int factor, int d | + boundFlowStepMul(i, mid, factor) and + boundedNonPhiOperand(mid, b, d, upper, fromBackEdge, origdelta, reason) and + b instanceof ZeroBound and + delta = d*factor and + not exists(getValue(getConstantValue(i))) + ) + or + exists(Operand mid, int factor, int d | + boundFlowStepDiv(i, mid, factor) and + boundedNonPhiOperand(mid, b, d, upper, fromBackEdge, origdelta, reason) and + d >= 0 and + b instanceof ZeroBound and + delta = d / factor and + not exists(getValue(getConstantValue(i))) + ) + or + exists(NarrowingCastInstruction cast | + cast = i and + safeNarrowingCast(cast, upper.booleanNot()) and + boundedCastExpr(cast, b, delta, upper, fromBackEdge, origdelta, reason) ) } diff --git a/cpp/ql/src/semmle/code/cpp/rangeanalysis/RangeUtils.qll b/cpp/ql/src/semmle/code/cpp/rangeanalysis/RangeUtils.qll index b02914033a7..04a3d2499e4 100644 --- a/cpp/ql/src/semmle/code/cpp/rangeanalysis/RangeUtils.qll +++ b/cpp/ql/src/semmle/code/cpp/rangeanalysis/RangeUtils.qll @@ -63,24 +63,7 @@ predicate valueFlowStep(Instruction i, Operand op, int delta) { ) } -predicate isReducibleCFG(Function f) { - not exists(LabelStmt l, GotoStmt goto | - goto.getTarget() = l and - l.getLocation().isBefore(goto.getLocation()) and - l.getEnclosingFunction() = f - ) and - not exists(LabelStmt ls, Loop l | - ls.getParent*() = l and - l.getEnclosingFunction() = f - ) and - not exists(SwitchCase cs | - cs.getSwitchStmt().getStmt() != cs.getParentStmt() and - cs.getEnclosingFunction() = f - ) -} - predicate backEdge(PhiInstruction phi, PhiOperand op) { phi.getAnOperand() = op and - phi.getBlock().dominates(op.getPredecessorBlock()) - // TODO: identify backedges during IR construction -} \ No newline at end of file + phi.getBlock() = op.getPredecessorBlock().getBackEdgeSuccessor(_) +} diff --git a/cpp/ql/test/library-tests/constants/addresses/addresses.cpp b/cpp/ql/test/library-tests/constants/addresses/addresses.cpp new file mode 100644 index 00000000000..a80e9b38a2e --- /dev/null +++ b/cpp/ql/test/library-tests/constants/addresses/addresses.cpp @@ -0,0 +1,86 @@ +// semmle-extractor-options: --c++14 + +const int int_const = 1; +extern const int extern_int_const = 1; +extern const int extern_int_const_noinit; + +int int_var; +int int_arr[4]; +int int_arr_arr[4][4]; + +int *const const_ptr = &int_var; + +void sideEffect(); +using fptr = void (*)(); +using fref = void (&)(); + + + +// All variables in this function are initialized to constants, as witnessed by +// the `constexpr` annotation that compiles under C++14. +void constantAddresses(int param) { + constexpr int *ptr_int = &int_var; + constexpr int *ptr_deref_chain = &*&int_var; + constexpr int *ptr_array = &int_arr[1] + 1; + constexpr int (*ptr_to_array)[4] = &int_arr_arr[1] + 1; + constexpr int *array2d = &int_arr_arr[1][1] + 1; + constexpr int *const_ints = &int_arr_arr[int_const][extern_int_const]; + + // Commented out because clang and EDG disagree on whether this is + // constant. + //constexpr int *stmtexpr_int = &int_arr[ ({ 1; }) ]; + + constexpr int *comma_int = &int_arr[ ((void)0, 1) ]; + constexpr int *comma_addr = ((void)0, &int_var); + constexpr int *ternary_true = int_const ? &int_var : ¶m; + constexpr int *ternary_false = !int_const ? ¶m : &int_var; + constexpr int *ternary_overflow = (unsigned char)256 ? ¶m : &int_var; + constexpr int *ternary_ptr_cond = (&int_arr+1) ? &int_var : ¶m;; + constexpr int *ptr_subtract = &int_arr[&int_arr[1] - &int_arr[0]]; + + constexpr int *constexpr_va = ptr_subtract + 1; + + constexpr int &ref_int = int_var; + constexpr int &ref_array2d = int_arr_arr[1][1]; + constexpr int &ref_va = ref_array2d; + constexpr int &ref_va_arith = *(&ref_array2d + 1); + + constexpr fptr fp_implicit = sideEffect; + constexpr fptr fp_explicit = &sideEffect; + constexpr fptr fp_chain_addressof = &**&**sideEffect; + constexpr fptr fp_chain_deref = **&**&**sideEffect; + constexpr fptr fp_shortchain_deref = *&sideEffect; + + constexpr fref fr_int = sideEffect; + constexpr fref fr_deref = *&sideEffect; + constexpr fref fr_2deref = **sideEffect; + constexpr fref fr_va = fr_int; + + constexpr const char *char_ptr = "str"; + constexpr const char *char_ptr_1 = "str" + 1; + constexpr char char_arr[] = "str"; +} + + + + +// All variables in this function are initialized to non-const values. Writing +// `constexpr` in front of any of the variables will be a compile error +// (C++14). +void nonConstantAddresses(const int param, int *const pparam, int &rparam, fref frparam) { + int *int_param = &int_arr[param]; + int *int_noinit = &int_arr[extern_int_const_noinit]; + + int *side_effect_stmtexpr = &int_arr[ ({ sideEffect(); 1; }) ]; + int *side_effect_comma_int = &int_arr[ (sideEffect(), 1) ]; + int *side_effect_comma_addr = (sideEffect(), &int_var); + int *side_effect_comma_addr2 = ((void)(sideEffect(), 1), &int_var); + int *ternary_int = &int_arr[int_const ? param : 1]; + const int *ternary_addr = int_const ? ¶m : &int_var; + int *va_non_constexpr = pparam; + + int *&&ref_to_temporary = &int_var; // reference to temporary is not a const + int &ref_param = rparam; + + fref fr_param = frparam; +} diff --git a/cpp/ql/test/library-tests/constants/addresses/addresses.expected b/cpp/ql/test/library-tests/constants/addresses/addresses.expected new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cpp/ql/test/library-tests/constants/addresses/addresses.ql b/cpp/ql/test/library-tests/constants/addresses/addresses.ql new file mode 100644 index 00000000000..4a1701c079a --- /dev/null +++ b/cpp/ql/test/library-tests/constants/addresses/addresses.ql @@ -0,0 +1,16 @@ +import cpp + +from Expr e, string msg, LocalVariable var, Function f +where + e = var.getInitializer().getExpr().getFullyConverted() and + var.getFunction() = f and + ( + e.isConstant() and + f.getName() = "nonConstantAddresses" and + msg = "misclassified as constant" + or + not e.isConstant() and + f.getName() = "constantAddresses" and + msg = "misclassified as NOT constant" + ) +select e, var.getName(), msg diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 3959da83449..59f4763a2f0 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -6782,3 +6782,47 @@ ir.cpp: # 1055| 0: i # 1055| Type = int # 1055| ValueCategory = prvalue(load) +# 1058| chiNodeAtEndOfLoop(int, char *) -> void +# 1058| params: +# 1058| 0: n +# 1058| Type = int +# 1058| 1: p +# 1058| Type = char * +# 1058| body: { ... } +# 1059| 0: while (...) ... +# 1059| 0: ... > ... +# 1059| Type = bool +# 1059| ValueCategory = prvalue +# 1059| 0: ... -- +# 1059| Type = int +# 1059| ValueCategory = prvalue +# 1059| 0: n +# 1059| Type = int +# 1059| ValueCategory = lvalue +# 1059| 1: 0 +# 1059| Type = int +# 1059| Value = 0 +# 1059| ValueCategory = prvalue +# 1060| 1: ExprStmt +# 1060| 0: ... = ... +# 1060| Type = char +# 1060| ValueCategory = lvalue +# 1060| 0: * ... +# 1060| Type = char +# 1060| ValueCategory = lvalue +# 1060| 0: ... ++ +# 1060| Type = char * +# 1060| ValueCategory = prvalue +# 1060| 0: p +# 1060| Type = char * +# 1060| ValueCategory = lvalue +# 1060| 1: (char)... +# 1060| Conversion = integral conversion +# 1060| Type = char +# 1060| Value = 0 +# 1060| ValueCategory = prvalue +# 1060| expr: 0 +# 1060| Type = int +# 1060| Value = 0 +# 1060| ValueCategory = prvalue +# 1061| 1: return ... diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_ir.expected index 74b2b67f6cd..4f9d11ddf58 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_ir.expected @@ -1116,7 +1116,7 @@ ir.cpp: # 255| r1_2(int) = Load : r1_1, m3_0 # 255| r1_3(int) = Sub : r1_2, r1_0 # 255| m1_4(int) = Store : r1_1, r1_3 -#-----| Goto -> Block 3 +#-----| Goto (back edge) -> Block 3 # 257| Block 2 # 257| v2_0(void) = NoOp : @@ -1156,7 +1156,7 @@ ir.cpp: # 262| r1_9(bool) = CompareGT : r1_7, r1_8 # 262| v1_10(void) = ConditionalBranch : r1_9 #-----| False -> Block 2 -#-----| True -> Block 1 +#-----| True (back edge) -> Block 1 # 263| Block 2 # 263| v2_0(void) = NoOp : @@ -1175,7 +1175,7 @@ ir.cpp: # 268| Block 1 # 268| v1_0(void) = NoOp : -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 272| For_Init() -> void # 272| Block 0 @@ -1189,7 +1189,7 @@ ir.cpp: # 274| Block 1 # 274| v1_0(void) = NoOp : -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 278| For_Condition() -> void # 278| Block 0 @@ -1212,7 +1212,7 @@ ir.cpp: # 281| Block 2 # 281| v2_0(void) = NoOp : -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 278| Block 3 # 278| v3_0(void) = Unreached : @@ -1235,7 +1235,7 @@ ir.cpp: # 287| r1_4(int) = Load : r1_3, m1_0 # 287| r1_5(int) = Add : r1_4, r1_2 # 287| m1_6(int) = Store : r1_3, r1_5 -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 292| For_InitCondition() -> void # 292| Block 0 @@ -1258,7 +1258,7 @@ ir.cpp: # 294| Block 2 # 294| v2_0(void) = NoOp : -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 292| Block 3 # 292| v3_0(void) = Unreached : @@ -1281,7 +1281,7 @@ ir.cpp: # 299| r1_4(int) = Load : r1_3, m1_0 # 299| r1_5(int) = Add : r1_4, r1_2 # 299| m1_6(int) = Store : r1_3, r1_5 -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 304| For_ConditionUpdate() -> void # 304| Block 0 @@ -1310,7 +1310,7 @@ ir.cpp: # 306| r2_3(int) = Load : r2_2, m1_0 # 306| r2_4(int) = Add : r2_3, r2_1 # 306| m2_5(int) = Store : r2_2, r2_4 -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 309| Block 3 # 309| v3_0(void) = NoOp : @@ -1345,7 +1345,7 @@ ir.cpp: # 312| r2_3(int) = Load : r2_2, m1_0 # 312| r2_4(int) = Add : r2_3, r2_1 # 312| m2_5(int) = Store : r2_2, r2_4 -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 315| Block 3 # 315| v3_0(void) = NoOp : @@ -1379,7 +1379,7 @@ ir.cpp: # 318| r2_2(int) = Load : r2_1, m1_0 # 318| r2_3(int) = Add : r2_2, r2_0 # 318| m2_4(int) = Store : r2_1, r2_3 -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 319| Block 3 # 319| r3_0(glval) = VariableAddress[i] : @@ -1441,7 +1441,7 @@ ir.cpp: # 326| r4_3(int) = Load : r4_2, m1_0 # 326| r4_4(int) = Add : r4_3, r4_1 # 326| m4_5(int) = Store : r4_2, r4_4 -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 331| Block 5 # 331| v5_0(void) = NoOp : @@ -1479,7 +1479,7 @@ ir.cpp: # 334| Block 3 # 334| v3_0(void) = NoOp : -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 333| Block 4 # 333| v4_0(void) = Unreached : @@ -1547,7 +1547,7 @@ ir.cpp: # 356| r3_2(int) = Load : r3_1, m5_0 # 356| r3_3(int) = Sub : r3_2, r3_0 # 356| m3_4(int) = Store : r3_1, r3_3 -#-----| Goto -> Block 5 +#-----| Goto (back edge) -> Block 5 # 357| Block 4 # 357| v4_0(void) = NoOp : @@ -1606,7 +1606,7 @@ ir.cpp: # 366| r4_5(bool) = CompareGT : r4_3, r4_4 # 366| v4_6(void) = ConditionalBranch : r4_5 #-----| False -> Block 5 -#-----| True -> Block 1 +#-----| True (back edge) -> Block 1 # 367| Block 5 # 367| v5_0(void) = NoOp : @@ -4395,7 +4395,7 @@ ir.cpp: # 979| Block 1 # 979| v1_0(void) = NoOp : -#-----| Goto -> Block 7 +#-----| Goto (back edge) -> Block 7 # 981| Block 2 # 981| r2_0(glval) = VariableAddress[z] : @@ -4415,7 +4415,7 @@ ir.cpp: # 981| Block 3 # 981| v3_0(void) = NoOp : -#-----| Goto -> Block 2 +#-----| Goto (back edge) -> Block 2 # 983| Block 4 # 983| r4_0(glval) = VariableAddress[p] : @@ -4431,7 +4431,7 @@ ir.cpp: # 983| Block 5 # 983| v5_0(void) = NoOp : -#-----| Goto -> Block 4 +#-----| Goto (back edge) -> Block 4 # 985| Block 6 # 985| v6_0(void) = NoOp : @@ -4646,3 +4646,46 @@ ir.cpp: # 1049| Block 2 # 1049| v2_0(void) = Unreached : + +# 1058| chiNodeAtEndOfLoop(int, char *) -> void +# 1058| Block 0 +# 1058| v0_0(void) = EnterFunction : +# 1058| m0_1(unknown) = AliasedDefinition : +# 1058| mu0_2(unknown) = UnmodeledDefinition : +# 1058| r0_3(glval) = VariableAddress[n] : +# 1058| m0_4(int) = InitializeParameter[n] : r0_3 +# 1058| r0_5(glval) = VariableAddress[p] : +# 1058| m0_6(char *) = InitializeParameter[p] : r0_5 +#-----| Goto -> Block 3 + +# 1060| Block 1 +# 1060| r1_0(char) = Constant[0] : +# 1060| r1_1(glval) = VariableAddress[p] : +# 1060| r1_2(char *) = Load : r1_1, m3_2 +# 1060| r1_3(int) = Constant[1] : +# 1060| r1_4(char *) = PointerAdd[1] : r1_2, r1_3 +# 1060| m1_5(char *) = Store : r1_1, r1_4 +# 1060| m1_6(char) = Store : r1_2, r1_0 +# 1060| m1_7(unknown) = Chi : m3_0, m1_6 +#-----| Goto (back edge) -> Block 3 + +# 1061| Block 2 +# 1061| v2_0(void) = NoOp : +# 1058| v2_1(void) = ReturnVoid : +# 1058| v2_2(void) = UnmodeledUse : mu* +# 1058| v2_3(void) = ExitFunction : + +# 1059| Block 3 +# 1059| m3_0(unknown) = Phi : from 0:m0_1, from 1:m1_7 +# 1059| m3_1(int) = Phi : from 0:m0_4, from 1:m3_7 +# 1059| m3_2(char *) = Phi : from 0:m0_6, from 1:m1_5 +# 1059| r3_3(glval) = VariableAddress[n] : +# 1059| r3_4(int) = Load : r3_3, m3_1 +# 1059| r3_5(int) = Constant[1] : +# 1059| r3_6(int) = Sub : r3_4, r3_5 +# 1059| m3_7(int) = Store : r3_3, r3_6 +# 1059| r3_8(int) = Constant[0] : +# 1059| r3_9(bool) = CompareGT : r3_4, r3_8 +# 1059| v3_10(void) = ConditionalBranch : r3_9 +#-----| False -> Block 2 +#-----| True -> Block 1 diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_sanity.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_sanity.expected index 4513d33fbd9..ab8c7c82440 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_sanity.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_sanity.expected @@ -8,3 +8,6 @@ unexplainedLoop unnecessaryPhiInstruction operandAcrossFunctions instructionWithoutUniqueBlock +containsLoopOfForwardEdges +lostReachability +backEdgeCountMismatch diff --git a/cpp/ql/test/library-tests/ir/ir/ir.cpp b/cpp/ql/test/library-tests/ir/ir/ir.cpp index 7872a58ee6f..396d5603cc0 100644 --- a/cpp/ql/test/library-tests/ir/ir/ir.cpp +++ b/cpp/ql/test/library-tests/ir/ir/ir.cpp @@ -1055,4 +1055,9 @@ int DoWhileFalse() { return i; } +void chiNodeAtEndOfLoop(int n, char *p) { + while (n-- > 0) + *p++ = 0; +} + // semmle-extractor-options: -std=c++17 diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index b7e4d6928a8..d0b60813b1d 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -1108,7 +1108,7 @@ ir.cpp: # 255| r1_2(int) = Load : r1_1, mu0_2 # 255| r1_3(int) = Sub : r1_2, r1_0 # 255| mu1_4(int) = Store : r1_1, r1_3 -#-----| Goto -> Block 3 +#-----| Goto (back edge) -> Block 3 # 257| Block 2 # 257| v2_0(void) = NoOp : @@ -1146,7 +1146,7 @@ ir.cpp: # 262| r1_8(bool) = CompareGT : r1_6, r1_7 # 262| v1_9(void) = ConditionalBranch : r1_8 #-----| False -> Block 2 -#-----| True -> Block 1 +#-----| True (back edge) -> Block 1 # 263| Block 2 # 263| v2_0(void) = NoOp : @@ -1170,7 +1170,7 @@ ir.cpp: # 268| Block 2 # 268| v2_0(void) = NoOp : -#-----| Goto -> Block 2 +#-----| Goto (back edge) -> Block 2 # 272| For_Init() -> void # 272| Block 0 @@ -1189,7 +1189,7 @@ ir.cpp: # 274| Block 2 # 274| v2_0(void) = NoOp : -#-----| Goto -> Block 2 +#-----| Goto (back edge) -> Block 2 # 278| For_Condition() -> void # 278| Block 0 @@ -1212,7 +1212,7 @@ ir.cpp: # 281| Block 2 # 281| v2_0(void) = NoOp : -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 283| Block 3 # 283| v3_0(void) = NoOp : @@ -1242,7 +1242,7 @@ ir.cpp: # 287| r2_3(int) = Load : r2_2, mu0_2 # 287| r2_4(int) = Add : r2_3, r2_1 # 287| mu2_5(int) = Store : r2_2, r2_4 -#-----| Goto -> Block 2 +#-----| Goto (back edge) -> Block 2 # 292| For_InitCondition() -> void # 292| Block 0 @@ -1265,7 +1265,7 @@ ir.cpp: # 294| Block 2 # 294| v2_0(void) = NoOp : -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 296| Block 3 # 296| v3_0(void) = NoOp : @@ -1295,7 +1295,7 @@ ir.cpp: # 299| r2_3(int) = Load : r2_2, mu0_2 # 299| r2_4(int) = Add : r2_3, r2_1 # 299| mu2_5(int) = Store : r2_2, r2_4 -#-----| Goto -> Block 2 +#-----| Goto (back edge) -> Block 2 # 304| For_ConditionUpdate() -> void # 304| Block 0 @@ -1323,7 +1323,7 @@ ir.cpp: # 306| r2_3(int) = Load : r2_2, mu0_2 # 306| r2_4(int) = Add : r2_3, r2_1 # 306| mu2_5(int) = Store : r2_2, r2_4 -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 309| Block 3 # 309| v3_0(void) = NoOp : @@ -1357,7 +1357,7 @@ ir.cpp: # 312| r2_3(int) = Load : r2_2, mu0_2 # 312| r2_4(int) = Add : r2_3, r2_1 # 312| mu2_5(int) = Store : r2_2, r2_4 -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 315| Block 3 # 315| v3_0(void) = NoOp : @@ -1390,7 +1390,7 @@ ir.cpp: # 318| r2_2(int) = Load : r2_1, mu0_2 # 318| r2_3(int) = Add : r2_2, r2_0 # 318| mu2_4(int) = Store : r2_1, r2_3 -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 319| Block 3 # 319| r3_0(glval) = VariableAddress[i] : @@ -1451,7 +1451,7 @@ ir.cpp: # 326| r4_3(int) = Load : r4_2, mu0_2 # 326| r4_4(int) = Add : r4_3, r4_1 # 326| mu4_5(int) = Store : r4_2, r4_4 -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 331| Block 5 # 331| v5_0(void) = NoOp : @@ -1493,7 +1493,7 @@ ir.cpp: # 334| Block 4 # 334| v4_0(void) = NoOp : -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 339| Block 5 # 339| v5_0(void) = NoOp : @@ -1563,7 +1563,7 @@ ir.cpp: # 356| r3_2(int) = Load : r3_1, mu0_2 # 356| r3_3(int) = Sub : r3_2, r3_0 # 356| mu3_4(int) = Store : r3_1, r3_3 -#-----| Goto -> Block 5 +#-----| Goto (back edge) -> Block 5 # 357| Block 4 # 357| v4_0(void) = NoOp : @@ -1619,7 +1619,7 @@ ir.cpp: # 366| r4_4(bool) = CompareGT : r4_2, r4_3 # 366| v4_5(void) = ConditionalBranch : r4_4 #-----| False -> Block 5 -#-----| True -> Block 1 +#-----| True (back edge) -> Block 1 # 367| Block 5 # 367| v5_0(void) = NoOp : @@ -4282,7 +4282,7 @@ ir.cpp: # 979| Block 1 # 979| v1_0(void) = NoOp : -#-----| Goto -> Block 7 +#-----| Goto (back edge) -> Block 7 # 981| Block 2 # 981| r2_0(glval) = VariableAddress[z] : @@ -4302,7 +4302,7 @@ ir.cpp: # 981| Block 3 # 981| v3_0(void) = NoOp : -#-----| Goto -> Block 2 +#-----| Goto (back edge) -> Block 2 # 983| Block 4 # 983| r4_0(glval) = VariableAddress[p] : @@ -4318,7 +4318,7 @@ ir.cpp: # 983| Block 5 # 983| v5_0(void) = NoOp : -#-----| Goto -> Block 4 +#-----| Goto (back edge) -> Block 4 # 985| Block 6 # 985| v6_0(void) = NoOp : @@ -4533,7 +4533,7 @@ ir.cpp: # 1053| r1_5(bool) = Constant[0] : # 1053| v1_6(void) = ConditionalBranch : r1_5 #-----| False -> Block 2 -#-----| True -> Block 1 +#-----| True (back edge) -> Block 1 # 1055| Block 2 # 1055| r2_0(glval) = VariableAddress[#return] : @@ -4544,3 +4544,42 @@ ir.cpp: # 1049| v2_5(void) = ReturnValue : r2_4, mu0_2 # 1049| v2_6(void) = UnmodeledUse : mu* # 1049| v2_7(void) = ExitFunction : + +# 1058| chiNodeAtEndOfLoop(int, char *) -> void +# 1058| Block 0 +# 1058| v0_0(void) = EnterFunction : +# 1058| mu0_1(unknown) = AliasedDefinition : +# 1058| mu0_2(unknown) = UnmodeledDefinition : +# 1058| r0_3(glval) = VariableAddress[n] : +# 1058| mu0_4(int) = InitializeParameter[n] : r0_3 +# 1058| r0_5(glval) = VariableAddress[p] : +# 1058| mu0_6(char *) = InitializeParameter[p] : r0_5 +#-----| Goto -> Block 3 + +# 1060| Block 1 +# 1060| r1_0(char) = Constant[0] : +# 1060| r1_1(glval) = VariableAddress[p] : +# 1060| r1_2(char *) = Load : r1_1, mu0_2 +# 1060| r1_3(int) = Constant[1] : +# 1060| r1_4(char *) = PointerAdd[1] : r1_2, r1_3 +# 1060| mu1_5(char *) = Store : r1_1, r1_4 +# 1060| mu1_6(char) = Store : r1_2, r1_0 +#-----| Goto (back edge) -> Block 3 + +# 1061| Block 2 +# 1061| v2_0(void) = NoOp : +# 1058| v2_1(void) = ReturnVoid : +# 1058| v2_2(void) = UnmodeledUse : mu* +# 1058| v2_3(void) = ExitFunction : + +# 1059| Block 3 +# 1059| r3_0(glval) = VariableAddress[n] : +# 1059| r3_1(int) = Load : r3_0, mu0_2 +# 1059| r3_2(int) = Constant[1] : +# 1059| r3_3(int) = Sub : r3_1, r3_2 +# 1059| mu3_4(int) = Store : r3_0, r3_3 +# 1059| r3_5(int) = Constant[0] : +# 1059| r3_6(bool) = CompareGT : r3_1, r3_5 +# 1059| v3_7(void) = ConditionalBranch : r3_6 +#-----| False -> Block 2 +#-----| True -> Block 1 diff --git a/cpp/ql/test/library-tests/ir/ir/raw_sanity.expected b/cpp/ql/test/library-tests/ir/ir/raw_sanity.expected index 4513d33fbd9..ab8c7c82440 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_sanity.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_sanity.expected @@ -8,3 +8,6 @@ unexplainedLoop unnecessaryPhiInstruction operandAcrossFunctions instructionWithoutUniqueBlock +containsLoopOfForwardEdges +lostReachability +backEdgeCountMismatch diff --git a/cpp/ql/test/library-tests/ir/ir/ssa_block_count.expected b/cpp/ql/test/library-tests/ir/ir/ssa_block_count.expected index 83add17211f..f2a6f5709a3 100644 --- a/cpp/ql/test/library-tests/ir/ir/ssa_block_count.expected +++ b/cpp/ql/test/library-tests/ir/ir/ssa_block_count.expected @@ -101,6 +101,7 @@ | IR: VirtualMemberFunction | 1 | | IR: WhileStatements | 4 | | IR: WhileStmtWithDeclaration | 8 | +| IR: chiNodeAtEndOfLoop | 4 | | IR: designatedInit | 1 | | IR: min | 4 | | IR: operator= | 1 | diff --git a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_ir.expected b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_ir.expected index ff5b79febb3..57b328394b9 100644 --- a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_ir.expected @@ -1109,7 +1109,7 @@ ir.cpp: # 255| r1_2(int) = Load : r1_1, m3_0 # 255| r1_3(int) = Sub : r1_2, r1_0 # 255| m1_4(int) = Store : r1_1, r1_3 -#-----| Goto -> Block 3 +#-----| Goto (back edge) -> Block 3 # 257| Block 2 # 257| v2_0(void) = NoOp : @@ -1149,7 +1149,7 @@ ir.cpp: # 262| r1_9(bool) = CompareGT : r1_7, r1_8 # 262| v1_10(void) = ConditionalBranch : r1_9 #-----| False -> Block 2 -#-----| True -> Block 1 +#-----| True (back edge) -> Block 1 # 263| Block 2 # 263| v2_0(void) = NoOp : @@ -1168,7 +1168,7 @@ ir.cpp: # 268| Block 1 # 268| v1_0(void) = NoOp : -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 272| For_Init() -> void # 272| Block 0 @@ -1182,7 +1182,7 @@ ir.cpp: # 274| Block 1 # 274| v1_0(void) = NoOp : -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 278| For_Condition() -> void # 278| Block 0 @@ -1205,7 +1205,7 @@ ir.cpp: # 281| Block 2 # 281| v2_0(void) = NoOp : -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 283| Block 3 # 283| v3_0(void) = NoOp : @@ -1231,7 +1231,7 @@ ir.cpp: # 287| r1_4(int) = Load : r1_3, m1_0 # 287| r1_5(int) = Add : r1_4, r1_2 # 287| m1_6(int) = Store : r1_3, r1_5 -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 292| For_InitCondition() -> void # 292| Block 0 @@ -1254,7 +1254,7 @@ ir.cpp: # 294| Block 2 # 294| v2_0(void) = NoOp : -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 296| Block 3 # 296| v3_0(void) = NoOp : @@ -1280,7 +1280,7 @@ ir.cpp: # 299| r1_4(int) = Load : r1_3, m1_0 # 299| r1_5(int) = Add : r1_4, r1_2 # 299| m1_6(int) = Store : r1_3, r1_5 -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 304| For_ConditionUpdate() -> void # 304| Block 0 @@ -1309,7 +1309,7 @@ ir.cpp: # 306| r2_3(int) = Load : r2_2, m1_0 # 306| r2_4(int) = Add : r2_3, r2_1 # 306| m2_5(int) = Store : r2_2, r2_4 -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 309| Block 3 # 309| v3_0(void) = NoOp : @@ -1344,7 +1344,7 @@ ir.cpp: # 312| r2_3(int) = Load : r2_2, m1_0 # 312| r2_4(int) = Add : r2_3, r2_1 # 312| m2_5(int) = Store : r2_2, r2_4 -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 315| Block 3 # 315| v3_0(void) = NoOp : @@ -1378,7 +1378,7 @@ ir.cpp: # 318| r2_2(int) = Load : r2_1, m1_0 # 318| r2_3(int) = Add : r2_2, r2_0 # 318| m2_4(int) = Store : r2_1, r2_3 -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 319| Block 3 # 319| r3_0(glval) = VariableAddress[i] : @@ -1440,7 +1440,7 @@ ir.cpp: # 326| r4_3(int) = Load : r4_2, m1_0 # 326| r4_4(int) = Add : r4_3, r4_1 # 326| m4_5(int) = Store : r4_2, r4_4 -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 331| Block 5 # 331| v5_0(void) = NoOp : @@ -1482,7 +1482,7 @@ ir.cpp: # 334| Block 4 # 334| v4_0(void) = NoOp : -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 339| Block 5 # 339| v5_0(void) = NoOp : @@ -1552,7 +1552,7 @@ ir.cpp: # 356| r3_2(int) = Load : r3_1, m5_0 # 356| r3_3(int) = Sub : r3_2, r3_0 # 356| m3_4(int) = Store : r3_1, r3_3 -#-----| Goto -> Block 5 +#-----| Goto (back edge) -> Block 5 # 357| Block 4 # 357| v4_0(void) = NoOp : @@ -1611,7 +1611,7 @@ ir.cpp: # 366| r4_5(bool) = CompareGT : r4_3, r4_4 # 366| v4_6(void) = ConditionalBranch : r4_5 #-----| False -> Block 5 -#-----| True -> Block 1 +#-----| True (back edge) -> Block 1 # 367| Block 5 # 367| v5_0(void) = NoOp : @@ -4263,7 +4263,7 @@ ir.cpp: # 979| Block 1 # 979| v1_0(void) = NoOp : -#-----| Goto -> Block 7 +#-----| Goto (back edge) -> Block 7 # 981| Block 2 # 981| r2_0(glval) = VariableAddress[z] : @@ -4283,7 +4283,7 @@ ir.cpp: # 981| Block 3 # 981| v3_0(void) = NoOp : -#-----| Goto -> Block 2 +#-----| Goto (back edge) -> Block 2 # 983| Block 4 # 983| r4_0(glval) = VariableAddress[p] : @@ -4299,7 +4299,7 @@ ir.cpp: # 983| Block 5 # 983| v5_0(void) = NoOp : -#-----| Goto -> Block 4 +#-----| Goto (back edge) -> Block 4 # 985| Block 6 # 985| v6_0(void) = NoOp : @@ -4517,3 +4517,44 @@ ir.cpp: # 1049| Block 2 # 1049| v2_0(void) = Unreached : + +# 1058| chiNodeAtEndOfLoop(int, char *) -> void +# 1058| Block 0 +# 1058| v0_0(void) = EnterFunction : +# 1058| mu0_1(unknown) = AliasedDefinition : +# 1058| mu0_2(unknown) = UnmodeledDefinition : +# 1058| r0_3(glval) = VariableAddress[n] : +# 1058| m0_4(int) = InitializeParameter[n] : r0_3 +# 1058| r0_5(glval) = VariableAddress[p] : +# 1058| m0_6(char *) = InitializeParameter[p] : r0_5 +#-----| Goto -> Block 3 + +# 1060| Block 1 +# 1060| r1_0(char) = Constant[0] : +# 1060| r1_1(glval) = VariableAddress[p] : +# 1060| r1_2(char *) = Load : r1_1, m3_1 +# 1060| r1_3(int) = Constant[1] : +# 1060| r1_4(char *) = PointerAdd[1] : r1_2, r1_3 +# 1060| m1_5(char *) = Store : r1_1, r1_4 +# 1060| mu1_6(char) = Store : r1_2, r1_0 +#-----| Goto (back edge) -> Block 3 + +# 1061| Block 2 +# 1061| v2_0(void) = NoOp : +# 1058| v2_1(void) = ReturnVoid : +# 1058| v2_2(void) = UnmodeledUse : mu* +# 1058| v2_3(void) = ExitFunction : + +# 1059| Block 3 +# 1059| m3_0(int) = Phi : from 0:m0_4, from 1:m3_6 +# 1059| m3_1(char *) = Phi : from 0:m0_6, from 1:m1_5 +# 1059| r3_2(glval) = VariableAddress[n] : +# 1059| r3_3(int) = Load : r3_2, m3_0 +# 1059| r3_4(int) = Constant[1] : +# 1059| r3_5(int) = Sub : r3_3, r3_4 +# 1059| m3_6(int) = Store : r3_2, r3_5 +# 1059| r3_7(int) = Constant[0] : +# 1059| r3_8(bool) = CompareGT : r3_3, r3_7 +# 1059| v3_9(void) = ConditionalBranch : r3_8 +#-----| False -> Block 2 +#-----| True -> Block 1 diff --git a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_sanity.expected b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_sanity.expected index 4513d33fbd9..ab8c7c82440 100644 --- a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_sanity.expected +++ b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_sanity.expected @@ -8,3 +8,6 @@ unexplainedLoop unnecessaryPhiInstruction operandAcrossFunctions instructionWithoutUniqueBlock +containsLoopOfForwardEdges +lostReachability +backEdgeCountMismatch diff --git a/cpp/ql/test/library-tests/qlcfg/cpp11.cpp b/cpp/ql/test/library-tests/qlcfg/cpp11.cpp index a0b8cf93004..90c6fa02294 100644 --- a/cpp/ql/test/library-tests/qlcfg/cpp11.cpp +++ b/cpp/ql/test/library-tests/qlcfg/cpp11.cpp @@ -54,6 +54,9 @@ void skip_init() { void run_init() { int nonstatic; static int x1 = global_int; + + // It makes no sense to initialize a static variable to the address of a + // non-static variable, but in principle it can be done: static int *x2 = &nonstatic; } diff --git a/cpp/ql/test/library-tests/rangeanalysis/rangeanalysis/RangeAnalysis.expected b/cpp/ql/test/library-tests/rangeanalysis/rangeanalysis/RangeAnalysis.expected index d48b37bbaf1..cb3366e91b5 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/rangeanalysis/RangeAnalysis.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/rangeanalysis/RangeAnalysis.expected @@ -36,6 +36,7 @@ | test.cpp:100:10:100:10 | Load: x | file://:0:0:0:0 | 0 | 1 | true | CompareLE: ... <= ... | test.cpp:99:7:99:12 | test.cpp:99:7:99:12 | | test.cpp:102:10:102:10 | Load: x | file://:0:0:0:0 | 0 | 2 | false | CompareLE: ... <= ... | test.cpp:99:7:99:12 | test.cpp:99:7:99:12 | | test.cpp:107:5:107:10 | Phi: test10 | test.cpp:114:3:114:6 | Phi: call to sink | -1 | true | CompareLT: ... < ... | test.cpp:115:18:115:22 | test.cpp:115:18:115:22 | +| test.cpp:130:10:130:10 | Load: i | file://:0:0:0:0 | 0 | 0 | false | NoReason | file://:0:0:0:0 | file://:0:0:0:0 | | test.cpp:140:10:140:10 | Store: i | file://:0:0:0:0 | 0 | 1 | false | NoReason | file://:0:0:0:0 | file://:0:0:0:0 | | test.cpp:140:10:140:10 | Store: i | test.cpp:135:16:135:16 | InitializeParameter: x | 0 | false | CompareLT: ... < ... | test.cpp:139:11:139:15 | test.cpp:139:11:139:15 | | test.cpp:140:10:140:10 | Store: i | test.cpp:138:5:138:5 | Phi: i | 1 | false | NoReason | file://:0:0:0:0 | file://:0:0:0:0 | @@ -54,3 +55,8 @@ | test.cpp:167:12:167:12 | Load: x | test.cpp:153:23:153:23 | InitializeParameter: y | 1 | false | CompareEQ: ... == ... | test.cpp:166:9:166:16 | test.cpp:166:9:166:16 | | test.cpp:167:12:167:12 | Load: x | test.cpp:153:23:153:23 | InitializeParameter: y | 1 | true | CompareEQ: ... == ... | test.cpp:166:9:166:16 | test.cpp:166:9:166:16 | | test.cpp:169:12:169:12 | Load: x | test.cpp:153:23:153:23 | InitializeParameter: y | 0 | false | CompareLT: ... < ... | test.cpp:154:6:154:10 | test.cpp:154:6:154:10 | +| test.cpp:177:10:177:10 | Load: i | test.cpp:175:23:175:23 | InitializeParameter: x | 1 | false | CompareLT: ... < ... | test.cpp:176:7:176:11 | test.cpp:176:7:176:11 | +| test.cpp:179:10:179:10 | Load: i | test.cpp:175:23:175:23 | InitializeParameter: x | 0 | true | CompareLT: ... < ... | test.cpp:176:7:176:11 | test.cpp:176:7:176:11 | +| test.cpp:183:10:183:10 | Load: i | test.cpp:175:23:175:23 | InitializeParameter: x | -1 | true | CompareLT: ... < ... | test.cpp:182:9:182:13 | test.cpp:182:9:182:13 | +| test.cpp:185:10:185:10 | Load: i | test.cpp:175:23:175:23 | InitializeParameter: x | 0 | true | CompareLT: ... < ... | test.cpp:176:7:176:11 | test.cpp:176:7:176:11 | +| test.cpp:187:10:187:10 | Store: i | test.cpp:175:23:175:23 | InitializeParameter: x | 0 | false | CompareLT: ... < ... | test.cpp:182:9:182:13 | test.cpp:182:9:182:13 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/rangeanalysis/test.cpp b/cpp/ql/test/library-tests/rangeanalysis/rangeanalysis/test.cpp index 24f95205fcf..bb0f23cea1b 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/rangeanalysis/test.cpp +++ b/cpp/ql/test/library-tests/rangeanalysis/rangeanalysis/test.cpp @@ -170,3 +170,19 @@ int test14(int x, int y) { } } } + +// more interesting bounds with irreducible CFG +int test15(int i, int x) { + if (x < i) { + sink(i); // i >= x + 1 + } else { + sink(i); // i <= x + goto inLoop; + } + for(; i < x; i++) { + sink(i); // i <= x - 1 + inLoop: + sink(i); // i <= x + } + return i; +} diff --git a/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/ir_gvn.expected b/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/ir_gvn.expected index 877cdb36750..484a26bd387 100644 --- a/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/ir_gvn.expected +++ b/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/ir_gvn.expected @@ -446,7 +446,7 @@ test.cpp: # 56| valnum = r5_3 # 56| m5_4(char *) = Store : r5_0, r5_3 # 56| valnum = r5_3 -#-----| Goto -> Block 3 +#-----| Goto (back edge) -> Block 3 # 59| Block 6 # 59| r6_0(glval) = VariableAddress[ptr] : @@ -480,7 +480,7 @@ test.cpp: # 62| valnum = r8_3 # 62| m8_4(unsigned int) = Store : r8_0, r8_3 # 62| valnum = r8_3 -#-----| Goto -> Block 1 +#-----| Goto (back edge) -> Block 1 # 63| Block 9 # 63| v9_0(void) = NoOp : diff --git a/cpp/ql/test/query-tests/Critical/LargeParameter/LargeParameter.expected b/cpp/ql/test/query-tests/Critical/LargeParameter/LargeParameter.expected index 994bf3f86ea..1b5a12ab345 100644 --- a/cpp/ql/test/query-tests/Critical/LargeParameter/LargeParameter.expected +++ b/cpp/ql/test/query-tests/Critical/LargeParameter/LargeParameter.expected @@ -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 | myTemplateClass | -| 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 | myTemplateClass | +| 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 | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/ArithmeticTainted.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/ArithmeticTainted.expected index ceb421b0b08..131283c1c55 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/ArithmeticTainted.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/ArithmeticTainted.expected @@ -1,6 +1,9 @@ | test3.c:15:10:15:10 | x | $@ flows to here and is used in arithmetic, potentially causing an overflow. | test3.c:11:15:11:18 | argv | User-provided value | | test3.c:15:14:15:14 | y | $@ flows to here and is used in arithmetic, potentially causing an overflow. | test3.c:11:15:11:18 | argv | User-provided value | | test3.c:15:18:15:18 | z | $@ flows to here and is used in arithmetic, potentially causing an overflow. | test3.c:11:15:11:18 | argv | User-provided value | +| test5.cpp:17:6:17:18 | call to getTaintedInt | $@ flows to here and is used in arithmetic, potentially causing an overflow. | test5.cpp:9:7:9:9 | buf | User-provided value | +| test5.cpp:19:6:19:6 | y | $@ flows to here and is used in arithmetic, potentially causing an overflow. | test5.cpp:9:7:9:9 | buf | User-provided value | +| test5.cpp:19:6:19:6 | y | $@ flows to here and is used in arithmetic, potentially causing an underflow. | test5.cpp:9:7:9:9 | buf | User-provided value | | test.c:14:15:14:28 | maxConnections | $@ flows to here and is used in arithmetic, potentially causing an overflow. | test.c:11:29:11:32 | argv | User-provided value | | test.c:14:15:14:28 | maxConnections | $@ flows to here and is used in arithmetic, potentially causing an underflow. | test.c:11:29:11:32 | argv | User-provided value | | test.c:44:7:44:10 | len2 | $@ flows to here and is used in arithmetic, potentially causing an underflow. | test.c:41:17:41:20 | argv | User-provided value | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/IntegerOverflowTainted.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/IntegerOverflowTainted.expected index f1df5fb62e6..257d54d448b 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/IntegerOverflowTainted.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/IntegerOverflowTainted.expected @@ -1,3 +1,4 @@ | test3.c:12:31:12:34 | * ... | $@ flows to here and is used in an expression which might overflow negatively. | test3.c:11:15:11:18 | argv | User-provided value | | test3.c:13:16:13:19 | * ... | $@ flows to here and is used in an expression which might overflow negatively. | test3.c:11:15:11:18 | argv | User-provided value | | test4.cpp:13:17:13:20 | access to array | $@ flows to here and is used in an expression which might overflow negatively. | test4.cpp:9:13:9:16 | argv | User-provided value | +| test5.cpp:10:9:10:15 | call to strtoul | $@ flows to here and is used in an expression which might overflow. | test5.cpp:9:7:9:9 | buf | User-provided value | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/test5.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/test5.cpp new file mode 100644 index 00000000000..527c603d1b8 --- /dev/null +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/test5.cpp @@ -0,0 +1,20 @@ + +char *gets(char *s); +unsigned long int strtoul( const char * nptr, char ** endptr, int base); + +int getTaintedInt() +{ + char buf[128]; + + gets(buf); + return strtoul(buf, 0, 10); +} + +void useTaintedInt() +{ + int x, y; + + x = getTaintedInt() * 1024; // BAD: arithmetic on a tainted value + y = getTaintedInt(); + y = y * 1024; // BAD: arithmetic on a tainted value +} diff --git a/csharp/autobuilder/Semmle.Autobuild/DotNetRule.cs b/csharp/autobuilder/Semmle.Autobuild/DotNetRule.cs index f3e95921a44..105e466071b 100644 --- a/csharp/autobuilder/Semmle.Autobuild/DotNetRule.cs +++ b/csharp/autobuilder/Semmle.Autobuild/DotNetRule.cs @@ -112,7 +112,7 @@ namespace Semmle.Autobuild var o = JObject.Parse(File.ReadAllText(path)); version = (string)o["sdk"]["version"]; } - catch + catch // lgtm[cs/catch-of-all-exceptions] { // not a valid global.json file continue; diff --git a/csharp/autobuilder/Semmle.Autobuild/Project.cs b/csharp/autobuilder/Semmle.Autobuild/Project.cs index 5e49815a49b..0080f170c54 100644 --- a/csharp/autobuilder/Semmle.Autobuild/Project.cs +++ b/csharp/autobuilder/Semmle.Autobuild/Project.cs @@ -63,7 +63,8 @@ namespace Semmle.Autobuild ToolsVersion = new Version(toolsVersion); ValidToolsVersion = true; } - catch // Generic catch clause - Version constructor throws about 5 different exceptions. + catch // lgtm[cs/catch-of-all-exceptions] + // Generic catch clause - Version constructor throws about 5 different exceptions. { builder.Log(Severity.Warning, "Project {0} has invalid tools version {1}", path, toolsVersion); } diff --git a/csharp/extractor/Semmle.Util/CanonicalPathCache.cs b/csharp/extractor/Semmle.Util/CanonicalPathCache.cs index 5b5a04a0c48..faa1b0a902f 100644 --- a/csharp/extractor/Semmle.Util/CanonicalPathCache.cs +++ b/csharp/extractor/Semmle.Util/CanonicalPathCache.cs @@ -136,7 +136,7 @@ namespace Semmle.Util entries[0] : Path.Combine(parentPath, name); } - catch (Exception) + catch // lgtm[cs/catch-of-all-exceptions] { // IO error or security error querying directory. return Path.Combine(parentPath, name); diff --git a/csharp/ql/src/API Abuse/FormatUnusedArgument.ql b/csharp/ql/src/API Abuse/FormatUnusedArgument.ql index fa069b4a150..aff671ee876 100644 --- a/csharp/ql/src/API Abuse/FormatUnusedArgument.ql +++ b/csharp/ql/src/API Abuse/FormatUnusedArgument.ql @@ -15,6 +15,7 @@ import semmle.code.csharp.frameworks.Format from FormatCall format, int unused, ValidFormatString src where src = format.getAFormatSource() and - unused = format.getAnUnusedArgument(src) + unused = format.getAnUnusedArgument(src) and + not src.getValue() = "" select format, "The $@ ignores $@.", src, "format string", format.getSuppliedExpr(unused), "this supplied value" diff --git a/csharp/ql/src/AlertSuppression.ql b/csharp/ql/src/AlertSuppression.ql index 34bf3ab92a2..5481fd097c2 100644 --- a/csharp/ql/src/AlertSuppression.ql +++ b/csharp/ql/src/AlertSuppression.ql @@ -53,7 +53,7 @@ class SuppressionScope extends @commentline { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn diff --git a/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql b/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql index bd1bc0090b3..a38845a685d 100644 --- a/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql +++ b/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql @@ -26,9 +26,7 @@ predicate isReadonlyCompatibleDefinition(AssignableDefinition def, Field f) { } predicate canBeReadonly(Field f) { - forex(AssignableDefinition def | defTargetsField(def, f) | - isReadonlyCompatibleDefinition(def, f) - ) + forex(AssignableDefinition def | defTargetsField(def, f) | isReadonlyCompatibleDefinition(def, f)) } from Field f @@ -36,5 +34,5 @@ where canBeReadonly(f) and not f.isConst() and not f.isReadOnly() and - (f.isEffectivelyPrivate() or f.isEffectivelyInternal()) + not f.isEffectivelyPublic() select f, "Field '" + f.getName() + "' can be 'readonly'." diff --git a/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql b/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql index e4112b71b1f..68d222d2bb4 100644 --- a/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql +++ b/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql @@ -18,7 +18,7 @@ where v.getType() instanceof CollectionType and ( v instanceof LocalVariable or - v = any(Field f | f.isEffectivelyPrivate() or f.isEffectivelyInternal()) + v = any(Field f | not f.isEffectivelyPublic()) ) and forex(Access a | a = v.getAnAccess() | a = any(ModifierMethodCall m).getQualifier() or diff --git a/csharp/ql/src/Useless code/DefaultToString.ql b/csharp/ql/src/Useless code/DefaultToString.ql index 0b4b1f4e599..2ffa87723bc 100644 --- a/csharp/ql/src/Useless code/DefaultToString.ql +++ b/csharp/ql/src/Useless code/DefaultToString.ql @@ -54,7 +54,8 @@ predicate alwaysDefaultToString(ValueOrRefType t) { not exists(RefType overriding | overriding.getAMethod() instanceof ToStringMethod and overriding.getABaseType+() = t - ) + ) and + ((t.isAbstract() or t instanceof Interface) implies not t.isEffectivelyPublic()) } newtype TDefaultToStringType = TDefaultToStringType0(ValueOrRefType t) { alwaysDefaultToString(t) } diff --git a/csharp/ql/src/definitions.ql b/csharp/ql/src/definitions.ql index e3b0b15f37a..06358e7654d 100644 --- a/csharp/ql/src/definitions.ql +++ b/csharp/ql/src/definitions.ql @@ -15,7 +15,7 @@ abstract class Use extends @type_mention_parent { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn diff --git a/csharp/ql/src/external/CodeDuplication.qll b/csharp/ql/src/external/CodeDuplication.qll index 143fccedbee..21bac74f826 100644 --- a/csharp/ql/src/external/CodeDuplication.qll +++ b/csharp/ql/src/external/CodeDuplication.qll @@ -6,7 +6,7 @@ private string relativePath(File file) { result = file.getRelativePath().replace * Holds if the `index`-th token of block `copy` is in file `file`, spanning * column `sc` of line `sl` to column `ec` of line `el`. * - * For more information, see [LGTM locations](https://lgtm.com/docs/ql/locations). + * For more information, see [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ pragma[nomagic] predicate tokenLocation(File file, int sl, int sc, int ec, int el, Copy copy, int index) { diff --git a/csharp/ql/src/semmle/code/cil/Declaration.qll b/csharp/ql/src/semmle/code/cil/Declaration.qll index 956b72f126e..f6e8493df44 100644 --- a/csharp/ql/src/semmle/code/cil/Declaration.qll +++ b/csharp/ql/src/semmle/code/cil/Declaration.qll @@ -28,13 +28,13 @@ class Declaration extends DotNet::Declaration, Element, @cil_declaration { final predicate isSourceDeclaration() { this = getSourceDeclaration() } } -private CS::Declaration toCSharpNonTypeParameter(Declaration d) { result.getLabel() = d.getLabel() } +private CS::Declaration toCSharpNonTypeParameter(Declaration d) { result.matchesHandle(d) } private CS::TypeParameter toCSharpTypeParameter(TypeParameter tp) { toCSharpTypeParameterJoin(tp, result.getIndex(), result.getGeneric()) } -pragma[noinline, nomagic] +pragma[nomagic] private predicate toCSharpTypeParameterJoin(TypeParameter tp, int i, CS::UnboundGeneric ug) { exists(TypeContainer tc | tp.getIndex() = i and diff --git a/csharp/ql/src/semmle/code/csharp/Assignable.qll b/csharp/ql/src/semmle/code/csharp/Assignable.qll index 24ccfb7d1f0..7762941434f 100644 --- a/csharp/ql/src/semmle/code/csharp/Assignable.qll +++ b/csharp/ql/src/semmle/code/csharp/Assignable.qll @@ -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() ) } } diff --git a/csharp/ql/src/semmle/code/csharp/File.qll b/csharp/ql/src/semmle/code/csharp/File.qll index 1d22de35548..86656af4124 100644 --- a/csharp/ql/src/semmle/code/csharp/File.qll +++ b/csharp/ql/src/semmle/code/csharp/File.qll @@ -33,7 +33,7 @@ class Container extends @container { /** * Gets a URL representing the location of this container. * - * For more information see https://lgtm.com/help/ql/locations#providing-urls. + * For more information see [Providing URLs](https://help.semmle.com/QL/learn-ql/ql/locations.html#providing-urls). */ string getURL() { none() } diff --git a/csharp/ql/src/semmle/code/csharp/Location.qll b/csharp/ql/src/semmle/code/csharp/Location.qll index b90d71fafb1..220a92bfa83 100644 --- a/csharp/ql/src/semmle/code/csharp/Location.qll +++ b/csharp/ql/src/semmle/code/csharp/Location.qll @@ -27,7 +27,7 @@ class Location extends @location { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn diff --git a/csharp/ql/src/semmle/code/csharp/Member.qll b/csharp/ql/src/semmle/code/csharp/Member.qll index 7721058da49..4aaf55cde5b 100644 --- a/csharp/ql/src/semmle/code/csharp/Member.qll +++ b/csharp/ql/src/semmle/code/csharp/Member.qll @@ -107,6 +107,12 @@ class Modifiable extends Declaration, @modifiable { this.isInternal() or this.getDeclaringType+().isInternal() } + + /** + * Holds if this declaration is effectively `public`, because it + * and all enclosing types are `public`. + */ + predicate isEffectivelyPublic() { not isEffectivelyPrivate() and not isEffectivelyInternal() } } /** A declaration that is a member of a type. */ diff --git a/csharp/ql/src/semmle/code/csharp/Property.qll b/csharp/ql/src/semmle/code/csharp/Property.qll index 602b44d49b9..6038c7c684d 100644 --- a/csharp/ql/src/semmle/code/csharp/Property.qll +++ b/csharp/ql/src/semmle/code/csharp/Property.qll @@ -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)) ) } diff --git a/csharp/ql/src/semmle/code/csharp/controlflow/ControlFlowGraph.qll b/csharp/ql/src/semmle/code/csharp/controlflow/ControlFlowGraph.qll index efb99dc6de8..7141a1a84a9 100644 --- a/csharp/ql/src/semmle/code/csharp/controlflow/ControlFlowGraph.qll +++ b/csharp/ql/src/semmle/code/csharp/controlflow/ControlFlowGraph.qll @@ -33,14 +33,10 @@ module ControlFlow { Location getLocation() { result = getElement().getLocation() } /** Holds if this control flow node has conditional successors. */ - predicate isCondition() { - exists(getASuccessorByType(any(ConditionalSuccessor e))) - } + predicate isCondition() { exists(getASuccessorByType(any(ConditionalSuccessor e))) } /** Gets the basic block that this control flow node belongs to. */ - BasicBlock getBasicBlock() { - result.getANode() = this - } + BasicBlock getBasicBlock() { result.getANode() = this } /** * Holds if this node dominates `that` node. @@ -65,7 +61,8 @@ module ControlFlow { * This predicate is *reflexive*, so for example `if (s == null)` dominates * itself. */ - pragma [inline] // potentially very large predicate, so must be inlined + // potentially very large predicate, so must be inlined + pragma[inline] predicate dominates(Node that) { strictlyDominates(that) or @@ -94,15 +91,14 @@ module ControlFlow { * (all paths from the entry point of `M` to `return s.Length;` must go * through the null check). */ - pragma [inline] // potentially very large predicate, so must be inlined + // potentially very large predicate, so must be inlined + pragma[inline] predicate strictlyDominates(Node that) { this.getBasicBlock().strictlyDominates(that.getBasicBlock()) or exists(BasicBlock bb, int i, int j | - bb.getNode(i) = this - and - bb.getNode(j) = that - and + bb.getNode(i) = this and + bb.getNode(j) = that and i < j ) } @@ -136,7 +132,8 @@ module ControlFlow { * This predicate is *reflexive*, so for example `Console.WriteLine("M");` * post-dominates itself. */ - pragma [inline] // potentially very large predicate, so must be inlined + // potentially very large predicate, so must be inlined + pragma[inline] predicate postDominates(Node that) { strictlyPostDominates(that) or @@ -170,31 +167,26 @@ module ControlFlow { * paths to the exit point of `M` from `return s.Length;` must go through * the `WriteLine` call). */ - pragma [inline] // potentially very large predicate, so must be inlined + // potentially very large predicate, so must be inlined + pragma[inline] predicate strictlyPostDominates(Node that) { this.getBasicBlock().strictlyPostDominates(that.getBasicBlock()) or exists(BasicBlock bb, int i, int j | - bb.getNode(i) = this - and - bb.getNode(j) = that - and + bb.getNode(i) = this and + bb.getNode(j) = that and i > j ) } /** Gets a successor node of a given type, if any. */ - Node getASuccessorByType(SuccessorType t) { - result = getASuccessorByType(this, t) - } + Node getASuccessorByType(SuccessorType t) { result = getASuccessorByType(this, t) } /** Gets an immediate successor, if any. */ Node getASuccessor() { result = getASuccessorByType(_) } /** Gets an immediate predecessor node of a given flow type, if any. */ - Node getAPredecessorByType(SuccessorType t) { - result.getASuccessorByType(t) = this - } + Node getAPredecessorByType(SuccessorType t) { result.getASuccessorByType(t) = this } /** Gets an immediate predecessor, if any. */ Node getAPredecessor() { result = getAPredecessorByType(_) } @@ -255,8 +247,7 @@ module ControlFlow { * The node on line 2 is an immediate `null` successor of the node * `x` on line 1. */ - deprecated - Node getANullSuccessor() { + deprecated Node getANullSuccessor() { result = getASuccessorByType(any(NullnessSuccessor t | t.isNull())) } @@ -275,15 +266,12 @@ module ControlFlow { * The node `x?.M()`, representing the call to `M`, is a non-`null` successor * of the node `x`. */ - deprecated - Node getANonNullSuccessor() { + deprecated Node getANonNullSuccessor() { result = getASuccessorByType(any(NullnessSuccessor t | not t.isNull())) } /** Holds if this node has more than one predecessor. */ - predicate isJoin() { - strictcount(getAPredecessor()) > 1 - } + predicate isJoin() { strictcount(getAPredecessor()) > 1 } } /** Provides different types of control flow nodes. */ @@ -293,17 +281,11 @@ module ControlFlow { /** Gets the callable that this entry applies to. */ Callable getCallable() { this = TEntryNode(result) } - override BasicBlocks::EntryBlock getBasicBlock() { - result = Node.super.getBasicBlock() - } + override BasicBlocks::EntryBlock getBasicBlock() { result = Node.super.getBasicBlock() } - override Location getLocation() { - result = getCallable().getLocation() - } + override Location getLocation() { result = getCallable().getLocation() } - override string toString() { - result = "enter " + getCallable().toString() - } + override string toString() { result = "enter " + getCallable().toString() } } /** A node for a callable exit point. */ @@ -311,17 +293,11 @@ module ControlFlow { /** Gets the callable that this exit applies to. */ Callable getCallable() { this = TExitNode(result) } - override BasicBlocks::ExitBlock getBasicBlock() { - result = Node.super.getBasicBlock() - } + override BasicBlocks::ExitBlock getBasicBlock() { result = Node.super.getBasicBlock() } - override Location getLocation() { - result = getCallable().getLocation() - } + override Location getLocation() { result = getCallable().getLocation() } - override string toString() { - result = "exit " + getCallable().toString() - } + override string toString() { result = "exit " + getCallable().toString() } } /** @@ -333,24 +309,17 @@ module ControlFlow { */ class ElementNode extends Node, TElementNode { private Splits splits; + private ControlFlowElement cfe; - ElementNode() { - this = TElementNode(cfe, splits) - } + ElementNode() { this = TElementNode(cfe, splits) } - override ControlFlowElement getElement() { - result = cfe - } + override ControlFlowElement getElement() { result = cfe } override string toString() { - exists(string s | - s = splits.toString() | - if s = "" then - result = cfe.toString() - else - result = "[" + s + "] " + cfe.toString() - ) + result = "[" + this.getSplitsString() + "] " + cfe.toString() + or + not exists(this.getSplitsString()) and result = cfe.toString() } /** Gets a comma-separated list of strings for each split in this node, if any. */ @@ -360,14 +329,15 @@ module ControlFlow { } /** Gets a split for this control flow node, if any. */ - Split getASplit() { - result = splits.getASplit() - } + Split getASplit() { result = splits.getASplit() } } class Split = SplitImpl; + class FinallySplit = FinallySplitting::FinallySplitImpl; + class ExceptionHandlerSplit = ExceptionHandlerSplitting::ExceptionHandlerSplitImpl; + class BooleanSplit = BooleanSplitting::BooleanSplitImpl; } @@ -376,9 +346,13 @@ module ControlFlow { /** Provides different types of basic blocks. */ module BasicBlocks { class EntryBlock = BBs::EntryBasicBlock; + class ExitBlock = BBs::ExitBasicBlock; + class JoinBlock = BBs::JoinBlock; + class JoinBlockPredecessor = BBs::JoinBlockPredecessor; + class ConditionBlock = BBs::ConditionBlock; } @@ -482,18 +456,12 @@ module ControlFlow { override boolean getValue() { this = TNullnessSuccessor(result) } - override string toString() { - if this.isNull() then - result = "null" - else - result = "non-null" - } + override string toString() { if this.isNull() then result = "null" else result = "non-null" } override predicate matchesCompletion(Completion c) { - if this.isNull() then - c.(NullnessCompletion).isNull() - else - c = any(NullnessCompletion nc | not nc.isNull()) + if this.isNull() + then c.(NullnessCompletion).isNull() + else c = any(NullnessCompletion nc | not nc.isNull()) } } @@ -536,17 +504,13 @@ module ControlFlow { override boolean getValue() { this = TMatchingSuccessor(result) } override string toString() { - if this.isMatch() then - result = "match" - else - result = "no-match" + if this.isMatch() then result = "match" else result = "no-match" } override predicate matchesCompletion(Completion c) { - if this.isMatch() then - c.(MatchingCompletion).isMatch() - else - c = any(MatchingCompletion mc | not mc.isMatch()) + if this.isMatch() + then c.(MatchingCompletion).isMatch() + else c = any(MatchingCompletion mc | not mc.isMatch()) } } @@ -589,17 +553,13 @@ module ControlFlow { override boolean getValue() { this = TEmptinessSuccessor(result) } override string toString() { - if this.isEmpty() then - result = "empty" - else - result = "non-empty" + if this.isEmpty() then result = "empty" else result = "non-empty" } override predicate matchesCompletion(Completion c) { - if this.isEmpty() then - c.(EmptinessCompletion).isEmpty() - else - c = any(EmptinessCompletion ec | not ec.isEmpty()) + if this.isEmpty() + then c.(EmptinessCompletion).isEmpty() + else c = any(EmptinessCompletion ec | not ec.isEmpty()) } } @@ -621,9 +581,7 @@ module ControlFlow { class ReturnSuccessor extends SuccessorType, TReturnSuccessor { override string toString() { result = "return" } - override predicate matchesCompletion(Completion c) { - c instanceof ReturnCompletion - } + override predicate matchesCompletion(Completion c) { c instanceof ReturnCompletion } } /** @@ -676,9 +634,7 @@ module ControlFlow { class ContinueSuccessor extends SuccessorType, TContinueSuccessor { override string toString() { result = "continue" } - override predicate matchesCompletion(Completion c) { - c instanceof ContinueCompletion - } + override predicate matchesCompletion(Completion c) { c instanceof ContinueCompletion } } /** @@ -760,9 +716,7 @@ module ControlFlow { class GotoDefaultSuccessor extends SuccessorType, TGotoDefaultSuccessor { override string toString() { result = "goto default" } - override predicate matchesCompletion(Completion c) { - c instanceof GotoDefaultCompletion - } + override predicate matchesCompletion(Completion c) { c instanceof GotoDefaultCompletion } } /** @@ -812,9 +766,7 @@ module ControlFlow { class ExitSuccessor extends SuccessorType, TExitSuccessor { override string toString() { result = "exit" } - override predicate matchesCompletion(Completion c) { - c instanceof ExitCompletion - } + override predicate matchesCompletion(Completion c) { c instanceof ExitCompletion } } } private import SuccessorTypes @@ -874,16 +826,12 @@ module ControlFlow { * standard left-to-right evaluation. The actual evaluation order is * determined by the predicate `getChildElement()`. */ - private abstract class StandardElement extends ControlFlowElement { + abstract private class StandardElement extends ControlFlowElement { /** Gets the first child element of this element. */ - ControlFlowElement getFirstChildElement() { - result = this.getChildElement(0) - } + ControlFlowElement getFirstChildElement() { result = this.getChildElement(0) } /** Holds if this element has no children. */ - predicate isLeafElement() { - not exists(this.getFirstChildElement()) - } + predicate isLeafElement() { not exists(this.getFirstChildElement()) } /** Gets the last child element of this element. */ ControlFlowElement getLastChildElement() { @@ -921,31 +869,30 @@ module ControlFlow { not this instanceof UsingStmt and result = this.getChild(i) or - this = any(GeneralCatchClause gcc | - i = 0 and result = gcc.getBlock() - ) + this = any(GeneralCatchClause gcc | i = 0 and result = gcc.getBlock()) or this = any(FixedStmt fs | - result = fs.getVariableDeclExpr(i) - or - result = fs.getBody() and - i = max(int j | exists(fs.getVariableDeclExpr(j))) + 1 - ) + result = fs.getVariableDeclExpr(i) + or + result = fs.getBody() and + i = max(int j | exists(fs.getVariableDeclExpr(j))) + 1 + ) or this = any(UsingStmt us | - if exists(us.getExpr()) then ( - result = us.getExpr() and - i = 0 - or - result = us.getBody() and - i = 1 - ) else ( - result = us.getVariableDeclExpr(i) - or - result = us.getBody() and - i = max(int j | exists(us.getVariableDeclExpr(j))) + 1 + if exists(us.getExpr()) + then ( + result = us.getExpr() and + i = 0 + or + result = us.getBody() and + i = 1 + ) else ( + result = us.getVariableDeclExpr(i) + or + result = us.getBody() and + i = max(int j | exists(us.getVariableDeclExpr(j))) + 1 + ) ) - ) } } @@ -955,16 +902,12 @@ module ControlFlow { * tracking. */ private class AssignOperationWithExpandedAssignment extends AssignOperation { - AssignOperationWithExpandedAssignment() { - this.hasExpandedAssignment() - } + AssignOperationWithExpandedAssignment() { this.hasExpandedAssignment() } } /** A conditionally qualified expression. */ private class ConditionalQualifiableExpr extends QualifiableExpr { - ConditionalQualifiableExpr() { - this.isConditional() - } + ConditionalQualifiableExpr() { this.isConditional() } } private class StandardExpr extends StandardElement, Expr { @@ -998,9 +941,7 @@ module ControlFlow { not this instanceof @unknown_expr and result = this.getChild(i) or - this = any(ExtensionMethodCall emc | - result = emc.getArgument(i) - ) + this = any(ExtensionMethodCall emc | result = emc.getArgument(i)) or result = getQualifiableExprChild(this, i) or @@ -1022,10 +963,9 @@ module ControlFlow { i >= 0 and not qe instanceof ExtensionMethodCall and not qe.isConditional() and - if exists(Expr q | q = qe.getQualifier() | not q instanceof TypeAccess) then - result = qe.getChild(i - 1) - else - result = qe.getChild(i) + if exists(Expr q | q = qe.getQualifier() | not q instanceof TypeAccess) + then result = qe.getChild(i - 1) + else result = qe.getChild(i) } private ControlFlowElement getAssignmentChild(Assignment a, int i) { @@ -1050,9 +990,8 @@ module ControlFlow { } private ControlFlowElement getUnknownExprChild(@unknown_expr e, int i) { - exists(int c | - result = e.(Expr).getChild(c) | - c = rank[i+1](int j | exists(e.(Expr).getChild(j))) + exists(int c | result = e.(Expr).getChild(c) | + c = rank[i + 1](int j | exists(e.(Expr).getChild(j))) ) } @@ -1071,51 +1010,62 @@ module ControlFlow { or // Post-order: first element of first child (or self, if no children) cfe = any(PostOrderElement poe | - result = first(poe.getFirstChild()) - or - not exists(poe.getFirstChild()) and - result = poe - ) + result = first(poe.getFirstChild()) + or + not exists(poe.getFirstChild()) and + result = poe + ) or cfe = any(AssignOperationWithExpandedAssignment a | - result = first(a.getExpandedAssignment()) - ) + result = first(a.getExpandedAssignment()) + ) or - cfe = any(ConditionalQualifiableExpr cqe | - result = first(cqe.getChildExpr(-1)) - ) + cfe = any(ConditionalQualifiableExpr cqe | result = first(cqe.getChildExpr(-1))) or cfe = any(ArrayCreation ac | - if ac.isImplicitlySized() then - // No length argument: element itself - result = ac - else - // First element of first length argument - result = first(ac.getLengthArgument(0)) - ) + if ac.isImplicitlySized() + then + // No length argument: element itself + result = ac + else + // First element of first length argument + result = first(ac.getLengthArgument(0)) + ) or cfe = any(ForeachStmt fs | - // Unlike most other statements, `foreach` statements are not modelled in - // pre-order, because we use the `foreach` node itself to represent the - // emptiness test that determines whether to execute the loop body - result = first(fs.getIterableExpr()) - ) + // Unlike most other statements, `foreach` statements are not modelled in + // pre-order, because we use the `foreach` node itself to represent the + // emptiness test that determines whether to execute the loop body + result = first(fs.getIterableExpr()) + ) } private class PreOrderElement extends ControlFlowElement { PreOrderElement() { - this instanceof StandardStmt or - this instanceof IfStmt or - this instanceof SwitchStmt or - this instanceof ConstCase or - this instanceof TypeCase or - this instanceof TryStmt or - this instanceof SpecificCatchClause or - (this instanceof LoopStmt and not this instanceof ForeachStmt) or - this instanceof LogicalNotExpr or - this instanceof LogicalAndExpr or - this instanceof LogicalOrExpr or - this instanceof NullCoalescingExpr or + this instanceof StandardStmt + or + this instanceof IfStmt + or + this instanceof SwitchStmt + or + this instanceof ConstCase + or + this instanceof TypeCase + or + this instanceof TryStmt + or + this instanceof SpecificCatchClause + or + this instanceof LoopStmt and not this instanceof ForeachStmt + or + this instanceof LogicalNotExpr + or + this instanceof LogicalAndExpr + or + this instanceof LogicalOrExpr + or + this instanceof NullCoalescingExpr + or this instanceof ConditionalExpr } } @@ -1146,12 +1096,12 @@ module ControlFlow { ControlFlowElement last(ControlFlowElement cfe, Completion c) { // Pre-order: last element of last child (or self, if no children) cfe = any(StandardStmt ss | - result = last(ss.getLastChildElement(), c) - or - ss.isLeafElement() and - result = ss and - c.isValidFor(result) - ) + result = last(ss.getLastChildElement(), c) + or + ss.isLeafElement() and + result = ss and + c.isValidFor(result) + ) or // Post-order: element itself cfe instanceof StandardExpr and @@ -1164,192 +1114,192 @@ module ControlFlow { not c instanceof NormalCompletion or cfe = any(LogicalNotExpr lne | - // Operand exits with a Boolean completion - exists(BooleanCompletion operandCompletion | - result = lastLogicalNotExprOperand(lne, operandCompletion) | - c = any(BooleanCompletion bc | - bc.getOuterValue() = operandCompletion.getOuterValue().booleanNot() and - bc.getInnerValue() = operandCompletion.getInnerValue() + // Operand exits with a Boolean completion + exists(BooleanCompletion operandCompletion | + result = lastLogicalNotExprOperand(lne, operandCompletion) + | + c = any(BooleanCompletion bc | + bc.getOuterValue() = operandCompletion.getOuterValue().booleanNot() and + bc.getInnerValue() = operandCompletion.getInnerValue() + ) ) + or + // Operand exits with a non-Boolean completion + result = lastLogicalNotExprOperand(lne, c) and + not c instanceof BooleanCompletion ) - or - // Operand exits with a non-Boolean completion - result = lastLogicalNotExprOperand(lne, c) and - not c instanceof BooleanCompletion - ) or cfe = any(LogicalAndExpr lae | - // Left operand exits with a false completion - result = lastLogicalAndExprLeftOperand(lae, c) and - c instanceof FalseCompletion - or - // Left operand exits abnormally - result = lastLogicalAndExprLeftOperand(lae, c) and - not c instanceof NormalCompletion - or - // Right operand exits with any completion - result = lastLogicalAndExprRightOperand(lae, c) - ) + // Left operand exits with a false completion + result = lastLogicalAndExprLeftOperand(lae, c) and + c instanceof FalseCompletion + or + // Left operand exits abnormally + result = lastLogicalAndExprLeftOperand(lae, c) and + not c instanceof NormalCompletion + or + // Right operand exits with any completion + result = lastLogicalAndExprRightOperand(lae, c) + ) or cfe = any(LogicalOrExpr loe | - // Left operand exits with a true completion - result = lastLogicalOrExprLeftOperand(loe, c) and - c instanceof TrueCompletion - or - // Left operand exits abnormally - result = lastLogicalOrExprLeftOperand(loe, c) and - not c instanceof NormalCompletion - or - // Right operand exits with any completion - result = lastLogicalOrExprRightOperand(loe, c) - ) + // Left operand exits with a true completion + result = lastLogicalOrExprLeftOperand(loe, c) and + c instanceof TrueCompletion + or + // Left operand exits abnormally + result = lastLogicalOrExprLeftOperand(loe, c) and + not c instanceof NormalCompletion + or + // Right operand exits with any completion + result = lastLogicalOrExprRightOperand(loe, c) + ) or cfe = any(NullCoalescingExpr nce | - // Left operand exits with any non-`null` completion - result = lastNullCoalescingExprLeftOperand(nce, c) and - not c.(NullnessCompletion).isNull() - or - // Right operand exits with any completion - result = lastNullCoalescingExprRightOperand(nce, c) - ) + // Left operand exits with any non-`null` completion + result = lastNullCoalescingExprLeftOperand(nce, c) and + not c.(NullnessCompletion).isNull() + or + // Right operand exits with any completion + result = lastNullCoalescingExprRightOperand(nce, c) + ) or cfe = any(ConditionalExpr ce | - // Condition exits abnormally - result = lastConditionalExprCondition(ce, c) and - not c instanceof NormalCompletion - or - // Then branch exits with any completion - result = lastConditionalExprThen(ce, c) - or - // Else branch exits with any completion - result = lastConditionalExprElse(ce, c) - ) + // Condition exits abnormally + result = lastConditionalExprCondition(ce, c) and + not c instanceof NormalCompletion + or + // Then branch exits with any completion + result = lastConditionalExprThen(ce, c) + or + // Else branch exits with any completion + result = lastConditionalExprElse(ce, c) + ) or result = lastAssignOperationWithExpandedAssignmentExpandedAssignment(cfe, c) or cfe = any(ConditionalQualifiableExpr cqe | - // Post-order: element itself - result = cqe and - c.isValidFor(cqe) - or - // Qualifier exits with a `null` completion - result = lastConditionalQualifiableExprChildExpr(cqe, -1, c) and - c.(NullnessCompletion).isNull() - ) + // Post-order: element itself + result = cqe and + c.isValidFor(cqe) + or + // Qualifier exits with a `null` completion + result = lastConditionalQualifiableExprChildExpr(cqe, -1, c) and + c.(NullnessCompletion).isNull() + ) or cfe = any(ThrowExpr te | - // Post-order: element itself - te.getThrownExceptionType() = c.(ThrowCompletion).getExceptionClass() and - result = te - or - // Expression being thrown exits abnormally - result = lastThrowExprExpr(te, c) and - not c instanceof NormalCompletion - ) + // Post-order: element itself + te.getThrownExceptionType() = c.(ThrowCompletion).getExceptionClass() and + result = te + or + // Expression being thrown exits abnormally + result = lastThrowExprExpr(te, c) and + not c instanceof NormalCompletion + ) or cfe = any(ObjectCreation oc | - // Post-order: element itself (when no initializer) - result = oc and - not oc.hasInitializer() and - c.isValidFor(result) - or - // Last element of initializer - result = lastObjectCreationInitializer(oc, c) - ) + // Post-order: element itself (when no initializer) + result = oc and + not oc.hasInitializer() and + c.isValidFor(result) + or + // Last element of initializer + result = lastObjectCreationInitializer(oc, c) + ) or cfe = any(ArrayCreation ac | - // Post-order: element itself (when no initializer) - result = ac and - not ac.hasInitializer() and - c.isValidFor(result) - or - // Last element of initializer - result = lastArrayCreationInitializer(ac, c) - ) + // Post-order: element itself (when no initializer) + result = ac and + not ac.hasInitializer() and + c.isValidFor(result) + or + // Last element of initializer + result = lastArrayCreationInitializer(ac, c) + ) or cfe = any(IfStmt is | - // Condition exits with a false completion and there is no `else` branch - result = lastIfStmtCondition(is, c) and - c instanceof FalseCompletion and - not exists(is.getElse()) - or - // Condition exits abnormally - result = lastIfStmtCondition(is, c) and - not c instanceof NormalCompletion - or - // Then branch exits with any completion - result = lastIfStmtThen(is, c) - or - // Else branch exits with any completion - result = lastIfStmtElse(is, c) - ) + // Condition exits with a false completion and there is no `else` branch + result = lastIfStmtCondition(is, c) and + c instanceof FalseCompletion and + not exists(is.getElse()) + or + // Condition exits abnormally + result = lastIfStmtCondition(is, c) and + not c instanceof NormalCompletion + or + // Then branch exits with any completion + result = lastIfStmtThen(is, c) + or + // Else branch exits with any completion + result = lastIfStmtElse(is, c) + ) or cfe = any(SwitchStmt ss | - // Switch expression exits normally and there are no cases - result = lastSwitchStmtCondition(ss, c) and - not exists(ss.getACase()) and - c instanceof NormalCompletion - or - // Switch expression exits abnormally - result = lastSwitchStmtCondition(ss, c) and - not c instanceof NormalCompletion - or - // A statement exits with a `break` completion - result = lastSwitchStmtStmt(ss, _, any(BreakCompletion bc)) and - c instanceof BreakNormalCompletion - or - // A statement exits abnormally - result = lastSwitchStmtStmt(ss, _, c) and - not c instanceof BreakCompletion and - not c instanceof NormalCompletion and - not c instanceof GotoDefaultCompletion and - not c instanceof GotoCaseCompletion - or - // Last case exits with a non-match - exists(int last | - last = max(int i | exists(ss.getCase(i))) | - result = lastConstCaseNoMatch(ss.getCase(last), c) or - result = lastTypeCaseNoMatch(ss.getCase(last), c) + // Switch expression exits normally and there are no cases + result = lastSwitchStmtCondition(ss, c) and + not exists(ss.getACase()) and + c instanceof NormalCompletion + or + // Switch expression exits abnormally + result = lastSwitchStmtCondition(ss, c) and + not c instanceof NormalCompletion + or + // A statement exits with a `break` completion + result = lastSwitchStmtStmt(ss, _, any(BreakCompletion bc)) and + c instanceof BreakNormalCompletion + or + // A statement exits abnormally + result = lastSwitchStmtStmt(ss, _, c) and + not c instanceof BreakCompletion and + not c instanceof NormalCompletion and + not c instanceof GotoDefaultCompletion and + not c instanceof GotoCaseCompletion + or + // Last case exits with a non-match + exists(int last | last = max(int i | exists(ss.getCase(i))) | + result = lastConstCaseNoMatch(ss.getCase(last), c) or + result = lastTypeCaseNoMatch(ss.getCase(last), c) + ) + or + // Last statement exits with any non-break completion + exists(int last | last = max(int i | exists(ss.getStmt(i))) | + result = lastSwitchStmtStmt(ss, last, c) and + not c instanceof BreakCompletion + ) ) - or - // Last statement exits with any non-break completion - exists(int last | - last = max(int i | exists(ss.getStmt(i))) | - result = lastSwitchStmtStmt(ss, last, c) and - not c instanceof BreakCompletion - ) - ) or cfe = any(ConstCase cc | - // Case expression exits with a non-match - result = lastConstCaseNoMatch(cc, c) - or - // Case expression exits abnormally - result = lastConstCaseExpr(cc, c) and - not c instanceof NormalCompletion - ) + // Case expression exits with a non-match + result = lastConstCaseNoMatch(cc, c) + or + // Case expression exits abnormally + result = lastConstCaseExpr(cc, c) and + not c instanceof NormalCompletion + ) or cfe = any(TypeCase tc | - // Type test exits with a non-match - result = lastTypeCaseNoMatch(tc, c) - ) + // Type test exits with a non-match + result = lastTypeCaseNoMatch(tc, c) + ) or cfe = any(CaseStmt cs | - // Condition exists with a `false` completion - result = lastCaseCondition(cs, c) and - c instanceof FalseCompletion - or - // Condition exists abnormally - result = lastCaseCondition(cs, c) and - not c instanceof NormalCompletion - or - // Case statement exits with any completion - result = lastCaseStmt(cs, c) - ) + // Condition exists with a `false` completion + result = lastCaseCondition(cs, c) and + c instanceof FalseCompletion + or + // Condition exists abnormally + result = lastCaseCondition(cs, c) and + not c instanceof NormalCompletion + or + // Case statement exits with any completion + result = lastCaseStmt(cs, c) + ) or exists(LoopStmt ls | cfe = ls and - not ls instanceof ForeachStmt | + not ls instanceof ForeachStmt + | // Condition exits with a false completion result = lastLoopStmtCondition(ls, c) and c instanceof FalseCompletion @@ -1358,9 +1308,9 @@ module ControlFlow { result = lastLoopStmtCondition(ls, c) and not c instanceof NormalCompletion or - exists(Completion bodyCompletion | - result = lastLoopStmtBody(ls, bodyCompletion) | - if bodyCompletion instanceof BreakCompletion then + exists(Completion bodyCompletion | result = lastLoopStmtBody(ls, bodyCompletion) | + if bodyCompletion instanceof BreakCompletion + then // Body exits with a break completion; the loop exits normally // Note: we use a `BreakNormalCompletion` rather than a `NormalCompletion` // in order to be able to get the correct break label in the control flow @@ -1375,124 +1325,125 @@ module ControlFlow { ) or cfe = any(ForeachStmt fs | - // Iterator expression exits abnormally - result = lastForeachStmtIterableExpr(fs, c) and - not c instanceof NormalCompletion - or - // Emptiness test exits with no more elements - result = fs and - c.(EmptinessCompletion).isEmpty() - or - exists(Completion bodyCompletion | - result = lastLoopStmtBody(fs, bodyCompletion) | - if bodyCompletion instanceof BreakCompletion then - // Body exits with a break completion; the loop exits normally - // Note: we use a `BreakNormalCompletion` rather than a `NormalCompletion` - // in order to be able to get the correct break label in the control flow - // graph from the `result` node to the node after the loop. - c instanceof BreakNormalCompletion - else ( - // Body exits abnormally - c = bodyCompletion and - not c instanceof NormalCompletion and - not c instanceof ContinueCompletion + // Iterator expression exits abnormally + result = lastForeachStmtIterableExpr(fs, c) and + not c instanceof NormalCompletion + or + // Emptiness test exits with no more elements + result = fs and + c.(EmptinessCompletion).isEmpty() + or + exists(Completion bodyCompletion | result = lastLoopStmtBody(fs, bodyCompletion) | + if bodyCompletion instanceof BreakCompletion + then + // Body exits with a break completion; the loop exits normally + // Note: we use a `BreakNormalCompletion` rather than a `NormalCompletion` + // in order to be able to get the correct break label in the control flow + // graph from the `result` node to the node after the loop. + c instanceof BreakNormalCompletion + else ( + // Body exits abnormally + c = bodyCompletion and + not c instanceof NormalCompletion and + not c instanceof ContinueCompletion + ) ) ) - ) or cfe = any(TryStmt ts | - // If the `finally` block completes normally, it resumes any non-normal - // completion that was current before the `finally` block was entered - exists(Completion finallyCompletion | - result = lastTryStmtFinally(ts, finallyCompletion) and - finallyCompletion instanceof NormalCompletion + // If the `finally` block completes normally, it resumes any non-normal + // completion that was current before the `finally` block was entered + exists(Completion finallyCompletion | + result = lastTryStmtFinally(ts, finallyCompletion) and + finallyCompletion instanceof NormalCompletion | - exists(getBlockOrCatchFinallyPred(ts, any(NormalCompletion nc))) and - c = finallyCompletion - or - exists(getBlockOrCatchFinallyPred(ts, c)) and - not c instanceof NormalCompletion - ) - or - // If the `finally` block completes abnormally, take the completion of - // the `finally` block itself - result = lastTryStmtFinally(ts, c) and - not c instanceof NormalCompletion - or - result = getBlockOrCatchFinallyPred(ts, c) and - ( - // If there is no `finally` block, last elements are from the body, from - // the blocks of one of the `catch` clauses, or from the last `catch` clause - not ts.hasFinally() - or - // Exit completions ignore the `finally` block - c instanceof ExitCompletion - ) - ) - or - cfe = any(SpecificCatchClause scc | - // Last element of `catch` block - result = lastCatchClauseBlock(cfe, c) - or - ( - if scc.isLast() then ( - // Last `catch` clause inherits throw completions from the `try` block, - // when the clause does not match - throwMayBeUncaught(scc, c) and - ( - // Incompatible exception type: clause itself - result = scc - or - // Incompatible filter - result = lastSpecificCatchClauseFilterClause(scc, _) - ) - ) else ( - // Incompatible exception type: clause itself - result = scc and - c = any(MatchingCompletion mc | not mc.isMatch()) + exists(getBlockOrCatchFinallyPred(ts, any(NormalCompletion nc))) and + c = finallyCompletion or - // Incompatible filter - result = lastSpecificCatchClauseFilterClause(scc, c) and - c instanceof FalseCompletion + exists(getBlockOrCatchFinallyPred(ts, c)) and + not c instanceof NormalCompletion + ) + or + // If the `finally` block completes abnormally, take the completion of + // the `finally` block itself + result = lastTryStmtFinally(ts, c) and + not c instanceof NormalCompletion + or + result = getBlockOrCatchFinallyPred(ts, c) and + ( + // If there is no `finally` block, last elements are from the body, from + // the blocks of one of the `catch` clauses, or from the last `catch` clause + not ts.hasFinally() + or + // Exit completions ignore the `finally` block + c instanceof ExitCompletion + ) + ) + or + cfe = any(SpecificCatchClause scc | + // Last element of `catch` block + result = lastCatchClauseBlock(cfe, c) + or + ( + if scc.isLast() + then ( + // Last `catch` clause inherits throw completions from the `try` block, + // when the clause does not match + throwMayBeUncaught(scc, c) and + ( + // Incompatible exception type: clause itself + result = scc + or + // Incompatible filter + result = lastSpecificCatchClauseFilterClause(scc, _) + ) + ) else ( + // Incompatible exception type: clause itself + result = scc and + c = any(MatchingCompletion mc | not mc.isMatch()) + or + // Incompatible filter + result = lastSpecificCatchClauseFilterClause(scc, c) and + c instanceof FalseCompletion + ) ) ) - ) or cfe = any(JumpStmt js | - // Post-order: element itself - result = js and - ( - js instanceof BreakStmt and c instanceof BreakCompletion + // Post-order: element itself + result = js and + ( + js instanceof BreakStmt and c instanceof BreakCompletion + or + js instanceof ContinueStmt and c instanceof ContinueCompletion + or + js = c.(GotoLabelCompletion).getGotoStmt() + or + js = c.(GotoCaseCompletion).getGotoStmt() + or + js instanceof GotoDefaultStmt and c instanceof GotoDefaultCompletion + or + js.(ThrowStmt).getThrownExceptionType() = c.(ThrowCompletion).getExceptionClass() + or + js instanceof ReturnStmt and c instanceof ReturnCompletion + or + // `yield break` behaves like a return statement + js instanceof YieldBreakStmt and c instanceof ReturnCompletion + or + // `yield return` behaves like a normal statement + js instanceof YieldReturnStmt and c.isValidFor(js) + ) or - js instanceof ContinueStmt and c instanceof ContinueCompletion - or - js = c.(GotoLabelCompletion).getGotoStmt() - or - js = c.(GotoCaseCompletion).getGotoStmt() - or - js instanceof GotoDefaultStmt and c instanceof GotoDefaultCompletion - or - js.(ThrowStmt).getThrownExceptionType() = c.(ThrowCompletion).getExceptionClass() - or - js instanceof ReturnStmt and c instanceof ReturnCompletion - or - // `yield break` behaves like a return statement - js instanceof YieldBreakStmt and c instanceof ReturnCompletion - or - // `yield return` behaves like a normal statement - js instanceof YieldReturnStmt and c.isValidFor(js) + // Child exits abnormally + result = lastJumpStmtChild(cfe, c) and + not c instanceof NormalCompletion ) - or - // Child exits abnormally - result = lastJumpStmtChild(cfe, c) and - not c instanceof NormalCompletion - ) or // Propagate completion from a call to a non-terminating callable cfe = any(NonReturningCall nrc | - result = nrc and - c = nrc.getACompletion() - ) + result = nrc and + c = nrc.getACompletion() + ) } private ControlFlowElement lastConstCaseNoMatch(ConstCase cc, MatchingCompletion c) { @@ -1506,213 +1457,227 @@ module ControlFlow { c.isValidFor(result) } - pragma [nomagic] - private ControlFlowElement lastStandardElementGetNonLastChildElement(StandardElement se, int i, Completion c) { + pragma[nomagic] + private ControlFlowElement lastStandardElementGetNonLastChildElement( + StandardElement se, int i, Completion c + ) { result = last(se.getNonLastChildElement(i), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastThrowExprExpr(ThrowExpr te, Completion c) { result = last(te.getExpr(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastLogicalNotExprOperand(LogicalNotExpr lne, Completion c) { result = last(lne.getOperand(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastLogicalAndExprLeftOperand(LogicalAndExpr lae, Completion c) { result = last(lae.getLeftOperand(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastLogicalAndExprRightOperand(LogicalAndExpr lae, Completion c) { result = last(lae.getRightOperand(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastLogicalOrExprLeftOperand(LogicalOrExpr loe, Completion c) { result = last(loe.getLeftOperand(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastLogicalOrExprRightOperand(LogicalOrExpr loe, Completion c) { result = last(loe.getRightOperand(), c) } - pragma [nomagic] - private ControlFlowElement lastNullCoalescingExprLeftOperand(NullCoalescingExpr nce, Completion c) { + pragma[nomagic] + private ControlFlowElement lastNullCoalescingExprLeftOperand( + NullCoalescingExpr nce, Completion c + ) { result = last(nce.getLeftOperand(), c) } - pragma [nomagic] - private ControlFlowElement lastNullCoalescingExprRightOperand(NullCoalescingExpr nce, Completion c) { + pragma[nomagic] + private ControlFlowElement lastNullCoalescingExprRightOperand( + NullCoalescingExpr nce, Completion c + ) { result = last(nce.getRightOperand(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastConditionalExprCondition(ConditionalExpr ce, Completion c) { result = last(ce.getCondition(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastConditionalExprThen(ConditionalExpr ce, Completion c) { result = last(ce.getThen(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastConditionalExprElse(ConditionalExpr ce, Completion c) { result = last(ce.getElse(), c) } - pragma [nomagic] - private ControlFlowElement lastAssignOperationWithExpandedAssignmentExpandedAssignment(AssignOperationWithExpandedAssignment a, Completion c) { + pragma[nomagic] + private ControlFlowElement lastAssignOperationWithExpandedAssignmentExpandedAssignment( + AssignOperationWithExpandedAssignment a, Completion c + ) { result = last(a.getExpandedAssignment(), c) } - pragma [nomagic] - private ControlFlowElement lastConditionalQualifiableExprChildExpr(ConditionalQualifiableExpr cqe, int i, Completion c) { + pragma[nomagic] + private ControlFlowElement lastConditionalQualifiableExprChildExpr( + ConditionalQualifiableExpr cqe, int i, Completion c + ) { result = last(cqe.getChildExpr(i), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastObjectCreationArgument(ObjectCreation oc, int i, Completion c) { result = last(oc.getArgument(i), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastObjectCreationInitializer(ObjectCreation oc, Completion c) { result = last(oc.getInitializer(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastArrayCreationInitializer(ArrayCreation ac, Completion c) { result = last(ac.getInitializer(), c) } - pragma [nomagic] - private ControlFlowElement lastArrayCreationLengthArgument(ArrayCreation ac, int i, Completion c) { + pragma[nomagic] + private ControlFlowElement lastArrayCreationLengthArgument( + ArrayCreation ac, int i, Completion c + ) { not ac.isImplicitlySized() and result = last(ac.getLengthArgument(i), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastIfStmtCondition(IfStmt is, Completion c) { result = last(is.getCondition(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastIfStmtThen(IfStmt is, Completion c) { result = last(is.getThen(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastIfStmtElse(IfStmt is, Completion c) { result = last(is.getElse(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastSwitchStmtCondition(SwitchStmt ss, Completion c) { result = last(ss.getCondition(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastSwitchStmtStmt(SwitchStmt ss, int i, Completion c) { result = last(ss.getStmt(i), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastSwitchStmtCaseStmt(SwitchStmt ss, int i, Completion c) { result = last(ss.getStmt(i).(ConstCase).getStmt(), c) or result = last(ss.getStmt(i).(TypeCase).getStmt(), c) or result = last(ss.getStmt(i).(DefaultCase), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastConstCaseExpr(ConstCase cc, Completion c) { result = last(cc.getExpr(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastCaseStmt(CaseStmt cs, Completion c) { result = last(cs.(TypeCase).getStmt(), c) or result = last(cs.(ConstCase).getStmt(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastCaseCondition(CaseStmt cs, Completion c) { result = last(cs.getCondition(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastTypeCaseVariableDeclExpr(TypeCase tc, Completion c) { result = last(tc.getVariableDeclExpr(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastLoopStmtCondition(LoopStmt ls, Completion c) { result = last(ls.getCondition(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastLoopStmtBody(LoopStmt ls, Completion c) { result = last(ls.getBody(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastForeachStmtIterableExpr(ForeachStmt fs, Completion c) { result = last(fs.getIterableExpr(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastForeachStmtVariableDecl(ForeachStmt fs, Completion c) { result = last(fs.getVariableDeclExpr(), c) or result = last(fs.getVariableDeclTuple(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastJumpStmtChild(JumpStmt js, Completion c) { result = last(js.getChild(0), c) } - pragma [nomagic] + pragma[nomagic] ControlFlowElement lastTryStmtFinally(TryStmt ts, Completion c) { result = last(ts.getFinally(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastTryStmtBlock(TryStmt ts, Completion c) { result = last(ts.getBlock(), c) } - pragma [nomagic] + pragma[nomagic] ControlFlowElement lastTryStmtCatchClause(TryStmt ts, int i, Completion c) { result = last(ts.getCatchClause(i), c) } - pragma [nomagic] - private ControlFlowElement lastSpecificCatchClauseFilterClause(SpecificCatchClause scc, Completion c) { + pragma[nomagic] + private ControlFlowElement lastSpecificCatchClauseFilterClause( + SpecificCatchClause scc, Completion c + ) { result = last(scc.getFilterClause(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastCatchClauseBlock(CatchClause cc, Completion c) { result = last(cc.getBlock(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastStandardExprLastChildElement(StandardExpr se, Completion c) { result = last(se.getLastChildElement(), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastForStmtUpdate(ForStmt fs, int i, Completion c) { result = last(fs.getUpdate(i), c) } - pragma [nomagic] + pragma[nomagic] private ControlFlowElement lastForStmtInitializer(ForStmt fs, int i, Completion c) { result = last(fs.getInitializer(i), c) } @@ -1722,7 +1687,7 @@ module ControlFlow { * that may finish with completion `c`, such that control may be transferred * to the `finally` block (if it exists). */ - pragma [nomagic] + pragma[nomagic] private ControlFlowElement getBlockOrCatchFinallyPred(TryStmt ts, Completion c) { result = lastTryStmtBlock(ts, c) and ( @@ -1739,8 +1704,7 @@ module ControlFlow { result = lastCatchClauseBlock(ts.getACatchClause(), c) or // Last element of last `catch` clause continues to the `finally` block - exists(int last | - ts.getCatchClause(last).isLast() | + exists(int last | ts.getCatchClause(last).isLast() | result = lastTryStmtCatchClause(ts, last, c) ) } @@ -1751,14 +1715,13 @@ module ControlFlow { * The catch clause `last` is the last catch clause in the `try` statement * that it belongs to. */ - pragma [nomagic] + pragma[nomagic] private predicate throwMayBeUncaught(SpecificCatchClause last, ThrowCompletion c) { exists(TryStmt ts | ts = last.getTryStmt() and exists(lastTryStmtBlock(ts, c)) and not ts.getACatchClause() instanceof GeneralCatchClause and - forall(SpecificCatchClause scc | - scc = ts.getACatchClause() | + forall(SpecificCatchClause scc | scc = ts.getACatchClause() | scc.hasFilterClause() or not c.getExceptionClass().getABaseType*() = scc.getCaughtExceptionType() @@ -1786,8 +1749,7 @@ module ControlFlow { ExitingCall() { this.getTarget() instanceof ExitingCallable or - exists(AssertMethod m | - m = this.(FailingAssertion).getAssertMethod() | + exists(AssertMethod m | m = this.(FailingAssertion).getAssertMethod() | not exists(m.getExceptionClass()) ) } @@ -1801,8 +1763,7 @@ module ControlFlow { ThrowingCall() { c = this.getTarget().(ThrowingCallable).getACallCompletion() or - exists(AssertMethod m | - m = this.(FailingAssertion).getAssertMethod() | + exists(AssertMethod m | m = this.(FailingAssertion).getAssertMethod() | c.getExceptionClass() = m.getExceptionClass() ) } @@ -1810,35 +1771,31 @@ module ControlFlow { override ThrowCompletion getACompletion() { result = c } } - private abstract class NonReturningCallable extends Callable { + abstract private class NonReturningCallable extends Callable { NonReturningCallable() { not exists(ReturnStmt ret | ret.getEnclosingCallable() = this) and not hasAccessorAutoImplementation(this, _) and - not exists(Virtualizable v | - v.isOverridableOrImplementable() | + not exists(Virtualizable v | v.isOverridableOrImplementable() | v = this or v = this.(Accessor).getDeclaration() ) } } - private abstract class ExitingCallable extends NonReturningCallable { } + abstract private class ExitingCallable extends NonReturningCallable { } private class DirectlyExitingCallable extends ExitingCallable { DirectlyExitingCallable() { this = any(Method m | - m.hasQualifiedName("System.Environment", "Exit") or - m.hasQualifiedName("System.Windows.Forms.Application", "Exit") - ) + m.hasQualifiedName("System.Environment", "Exit") or + m.hasQualifiedName("System.Windows.Forms.Application", "Exit") + ) } } private class IndirectlyExitingCallable extends ExitingCallable { IndirectlyExitingCallable() { - forex(ControlFlowElement body | - body = this.getABody() | - body = getAnExitingElement() - ) + forex(ControlFlowElement body | body = this.getABody() | body = getAnExitingElement()) } } @@ -1862,16 +1819,11 @@ module ControlFlow { private class ThrowingCallable extends NonReturningCallable { ThrowingCallable() { - forex(ControlFlowElement body | - body = this.getABody() | - body = getAThrowingElement(_) - ) + forex(ControlFlowElement body | body = this.getABody() | body = getAThrowingElement(_)) } /** Gets a valid completion for a call to this throwing callable. */ - ThrowCompletion getACallCompletion() { - this.getABody() = getAThrowingElement(result) - } + ThrowCompletion getACallCompletion() { this.getABody() = getAThrowingElement(result) } } private predicate directlyThrows(ThrowElement te, ThrowCompletion c) { @@ -1899,7 +1851,8 @@ module ControlFlow { exists(IfStmt ifStmt, ThrowCompletion c1, ThrowCompletion c2 | result = ifStmt and ifStmt.getThen() = getAThrowingStmt(c1) and - ifStmt.getElse() = getAThrowingStmt(c2) | + ifStmt.getElse() = getAThrowingStmt(c2) + | c = c1 or c = c2 @@ -1908,8 +1861,7 @@ module ControlFlow { /** Holds if `throw` element `te` indicates a stub implementation. */ private predicate isStub(ThrowElement te) { - exists(Expr e | - e = te.getExpr() | + exists(Expr e | e = te.getExpr() | e instanceof NullLiteral or e.getType() instanceof SystemNotImplementedExceptionClass ) @@ -1921,13 +1873,13 @@ module ControlFlow { * Gets a control flow successor for control flow element `cfe`, given that * `cfe` finishes with completion `c`. */ - pragma [nomagic] + pragma[nomagic] ControlFlowElement succ(ControlFlowElement cfe, Completion c) { // Pre-order: flow from element itself to first element of first child cfe = any(StandardStmt ss | - result = first(ss.getFirstChildElement()) and - c instanceof SimpleCompletion - ) + result = first(ss.getFirstChildElement()) and + c instanceof SimpleCompletion + ) or // Post-order: flow from last element of last child to element itself cfe = lastStandardExprLastChildElement(result, c) and @@ -1941,10 +1893,10 @@ module ControlFlow { ) or cfe = any(LogicalNotExpr lne | - // Pre-order: flow from expression itself to first element of operand - result = first(lne.getOperand()) and - c instanceof SimpleCompletion - ) + // Pre-order: flow from expression itself to first element of operand + result = first(lne.getOperand()) and + c instanceof SimpleCompletion + ) or exists(LogicalAndExpr lae | // Pre-order: flow from expression itself to first element of left operand @@ -2003,7 +1955,7 @@ module ControlFlow { cfe = lastConditionalQualifiableExprChildExpr(parent, i, c) and c instanceof NormalCompletion and not c.(NullnessCompletion).isNull() - | + | // Post-order: flow from last element of last child to element itself i = max(int j | exists(parent.getChildExpr(j))) and result = parent @@ -2018,15 +1970,13 @@ module ControlFlow { or exists(ObjectCreation oc | // Flow from last element of argument `i` to first element of argument `i+1` - exists(int i | - cfe = lastObjectCreationArgument(oc, i, c) | + exists(int i | cfe = lastObjectCreationArgument(oc, i, c) | result = first(oc.getArgument(i + 1)) and c instanceof NormalCompletion ) or // Flow from last element of last argument to self - exists(int last | - last = max(int i | exists(oc.getArgument(i))) | + exists(int last | last = max(int i | exists(oc.getArgument(i))) | cfe = lastObjectCreationArgument(oc, last, c) and result = oc and c instanceof NormalCompletion @@ -2046,7 +1996,8 @@ module ControlFlow { or exists(int i | cfe = lastArrayCreationLengthArgument(ac, i, c) and - c instanceof SimpleCompletion | + c instanceof SimpleCompletion + | // Flow from last length argument to self i = max(int j | exists(ac.getLengthArgument(j))) and result = ac @@ -2062,8 +2013,7 @@ module ControlFlow { result = first(is.getCondition()) and c instanceof SimpleCompletion or - cfe = lastIfStmtCondition(is, c) - and + cfe = lastIfStmtCondition(is, c) and ( // Flow from last element of condition to first element of then branch c instanceof TrueCompletion and result = first(is.getThen()) @@ -2085,31 +2035,27 @@ module ControlFlow { result = first(ss.getStmt(0)) or // Flow from last element of non-`case` statement `i` to first element of statement `i+1` - exists(int i | - cfe = lastSwitchStmtStmt(ss, i, c) | + exists(int i | cfe = lastSwitchStmtStmt(ss, i, c) | not ss.getStmt(i) instanceof CaseStmt and c instanceof NormalCompletion and result = first(ss.getStmt(i + 1)) ) or // Flow from last element of `case` statement `i` to first element of statement `i+1` - exists(int i | - cfe = lastSwitchStmtCaseStmt(ss, i, c) | + exists(int i | cfe = lastSwitchStmtCaseStmt(ss, i, c) | c instanceof NormalCompletion and result = first(ss.getStmt(i + 1)) ) or // Flow from last element of case expression to next case - exists(ConstCase cc, int i | - cc = ss.getCase(i) | + exists(ConstCase cc, int i | cc = ss.getCase(i) | cfe = lastConstCaseExpr(cc, c) and c = any(MatchingCompletion mc | not mc.isMatch()) and result = first(ss.getCase(i + 1)) ) or // Flow from last element of condition to next case - exists(CaseStmt tc, int i | - tc = ss.getCase(i) | + exists(CaseStmt tc, int i | tc = ss.getCase(i) | cfe = lastCaseCondition(tc, c) and c instanceof FalseCompletion and result = first(ss.getCase(i + 1)) @@ -2117,7 +2063,8 @@ module ControlFlow { or exists(GotoCompletion gc | cfe = lastSwitchStmtStmt(ss, _, gc) and - gc = c | + gc = c + | // Flow from last element of a statement with a `goto default` completion // to first element `default` statement gc instanceof GotoDefaultCompletion and @@ -2140,8 +2087,10 @@ module ControlFlow { c instanceof SimpleCompletion or cfe = lastConstCaseExpr(cc, c) and - c.(MatchingCompletion).isMatch() and ( - if exists(cc.getCondition()) then + c.(MatchingCompletion).isMatch() and + ( + if exists(cc.getCondition()) + then // Flow from the last element of case expression to the condition result = first(cc.getCondition()) else @@ -2164,26 +2113,30 @@ module ControlFlow { cfe = tc.getTypeAccess() and c.isValidFor(cfe) and c = any(MatchingCompletion mc | - if mc.isMatch() then - if exists(tc.getVariableDeclExpr()) then - // Flow from type test to first element of variable declaration - result = first(tc.getVariableDeclExpr()) - else if exists(tc.getCondition()) then - // Flow from type test to first element of condition - result = first(tc.getCondition()) + if mc.isMatch() + then + if exists(tc.getVariableDeclExpr()) + then + // Flow from type test to first element of variable declaration + result = first(tc.getVariableDeclExpr()) + else + if exists(tc.getCondition()) + then + // Flow from type test to first element of condition + result = first(tc.getCondition()) + else + // Flow from type test to first element of statement + result = first(tc.getStmt()) else - // Flow from type test to first element of statement - result = first(tc.getStmt()) - else - // Flow from type test to first element of next case - exists(SwitchStmt ss, int i | - tc = ss.getCase(i) | - result = first(ss.getCase(i + 1)) - ) - ) + // Flow from type test to first element of next case + exists(SwitchStmt ss, int i | tc = ss.getCase(i) | + result = first(ss.getCase(i + 1)) + ) + ) or cfe = lastTypeCaseVariableDeclExpr(tc, c) and - if exists(tc.getCondition()) then + if exists(tc.getCondition()) + then // Flow from variable declaration to first element of condition result = first(tc.getCondition()) else @@ -2210,16 +2163,16 @@ module ControlFlow { ) or cfe = any(WhileStmt ws | - // Pre-order: flow from statement itself to first element of condition - result = first(ws.getCondition()) and - c instanceof SimpleCompletion - ) + // Pre-order: flow from statement itself to first element of condition + result = first(ws.getCondition()) and + c instanceof SimpleCompletion + ) or cfe = any(DoStmt ds | - // Pre-order: flow from statement itself to first element of body - result = first(ds.getBody()) and - c instanceof SimpleCompletion - ) + // Pre-order: flow from statement itself to first element of body + result = first(ds.getBody()) and + c instanceof SimpleCompletion + ) or exists(ForStmt fs | // Pre-order: flow from statement itself to first element of first initializer/ @@ -2227,7 +2180,8 @@ module ControlFlow { exists(ControlFlowElement next | cfe = fs and result = first(next) and - c instanceof SimpleCompletion | + c instanceof SimpleCompletion + | next = fs.getInitializer(0) or not exists(fs.getInitializer(0)) and @@ -2235,15 +2189,13 @@ module ControlFlow { ) or // Flow from last element of initializer `i` to first element of initializer `i+1` - exists(int i | - cfe = lastForStmtInitializer(fs, i, c) | + exists(int i | cfe = lastForStmtInitializer(fs, i, c) | c instanceof NormalCompletion and result = first(fs.getInitializer(i + 1)) ) or // Flow from last element of last initializer to first element of condition/loop body - exists(int last | - last = max(int i | exists(fs.getInitializer(i))) | + exists(int last | last = max(int i | exists(fs.getInitializer(i))) | cfe = lastForStmtInitializer(fs, last, c) and c instanceof NormalCompletion and result = first(getForStmtConditionOrBody(fs)) @@ -2259,10 +2211,9 @@ module ControlFlow { cfe = lastLoopStmtBody(fs, c) and c.continuesLoop() and result = first(next) and - if exists(fs.getUpdate(0)) then - next = fs.getUpdate(0) - else - next = getForStmtConditionOrBody(fs) + if exists(fs.getUpdate(0)) + then next = fs.getUpdate(0) + else next = getForStmtConditionOrBody(fs) ) or // Flow from last element of update to first element of next update/condition/loop body @@ -2270,10 +2221,9 @@ module ControlFlow { cfe = lastForStmtUpdate(fs, i, c) and c instanceof NormalCompletion and result = first(next) and - if exists(fs.getUpdate(i + 1)) then - next = fs.getUpdate(i + 1) - else - next = getForStmtConditionOrBody(fs) + if exists(fs.getUpdate(i + 1)) + then next = fs.getUpdate(i + 1) + else next = getForStmtConditionOrBody(fs) ) ) or @@ -2317,8 +2267,7 @@ module ControlFlow { exists(getAThrownException(ts, cfe, c)) and result = first(ts.getCatchClause(0)) or - exists(SpecificCatchClause scc, int i | - scc = ts.getCatchClause(i) | + exists(SpecificCatchClause scc, int i | scc = ts.getCatchClause(i) | cfe = scc and scc = lastTryStmtCatchClause(ts, i, c) and ( @@ -2355,36 +2304,29 @@ module ControlFlow { cfe = lastTryStmtBlock(ts, c) and result = first(ts.getFinally()) and not c instanceof ExitCompletion and - ( - c instanceof ThrowCompletion - implies - not exists(ts.getACatchClause()) - ) + (c instanceof ThrowCompletion implies not exists(ts.getACatchClause())) ) or exists(SpecificCatchClause scc | // Flow from catch clause to variable declaration/filter clause/block cfe = scc and c.(MatchingCompletion).isMatch() and - exists(ControlFlowElement next | - result = first(next) | - if exists(scc.getVariableDeclExpr()) then - next = scc.getVariableDeclExpr() - else if exists(scc.getFilterClause()) then - next = scc.getFilterClause() + exists(ControlFlowElement next | result = first(next) | + if exists(scc.getVariableDeclExpr()) + then next = scc.getVariableDeclExpr() else - next = scc.getBlock() + if exists(scc.getFilterClause()) + then next = scc.getFilterClause() + else next = scc.getBlock() ) or // Flow from variable declaration to filter clause/block cfe = last(scc.getVariableDeclExpr(), c) and c instanceof SimpleCompletion and - exists(ControlFlowElement next | - result = first(next) | - if exists(scc.getFilterClause()) then - next = scc.getFilterClause() - else - next = scc.getBlock() + exists(ControlFlowElement next | result = first(next) | + if exists(scc.getFilterClause()) + then next = scc.getFilterClause() + else next = scc.getBlock() ) or // Flow from filter to block @@ -2399,20 +2341,20 @@ module ControlFlow { or // Flow from constructor initializer to first element of constructor body cfe = any(ConstructorInitializer ci | - c instanceof SimpleCompletion and - result = first(ci.getConstructor().getBody()) - ) + c instanceof SimpleCompletion and + result = first(ci.getConstructor().getBody()) + ) or // Flow from element with `goto` completion to first element of relevant // target c = any(GotoLabelCompletion glc | - cfe = last(_, glc) and - // Special case: when a `goto` happens inside a `try` statement with a - // `finally` block, flow does not go directly to the target, but instead - // to the `finally` block (and from there possibly to the target) - not cfe = getBlockOrCatchFinallyPred(any(TryStmt ts | ts.hasFinally()), _) and - result = first(glc.getGotoStmt().getTarget()) - ) + cfe = last(_, glc) and + // Special case: when a `goto` happens inside a `try` statement with a + // `finally` block, flow does not go directly to the target, but instead + // to the `finally` block (and from there possibly to the target) + not cfe = getBlockOrCatchFinallyPred(any(TryStmt ts | ts.hasFinally()), _) and + result = first(glc.getGotoStmt().getTarget()) + ) } /** @@ -2440,10 +2382,9 @@ module ControlFlow { */ ControlFlowElement succEntry(@top_level_exprorstmt_parent p) { p = any(Callable c | - if exists(c.(Constructor).getInitializer()) then - result = first(c.(Constructor).getInitializer()) - else - result = first(c.getBody()) + if exists(c.(Constructor).getInitializer()) + then result = first(c.(Constructor).getInitializer()) + else result = first(c.getBody()) ) or expr_parent_top_level_adjusted(any(Expr e | result = first(e)), _, p) and @@ -2482,7 +2423,8 @@ module ControlFlow { or exists(ControlFlowElement pred, int i | cfe = succ(pred, _) and - i = count(ControlFlowElement succ, Completion c | succ = succ(pred, c)) | + i = count(ControlFlowElement succ, Completion c | succ = succ(pred, c)) + | i > 1 or i = 1 and @@ -2502,9 +2444,7 @@ module ControlFlow { succ = pred.getASuccessor() } - private predicate entryBB(PreBasicBlock bb) { - bb = succEntry(_) - } + private predicate entryBB(PreBasicBlock bb) { bb = succEntry(_) } private predicate bbIDominates(PreBasicBlock dom, PreBasicBlock bb) = idominance(entryBB/1, succBB/2)(_, dom, bb) @@ -2518,37 +2458,21 @@ module ControlFlow { PreBasicBlock getASuccessor() { result = this.getASuccessorByType(_) } - PreBasicBlock getAPredecessor() { - result.getASuccessor() = this - } + PreBasicBlock getAPredecessor() { result.getASuccessor() = this } - ControlFlowElement getElement(int pos) { - bbIndex(this, result, pos) - } + ControlFlowElement getElement(int pos) { bbIndex(this, result, pos) } - ControlFlowElement getAnElement() { - result = this.getElement(_) - } + ControlFlowElement getAnElement() { result = this.getElement(_) } - ControlFlowElement getFirstElement() { - result = this - } + ControlFlowElement getFirstElement() { result = this } - ControlFlowElement getLastElement() { - result = this.getElement(length() - 1) - } + ControlFlowElement getLastElement() { result = this.getElement(length() - 1) } - int length() { - result = strictcount(getAnElement()) - } + int length() { result = strictcount(getAnElement()) } - predicate immediatelyDominates(PreBasicBlock bb) { - bbIDominates(this, bb) - } + predicate immediatelyDominates(PreBasicBlock bb) { bbIDominates(this, bb) } - predicate strictlyDominates(PreBasicBlock bb) { - this.immediatelyDominates+(bb) - } + predicate strictlyDominates(PreBasicBlock bb) { this.immediatelyDominates+(bb) } predicate dominates(PreBasicBlock bb) { bb = this @@ -2577,15 +2501,13 @@ module ControlFlow { private predicate immediatelyControls(PreBasicBlock succ, ConditionalCompletion c) { succ = succ(this.getLastElement(), c) and - forall(PreBasicBlock pred | - pred = succ.getAPredecessor() and pred != this | + forall(PreBasicBlock pred | pred = succ.getAPredecessor() and pred != this | succ.dominates(pred) ) } predicate controls(PreBasicBlock controlled, ConditionalSuccessor s) { - exists(PreBasicBlock succ, ConditionalCompletion c | - immediatelyControls(succ, c) | + exists(PreBasicBlock succ, ConditionalCompletion c | immediatelyControls(succ, c) | succ.dominates(controlled) and s.matchesCompletion(c) ) @@ -2620,18 +2542,13 @@ module ControlFlow { or this = any(TrivialProperty tp | not tp.isOverridableOrImplementable()) ) and - forall(AssignableDefinition def | - def.getTarget() = this | + forall(AssignableDefinition def | def.getTarget() = this | c = def.getEnclosingCallable() or def.getEnclosingCallable() instanceof Constructor ) and - exists(AssignableAccess aa | - aa.getTarget() = this | - c = aa.getEnclosingCallable() - ) and - forall(QualifiableExpr qe | - qe.(AssignableAccess).getTarget() = this | + exists(AssignableAccess aa | aa.getTarget() = this | c = aa.getEnclosingCallable()) and + forall(QualifiableExpr qe | qe.(AssignableAccess).getTarget() = this | qe.targetIsThisInstance() ) } @@ -2642,18 +2559,15 @@ module ControlFlow { class Definition extends TPreSsaDef { string toString() { - exists(AssignableDefinition def | - this = TExplicitPreSsaDef(_, _, def, _) | + exists(AssignableDefinition def | this = TExplicitPreSsaDef(_, _, def, _) | result = def.toString() ) or - exists(SimpleAssignable a | - this = TImplicitEntryPreSsaDef(_, _, a) | + exists(SimpleAssignable a | this = TImplicitEntryPreSsaDef(_, _, a) | result = "implicit(" + a + ")" ) or - exists(SimpleAssignable a | - this = TPhiPreSsaDef(_, a) | + exists(SimpleAssignable a | this = TPhiPreSsaDef(_, a) | result = "phi(" + a.toString() + ")" ) } @@ -2669,27 +2583,19 @@ module ControlFlow { AssignableRead getARead() { firstReadSameVar(this, result) or - exists(AssignableRead read | - firstReadSameVar(this, read) | + exists(AssignableRead read | firstReadSameVar(this, read) | adjacentReadPairSameVar+(read, result) ) } Location getLocation() { - exists(AssignableDefinition def | - this = TExplicitPreSsaDef(_, _, def, _) | + exists(AssignableDefinition def | this = TExplicitPreSsaDef(_, _, def, _) | result = def.getLocation() ) or - exists(Callable c | - this = TImplicitEntryPreSsaDef(c, _, _) | - result = c.getLocation() - ) + exists(Callable c | this = TImplicitEntryPreSsaDef(c, _, _) | result = c.getLocation()) or - exists(PreBasicBlock bb | - this = TPhiPreSsaDef(bb, _) | - result = bb.getLocation() - ) + exists(PreBasicBlock bb | this = TPhiPreSsaDef(bb, _) | result = bb.getLocation()) } PreBasicBlock getBasicBlock() { @@ -2700,17 +2606,14 @@ module ControlFlow { this = TPhiPreSsaDef(result, _) } - Callable getCallable() { - result = this.getBasicBlock().getEnclosingCallable() - } + Callable getCallable() { result = this.getBasicBlock().getEnclosingCallable() } - AssignableDefinition getDefinition() { - this = TExplicitPreSsaDef(_, _, result, _) - } + AssignableDefinition getDefinition() { this = TExplicitPreSsaDef(_, _, result, _) } Definition getAPhiInput() { exists(PreBasicBlock bb, PreBasicBlock phiPred, SimpleAssignable a | - this = TPhiPreSsaDef(bb, a) | + this = TPhiPreSsaDef(bb, a) + | bb.getAPredecessor() = phiPred and ssaDefReachesEndOfBlock(phiPred, result, a) ) @@ -2723,20 +2626,20 @@ module ControlFlow { bb = succEntry(c) } - private predicate assignableDefAt(PreBasicBlocks::PreBasicBlock bb, int i, AssignableDefinition def, SimpleAssignable a) { + private predicate assignableDefAt( + PreBasicBlocks::PreBasicBlock bb, int i, AssignableDefinition def, SimpleAssignable a + ) { bb.getElement(i) = def.getExpr() and a = def.getTarget() and // In cases like `(x, x) = (0, 1)`, we discard the first (dead) definition of `x` - not exists(TupleAssignmentDefinition first, TupleAssignmentDefinition second | - first = def | + not exists(TupleAssignmentDefinition first, TupleAssignmentDefinition second | first = def | second.getAssignment() = first.getAssignment() and second.getEvaluationOrder() > first.getEvaluationOrder() and second.getTarget() = a ) or def.(ImplicitParameterDefinition).getParameter() = a and - exists(Callable c | - a = c.getAParameter() | + exists(Callable c | a = c.getAParameter() | bb = succEntry(c) and i = -1 ) @@ -2760,17 +2663,15 @@ module ControlFlow { } private newtype RefKind = - Read() - or + Read() or Write(boolean certain) { certain = true or certain = false } private predicate ref(PreBasicBlock bb, int i, SimpleAssignable a, RefKind k) { (readAt(bb, i, _, a) or outRefExitRead(bb, i, a)) and k = Read() or - exists(AssignableDefinition def, boolean certain | - assignableDefAt(bb, i, def, a) | - if def.getTargetAccess().isRefArgument() then certain = false else certain = true and + exists(AssignableDefinition def, boolean certain | assignableDefAt(bb, i, def, a) | + (if def.getTargetAccess().isRefArgument() then certain = false else certain = true) and k = Write(certain) ) } @@ -2787,11 +2688,11 @@ module ControlFlow { private int firstReadOrCertainWrite(PreBasicBlock bb, SimpleAssignable a) { result = min(int r, RefKind k | - r = refRank(bb, _, a, k) and - k != Write(false) + r = refRank(bb, _, a, k) and + k != Write(false) | - r - ) + r + ) } predicate liveAtEntry(PreBasicBlock bb, SimpleAssignable a) { @@ -2805,10 +2706,11 @@ module ControlFlow { liveAtEntry(bb.getASuccessor(), a) } - predicate assignableDefAtLive(PreBasicBlocks::PreBasicBlock bb, int i, AssignableDefinition def, SimpleAssignable a) { + predicate assignableDefAtLive( + PreBasicBlocks::PreBasicBlock bb, int i, AssignableDefinition def, SimpleAssignable a + ) { assignableDefAt(bb, i, def, a) and - exists(int rnk | - rnk = refRank(bb, i, a, Write(_)) | + exists(int rnk | rnk = refRank(bb, i, a, Write(_)) | rnk + 1 = refRank(bb, _, a, Read()) or rnk = maxRefRank(bb, a) and @@ -2824,7 +2726,9 @@ module ControlFlow { def = TPhiPreSsaDef(bb, a) and i = -1 } - private newtype SsaRefKind = SsaRead() or SsaDef() + private newtype SsaRefKind = + SsaRead() or + SsaDef() private predicate ssaRef(PreBasicBlock bb, int i, SimpleAssignable a, SsaRefKind k) { readAt(bb, i, _, a) and @@ -2855,10 +2759,7 @@ module ControlFlow { } private predicate reachesEndOf(Definition def, SimpleAssignable a, PreBasicBlock bb) { - exists(int last | - last = maxSsaRefRank(bb, a) | - defReachesRank(bb, def, a, last) - ) + exists(int last | last = maxSsaRefRank(bb, a) | defReachesRank(bb, def, a, last)) or exists(PreBasicBlock mid | reachesEndOf(def, a, mid) and @@ -2871,7 +2772,7 @@ module ControlFlow { exists(ssaRefRank(bb, _, a, _)) } - pragma [nomagic] + pragma[nomagic] private predicate blockPrecedesVar(SimpleAssignable a, PreBasicBlock bb) { varOccursInBlock(a, bb.getASuccessor*()) } @@ -2885,10 +2786,9 @@ module ControlFlow { blockPrecedesVar(a, bb2) } - pragma [nomagic] + pragma[nomagic] private predicate varBlockReachesRec(SimpleAssignable a, PreBasicBlock bb1, PreBasicBlock bb2) { - exists(PreBasicBlock mid | - varBlockReaches(a, bb1, mid) | + exists(PreBasicBlock mid | varBlockReaches(a, bb1, mid) | bb2 = mid.getASuccessor() and not varOccursInBlock(a, mid) ) @@ -2899,7 +2799,9 @@ module ControlFlow { varOccursInBlock(a, bb2) } - private predicate adjacentVarRefs(SimpleAssignable a, PreBasicBlock bb1, int i1, PreBasicBlock bb2, int i2) { + private predicate adjacentVarRefs( + SimpleAssignable a, PreBasicBlock bb1, int i1, PreBasicBlock bb2, int i2 + ) { exists(int rankix | bb1 = bb2 and rankix = ssaRefRank(bb1, i1, a, _) and @@ -2928,16 +2830,16 @@ module ControlFlow { } pragma[noinline] - private predicate ssaDefReachesEndOfBlockRec(PreBasicBlock bb, Definition def, SimpleAssignable a) { - exists(PreBasicBlock idom | - ssaDefReachesEndOfBlock(idom, def, a) | + private predicate ssaDefReachesEndOfBlockRec( + PreBasicBlock bb, Definition def, SimpleAssignable a + ) { + exists(PreBasicBlock idom | ssaDefReachesEndOfBlock(idom, def, a) | idom.immediatelyDominates(bb) ) } predicate ssaDefReachesEndOfBlock(PreBasicBlock bb, Definition def, SimpleAssignable a) { - exists(int last | - last = maxSsaRefRank(bb, a) | + exists(int last | last = maxSsaRefRank(bb, a) | defReachesRank(bb, def, a, last) and liveAtExit(bb, a) ) @@ -2970,43 +2872,7 @@ module ControlFlow { SplitInternal getASplit() { result.getKind() = this } /** Holds if some split of this kind applies to control flow element `cfe`. */ - predicate appliesTo(ControlFlowElement cfe) { - this.getASplit().appliesTo(cfe) - } - - private predicate appliesToSucc(ControlFlowElement pred, ControlFlowElement succ, Completion c) { - succ = succ(pred, c) and - exists(SplitInternal s | - s = this.getASplit() | - s.appliesTo(pred) and - s.hasSuccessor(pred, succ, c) - or - s.hasEntry(pred, succ, c) - ) - } - - /** - * Holds if some control flow path (but not all paths) to `cfe` leads to - * a split of this kind. - */ - predicate appliesToMaybe(ControlFlowElement cfe) { - this.appliesTo(cfe) and - exists(ControlFlowElement pred, Completion c | - cfe = succ(pred, c) | - not this.appliesToSucc(pred, cfe, c) - ) - or - exists(ControlFlowElement mid | - this.appliesToMaybe(mid) | - this.getASplit().hasSuccessor(mid, cfe, _) - ) - } - - /** Holds if all control flow paths to `cfe` lead to a split of this kind. */ - predicate appliesToAlways(ControlFlowElement cfe) { - this.appliesTo(cfe) and - not this.appliesToMaybe(cfe) - } + predicate appliesTo(ControlFlowElement cfe) { this.getASplit().appliesTo(cfe) } /** * Gets a unique integer representing this split kind. The integer is used @@ -3021,23 +2887,7 @@ module ControlFlow { */ int getListRank(ControlFlowElement cfe) { this.appliesTo(cfe) and - this = rank[result](SplitKind sk | - sk.appliesTo(cfe) | - sk order by sk.getListOrder() - ) - } - - /** - * Holds if a split of this kind can be the last element in a list - * representation of a set of splits for control flow element `cfe`. - */ - predicate endsList(ControlFlowElement cfe, int rnk) { - rnk = this.getListRank(cfe) and - forall(int rnk0, SplitKind sk | - rnk0 > rnk and - rnk0 = sk.getListRank(cfe) | - sk.appliesToMaybe(cfe) - ) + this = rank[result](SplitKind sk | sk.appliesTo(cfe) | sk order by sk.getListOrder()) } /** Gets a textual representation of this split kind. */ @@ -3080,16 +2930,15 @@ module ControlFlow { * * Invariant: `hasSuccessor(pred, succ, c) implies succ = Successor::succ(pred, c)` */ - abstract predicate hasSuccessor(ControlFlowElement pred, ControlFlowElement succ, Completion c); + abstract predicate hasSuccessor( + ControlFlowElement pred, ControlFlowElement succ, Completion c + ); /** Holds if this split applies to control flow element `cfe`. */ - predicate appliesTo(ControlFlowElement cfe) { + final predicate appliesTo(ControlFlowElement cfe) { this.hasEntry(_, cfe, _) or - exists(ControlFlowElement pred | - this.appliesTo(pred) | - this.hasSuccessor(pred, cfe, _) - ) + exists(ControlFlowElement pred | this.appliesTo(pred) | this.hasSuccessor(pred, cfe, _)) } } @@ -3103,18 +2952,16 @@ module ControlFlow { * the `finally` block exits normally). */ class FinallySplitType extends SuccessorType { - FinallySplitType() { - not this instanceof ConditionalSuccessor - } + FinallySplitType() { not this instanceof ConditionalSuccessor } /** Holds if this split type matches entry into a `finally` block with completion `c`. */ predicate isSplitForEntryCompletion(Completion c) { - if c instanceof NormalCompletion then + if c instanceof NormalCompletion + then // If the entry into the `finally` block completes with any normal completion, // it simply means normal execution after the `finally` block this instanceof NormalSuccessor - else - this.matchesCompletion(c) + else this.matchesCompletion(c) } } @@ -3143,16 +2990,11 @@ module ControlFlow { /** A control flow element that belongs to a `finally` block. */ private class FinallyControlFlowElement extends ControlFlowElement { - FinallyControlFlowElement() { - this = getAFinallyDescendant(_) - } + FinallyControlFlowElement() { this = getAFinallyDescendant(_) } /** Holds if this node is the entry node in the `finally` block it belongs to. */ predicate isEntryNode() { - exists(TryStmt try | - this = getAFinallyDescendant(try) | - this = first(try.getFinally()) - ) + exists(TryStmt try | this = getAFinallyDescendant(try) | this = first(try.getFinally())) } /** @@ -3167,9 +3009,7 @@ module ControlFlow { /** A control flow element that does not belong to a `finally` block. */ private class NonFinallyControlFlowElement extends ControlFlowElement { - NonFinallyControlFlowElement() { - not this = getAFinallyDescendant(_) - } + NonFinallyControlFlowElement() { not this = getAFinallyDescendant(_) } } /** @@ -3201,20 +3041,18 @@ module ControlFlow { * Gets the type of this `finally` split, that is, how to continue execution after the * `finally` block. */ - FinallySplitType getType() { - result = type - } + FinallySplitType getType() { result = type } override string toString() { - if type instanceof NormalSuccessor then - result = "" - else - result = "finally: " + type.toString() + if type instanceof NormalSuccessor + then result = "" + else result = "finally: " + type.toString() } } private class FinallySplitKind extends SplitKind, TFinallySplitKind { override int getListOrder() { result = 0 } + override string toString() { result = "Finally" } } @@ -3249,8 +3087,10 @@ module ControlFlow { this.appliesToPredecessor(pred) and exists(TryStmt try, FinallySplitType type | type = this.getType() and - pred = last(try, c) | - if pred.(FinallyControlFlowElement).isExitNode(try, c) then ( + pred = last(try, c) + | + if pred.(FinallyControlFlowElement).isExitNode(try, c) + then ( // Finally block can itself exit with completion `c`: either `c` must // match this split, `c` must be an abnormal completion, or this split // does not require another completion to be recovered @@ -3293,23 +3133,29 @@ module ControlFlow { ) } - override predicate hasSuccessor(ControlFlowElement pred, ControlFlowElement succ, Completion c) { + override predicate hasSuccessor( + ControlFlowElement pred, ControlFlowElement succ, Completion c + ) { this.appliesToPredecessor(pred) and succ = succ(pred, c) and succ = any(FinallyControlFlowElement fcfe | - if fcfe.isEntryNode() then - // Entering a nested `finally` block normally must remember the outer split - c instanceof NormalCompletion - else - // Staying in the same `finally` block should maintain this split - not this.hasEntry(pred, succ, c) - ) + if fcfe.isEntryNode() + then + // Entering a nested `finally` block normally must remember the outer split + c instanceof NormalCompletion + else + // Staying in the same `finally` block should maintain this split + not this.hasEntry(pred, succ, c) + ) } } } module ExceptionHandlerSplitting { - private newtype TMatch = TAlways() or TMaybe() or TNever() + private newtype TMatch = + TAlways() or + TMaybe() or + TNever() /** * A split for elements belonging to a `catch` clause, which determines the type of @@ -3359,6 +3205,7 @@ module ControlFlow { private class ExceptionHandlerSplitKind extends SplitKind, TExceptionHandlerSplitKind { override int getListOrder() { result = 1 } + override string toString() { result = "ExceptionHandler" } } @@ -3367,8 +3214,7 @@ module ControlFlow { override predicate hasEntry(ControlFlowElement pred, ControlFlowElement succ, Completion c) { // Entry into first catch clause - exists(TryStmt ts | - this.getExceptionClass() = getAThrownException(ts, pred, c) | + exists(TryStmt ts | this.getExceptionClass() = getAThrownException(ts, pred, c) | succ = succ(pred, c) and succ = ts.getCatchClause(0).(SpecificCatchClause) ) @@ -3383,13 +3229,14 @@ module ControlFlow { exists(TryStmt ts, ExceptionClass ec | ec = this.getExceptionClass() and ec = getAThrownException(ts, _, _) and - scc = ts.getACatchClause() | - if scc.getCaughtExceptionType() = ec.getABaseType*() then - match = TAlways() - else if scc.getCaughtExceptionType() = ec.getASubType+() then - match = TMaybe() + scc = ts.getACatchClause() + | + if scc.getCaughtExceptionType() = ec.getABaseType*() + then match = TAlways() else - match = TNever() + if scc.getCaughtExceptionType() = ec.getASubType+() + then match = TMaybe() + else match = TNever() ) } @@ -3404,25 +3251,21 @@ module ControlFlow { pred instanceof SpecificCatchClause implies pred = any(SpecificCatchClause scc | - if c instanceof MatchingCompletion then - exists(TMatch match | - this.appliesToCatchClause(scc, match) | - c = any(MatchingCompletion mc | - if mc.isMatch() then - match != TNever() - else - match != TAlways() + if c instanceof MatchingCompletion + then + exists(TMatch match | this.appliesToCatchClause(scc, match) | + c = any(MatchingCompletion mc | + if mc.isMatch() then match != TNever() else match != TAlways() + ) + ) + else ( + (scc.isLast() and c instanceof ThrowCompletion) + implies + exists(TMatch match | this.appliesToCatchClause(scc, match) | + match != TAlways() ) ) - else ( - (scc.isLast() and c instanceof ThrowCompletion) - implies - exists(TMatch match | - this.appliesToCatchClause(scc, match) | - match != TAlways() - ) ) - ) ) } @@ -3434,7 +3277,8 @@ module ControlFlow { private predicate hasLastExit(ControlFlowElement pred, ThrowCompletion c) { this.appliesToPredecessor(pred, c) and exists(TryStmt ts, SpecificCatchClause scc, int last | - pred = lastTryStmtCatchClause(ts, last, c) | + pred = lastTryStmtCatchClause(ts, last, c) + | ts.getCatchClause(last) = scc and scc.isLast() and c.getExceptionClass() = this.getExceptionClass() @@ -3462,13 +3306,16 @@ module ControlFlow { exists(succExit(pred, c)) } - override predicate hasSuccessor(ControlFlowElement pred, ControlFlowElement succ, Completion c) { + override predicate hasSuccessor( + ControlFlowElement pred, ControlFlowElement succ, Completion c + ) { this.appliesToPredecessor(pred, c) and succ = succ(pred, c) and not succ = first(any(SpecificCatchClause scc).getBlock()) and not succ instanceof GeneralCatchClause and not exists(TryStmt ts, SpecificCatchClause scc, int last | - pred = lastTryStmtCatchClause(ts, last, c) | + pred = lastTryStmtCatchClause(ts, last, c) + | ts.getCatchClause(last) = scc and scc.isLast() ) @@ -3500,7 +3347,9 @@ module ControlFlow { * the branch taken in the condition on line 2 can be recorded, and the * recorded value will detmine the branch taken in the condition on line 4. */ - abstract predicate correlatesConditions(ConditionBlock cb1, ConditionBlock cb2, boolean inverted); + abstract predicate correlatesConditions( + ConditionBlock cb1, ConditionBlock cb2, boolean inverted + ); /** Holds if control flow element `cfe` starts a split of this kind. */ predicate startsSplit(ControlFlowElement cfe) { @@ -3541,16 +3390,12 @@ module ControlFlow { class SsaBooleanSplitSubKind extends BooleanSplitSubKind, TSsaBooleanSplitSubKind { private PreSsa::Definition def; - SsaBooleanSplitSubKind() { - this = TSsaBooleanSplitSubKind(def) - } + SsaBooleanSplitSubKind() { this = TSsaBooleanSplitSubKind(def) } /** * Holds if condition `cb` is a read of the SSA variable in this split. */ - private predicate defCondition(ConditionBlock cb) { - cb.getLastElement() = def.getARead() - } + private predicate defCondition(ConditionBlock cb) { cb.getLastElement() = def.getARead() } /** * Holds if condition `cb` is a read of the SSA variable in this split, @@ -3561,8 +3406,7 @@ module ControlFlow { this.defCondition(cb) and read = cb.getLastElement() or - exists(AssignableRead mid | - this.defConditionReachableFromRead(cb, mid) | + exists(AssignableRead mid | this.defConditionReachableFromRead(cb, mid) | adjacentReadPairSameVar(read, mid) and not this.defCondition(read) ) @@ -3574,13 +3418,14 @@ module ControlFlow { * another condition that reads the same SSA variable. */ private predicate firstDefCondition(ConditionBlock cb) { - exists(AssignableRead read | - this.defConditionReachableFromRead(cb, read) | + exists(AssignableRead read | this.defConditionReachableFromRead(cb, read) | firstReadSameVar(def, read) ) } - override predicate correlatesConditions(ConditionBlock cb1, ConditionBlock cb2, boolean inverted) { + override predicate correlatesConditions( + ConditionBlock cb1, ConditionBlock cb2, boolean inverted + ) { this.firstDefCondition(cb1) and exists(AssignableRead read1, AssignableRead read2 | read1 = cb1.getLastElement() and @@ -3594,24 +3439,17 @@ module ControlFlow { this.correlatesConditions(_, bb, _) and not def.getBasicBlock() = bb or - exists(PreBasicBlock mid | - this.canReachCorrelatedCondition(mid) | + exists(PreBasicBlock mid | this.canReachCorrelatedCondition(mid) | bb = mid.getAPredecessor() and not def.getBasicBlock() = bb ) } - override Callable getEnclosingCallable() { - result = def.getCallable() - } + override Callable getEnclosingCallable() { result = def.getCallable() } - override string toString() { - result = def.getAssignable().toString() - } + override string toString() { result = def.getAssignable().toString() } - override Location getLocation() { - result = def.getLocation() - } + override Location getLocation() { result = def.getLocation() } } /** @@ -3631,11 +3469,10 @@ module ControlFlow { */ class BooleanSplitImpl extends SplitImpl, TBooleanSplit { private BooleanSplitSubKind kind; + private boolean branch; - BooleanSplitImpl() { - this = TBooleanSplit(kind, branch) - } + BooleanSplitImpl() { this = TBooleanSplit(kind, branch) } /** Gets the kind of this Boolean split. */ BooleanSplitSubKind getSubKind() { result = kind } @@ -3654,22 +3491,23 @@ module ControlFlow { private class BooleanSplitKind extends SplitKind, TBooleanSplitKind { private BooleanSplitSubKind kind; - BooleanSplitKind() { - this = TBooleanSplitKind(kind) - } + BooleanSplitKind() { this = TBooleanSplitKind(kind) } /** Gets the sub kind of this Boolean split kind. */ BooleanSplitSubKind getSubKind() { result = kind } override int getListOrder() { - exists(Callable c, int r | - c = kind.getEnclosingCallable() | + exists(Callable c, int r | c = kind.getEnclosingCallable() | result = r + 1 and // start the ordering from 2 kind = rank[r](BooleanSplitSubKind kind0 | - kind0.getEnclosingCallable() = c and - kind0.startsSplit(_) | - kind0 order by kind0.getLocation().getStartLine(), kind0.getLocation().getStartColumn(), kind0.toString() - ) + kind0.getEnclosingCallable() = c and + kind0.startsSplit(_) + | + kind0 + order by + kind0.getLocation().getStartLine(), kind0.getLocation().getStartColumn(), + kind0.toString() + ) ) } @@ -3677,9 +3515,7 @@ module ControlFlow { } private class BooleanSplitInternal extends SplitInternal, BooleanSplitImpl { - override BooleanSplitKind getKind() { - result.getSubKind() = this.getSubKind() - } + override BooleanSplitKind getKind() { result.getSubKind() = this.getSubKind() } override predicate hasEntry(ControlFlowElement pred, ControlFlowElement succ, Completion c) { succ = succ(pred, c) and @@ -3697,22 +3533,21 @@ module ControlFlow { */ private predicate appliesToBlock(PreBasicBlock bb, Completion c) { this.appliesTo(bb) and - exists(ControlFlowElement last | - last = bb.getLastElement() | + exists(ControlFlowElement last | last = bb.getLastElement() | (exists(succ(last, c)) or exists(succExit(last, c))) and // Respect the value recorded in this split for all correlated conditions - forall(boolean inverted | - bb = this.getACorrelatedCondition(inverted) | + forall(boolean inverted | bb = this.getACorrelatedCondition(inverted) | c instanceof BooleanCompletion implies - c = any(BooleanCompletion bc | bc.getInnerValue() = this.getBranch().booleanXor(inverted)) + c = any(BooleanCompletion bc | + bc.getInnerValue() = this.getBranch().booleanXor(inverted) + ) ) ) } override predicate hasExit(ControlFlowElement pred, ControlFlowElement succ, Completion c) { - exists(PreBasicBlock bb | - this.appliesToBlock(bb, c) | + exists(PreBasicBlock bb | this.appliesToBlock(bb, c) | pred = bb.getLastElement() and succ = succ(pred, c) and // Exit this split if we can no longer reach a correlated condition @@ -3721,24 +3556,26 @@ module ControlFlow { } override predicate hasExit(ControlFlowElement pred, Completion c) { - exists(PreBasicBlock bb | - this.appliesToBlock(bb, c) | + exists(PreBasicBlock bb | this.appliesToBlock(bb, c) | pred = bb.getLastElement() and exists(succExit(pred, c)) ) } - override predicate hasSuccessor(ControlFlowElement pred, ControlFlowElement succ, Completion c) { - exists(PreBasicBlock bb, Completion c0 | - this.appliesToBlock(bb, c0) | + override predicate hasSuccessor( + ControlFlowElement pred, ControlFlowElement succ, Completion c + ) { + exists(PreBasicBlock bb, Completion c0 | this.appliesToBlock(bb, c0) | pred = bb.getAnElement() and succ = succ(pred, c) and ( pred = bb.getLastElement() implies - // We must still be able to reach a correlated condition to stay in this split - this.getSubKind().canReachCorrelatedCondition(succ) and - c = c0 + ( + // We must still be able to reach a correlated condition to stay in this split + this.getSubKind().canReachCorrelatedCondition(succ) and + c = c0 + ) ) ) } @@ -3750,59 +3587,28 @@ module ControlFlow { * ordered by ascending rank. */ class Splits extends TSplits { - /** - * Holds if this non-empty set of splits applies to control flow - * element `cfe`, starting from rank `rnk`. - * - * As a special case, `appliesToFromRank(ControlFlowElement cfe, 1)` - * means that this non-empty set of splits applies fully to `cfe`. - */ - predicate appliesToFromRank(ControlFlowElement cfe, int rnk) { - exists(SplitInternal end | - this = TSplitsCons(end, TSplitsNil()) | - end.appliesTo(cfe) and - end.getKind().endsList(cfe, rnk) - ) - or - this.appliesToFromRankCons(cfe, _, _, rnk) - or - exists(SplitKind sk | - this.appliesToFromRank(cfe, rnk + 1) | - sk.appliesToMaybe(cfe) and - rnk = sk.getListRank(cfe) - ) - } - - pragma [noinline] - predicate appliesToFromRankCons(ControlFlowElement cfe, SplitInternal head, Splits tail, int rnk) { - tail.appliesToFromRank(cfe, rnk + 1) and - this = TSplitsCons(head, tail) and - head.appliesTo(cfe) and - rnk = head.getKind().getListRank(cfe) - } - /** Gets a textual representation of this set of splits. */ string toString() { this = TSplitsNil() and result = "" or exists(SplitInternal head, Splits tail, string headString, string tailString | - this = TSplitsCons(head, tail) | + this = TSplitsCons(head, tail) + | headString = head.toString() and tailString = tail.toString() and - if tailString = "" then - result = headString - else if headString = "" then - result = tailString + if tailString = "" + then result = headString else - result = headString + ", " + tailString + if headString = "" + then result = tailString + else result = headString + ", " + tailString ) } /** Gets a split belonging to this set of splits. */ SplitInternal getASplit() { - exists(SplitInternal head, Splits tail | - this = TSplitsCons(head, tail) | + exists(SplitInternal head, Splits tail | this = TSplitsCons(head, tail) | result = head or result = tail.getASplit() @@ -3815,156 +3621,310 @@ module ControlFlow { * when entering callable `pred`. */ pragma[noinline] - predicate succEntrySplits(@top_level_exprorstmt_parent pred, ControlFlowElement succ, Splits succSplits, SuccessorType t) { + predicate succEntrySplits( + @top_level_exprorstmt_parent pred, ControlFlowElement succ, Splits succSplits, + SuccessorType t + ) { succ = succEntry(pred) and t instanceof NormalSuccessor and succSplits = TSplitsNil() // initially no splits } - private predicate succSplits0(ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Completion c) { - // Performance optimization: if we know that `pred` and `succ` must have the - // same set of splits, there is no need to perform the checks in `succSplits1()` - // through `succSplits3()` below - exists(Reachability::SameSplitsBlock b | - pred = b.getAnElement() and - b.isReachable(predSplits) and - succ = succ(pred, c) and - (succ = b.getAnElement() implies succ = b) - ) - } - - pragma [inline] - private predicate entryOrSuccessor(ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, SplitInternal succHead, Completion c) { - succHead.hasEntry(pred, succ, c) - or - succHead = predSplits.getASplit() and - succHead.hasSuccessor(pred, succ, c) - } - - pragma [noinline] - private predicate endSplits(ControlFlowElement cfe, SplitInternal end, Splits splits, int rnk) { - splits = TSplitsCons(end, TSplitsNil()) and - end.getKind().endsList(cfe, rnk) - } - - /** - * Holds if - * - the set of splits `predSplits` applies to `pred`; - * - `succ` is a successor of `pred` with completion `c`; - * - the non-empty set of splits `succSplits` applies to `succ`, starting - * from rank `rnk`; and - * - each split in `succSplits` is either newly entered into, or passed - * over from one of the predecessor splits in `predSplits`. - */ - private predicate succSplits1(ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Splits succSplits, Completion c, int rnk) { - succSplits0(pred, predSplits, succ, c) and - exists(SplitInternal end | - endSplits(succ, end, succSplits, rnk) | - entryOrSuccessor(pred, predSplits, succ, end, c) - ) - or - exists(SplitInternal succHead, Splits succTail | - succSplits1(pred, predSplits, succ, succTail, c, rnk + 1) | - succSplits.appliesToFromRankCons(succ, succHead, succTail, rnk) and - entryOrSuccessor(pred, predSplits, succ, succHead, c) - ) - or - exists(SplitKind sk | - succSplits1(pred, predSplits, succ, succSplits, c, rnk + 1) | - sk.appliesToMaybe(succ) and - rnk = sk.getListRank(succ) - ) - } - - /** - * Holds if - * - the set of splits `predSplits` applies to `pred`; - * - `succ` is a successor of `pred` with completion `c`; - * - the set of splits `succSplits` applies to `succ`; and - * - each split in `succSplits` is either newly entered into, or passed - * over from one of the predecessor splits in `predSplits`. - */ - private predicate succSplits2(ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Splits succSplits, Completion c) { - succSplits1(pred, predSplits, succ, succSplits, c, 1) - or - succSplits0(pred, predSplits, succ, c) and - succSplits = TSplitsNil() and - not exists(SplitKind sk | sk.appliesToAlways(succ)) - } - - /** - * Holds if - * - the set of splits `predSplits` applies to `pred`; - * - `succ` is a successor of `pred` with completion `c`; - * - the set of splits `succSplits` applies to `succ`; - * - each split in `succSplits` is either newly entered into, or passed - * over from one of the predecessor splits in `predSplits`; - * - each split in `predSplits` (except possibly those in `predSplitsRemaining`) - * is passed over to one of the successor splits in `succSplits`, or left; and - * - `succSplits` contains a split for each newly entered split. - */ - private predicate succSplits3(ControlFlowElement pred, Splits predSplits, Splits predSplitsRemaining, ControlFlowElement succ, Splits succSplits, Completion c) { - succSplits2(pred, predSplits, succ, succSplits, c) and - predSplitsRemaining = predSplits and - // Enter a new split when required - forall(SplitInternal split | - split.hasEntry(pred, succ, c) | - split = succSplits.getASplit() - ) - or - exists(SplitInternal predSplit | - succSplits3(pred, predSplits, TSplitsCons(predSplit, predSplitsRemaining), succ, succSplits, c) | - // Each predecessor split must be either passed over as a successor split, - // or must be left (possibly entering a new split) - predSplit.hasSuccessor(pred, succ, c) and - predSplit = succSplits.getASplit() - or - predSplit.hasExit(pred, succ, c) and - forall(SplitInternal succSplit | - succSplit = succSplits.getASplit() | - succSplit.getKind() != predSplit.getKind() - or - succSplit.hasEntry(pred, succ, c) - ) - ) - } - - /** - * Holds if `succ` with splits `succSplits` is a successor of type `t` for `pred` - * with splits `predSplits`. - */ - predicate succSplits(ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Splits succSplits, SuccessorType t) { - exists(Completion c | - t.matchesCompletion(c) | - exists(Reachability::SameSplitsBlock b | - pred = b.getAnElement() | - b.isReachable(predSplits) and - succ = succ(pred, c) and - succ = b.getAnElement() and - not succ = b and - succSplits = predSplits - ) - or - succSplits3(pred, predSplits, TSplitsNil(), succ, succSplits, c) - ) - } - /** * Holds if `pred` with splits `predSplits` can exit the enclosing callable * `succ` with type `t`. */ - predicate succExitSplits(ControlFlowElement pred, Splits predSplits, Callable succ, SuccessorType t) { - exists(Reachability::SameSplitsBlock b, Completion c | - pred = b.getAnElement() | + predicate succExitSplits( + ControlFlowElement pred, Splits predSplits, Callable succ, SuccessorType t + ) { + exists(Reachability::SameSplitsBlock b, Completion c | pred = b.getAnElement() | b.isReachable(predSplits) and t.matchesCompletion(c) and succ = succExit(pred, c) and - forall(SplitInternal predSplit | - predSplit = predSplits.getASplit() | + forall(SplitInternal predSplit | predSplit = predSplits.getASplit() | predSplit.hasExit(pred, c) ) ) } + + /** + * Provides a predicate for the successor relation with split information, + * as well as logic used to construct the type `TSplits` representing sets + * of splits. Only sets of splits that can be reached are constructed, hence + * the predicates are mutually recursive. + * + * For the successor relation + * + * ``` + * succSplits(ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Splits succSplits, Completion c) + * ``` + * + * the following invariants are maintained: + * + * 1. `pred` is reachable with split set `predSplits`. + * 2. For all `split` in `predSplits`: + * - If `split.hasSuccessor(pred, succ, c)` then `split` in `succSplits`. + * 3. For all `split` in `predSplits`: + * - If `split.hasExit(pred, succ, c)` then `split` not in `succSplits`. + * 4. For all `split` not in `predSplits`: + * - If `split.hasEntry(pred, succ, c)` then `split` in `succSplits`. + * 5. For all `split` in `succSplits`: + * - `split.hasSuccessor(pred, succ, c)` and `split` in `predSplits`, or + * - `split.hasEntry(pred, succ, c)` and `split` not in `predSplits`. + * + * The algorithm divides into four cases: + * + * 1. The set of splits for the successor is the same as the set of splits + * for the predecessor: + * a) The successor is in the same `SameSplitsBlock` as the predecessor. + * b) The successor is *not* in the same `SameSplitsBlock` as the predecessor. + * 2. The set of splits for the successor is different from the set of splits + * for the predecessor: + * a) The set of splits for the successor is *maybe* non-empty. + * b) The set of splits for the successor is *always* empty. + * + * Only case 2a may introduce new sets of splits, so only predicates from + * this case are used in the definition of `TSplits`. + * + * The predicates in this module are named after the cases above. + */ + private module SuccSplits { + private predicate succInvariant1( + Reachability::SameSplitsBlock b, ControlFlowElement pred, Splits predSplits, + ControlFlowElement succ, Completion c + ) { + pred = b.getAnElement() and + b.isReachable(predSplits) and + succ = succ(pred, c) + } + + private predicate case1b0( + ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Completion c + ) { + exists(Reachability::SameSplitsBlock b | + // Invariant 1 + succInvariant1(b, pred, predSplits, succ, c) + | + (succ = b.getAnElement() implies succ = b) and + // Invariant 4 + not exists(SplitInternal split | split.hasEntry(pred, succ, c)) + ) + } + + /** + * Case 1b. + * + * Invariants 1 and 4 hold in the base case, and invariants 2, 3, and 5 are + * maintained for all splits in `predSplits` (= `succSplits`), except + * possibly for the splits in `except`. + * + * The predicate is written using explicit recursion, as opposed to a `forall`, + * to avoid negative recursion. + */ + private predicate case1bForall( + ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Completion c, + Splits except + ) { + case1b0(pred, predSplits, succ, c) and + except = predSplits + or + exists(Splits mid, SplitInternal split | case1bForall(pred, predSplits, succ, c, mid) | + mid = TSplitsCons(split, except) and + split.hasSuccessor(pred, succ, c) + ) + } + + private predicate case1( + ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Completion c + ) { + // Case 1a + exists(Reachability::SameSplitsBlock b | succInvariant1(b, pred, predSplits, succ, c) | + succ = b.getAnElement() and + not succ = b + ) + or + // Case 1b + case1bForall(pred, predSplits, succ, c, TSplitsNil()) + } + + private predicate case2aux( + ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Completion c + ) { + exists(Reachability::SameSplitsBlock b | + succInvariant1(b, pred, predSplits, succ, c) and + (succ = b.getAnElement() implies succ = b) + | + predSplits.getASplit().hasExit(pred, succ, c) + or + any(SplitInternal split).hasEntry(pred, succ, c) + ) + } + + /** + * Holds if `succSplits` should not inherit a split of kind `sk` from + * `predSplits, except possibly because of a split in `except`. + * + * The predicate is written using explicit recursion, as opposed to a `forall`, + * to avoid negative recursion. + */ + private predicate case2aNoneInheritedOfKindForall( + ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Completion c, + SplitKind sk, Splits except + ) { + case2aux(pred, predSplits, succ, c) and + sk.appliesTo(succ) and + except = predSplits + or + exists(Splits mid, SplitInternal split | + case2aNoneInheritedOfKindForall(pred, predSplits, succ, c, sk, mid) and + mid = TSplitsCons(split, except) + | + split.getKind() = any(SplitKind sk0 | sk0 != sk and sk0.appliesTo(succ)) + or + split.hasExit(pred, succ, c) + ) + } + + /** Holds if `succSplits` should not have a split of kind `sk`. */ + pragma[noinline] + private predicate case2aNoneOfKind( + ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Completion c, + SplitKind sk + ) { + // None inherited from predecessor + case2aNoneInheritedOfKindForall(pred, predSplits, succ, c, sk, TSplitsNil()) and + // None newly entered into + not exists(SplitInternal split | split.hasEntry(pred, succ, c) | split.getKind() = sk) + } + + /** Holds if `succSplits` should not have a split of kind `sk` at rank `rnk`. */ + pragma[noinline] + private predicate case2aNoneAtRank( + ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Completion c, int rnk + ) { + exists(SplitKind sk | case2aNoneOfKind(pred, predSplits, succ, c, sk) | + rnk = sk.getListRank(succ) + ) + } + + /** Gets a split that should be in `succSplits`. */ + pragma[nomagic] + private SplitInternal case2aSome( + ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Completion c + ) { + case2aux(pred, predSplits, succ, c) and + ( + result = predSplits.getASplit() and + result.hasSuccessor(pred, succ, c) + or + result.hasEntry(pred, succ, c) and + case2aNoneInheritedOfKindForall(pred, predSplits, succ, c, result.getKind(), + TSplitsNil()) + ) + } + + /** Gets a split that should be in `succSplits` at rank `rnk`. */ + SplitInternal case2aSomeAtRank( + ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Completion c, int rnk + ) { + result = case2aSome(pred, predSplits, succ, c) and + rnk = result.getKind().getListRank(succ) + } + + /** + * Case 2a. + * + * As opposed to the other cases, in this case we need to construct a new set + * of splits `succSplits`. Since this involves constructing the very IPA type, + * we cannot recurse directly over the structure of `succSplits`. Instead, we + * recurse over the ranks of all splits that *might* be in `succSplits`. + * + * - Invariant 1 holds in the base case, + * - invariant 2 holds for all splits with rank at least `rnk`, + * - invariant 3 holds for all splits in `predSplits`, + * - invariant 4 holds for all splits in `succSplits` with rank at least `rnk`, + * and + * - invariant 4 holds for all splits in `succSplits` with rank at least `rnk`. + */ + predicate case2aFromRank( + ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Splits succSplits, + Completion c, int rnk + ) { + case2aux(pred, predSplits, succ, c) and + succSplits = TSplitsNil() and + rnk = max(any(SplitKind sk).getListRank(succ)) + 1 + or + case2aFromRank(pred, predSplits, succ, succSplits, c, rnk + 1) and + case2aNoneAtRank(pred, predSplits, succ, c, rnk) + or + exists(Splits mid, SplitInternal split | + split = case2aCons(pred, predSplits, succ, mid, c, rnk) + | + succSplits = TSplitsCons(split, mid) + ) + } + + pragma[noinline] + private SplitInternal case2aCons( + ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Splits succSplits, + Completion c, int rnk + ) { + case2aFromRank(pred, predSplits, succ, succSplits, c, rnk + 1) and + result = case2aSomeAtRank(pred, predSplits, succ, c, rnk) + } + + /** + * Case 2b. + * + * Invariants 1, 4, and 5 hold in the base case, and invariants 2 and 3 are + * maintained for all splits in `predSplits`, except possibly for the splits + * in `except`. + * + * The predicate is written using explicit recursion, as opposed to a `forall`, + * to avoid negative recursion. + */ + private predicate case2bForall( + ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Completion c, + Splits except + ) { + // Invariant 1 + case2aux(pred, predSplits, succ, c) and + // Invariants 4 and 5 + not any(SplitKind sk).appliesTo(succ) and + except = predSplits + or + exists(Splits mid, SplitInternal split | case2bForall(pred, predSplits, succ, c, mid) | + mid = TSplitsCons(split, except) and + // Invariants 2 and 3 + split.hasExit(pred, succ, c) + ) + } + + private predicate case2( + ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Splits succSplits, + Completion c + ) { + case2aFromRank(pred, predSplits, succ, succSplits, c, 1) + or + case2bForall(pred, predSplits, succ, c, TSplitsNil()) and + succSplits = TSplitsNil() + } + + /** + * Holds if `succ` with splits `succSplits` is a successor of type `t` for `pred` + * with splits `predSplits`. + */ + predicate succSplits( + ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Splits succSplits, + Completion c + ) { + case1(pred, predSplits, succ, c) and + succSplits = predSplits + or + case2(pred, predSplits, succ, succSplits, c) + } + } + import SuccSplits } import Splitting @@ -3984,8 +3944,7 @@ module ControlFlow { s.hasExit(_, cfe, _) ) or - exists(ControlFlowElement pred, SplitInternal split, Completion c | - cfe = succ(pred, c) | + exists(ControlFlowElement pred, SplitInternal split, Completion c | cfe = succ(pred, c) | split.appliesTo(pred) and not split.hasSuccessor(pred, cfe, c) ) @@ -4004,9 +3963,7 @@ module ControlFlow { * to remain unchanged, represented by the first element in the block. */ class SameSplitsBlock extends ControlFlowElement { - SameSplitsBlock() { - startsSplits(this) - } + SameSplitsBlock() { startsSplits(this) } /** Gets a control flow element in this block. */ ControlFlowElement getAnElement() { @@ -4016,8 +3973,7 @@ module ControlFlow { } private SameSplitsBlock getASuccessor(Splits predSplits, Splits succSplits) { - exists(ControlFlowElement pred | - pred = this.getAnElement() | + exists(ControlFlowElement pred | pred = this.getAnElement() | succSplits(pred, predSplits, result, succSplits, _) ) } @@ -4031,62 +3987,57 @@ module ControlFlow { succEntrySplits(_, this, splits, _) or // Recursive case - exists(SameSplitsBlock pred, Splits predSplits | - pred.isReachable(predSplits) | + exists(SameSplitsBlock pred, Splits predSplits | pred.isReachable(predSplits) | this = pred.getASuccessor(predSplits, splits) ) } } } - private cached module Cached { + cached + private module Cached { private import semmle.code.csharp.controlflow.Guards as Guards pragma[noinline] - private predicate phiNodeMaybeLive(PreBasicBlocks::PreBasicBlock bb, PreSsa::SimpleAssignable a) { - exists(PreBasicBlocks::PreBasicBlock def | - PreSsa::defAt(def, _, _, a) | + private predicate phiNodeMaybeLive( + PreBasicBlocks::PreBasicBlock bb, PreSsa::SimpleAssignable a + ) { + exists(PreBasicBlocks::PreBasicBlock def | PreSsa::defAt(def, _, _, a) | def.inDominanceFrontier(bb) ) } cached newtype TPreSsaDef = - TExplicitPreSsaDef(PreBasicBlocks::PreBasicBlock bb, int i, AssignableDefinition def, PreSsa::SimpleAssignable a) { + TExplicitPreSsaDef( + PreBasicBlocks::PreBasicBlock bb, int i, AssignableDefinition def, + PreSsa::SimpleAssignable a + ) { Guards::Internal::CachedWithCFG::forceCachingInSameStage() and PreSsa::assignableDefAtLive(bb, i, def, a) - } - or + } or TImplicitEntryPreSsaDef(Callable c, PreBasicBlocks::PreBasicBlock bb, Assignable a) { PreSsa::implicitEntryDef(c, bb, a) and PreSsa::liveAtEntry(bb, a) - } - or + } or TPhiPreSsaDef(PreBasicBlocks::PreBasicBlock bb, PreSsa::SimpleAssignable a) { phiNodeMaybeLive(bb, a) and PreSsa::liveAtEntry(bb, a) } cached - newtype TBooleanSplitSubKind = - TSsaBooleanSplitSubKind(PreSsa::Definition def) + newtype TBooleanSplitSubKind = TSsaBooleanSplitSubKind(PreSsa::Definition def) cached newtype TSplitKind = - TFinallySplitKind() - or - TExceptionHandlerSplitKind() - or - TBooleanSplitKind(BooleanSplitting::BooleanSplitSubKind kind) { - kind.startsSplit(_) - } + TFinallySplitKind() or + TExceptionHandlerSplitKind() or + TBooleanSplitKind(BooleanSplitting::BooleanSplitSubKind kind) { kind.startsSplit(_) } cached newtype TSplit = - TFinallySplit(FinallySplitting::FinallySplitType type) - or - TExceptionHandlerSplit(ExceptionClass ec) - or + TFinallySplit(FinallySplitting::FinallySplitType type) or + TExceptionHandlerSplit(ExceptionClass ec) or TBooleanSplit(BooleanSplitting::BooleanSplitSubKind kind, boolean branch) { kind.startsSplit(_) and (branch = true or branch = false) @@ -4094,16 +4045,15 @@ module ControlFlow { cached newtype TSplits = - TSplitsNil() - or + TSplitsNil() or TSplitsCons(SplitInternal head, Splits tail) { - exists(ControlFlowElement cfe, SplitKind sk | - head.appliesTo(cfe) and - sk = head.getKind() | - tail = TSplitsNil() and - sk.endsList(cfe, _) - or - tail.appliesToFromRank(cfe, sk.getListRank(cfe) + 1) + exists( + ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Completion c, + int rnk + | + case2aFromRank(pred, predSplits, succ, tail, c, rnk + 1) + | + head = case2aSomeAtRank(pred, predSplits, succ, c, rnk) ) } @@ -4113,61 +4063,33 @@ module ControlFlow { */ cached newtype TNode = - TEntryNode(Callable c) { - succEntrySplits(c, _, _, _) - } - or + TEntryNode(Callable c) { succEntrySplits(c, _, _, _) } or TExitNode(Callable c) { - exists(Reachability::SameSplitsBlock b | - b.isReachable(_) | + exists(Reachability::SameSplitsBlock b | b.isReachable(_) | succExitSplits(b.getAnElement(), _, c, _) ) - } - or + } or TElementNode(ControlFlowElement cfe, Splits splits) { - exists(Reachability::SameSplitsBlock b | - b.isReachable(splits) | - cfe = b.getAnElement() - ) + exists(Reachability::SameSplitsBlock b | b.isReachable(splits) | cfe = b.getAnElement()) } /** Internal representation of types of control flow. */ cached newtype TSuccessorType = - TSuccessorSuccessor() - or - TBooleanSuccessor(boolean b) { - b = true or b = false - } - or - TNullnessSuccessor(boolean isNull) { - isNull = true or isNull = false - } - or - TMatchingSuccessor(boolean isMatch) { - isMatch = true or isMatch = false - } - or - TEmptinessSuccessor(boolean isEmpty) { - isEmpty = true or isEmpty = false - } - or - TReturnSuccessor() - or - TBreakSuccessor() - or - TContinueSuccessor() - or - TGotoLabelSuccessor(GotoLabelStmt goto) - or - TGotoCaseSuccessor(GotoCaseStmt goto) - or - TGotoDefaultSuccessor() - or + TSuccessorSuccessor() or + TBooleanSuccessor(boolean b) { b = true or b = false } or + TNullnessSuccessor(boolean isNull) { isNull = true or isNull = false } or + TMatchingSuccessor(boolean isMatch) { isMatch = true or isMatch = false } or + TEmptinessSuccessor(boolean isEmpty) { isEmpty = true or isEmpty = false } or + TReturnSuccessor() or + TBreakSuccessor() or + TContinueSuccessor() or + TGotoLabelSuccessor(GotoLabelStmt goto) or + TGotoCaseSuccessor(GotoCaseStmt goto) or + TGotoDefaultSuccessor() or TExceptionSuccessor(ExceptionClass ec) { exists(ThrowCompletion c | c.getExceptionClass() = ec) - } - or + } or TExitSuccessor() /** Gets a successor node of a given flow type, if any. */ @@ -4175,19 +4097,23 @@ module ControlFlow { Node getASuccessorByType(Node pred, SuccessorType t) { // Callable entry node -> callable body exists(ControlFlowElement succElement, Splits succSplits | - result = TElementNode(succElement, succSplits) | + result = TElementNode(succElement, succSplits) + | succEntrySplits(pred.(Nodes::EntryNode).getCallable(), succElement, succSplits, t) ) or exists(ControlFlowElement predElement, Splits predSplits | - pred = TElementNode(predElement, predSplits) | + pred = TElementNode(predElement, predSplits) + | // Element node -> callable exit succExitSplits(predElement, predSplits, result.(Nodes::ExitNode).getCallable(), t) or // Element node -> element node - exists(ControlFlowElement succElement, Splits succSplits | - result = TElementNode(succElement, succSplits) | - succSplits(predElement, predSplits, succElement, succSplits, t) + exists(ControlFlowElement succElement, Splits succSplits, Completion c | + result = TElementNode(succElement, succSplits) + | + succSplits(predElement, predSplits, succElement, succSplits, c) and + t.matchesCompletion(c) ) ) } @@ -4196,51 +4122,39 @@ module ControlFlow { * Gets a first control flow element executed within `cfe`. */ cached - ControlFlowElement getAControlFlowEntryNode(ControlFlowElement cfe) { - result = first(cfe) - } + ControlFlowElement getAControlFlowEntryNode(ControlFlowElement cfe) { result = first(cfe) } /** * Gets a potential last control flow element executed within `cfe`. */ cached - ControlFlowElement getAControlFlowExitNode(ControlFlowElement cfe) { - result = last(cfe, _) - } + ControlFlowElement getAControlFlowExitNode(ControlFlowElement cfe) { result = last(cfe, _) } } import Cached /** A control flow element that is split into multiple control flow nodes. */ class SplitControlFlowElement extends ControlFlowElement { - SplitControlFlowElement() { - strictcount(this.getAControlFlowNode()) > 1 - } + SplitControlFlowElement() { strictcount(this.getAControlFlowNode()) > 1 } } } private import Internal } // The code below is all for backwards-compatibility; should be deleted eventually +deprecated class ControlFlowNode = ControlFlow::Node; -deprecated -class ControlFlowNode = ControlFlow::Node; +deprecated class CallableEntryNode = ControlFlow::Nodes::EntryNode; -deprecated -class CallableEntryNode = ControlFlow::Nodes::EntryNode; - -deprecated -class CallableExitNode = ControlFlow::Nodes::ExitNode; +deprecated class CallableExitNode = ControlFlow::Nodes::ExitNode; /** * DEPRECATED: Use `ElementNode` instead. * * A node for a control flow element. */ -deprecated -class NormalControlFlowNode extends ControlFlow::Nodes::ElementNode { +deprecated class NormalControlFlowNode extends ControlFlow::Nodes::ElementNode { NormalControlFlowNode() { - forall(ControlFlow::Nodes::FinallySplit s | - s = this.getASplit() | + forall(ControlFlow::Nodes::FinallySplit s | s = this.getASplit() | s.getType() instanceof ControlFlow::SuccessorTypes::NormalSuccessor ) } @@ -4251,11 +4165,11 @@ class NormalControlFlowNode extends ControlFlow::Nodes::ElementNode { * * A split node for a control flow element that belongs to a `finally` block. */ -deprecated -class FinallySplitControlFlowNode extends ControlFlow::Nodes::ElementNode { +deprecated class FinallySplitControlFlowNode extends ControlFlow::Nodes::ElementNode { FinallySplitControlFlowNode() { exists(ControlFlow::Internal::FinallySplitting::FinallySplitType type | - type = this.getASplit().(ControlFlow::Nodes::FinallySplit).getType() | + type = this.getASplit().(ControlFlow::Nodes::FinallySplit).getType() + | not type instanceof ControlFlow::SuccessorTypes::NormalSuccessor ) } @@ -4267,57 +4181,43 @@ class FinallySplitControlFlowNode extends ControlFlow::Nodes::ElementNode { } /** DEPRECATED: Use `ControlFlow::SuccessorType` instead. */ -deprecated -class ControlFlowEdgeType = ControlFlow::SuccessorType; +deprecated class ControlFlowEdgeType = ControlFlow::SuccessorType; /** DEPRECATED: Use `ControlFlow::NormalSuccessor` instead. */ -deprecated -class ControlFlowEdgeSuccessor = ControlFlow::SuccessorTypes::NormalSuccessor; +deprecated class ControlFlowEdgeSuccessor = ControlFlow::SuccessorTypes::NormalSuccessor; /** DEPRECATED: Use `ControlFlow::ConditionalSuccessor` instead. */ -deprecated -class ControlFlowEdgeConditional = ControlFlow::SuccessorTypes::ConditionalSuccessor; +deprecated class ControlFlowEdgeConditional = ControlFlow::SuccessorTypes::ConditionalSuccessor; /** DEPRECATED: Use `ControlFlow::BooleanSuccessor` instead. */ -deprecated -class ControlFlowEdgeBoolean = ControlFlow::SuccessorTypes::BooleanSuccessor; +deprecated class ControlFlowEdgeBoolean = ControlFlow::SuccessorTypes::BooleanSuccessor; /** DEPRECATED: Use `ControlFlow::NullnessSuccessor` instead. */ -deprecated -class ControlFlowEdgeNullness = ControlFlow::SuccessorTypes::NullnessSuccessor; +deprecated class ControlFlowEdgeNullness = ControlFlow::SuccessorTypes::NullnessSuccessor; /** DEPRECATED: Use `ControlFlow::MatchingSuccessor` instead. */ -deprecated -class ControlFlowEdgeMatching = ControlFlow::SuccessorTypes::MatchingSuccessor; +deprecated class ControlFlowEdgeMatching = ControlFlow::SuccessorTypes::MatchingSuccessor; /** DEPRECATED: Use `ControlFlow::EmptinessSuccessor` instead. */ -deprecated -class ControlFlowEdgeEmptiness = ControlFlow::SuccessorTypes::EmptinessSuccessor; +deprecated class ControlFlowEdgeEmptiness = ControlFlow::SuccessorTypes::EmptinessSuccessor; /** DEPRECATED: Use `ControlFlow::ReturnSuccessor` instead. */ -deprecated -class ControlFlowEdgeReturn = ControlFlow::SuccessorTypes::ReturnSuccessor; +deprecated class ControlFlowEdgeReturn = ControlFlow::SuccessorTypes::ReturnSuccessor; /** DEPRECATED: Use `ControlFlow::BreakSuccessor` instead. */ -deprecated -class ControlFlowEdgeBreak = ControlFlow::SuccessorTypes::BreakSuccessor; +deprecated class ControlFlowEdgeBreak = ControlFlow::SuccessorTypes::BreakSuccessor; /** DEPRECATED: Use `ControlFlow::ContinueSuccessor` instead. */ -deprecated -class ControlFlowEdgeContinue = ControlFlow::SuccessorTypes::ContinueSuccessor; +deprecated class ControlFlowEdgeContinue = ControlFlow::SuccessorTypes::ContinueSuccessor; /** DEPRECATED: Use `ControlFlow::GotoLabelSuccessor` instead. */ -deprecated -class ControlFlowEdgeGotoLabel = ControlFlow::SuccessorTypes::GotoLabelSuccessor; +deprecated class ControlFlowEdgeGotoLabel = ControlFlow::SuccessorTypes::GotoLabelSuccessor; /** DEPRECATED: Use `ControlFlow::GotoCaseSuccessor` instead. */ -deprecated -class ControlFlowEdgeGotoCase = ControlFlow::SuccessorTypes::GotoCaseSuccessor; +deprecated class ControlFlowEdgeGotoCase = ControlFlow::SuccessorTypes::GotoCaseSuccessor; /** DEPRECATED: Use `ControlFlow::GotoDefaultSuccessor` instead. */ -deprecated -class ControlFlowEdgeGotoDefault = ControlFlow::SuccessorTypes::GotoDefaultSuccessor; +deprecated class ControlFlowEdgeGotoDefault = ControlFlow::SuccessorTypes::GotoDefaultSuccessor; /** DEPRECATED: Use `ControlFlow::ExceptionSuccessor` instead. */ -deprecated -class ControlFlowEdgeException = ControlFlow::SuccessorTypes::ExceptionSuccessor; +deprecated class ControlFlowEdgeException = ControlFlow::SuccessorTypes::ExceptionSuccessor; diff --git a/csharp/ql/src/semmle/code/csharp/controlflow/Guards.qll b/csharp/ql/src/semmle/code/csharp/controlflow/Guards.qll index 856a45ad711..e1a21bf71aa 100644 --- a/csharp/ql/src/semmle/code/csharp/controlflow/Guards.qll +++ b/csharp/ql/src/semmle/code/csharp/controlflow/Guards.qll @@ -48,16 +48,13 @@ module AbstractValues { override predicate branch(ControlFlowElement cfe, ConditionalSuccessor s, Expr e) { s.(BooleanSuccessor).getValue() = this.getValue() and - exists(BooleanCompletion c | - s.matchesCompletion(c) | + exists(BooleanCompletion c | s.matchesCompletion(c) | c.isValidFor(cfe) and e = cfe ) } - override BooleanValue getDualValue() { - result.getValue() = this.getValue().booleanNot() - } + override BooleanValue getDualValue() { result.getValue() = this.getValue().booleanNot() } override Expr getAnExpr() { result.getType() instanceof BoolType and @@ -74,13 +71,9 @@ module AbstractValues { /** Gets the underlying integer value. */ int getValue() { this = TIntegerValue(result) } - override predicate branch(ControlFlowElement cfe, ConditionalSuccessor s, Expr e) { - none() - } + override predicate branch(ControlFlowElement cfe, ConditionalSuccessor s, Expr e) { none() } - override BooleanValue getDualValue() { - none() - } + override BooleanValue getDualValue() { none() } override Expr getAnExpr() { result.getValue().toInt() = this.getValue() and @@ -103,8 +96,7 @@ module AbstractValues { override predicate branch(ControlFlowElement cfe, ConditionalSuccessor s, Expr e) { this = TNullValue(s.(NullnessSuccessor).getValue()) and - exists(NullnessCompletion c | - s.matchesCompletion(c) | + exists(NullnessCompletion c | s.matchesCompletion(c) | c.isValidFor(cfe) and e = cfe ) @@ -115,20 +107,14 @@ module AbstractValues { } override DereferenceableExpr getAnExpr() { - if this.isNull() then - result instanceof AlwaysNullExpr - else - exists(Expr e | - nonNullValue(e) | - nonNullValueImplied*(e, result) - ) + if this.isNull() + then result instanceof AlwaysNullExpr + else exists(Expr e | nonNullValue(e) | nonNullValueImplied*(e, result)) } override predicate isSingleton() { this.isNull() } - override string toString() { - if this.isNull() then result = "null" else result = "non-null" - } + override string toString() { if this.isNull() then result = "null" else result = "non-null" } } /** A value that represents match or non-match against a specific `case` statement. */ @@ -141,8 +127,7 @@ module AbstractValues { override predicate branch(ControlFlowElement cfe, ConditionalSuccessor s, Expr e) { this = TMatchValue(_, s.(MatchingSuccessor).getValue()) and - exists(MatchingCompletion c, SwitchStmt ss, CaseStmt cs | - s.matchesCompletion(c) | + exists(MatchingCompletion c, SwitchStmt ss, CaseStmt cs | s.matchesCompletion(c) | c.isValidFor(cfe) and switchMatching(ss, cs, cfe) and e = ss.getCondition() and @@ -152,9 +137,9 @@ module AbstractValues { override MatchValue getDualValue() { result = any(MatchValue mv | - mv.getCaseStmt() = this.getCaseStmt() and - if this.isMatch() then not mv.isMatch() else mv.isMatch() - ) + mv.getCaseStmt() = this.getCaseStmt() and + if this.isMatch() then not mv.isMatch() else mv.isMatch() + ) } override Expr getAnExpr() { none() } @@ -162,8 +147,7 @@ module AbstractValues { override predicate isSingleton() { none() } override string toString() { - exists(string s | - s = this.getCaseStmt().toString() | + exists(string s | s = this.getCaseStmt().toString() | if this.isMatch() then result = "match " + s else result = "non-match " + s ) } @@ -176,8 +160,7 @@ module AbstractValues { override predicate branch(ControlFlowElement cfe, ConditionalSuccessor s, Expr e) { this = TEmptyCollectionValue(s.(EmptinessSuccessor).getValue()) and - exists(EmptinessCompletion c, ForeachStmt fs | - s.matchesCompletion(c) | + exists(EmptinessCompletion c, ForeachStmt fs | s.matchesCompletion(c) | c.isValidFor(cfe) and foreachEmptiness(fs, cfe) and e = fs.getIterableExpr() @@ -192,9 +175,7 @@ module AbstractValues { override predicate isSingleton() { none() } - override string toString() { - if this.isEmpty() then result = "empty" else result = "non-empty" - } + override string toString() { if this.isEmpty() then result = "empty" else result = "non-empty" } } } private import AbstractValues @@ -212,7 +193,8 @@ class DereferenceableExpr extends Expr { // incorrectly `int`, while it should have been `int?`. We apply // `getNullEquivParent()` as a workaround this = getNullEquivParent*(e) and - t = e.getType() | + t = e.getType() + | t instanceof NullableType and isNullableType = true or @@ -222,9 +204,7 @@ class DereferenceableExpr extends Expr { } /** Holds if this expression has a nullable type `T?`. */ - predicate hasNullableType() { - isNullableType = true - } + predicate hasNullableType() { isNullableType = true } /** * Gets an expression that directly tests whether this expression is `null`. @@ -237,23 +217,22 @@ class DereferenceableExpr extends Expr { * expression `x` is guaranteed to be non-`null`. */ private Expr getABooleanNullCheck(BooleanValue v, boolean isNull) { - exists(boolean branch | - branch = v.getValue() | + exists(boolean branch | branch = v.getValue() | // Comparison with `null`, for example `x != null` exists(ComparisonTest ct, ComparisonKind ck, NullLiteral nl | ct.getExpr() = result and ct.getAnArgument() = this and ct.getAnArgument() = nl and this != nl and - ck = ct.getComparisonKind() | + ck = ct.getComparisonKind() + | ck.isEquality() and isNull = branch or ck.isInequality() and isNull = branch.booleanNot() ) or // Comparison with a non-`null` value, for example `x?.Length > 0` - exists(ComparisonTest ct, ComparisonKind ck, Expr e | - ct.getExpr() = result | + exists(ComparisonTest ct, ComparisonKind ck, Expr e | ct.getExpr() = result | ct.getAnArgument() = this and ct.getAnArgument() = e and e = any(NullValue nv | not nv.isNull()).getAnExpr() and @@ -264,8 +243,7 @@ class DereferenceableExpr extends Expr { ) or // Call to `string.IsNullOrEmpty()` or `string.IsNullOrWhiteSpace()` - exists(MethodCall mc, string name | - result = mc | + exists(MethodCall mc, string name | result = mc | mc.getTarget() = any(SystemStringClass c).getAMethod(name) and name.regexpMatch("IsNullOr(Empty|WhiteSpace)") and mc.getArgument(0) = this and @@ -274,27 +252,28 @@ class DereferenceableExpr extends Expr { ) or result = any(IsExpr ie | - ie.getExpr() = this and - if ie.(IsConstantExpr).getConstant() instanceof NullLiteral then - // E.g. `x is null` - isNull = branch - else ( - // E.g. `x is string` or `x is ""` - branch = true and isNull = false - or - // E.g. `x is string` where `x` has type `string` - ie = any(IsTypeExpr ite | ite.getCheckedType() = ite.getExpr().getType()) and - branch = false and - isNull = true + ie.getExpr() = this and + if ie.(IsConstantExpr).getConstant() instanceof NullLiteral + then + // E.g. `x is null` + isNull = branch + else ( + // E.g. `x is string` or `x is ""` + branch = true and isNull = false + or + // E.g. `x is string` where `x` has type `string` + ie = any(IsTypeExpr ite | ite.getCheckedType() = ite.getExpr().getType()) and + branch = false and + isNull = true + ) ) - ) or this.hasNullableType() and result = any(PropertyAccess pa | - pa.getQualifier() = this and - pa.getTarget().hasName("HasValue") and - if branch = true then isNull = false else isNull = true - ) + pa.getQualifier() = this and + pa.getTarget().hasName("HasValue") and + if branch = true then isNull = false else isNull = true + ) or isCustomNullCheck(result, this, v, isNull) ) @@ -326,22 +305,24 @@ class DereferenceableExpr extends Expr { cs = v.getCaseStmt() and this = ss.getCondition() and result = this and - cs = ss.getACase() | + cs = ss.getACase() + | // E.g. `case string` cs instanceof TypeCase and v.isMatch() and isNull = false or cs = any(ConstCase cc | - if cc.getExpr() instanceof NullLiteral then - // `case null` - if v.isMatch() then isNull = true else isNull = false - else ( - // E.g. `case ""` - v.isMatch() and - isNull = false + if cc.getExpr() instanceof NullLiteral + then + // `case null` + if v.isMatch() then isNull = true else isNull = false + else ( + // E.g. `case ""` + v.isMatch() and + isNull = false + ) ) - ) ) } @@ -356,14 +337,13 @@ class DereferenceableExpr extends Expr { * `x` is guaranteed to be `null`. */ private Expr getANullnessNullCheck(NullValue v, boolean isNull) { - exists(NullnessCompletion c | - c.isValidFor(this) | + exists(NullnessCompletion c | c.isValidFor(this) | result = this and - if c.isNull() then ( + if c.isNull() + then ( v.isNull() and isNull = true - ) - else ( + ) else ( not v.isNull() and isNull = false ) @@ -417,9 +397,7 @@ class AccessOrCallExpr extends Expr { * An expression can have more than one SSA qualifier in the presence * of control flow splitting. */ - Ssa::Definition getAnSsaQualifier(ControlFlow::Node cfn) { - result = getAnSsaQualifier(this, cfn) - } + Ssa::Definition getAnSsaQualifier(ControlFlow::Node cfn) { result = getAnSsaQualifier(this, cfn) } } private Declaration getDeclarationTarget(Expr e) { @@ -484,7 +462,9 @@ private AssignableAccess getATrackedAccess(Ssa::Definition def, ControlFlow::Nod */ class GuardedExpr extends AccessOrCallExpr { private Guard g; + private AccessOrCallExpr sub0; + private AbstractValue v0; GuardedExpr() { isGuardedByExpr(this, g, sub0, v0) } @@ -511,9 +491,7 @@ class GuardedExpr extends AccessOrCallExpr { * expression is guarded by a structurally equal expression having abstract * value `v`. */ - predicate mustHaveValue(AbstractValue v) { - exists(Expr e | e = this.getAGuard(e, v)) - } + predicate mustHaveValue(AbstractValue v) { exists(Expr e | e = this.getAGuard(e, v)) } /** * Holds if this expression is guarded by expression `cond`, which must @@ -549,7 +527,9 @@ class GuardedExpr extends AccessOrCallExpr { */ class GuardedControlFlowNode extends ControlFlow::Nodes::ElementNode { private Guard g; + private AccessOrCallExpr sub0; + private AbstractValue v0; GuardedControlFlowNode() { isGuardedByNode(this, g, sub0, v0) } @@ -576,9 +556,7 @@ class GuardedControlFlowNode extends ControlFlow::Nodes::ElementNode { * control flow node is guarded by a structurally equal expression having * abstract value `v`. */ - predicate mustHaveValue(AbstractValue v) { - exists(Expr e | e = this.getAGuard(e, v)) - } + predicate mustHaveValue(AbstractValue v) { exists(Expr e | e = this.getAGuard(e, v)) } } /** @@ -601,12 +579,13 @@ class GuardedControlFlowNode extends ControlFlow::Nodes::ElementNode { */ class GuardedDataFlowNode extends DataFlow::ExprNode { private Guard g; + private AccessOrCallExpr sub0; + private AbstractValue v0; GuardedDataFlowNode() { - exists(ControlFlow::Nodes::ElementNode cfn | - exists(this.getExprAtNode(cfn)) | + exists(ControlFlow::Nodes::ElementNode cfn | exists(this.getExprAtNode(cfn)) | isGuardedByNode(cfn, g, sub0, v0) ) } @@ -633,23 +612,17 @@ class GuardedDataFlowNode extends DataFlow::ExprNode { * data flow node is guarded by a structurally equal expression having * abstract value `v`. */ - predicate mustHaveValue(AbstractValue v) { - exists(Expr e | e = this.getAGuard(e, v)) - } + predicate mustHaveValue(AbstractValue v) { exists(Expr e | e = this.getAGuard(e, v)) } } /** An expression guarded by a `null` check. */ class NullGuardedExpr extends GuardedExpr { - NullGuardedExpr() { - this.mustHaveValue(any(NullValue v | not v.isNull())) - } + NullGuardedExpr() { this.mustHaveValue(any(NullValue v | not v.isNull())) } } /** A data flow node guarded by a `null` check. */ class NullGuardedDataFlowNode extends GuardedDataFlowNode { - NullGuardedDataFlowNode() { - this.mustHaveValue(any(NullValue v | not v.isNull())) - } + NullGuardedDataFlowNode() { this.mustHaveValue(any(NullValue v | not v.isNull())) } } /** INTERNAL: Do not use. */ @@ -657,16 +630,10 @@ module Internal { private import ControlFlow::Internal newtype TAbstractValue = - TBooleanValue(boolean b) { b = true or b = false } - or - TIntegerValue(int i) { - i = any(Expr e).getValue().toInt() - } - or - TNullValue(boolean b) { b = true or b = false } - or - TMatchValue(CaseStmt cs, boolean b) { b = true or b = false } - or + TBooleanValue(boolean b) { b = true or b = false } or + TIntegerValue(int i) { i = any(Expr e).getValue().toInt() } or + TNullValue(boolean b) { b = true or b = false } or + TMatchValue(CaseStmt cs, boolean b) { b = true or b = false } or TEmptyCollectionValue(boolean b) { b = true or b = false } /** Holds if expression `e` is a non-`null` value. */ @@ -682,6 +649,11 @@ module Internal { or e instanceof AddExpr and e.getType() instanceof StringType + or + e = any(MethodCall mc | + mc.getTarget() = any(SystemObjectClass c).getGetTypeMethod() and + not mc.isConditional() + ) } /** Holds if expression `e2` is a non-`null` value whenever `e1` is. */ @@ -698,20 +670,20 @@ module Internal { */ Expr getNullEquivParent(Expr e) { result = any(QualifiableExpr qe | - qe.isConditional() and - ( - e = qe.getQualifier() - or - e = qe.(ExtensionMethodCall).getArgument(0) - ) and - ( - // The accessed declaration must have a value type in order - // for `only if` to hold - result.(FieldAccess).getTarget().getType() instanceof ValueType - or - result.(Call).getTarget().getReturnType() instanceof ValueType + qe.isConditional() and + ( + e = qe.getQualifier() + or + e = qe.(ExtensionMethodCall).getArgument(0) + ) and + ( + // The accessed declaration must have a value type in order + // for `only if` to hold + result.(FieldAccess).getTarget().getType() instanceof ValueType + or + result.(Call).getTarget().getReturnType() instanceof ValueType + ) ) - ) or // In C#, `null + 1` has type `int?` with value `null` exists(BinaryArithmeticOperation bao, Expr o | @@ -730,14 +702,12 @@ module Internal { */ Expr getANullImplyingChild(Expr e) { e = any(QualifiableExpr qe | - qe.isConditional() and - result = qe.getQualifier() - ) + qe.isConditional() and + result = qe.getQualifier() + ) or // In C#, `null + 1` has type `int?` with value `null` - e = any(BinaryArithmeticOperation bao | - result = bao.getAnOperand() - ) + e = any(BinaryArithmeticOperation bao | result = bao.getAnOperand()) } /** An expression whose value may control the execution of another element. */ @@ -763,7 +733,8 @@ module Internal { /** Holds if basic block `bb` only is reached when this guard has abstract value `v`. */ predicate controls(BasicBlock bb, AbstractValue v) { exists(ControlFlowElement cfe, ConditionalSuccessor s, AbstractValue v0, Guard g | - cfe.controlsBlock(bb, s) | + cfe.controlsBlock(bb, s) + | v0.branch(cfe, s, g) and impliesSteps(g, v0, this, v) ) @@ -780,8 +751,7 @@ module Internal { | a.strictlyDominates(cfn.getBasicBlock()) or - exists(BasicBlock bb, int i, int j | - bb.getNode(i) = a.getAControlFlowNode() | + exists(BasicBlock bb, int i, int j | bb.getNode(i) = a.getAControlFlowNode() | bb.getNode(j) = cfn and j > i ) @@ -793,8 +763,7 @@ module Internal { * because of an assertion. */ predicate assertionControlsElement(ControlFlowElement cfe, AbstractValue v) { - forex(ControlFlow::Node cfn | - cfn = cfe.getAControlFlowNode() | + forex(ControlFlow::Node cfn | cfn = cfe.getAControlFlowNode() | this.assertionControlsNode(cfn, v) ) } @@ -804,16 +773,14 @@ module Internal { * not taking implications into account. */ predicate preControlsDirect(PreBasicBlocks::PreBasicBlock bb, AbstractValue v) { - exists(PreBasicBlocks::ConditionBlock cb, ConditionalSuccessor s | - cb.controls(bb, s) | + exists(PreBasicBlocks::ConditionBlock cb, ConditionalSuccessor s | cb.controls(bb, s) | v.branch(cb.getLastElement(), s, this) ) } /** Holds if pre-basic-block `bb` only is reached when this guard has abstract value `v`. */ predicate preControls(PreBasicBlocks::PreBasicBlock bb, AbstractValue v) { - exists(AbstractValue v0, Guard g | - g.preControlsDirect(bb, v0) | + exists(AbstractValue v0, Guard g | g.preControlsDirect(bb, v0) | preImpliesSteps(g, v0, this, v) ) } @@ -821,7 +788,8 @@ module Internal { /** Gets the successor block that is reached when this guard has abstract value `v`. */ PreBasicBlocks::PreBasicBlock getConditionalSuccessor(AbstractValue v) { exists(PreBasicBlocks::ConditionBlock pred, ConditionalSuccessor s | - v.branch(pred.getLastElement(), s, this) | + v.branch(pred.getLastElement(), s, this) + | result = pred.getASuccessorByType(s) ) } @@ -849,10 +817,10 @@ module Internal { private Expr stripConditionalExpr(Expr e) { e = any(ConditionalExpr ce | - result = stripConditionalExpr(ce.getThen()) - or - result = stripConditionalExpr(ce.getElse()) - ) + result = stripConditionalExpr(ce.getThen()) + or + result = stripConditionalExpr(ce.getElse()) + ) or not e instanceof ConditionalExpr and result = e @@ -878,7 +846,8 @@ module Internal { predicate nullGuardedReturn(Expr ret, boolean isNull) { canReturn(p.getCallable(), ret) and exists(PreBasicBlocks::PreBasicBlock bb, NullValue nv | - this.getARead().(Guard).preControls(bb, nv) | + this.getARead().(Guard).preControls(bb, nv) + | ret = bb.getAnElement() and if nv.isNull() then isNull = true else isNull = false ) @@ -890,18 +859,17 @@ module Internal { * `p` belongs, and `ret` having Boolean value `retVal` allows the conclusion * that the parameter `p` either is `null` or non-`null`, as specified by `isNull`. */ - private predicate validReturnInCustomNullCheck(Expr ret, Parameter p, BooleanValue retVal, boolean isNull) { - exists(Callable c | - canReturn(c, ret) | + private predicate validReturnInCustomNullCheck( + Expr ret, Parameter p, BooleanValue retVal, boolean isNull + ) { + exists(Callable c | canReturn(c, ret) | p.getCallable() = c and c.getReturnType() instanceof BoolType ) and - exists(PreSsaImplicitParameterDefinition def | - p = def.getParameter() | + exists(PreSsaImplicitParameterDefinition def | p = def.getParameter() | def.nullGuardedReturn(ret, isNull) or - exists(NullValue nv | - preImpliesSteps(ret, retVal, def.getARead(), nv) | + exists(NullValue nv | preImpliesSteps(ret, retVal, def.getARead(), nv) | if nv.isNull() then isNull = true else isNull = false ) ) @@ -922,7 +890,7 @@ module Internal { forex(Expr ret | canReturn(result, ret) and not ret.(BoolLiteral).getBoolValue() = retVal.getValue().booleanNot() - | + | validReturnInCustomNullCheck(ret, p, retVal, isNull) ) } @@ -931,19 +899,20 @@ module Internal { * Holds if the evaluation of `guard` to `vGuard` implies that `def` is assigned * expression `e`. */ - private predicate conditionalAssign(Guard guard, AbstractValue vGuard, PreSsa::Definition def, Expr e) { + private predicate conditionalAssign( + Guard guard, AbstractValue vGuard, PreSsa::Definition def, Expr e + ) { // For example: // v = guard ? e : x; - exists(ConditionalExpr c | - c = def.getDefinition().getSource() | + exists(ConditionalExpr c | c = def.getDefinition().getSource() | guard = c.getCondition() and vGuard = any(BooleanValue bv | - bv.getValue() = true and - e = c.getThen() - or - bv.getValue() = false and - e = c.getElse() - ) + bv.getValue() = true and + e = c.getThen() + or + bv.getValue() = false and + e = c.getElse() + ) ) or exists(PreSsa::Definition upd, PreBasicBlocks::PreBasicBlock bbGuard | @@ -953,8 +922,7 @@ module Internal { bbGuard.getAnElement() = guard and bbGuard.strictlyDominates(def.getBasicBlock()) and not guard.preControlsDirect(def.getBasicBlock(), vGuard) and - forall(PreSsa::Definition other | - other != upd and other = def.getAPhiInput() | + forall(PreSsa::Definition other | other != upd and other = def.getAPhiInput() | // For example: // if (guard) // upd = a; @@ -978,7 +946,9 @@ module Internal { * Holds if the evaluation of `guard` to `vGuard` implies that `def` is assigned * an expression with abstract value `vDef`. */ - private predicate conditionalAssignVal(Expr guard, AbstractValue vGuard, PreSsa::Definition def, AbstractValue vDef) { + private predicate conditionalAssignVal( + Expr guard, AbstractValue vGuard, PreSsa::Definition def, AbstractValue vDef + ) { conditionalAssign(guard, vGuard, def, vDef.getAnExpr()) } @@ -998,24 +968,24 @@ module Internal { * expression `x` is guaranteed to be equal to `""`. */ private Expr getABooleanEqualityCheck(Expr e1, BooleanValue v, Expr e2) { - exists(boolean branch | - branch = v.getValue() | + exists(boolean branch | branch = v.getValue() | exists(ComparisonTest ct, ComparisonKind ck | ct.getExpr() = result and ct.getAnArgument() = e1 and ct.getAnArgument() = e2 and e2 != e1 and - ck = ct.getComparisonKind() | + ck = ct.getComparisonKind() + | ck.isEquality() and branch = true or ck.isInequality() and branch = false ) or result = any(IsExpr ie | - ie.getExpr() = e1 and - e2 = ie.(IsConstantExpr).getConstant() and - branch = true - ) + ie.getExpr() = e1 and + e2 = ie.(IsConstantExpr).getConstant() and + branch = true + ) ) } @@ -1042,8 +1012,7 @@ module Internal { * then `o` is guaranteed to be equal to `""`. */ private Expr getAMatchingEqualityCheck(Expr e1, MatchValue v, Expr e2) { - exists(SwitchStmt ss, ConstCase cc | - cc = v.getCaseStmt() | + exists(SwitchStmt ss, ConstCase cc | cc = v.getCaseStmt() | e1 = ss.getCondition() and result = e1 and cc = ss.getACase() and @@ -1078,10 +1047,11 @@ module Internal { * Holds if the evaluation of `guard` to `vGuard` implies that `def` does not * have the value `vDef`. */ - private predicate guardImpliesNotEqual(Expr guard, AbstractValue vGuard, PreSsa::Definition def, AbstractValue vDef) { + private predicate guardImpliesNotEqual( + Expr guard, AbstractValue vGuard, PreSsa::Definition def, AbstractValue vDef + ) { relevantEq(def, vDef) and - exists(AssignableRead ar | - ar = def.getARead() | + exists(AssignableRead ar | ar = def.getARead() | // For example: // if (de == null); vGuard = TBooleanValue(false); vDef = TNullValue(true) // but not @@ -1094,7 +1064,8 @@ module Internal { // or // if (de == null); vGuard = TBooleanValue(true); vDef = TNullValue(false) exists(NullValue nv | - guard = ar.(DereferenceableExpr).getANullCheck(vGuard, any(boolean b | nv = TNullValue(b))) | + guard = ar.(DereferenceableExpr).getANullCheck(vGuard, any(boolean b | nv = TNullValue(b))) + | vDef = nv.getDualValue() ) or @@ -1115,8 +1086,7 @@ module Internal { | not exists(input.getDefinition().getSource()) or - exists(Expr e | - e = stripConditionalExpr(input.getDefinition().getSource()) | + exists(Expr e | e = stripConditionalExpr(input.getDefinition().getSource()) | not e = any(AbstractValue v).getAnExpr() ) ) @@ -1133,7 +1103,8 @@ module Internal { fromBackEdge = false or exists(PreSsa::Definition input, PreBasicBlocks::PreBasicBlock pred, boolean fbe | - input = def.getAPhiInput() | + input = def.getAPhiInput() + | pred = def.getBasicBlock().getAPredecessor() and PreSsa::ssaDefReachesEndOfBlock(pred, input, _) and result = getADefinition(input, fbe) and @@ -1146,10 +1117,11 @@ module Internal { * `fromBackEdge` indicates whether the flow from `e` to `def` goes through a * back edge. */ - private predicate possibleValue(PreSsa::Definition def, boolean fromBackEdge, Expr e, AbstractValue v) { + private predicate possibleValue( + PreSsa::Definition def, boolean fromBackEdge, Expr e, AbstractValue v + ) { not hasPossibleUnknownValue(def) and - exists(PreSsa::Definition input | - input = getADefinition(def, fromBackEdge) | + exists(PreSsa::Definition input | input = getADefinition(def, fromBackEdge) | e = stripConditionalExpr(input.getDefinition().getSource()) and v.getAnExpr() = e ) @@ -1176,7 +1148,9 @@ module Internal { * Holds if `guard` having abstract value `vGuard` implies that `def` has * abstract value `vDef`. */ - private predicate guardImpliesEqual(Guard guard, AbstractValue vGuard, PreSsa::Definition def, AbstractValue vDef) { + private predicate guardImpliesEqual( + Guard guard, AbstractValue vGuard, PreSsa::Definition def, AbstractValue vDef + ) { guard = getAnEqualityCheck(def.getARead(), vGuard, vDef.getAnExpr()) } @@ -1184,17 +1158,15 @@ module Internal { * A helper class for calculating structurally equal access/call expressions. */ private class ConditionOnExprComparisonConfig extends InternalStructuralComparisonConfiguration { - ConditionOnExprComparisonConfig() { - this = "ConditionOnExprComparisonConfig" - } + ConditionOnExprComparisonConfig() { this = "ConditionOnExprComparisonConfig" } override predicate candidate(Element x, Element y) { exists(BasicBlock bb, Declaration d | candidateAux(x, d, bb) and y = any(AccessOrCallExpr e | - e.getAControlFlowNode().getBasicBlock() = bb and - e.getTarget() = d - ) + e.getAControlFlowNode().getBasicBlock() = bb and + e.getTarget() = d + ) ) } @@ -1203,11 +1175,10 @@ module Internal { * is a sub expression of a condition that controls whether basic block * `bb` is reached. */ - pragma [noinline] + pragma[noinline] private predicate candidateAux(AccessOrCallExpr e, Declaration target, BasicBlock bb) { target = e.getTarget() and - exists(Guard g | - e = g.getAChildExpr*() | + exists(Guard g | e = g.getAChildExpr*() | g.controls(bb, _) or g.assertionControlsElement(bb.getANode().getElement(), _) @@ -1215,18 +1186,23 @@ module Internal { } } - private cached module Cached { + cached + private module Cached { pragma[noinline] - private predicate isGuardedByNode0(ControlFlow::Node cfn, AccessOrCallExpr guarded, Guard g, AccessOrCallExpr sub, AbstractValue v) { + private predicate isGuardedByNode0( + ControlFlow::Node cfn, AccessOrCallExpr guarded, Guard g, AccessOrCallExpr sub, + AbstractValue v + ) { cfn = guarded.getAControlFlowNode() and g.controls(cfn.getBasicBlock(), v) and exists(ConditionOnExprComparisonConfig c | c.same(sub, guarded)) } pragma[noinline] - private predicate isGuardedByExpr1(AccessOrCallExpr guarded, Guard g, AccessOrCallExpr sub, AbstractValue v) { - forex(ControlFlow::Node cfn | - cfn = guarded.getAControlFlowNode() | + private predicate isGuardedByExpr1( + AccessOrCallExpr guarded, Guard g, AccessOrCallExpr sub, AbstractValue v + ) { + forex(ControlFlow::Node cfn | cfn = guarded.getAControlFlowNode() | isGuardedByNode0(cfn, guarded, g, sub, v) ) or @@ -1235,17 +1211,20 @@ module Internal { } cached - predicate isGuardedByExpr(AccessOrCallExpr guarded, Guard g, AccessOrCallExpr sub, AbstractValue v) { + predicate isGuardedByExpr( + AccessOrCallExpr guarded, Guard g, AccessOrCallExpr sub, AbstractValue v + ) { isGuardedByExpr1(guarded, g, sub, v) and sub = g.getAChildExpr*() and - forall(Ssa::Definition def | - def = sub.getAnSsaQualifier(_) | + forall(Ssa::Definition def | def = sub.getAnSsaQualifier(_) | def = guarded.getAnSsaQualifier(_) ) } pragma[noinline] - private predicate isGuardedByNode1(ControlFlow::Nodes::ElementNode guarded, Guard g, AccessOrCallExpr sub, AbstractValue v) { + private predicate isGuardedByNode1( + ControlFlow::Nodes::ElementNode guarded, Guard g, AccessOrCallExpr sub, AbstractValue v + ) { isGuardedByNode0(guarded, _, g, sub, v) or g.assertionControlsNode(guarded, v) and @@ -1253,13 +1232,15 @@ module Internal { } cached - predicate isGuardedByNode(ControlFlow::Nodes::ElementNode guarded, Guard g, AccessOrCallExpr sub, AbstractValue v) { + predicate isGuardedByNode( + ControlFlow::Nodes::ElementNode guarded, Guard g, AccessOrCallExpr sub, AbstractValue v + ) { isGuardedByNode1(guarded, g, sub, v) and sub = g.getAChildExpr*() and - forall(Ssa::Definition def | - def = sub.getAnSsaQualifier(_) | + forall(Ssa::Definition def | def = sub.getAnSsaQualifier(_) | exists(ControlFlow::Node cfn | - def = guarded.getElement().(AccessOrCallExpr).getAnSsaQualifier(cfn) | + def = guarded.getElement().(AccessOrCallExpr).getAnSsaQualifier(cfn) + | cfn.getBasicBlock() = guarded.getBasicBlock() ) ) @@ -1276,10 +1257,8 @@ module Internal { predicate impliesStep(Guard g1, AbstractValue v1, Guard g2, AbstractValue v2) { preImpliesStep(g1, v1, g2, v2) or - forex(ControlFlow::Node cfn | - cfn = g1.getAControlFlowNode() | - exists(Ssa::ExplicitDefinition def | - def.getADefinition().getSource() = g2 | + forex(ControlFlow::Node cfn | cfn = g1.getAControlFlowNode() | + exists(Ssa::ExplicitDefinition def | def.getADefinition().getSource() = g2 | g1 = def.getAReadAtNode(cfn) and v1 = g1.getAValue() and v2 = v1 @@ -1292,7 +1271,8 @@ module Internal { // The predicates in this module should be cached in the same stage as the cache stage // in ControlFlowGraph.qll. This is to avoid recomputation of pre-basic-blocks and // pre-SSA predicates - cached module CachedWithCFG { + cached + module CachedWithCFG { cached predicate isCustomNullCheck(Call call, Expr arg, BooleanValue v, boolean isNull) { exists(Callable callable, Parameter p | @@ -1312,24 +1292,24 @@ module Internal { cached predicate preImpliesStep(Guard g1, AbstractValue v1, Guard g2, AbstractValue v2) { g1 = any(BinaryOperation bo | - ( - bo instanceof BitwiseAndExpr or - bo instanceof LogicalAndExpr - ) and - g2 = bo.getAnOperand() and - v1 = TBooleanValue(true) and - v2 = v1 - ) + ( + bo instanceof BitwiseAndExpr or + bo instanceof LogicalAndExpr + ) and + g2 = bo.getAnOperand() and + v1 = TBooleanValue(true) and + v2 = v1 + ) or g1 = any(BinaryOperation bo | - ( - bo instanceof BitwiseOrExpr or - bo instanceof LogicalOrExpr - ) and - g2 = bo.getAnOperand() and - v1 = TBooleanValue(false) and - v2 = v1 - ) + ( + bo instanceof BitwiseOrExpr or + bo instanceof LogicalOrExpr + ) and + g2 = bo.getAnOperand() and + v1 = TBooleanValue(false) and + v2 = v1 + ) or g2 = g1.(LogicalNotExpr).getOperand() and v2 = TBooleanValue(v1.(BooleanValue).getValue().booleanNot()) @@ -1339,7 +1319,8 @@ module Internal { b = boolLit.getBoolValue() and g2 = ct.getAnArgument() and g1 = ct.getExpr() and - v2 = TBooleanValue(v1.(BooleanValue).getValue().booleanXor(polarity).booleanXor(b)) | + v2 = TBooleanValue(v1.(BooleanValue).getValue().booleanXor(polarity).booleanXor(b)) + | ct.getComparisonKind().isEquality() and polarity = true or @@ -1376,14 +1357,13 @@ module Internal { or v1 = g1.getAValue() and v1 = any(MatchValue mv | - mv.isMatch() and - g2 = g1 and - v2.getAnExpr() = mv.getCaseStmt().(ConstCase).getExpr() and - v1 != v2 - ) + mv.isMatch() and + g2 = g1 and + v2.getAnExpr() = mv.getCaseStmt().(ConstCase).getExpr() and + v1 != v2 + ) or - exists(boolean isNull | - g1 = g2.(DereferenceableExpr).getANullCheck(v1, isNull) | + exists(boolean isNull | g1 = g2.(DereferenceableExpr).getANullCheck(v1, isNull) | v2 = any(NullValue nv | if nv.isNull() then isNull = true else isNull = false) and (g1 != g2 or v1 != v2) ) @@ -1410,8 +1390,7 @@ module Internal { v1 = g1.getAValue() and v2 = v1.(NullValue) or - exists(PreSsa::Definition def | - def.getDefinition().getSource() = g2 | + exists(PreSsa::Definition def | def.getDefinition().getSource() = g2 | g1 = def.getARead() and v1 = g1.getAValue() and v2 = v1 @@ -1452,8 +1431,7 @@ module Internal { v1 = v2 and v1 = g1.getAValue() or - exists(Expr mid, AbstractValue vMid | - preImpliesSteps(g1, v1, mid, vMid) | + exists(Expr mid, AbstractValue vMid | preImpliesSteps(g1, v1, mid, vMid) | preImpliesStep(mid, vMid, g2, v2) ) } @@ -1470,8 +1448,7 @@ module Internal { v1 = v2 and v1 = g1.getAValue() or - exists(Expr mid, AbstractValue vMid | - impliesSteps(g1, v1, mid, vMid) | + exists(Expr mid, AbstractValue vMid | impliesSteps(g1, v1, mid, vMid) | impliesStep(mid, vMid, g2, v2) ) } diff --git a/csharp/ql/src/semmle/code/csharp/dataflow/DataFlow.qll b/csharp/ql/src/semmle/code/csharp/dataflow/DataFlow.qll index b8acdf28275..1a423dcd289 100755 --- a/csharp/ql/src/semmle/code/csharp/dataflow/DataFlow.qll +++ b/csharp/ql/src/semmle/code/csharp/dataflow/DataFlow.qll @@ -65,29 +65,24 @@ module DataFlow { override DotNet::Type getType() { result = this.getExpr().getType() } - override DotNet::Callable getEnclosingCallable() { result = this.getExpr().getEnclosingCallable() } + override DotNet::Callable getEnclosingCallable() { + result = this.getExpr().getEnclosingCallable() + } override string toString() { - exists(ControlFlow::Nodes::ElementNode cfn | - this = TExprNode(cfn) | - result = cfn.toString() - ) + exists(ControlFlow::Nodes::ElementNode cfn | this = TExprNode(cfn) | result = cfn.toString()) or this = TCilExprNode(_) and result = "CIL expression" } override Location getLocation() { - exists(ControlFlow::Nodes::ElementNode cfn | - this = TExprNode(cfn) | + exists(ControlFlow::Nodes::ElementNode cfn | this = TExprNode(cfn) | result = cfn.getLocation() ) or result.getFile().isPdbSourceFile() and - exists(CIL::Expr e | - this = TCilExprNode(e) | - result = e.getALocation() - ) + exists(CIL::Expr e | this = TCilExprNode(e) | result = e.getALocation()) } } @@ -118,9 +113,7 @@ module DataFlow { * Holds if data flows from `source` to `sink` in zero or more local * (intra-procedural) steps. */ - predicate localFlow(Node source, Node sink) { - localFlowStep*(source, sink) - } + predicate localFlow(Node source, Node sink) { localFlowStep*(source, sink) } predicate localFlowStep = Internal::LocalFlow::step/2; @@ -131,6 +124,7 @@ module DataFlow { */ class PathNode extends Internal::TFlowGraphNode { Node node; + Configuration config; PathNode() { @@ -151,9 +145,7 @@ module DataFlow { Configuration getConfiguration() { result = config } /** Gets a successor path node, if any. */ - PathNode getASuccessor() { - result = this.(Internal::FlowGraphNode).getASuccessor() - } + PathNode getASuccessor() { result = this.(Internal::FlowGraphNode).getASuccessor() } } /** @@ -250,7 +242,9 @@ module DataFlow { * `p` via call `call` must be taken into account in the analysis, but * only in call context `cc`. */ - predicate isAdditionalFlowStepIntoCall(Node call, Node arg, DotNet::Parameter p, CallContext cc) { none() } + predicate isAdditionalFlowStepIntoCall(Node call, Node arg, DotNet::Parameter p, CallContext cc) { + none() + } /** * INTERNAL: Do not use. @@ -259,14 +253,14 @@ module DataFlow { * `call` must be taken into account in the analysis, but only in call * context `cc`. */ - predicate isAdditionalFlowStepOutOfCall(Node call, Node ret, Node out, CallContext cc) { none() } + predicate isAdditionalFlowStepOutOfCall(Node call, Node ret, Node out, CallContext cc) { + none() + } /** * Holds if data may flow from `source` to `sink` for this configuration. */ - predicate hasFlow(Node source, Node sink) { - Internal::flowsTo(_, source, _, sink, this) - } + predicate hasFlow(Node source, Node sink) { Internal::flowsTo(_, source, _, sink, this) } /** * Holds if data may flow from `source` to `sink` for this configuration. @@ -312,7 +306,8 @@ module DataFlow { */ predicate explicitParameterNode(SsaDefinitionNode node, Parameter p) { exists(Ssa::ExplicitDefinition def, AssignableDefinitions::ImplicitParameterDefinition pdef | - node = TSsaDefinitionNode(def) | + node = TSsaDefinitionNode(def) + | pdef = def.getADefinition() and p = pdef.getParameter() ) @@ -346,8 +341,7 @@ module DataFlow { * captured local scope variable `v`. */ predicate implicitCapturedParameterNode(SsaDefinitionNode node, LocalScopeVariable v) { - exists(Ssa::ImplicitEntryDefinition def | - node = TSsaDefinitionNode(def) | + exists(Ssa::ImplicitEntryDefinition def | node = TSsaDefinitionNode(def) | def.getSourceVariable().getAssignable() = v ) } @@ -379,7 +373,7 @@ module DataFlow { } /** A data flow node that represents a call. */ - private abstract class CallNode extends Node { + abstract private class CallNode extends Node { DotNet::Expr call; /** Gets the underlying call expression. */ @@ -389,9 +383,7 @@ module DataFlow { * Gets the argument call context corresponding to the `i`th argument * of this call. */ - ArgumentCallContext getCallContext(int i) { - result.isArgument(call, i) - } + ArgumentCallContext getCallContext(int i) { result.isArgument(call, i) } /** * Gets the argument call context corresponding to the implicit parameter for @@ -405,8 +397,7 @@ module DataFlow { /** A data flow node that represents an explicit call. */ private class ExplicitCallNode extends CallNode, ExprNode { ExplicitCallNode() { - call = this.getExpr() - and + call = this.getExpr() and (call instanceof NonDelegateCall or call instanceof DelegateCall) } } @@ -437,7 +428,7 @@ module DataFlow { } /** A data flow node that represents the output of a call. */ - private abstract class OutNode extends Node { } + abstract private class OutNode extends Node { } /** * A data flow node that represents the explicit output of a call. @@ -448,14 +439,15 @@ module DataFlow { ExplicitOutNode() { exists(DotNet::Expr e | e = this.asExpr() and - not e.getType() instanceof VoidType | + not e.getType() instanceof VoidType + | e instanceof NonDelegateCall or e instanceof DelegateCall ) or this.(SsaDefinitionNode).getDefinition() = any(Ssa::ExplicitDefinition def | - def.getADefinition() instanceof AssignableDefinitions::OutRefDefinition - ) + def.getADefinition() instanceof AssignableDefinitions::OutRefDefinition + ) } } @@ -488,9 +480,9 @@ module DataFlow { } /** A data flow node that represents a call argument. */ - private abstract class ArgumentNode extends Node { + abstract private class ArgumentNode extends Node { /** Gets the context corresponding to this argument node. */ - bindingset [config] + bindingset[config] abstract ArgumentContext getContext(Configuration config); /** Holds if this argument node does not have an associated control flow node. */ @@ -500,8 +492,7 @@ module DataFlow { /** A data flow node that represents an explicit call argument. */ private class ExplicitArgumentNode extends ArgumentNode { ExplicitArgumentNode() { - exists(DotNet::Expr e | - e = this.asExpr() | + exists(DotNet::Expr e | e = this.asExpr() | e = any(NonDelegateCall ndc).getArgument(_) or e = any(DelegateCall dc).getAnArgument() ) @@ -513,8 +504,7 @@ module DataFlow { * Holds if this argument occurs at position `pos` in call `call`. */ predicate isArgumentOf(CallNode call, int pos, Configuration config) { - exists(ExplicitParameterNode p | - flowIntoCallableStep(call, this, p, _, config) | + exists(ExplicitParameterNode p | flowIntoCallableStep(call, this, p, _, config) | pos = p.getParameter().getPosition() ) } @@ -523,13 +513,12 @@ module DataFlow { * Gets the argument call context corresponding to this explicit argument. */ ArgumentCallContext getArgumentCallContext(Configuration config) { - exists(CallNode call, int pos | - this.isArgumentOf(call, pos, config) | - result = call.getCallContext(pos) - ) + exists(CallNode call, int pos | this.isArgumentOf(call, pos, config) | + result = call.getCallContext(pos) + ) } - bindingset [config] + bindingset[config] override ExplicitArgumentContext getContext(Configuration config) { result.getCallContext() = this.getArgumentCallContext(config) } @@ -558,6 +547,7 @@ module DataFlow { */ private class ImplicitCapturedArgumentNode extends ArgumentNode, TImplicitCapturedArgumentNode { Call c; + LocalScopeVariable v; ImplicitCapturedArgumentNode() { this = TImplicitCapturedArgumentNode(c, v) } @@ -573,13 +563,12 @@ module DataFlow { * using one or more calls. */ predicate flowsIn(Ssa::ImplicitEntryDefinition def) { - exists(Ssa::ExplicitDefinition edef | - edef.isCapturedVariableDefinitionFlowIn(def, c) | + exists(Ssa::ExplicitDefinition edef | edef.isCapturedVariableDefinitionFlowIn(def, c) | v = def.getSourceVariable().getAssignable() ) } - bindingset [config] + bindingset[config] override ImplicitCapturedArgumentContext getContext(Configuration config) { result.getArgument() = this and exists(config) // eliminate warning @@ -599,7 +588,7 @@ module DataFlow { /** * A data flow node that represents a value returned by a callable. */ - private abstract class ReturnNode extends Node { } + abstract private class ReturnNode extends Node { } /** * A data flow node that represents an expression returned explicitly by a callable. @@ -608,8 +597,7 @@ module DataFlow { */ private class ExplicitReturnNode extends ReturnNode, ExprNode { ExplicitReturnNode() { - exists(DotNet::Callable c, DotNet::Expr e | - e = this.getExpr() | + exists(DotNet::Callable c, DotNet::Expr e | e = this.getExpr() | c.canReturn(e) or c.(Callable).canYieldReturn(e) or callableReturnsOutOrRef(c, _, e) @@ -652,36 +640,37 @@ module DataFlow { } } - /** - * Gets a source declaration of callable `c` that has a body. - * If the callable has both CIL and source code, return only the source - * code version. - */ + /** + * Gets a source declaration of callable `c` that has a body. + * If the callable has both CIL and source code, return only the source + * code version. + */ private DotNet::Callable getCallableForDataFlow(DotNet::Callable c) { - result.hasBody() - and - exists(DotNet::Callable sourceDecl | - sourceDecl = c.getSourceDeclaration() | - if sourceDecl.getFile().fromSource() then + result.hasBody() and + exists(DotNet::Callable sourceDecl | sourceDecl = c.getSourceDeclaration() | + if sourceDecl.getFile().fromSource() + then // C# callable with C# implementation in the database result = sourceDecl - else if sourceDecl instanceof CIL::Callable then - // CIL callable with C# implementation in the database - sourceDecl.matchesHandle(result.(Callable)) - or - // CIL callable without C# implementation in the database - not sourceDecl.matchesHandle(any(Callable k)) and - result = sourceDecl else - // C# callable without C# implementation in the database - sourceDecl.matchesHandle(result.(CIL::Callable)) + if sourceDecl instanceof CIL::Callable + then + // CIL callable with C# implementation in the database + sourceDecl.matchesHandle(result.(Callable)) + or + // CIL callable without C# implementation in the database + not sourceDecl.matchesHandle(any(Callable k)) and + result = sourceDecl + else + // C# callable without C# implementation in the database + sourceDecl.matchesHandle(result.(CIL::Callable)) ) } /** * A non-delegate call. Either a C# call or a CIL call. */ - private abstract class NonDelegateCall extends DotNet::Expr { + abstract private class NonDelegateCall extends DotNet::Expr { /** * Gets a run-time target of this call. A target is always a source * declaration, and if the callable has both CIL and source code, only @@ -696,17 +685,13 @@ module DataFlow { private class CSharpCall extends NonDelegateCall, Expr { DispatchCall dc; - CSharpCall() { - this = dc.getCall() - } + CSharpCall() { this = dc.getCall() } override DotNet::Callable getARuntimeTarget() { result = getCallableForDataFlow(dc.getADynamicTarget()) } - override Expr getArgument(int i) { - result = dc.getArgument(i) - } + override Expr getArgument(int i) { result = dc.getArgument(i) } } private class CilCall extends NonDelegateCall { @@ -722,9 +707,7 @@ module DataFlow { result = getCallableForDataFlow(call.getTarget().getAnOverrider*()) } - override CIL::Expr getArgument(int i) { - result = call.getArgument(i) - } + override CIL::Expr getArgument(int i) { result = call.getArgument(i) } } /** @@ -742,7 +725,12 @@ module DataFlow { * indicates whether a transitive child of `scope` is allowed * (`exactScope = false`). */ - predicate stepsToExpr(Expr exprFrom, Expr exprTo, ControlFlowElement scope, boolean exactScope, boolean isSuccessor) { none() } + predicate stepsToExpr( + Expr exprFrom, Expr exprTo, ControlFlowElement scope, boolean exactScope, + boolean isSuccessor + ) { + none() + } /** * Holds if data can flow from expression `exprFrom` to definition `defTo`, @@ -750,11 +738,20 @@ module DataFlow { * specified by `isSuccesor`) inside the scope `scope`. The Bolean `exactScope` * indicates whether a transitive child of `scope` is allowed (`exactScope = false`). */ - predicate stepsToDefinition(Expr exprFrom, AssignableDefinition defTo, ControlFlowElement scope, boolean exactScope, boolean isSuccessor) { none() } + predicate stepsToDefinition( + Expr exprFrom, AssignableDefinition defTo, ControlFlowElement scope, boolean exactScope, + boolean isSuccessor + ) { + none() + } - private predicate reachesBasicBlockExprRec(Expr exprFrom, Expr exprTo, ControlFlowElement scope, boolean exactScope, boolean isSuccessor, ControlFlow::Nodes::ElementNode cfnFrom, ControlFlow::BasicBlock bb) { + private predicate reachesBasicBlockExprRec( + Expr exprFrom, Expr exprTo, ControlFlowElement scope, boolean exactScope, + boolean isSuccessor, ControlFlow::Nodes::ElementNode cfnFrom, ControlFlow::BasicBlock bb + ) { exists(ControlFlow::BasicBlock mid | - this.reachesBasicBlockExpr(exprFrom, exprTo, scope, exactScope, isSuccessor, cfnFrom, mid) | + this.reachesBasicBlockExpr(exprFrom, exprTo, scope, exactScope, isSuccessor, cfnFrom, mid) + | isSuccessor = true and bb = mid.getASuccessor() or @@ -764,13 +761,18 @@ module DataFlow { } pragma[nomagic] - private predicate reachesBasicBlockExpr(Expr exprFrom, Expr exprTo, ControlFlowElement scope, boolean exactScope, boolean isSuccessor, ControlFlow::Nodes::ElementNode cfnFrom, ControlFlow::BasicBlock bb) { + private predicate reachesBasicBlockExpr( + Expr exprFrom, Expr exprTo, ControlFlowElement scope, boolean exactScope, + boolean isSuccessor, ControlFlow::Nodes::ElementNode cfnFrom, ControlFlow::BasicBlock bb + ) { this.stepsToExpr(exprFrom, exprTo, scope, exactScope, isSuccessor) and cfnFrom = exprFrom.getAControlFlowNode() and bb = cfnFrom.getBasicBlock() or exists(ControlFlowElement scope0, boolean exactScope0 | - this.reachesBasicBlockExprRec(exprFrom, exprTo, scope0, exactScope0, isSuccessor, cfnFrom, bb) and + this + .reachesBasicBlockExprRec(exprFrom, exprTo, scope0, exactScope0, isSuccessor, cfnFrom, + bb) and this.stepsToExpr(exprFrom, exprTo, scope, exactScope, isSuccessor) | exactScope0 = false and @@ -781,9 +783,15 @@ module DataFlow { ) } - private predicate reachesBasicBlockDefinitionRec(Expr exprFrom, AssignableDefinition defTo, ControlFlowElement scope, boolean exactScope, boolean isSuccessor, ControlFlow::Nodes::ElementNode cfnFrom, ControlFlow::BasicBlock bb) { + private predicate reachesBasicBlockDefinitionRec( + Expr exprFrom, AssignableDefinition defTo, ControlFlowElement scope, boolean exactScope, + boolean isSuccessor, ControlFlow::Nodes::ElementNode cfnFrom, ControlFlow::BasicBlock bb + ) { exists(ControlFlow::BasicBlock mid | - this.reachesBasicBlockDefinition(exprFrom, defTo, scope, exactScope, isSuccessor, cfnFrom, mid) | + this + .reachesBasicBlockDefinition(exprFrom, defTo, scope, exactScope, isSuccessor, cfnFrom, + mid) + | isSuccessor = true and bb = mid.getASuccessor() or @@ -791,16 +799,20 @@ module DataFlow { bb = mid.getAPredecessor() ) } - pragma[nomagic] - private predicate reachesBasicBlockDefinition(Expr exprFrom, AssignableDefinition defTo, ControlFlowElement scope, boolean exactScope, boolean isSuccessor, ControlFlow::Nodes::ElementNode cfnFrom, ControlFlow::BasicBlock bb) { + private predicate reachesBasicBlockDefinition( + Expr exprFrom, AssignableDefinition defTo, ControlFlowElement scope, boolean exactScope, + boolean isSuccessor, ControlFlow::Nodes::ElementNode cfnFrom, ControlFlow::BasicBlock bb + ) { this.stepsToDefinition(exprFrom, defTo, scope, exactScope, isSuccessor) and cfnFrom = exprFrom.getAControlFlowNode() and bb = cfnFrom.getBasicBlock() or exists(ControlFlowElement scope0, boolean exactScope0 | - this.reachesBasicBlockDefinitionRec(exprFrom, defTo, scope0, exactScope0, isSuccessor, cfnFrom, bb) and + this + .reachesBasicBlockDefinitionRec(exprFrom, defTo, scope0, exactScope0, isSuccessor, + cfnFrom, bb) and this.stepsToDefinition(exprFrom, defTo, scope, exactScope, isSuccessor) | exactScope0 = false and @@ -812,16 +824,24 @@ module DataFlow { } private predicate hasExprStep(ExprNode nodeFrom, ExprNode nodeTo) { - exists(Expr exprFrom, Expr exprTo, ControlFlow::Nodes::ElementNode cfnFrom, ControlFlow::BasicBlock bb | - this.reachesBasicBlockExpr(exprFrom, exprTo, _, _, _, cfnFrom, bb) | + exists( + Expr exprFrom, Expr exprTo, ControlFlow::Nodes::ElementNode cfnFrom, + ControlFlow::BasicBlock bb + | + this.reachesBasicBlockExpr(exprFrom, exprTo, _, _, _, cfnFrom, bb) + | exprFrom = nodeFrom.asExprAtNode(cfnFrom) and exprTo = nodeTo.asExprAtNode(bb.getANode()) ) } private predicate hasSsaDefinitionStep(ExprNode nodeFrom, SsaDefinitionNode nodeTo) { - exists(Expr exprFrom, AssignableDefinition defTo, Ssa::ExplicitDefinition ssaDef, ControlFlow::Nodes::ElementNode cfnFrom, ControlFlow::BasicBlock bb | - this.reachesBasicBlockDefinition(exprFrom, defTo, _, _, _, cfnFrom, bb) | + exists( + Expr exprFrom, AssignableDefinition defTo, Ssa::ExplicitDefinition ssaDef, + ControlFlow::Nodes::ElementNode cfnFrom, ControlFlow::BasicBlock bb + | + this.reachesBasicBlockDefinition(exprFrom, defTo, _, _, _, cfnFrom, bb) + | exprFrom = nodeFrom.asExprAtNode(cfnFrom) and ssaDef.getADefinition() = defTo and ssaDef.getBasicBlock() = bb and @@ -844,7 +864,10 @@ module DataFlow { private class LocalExprStepConfiguration extends ExprStepConfiguration { LocalExprStepConfiguration() { this = "LocalExprStepConfiguration" } - override predicate stepsToExpr(Expr exprFrom, Expr exprTo, ControlFlowElement scope, boolean exactScope, boolean isSuccessor) { + override predicate stepsToExpr( + Expr exprFrom, Expr exprTo, ControlFlowElement scope, boolean exactScope, + boolean isSuccessor + ) { exactScope = false and ( // Flow using library code @@ -855,9 +878,9 @@ module DataFlow { isSuccessor = true or exprTo = any(ConditionalExpr ce | - exprFrom = ce.getThen() or - exprFrom = ce.getElse() - ) and + exprFrom = ce.getThen() or + exprFrom = ce.getElse() + ) and scope = exprTo and isSuccessor = false or @@ -871,15 +894,18 @@ module DataFlow { or // An `=` expression, where the result of the expression is used exprTo = any(AssignExpr ae | - ae.getParent() instanceof Expr and - exprFrom = ae.getRValue() - ) and + ae.getParent() instanceof Expr and + exprFrom = ae.getRValue() + ) and scope = exprTo and isSuccessor = true ) } - override predicate stepsToDefinition(Expr exprFrom, AssignableDefinition def, ControlFlowElement scope, boolean exactScope, boolean isSuccessor) { + override predicate stepsToDefinition( + Expr exprFrom, AssignableDefinition def, ControlFlowElement scope, boolean exactScope, + boolean isSuccessor + ) { // Flow from source to definition exactScope = false and def.getSource() = exprFrom and @@ -891,7 +917,10 @@ module DataFlow { isSuccessor = false or exists(SwitchStmt ss | - ss = def.(AssignableDefinitions::TypeCasePatternDefinition).getTypeCase().getSwitchStmt() and + ss = def + .(AssignableDefinitions::TypeCasePatternDefinition) + .getTypeCase() + .getSwitchStmt() and isSuccessor = true | scope = ss.getCondition() @@ -914,27 +943,31 @@ module DataFlow { or // Flow from SSA definition to first read exists(Ssa::Definition def, ControlFlow::Node cfn | - def = nodeFrom.(SsaDefinitionNode).getDefinition() | + def = nodeFrom.(SsaDefinitionNode).getDefinition() + | nodeTo.asExprAtNode(cfn) = def.getAFirstReadAtNode(cfn) ) or // Flow from read to next read exists(ControlFlow::Node cfnFrom, ControlFlow::Node cfnTo | - Ssa::Internal::adjacentReadPairSameVar(cfnFrom, cfnTo) | + Ssa::Internal::adjacentReadPairSameVar(cfnFrom, cfnTo) + | nodeFrom = TExprNode(cfnFrom) and nodeTo = TExprNode(cfnTo) ) or // Flow into SSA pseudo definition exists(Ssa::Definition def, Ssa::PseudoDefinition pseudo | - localFlowSsaInput(nodeFrom, def) | + localFlowSsaInput(nodeFrom, def) + | pseudo = nodeTo.(SsaDefinitionNode).getDefinition() and def = pseudo.getAnInput() ) or // Flow into uncertain SSA definition exists(Ssa::Definition def, UncertainExplicitSsaDefinition uncertain | - localFlowSsaInput(nodeFrom, def) | + localFlowSsaInput(nodeFrom, def) + | uncertain = nodeTo.(SsaDefinitionNode).getDefinition() and def = uncertain.getPriorDefinition() ) @@ -952,7 +985,8 @@ module DataFlow { } predicate localFlowStepCil(Node nodeFrom, Node nodeTo) { - asCilDataFlowNode(nodeFrom).getALocalFlowSucc(asCilDataFlowNode(nodeTo), any(CIL::Untainted t)) + asCilDataFlowNode(nodeFrom) + .getALocalFlowSucc(asCilDataFlowNode(nodeTo), any(CIL::Untainted t)) } /** @@ -967,8 +1001,8 @@ module DataFlow { this instanceof Ssa::ExplicitDefinition or this = any(Ssa::ImplicitQualifierDefinition qdef | - qdef.getQualifierDefinition() instanceof UncertainExplicitSsaDefinition - ) + qdef.getQualifierDefinition() instanceof UncertainExplicitSsaDefinition + ) } } @@ -981,16 +1015,16 @@ module DataFlow { def = nodeFrom.(SsaDefinitionNode).getDefinition() and not exists(def.getARead()) or - exists(AssignableRead read, ControlFlow::Node cfn | - read = nodeFrom.asExprAtNode(cfn) | + exists(AssignableRead read, ControlFlow::Node cfn | read = nodeFrom.asExprAtNode(cfn) | def.getALastReadAtNode(cfn) = read ) } - private predicate localFlowCapturedVarStep(SsaDefinitionNode nodeFrom, ImplicitCapturedArgumentNode nodeTo) { + private predicate localFlowCapturedVarStep( + SsaDefinitionNode nodeFrom, ImplicitCapturedArgumentNode nodeTo + ) { // Flow from SSA definition to implicit captured variable argument - exists(Ssa::ExplicitDefinition def, Call call | - def = nodeFrom.getDefinition() | + exists(Ssa::ExplicitDefinition def, Call call | def = nodeFrom.getDefinition() | def.isCapturedVariableDefinitionFlowIn(_, call) and nodeTo = TImplicitCapturedArgumentNode(call, def.getSourceVariable().getAssignable()) ) @@ -1000,14 +1034,15 @@ module DataFlow { libraryFlow(exprFrom, exprTo, preservesValue) and result = exprFrom or - exists(Expr mid | - mid = getALibraryFlowParent(exprFrom, exprTo, preservesValue) | + exists(Expr mid | mid = getALibraryFlowParent(exprFrom, exprTo, preservesValue) | result.getAChildExpr() = mid and not mid.getAChildExpr*() = exprTo ) } - predicate libraryFlow(Expr exprFrom, Expr exprTo, Expr scope, boolean isSuccessor, boolean preservesValue) { + predicate libraryFlow( + Expr exprFrom, Expr exprTo, Expr scope, boolean isSuccessor, boolean preservesValue + ) { // To not pollute the definitions in `LibraryTypeDataFlow.qll` with syntactic scope, // simply use the nearest common parent expression for `exprFrom` and `exprTo` scope = getALibraryFlowParent(exprFrom, exprTo, preservesValue) and @@ -1025,7 +1060,7 @@ module DataFlow { /** * Holds if data may flow in one local step from `pred` to `succ`. */ - bindingset [config] + bindingset[config] predicate localFlowStep(Node pred, Node succ, Configuration config) { localFlowStepNoConfig(pred, succ) or config.isAdditionalFlowStep(pred, succ) @@ -1059,7 +1094,7 @@ module DataFlow { ) } - pragma [noinline] + pragma[noinline] private predicate localFlowStepCand(Node node1, Node node2, Configuration config) { localFlowStep(node1, node2, config) and Pruning::nodeCand(node2, config) @@ -1086,7 +1121,7 @@ module DataFlow { * Holds if `node1` can step to `node2` in one or more local steps and this * path can occur as a maximal subsequence of local steps in a data flow path. */ - pragma [noinline] + pragma[noinline] predicate localFlowBigStep(Node node1, Node node2, Configuration config) { localFlowStepPlus(node1, node2, config) and localFlowExit(node2, config) @@ -1108,23 +1143,15 @@ module DataFlow { ( config.isSource(node) or - exists(Node mid | - nodeCandFwd1(mid, config) | - LocalFlow::localFlowStep(mid, node, config) - ) + exists(Node mid | nodeCandFwd1(mid, config) | LocalFlow::localFlowStep(mid, node, config)) or - exists(Node mid | - nodeCandFwd1(mid, config) | - jumpStep(mid, node) - ) + exists(Node mid | nodeCandFwd1(mid, config) | jumpStep(mid, node)) or - exists(ArgumentNode arg | - nodeCandFwd1(arg, config) | + exists(ArgumentNode arg | nodeCandFwd1(arg, config) | flowIntoCallableStep(_, arg, node, _, config) ) or - exists(Node mid | - nodeCandFwd1(mid, config) | + exists(Node mid | nodeCandFwd1(mid, config) | flowOutOfCallableStep(_, mid, node, _, config) ) ) @@ -1139,25 +1166,15 @@ module DataFlow { ( config.isSink(node) or - exists(Node mid | - nodeCand1(mid, config) | - LocalFlow::localFlowStep(node, mid, config) - ) + exists(Node mid | nodeCand1(mid, config) | LocalFlow::localFlowStep(node, mid, config)) or - exists(Node mid | - nodeCand1(mid, config) | - jumpStep(node, mid) - ) + exists(Node mid | nodeCand1(mid, config) | jumpStep(node, mid)) or - exists(ParameterNode p | - nodeCand1(p, config) | + exists(ParameterNode p | nodeCand1(p, config) | flowIntoCallableStep(_, node, p, _, config) ) or - exists(Node mid | - nodeCand1(mid, config) | - flowOutOfCallableStep(_, node, mid, _, config) - ) + exists(Node mid | nodeCand1(mid, config) | flowOutOfCallableStep(_, node, mid, _, config)) ) } @@ -1170,14 +1187,12 @@ module DataFlow { nodeCand1(node, config) and p = node or - exists(Node mid | - simpleParameterFlow(p, mid, config) | + exists(Node mid | simpleParameterFlow(p, mid, config) | nodeCand1(mid, config) and LocalFlow::localFlowStep(mid, node, config) ) or - exists(ArgumentNode arg | - simpleParameterFlow(p, arg, config) | + exists(ArgumentNode arg | simpleParameterFlow(p, arg, config) | nodeCand1(arg, config) and simpleArgumentFlowsThrough(arg, node, config) ) @@ -1188,28 +1203,35 @@ module DataFlow { * part of a path from a source to a sink, taking simple call contexts into * consideration. */ - private predicate simpleArgumentFlowsThrough(ArgumentNode arg, OutNode out, Configuration config) { + private predicate simpleArgumentFlowsThrough( + ArgumentNode arg, OutNode out, Configuration config + ) { exists(CallNode call, ParameterNode p, ReturnNode ret | - simpleParameterFlow(p, ret, config) | + simpleParameterFlow(p, ret, config) + | flowIntoCallableStepCand1(call, arg, p, config) and flowOutOfCallableStepCand1(call, ret, out, config) ) } - pragma [noinline] + pragma[noinline] private predicate localFlowStepCand1(Node pred, Node succ, Configuration config) { nodeCand1(succ, config) and LocalFlow::localFlowStep(pred, succ, config) } - pragma [noinline] - predicate flowIntoCallableStepCand1(CallNode call, ArgumentNode arg, ParameterNode p, Configuration config) { + pragma[noinline] + predicate flowIntoCallableStepCand1( + CallNode call, ArgumentNode arg, ParameterNode p, Configuration config + ) { nodeCand1(p, config) and flowIntoCallableStep(call, arg, p, _, config) } - pragma [noinline] - private predicate flowOutOfCallableStepCand1(CallNode call, ReturnNode ret, OutNode out, Configuration config) { + pragma[noinline] + private predicate flowOutOfCallableStepCand1( + CallNode call, ReturnNode ret, OutNode out, Configuration config + ) { nodeCand1(out, config) and flowOutOfCallableStep(call, ret, out, _, config) } @@ -1223,50 +1245,49 @@ module DataFlow { config.isSource(node) and fromArg = false or - exists(Node mid | - nodeCandFwd2(mid, fromArg, config) | + exists(Node mid | nodeCandFwd2(mid, fromArg, config) | localFlowStepCand1(mid, node, config) ) or nodeCand1(node, config) and - exists(Node mid | - nodeCandFwd2(mid, _, config) | + exists(Node mid | nodeCandFwd2(mid, _, config) | jumpStep(mid, node) and fromArg = false ) or - exists(ArgumentNode arg | - nodeCandFwd2(arg, _, config) | + exists(ArgumentNode arg | nodeCandFwd2(arg, _, config) | flowIntoCallableStepCand1(_, arg, node, config) and fromArg = true ) or - exists(ReturnNode ret | - nodeCandFwd2(ret, false, config) | + exists(ReturnNode ret | nodeCandFwd2(ret, false, config) | flowOutOfCallableStepCand1(_, ret, node, config) and fromArg = false ) or - exists(ArgumentNode arg | - nodeCandFwd2(arg, fromArg, config) | + exists(ArgumentNode arg | nodeCandFwd2(arg, fromArg, config) | simpleArgumentFlowsThrough(arg, node, config) ) } - pragma [noinline] + pragma[noinline] private predicate localFlowStepCandFwd2(Node pred, Node succ, Configuration config) { nodeCandFwd2(pred, _, config) and LocalFlow::localFlowStep(pred, succ, config) } - pragma [noinline] - private predicate flowIntoCallableStepCandFwd2(ArgumentNode arg, ParameterNode p, Configuration config) { + pragma[noinline] + private predicate flowIntoCallableStepCandFwd2( + ArgumentNode arg, ParameterNode p, Configuration config + ) { nodeCandFwd2(arg, _, config) and flowIntoCallableStep(_, arg, p, _, config) } - pragma [noinline] - private predicate flowOutOfCallableStepCandFwd2(CallNode call, ReturnNode ret, OutNode out, CallContext cc, Configuration config) { + pragma[noinline] + private predicate flowOutOfCallableStepCandFwd2( + CallNode call, ReturnNode ret, OutNode out, CallContext cc, Configuration config + ) { nodeCandFwd2(ret, _, config) and flowOutOfCallableStep(call, ret, out, cc, config) } @@ -1280,33 +1301,28 @@ module DataFlow { config.isSink(node) and isReturned = false or - exists(Node mid | - nodeCand2(mid, isReturned, config) | + exists(Node mid | nodeCand2(mid, isReturned, config) | localFlowStepCandFwd2(node, mid, config) ) or nodeCandFwd2(node, _, config) and - exists(Node mid | - nodeCand2(mid, _, config) | + exists(Node mid | nodeCand2(mid, _, config) | jumpStep(node, mid) and isReturned = false ) or - exists(ParameterNode param | - nodeCand2(param, false, config) | + exists(ParameterNode param | nodeCand2(param, false, config) | flowIntoCallableStepCandFwd2(node, param, config) and isReturned = false ) or - exists(OutNode out | - nodeCand2(out, _, config) | + exists(OutNode out | nodeCand2(out, _, config) | flowOutOfCallableStepCandFwd2(_, node, out, _, config) and isReturned = true ) or nodeCandFwd2(node, _, config) and - exists(OutNode out | - nodeCand2(out, isReturned, config) | + exists(OutNode out | nodeCand2(out, isReturned, config) | simpleArgumentFlowsThrough(node, out, config) ) } @@ -1315,41 +1331,31 @@ module DataFlow { * Holds if `node` is part of a path from a source to a sink in the * configuration `config`, taking simple call contexts into consideration. */ - predicate nodeCand(Node node, Configuration config) { - nodeCand2(node, _, config) - } + predicate nodeCand(Node node, Configuration config) { nodeCand2(node, _, config) } } // A workaround to avoid eager joining on configurations - private bindingset[config, result] Configuration unbind(Configuration config) { - result >= config and result <= config - } + bindingset[config, result] + private Configuration unbind(Configuration config) { result >= config and result <= config } /** * A collection of cached types and predicates to be evaluated in the * same stage. */ - cached module Cached { - cached predicate forceCachingInSameStage() { any() } + cached + module Cached { + cached + predicate forceCachingInSameStage() { any() } - cached newtype TNode = - TExprNode(ControlFlow::Nodes::ElementNode cfn) { - cfn.getElement() instanceof Expr - } - or - TSsaDefinitionNode(Ssa::Definition def) - or - TCilParameterNode(CIL::Parameter p) { - p.getMethod().hasBody() - } - or - TCilExprNode(CIL::Expr e) - or - TImplicitDelegateCallNode(DelegateArgumentToLibraryCallable arg) - or + cached + newtype TNode = + TExprNode(ControlFlow::Nodes::ElementNode cfn) { cfn.getElement() instanceof Expr } or + TSsaDefinitionNode(Ssa::Definition def) or + TCilParameterNode(CIL::Parameter p) { p.getMethod().hasBody() } or + TCilExprNode(CIL::Expr e) or + TImplicitDelegateCallNode(DelegateArgumentToLibraryCallable arg) or TImplicitCapturedArgumentNode(Call c, LocalScopeVariable v) { - exists(Ssa::ExplicitDefinition def | - def.isCapturedVariableDefinitionFlowIn(_, c) | + exists(Ssa::ExplicitDefinition def | def.isCapturedVariableDefinitionFlowIn(_, c) | v = def.getSourceVariable().getAssignable() ) } @@ -1358,9 +1364,9 @@ module DataFlow { * Holds if `pred` can flow to `succ`, by jumping from one callable to * another. */ - cached predicate jumpStep(ExprNode pred, ExprNode succ) { - exists(FieldLike fl, FieldLikeRead flr | - fl.isStatic() | + cached + predicate jumpStep(ExprNode pred, ExprNode succ) { + exists(FieldLike fl, FieldLikeRead flr | fl.isStatic() | fl.getAnAssignedValue() = pred.getExpr() and fl.getAnAccess() = flr and flr = succ.getExpr() and @@ -1376,14 +1382,19 @@ module DataFlow { * Additional steps specified by the configuration are *not* taken into * account. */ - cached predicate flowIntoCallableStepNoConfig(CallNode call, ArgumentNode arg, ParameterNode p, CallContext cc) { + cached + predicate flowIntoCallableStepNoConfig( + CallNode call, ArgumentNode arg, ParameterNode p, CallContext cc + ) { flowIntoCallableExplicitStep(call, arg, p.getParameter(), cc) or flowIntoCallableCapturedVarStep(call, arg, p) and cc instanceof EmptyCallContext } - private predicate flowIntoCallableExplicitStep(CallNode call, ArgumentNode arg, DotNet::Parameter p, CallContext cc) { + private predicate flowIntoCallableExplicitStep( + CallNode call, ArgumentNode arg, DotNet::Parameter p, CallContext cc + ) { flowIntoCallableNonDelegateCall(call.asExpr(), arg.asExpr(), p) and cc instanceof EmptyCallContext or @@ -1397,7 +1408,9 @@ module DataFlow { * `call`, which can reach implicit captured variable parameter `p`, using * zero or more additional calls. */ - private predicate flowIntoCallableCapturedVarStep(CallNode call, ImplicitCapturedArgumentNode arg, ImplicitCapturedParameterNode p) { + private predicate flowIntoCallableCapturedVarStep( + CallNode call, ImplicitCapturedArgumentNode arg, ImplicitCapturedParameterNode p + ) { arg.flowsIn(p.getDefinition()) and call.asExpr() = arg.getCall() } @@ -1410,14 +1423,19 @@ module DataFlow { * Additional steps specified by the configuration are *not* taken into * account. */ - cached predicate flowOutOfCallableStepNoConfig(CallNode call, ReturnNode ret, OutNode out, CallContext cc) { + cached + predicate flowOutOfCallableStepNoConfig( + CallNode call, ReturnNode ret, OutNode out, CallContext cc + ) { flowOutOfCallableExplicitStep(call, ret, out, cc) or flowOutOfCallableCapturedVarStep(call, ret, out) and cc instanceof EmptyCallContext } - private predicate flowOutOfCallableExplicitStep(CallNode call, ReturnNode ret, OutNode out, CallContext cc) { + private predicate flowOutOfCallableExplicitStep( + CallNode call, ReturnNode ret, OutNode out, CallContext cc + ) { flowOutOfCallableNonDelegateCall(call.asExpr(), ret.asExpr(), out) and cc instanceof EmptyCallContext or @@ -1430,29 +1448,26 @@ module DataFlow { * `call` using zero or more additional calls, and `out` is the corresponding * implicit output. */ - private predicate flowOutOfCallableCapturedVarStep(CallNode call, ImplicitCapturedReturnNode ret, ImplicitCapturedOutNode out) { + private predicate flowOutOfCallableCapturedVarStep( + CallNode call, ImplicitCapturedReturnNode ret, ImplicitCapturedOutNode out + ) { ret.flowsOut(out.getDefinition()) and call.asExpr() = out.getCall() } } private newtype TContext = - TNoContext() - or + TNoContext() or TExplicitArgumentContext(ArgumentCallContext acc) { - exists(ExplicitArgumentNode arg, Configuration config | - Pruning::nodeCand(arg, config) | + exists(ExplicitArgumentNode arg, Configuration config | Pruning::nodeCand(arg, config) | acc = arg.getArgumentCallContext(config) ) - } - or + } or TImplicitCapturedArgumentContext(ImplicitCapturedArgumentNode arg) { Pruning::nodeCand(arg, _) - } - or + } or TReturnContext(CallNode call, DotNet::Callable callable) { - exists(ReturnNode ret, Configuration config | - Pruning::nodeCand(ret, config) | + exists(ReturnNode ret, Configuration config | Pruning::nodeCand(ret, config) | callable = ret.getEnclosingCallable() and flowOutOfCallableStep(call, ret, _, _, config) ) @@ -1464,7 +1479,7 @@ module DataFlow { * argument (`ArgumentContext`), or a context describing flow out of a * callable via a returned expression (`ReturnContext`). */ - private abstract class Context extends TContext { + abstract private class Context extends TContext { /** Gets a textual representation of this context. */ abstract string toString(); @@ -1472,24 +1487,22 @@ module DataFlow { * Holds if flow out of a callable is allowed to go via the call * `call` in this context. */ - bindingset [call, config] + bindingset[call, config] predicate flowOutAllowedToCall(DotNet::Expr call, Configuration config) { // This context poses no restriction - this instanceof NoContext - or + this instanceof NoContext or // Data in this context is from a call, so flow back out must be through // the same call this.(ExplicitArgumentContext).getCallContext().isArgument(call, _) or - this.(ImplicitCapturedArgumentContext).getArgument().getCall() = call - or + this.(ImplicitCapturedArgumentContext).getArgument().getCall() = call or // Data in this context is itself the result of a call, and the callable // from which data was returned may only be a valid target in a certain // call context, in which case flow further out must respect that call // context this = any(ReturnContext rc | - not exists(rc.getARequiredContext(config)) or - rc.getARequiredContext(config).(ArgumentCallContext).isArgument(call, _) - ) + not exists(rc.getARequiredContext(config)) or + rc.getARequiredContext(config).(ArgumentCallContext).isArgument(call, _) + ) } } @@ -1497,17 +1510,13 @@ module DataFlow { * A data flow context with no information. */ private class NoContext extends Context, TNoContext { - override string toString() { - result = "" - } + override string toString() { result = "" } } /** * A data flow context describing flow into a callable via a call argument. */ - private abstract class ArgumentContext extends Context { - abstract DotNet::Expr getCall(); - } + abstract private class ArgumentContext extends Context { abstract DotNet::Expr getCall(); } /** * A data flow context describing flow into a callable via an explicit call argument. @@ -1515,44 +1524,29 @@ module DataFlow { private class ExplicitArgumentContext extends ArgumentContext, TExplicitArgumentContext { ArgumentCallContext acc; - ExplicitArgumentContext() { - this = TExplicitArgumentContext(acc) - } + ExplicitArgumentContext() { this = TExplicitArgumentContext(acc) } - ArgumentCallContext getCallContext() { - result = acc - } + ArgumentCallContext getCallContext() { result = acc } - override DotNet::Expr getCall() { - acc.isArgument(result, _) - } + override DotNet::Expr getCall() { acc.isArgument(result, _) } - override string toString() { - result = acc.toString() - } + override string toString() { result = acc.toString() } } /** * A data flow context describing flow into a callable via an implicit captured variable call argument. */ - private class ImplicitCapturedArgumentContext extends ArgumentContext, TImplicitCapturedArgumentContext { + private class ImplicitCapturedArgumentContext extends ArgumentContext, + TImplicitCapturedArgumentContext { ImplicitCapturedArgumentNode arg; - ImplicitCapturedArgumentContext() { - this = TImplicitCapturedArgumentContext(arg) - } + ImplicitCapturedArgumentContext() { this = TImplicitCapturedArgumentContext(arg) } - ImplicitCapturedArgumentNode getArgument() { - result = arg - } + ImplicitCapturedArgumentNode getArgument() { result = arg } - override Expr getCall() { - result = arg.getCall() - } + override Expr getCall() { result = arg.getCall() } - override string toString() { - result = arg.toString() - } + override string toString() { result = arg.toString() } } /** @@ -1561,11 +1555,10 @@ module DataFlow { */ private class ReturnContext extends Context, TReturnContext { CallNode call; + DotNet::Callable callable; - ReturnContext() { - this = TReturnContext(call, callable) - } + ReturnContext() { this = TReturnContext(call, callable) } /** * Gets a call context required for the flow out to the data described by this @@ -1575,15 +1568,14 @@ module DataFlow { result = getARequiredContext0(call, callable, config) } - override string toString() { - result = call.toString() - } + override string toString() { result = call.toString() } } - pragma [noinline] - private ArgumentCallContext getARequiredContext0(CallNode call, DotNet::Callable callable, Configuration config) { - exists(ReturnNode ret | - flowOutOfCallableStep(call, ret, _, result, config) | + pragma[noinline] + private ArgumentCallContext getARequiredContext0( + CallNode call, DotNet::Callable callable, Configuration config + ) { + exists(ReturnNode ret | flowOutOfCallableStep(call, ret, _, result, config) | callable = ret.getEnclosingCallable() ) } @@ -1596,8 +1588,7 @@ module DataFlow { ctx instanceof NoContext or // A step from an existing flow graph node - exists(FlowGraphNode mid | - flowStep(mid, node, ctx) | + exists(FlowGraphNode mid | flowStep(mid, node, ctx) | config = mid.getConfiguration() and Pruning::nodeCand(node, unbind(config)) ) @@ -1609,7 +1600,9 @@ module DataFlow { */ class FlowGraphNode extends TFlowGraphNode0 { Node node; + Context ctx; + Configuration config; FlowGraphNode() { this = TFlowGraphNode0(node, ctx, config) } @@ -1630,9 +1623,7 @@ module DataFlow { } /** Gets the enclosing callable of this node. */ - DotNet::Callable getEnclosingCallable() { - result = this.getNode().getEnclosingCallable() - } + DotNet::Callable getEnclosingCallable() { result = this.getNode().getEnclosingCallable() } /** Gets a textual representation of this node. */ string toString() { result = this.getNode().toString() } @@ -1655,9 +1646,7 @@ module DataFlow { * A flow graph node corresponding to a sink. */ private class FlowGraphNodeSink extends FlowGraphNode { - FlowGraphNodeSink() { - this.getConfiguration().isSink(this.getNode()) - } + FlowGraphNodeSink() { this.getConfiguration().isSink(this.getNode()) } } /** @@ -1678,17 +1667,17 @@ module DataFlow { flowThroughCallable(mid, node, ctx) } - pragma [noinline] + pragma[noinline] private predicate flowIntoCallable0(FlowGraphNode mid, ArgumentNode arg, ParameterNode p) { exists(Context outerctx, CallContext cc, Configuration config | config = mid.getConfiguration() and flowIntoCallableStep(_, arg, p, cc, config) and arg = mid.getNode() and - outerctx = mid.getContext() | + outerctx = mid.getContext() + | cc instanceof EmptyCallContext or - exists(DotNet::Expr call | - cc.(ArgumentCallContext).isArgument(call, _) | + exists(DotNet::Expr call | cc.(ArgumentCallContext).isArgument(call, _) | outerctx.flowOutAllowedToCall(call, config) ) ) @@ -1699,14 +1688,15 @@ module DataFlow { * after entering the callable is `innerctx`. */ private predicate flowIntoCallable(FlowGraphNode mid, ParameterNode p, ArgumentContext innerctx) { - exists(ArgumentNode arg | - flowIntoCallable0(mid, arg, p) | + exists(ArgumentNode arg | flowIntoCallable0(mid, arg, p) | innerctx = arg.getContext(mid.getConfiguration()) ) } - pragma [noinline] - private predicate flowOutOfCallable0(FlowGraphNode mid, CallNode call, OutNode out, DotNet::Callable callable, Context innerctx) { + pragma[noinline] + private predicate flowOutOfCallable0( + FlowGraphNode mid, CallNode call, OutNode out, DotNet::Callable callable, Context innerctx + ) { flowOutOfCallableStep(call, mid.getNode(), out, _, mid.getConfiguration()) and innerctx = mid.getContext() and not innerctx instanceof ArgumentContext and @@ -1717,25 +1707,31 @@ module DataFlow { * Holds if data may flow from `mid` out of a callable to `out`. The context * after leaving the callable is `outerctx`. */ - pragma [noinline] + pragma[noinline] private predicate flowOutOfCallable(FlowGraphNode mid, OutNode out, ReturnContext outerctx) { exists(CallNode call, DotNet::Callable callable, Context innerctx | flowOutOfCallable0(mid, call, out, callable, innerctx) and - outerctx = TReturnContext(call, callable) | + outerctx = TReturnContext(call, callable) + | innerctx.flowOutAllowedToCall(call.getCall(), mid.getConfiguration()) ) } - private predicate paramFlowsThroughExplicit(CallNode call, ExplicitParameterNode p, ExplicitArgumentContext innerctx, FlowGraphNode mid, ReturnNode ret) { - exists(int i | - innerctx.getCallContext() = call.getCallContext(i) | + private predicate paramFlowsThroughExplicit( + CallNode call, ExplicitParameterNode p, ExplicitArgumentContext innerctx, FlowGraphNode mid, + ReturnNode ret + ) { + exists(int i | innerctx.getCallContext() = call.getCallContext(i) | mid.getNode() = ret and mid.getContext() = innerctx and mid.getEnclosingCallable().getParameter(i) = p.getParameter() ) } - private predicate paramFlowsThroughImplicit(CallNode call, ImplicitCapturedParameterNode p, ImplicitCapturedArgumentContext innerctx, FlowGraphNode mid, ReturnNode ret) { + private predicate paramFlowsThroughImplicit( + CallNode call, ImplicitCapturedParameterNode p, ImplicitCapturedArgumentContext innerctx, + FlowGraphNode mid, ReturnNode ret + ) { innerctx.getArgument() = call.getImplicitCapturedArgument(p.getVariable()) and mid.getNode() = ret and mid.getContext() = innerctx and @@ -1743,11 +1739,13 @@ module DataFlow { } /** Holds if data may flow from `p` to a a node `out` returned by the callable. */ - private predicate paramFlowsThrough(CallNode call, ParameterNode p, OutNode out, ArgumentContext innerctx, CallContext cc) { + private predicate paramFlowsThrough( + CallNode call, ParameterNode p, OutNode out, ArgumentContext innerctx, CallContext cc + ) { exists(FlowGraphNode mid, ReturnNode ret | paramFlowsThroughExplicit(call, p, innerctx, mid, ret) or paramFlowsThroughImplicit(call, p, innerctx, mid, ret) - | + | flowOutOfCallableStep(call, ret, out, cc, mid.getConfiguration()) ) } @@ -1760,18 +1758,17 @@ module DataFlow { private predicate flowThroughCallable0(FlowGraphNode mid, OutNode out, Context ctx) { exists(CallNode call, ParameterNode p, ArgumentContext innerctx, CallContext cc | flowIntoCallable(mid, p, innerctx) and - paramFlowsThrough(call, p, out, innerctx, cc) | + paramFlowsThrough(call, p, out, innerctx, cc) + | // Data in `mid` is from a call, so that call must match the required call (if any), // and the context after flow through `call` must be recovered exists(ArgumentContext ac | ac = mid.getContext() and - ctx = ac | + ctx = ac + | cc instanceof EmptyCallContext or - exists(DotNet::Expr e | - cc.(ArgumentCallContext).isArgument(e, _) | - ac.getCall() = e - ) + exists(DotNet::Expr e | cc.(ArgumentCallContext).isArgument(e, _) | ac.getCall() = e) ) or // Data in `mid` is *not* from a call, so the context after flow through `call` @@ -1787,12 +1784,13 @@ module DataFlow { } pragma[nomagic] - private predicate flowThroughCallable1(FlowGraphNode mid, OutNode out, ControlFlow::Nodes::ElementNode cfn, Context ctx) { + private predicate flowThroughCallable1( + FlowGraphNode mid, OutNode out, ControlFlow::Nodes::ElementNode cfn, Context ctx + ) { flowThroughCallable0(mid, out, ctx) and exists(mid.getNode().asExprAtNode(cfn)) or - exists(ControlFlow::Nodes::ElementNode cfnMid | - flowThroughCallable1(mid, out, cfnMid, ctx) | + exists(ControlFlow::Nodes::ElementNode cfnMid | flowThroughCallable1(mid, out, cfnMid, ctx) | cfn = cfnMid.getASuccessor() and flowThroughCallable1Scope(out, cfn.getElement()) ) @@ -1806,8 +1804,7 @@ module DataFlow { private predicate flowThroughCallable(FlowGraphNode mid, OutNode out, Context ctx) { // If both `mid` and `out` have associated control flow nodes, the latter // must be reachable from the former - exists(ControlFlow::Node cfn | - flowThroughCallable1(mid, out, cfn, ctx) | + exists(ControlFlow::Node cfn | flowThroughCallable1(mid, out, cfn, ctx) | exists(out.asExprAtNode(cfn)) ) or @@ -1824,8 +1821,11 @@ module DataFlow { * * Will only have results if `config` has non-empty sources and sinks. */ - pragma [nomagic] - predicate flowsTo(FlowGraphNodeSource flowsource, Node source, FlowGraphNodeSink flowsink, Node sink, Configuration config) { + pragma[nomagic] + predicate flowsTo( + FlowGraphNodeSource flowsource, Node source, FlowGraphNodeSink flowsink, Node sink, + Configuration config + ) { flowsource.getConfiguration() = config and flowsource.getNode() = source and flowsource.getASuccessor*() = flowsink and @@ -1837,9 +1837,11 @@ module DataFlow { this = "FlowThroughCallableLibraryOutRefStepConfiguration" } - override predicate stepsToDefinition(Expr exprFrom, AssignableDefinition defTo, ControlFlowElement scope, boolean exactScope, boolean isSuccessor) { - exists(MethodCall mc, Parameter outRef | - libraryFlowOutRef(mc, exprFrom, outRef, _) | + override predicate stepsToDefinition( + Expr exprFrom, AssignableDefinition defTo, ControlFlowElement scope, boolean exactScope, + boolean isSuccessor + ) { + exists(MethodCall mc, Parameter outRef | libraryFlowOutRef(mc, exprFrom, outRef, _) | defTo.getTargetAccess() = mc.getArgumentForParameter(outRef) and defTo instanceof AssignableDefinitions::OutRefDefinition and scope = mc and @@ -1862,7 +1864,9 @@ module DataFlow { * `mc = Int32.TryParse("42", out i)`, `arg = "42"`, and `node` is the access * to `i` in `out i`. */ - predicate flowThroughCallableLibraryOutRef(MethodCall mc, ExprNode arg, SsaDefinitionNode node, boolean preservesValue) { + predicate flowThroughCallableLibraryOutRef( + MethodCall mc, ExprNode arg, SsaDefinitionNode node, boolean preservesValue + ) { libraryFlowOutRef(mc, arg.getExpr(), _, preservesValue) and any(FlowThroughCallableLibraryOutRefStepConfiguration x).hasStep(arg, node) } @@ -1879,7 +1883,9 @@ module DataFlow { * `delegate = y => { ... }`, `out = x.Select(y => { ... })`, and * `preservesValue = false`. */ - predicate flowOutOfDelegateLibraryCall(ImplicitDelegateCallNode delegate, OutNode out, boolean preservesValue) { + predicate flowOutOfDelegateLibraryCall( + ImplicitDelegateCallNode delegate, OutNode out, boolean preservesValue + ) { exists(Call call, int i | libraryFlowDelegateCallOut(call, _, out.asExpr(), preservesValue, i) and delegate.getCall() = call.getArgument(i) @@ -1894,9 +1900,7 @@ module DataFlow { } private class FieldLikeRead extends AssignableRead { - FieldLikeRead() { - this.getTarget() instanceof FieldLike - } + FieldLikeRead() { this.getTarget() instanceof FieldLike } } /** @@ -1909,7 +1913,7 @@ module DataFlow { exists(Ssa::Definition def, Ssa::ImplicitDefinition idef | def.getARead() = flr and idef = def.getAnUltimateDefinition() - | + | idef instanceof Ssa::ImplicitEntryDefinition or idef instanceof Ssa::ImplicitCallDefinition ) @@ -1922,8 +1926,10 @@ module DataFlow { * * Additional steps specified by the configuration are taken into account. */ - bindingset [config] - predicate flowIntoCallableStep(CallNode call, ArgumentNode arg, ParameterNode p, CallContext cc, Configuration config) { + bindingset[config] + predicate flowIntoCallableStep( + CallNode call, ArgumentNode arg, ParameterNode p, CallContext cc, Configuration config + ) { flowIntoCallableStepNoConfig(call, arg, p, cc) or config.isAdditionalFlowStepIntoCall(call, arg, p.getParameter(), cc) } @@ -1935,8 +1941,10 @@ module DataFlow { * * Additional steps specified by the configuration are taken into account. */ - bindingset [config] - predicate flowOutOfCallableStep(CallNode call, ReturnNode ret, OutNode out, CallContext cc, Configuration config) { + bindingset[config] + predicate flowOutOfCallableStep( + CallNode call, ReturnNode ret, OutNode out, CallContext cc, Configuration config + ) { flowOutOfCallableStepNoConfig(call, ret, out, cc) or config.isAdditionalFlowStepOutOfCall(call, ret, out, cc) } @@ -1945,7 +1953,9 @@ module DataFlow { * Holds if `arg` is an argument of the non-delegate call `call`, * which resolves to a callable with corresponding parameter `p`. */ - predicate flowIntoCallableNonDelegateCall(NonDelegateCall call, DotNet::Expr arg, DotNet::Parameter p) { + predicate flowIntoCallableNonDelegateCall( + NonDelegateCall call, DotNet::Expr arg, DotNet::Parameter p + ) { exists(DotNet::Callable callable | callable = call.getARuntimeTarget() and p = callable.getAParameter() and @@ -1958,7 +1968,9 @@ module DataFlow { * which resolves to a callable in call context `cc`, with * corresponding parameter `p`. */ - private predicate flowIntoCallableDelegateCall(DelegateCall call, Expr arg, Parameter p, CallContext cc) { + private predicate flowIntoCallableDelegateCall( + DelegateCall call, Expr arg, Parameter p, CallContext cc + ) { exists(Callable callable | callable = call.getARuntimeTarget(cc) and arg = call.getRuntimeArgumentForParameter(p) and @@ -1978,7 +1990,10 @@ module DataFlow { * * `arg = x`, `p = y`, `call = x.Select(y => { ... })`. */ - predicate flowIntoCallableLibraryCall(Call call, ArgumentNode arg, ImplicitDelegateCallNode delegate, Parameter p, boolean preservesValue, CallContext cc) { + predicate flowIntoCallableLibraryCall( + Call call, ArgumentNode arg, ImplicitDelegateCallNode delegate, Parameter p, + boolean preservesValue, CallContext cc + ) { exists(Callable callable, int i, int j | libraryFlowDelegateCallIn(call, _, arg.asExpr(), preservesValue, i, j) and delegate.getCall() = call.getArgument(j) and @@ -1986,15 +2001,18 @@ module DataFlow { ) or exists(Callable callable, int i, int j, int k | - libraryFlowDelegateCallOutIn(call, _, preservesValue, i, j, k) | + libraryFlowDelegateCallOutIn(call, _, preservesValue, i, j, k) + | callable = flowIntoCallableLibraryCall0(delegate, j, p, cc) and delegate.getCall() = call.getArgument(k) and arg.(ImplicitDelegateCallNode).getCall() = call.getArgument(i) ) } - pragma [noinline] - private Callable flowIntoCallableLibraryCall0(ImplicitDelegateCallNode arg, int i, Parameter p, CallContext cc) { + pragma[noinline] + private Callable flowIntoCallableLibraryCall0( + ImplicitDelegateCallNode arg, int i, Parameter p, CallContext cc + ) { result = arg.getArgument().getARuntimeTarget(cc) and p = result.getParameter(i) } @@ -2006,15 +2024,15 @@ module DataFlow { * a relevant `out`/`ref` argument). */ predicate flowOutOfCallableNonDelegateCall(NonDelegateCall call, DotNet::Expr ret, OutNode out) { - exists(DotNet::Callable callable | - callable = call.getARuntimeTarget() | + exists(DotNet::Callable callable | callable = call.getARuntimeTarget() | // ordinary return value callable.canReturn(ret) and call = out.asExpr() or // return via out/ref parameter exists(Parameter outRef, AssignableDefinitions::OutRefDefinition def | - callableReturnsOutOrRef(callable.getSourceDeclaration(), outRef.getSourceDeclaration(), ret) and + callableReturnsOutOrRef(callable.getSourceDeclaration(), outRef.getSourceDeclaration(), + ret) and def = out.(SsaDefinitionNode).getDefinition().(Ssa::ExplicitDefinition).getADefinition() and def.getTargetAccess() = call.(Call).getArgumentForParameter(outRef) ) @@ -2026,8 +2044,7 @@ module DataFlow { * which the delegate call `call` resolves. */ private predicate flowOutOfCallableDelegateCall(CallNode call, Expr ret, CallContext cc) { - exists(Callable target | - target.getSourceDeclaration().canReturn(ret) | + exists(Callable target | target.getSourceDeclaration().canReturn(ret) | target = call.asExpr().(DelegateCall).getARuntimeTarget(cc) or target = call.(ImplicitDelegateCallNode).getArgument().getARuntimeTarget(cc) ) diff --git a/csharp/ql/src/semmle/code/csharp/dataflow/TaintTracking.qll b/csharp/ql/src/semmle/code/csharp/dataflow/TaintTracking.qll index 7959bd07cb6..a5741c9ef9d 100755 --- a/csharp/ql/src/semmle/code/csharp/dataflow/TaintTracking.qll +++ b/csharp/ql/src/semmle/code/csharp/dataflow/TaintTracking.qll @@ -6,19 +6,17 @@ import csharp module TaintTracking { - private import semmle.code.csharp.dataflow.LibraryTypeDataFlow - private import semmle.code.csharp.dispatch.Dispatch - private import semmle.code.csharp.commons.ComparisonTest - private import cil - private import dotnet + private import semmle.code.csharp.dataflow.LibraryTypeDataFlow + private import semmle.code.csharp.dispatch.Dispatch + private import semmle.code.csharp.commons.ComparisonTest + private import cil + private import dotnet /** * Holds if taint propagates from `source` to `sink` in zero or more local * (intra-procedural) steps. */ - predicate localTaint(DataFlow::Node source, DataFlow::Node sink) { - localTaintStep*(source, sink) - } + predicate localTaint(DataFlow::Node source, DataFlow::Node sink) { localTaintStep*(source, sink) } /** * Holds if taint propagates from `nodeFrom` to `nodeTo` in exactly one local @@ -69,8 +67,7 @@ module TaintTracking { /** Holds if the intermediate node `node` is a taint sanitizer. */ predicate isSanitizer(DataFlow::Node node) { none() } - final - override predicate isBarrier(DataFlow::Node node) { isSanitizer(node) } + final override predicate isBarrier(DataFlow::Node node) { isSanitizer(node) } /** * Holds if the additional taint propagation step from `pred` to `succ` @@ -78,22 +75,22 @@ module TaintTracking { */ predicate isAdditionalTaintStep(DataFlow::Node pred, DataFlow::Node succ) { none() } - final - override predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { + final override predicate isAdditionalFlowStep(DataFlow::Node pred, DataFlow::Node succ) { isAdditionalTaintStep(pred, succ) or localAdditionalTaintStep(pred, succ) or DataFlow::Internal::flowThroughCallableLibraryOutRef(_, pred, succ, false) } - final - override predicate isAdditionalFlowStepIntoCall(DataFlow::Node call, DataFlow::Node arg, DotNet::Parameter p, CallContext::CallContext cc) { + final override predicate isAdditionalFlowStepIntoCall( + DataFlow::Node call, DataFlow::Node arg, DotNet::Parameter p, CallContext::CallContext cc + ) { DataFlow::Internal::flowIntoCallableLibraryCall(_, arg, call, p, false, cc) } - final - override predicate isAdditionalFlowStepOutOfCall(DataFlow::Node call, DataFlow::Node ret, DataFlow::Node out, CallContext::CallContext cc) { - exists(DispatchCall dc, Callable callable | - canYieldReturn(callable, ret.asExpr()) | + final override predicate isAdditionalFlowStepOutOfCall( + DataFlow::Node call, DataFlow::Node ret, DataFlow::Node out, CallContext::CallContext cc + ) { + exists(DispatchCall dc, Callable callable | canYieldReturn(callable, ret.asExpr()) | dc.getCall() = call.asExpr() and call = out and callable = dc.getADynamicTarget() and @@ -112,9 +109,7 @@ module TaintTracking { /** INTERNAL: Do not use. */ module Internal { - predicate canYieldReturn(Callable c, Expr e) { - c.getSourceDeclaration().canYieldReturn(e) - } + predicate canYieldReturn(Callable c, Expr e) { c.getSourceDeclaration().canYieldReturn(e) } private CIL::DataFlowNode asCilDataFlowNode(DataFlow::Node node) { result = node.asParameter() or @@ -126,14 +121,15 @@ module TaintTracking { } /** Gets the qualifier of element access `ea`. */ - private Expr getElementAccessQualifier(ElementAccess ea) { - result = ea.getQualifier() - } + private Expr getElementAccessQualifier(ElementAccess ea) { result = ea.getQualifier() } private class LocalTaintExprStepConfiguration extends DataFlow::Internal::ExprStepConfiguration { LocalTaintExprStepConfiguration() { this = "LocalTaintExprStepConfiguration" } - override predicate stepsToExpr(Expr exprFrom, Expr exprTo, ControlFlowElement scope, boolean exactScope, boolean isSuccessor) { + override predicate stepsToExpr( + Expr exprFrom, Expr exprTo, ControlFlowElement scope, boolean exactScope, + boolean isSuccessor + ) { exactScope = false and ( // Taint propagation using library code @@ -154,7 +150,11 @@ module TaintTracking { or // Taint from object initializer exists(ElementInitializer ei | - ei = exprTo.(ObjectCreation).getInitializer().(CollectionInitializer).getAnElementInitializer() and + ei = exprTo + .(ObjectCreation) + .getInitializer() + .(CollectionInitializer) + .getAnElementInitializer() and exprFrom = ei.getArgument(ei.getNumberOfArguments() - 1) and // assume the last argument is the value (i.e., not a key) scope = exprTo and isSuccessor = false @@ -187,11 +187,11 @@ module TaintTracking { or // Taint from tuple argument exprTo = any(TupleExpr te | - exprFrom = te.getAnArgument() and - te.isReadAccess() and - scope = exprTo and - isSuccessor = true - ) + exprFrom = te.getAnArgument() and + te.isReadAccess() and + scope = exprTo and + isSuccessor = true + ) or exprFrom = exprTo.(InterpolatedStringExpr).getAChild() and scope = exprTo and @@ -199,19 +199,23 @@ module TaintTracking { or // Taint from tuple expression exprTo = any(MemberAccess ma | - ma.getQualifier().getType() instanceof TupleType and - exprFrom = ma.getQualifier() and - scope = exprTo and - isSuccessor = true - ) + ma.getQualifier().getType() instanceof TupleType and + exprFrom = ma.getQualifier() and + scope = exprTo and + isSuccessor = true + ) ) } - override predicate stepsToDefinition(Expr exprFrom, AssignableDefinition defTo, ControlFlowElement scope, boolean exactScope, boolean isSuccessor) { + override predicate stepsToDefinition( + Expr exprFrom, AssignableDefinition defTo, ControlFlowElement scope, boolean exactScope, + boolean isSuccessor + ) { // Taint from `foreach` expression exists(ForeachStmt fs | exprFrom = fs.getIterableExpr() and - defTo.(AssignableDefinitions::LocalVariableDefinition).getDeclaration() = fs.getVariableDeclExpr() and + defTo.(AssignableDefinitions::LocalVariableDefinition).getDeclaration() = fs + .getVariableDeclExpr() and isSuccessor = true | scope = fs and @@ -226,10 +230,13 @@ module TaintTracking { } } - cached module Cached { - cached predicate forceCachingInSameStage() { any() } + cached + module Cached { + cached + predicate forceCachingInSameStage() { any() } - cached predicate localAdditionalTaintStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { + cached + predicate localAdditionalTaintStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { DataFlow::Internal::Cached::forceCachingInSameStage() and any(LocalTaintExprStepConfiguration x).hasStep(nodeFrom, nodeTo) or diff --git a/csharp/ql/src/semmle/code/csharp/dataflow/internal/Steps.qll b/csharp/ql/src/semmle/code/csharp/dataflow/internal/Steps.qll index 4219e49eab6..f80a2036aea 100644 --- a/csharp/ql/src/semmle/code/csharp/dataflow/internal/Steps.qll +++ b/csharp/ql/src/semmle/code/csharp/dataflow/internal/Steps.qll @@ -47,10 +47,7 @@ module Steps { * Holds if modifiable `m` is effectively private or internal (either directly * or because one of `m`'s enclosing types is). */ - private predicate isEffectivelyInternalOrPrivate(Modifiable m) { - m.isEffectivelyInternal() or - m.isEffectivelyPrivate() - } + private predicate isEffectivelyInternalOrPrivate(Modifiable m) { not m.isEffectivelyPublic() } private predicate flowIn(Parameter p, Expr pred, AssignableRead succ) { exists(AssignableDefinitions::ImplicitParameterDefinition def, Call c | succ = getARead(def) | diff --git a/csharp/ql/src/semmle/code/csharp/dispatch/Dispatch.qll b/csharp/ql/src/semmle/code/csharp/dispatch/Dispatch.qll index 8e4d575a7d4..ecef10e575e 100644 --- a/csharp/ql/src/semmle/code/csharp/dispatch/Dispatch.qll +++ b/csharp/ql/src/semmle/code/csharp/dispatch/Dispatch.qll @@ -294,7 +294,7 @@ private module Internal { | succ.(AssignableRead) = a.getAnAccess() and pred = a.getAnAssignedValue() and - a = any(Modifiable m | m.isEffectivelyInternal() or m.isEffectivelyPrivate()) + a = any(Modifiable m | not m.isEffectivelyPublic()) ) } @@ -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() } diff --git a/csharp/ql/src/semmle/code/csharp/exprs/Access.qll b/csharp/ql/src/semmle/code/csharp/exprs/Access.qll index e02bdf74440..f9e29a9cce6 100644 --- a/csharp/ql/src/semmle/code/csharp/exprs/Access.qll +++ b/csharp/ql/src/semmle/code/csharp/exprs/Access.qll @@ -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() } } /** diff --git a/csharp/ql/src/semmle/code/csharp/exprs/Call.qll b/csharp/ql/src/semmle/code/csharp/exprs/Call.qll index a5fd7f00b45..56a9eba9113 100644 --- a/csharp/ql/src/semmle/code/csharp/exprs/Call.qll +++ b/csharp/ql/src/semmle/code/csharp/exprs/Call.qll @@ -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() } } /** diff --git a/csharp/ql/src/semmle/code/csharp/frameworks/system/Xml.qll b/csharp/ql/src/semmle/code/csharp/frameworks/system/Xml.qll index e3ff925b9e5..5fe75994f8e 100644 --- a/csharp/ql/src/semmle/code/csharp/frameworks/system/Xml.qll +++ b/csharp/ql/src/semmle/code/csharp/frameworks/system/Xml.qll @@ -155,7 +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) ) diff --git a/csharp/ql/src/semmle/code/csharp/security/PrivateData.qll b/csharp/ql/src/semmle/code/csharp/security/PrivateData.qll index e7a5ec71d79..10bb06679b7 100644 --- a/csharp/ql/src/semmle/code/csharp/security/PrivateData.qll +++ b/csharp/ql/src/semmle/code/csharp/security/PrivateData.qll @@ -63,6 +63,8 @@ class PrivateVariableAccess extends PrivateDataExpr, VariableAccess { /** Reading the text property of a control that might contain private data. */ class PrivateControlAccess extends PrivateDataExpr { PrivateControlAccess() { - exists(TextControl c | this = c.getARead() and c.getName().toLowerCase().matches(privateNames())) + exists(TextControl c | + this = c.getARead() and c.getName().toLowerCase().matches(privateNames()) + ) } } diff --git a/csharp/ql/src/semmle/code/dotnet/Element.qll b/csharp/ql/src/semmle/code/dotnet/Element.qll index 0ba580b1b56..8277f9b87d7 100644 --- a/csharp/ql/src/semmle/code/dotnet/Element.qll +++ b/csharp/ql/src/semmle/code/dotnet/Element.qll @@ -93,7 +93,7 @@ class NamedElement extends Element, @dotnet_named_element { predicate compiledFromSource() { not this.fromSource() and exists(NamedElement other | other != this | - other.getLabel() = this.getLabel() and + this.matchesHandle(other) and other.fromSource() ) } diff --git a/csharp/ql/src/semmle/code/dotnet/Expr.qll b/csharp/ql/src/semmle/code/dotnet/Expr.qll index 310b843cbe4..29a9c6c170d 100644 --- a/csharp/ql/src/semmle/code/dotnet/Expr.qll +++ b/csharp/ql/src/semmle/code/dotnet/Expr.qll @@ -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() } diff --git a/csharp/ql/test/library-tests/arguments/argumentByName.expected b/csharp/ql/test/library-tests/arguments/argumentByName.expected index f3e86f7998f..867503153a9 100644 --- a/csharp/ql/test/library-tests/arguments/argumentByName.expected +++ b/csharp/ql/test/library-tests/arguments/argumentByName.expected @@ -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 | diff --git a/csharp/ql/test/library-tests/arguments/argumentByParameter.expected b/csharp/ql/test/library-tests/arguments/argumentByParameter.expected index 6307439bd0e..0c00a029be5 100644 --- a/csharp/ql/test/library-tests/arguments/argumentByParameter.expected +++ b/csharp/ql/test/library-tests/arguments/argumentByParameter.expected @@ -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 | diff --git a/csharp/ql/test/library-tests/controlflow/graph/SplitsConsistency.expected b/csharp/ql/test/library-tests/controlflow/graph/SplitsConsistency.expected new file mode 100644 index 00000000000..e44f23168d6 --- /dev/null +++ b/csharp/ql/test/library-tests/controlflow/graph/SplitsConsistency.expected @@ -0,0 +1,5 @@ +nonUniqueSetRepresentation +breakInvariant2 +breakInvariant3 +breakInvariant4 +breakInvariant5 diff --git a/csharp/ql/test/library-tests/controlflow/graph/SplitsConsistency.ql b/csharp/ql/test/library-tests/controlflow/graph/SplitsConsistency.ql new file mode 100644 index 00000000000..eeb0976cd44 --- /dev/null +++ b/csharp/ql/test/library-tests/controlflow/graph/SplitsConsistency.ql @@ -0,0 +1,50 @@ +import csharp +import semmle.code.csharp.controlflow.Completion +import ControlFlow +import ControlFlow::Internal + +query predicate nonUniqueSetRepresentation(Splits s1, Splits s2) { + forex(Nodes::Split s | s = s1.getASplit() | s = s2.getASplit()) and + forex(Nodes::Split s | s = s2.getASplit() | s = s1.getASplit()) and + s1 != s2 +} + +query predicate breakInvariant2( + ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Splits succSplits, + SplitInternal split, Completion c +) { + succSplits(pred, predSplits, succ, succSplits, c) and + split = predSplits.getASplit() and + split.hasSuccessor(pred, succ, c) and + not split = succSplits.getASplit() +} + +query predicate breakInvariant3( + ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Splits succSplits, + SplitInternal split, Completion c +) { + succSplits(pred, predSplits, succ, succSplits, c) and + split = predSplits.getASplit() and + split.hasExit(pred, succ, c) and + split = succSplits.getASplit() +} + +query predicate breakInvariant4( + ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Splits succSplits, + SplitInternal split, Completion c +) { + succSplits(pred, predSplits, succ, succSplits, c) and + split.hasEntry(pred, succ, c) and + not split = predSplits.getASplit() and + not split = succSplits.getASplit() +} + +query predicate breakInvariant5( + ControlFlowElement pred, Splits predSplits, ControlFlowElement succ, Splits succSplits, + SplitInternal split, Completion c +) { + succSplits(pred, predSplits, succ, succSplits, c) and + split = succSplits.getASplit() and + not (split.hasSuccessor(pred, succ, c) and split = predSplits.getASplit()) and + not (split.hasEntry(pred, succ, c) and not split = predSplits.getASplit()) +} diff --git a/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected b/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected index 36d7e34c341..cd710e2a9f2 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected @@ -68,6 +68,8 @@ | Guards.cs:198:31:198:31 | access to parameter s | Guards.cs:197:14:197:29 | call to method NullTestWrong | Guards.cs:197:28:197:28 | access to parameter s | false | | Guards.cs:205:13:205:13 | access to parameter o | Guards.cs:203:13:203:21 | ... != ... | Guards.cs:203:13:203:13 | access to parameter o | true | | Guards.cs:208:17:208:17 | access to parameter o | Guards.cs:203:13:203:21 | ... != ... | Guards.cs:203:13:203:13 | access to parameter o | true | +| Guards.cs:269:11:269:12 | access to parameter o1 | Guards.cs:268:13:268:41 | call to operator == | Guards.cs:268:13:268:14 | access to parameter o1 | true | +| Guards.cs:271:11:271:12 | access to parameter o1 | Guards.cs:270:13:270:42 | call to operator == | Guards.cs:270:13:270:14 | access to parameter o1 | true | | Splitting.cs:13:17:13:17 | access to parameter o | Splitting.cs:12:17:12:25 | ... != ... | Splitting.cs:12:17:12:17 | access to parameter o | true | | Splitting.cs:23:24:23:24 | access to parameter o | Splitting.cs:22:17:22:25 | ... != ... | Splitting.cs:22:17:22:17 | access to parameter o | true | | Splitting.cs:25:13:25:13 | access to parameter o | Splitting.cs:22:17:22:25 | ... != ... | Splitting.cs:22:17:22:17 | access to parameter o | false | diff --git a/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected b/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected index 506555c31d5..5b2848c21ce 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected @@ -164,6 +164,10 @@ | Guards.cs:205:13:205:13 | access to parameter o | Guards.cs:203:13:203:21 | ... != ... | Guards.cs:203:13:203:13 | access to parameter o | true | | Guards.cs:208:17:208:17 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | non-null | | Guards.cs:208:17:208:17 | access to parameter o | Guards.cs:203:13:203:21 | ... != ... | Guards.cs:203:13:203:13 | access to parameter o | true | +| Guards.cs:269:11:269:12 | access to parameter o1 | Guards.cs:268:13:268:14 | access to parameter o1 | Guards.cs:268:13:268:14 | access to parameter o1 | non-null | +| Guards.cs:269:11:269:12 | access to parameter o1 | Guards.cs:268:13:268:41 | call to operator == | Guards.cs:268:13:268:14 | access to parameter o1 | true | +| Guards.cs:269:11:269:12 | access to parameter o1 | Guards.cs:268:16:268:25 | call to method GetType | Guards.cs:268:13:268:14 | access to parameter o1 | non-null | +| Guards.cs:271:11:271:12 | access to parameter o1 | Guards.cs:270:13:270:42 | call to operator == | Guards.cs:270:13:270:14 | access to parameter o1 | true | | Splitting.cs:13:17:13:17 | [b (line 9): true] access to parameter o | Splitting.cs:12:17:12:17 | access to parameter o | Splitting.cs:12:17:12:17 | access to parameter o | non-null | | Splitting.cs:13:17:13:17 | [b (line 9): true] access to parameter o | Splitting.cs:12:17:12:25 | ... != ... | Splitting.cs:12:17:12:17 | access to parameter o | true | | Splitting.cs:14:13:14:13 | [b (line 9): false] access to parameter b | Splitting.cs:11:13:11:13 | access to parameter b | Splitting.cs:11:13:11:13 | access to parameter b | false | diff --git a/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected b/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected index 3e3d977d71b..65b8238d934 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected @@ -164,6 +164,10 @@ | Guards.cs:205:13:205:13 | access to parameter o | Guards.cs:203:13:203:21 | ... != ... | Guards.cs:203:13:203:13 | access to parameter o | true | | Guards.cs:208:17:208:17 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | non-null | | Guards.cs:208:17:208:17 | access to parameter o | Guards.cs:203:13:203:21 | ... != ... | Guards.cs:203:13:203:13 | access to parameter o | true | +| Guards.cs:269:11:269:12 | access to parameter o1 | Guards.cs:268:13:268:14 | access to parameter o1 | Guards.cs:268:13:268:14 | access to parameter o1 | non-null | +| Guards.cs:269:11:269:12 | access to parameter o1 | Guards.cs:268:13:268:41 | call to operator == | Guards.cs:268:13:268:14 | access to parameter o1 | true | +| Guards.cs:269:11:269:12 | access to parameter o1 | Guards.cs:268:16:268:25 | call to method GetType | Guards.cs:268:13:268:14 | access to parameter o1 | non-null | +| Guards.cs:271:11:271:12 | access to parameter o1 | Guards.cs:270:13:270:42 | call to operator == | Guards.cs:270:13:270:14 | access to parameter o1 | true | | Splitting.cs:13:17:13:17 | access to parameter o | Splitting.cs:12:17:12:17 | access to parameter o | Splitting.cs:12:17:12:17 | access to parameter o | non-null | | Splitting.cs:13:17:13:17 | access to parameter o | Splitting.cs:12:17:12:25 | ... != ... | Splitting.cs:12:17:12:17 | access to parameter o | true | | Splitting.cs:23:24:23:24 | access to parameter o | Splitting.cs:22:17:22:17 | access to parameter o | Splitting.cs:22:17:22:17 | access to parameter o | non-null | diff --git a/csharp/ql/test/library-tests/controlflow/guards/Guards.cs b/csharp/ql/test/library-tests/controlflow/guards/Guards.cs index 75c83ac9b89..f8cc463ef1b 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/Guards.cs +++ b/csharp/ql/test/library-tests/controlflow/guards/Guards.cs @@ -262,4 +262,12 @@ public class Guards return; } } + + void M22(object o1, object o2) + { + if (o1?.GetType() == o2.GetType()) + o1.ToString(); // null guarded + if (o1?.GetType() == o2?.GetType()) + o1.ToString(); // not null guarded + } } diff --git a/csharp/ql/test/library-tests/controlflow/guards/Implications.expected b/csharp/ql/test/library-tests/controlflow/guards/Implications.expected index 67de6b196c5..89a73d41b00 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/Implications.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/Implications.expected @@ -345,6 +345,10 @@ | Guards.cs:258:17:258:17 | access to local variable e | match case ...: | Guards.cs:256:13:256:13 | access to parameter b | true | | Guards.cs:258:17:258:17 | access to local variable e | match case ...: | Guards.cs:258:17:258:17 | access to local variable e | 1 | | Guards.cs:258:17:258:17 | access to local variable e | non-match case ...: | Guards.cs:256:13:256:13 | access to parameter b | false | +| Guards.cs:268:13:268:41 | call to operator == | true | Guards.cs:268:16:268:25 | call to method GetType | non-null | +| Guards.cs:268:16:268:25 | call to method GetType | non-null | Guards.cs:268:13:268:14 | access to parameter o1 | non-null | +| Guards.cs:270:16:270:25 | call to method GetType | non-null | Guards.cs:270:13:270:14 | access to parameter o1 | non-null | +| Guards.cs:270:33:270:42 | call to method GetType | non-null | Guards.cs:270:30:270:31 | access to parameter o2 | non-null | | Splitting.cs:12:17:12:25 | ... != ... | false | Splitting.cs:12:17:12:17 | access to parameter o | null | | Splitting.cs:12:17:12:25 | ... != ... | true | Splitting.cs:12:17:12:17 | access to parameter o | non-null | | Splitting.cs:22:17:22:25 | ... != ... | false | Splitting.cs:22:17:22:17 | access to parameter o | null | diff --git a/csharp/ql/test/library-tests/controlflow/guards/NullGuardedExpr.expected b/csharp/ql/test/library-tests/controlflow/guards/NullGuardedExpr.expected index 6b7be8f1f51..a9f767b48ec 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/NullGuardedExpr.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/NullGuardedExpr.expected @@ -41,6 +41,7 @@ | Guards.cs:196:31:196:31 | access to parameter s | | Guards.cs:205:13:205:13 | access to parameter o | | Guards.cs:208:17:208:17 | access to parameter o | +| Guards.cs:269:11:269:12 | access to parameter o1 | | Splitting.cs:13:17:13:17 | access to parameter o | | Splitting.cs:23:24:23:24 | access to parameter o | | Splitting.cs:35:13:35:13 | access to parameter o | diff --git a/csharp/ql/test/library-tests/dataflow/callablereturnsarg/Common.qll b/csharp/ql/test/library-tests/dataflow/callablereturnsarg/Common.qll index 2690f558847..b491756df63 100644 --- a/csharp/ql/test/library-tests/dataflow/callablereturnsarg/Common.qll +++ b/csharp/ql/test/library-tests/dataflow/callablereturnsarg/Common.qll @@ -10,7 +10,8 @@ class Configuration extends DataFlow::Configuration { override predicate isBarrier(DataFlow::Node node) { exists(EQExpr eq, Expr e, AbstractValues::BooleanValue v | - eq = node.(GuardedDataFlowNode).getAGuard(e, v) | + eq = node.(GuardedDataFlowNode).getAGuard(e, v) + | v.getValue() = true and eq.getAnOperand() = e and eq.getAnOperand() instanceof NullLiteral diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaCapturedVariableDef.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaCapturedVariableDef.expected index 93f478a0979..952bf0aba2d 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaCapturedVariableDef.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaCapturedVariableDef.expected @@ -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 | diff --git a/csharp/ql/test/library-tests/definitions/definitions.expected b/csharp/ql/test/library-tests/definitions/definitions.expected index f8a18de559a..25e703b51ee 100644 --- a/csharp/ql/test/library-tests/definitions/definitions.expected +++ b/csharp/ql/test/library-tests/definitions/definitions.expected @@ -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 | definitions.cs:158:22:158:30 | Nested<> | T | diff --git a/csharp/ql/test/library-tests/dispatch/GetADynamicTarget.expected b/csharp/ql/test/library-tests/dispatch/GetADynamicTarget.expected index 6779ec5a877..c481da2b77d 100644 --- a/csharp/ql/test/library-tests/dispatch/GetADynamicTarget.expected +++ b/csharp/ql/test/library-tests/dispatch/GetADynamicTarget.expected @@ -77,18 +77,18 @@ | ViableCallable.cs:12:9:12:28 | call to method M | C6.M(string, T3) | | ViableCallable.cs:12:9:12:28 | call to method M | C6.M(string, T3) | | ViableCallable.cs:12:9:12:28 | call to method M | C7.M(bool, T3) | -| ViableCallable.cs:14:9:14:25 | ... = ... | C2.set_Prop(string) | -| ViableCallable.cs:14:9:14:25 | ... = ... | C2.set_Prop(string) | -| ViableCallable.cs:14:9:14:25 | ... = ... | C2.set_Prop(string) | -| ViableCallable.cs:14:9:14:25 | ... = ... | C3.set_Prop(string) | -| ViableCallable.cs:14:9:14:25 | ... = ... | C4.set_Prop(int[]) | -| ViableCallable.cs:14:9:14:25 | ... = ... | C5.set_Prop(string) | -| ViableCallable.cs:14:9:14:25 | ... = ... | C6.set_Prop(bool) | -| ViableCallable.cs:14:9:14:25 | ... = ... | C6.set_Prop(int[]) | -| ViableCallable.cs:14:9:14:25 | ... = ... | C6.set_Prop(string) | -| ViableCallable.cs:14:9:14:25 | ... = ... | C6.set_Prop(string) | -| ViableCallable.cs:14:9:14:25 | ... = ... | C6.set_Prop(string) | -| ViableCallable.cs:14:9:14:25 | ... = ... | C7.set_Prop(bool) | +| ViableCallable.cs:14:9:14:15 | access to property Prop | C2.set_Prop(string) | +| ViableCallable.cs:14:9:14:15 | access to property Prop | C2.set_Prop(string) | +| ViableCallable.cs:14:9:14:15 | access to property Prop | C2.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.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.set_Prop(bool) | +| ViableCallable.cs:14:9:14:15 | access to property Prop | C6.set_Prop(int[]) | +| ViableCallable.cs:14:9:14:15 | access to property Prop | C6.set_Prop(string) | +| ViableCallable.cs:14:9:14:15 | access to property Prop | C6.set_Prop(string) | +| ViableCallable.cs:14:9:14:15 | access to property Prop | C6.set_Prop(string) | +| ViableCallable.cs:14:9:14:15 | access to property Prop | C7.set_Prop(bool) | | ViableCallable.cs:14:19:14:25 | access to property Prop | C2.get_Prop() | | ViableCallable.cs:14:19:14:25 | access to property Prop | C2.get_Prop() | | ViableCallable.cs:14:19:14:25 | access to property Prop | C2.get_Prop() | @@ -101,18 +101,18 @@ | ViableCallable.cs:14:19:14:25 | access to property Prop | C6.get_Prop() | | ViableCallable.cs:14:19:14:25 | access to property Prop | C6.get_Prop() | | ViableCallable.cs:14:19:14:25 | access to property Prop | C7.get_Prop() | -| ViableCallable.cs:16:9:16:41 | ... = ... | C2.set_Item(bool, string) | -| ViableCallable.cs:16:9:16:41 | ... = ... | C2.set_Item(decimal, string) | -| ViableCallable.cs:16:9:16:41 | ... = ... | C2.set_Item(int, string) | -| ViableCallable.cs:16:9:16:41 | ... = ... | C3.set_Item(decimal, string) | -| ViableCallable.cs:16:9:16:41 | ... = ... | C4.set_Item(bool, int[]) | -| ViableCallable.cs:16:9:16:41 | ... = ... | C5.set_Item(bool, string) | -| ViableCallable.cs:16:9:16:41 | ... = ... | C6.set_Item(byte, bool) | -| ViableCallable.cs:16:9:16:41 | ... = ... | C6.set_Item(bool, int[]) | -| ViableCallable.cs:16:9:16:41 | ... = ... | C6.set_Item(bool, string) | -| ViableCallable.cs:16:9:16:41 | ... = ... | C6.set_Item(decimal, string) | -| ViableCallable.cs:16:9:16:41 | ... = ... | C6.set_Item(int, string) | -| ViableCallable.cs:16:9:16:41 | ... = ... | C7.set_Item(byte, bool) | +| ViableCallable.cs:16:9:16:23 | access to indexer | C2.set_Item(bool, string) | +| ViableCallable.cs:16:9:16:23 | access to indexer | C2.set_Item(decimal, string) | +| ViableCallable.cs:16:9:16:23 | access to indexer | C2.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.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.set_Item(byte, bool) | +| ViableCallable.cs:16:9:16:23 | access to indexer | C6.set_Item(bool, int[]) | +| ViableCallable.cs:16:9:16:23 | access to indexer | C6.set_Item(bool, string) | +| ViableCallable.cs:16:9:16:23 | access to indexer | C6.set_Item(decimal, string) | +| ViableCallable.cs:16:9:16:23 | access to indexer | C6.set_Item(int, string) | +| ViableCallable.cs:16:9:16:23 | access to indexer | C7.set_Item(byte, bool) | | ViableCallable.cs:16:27:16:41 | access to indexer | C2.get_Item(bool) | | ViableCallable.cs:16:27:16:41 | access to indexer | C2.get_Item(decimal) | | ViableCallable.cs:16:27:16:41 | access to indexer | C2.get_Item(int) | @@ -125,125 +125,125 @@ | ViableCallable.cs:16:27:16:41 | access to indexer | C6.get_Item(decimal) | | ViableCallable.cs:16:27:16:41 | access to indexer | C6.get_Item(int) | | ViableCallable.cs:16:27:16:41 | access to indexer | C7.get_Item(byte) | -| ViableCallable.cs:18:9:18:29 | ... += ... | C2.add_Event(EventHandler) | -| ViableCallable.cs:18:9:18:29 | ... += ... | C2.add_Event(EventHandler) | -| ViableCallable.cs:18:9:18:29 | ... += ... | C2.add_Event(EventHandler) | -| ViableCallable.cs:18:9:18:29 | ... += ... | C3.add_Event(EventHandler) | -| ViableCallable.cs:18:9:18:29 | ... += ... | C4.add_Event(EventHandler) | -| ViableCallable.cs:18:9:18:29 | ... += ... | C5.add_Event(EventHandler) | -| ViableCallable.cs:18:9:18:29 | ... += ... | C6.add_Event(EventHandler) | -| ViableCallable.cs:18:9:18:29 | ... += ... | C6.add_Event(EventHandler) | -| ViableCallable.cs:18:9:18:29 | ... += ... | C6.add_Event(EventHandler) | -| ViableCallable.cs:18:9:18:29 | ... += ... | C6.add_Event(EventHandler) | -| ViableCallable.cs:18:9:18:29 | ... += ... | C6.add_Event(EventHandler) | -| ViableCallable.cs:18:9:18:29 | ... += ... | C7.add_Event(EventHandler) | -| ViableCallable.cs:19:9:19:29 | ... -= ... | C2.remove_Event(EventHandler) | -| ViableCallable.cs:19:9:19:29 | ... -= ... | C2.remove_Event(EventHandler) | -| ViableCallable.cs:19:9:19:29 | ... -= ... | C2.remove_Event(EventHandler) | -| ViableCallable.cs:19:9:19:29 | ... -= ... | C3.remove_Event(EventHandler) | -| ViableCallable.cs:19:9:19:29 | ... -= ... | C4.remove_Event(EventHandler) | -| ViableCallable.cs:19:9:19:29 | ... -= ... | C5.remove_Event(EventHandler) | -| ViableCallable.cs:19:9:19:29 | ... -= ... | C6.remove_Event(EventHandler) | -| ViableCallable.cs:19:9:19:29 | ... -= ... | C6.remove_Event(EventHandler) | -| ViableCallable.cs:19:9:19:29 | ... -= ... | C6.remove_Event(EventHandler) | -| ViableCallable.cs:19:9:19:29 | ... -= ... | C6.remove_Event(EventHandler) | -| ViableCallable.cs:19:9:19:29 | ... -= ... | C6.remove_Event(EventHandler) | -| ViableCallable.cs:19:9:19:29 | ... -= ... | C7.remove_Event(EventHandler) | +| ViableCallable.cs:18:9:18:16 | access to event Event | C2.add_Event(EventHandler) | +| ViableCallable.cs:18:9:18:16 | access to event Event | C2.add_Event(EventHandler) | +| ViableCallable.cs:18:9:18:16 | access to event Event | C2.add_Event(EventHandler) | +| ViableCallable.cs:18:9:18:16 | access to event Event | C3.add_Event(EventHandler) | +| ViableCallable.cs:18:9:18:16 | access to event Event | C4.add_Event(EventHandler) | +| ViableCallable.cs:18:9:18:16 | access to event Event | C5.add_Event(EventHandler) | +| ViableCallable.cs:18:9:18:16 | access to event Event | C6.add_Event(EventHandler) | +| ViableCallable.cs:18:9:18:16 | access to event Event | C6.add_Event(EventHandler) | +| ViableCallable.cs:18:9:18:16 | access to event Event | C6.add_Event(EventHandler) | +| ViableCallable.cs:18:9:18:16 | access to event Event | C6.add_Event(EventHandler) | +| ViableCallable.cs:18:9:18:16 | access to event Event | C6.add_Event(EventHandler) | +| ViableCallable.cs:18:9:18:16 | access to event Event | C7.add_Event(EventHandler) | +| ViableCallable.cs:19:9:19:16 | access to event Event | C2.remove_Event(EventHandler) | +| ViableCallable.cs:19:9:19:16 | access to event Event | C2.remove_Event(EventHandler) | +| ViableCallable.cs:19:9:19:16 | access to event Event | C2.remove_Event(EventHandler) | +| ViableCallable.cs:19:9:19:16 | access to event Event | C3.remove_Event(EventHandler) | +| ViableCallable.cs:19:9:19:16 | access to event Event | C4.remove_Event(EventHandler) | +| ViableCallable.cs:19:9:19:16 | access to event Event | C5.remove_Event(EventHandler) | +| ViableCallable.cs:19:9:19:16 | access to event Event | C6.remove_Event(EventHandler) | +| ViableCallable.cs:19:9:19:16 | access to event Event | C6.remove_Event(EventHandler) | +| ViableCallable.cs:19:9:19:16 | access to event Event | C6.remove_Event(EventHandler) | +| ViableCallable.cs:19:9:19:16 | access to event Event | C6.remove_Event(EventHandler) | +| ViableCallable.cs:19:9:19:16 | access to event Event | C6.remove_Event(EventHandler) | +| ViableCallable.cs:19:9:19:16 | access to event Event | C7.remove_Event(EventHandler) | | ViableCallable.cs:22:9:22:30 | call to method M | C4.M(int[], T3) | | ViableCallable.cs:22:9:22:30 | call to method M | C6.M(int[], T3) | -| ViableCallable.cs:24:9:24:25 | ... = ... | C4.set_Prop(int[]) | -| ViableCallable.cs:24:9:24:25 | ... = ... | C6.set_Prop(int[]) | +| ViableCallable.cs:24:9:24:15 | access to property Prop | C4.set_Prop(int[]) | +| ViableCallable.cs:24:9:24:15 | access to property Prop | C6.set_Prop(int[]) | | ViableCallable.cs:24:19:24:25 | access to property Prop | C4.get_Prop() | | ViableCallable.cs:24:19:24:25 | access to property Prop | C6.get_Prop() | -| ViableCallable.cs:26:9:26:41 | ... = ... | C4.set_Item(bool, int[]) | -| ViableCallable.cs:26:9:26:41 | ... = ... | C6.set_Item(bool, int[]) | +| ViableCallable.cs:26:9:26:23 | access to indexer | C4.set_Item(bool, int[]) | +| ViableCallable.cs:26:9:26:23 | access to indexer | C6.set_Item(bool, int[]) | | ViableCallable.cs:26:27:26:41 | access to indexer | C4.get_Item(bool) | | ViableCallable.cs:26:27:26:41 | access to indexer | C6.get_Item(bool) | -| ViableCallable.cs:28:9:28:29 | ... += ... | C4.add_Event(EventHandler) | -| ViableCallable.cs:28:9:28:29 | ... += ... | C6.add_Event(EventHandler) | -| ViableCallable.cs:29:9:29:29 | ... -= ... | C4.remove_Event(EventHandler) | -| ViableCallable.cs:29:9:29:29 | ... -= ... | C6.remove_Event(EventHandler) | +| ViableCallable.cs:28:9:28:16 | access to event Event | C4.add_Event(EventHandler) | +| ViableCallable.cs:28:9:28:16 | access to event Event | C6.add_Event(EventHandler) | +| ViableCallable.cs:29:9:29:16 | access to event Event | C4.remove_Event(EventHandler) | +| ViableCallable.cs:29:9:29:16 | access to event Event | C6.remove_Event(EventHandler) | | ViableCallable.cs:32:30:32:52 | call to method Mock | ViableCallable.Mock>() | | ViableCallable.cs:33:9:33:23 | call to method M | C2.M(string, T3) | | ViableCallable.cs:33:9:33:23 | call to method M | C6.M(string, T3) | -| ViableCallable.cs:35:9:35:25 | ... = ... | C2.set_Prop(string) | -| ViableCallable.cs:35:9:35:25 | ... = ... | C6.set_Prop(string) | +| ViableCallable.cs:35:9:35:15 | access to property Prop | C2.set_Prop(string) | +| ViableCallable.cs:35:9:35:15 | access to property Prop | C6.set_Prop(string) | | ViableCallable.cs:35:19:35:25 | access to property Prop | C2.get_Prop() | | ViableCallable.cs:35:19:35:25 | access to property Prop | C6.get_Prop() | -| ViableCallable.cs:37:9:37:21 | ... = ... | C2.set_Item(int, string) | -| ViableCallable.cs:37:9:37:21 | ... = ... | C6.set_Item(int, string) | +| ViableCallable.cs:37:9:37:13 | access to indexer | C2.set_Item(int, string) | +| ViableCallable.cs:37:9:37:13 | access to indexer | C6.set_Item(int, string) | | ViableCallable.cs:37:17:37:21 | access to indexer | C2.get_Item(int) | | ViableCallable.cs:37:17:37:21 | access to indexer | C6.get_Item(int) | -| ViableCallable.cs:39:9:39:29 | ... += ... | C2.add_Event(EventHandler) | -| ViableCallable.cs:39:9:39:29 | ... += ... | C6.add_Event(EventHandler) | -| ViableCallable.cs:40:9:40:29 | ... -= ... | C2.remove_Event(EventHandler) | -| ViableCallable.cs:40:9:40:29 | ... -= ... | C6.remove_Event(EventHandler) | +| ViableCallable.cs:39:9:39:16 | access to event Event | C2.add_Event(EventHandler) | +| ViableCallable.cs:39:9:39:16 | access to event Event | C6.add_Event(EventHandler) | +| ViableCallable.cs:40:9:40:16 | access to event Event | C2.remove_Event(EventHandler) | +| ViableCallable.cs:40:9:40:16 | access to event Event | C6.remove_Event(EventHandler) | | ViableCallable.cs:43:34:43:60 | call to method Mock | ViableCallable.Mock>() | | ViableCallable.cs:44:9:44:24 | call to method M | C2.M(string, T3) | | ViableCallable.cs:44:9:44:24 | call to method M | C3.M(string, T3) | | ViableCallable.cs:44:9:44:24 | call to method M | C6.M(string, T3) | -| ViableCallable.cs:46:9:46:25 | ... = ... | C2.set_Prop(string) | -| ViableCallable.cs:46:9:46:25 | ... = ... | C3.set_Prop(string) | -| ViableCallable.cs:46:9:46:25 | ... = ... | C6.set_Prop(string) | +| ViableCallable.cs:46:9:46:15 | access to property Prop | C2.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.set_Prop(string) | | ViableCallable.cs:46:19:46:25 | access to property Prop | C2.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.get_Prop() | -| ViableCallable.cs:48:9:48:23 | ... = ... | C2.set_Item(decimal, string) | -| ViableCallable.cs:48:9:48:23 | ... = ... | C3.set_Item(decimal, string) | -| ViableCallable.cs:48:9:48:23 | ... = ... | C6.set_Item(decimal, string) | +| ViableCallable.cs:48:9:48:14 | access to indexer | C2.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.set_Item(decimal, string) | | ViableCallable.cs:48:18:48:23 | access to indexer | C2.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.get_Item(decimal) | -| ViableCallable.cs:50:9:50:29 | ... += ... | C2.add_Event(EventHandler) | -| ViableCallable.cs:50:9:50:29 | ... += ... | C3.add_Event(EventHandler) | -| ViableCallable.cs:50:9:50:29 | ... += ... | C6.add_Event(EventHandler) | -| ViableCallable.cs:51:9:51:29 | ... -= ... | C2.remove_Event(EventHandler) | -| ViableCallable.cs:51:9:51:29 | ... -= ... | C3.remove_Event(EventHandler) | -| ViableCallable.cs:51:9:51:29 | ... -= ... | C6.remove_Event(EventHandler) | +| ViableCallable.cs:50:9:50:16 | access to event Event | C2.add_Event(EventHandler) | +| ViableCallable.cs:50:9:50:16 | access to event Event | C3.add_Event(EventHandler) | +| ViableCallable.cs:50:9:50:16 | access to event Event | C6.add_Event(EventHandler) | +| ViableCallable.cs:51:9:51:16 | access to event Event | C2.remove_Event(EventHandler) | +| ViableCallable.cs:51:9:51:16 | access to event Event | C3.remove_Event(EventHandler) | +| ViableCallable.cs:51:9:51:16 | access to event Event | C6.remove_Event(EventHandler) | | ViableCallable.cs:54:30:54:52 | call to method Mock | ViableCallable.Mock>() | | ViableCallable.cs:55:9:55:44 | call to method M | C4.M(int[], T3) | | ViableCallable.cs:55:9:55:44 | call to method M | C6.M(int[], T3) | -| ViableCallable.cs:57:9:57:25 | ... = ... | C4.set_Prop(int[]) | -| ViableCallable.cs:57:9:57:25 | ... = ... | C6.set_Prop(int[]) | +| ViableCallable.cs:57:9:57:15 | access to property Prop | C4.set_Prop(int[]) | +| ViableCallable.cs:57:9:57:15 | access to property Prop | C6.set_Prop(int[]) | | ViableCallable.cs:57:19:57:25 | access to property Prop | C4.get_Prop() | | ViableCallable.cs:57:19:57:25 | access to property Prop | C6.get_Prop() | -| ViableCallable.cs:59:9:59:29 | ... = ... | C4.set_Item(bool, int[]) | -| ViableCallable.cs:59:9:59:29 | ... = ... | C6.set_Item(bool, int[]) | +| ViableCallable.cs:59:9:59:17 | access to indexer | C4.set_Item(bool, int[]) | +| ViableCallable.cs:59:9:59:17 | access to indexer | C6.set_Item(bool, int[]) | | ViableCallable.cs:59:21:59:29 | access to indexer | C4.get_Item(bool) | | ViableCallable.cs:59:21:59:29 | access to indexer | C6.get_Item(bool) | -| ViableCallable.cs:61:9:61:29 | ... += ... | C4.add_Event(EventHandler) | -| ViableCallable.cs:61:9:61:29 | ... += ... | C6.add_Event(EventHandler) | -| ViableCallable.cs:62:9:62:29 | ... -= ... | C4.remove_Event(EventHandler) | -| ViableCallable.cs:62:9:62:29 | ... -= ... | C6.remove_Event(EventHandler) | +| ViableCallable.cs:61:9:61:16 | access to event Event | C4.add_Event(EventHandler) | +| ViableCallable.cs:61:9:61:16 | access to event Event | C6.add_Event(EventHandler) | +| ViableCallable.cs:62:9:62:16 | access to event Event | C4.remove_Event(EventHandler) | +| ViableCallable.cs:62:9:62:16 | access to event Event | C6.remove_Event(EventHandler) | | ViableCallable.cs:65:31:65:54 | call to method Mock | ViableCallable.Mock>() | | ViableCallable.cs:66:9:66:30 | call to method M | C2.M(string, T3) | | ViableCallable.cs:66:9:66:30 | call to method M | C5.M(string, T3) | | ViableCallable.cs:66:9:66:30 | call to method M | C6.M(string, T3) | -| ViableCallable.cs:68:9:68:25 | ... = ... | C2.set_Prop(string) | -| ViableCallable.cs:68:9:68:25 | ... = ... | C5.set_Prop(string) | -| ViableCallable.cs:68:9:68:25 | ... = ... | C6.set_Prop(string) | +| ViableCallable.cs:68:9:68:15 | access to property Prop | C2.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.set_Prop(string) | | ViableCallable.cs:68:19:68:25 | access to property Prop | C2.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.get_Prop() | -| ViableCallable.cs:70:9:70:29 | ... = ... | C2.set_Item(bool, string) | -| ViableCallable.cs:70:9:70:29 | ... = ... | C5.set_Item(bool, string) | -| ViableCallable.cs:70:9:70:29 | ... = ... | C6.set_Item(bool, string) | +| ViableCallable.cs:70:9:70:17 | access to indexer | C2.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.set_Item(bool, string) | | ViableCallable.cs:70:21:70:29 | access to indexer | C2.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.get_Item(bool) | -| ViableCallable.cs:72:9:72:29 | ... += ... | C2.add_Event(EventHandler) | -| ViableCallable.cs:72:9:72:29 | ... += ... | C5.add_Event(EventHandler) | -| ViableCallable.cs:72:9:72:29 | ... += ... | C6.add_Event(EventHandler) | -| ViableCallable.cs:73:9:73:29 | ... -= ... | C2.remove_Event(EventHandler) | -| ViableCallable.cs:73:9:73:29 | ... -= ... | C5.remove_Event(EventHandler) | -| ViableCallable.cs:73:9:73:29 | ... -= ... | C6.remove_Event(EventHandler) | +| ViableCallable.cs:72:9:72:16 | access to event Event | C2.add_Event(EventHandler) | +| ViableCallable.cs:72:9:72:16 | access to event Event | C5.add_Event(EventHandler) | +| ViableCallable.cs:72:9:72:16 | access to event Event | C6.add_Event(EventHandler) | +| ViableCallable.cs:73:9:73:16 | access to event Event | C2.remove_Event(EventHandler) | +| ViableCallable.cs:73:9:73:16 | access to event Event | C5.remove_Event(EventHandler) | +| ViableCallable.cs:73:9:73:16 | access to event Event | C6.remove_Event(EventHandler) | | ViableCallable.cs:77:9:77:29 | call to method M | C6.M(T1, T3) | -| ViableCallable.cs:79:9:79:25 | ... = ... | C6.set_Prop(T1) | +| ViableCallable.cs:79:9:79:15 | access to property Prop | C6.set_Prop(T1) | | ViableCallable.cs:79:19:79:25 | access to property Prop | C6.get_Prop() | -| ViableCallable.cs:81:9:81:29 | ... = ... | C6.set_Item(bool, T1) | +| ViableCallable.cs:81:9:81:17 | access to indexer | C6.set_Item(bool, T1) | | ViableCallable.cs:81:21:81:29 | access to indexer | C6.get_Item(bool) | -| ViableCallable.cs:83:9:83:29 | ... += ... | C6.add_Event(EventHandler) | -| ViableCallable.cs:84:9:84:29 | ... -= ... | C6.remove_Event(EventHandler) | +| ViableCallable.cs:83:9:83:16 | access to event Event | C6.add_Event(EventHandler) | +| ViableCallable.cs:84:9:84:16 | access to event Event | C6.remove_Event(EventHandler) | | ViableCallable.cs:87:21:87:30 | call to method Mock | ViableCallable.Mock() | | ViableCallable.cs:88:9:88:44 | dynamic call to method M | C8.M(IEnumerable>) | | ViableCallable.cs:88:9:88:44 | dynamic call to method M | C9<>.M(IEnumerable>) | @@ -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>>() | | 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) | -| ViableCallable.cs:106:9:106:22 | ... -= ... | C5.remove_Event2(EventHandler) | +| 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) | +| ViableCallable.cs:106:9:106:17 | access to event Event2 | C5.remove_Event2(EventHandler) | | ViableCallable.cs:120:9:120:25 | dynamic call to method M2 | C8.M2(decimal[]) | | ViableCallable.cs:124:9:124:24 | dynamic call to method M2 | C8.M2(string[]) | | ViableCallable.cs:132:9:132:28 | dynamic call to method M | C6.M(T1, T3) | diff --git a/csharp/ql/test/library-tests/dispatch/viableCallable.expected b/csharp/ql/test/library-tests/dispatch/viableCallable.expected index c3c913beed2..8ac14b1397d 100644 --- a/csharp/ql/test/library-tests/dispatch/viableCallable.expected +++ b/csharp/ql/test/library-tests/dispatch/viableCallable.expected @@ -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 | 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 | C6 | C6<,> | diff --git a/csharp/ql/test/library-tests/modifiers/Effectively.expected b/csharp/ql/test/library-tests/modifiers/Effectively.expected index 33d3aeae1dc..454295f0065 100644 --- a/csharp/ql/test/library-tests/modifiers/Effectively.expected +++ b/csharp/ql/test/library-tests/modifiers/Effectively.expected @@ -15,3 +15,9 @@ | Modifiers.cs:41:20:41:21 | F1 | internal | | Modifiers.cs:43:26:43:27 | F2 | internal | | Modifiers.cs:47:30:47:31 | F4 | internal | +| Modifiers.cs:52:19:52:19 | S | public | +| Modifiers.cs:54:20:54:21 | P1 | public | +| Modifiers.cs:54:36:54:38 | get_P1 | public | +| Modifiers.cs:54:52:54:54 | set_P1 | public | +| Modifiers.cs:55:20:55:21 | P2 | public | +| Modifiers.cs:55:36:55:38 | get_P2 | public | diff --git a/csharp/ql/test/library-tests/modifiers/Effectively.ql b/csharp/ql/test/library-tests/modifiers/Effectively.ql index 9e2ef8b66fc..ea9ddd66448 100644 --- a/csharp/ql/test/library-tests/modifiers/Effectively.ql +++ b/csharp/ql/test/library-tests/modifiers/Effectively.ql @@ -7,5 +7,7 @@ where m.isEffectivelyInternal() and not m.isInternal() and s = "internal" or m.isEffectivelyPrivate() and not m.isPrivate() and s = "private" + or + m.isEffectivelyPublic() and s = "public" ) select m, s diff --git a/csharp/ql/test/query-tests/API Abuse/FormatUnusedArgument/FormatUnusedArgument.cs b/csharp/ql/test/query-tests/API Abuse/FormatUnusedArgument/FormatUnusedArgument.cs index f2441ba7c79..81842d1e19d 100644 --- a/csharp/ql/test/query-tests/API Abuse/FormatUnusedArgument/FormatUnusedArgument.cs +++ b/csharp/ql/test/query-tests/API Abuse/FormatUnusedArgument/FormatUnusedArgument.cs @@ -8,7 +8,7 @@ class C String.Format("{0} {1} {2}", 0, 1, 2); // BAD: Missing arg {0} - String.Format("", 1); + String.Format("X", 1); // BAD: Missing {1} String.Format("{0}", 1, 2); @@ -36,6 +36,10 @@ class C // BAD: Would display "{0}" String.Format("{{0}}", 1); + + // GOOD: Ignore the empty string as it's often used as the default value + // of GetResource(). + String.Format("", 1); } object[] ps; diff --git a/csharp/ql/test/query-tests/API Abuse/FormatUnusedArgument/FormatUnusedArgument.expected b/csharp/ql/test/query-tests/API Abuse/FormatUnusedArgument/FormatUnusedArgument.expected index 46a5f84688c..35387ecb228 100644 --- a/csharp/ql/test/query-tests/API Abuse/FormatUnusedArgument/FormatUnusedArgument.expected +++ b/csharp/ql/test/query-tests/API Abuse/FormatUnusedArgument/FormatUnusedArgument.expected @@ -1,4 +1,4 @@ -| FormatUnusedArgument.cs:11:9:11:28 | call to method Format | The $@ ignores $@. | FormatUnusedArgument.cs:11:23:11:24 | "" | format string | FormatUnusedArgument.cs:11:27:11:27 | (...) ... | this supplied value | +| FormatUnusedArgument.cs:11:9:11:29 | call to method Format | The $@ ignores $@. | FormatUnusedArgument.cs:11:23:11:25 | "X" | format string | FormatUnusedArgument.cs:11:28:11:28 | (...) ... | this supplied value | | FormatUnusedArgument.cs:14:9:14:34 | call to method Format | The $@ ignores $@. | FormatUnusedArgument.cs:14:23:14:27 | "{0}" | format string | FormatUnusedArgument.cs:14:33:14:33 | (...) ... | this supplied value | | FormatUnusedArgument.cs:17:9:17:38 | call to method Format | The $@ ignores $@. | FormatUnusedArgument.cs:17:23:17:31 | "{0} {0}" | format string | FormatUnusedArgument.cs:17:37:17:37 | (...) ... | this supplied value | | FormatUnusedArgument.cs:20:9:20:38 | call to method Format | The $@ ignores $@. | FormatUnusedArgument.cs:20:23:20:31 | "{1} {1}" | format string | FormatUnusedArgument.cs:20:34:20:34 | (...) ... | this supplied value | diff --git a/csharp/ql/test/query-tests/Nullness/E.cs b/csharp/ql/test/query-tests/Nullness/E.cs index 06a034230a7..c991f162aff 100644 --- a/csharp/ql/test/query-tests/Nullness/E.cs +++ b/csharp/ql/test/query-tests/Nullness/E.cs @@ -308,7 +308,7 @@ public class E { if (l.HasValue) { - e.Long = l.Value; // GOOD + e.Long = l.Value; // GOOD (false positive) } return; } diff --git a/csharp/ql/test/query-tests/Nullness/NullMaybe.expected b/csharp/ql/test/query-tests/Nullness/NullMaybe.expected index afa5262f3e7..648a22eb94a 100644 --- a/csharp/ql/test/query-tests/Nullness/NullMaybe.expected +++ b/csharp/ql/test/query-tests/Nullness/NullMaybe.expected @@ -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 | diff --git a/csharp/ql/test/query-tests/Useless Code/DefaultToString/DefaultToString.cs b/csharp/ql/test/query-tests/Useless Code/DefaultToString/DefaultToString.cs index de2c1bbaed2..16e0582ec7d 100644 --- a/csharp/ql/test/query-tests/Useless Code/DefaultToString/DefaultToString.cs +++ b/csharp/ql/test/query-tests/Useless Code/DefaultToString/DefaultToString.cs @@ -1,7 +1,7 @@ using System; using System.Text; -class DefaultToString +public class DefaultToString { void M() { @@ -29,6 +29,12 @@ class DefaultToString var sb = new StringBuilder(); sb.Append(new char[] { 'a', 'b', 'c' }, 0, 3); // GOOD + + IPrivate f = null; + Console.WriteLine(f); // BAD + + IPublic g = null; + Console.WriteLine(g); // GOOD } class A @@ -48,6 +54,14 @@ class DefaultToString { override public string ToString() { return "D"; } } + + public interface IPublic + { + } + + private interface IPrivate + { + } } // semmle-extractor-options: /r:System.Runtime.Extensions.dll diff --git a/csharp/ql/test/query-tests/Useless Code/DefaultToString/DefaultToString.expected b/csharp/ql/test/query-tests/Useless Code/DefaultToString/DefaultToString.expected index 8ef2e407766..3a489c4ff19 100644 --- a/csharp/ql/test/query-tests/Useless Code/DefaultToString/DefaultToString.expected +++ b/csharp/ql/test/query-tests/Useless Code/DefaultToString/DefaultToString.expected @@ -1,7 +1,8 @@ -| DefaultToString.cs:9:27:9:27 | access to local variable d | Default 'ToString()': $@ inherits 'ToString()' from 'Object', and so is not suitable for printing. | DefaultToString.cs:4:7:4:21 | DefaultToString | DefaultToString | -| DefaultToString.cs:10:28:10:28 | access to local variable d | Default 'ToString()': $@ inherits 'ToString()' from 'Object', and so is not suitable for printing. | DefaultToString.cs:4:7:4:21 | DefaultToString | DefaultToString | +| DefaultToString.cs:9:27:9:27 | access to local variable d | Default 'ToString()': $@ inherits 'ToString()' from 'Object', and so is not suitable for printing. | DefaultToString.cs:4:14:4:28 | DefaultToString | DefaultToString | +| DefaultToString.cs:10:28:10:28 | access to local variable d | Default 'ToString()': $@ inherits 'ToString()' from 'Object', and so is not suitable for printing. | DefaultToString.cs:4:14:4:28 | DefaultToString | DefaultToString | | DefaultToString.cs:16:27:16:30 | access to local variable ints | Default 'ToString()': $@ inherits 'ToString()' from 'Object', and so is not suitable for printing. | | Int32[] | Int32[] | | DefaultToString.cs:19:24:19:27 | access to local variable ints | Default 'ToString()': $@ inherits 'ToString()' from 'Object', and so is not suitable for printing. | | Int32[] | Int32[] | +| DefaultToString.cs:34:27:34:27 | access to local variable f | Default 'ToString()': $@ inherits 'ToString()' from 'Object', and so is not suitable for printing. | DefaultToString.cs:62:23:62:30 | IPrivate | IPrivate | | DefaultToStringBad.cs:8:35:8:35 | access to local variable p | Default 'ToString()': $@ inherits 'ToString()' from 'Object', and so is not suitable for printing. | DefaultToStringBad.cs:14:11:14:16 | Person | Person | | DefaultToStringBad.cs:11:38:11:41 | access to local variable ints | Default 'ToString()': $@ inherits 'ToString()' from 'Object', and so is not suitable for printing. | | Int32[] | Int32[] | | WriteLineArray.cs:7:23:7:26 | access to parameter args | Default 'ToString()': $@ inherits 'ToString()' from 'Object', and so is not suitable for printing. | | String[] | String[] | diff --git a/java/ql/src/AlertSuppression.ql b/java/ql/src/AlertSuppression.ql index 94d1ba71b3e..95dd6212630 100644 --- a/java/ql/src/AlertSuppression.ql +++ b/java/ql/src/AlertSuppression.ql @@ -59,7 +59,7 @@ class SuppressionScope extends @javadoc { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn diff --git a/java/ql/src/external/DefectFilter.qll b/java/ql/src/external/DefectFilter.qll index 7f67662f56a..52e7ae3e0f0 100644 --- a/java/ql/src/external/DefectFilter.qll +++ b/java/ql/src/external/DefectFilter.qll @@ -8,7 +8,7 @@ import java * column `startcolumn` of line `startline` to column `endcolumn` of line `endline` * in file `filepath`. * - * For more information, see [LGTM locations](https://lgtm.com/help/ql/locations). + * For more information, see [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ external predicate defectResults( int id, string queryPath, string file, int startline, int startcol, int endline, int endcol, diff --git a/java/ql/src/semmle/code/FileSystem.qll b/java/ql/src/semmle/code/FileSystem.qll index 37b1071e3eb..c2b39223a54 100755 --- a/java/ql/src/semmle/code/FileSystem.qll +++ b/java/ql/src/semmle/code/FileSystem.qll @@ -33,7 +33,7 @@ class Container extends @container, Top { /** * Gets a URL representing the location of this container. * - * For more information see https://lgtm.com/help/ql/locations#providing-urls. + * For more information see [Providing URLs](https://help.semmle.com/QL/learn-ql/ql/locations.html#providing-urls). */ abstract string getURL(); diff --git a/java/ql/src/semmle/code/Location.qll b/java/ql/src/semmle/code/Location.qll index c31c88c766e..92b92fc69ed 100755 --- a/java/ql/src/semmle/code/Location.qll +++ b/java/ql/src/semmle/code/Location.qll @@ -57,7 +57,7 @@ class Top extends @top { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn @@ -150,7 +150,7 @@ class Location extends @location { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn diff --git a/java/ql/src/semmle/code/java/dataflow/TaintTracking.qll b/java/ql/src/semmle/code/java/dataflow/TaintTracking.qll index 78b0f382f8c..cf2c9792921 100644 --- a/java/ql/src/semmle/code/java/dataflow/TaintTracking.qll +++ b/java/ql/src/semmle/code/java/dataflow/TaintTracking.qll @@ -12,6 +12,7 @@ private import DefUse private import semmle.code.java.security.SecurityTests private import semmle.code.java.security.Validation private import semmle.code.java.frameworks.android.Intent +private import semmle.code.java.Maps module TaintTracking { /** @@ -209,6 +210,12 @@ module TaintTracking { sink = assign.getDest().(ArrayAccess).getArray() ) or + exists(EnhancedForStmt for, SsaExplicitUpdate v | + for.getExpr() = src and + v.getDefiningExpr() = for.getVariable() and + v.getAFirstUse() = sink + ) + or constructorStep(src, sink) or qualifierToMethodStep(src, sink) @@ -418,8 +425,49 @@ module TaintTracking { or m instanceof IntentGetExtraMethod or - m instanceof CollectionMethod and - m.hasName("toArray") + m + .getDeclaringType() + .getSourceDeclaration() + .getASourceSupertype*() + .hasQualifiedName("java.util", "Map<>$Entry") and + m.hasName("getValue") + or + m + .getDeclaringType() + .getSourceDeclaration() + .getASourceSupertype*() + .hasQualifiedName("java.lang", "Iterable") and + m.hasName("iterator") + or + m + .getDeclaringType() + .getSourceDeclaration() + .getASourceSupertype*() + .hasQualifiedName("java.util", "Iterator") and + m.hasName("next") + or + m.getDeclaringType().getSourceDeclaration().hasQualifiedName("java.util", "Enumeration") and + m.hasName("nextElement") + or + m.(MapMethod).hasName("entrySet") + or + m.(MapMethod).hasName("get") + or + m.(MapMethod).hasName("remove") + or + m.(MapMethod).hasName("values") + or + m.(CollectionMethod).hasName("toArray") + or + m.(CollectionMethod).hasName("get") + or + m.(CollectionMethod).hasName("remove") and m.getParameterType(0).(PrimitiveType).hasName("int") + or + m.(CollectionMethod).hasName("subList") + or + m.(CollectionMethod).hasName("firstElement") + or + m.(CollectionMethod).hasName("lastElement") or m.getDeclaringType().hasQualifiedName("java.nio", "ByteBuffer") and m.hasName("get") @@ -596,6 +644,18 @@ module TaintTracking { method.getDeclaringType().hasQualifiedName("java.io", "ByteArrayOutputStream") and method.hasName("write") and arg = 0 + or + method.(MapMethod).hasName("put") and arg = 1 + or + method.(MapMethod).hasName("putAll") and arg = 0 + or + method.(CollectionMethod).hasName("add") and arg = method.getNumberOfParameters() - 1 + or + method.(CollectionMethod).hasName("addAll") and arg = method.getNumberOfParameters() - 1 + or + method.(CollectionMethod).hasName("addElement") and arg = 0 + or + method.(CollectionMethod).hasName("set") and arg = 1 } /** A comparison or equality test with a constant. */ diff --git a/java/ql/src/semmle/code/java/security/SecurityTests.qll b/java/ql/src/semmle/code/java/security/SecurityTests.qll index d22d1246c61..c8a39123afa 100644 --- a/java/ql/src/semmle/code/java/security/SecurityTests.qll +++ b/java/ql/src/semmle/code/java/security/SecurityTests.qll @@ -7,6 +7,7 @@ class NonSecurityTestClass extends TestClass { NonSecurityTestClass() { not exists(RefType s | this.getASupertype*().getSourceDeclaration() = s and s.fromSource() | s.getLocation().getFile().getAbsolutePath().matches("%semmle%") or + s.getLocation().getFile().getAbsolutePath().matches("%ql/java/ql/test/%") or s.getLocation().getFile().getAbsolutePath().matches("%CWE%") ) } diff --git a/java/ql/src/semmle/code/xml/XML.qll b/java/ql/src/semmle/code/xml/XML.qll index 190ac06a963..fd9308235fe 100755 --- a/java/ql/src/semmle/code/xml/XML.qll +++ b/java/ql/src/semmle/code/xml/XML.qll @@ -14,7 +14,7 @@ abstract class XMLLocatable extends @xmllocatable { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn diff --git a/java/ql/test/library-tests/dataflow/collections/Test.java b/java/ql/test/library-tests/dataflow/collections/Test.java new file mode 100644 index 00000000000..8557c13b1ec --- /dev/null +++ b/java/ql/test/library-tests/dataflow/collections/Test.java @@ -0,0 +1,29 @@ +import java.util.*; + +public class Test { + static String tainted; + + void sink(Object o) { } + + public void run() { + HashMap m = new HashMap<>(); + String x1 = m.get("key"); + sink(x1); // No flow + + m.put("key", tainted); + String x2 = m.get("key"); + sink(x2); // Flow + + String x3 = m.values().toArray(new String[1])[0]; + sink(x3); // Flow + + for(Map.Entry e : m.entrySet()) { + String x4 = e.getValue(); + sink(x4); // Flow + } + + Iterator it = m.values().iterator(); + String x5 = it.next(); + sink(x5); // Flow + } +} diff --git a/java/ql/test/library-tests/dataflow/collections/flow.expected b/java/ql/test/library-tests/dataflow/collections/flow.expected new file mode 100644 index 00000000000..e2ccd7702b3 --- /dev/null +++ b/java/ql/test/library-tests/dataflow/collections/flow.expected @@ -0,0 +1,4 @@ +| Test.java:13:18:13:24 | tainted | Test.java:15:10:15:11 | x2 | +| Test.java:13:18:13:24 | tainted | Test.java:18:10:18:11 | x3 | +| Test.java:13:18:13:24 | tainted | Test.java:22:12:22:13 | x4 | +| Test.java:13:18:13:24 | tainted | Test.java:27:10:27:11 | x5 | diff --git a/java/ql/test/library-tests/dataflow/collections/flow.ql b/java/ql/test/library-tests/dataflow/collections/flow.ql new file mode 100644 index 00000000000..dab06a3d966 --- /dev/null +++ b/java/ql/test/library-tests/dataflow/collections/flow.ql @@ -0,0 +1,21 @@ +import java +import semmle.code.java.dataflow.TaintTracking + +class Conf extends TaintTracking::Configuration { + Conf() { this = "conf" } + + override predicate isSource(DataFlow::Node src) { + src.asExpr().(VarAccess).getVariable().hasName("tainted") + } + + override predicate isSink(DataFlow::Node sink) { + exists(MethodAccess ma | + sink.asExpr() = ma.getAnArgument() and + ma.getMethod().hasName("sink") + ) + } +} + +from Conf c, DataFlow::Node src, DataFlow::Node sink +where c.hasFlow(src, sink) +select src, sink diff --git a/javascript/config/suites/javascript/security b/javascript/config/suites/javascript/security index 2e010b5abd8..f572def7e8e 100644 --- a/javascript/config/suites/javascript/security +++ b/javascript/config/suites/javascript/security @@ -14,6 +14,7 @@ + semmlecode-javascript-queries/Security/CWE-116/IncompleteSanitization.ql: /Security/CWE/CWE-116 + semmlecode-javascript-queries/Security/CWE-116/DoubleEscaping.ql: /Security/CWE/CWE-116 + semmlecode-javascript-queries/Security/CWE-134/TaintedFormatString.ql: /Security/CWE/CWE-134 ++ semmlecode-javascript-queries/Security/CWE-201/PostMessageStar.ql: /Security/CWE/CWE-201 + semmlecode-javascript-queries/Security/CWE-209/StackTraceExposure.ql: /Security/CWE/CWE-209 + semmlecode-javascript-queries/Security/CWE-312/CleartextStorage.ql: /Security/CWE/CWE-312 + semmlecode-javascript-queries/Security/CWE-312/CleartextLogging.ql: /Security/CWE/CWE-312 diff --git a/javascript/extractor/src/com/semmle/js/extractor/ASTExtractor.java b/javascript/extractor/src/com/semmle/js/extractor/ASTExtractor.java index 2e0f2072601..886cacd87a6 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/ASTExtractor.java +++ b/javascript/extractor/src/com/semmle/js/extractor/ASTExtractor.java @@ -306,7 +306,7 @@ public class ASTExtractor { public V(Platform platform, SourceType sourceType) { this.platform = platform; this.sourceType = sourceType; - this.isStrict = sourceType == SourceType.MODULE; + this.isStrict = sourceType.isStrictMode(); } private Label visit(INode child, Label parent, int childIndex) { @@ -546,31 +546,37 @@ public class ASTExtractor { isStrict = hasUseStrict(nd.getBody()); - // if we're extracting a Node.js/ES2015 module, introduce module scope - if (platform == Platform.NODE) { - // add node.js-specific globals - scopeManager.addVariables("global", "process", "console", "Buffer"); + // Add platform-specific globals. + scopeManager.addVariables(platform.getPredefinedGlobals()); + // Introduce local scope if there is one. + if (sourceType.hasLocalScope()) { Label moduleScopeKey = trapwriter.globalID("module;{" + locationManager.getFileLabel() + "}," + locationManager.getStartLine() + "," + locationManager.getStartColumn()); scopeManager.enterScope(3, moduleScopeKey, toplevelLabel); - // special variables aren't available in `.mjs` modules - if (!".mjs".equals(locationManager.getSourceFileExtension())) - scopeManager.addVariables("require", "module", "exports", "__filename", "__dirname", "arguments"); - trapwriter.addTuple("isModule", toplevelLabel); - } else if (sourceType == SourceType.MODULE) { - Label moduleScopeKey = trapwriter.globalID("module;{" + locationManager.getFileLabel() + "}," + locationManager.getStartLine() + "," + locationManager.getStartColumn()); - scopeManager.enterScope(3, moduleScopeKey, toplevelLabel); + scopeManager.addVariables(sourceType.getPredefinedLocals(platform, locationManager.getSourceFileExtension())); trapwriter.addTuple("isModule", toplevelLabel); } + // Emit the specific source type. + switch (sourceType) { + case CLOSURE_MODULE: + trapwriter.addTuple("isClosureModule", toplevelLabel); + break; + case MODULE: + trapwriter.addTuple("isES2015Module", toplevelLabel); + break; + default: + break; + } + // add all declared global (or module-scoped) names, both non-lexical and lexical scopeManager.addNames(scopeManager.collectDeclaredNames(nd, isStrict, false, DeclKind.none)); scopeManager.addNames(scopeManager.collectDeclaredNames(nd, isStrict, true, DeclKind.none)); visitAll(nd.getBody(), toplevelLabel); - // if we're extracting a Node.js/ES2015 module, leave its scope - if (platform == Platform.NODE || sourceType == SourceType.MODULE) + // Leave the local scope again. + if (sourceType.hasLocalScope()) scopeManager.leaveScope(); contextManager.leaveContainer(); @@ -823,7 +829,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) { diff --git a/javascript/extractor/src/com/semmle/js/extractor/CFGExtractor.java b/javascript/extractor/src/com/semmle/js/extractor/CFGExtractor.java index 1edee6882d2..0b33ec730b2 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/CFGExtractor.java +++ b/javascript/extractor/src/com/semmle/js/extractor/CFGExtractor.java @@ -773,14 +773,18 @@ public class CFGExtractor { public A accept(Visitor v, Q q) { return null; } } - // associate statements with their (direct or indirect) labels - private final Map> loopLabels = new LinkedHashMap>(); + // associate statements with their (direct or indirect) labels; + // per-function cache, cleared after each function + private Map> loopLabels = new LinkedHashMap>(); - // cache the set of normal control flow successors - private final Map followingCache = new LinkedHashMap(); + // cache the set of normal control flow successors; + // per-function cache, cleared after each function + private Map followingCache = new LinkedHashMap(); - // 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 chainRootSuccessors = new LinkedHashMap(); + // 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 chainRootSuccessors = new LinkedHashMap(); /** * Generate entry node. @@ -1031,6 +1035,16 @@ public class CFGExtractor { @Override public Void visit(IFunction nd, SuccessorInfo i) { + // save per-function caches + Map> oldLoopLabels = loopLabels; + Map oldFollowingCache = followingCache; + Map 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; } diff --git a/javascript/extractor/src/com/semmle/js/extractor/ExtractorConfig.java b/javascript/extractor/src/com/semmle/js/extractor/ExtractorConfig.java index dfb031021f3..bd42953e240 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/ExtractorConfig.java +++ b/javascript/extractor/src/com/semmle/js/extractor/ExtractorConfig.java @@ -4,7 +4,12 @@ import java.nio.charset.Charset; import java.nio.charset.IllegalCharsetNameException; import java.nio.charset.StandardCharsets; import java.nio.charset.UnsupportedCharsetException; +import java.util.Arrays; +import java.util.Collections; +import java.util.LinkedHashSet; +import java.util.Set; +import com.semmle.js.parser.JcornWrapper; import com.semmle.util.data.StringUtil; import com.semmle.util.exception.UserError; @@ -50,13 +55,75 @@ public class ExtractorConfig { } }; + /** + * The type of a source file, which together with the {@link Platform} + * determines how the top-level scope of the file behaves, and whether ES2015 + * module syntax should be allowed. + *

+ * Note that the names of these enum members are depended on by {@link Main}, + * {@link AutoBuild}, and {@link JcornWrapper}. + */ public static enum SourceType { - SCRIPT, MODULE, AUTO; + /** A script executed in the global scope. */ + SCRIPT, + + /** An ES2015 module. */ + MODULE, + + /** A Closure-Library module, defined using `goog.module()`. */ + CLOSURE_MODULE, + + /** A CommonJS module that is not also an ES2015 module. */ + COMMONJS_MODULE, + + /** Automatically determined source type. */ + AUTO; @Override public String toString() { return StringUtil.lc(name()); } + + /** + * Returns true if this source is executed directly in the global scope, + * or false if it has its own local scope. + */ + public boolean hasLocalScope() { + return this != SCRIPT; + } + + /** + * Returns true if this source is implicitly in strict mode. + */ + public boolean isStrictMode() { + return this == MODULE; + } + + private static final Set closureLocals = Collections.singleton("exports"); + private static final Set commonJsLocals = new LinkedHashSet<>(Arrays.asList("require", "module", "exports", "__filename", "__dirname", "arguments")); + + /** + * Returns the set of local variables in scope at the top-level of this module. + *

+ * If this source type has no local scope, the empty set is returned. + */ + public Set getPredefinedLocals(Platform platform, String extension) { + switch (this) { + case CLOSURE_MODULE: + return closureLocals; + case COMMONJS_MODULE: + return commonJsLocals; + case MODULE: + if (platform == Platform.NODE && !extension.equals(".mjs")) { + // An ES2015 module that is compiled to a Node.js module effectively has the locals + // from Node.js even if they are not part of the ES2015 standard. + return commonJsLocals; + } + return Collections.emptySet(); + default: + return Collections.emptySet(); + } + } }; public static enum Platform { @@ -66,6 +133,15 @@ public class ExtractorConfig { public String toString() { return StringUtil.lc(name()); } + + private static final Set nodejsGlobals = new LinkedHashSet<>(Arrays.asList("global", "process", "console", "Buffer")); + + /** + * Gets the set of predefined globals for this platform. + */ + public Set getPredefinedGlobals() { + return this == NODE ? nodejsGlobals : Collections.emptySet(); + } } /** diff --git a/javascript/extractor/src/com/semmle/js/extractor/JSExtractor.java b/javascript/extractor/src/com/semmle/js/extractor/JSExtractor.java index 1d5a14183cd..2ef02a769fb 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/JSExtractor.java +++ b/javascript/extractor/src/com/semmle/js/extractor/JSExtractor.java @@ -29,8 +29,8 @@ public class JSExtractor { this.config = config; } - // heuristic: if `import` or `export` appears at the beginning of a line, it's probably a module - private static final Pattern containsImportOrExport = Pattern.compile("(?m)^([ \t]*)(import|export)\\b"); + // heuristic: if `import`, `export`, or `goog.module` appears at the beginning of a line, it's probably a module + private static final Pattern containsModuleIndicator = Pattern.compile("(?m)^([ \t]*)(import|export|goog\\.module)\\b"); public Pair extract(TextualExtractor textualExtractor, String source, int toplevelKind, ScopeManager scopeManager) throws ParseError { // if the file starts with `{ "":` it won't parse as JavaScript; try parsing as JSON instead @@ -69,9 +69,10 @@ public class JSExtractor { if (sourceType != SourceType.AUTO) return sourceType; if (config.getEcmaVersion().compareTo(ECMAVersion.ECMA2015) >= 0) { - Matcher m = containsImportOrExport.matcher(source); - if (m.find() && (allowLeadingWS || m.group(1).isEmpty())) - return SourceType.MODULE; + Matcher m = containsModuleIndicator.matcher(source); + if (m.find() && (allowLeadingWS || m.group(1).isEmpty())) { + return m.group(2).startsWith("goog") ? SourceType.CLOSURE_MODULE : SourceType.MODULE; + } } return SourceType.SCRIPT; } @@ -89,17 +90,22 @@ public class JSExtractor { LoCInfo loc; if (ast != null) { platform = getPlatform(platform, ast); + if (sourceType == SourceType.SCRIPT && platform == Platform.NODE) { + sourceType = SourceType.COMMONJS_MODULE; + } lexicalExtractor = new LexicalExtractor(textualExtractor, parserRes.getTokens(), parserRes.getComments()); 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(), new ArrayList()); ASTExtractor scriptExtractor = new ASTExtractor(lexicalExtractor, null); @@ -123,7 +129,7 @@ public class JSExtractor { if (config.isExterns()) textualExtractor.getTrapwriter().addTuple("isExterns", toplevelLabel); - if (platform == Platform.NODE && sourceType != SourceType.MODULE) + if (platform == Platform.NODE && sourceType == SourceType.COMMONJS_MODULE) textualExtractor.getTrapwriter().addTuple("isNodejs", toplevelLabel); return Pair.make(toplevelLabel, loc); diff --git a/javascript/extractor/src/com/semmle/js/extractor/LexicalExtractor.java b/javascript/extractor/src/com/semmle/js/extractor/LexicalExtractor.java index 242ce0d2a13..8716dde5b91 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/LexicalExtractor.java +++ b/javascript/extractor/src/com/semmle/js/extractor/LexicalExtractor.java @@ -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(); + } } diff --git a/javascript/extractor/src/com/semmle/js/extractor/Main.java b/javascript/extractor/src/com/semmle/js/extractor/Main.java index b6183eff35c..98950f212f8 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/Main.java +++ b/javascript/extractor/src/com/semmle/js/extractor/Main.java @@ -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-02-04"; public static final Pattern NEWLINE = Pattern.compile("\n"); diff --git a/javascript/extractor/src/com/semmle/js/extractor/test/TrapTests.java b/javascript/extractor/src/com/semmle/js/extractor/test/TrapTests.java index a0615f23146..7bebd5970d9 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/test/TrapTests.java +++ b/javascript/extractor/src/com/semmle/js/extractor/test/TrapTests.java @@ -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; diff --git a/javascript/extractor/tests/cfg/output/trap/classexpr1.js.trap b/javascript/extractor/tests/cfg/output/trap/classexpr1.js.trap index 2b457001bcd..b1ef567503d 100644 --- a/javascript/extractor/tests/cfg/output/trap/classexpr1.js.trap +++ b/javascript/extractor/tests/cfg/output/trap/classexpr1.js.trap @@ -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") diff --git a/javascript/extractor/tests/cfg/output/trap/classexpr2.js.trap b/javascript/extractor/tests/cfg/output/trap/classexpr2.js.trap index 843cafdee61..1f733839500 100644 --- a/javascript/extractor/tests/cfg/output/trap/classexpr2.js.trap +++ b/javascript/extractor/tests/cfg/output/trap/classexpr2.js.trap @@ -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") diff --git a/javascript/extractor/tests/cfg/output/trap/classexpr3.js.trap b/javascript/extractor/tests/cfg/output/trap/classexpr3.js.trap index 91819742ab9..8cd5ae02844 100644 --- a/javascript/extractor/tests/cfg/output/trap/classexpr3.js.trap +++ b/javascript/extractor/tests/cfg/output/trap/classexpr3.js.trap @@ -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") diff --git a/javascript/extractor/tests/cfg/output/trap/classexpr4.js.trap b/javascript/extractor/tests/cfg/output/trap/classexpr4.js.trap index 37c50c3399d..e45ff9a6a40 100644 --- a/javascript/extractor/tests/cfg/output/trap/classexpr4.js.trap +++ b/javascript/extractor/tests/cfg/output/trap/classexpr4.js.trap @@ -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") diff --git a/javascript/extractor/tests/cfg/output/trap/fields.js.trap b/javascript/extractor/tests/cfg/output/trap/fields.js.trap index d541e0d1c35..12756edf131 100644 --- a/javascript/extractor/tests/cfg/output/trap/fields.js.trap +++ b/javascript/extractor/tests/cfg/output/trap/fields.js.trap @@ -9,654 +9,650 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,19,0" -locations_default(#20002,#10000,1,1,19,0) -hasLocation(#20001,#20002) -#20003=@"var;{A};{#20000}" -variables(#20003,"A",#20000) -#20004=@"var;{B};{#20000}" -variables(#20004,"B",#20000) -#20005=@"local_type_name;{A};{#20000}" -local_type_names(#20005,"A",#20000) -#20006=@"local_type_name;{B};{#20000}" -local_type_names(#20006,"B",#20000) -#20007=* -stmts(#20007,26,#20001,0,"class A ... () {}\n}") -#20008=@"loc,{#10000},1,1,9,1" -locations_default(#20008,#10000,1,1,9,1) -hasLocation(#20007,#20008) -stmtContainers(#20007,#20001) -#20009=* -exprs(#20009,78,#20007,0,"A") -#20010=@"loc,{#10000},1,7,1,7" -locations_default(#20010,#10000,1,7,1,7) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20007) -exprContainers(#20009,#20001) -literals("A","A",#20009) -decl(#20009,#20003) -typedecl(#20009,#20005) -#20011=* -scopes(#20011,10) -scopenodes(#20007,#20011) -scopenesting(#20011,#20000) +#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() {"," +") +#20005=@"loc,{#10000},2,1,2,17" +locations_default(#20005,#10000,2,1,2,17) +hasLocation(#20004,#20005) +indentation(#10000,2," ",2) +#20006=* +lines(#20006,#20001," ctor;"," +") +#20007=@"loc,{#10000},3,1,3,9" +locations_default(#20007,#10000,3,1,3,9) +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," x;"," +") +#20011=@"loc,{#10000},5,1,5,4" +locations_default(#20011,#10000,5,1,5,4) +hasLocation(#20010,#20011) +indentation(#10000,5," ",2) #20012=* -properties(#20012,#20007,2,0,"constru ... or;\n }") -#20013=@"loc,{#10000},2,3,4,3" -locations_default(#20013,#10000,2,3,4,3) +lines(#20012,#20001," static y;"," +") +#20013=@"loc,{#10000},6,1,6,11" +locations_default(#20013,#10000,6,1,6,11) hasLocation(#20012,#20013) +indentation(#10000,6," ",2) #20014=* -exprs(#20014,0,#20012,0,"constructor") -#20015=@"loc,{#10000},2,3,2,13" -locations_default(#20015,#10000,2,3,2,13) +lines(#20014,#20001," f() {}"," +") +#20015=@"loc,{#10000},7,1,7,8" +locations_default(#20015,#10000,7,1,7,8) hasLocation(#20014,#20015) -enclosingStmt(#20014,#20007) -exprContainers(#20014,#20001) -literals("constructor","constructor",#20014) +indentation(#10000,7," ",2) #20016=* -exprs(#20016,9,#20012,1,"() {\n ctor;\n }") -#20017=@"loc,{#10000},2,14,4,3" -locations_default(#20017,#10000,2,14,4,3) +lines(#20016,#20001," static g() {}"," +") +#20017=@"loc,{#10000},8,1,8,15" +locations_default(#20017,#10000,8,1,8,15) hasLocation(#20016,#20017) -enclosingStmt(#20016,#20007) -exprContainers(#20016,#20001) +indentation(#10000,8," ",2) #20018=* -scopes(#20018,1) -scopenodes(#20016,#20018) -scopenesting(#20018,#20011) -#20019=@"var;{arguments};{#20018}" -variables(#20019,"arguments",#20018) -isArgumentsObject(#20019) +lines(#20018,#20001,"}"," +") +#20019=@"loc,{#10000},9,1,9,1" +locations_default(#20019,#10000,9,1,9,1) +hasLocation(#20018,#20019) #20020=* -stmts(#20020,1,#20016,-2,"{\n ctor;\n }") -#20021=@"loc,{#10000},2,17,4,3" -locations_default(#20021,#10000,2,17,4,3) +lines(#20020,#20001,""," +") +#20021=@"loc,{#10000},10,1,10,0" +locations_default(#20021,#10000,10,1,10,0) hasLocation(#20020,#20021) -stmtContainers(#20020,#20016) #20022=* -stmts(#20022,2,#20020,0,"ctor;") -#20023=@"loc,{#10000},3,5,3,9" -locations_default(#20023,#10000,3,5,3,9) +lines(#20022,#20001,"class B extends A {"," +") +#20023=@"loc,{#10000},11,1,11,19" +locations_default(#20023,#10000,11,1,11,19) hasLocation(#20022,#20023) -stmtContainers(#20022,#20016) #20024=* -exprs(#20024,79,#20022,0,"ctor") -#20025=@"loc,{#10000},3,5,3,8" -locations_default(#20025,#10000,3,5,3,8) +lines(#20024,#20001," constructor() {"," +") +#20025=@"loc,{#10000},12,1,12,17" +locations_default(#20025,#10000,12,1,12,17) hasLocation(#20024,#20025) -enclosingStmt(#20024,#20022) -exprContainers(#20024,#20016) -literals("ctor","ctor",#20024) -#20026=@"var;{ctor};{#20000}" -variables(#20026,"ctor",#20000) -bind(#20024,#20026) -numlines(#20016,3,3,0) -isMethod(#20012) -#20027=* -properties(#20027,#20007,3,8,"x;") -#20028=@"loc,{#10000},5,3,5,4" -locations_default(#20028,#10000,5,3,5,4) -hasLocation(#20027,#20028) -#20029=* -exprs(#20029,0,#20027,0,"x") -#20030=@"loc,{#10000},5,3,5,3" -locations_default(#20030,#10000,5,3,5,3) -hasLocation(#20029,#20030) -enclosingStmt(#20029,#20007) -exprContainers(#20029,#20001) -literals("x","x",#20029) -#20031=* -properties(#20031,#20007,4,8,"static y;") -#20032=@"loc,{#10000},6,3,6,11" -locations_default(#20032,#10000,6,3,6,11) -hasLocation(#20031,#20032) -#20033=* -exprs(#20033,0,#20031,0,"y") -#20034=@"loc,{#10000},6,10,6,10" -locations_default(#20034,#10000,6,10,6,10) -hasLocation(#20033,#20034) -enclosingStmt(#20033,#20007) -exprContainers(#20033,#20001) -literals("y","y",#20033) -isStatic(#20031) -#20035=* -properties(#20035,#20007,5,0,"f() {}") -#20036=@"loc,{#10000},7,3,7,8" -locations_default(#20036,#10000,7,3,7,8) -hasLocation(#20035,#20036) -#20037=* -exprs(#20037,0,#20035,0,"f") -#20038=@"loc,{#10000},7,3,7,3" -locations_default(#20038,#10000,7,3,7,3) -hasLocation(#20037,#20038) -enclosingStmt(#20037,#20007) -exprContainers(#20037,#20001) -literals("f","f",#20037) -#20039=* -exprs(#20039,9,#20035,1,"() {}") -#20040=@"loc,{#10000},7,4,7,8" -locations_default(#20040,#10000,7,4,7,8) -hasLocation(#20039,#20040) -enclosingStmt(#20039,#20007) -exprContainers(#20039,#20001) -#20041=* -scopes(#20041,1) -scopenodes(#20039,#20041) -scopenesting(#20041,#20011) -#20042=@"var;{arguments};{#20041}" -variables(#20042,"arguments",#20041) -isArgumentsObject(#20042) -#20043=* -stmts(#20043,1,#20039,-2,"{}") -#20044=@"loc,{#10000},7,7,7,8" -locations_default(#20044,#10000,7,7,7,8) -hasLocation(#20043,#20044) -stmtContainers(#20043,#20039) -numlines(#20039,1,1,0) -isMethod(#20035) -#20045=* -properties(#20045,#20007,6,0,"static g() {}") -#20046=@"loc,{#10000},8,3,8,15" -locations_default(#20046,#10000,8,3,8,15) -hasLocation(#20045,#20046) -#20047=* -exprs(#20047,0,#20045,0,"g") -#20048=@"loc,{#10000},8,10,8,10" -locations_default(#20048,#10000,8,10,8,10) -hasLocation(#20047,#20048) -enclosingStmt(#20047,#20007) -exprContainers(#20047,#20001) -literals("g","g",#20047) -#20049=* -exprs(#20049,9,#20045,1,"() {}") -#20050=@"loc,{#10000},8,11,8,15" -locations_default(#20050,#10000,8,11,8,15) -hasLocation(#20049,#20050) -enclosingStmt(#20049,#20007) -exprContainers(#20049,#20001) -#20051=* -scopes(#20051,1) -scopenodes(#20049,#20051) -scopenesting(#20051,#20011) -#20052=@"var;{arguments};{#20051}" -variables(#20052,"arguments",#20051) -isArgumentsObject(#20052) -#20053=* -stmts(#20053,1,#20049,-2,"{}") -#20054=@"loc,{#10000},8,14,8,15" -locations_default(#20054,#10000,8,14,8,15) -hasLocation(#20053,#20054) -stmtContainers(#20053,#20049) -numlines(#20049,1,1,0) -isMethod(#20045) -isStatic(#20045) -#20055=* -stmts(#20055,26,#20001,1,"class B ... \n z;\n}") -#20056=@"loc,{#10000},11,1,18,1" -locations_default(#20056,#10000,11,1,18,1) -hasLocation(#20055,#20056) -stmtContainers(#20055,#20001) -#20057=* -exprs(#20057,78,#20055,0,"B") -#20058=@"loc,{#10000},11,7,11,7" -locations_default(#20058,#10000,11,7,11,7) -hasLocation(#20057,#20058) -enclosingStmt(#20057,#20055) -exprContainers(#20057,#20001) -literals("B","B",#20057) -decl(#20057,#20004) -typedecl(#20057,#20006) -#20059=* -scopes(#20059,10) -scopenodes(#20055,#20059) -scopenesting(#20059,#20000) +indentation(#10000,12," ",2) +#20026=* +lines(#20026,#20001," before;"," +") +#20027=@"loc,{#10000},13,1,13,11" +locations_default(#20027,#10000,13,1,13,11) +hasLocation(#20026,#20027) +indentation(#10000,13," ",4) +#20028=* +lines(#20028,#20001," super();"," +") +#20029=@"loc,{#10000},14,1,14,12" +locations_default(#20029,#10000,14,1,14,12) +hasLocation(#20028,#20029) +indentation(#10000,14," ",4) +#20030=* +lines(#20030,#20001," after;"," +") +#20031=@"loc,{#10000},15,1,15,10" +locations_default(#20031,#10000,15,1,15,10) +hasLocation(#20030,#20031) +indentation(#10000,15," ",4) +#20032=* +lines(#20032,#20001," }"," +") +#20033=@"loc,{#10000},16,1,16,3" +locations_default(#20033,#10000,16,1,16,3) +hasLocation(#20032,#20033) +indentation(#10000,16," ",2) +#20034=* +lines(#20034,#20001," z;"," +") +#20035=@"loc,{#10000},17,1,17,4" +locations_default(#20035,#10000,17,1,17,4) +hasLocation(#20034,#20035) +indentation(#10000,17," ",2) +#20036=* +lines(#20036,#20001,"}"," +") +#20037=@"loc,{#10000},18,1,18,1" +locations_default(#20037,#10000,18,1,18,1) +hasLocation(#20036,#20037) +numlines(#20001,18,17,0) +#20038=* +tokeninfo(#20038,7,#20001,0,"class") +#20039=@"loc,{#10000},1,1,1,5" +locations_default(#20039,#10000,1,1,1,5) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,6,#20001,1,"A") +#20041=@"loc,{#10000},1,7,1,7" +locations_default(#20041,#10000,1,7,1,7) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,2,"{") +#20043=@"loc,{#10000},1,9,1,9" +locations_default(#20043,#10000,1,9,1,9) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,6,#20001,3,"constructor") +#20045=@"loc,{#10000},2,3,2,13" +locations_default(#20045,#10000,2,3,2,13) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,4,"(") +#20047=@"loc,{#10000},2,14,2,14" +locations_default(#20047,#10000,2,14,2,14) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,8,#20001,5,")") +#20049=@"loc,{#10000},2,15,2,15" +locations_default(#20049,#10000,2,15,2,15) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,6,"{") +#20051=@"loc,{#10000},2,17,2,17" +locations_default(#20051,#10000,2,17,2,17) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,6,#20001,7,"ctor") +#20053=@"loc,{#10000},3,5,3,8" +locations_default(#20053,#10000,3,5,3,8) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,8,#20001,8,";") +#20055=@"loc,{#10000},3,9,3,9" +locations_default(#20055,#10000,3,9,3,9) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,8,#20001,9,"}") +#20057=@"loc,{#10000},4,3,4,3" +locations_default(#20057,#10000,4,3,4,3) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,6,#20001,10,"x") +#20059=@"loc,{#10000},5,3,5,3" +locations_default(#20059,#10000,5,3,5,3) +hasLocation(#20058,#20059) #20060=* -exprs(#20060,79,#20055,1,"A") -#20061=@"loc,{#10000},11,17,11,17" -locations_default(#20061,#10000,11,17,11,17) +tokeninfo(#20060,8,#20001,11,";") +#20061=@"loc,{#10000},5,4,5,4" +locations_default(#20061,#10000,5,4,5,4) hasLocation(#20060,#20061) -enclosingStmt(#20060,#20055) -exprContainers(#20060,#20001) -literals("A","A",#20060) -bind(#20060,#20003) #20062=* -properties(#20062,#20055,2,0,"constru ... er;\n }") -#20063=@"loc,{#10000},12,3,16,3" -locations_default(#20063,#10000,12,3,16,3) +tokeninfo(#20062,6,#20001,12,"static") +#20063=@"loc,{#10000},6,3,6,8" +locations_default(#20063,#10000,6,3,6,8) hasLocation(#20062,#20063) #20064=* -exprs(#20064,0,#20062,0,"constructor") -#20065=@"loc,{#10000},12,3,12,13" -locations_default(#20065,#10000,12,3,12,13) +tokeninfo(#20064,6,#20001,13,"y") +#20065=@"loc,{#10000},6,10,6,10" +locations_default(#20065,#10000,6,10,6,10) hasLocation(#20064,#20065) -enclosingStmt(#20064,#20055) -exprContainers(#20064,#20001) -literals("constructor","constructor",#20064) #20066=* -exprs(#20066,9,#20062,1,"() {\n ... er;\n }") -#20067=@"loc,{#10000},12,14,16,3" -locations_default(#20067,#10000,12,14,16,3) +tokeninfo(#20066,8,#20001,14,";") +#20067=@"loc,{#10000},6,11,6,11" +locations_default(#20067,#10000,6,11,6,11) hasLocation(#20066,#20067) -enclosingStmt(#20066,#20055) -exprContainers(#20066,#20001) #20068=* -scopes(#20068,1) -scopenodes(#20066,#20068) -scopenesting(#20068,#20059) -#20069=@"var;{arguments};{#20068}" -variables(#20069,"arguments",#20068) -isArgumentsObject(#20069) +tokeninfo(#20068,6,#20001,15,"f") +#20069=@"loc,{#10000},7,3,7,3" +locations_default(#20069,#10000,7,3,7,3) +hasLocation(#20068,#20069) #20070=* -stmts(#20070,1,#20066,-2,"{\n b ... er;\n }") -#20071=@"loc,{#10000},12,17,16,3" -locations_default(#20071,#10000,12,17,16,3) +tokeninfo(#20070,8,#20001,16,"(") +#20071=@"loc,{#10000},7,4,7,4" +locations_default(#20071,#10000,7,4,7,4) hasLocation(#20070,#20071) -stmtContainers(#20070,#20066) #20072=* -stmts(#20072,2,#20070,0,"before;") -#20073=@"loc,{#10000},13,5,13,11" -locations_default(#20073,#10000,13,5,13,11) +tokeninfo(#20072,8,#20001,17,")") +#20073=@"loc,{#10000},7,5,7,5" +locations_default(#20073,#10000,7,5,7,5) hasLocation(#20072,#20073) -stmtContainers(#20072,#20066) #20074=* -exprs(#20074,79,#20072,0,"before") -#20075=@"loc,{#10000},13,5,13,10" -locations_default(#20075,#10000,13,5,13,10) +tokeninfo(#20074,8,#20001,18,"{") +#20075=@"loc,{#10000},7,7,7,7" +locations_default(#20075,#10000,7,7,7,7) hasLocation(#20074,#20075) -enclosingStmt(#20074,#20072) -exprContainers(#20074,#20066) -literals("before","before",#20074) -#20076=@"var;{before};{#20000}" -variables(#20076,"before",#20000) -bind(#20074,#20076) -#20077=* -stmts(#20077,2,#20070,1,"super();") -#20078=@"loc,{#10000},14,5,14,12" -locations_default(#20078,#10000,14,5,14,12) -hasLocation(#20077,#20078) -stmtContainers(#20077,#20066) -#20079=* -exprs(#20079,13,#20077,0,"super()") -#20080=@"loc,{#10000},14,5,14,11" -locations_default(#20080,#10000,14,5,14,11) -hasLocation(#20079,#20080) -enclosingStmt(#20079,#20077) -exprContainers(#20079,#20066) -#20081=* -exprs(#20081,81,#20079,-1,"super") -#20082=@"loc,{#10000},14,5,14,9" -locations_default(#20082,#10000,14,5,14,9) -hasLocation(#20081,#20082) -enclosingStmt(#20081,#20077) -exprContainers(#20081,#20066) -#20083=* -stmts(#20083,2,#20070,2,"after;") -#20084=@"loc,{#10000},15,5,15,10" -locations_default(#20084,#10000,15,5,15,10) -hasLocation(#20083,#20084) -stmtContainers(#20083,#20066) -#20085=* -exprs(#20085,79,#20083,0,"after") -#20086=@"loc,{#10000},15,5,15,9" -locations_default(#20086,#10000,15,5,15,9) -hasLocation(#20085,#20086) -enclosingStmt(#20085,#20083) -exprContainers(#20085,#20066) -literals("after","after",#20085) -#20087=@"var;{after};{#20000}" -variables(#20087,"after",#20000) -bind(#20085,#20087) -numlines(#20066,5,5,0) -isMethod(#20062) +#20076=* +tokeninfo(#20076,8,#20001,19,"}") +#20077=@"loc,{#10000},7,8,7,8" +locations_default(#20077,#10000,7,8,7,8) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,6,#20001,20,"static") +#20079=@"loc,{#10000},8,3,8,8" +locations_default(#20079,#10000,8,3,8,8) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,6,#20001,21,"g") +#20081=@"loc,{#10000},8,10,8,10" +locations_default(#20081,#10000,8,10,8,10) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,8,#20001,22,"(") +#20083=@"loc,{#10000},8,11,8,11" +locations_default(#20083,#10000,8,11,8,11) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,8,#20001,23,")") +#20085=@"loc,{#10000},8,12,8,12" +locations_default(#20085,#10000,8,12,8,12) +hasLocation(#20084,#20085) +#20086=* +tokeninfo(#20086,8,#20001,24,"{") +#20087=@"loc,{#10000},8,14,8,14" +locations_default(#20087,#10000,8,14,8,14) +hasLocation(#20086,#20087) #20088=* -properties(#20088,#20055,3,8,"z;") -#20089=@"loc,{#10000},17,3,17,4" -locations_default(#20089,#10000,17,3,17,4) +tokeninfo(#20088,8,#20001,25,"}") +#20089=@"loc,{#10000},8,15,8,15" +locations_default(#20089,#10000,8,15,8,15) hasLocation(#20088,#20089) #20090=* -exprs(#20090,0,#20088,0,"z") -#20091=@"loc,{#10000},17,3,17,3" -locations_default(#20091,#10000,17,3,17,3) -hasLocation(#20090,#20091) -enclosingStmt(#20090,#20055) -exprContainers(#20090,#20001) -literals("z","z",#20090) -#20092=* -lines(#20092,#20001,"class A {"," -") -#20093=@"loc,{#10000},1,1,1,9" -locations_default(#20093,#10000,1,1,1,9) -hasLocation(#20092,#20093) -#20094=* -lines(#20094,#20001," constructor() {"," -") -#20095=@"loc,{#10000},2,1,2,17" -locations_default(#20095,#10000,2,1,2,17) -hasLocation(#20094,#20095) -indentation(#10000,2," ",2) -#20096=* -lines(#20096,#20001," ctor;"," -") -#20097=@"loc,{#10000},3,1,3,9" -locations_default(#20097,#10000,3,1,3,9) -hasLocation(#20096,#20097) -indentation(#10000,3," ",4) -#20098=* -lines(#20098,#20001," }"," -") -#20099=@"loc,{#10000},4,1,4,3" -locations_default(#20099,#10000,4,1,4,3) -hasLocation(#20098,#20099) -indentation(#10000,4," ",2) -#20100=* -lines(#20100,#20001," x;"," -") -#20101=@"loc,{#10000},5,1,5,4" -locations_default(#20101,#10000,5,1,5,4) -hasLocation(#20100,#20101) -indentation(#10000,5," ",2) -#20102=* -lines(#20102,#20001," static y;"," -") -#20103=@"loc,{#10000},6,1,6,11" -locations_default(#20103,#10000,6,1,6,11) -hasLocation(#20102,#20103) -indentation(#10000,6," ",2) -#20104=* -lines(#20104,#20001," f() {}"," -") -#20105=@"loc,{#10000},7,1,7,8" -locations_default(#20105,#10000,7,1,7,8) -hasLocation(#20104,#20105) -indentation(#10000,7," ",2) -#20106=* -lines(#20106,#20001," static g() {}"," -") -#20107=@"loc,{#10000},8,1,8,15" -locations_default(#20107,#10000,8,1,8,15) -hasLocation(#20106,#20107) -indentation(#10000,8," ",2) -#20108=* -lines(#20108,#20001,"}"," -") -#20109=@"loc,{#10000},9,1,9,1" -locations_default(#20109,#10000,9,1,9,1) -hasLocation(#20108,#20109) -#20110=* -lines(#20110,#20001,""," -") -#20111=@"loc,{#10000},10,1,10,0" -locations_default(#20111,#10000,10,1,10,0) -hasLocation(#20110,#20111) -#20112=* -lines(#20112,#20001,"class B extends A {"," -") -#20113=@"loc,{#10000},11,1,11,19" -locations_default(#20113,#10000,11,1,11,19) -hasLocation(#20112,#20113) -#20114=* -lines(#20114,#20001," constructor() {"," -") -#20115=@"loc,{#10000},12,1,12,17" -locations_default(#20115,#10000,12,1,12,17) -hasLocation(#20114,#20115) -indentation(#10000,12," ",2) -#20116=* -lines(#20116,#20001," before;"," -") -#20117=@"loc,{#10000},13,1,13,11" -locations_default(#20117,#10000,13,1,13,11) -hasLocation(#20116,#20117) -indentation(#10000,13," ",4) -#20118=* -lines(#20118,#20001," super();"," -") -#20119=@"loc,{#10000},14,1,14,12" -locations_default(#20119,#10000,14,1,14,12) -hasLocation(#20118,#20119) -indentation(#10000,14," ",4) -#20120=* -lines(#20120,#20001," after;"," -") -#20121=@"loc,{#10000},15,1,15,10" -locations_default(#20121,#10000,15,1,15,10) -hasLocation(#20120,#20121) -indentation(#10000,15," ",4) -#20122=* -lines(#20122,#20001," }"," -") -#20123=@"loc,{#10000},16,1,16,3" -locations_default(#20123,#10000,16,1,16,3) -hasLocation(#20122,#20123) -indentation(#10000,16," ",2) -#20124=* -lines(#20124,#20001," z;"," -") -#20125=@"loc,{#10000},17,1,17,4" -locations_default(#20125,#10000,17,1,17,4) -hasLocation(#20124,#20125) -indentation(#10000,17," ",2) -#20126=* -lines(#20126,#20001,"}"," -") -#20127=@"loc,{#10000},18,1,18,1" -locations_default(#20127,#10000,18,1,18,1) -hasLocation(#20126,#20127) -numlines(#20001,18,17,0) -#20128=* -tokeninfo(#20128,7,#20001,0,"class") -#20129=@"loc,{#10000},1,1,1,5" -locations_default(#20129,#10000,1,1,1,5) -hasLocation(#20128,#20129) -#20130=* -tokeninfo(#20130,6,#20001,1,"A") -hasLocation(#20130,#20010) +tokeninfo(#20090,8,#20001,26,"}") +hasLocation(#20090,#20019) +#20091=* +tokeninfo(#20091,7,#20001,27,"class") +#20092=@"loc,{#10000},11,1,11,5" +locations_default(#20092,#10000,11,1,11,5) +hasLocation(#20091,#20092) +#20093=* +tokeninfo(#20093,6,#20001,28,"B") +#20094=@"loc,{#10000},11,7,11,7" +locations_default(#20094,#10000,11,7,11,7) +hasLocation(#20093,#20094) +#20095=* +tokeninfo(#20095,7,#20001,29,"extends") +#20096=@"loc,{#10000},11,9,11,15" +locations_default(#20096,#10000,11,9,11,15) +hasLocation(#20095,#20096) +#20097=* +tokeninfo(#20097,6,#20001,30,"A") +#20098=@"loc,{#10000},11,17,11,17" +locations_default(#20098,#10000,11,17,11,17) +hasLocation(#20097,#20098) +#20099=* +tokeninfo(#20099,8,#20001,31,"{") +#20100=@"loc,{#10000},11,19,11,19" +locations_default(#20100,#10000,11,19,11,19) +hasLocation(#20099,#20100) +#20101=* +tokeninfo(#20101,6,#20001,32,"constructor") +#20102=@"loc,{#10000},12,3,12,13" +locations_default(#20102,#10000,12,3,12,13) +hasLocation(#20101,#20102) +#20103=* +tokeninfo(#20103,8,#20001,33,"(") +#20104=@"loc,{#10000},12,14,12,14" +locations_default(#20104,#10000,12,14,12,14) +hasLocation(#20103,#20104) +#20105=* +tokeninfo(#20105,8,#20001,34,")") +#20106=@"loc,{#10000},12,15,12,15" +locations_default(#20106,#10000,12,15,12,15) +hasLocation(#20105,#20106) +#20107=* +tokeninfo(#20107,8,#20001,35,"{") +#20108=@"loc,{#10000},12,17,12,17" +locations_default(#20108,#10000,12,17,12,17) +hasLocation(#20107,#20108) +#20109=* +tokeninfo(#20109,6,#20001,36,"before") +#20110=@"loc,{#10000},13,5,13,10" +locations_default(#20110,#10000,13,5,13,10) +hasLocation(#20109,#20110) +#20111=* +tokeninfo(#20111,8,#20001,37,";") +#20112=@"loc,{#10000},13,11,13,11" +locations_default(#20112,#10000,13,11,13,11) +hasLocation(#20111,#20112) +#20113=* +tokeninfo(#20113,7,#20001,38,"super") +#20114=@"loc,{#10000},14,5,14,9" +locations_default(#20114,#10000,14,5,14,9) +hasLocation(#20113,#20114) +#20115=* +tokeninfo(#20115,8,#20001,39,"(") +#20116=@"loc,{#10000},14,10,14,10" +locations_default(#20116,#10000,14,10,14,10) +hasLocation(#20115,#20116) +#20117=* +tokeninfo(#20117,8,#20001,40,")") +#20118=@"loc,{#10000},14,11,14,11" +locations_default(#20118,#10000,14,11,14,11) +hasLocation(#20117,#20118) +#20119=* +tokeninfo(#20119,8,#20001,41,";") +#20120=@"loc,{#10000},14,12,14,12" +locations_default(#20120,#10000,14,12,14,12) +hasLocation(#20119,#20120) +#20121=* +tokeninfo(#20121,6,#20001,42,"after") +#20122=@"loc,{#10000},15,5,15,9" +locations_default(#20122,#10000,15,5,15,9) +hasLocation(#20121,#20122) +#20123=* +tokeninfo(#20123,8,#20001,43,";") +#20124=@"loc,{#10000},15,10,15,10" +locations_default(#20124,#10000,15,10,15,10) +hasLocation(#20123,#20124) +#20125=* +tokeninfo(#20125,8,#20001,44,"}") +#20126=@"loc,{#10000},16,3,16,3" +locations_default(#20126,#10000,16,3,16,3) +hasLocation(#20125,#20126) +#20127=* +tokeninfo(#20127,6,#20001,45,"z") +#20128=@"loc,{#10000},17,3,17,3" +locations_default(#20128,#10000,17,3,17,3) +hasLocation(#20127,#20128) +#20129=* +tokeninfo(#20129,8,#20001,46,";") +#20130=@"loc,{#10000},17,4,17,4" +locations_default(#20130,#10000,17,4,17,4) +hasLocation(#20129,#20130) #20131=* -tokeninfo(#20131,8,#20001,2,"{") -#20132=@"loc,{#10000},1,9,1,9" -locations_default(#20132,#10000,1,9,1,9) -hasLocation(#20131,#20132) -#20133=* -tokeninfo(#20133,6,#20001,3,"constructor") -hasLocation(#20133,#20015) -#20134=* -tokeninfo(#20134,8,#20001,4,"(") -#20135=@"loc,{#10000},2,14,2,14" -locations_default(#20135,#10000,2,14,2,14) -hasLocation(#20134,#20135) -#20136=* -tokeninfo(#20136,8,#20001,5,")") -#20137=@"loc,{#10000},2,15,2,15" -locations_default(#20137,#10000,2,15,2,15) -hasLocation(#20136,#20137) -#20138=* -tokeninfo(#20138,8,#20001,6,"{") -#20139=@"loc,{#10000},2,17,2,17" -locations_default(#20139,#10000,2,17,2,17) -hasLocation(#20138,#20139) -#20140=* -tokeninfo(#20140,6,#20001,7,"ctor") -hasLocation(#20140,#20025) +tokeninfo(#20131,8,#20001,47,"}") +hasLocation(#20131,#20037) +#20132=* +tokeninfo(#20132,0,#20001,48,"") +#20133=@"loc,{#10000},19,1,19,0" +locations_default(#20133,#10000,19,1,19,0) +hasLocation(#20132,#20133) +toplevels(#20001,0) +#20134=@"loc,{#10000},1,1,19,0" +locations_default(#20134,#10000,1,1,19,0) +hasLocation(#20001,#20134) +#20135=@"var;{A};{#20000}" +variables(#20135,"A",#20000) +#20136=@"var;{B};{#20000}" +variables(#20136,"B",#20000) +#20137=@"local_type_name;{A};{#20000}" +local_type_names(#20137,"A",#20000) +#20138=@"local_type_name;{B};{#20000}" +local_type_names(#20138,"B",#20000) +#20139=* +stmts(#20139,26,#20001,0,"class A ... () {}\n}") +#20140=@"loc,{#10000},1,1,9,1" +locations_default(#20140,#10000,1,1,9,1) +hasLocation(#20139,#20140) +stmtContainers(#20139,#20001) #20141=* -tokeninfo(#20141,8,#20001,8,";") -#20142=@"loc,{#10000},3,9,3,9" -locations_default(#20142,#10000,3,9,3,9) -hasLocation(#20141,#20142) +exprs(#20141,78,#20139,0,"A") +hasLocation(#20141,#20041) +enclosingStmt(#20141,#20139) +exprContainers(#20141,#20001) +literals("A","A",#20141) +decl(#20141,#20135) +typedecl(#20141,#20137) +#20142=* +scopes(#20142,10) +scopenodes(#20139,#20142) +scopenesting(#20142,#20000) #20143=* -tokeninfo(#20143,8,#20001,9,"}") -#20144=@"loc,{#10000},4,3,4,3" -locations_default(#20144,#10000,4,3,4,3) +properties(#20143,#20139,2,0,"constru ... or;\n }") +#20144=@"loc,{#10000},2,3,4,3" +locations_default(#20144,#10000,2,3,4,3) hasLocation(#20143,#20144) #20145=* -tokeninfo(#20145,6,#20001,10,"x") -hasLocation(#20145,#20030) +exprs(#20145,0,#20143,0,"constructor") +hasLocation(#20145,#20045) +enclosingStmt(#20145,#20139) +exprContainers(#20145,#20001) +literals("constructor","constructor",#20145) #20146=* -tokeninfo(#20146,8,#20001,11,";") -#20147=@"loc,{#10000},5,4,5,4" -locations_default(#20147,#10000,5,4,5,4) +exprs(#20146,9,#20143,1,"() {\n ctor;\n }") +#20147=@"loc,{#10000},2,14,4,3" +locations_default(#20147,#10000,2,14,4,3) hasLocation(#20146,#20147) +enclosingStmt(#20146,#20139) +exprContainers(#20146,#20001) #20148=* -tokeninfo(#20148,6,#20001,12,"static") -#20149=@"loc,{#10000},6,3,6,8" -locations_default(#20149,#10000,6,3,6,8) -hasLocation(#20148,#20149) +scopes(#20148,1) +scopenodes(#20146,#20148) +scopenesting(#20148,#20142) +#20149=@"var;{arguments};{#20148}" +variables(#20149,"arguments",#20148) +isArgumentsObject(#20149) #20150=* -tokeninfo(#20150,6,#20001,13,"y") -hasLocation(#20150,#20034) -#20151=* -tokeninfo(#20151,8,#20001,14,";") -#20152=@"loc,{#10000},6,11,6,11" -locations_default(#20152,#10000,6,11,6,11) -hasLocation(#20151,#20152) -#20153=* -tokeninfo(#20153,6,#20001,15,"f") -hasLocation(#20153,#20038) +stmts(#20150,1,#20146,-2,"{\n ctor;\n }") +#20151=@"loc,{#10000},2,17,4,3" +locations_default(#20151,#10000,2,17,4,3) +hasLocation(#20150,#20151) +stmtContainers(#20150,#20146) +#20152=* +stmts(#20152,2,#20150,0,"ctor;") +#20153=@"loc,{#10000},3,5,3,9" +locations_default(#20153,#10000,3,5,3,9) +hasLocation(#20152,#20153) +stmtContainers(#20152,#20146) #20154=* -tokeninfo(#20154,8,#20001,16,"(") -#20155=@"loc,{#10000},7,4,7,4" -locations_default(#20155,#10000,7,4,7,4) -hasLocation(#20154,#20155) +exprs(#20154,79,#20152,0,"ctor") +hasLocation(#20154,#20053) +enclosingStmt(#20154,#20152) +exprContainers(#20154,#20146) +literals("ctor","ctor",#20154) +#20155=@"var;{ctor};{#20000}" +variables(#20155,"ctor",#20000) +bind(#20154,#20155) +isMethod(#20143) #20156=* -tokeninfo(#20156,8,#20001,17,")") -#20157=@"loc,{#10000},7,5,7,5" -locations_default(#20157,#10000,7,5,7,5) +properties(#20156,#20139,3,8,"x;") +#20157=@"loc,{#10000},5,3,5,4" +locations_default(#20157,#10000,5,3,5,4) hasLocation(#20156,#20157) #20158=* -tokeninfo(#20158,8,#20001,18,"{") -#20159=@"loc,{#10000},7,7,7,7" -locations_default(#20159,#10000,7,7,7,7) -hasLocation(#20158,#20159) -#20160=* -tokeninfo(#20160,8,#20001,19,"}") -#20161=@"loc,{#10000},7,8,7,8" -locations_default(#20161,#10000,7,8,7,8) -hasLocation(#20160,#20161) +exprs(#20158,0,#20156,0,"x") +hasLocation(#20158,#20059) +enclosingStmt(#20158,#20139) +exprContainers(#20158,#20001) +literals("x","x",#20158) +#20159=* +properties(#20159,#20139,4,8,"static y;") +#20160=@"loc,{#10000},6,3,6,11" +locations_default(#20160,#10000,6,3,6,11) +hasLocation(#20159,#20160) +#20161=* +exprs(#20161,0,#20159,0,"y") +hasLocation(#20161,#20065) +enclosingStmt(#20161,#20139) +exprContainers(#20161,#20001) +literals("y","y",#20161) +isStatic(#20159) #20162=* -tokeninfo(#20162,6,#20001,20,"static") -#20163=@"loc,{#10000},8,3,8,8" -locations_default(#20163,#10000,8,3,8,8) +properties(#20162,#20139,5,0,"f() {}") +#20163=@"loc,{#10000},7,3,7,8" +locations_default(#20163,#10000,7,3,7,8) hasLocation(#20162,#20163) #20164=* -tokeninfo(#20164,6,#20001,21,"g") -hasLocation(#20164,#20048) +exprs(#20164,0,#20162,0,"f") +hasLocation(#20164,#20069) +enclosingStmt(#20164,#20139) +exprContainers(#20164,#20001) +literals("f","f",#20164) #20165=* -tokeninfo(#20165,8,#20001,22,"(") -#20166=@"loc,{#10000},8,11,8,11" -locations_default(#20166,#10000,8,11,8,11) +exprs(#20165,9,#20162,1,"() {}") +#20166=@"loc,{#10000},7,4,7,8" +locations_default(#20166,#10000,7,4,7,8) hasLocation(#20165,#20166) +enclosingStmt(#20165,#20139) +exprContainers(#20165,#20001) #20167=* -tokeninfo(#20167,8,#20001,23,")") -#20168=@"loc,{#10000},8,12,8,12" -locations_default(#20168,#10000,8,12,8,12) -hasLocation(#20167,#20168) +scopes(#20167,1) +scopenodes(#20165,#20167) +scopenesting(#20167,#20142) +#20168=@"var;{arguments};{#20167}" +variables(#20168,"arguments",#20167) +isArgumentsObject(#20168) #20169=* -tokeninfo(#20169,8,#20001,24,"{") -#20170=@"loc,{#10000},8,14,8,14" -locations_default(#20170,#10000,8,14,8,14) +stmts(#20169,1,#20165,-2,"{}") +#20170=@"loc,{#10000},7,7,7,8" +locations_default(#20170,#10000,7,7,7,8) hasLocation(#20169,#20170) +stmtContainers(#20169,#20165) +isMethod(#20162) #20171=* -tokeninfo(#20171,8,#20001,25,"}") -#20172=@"loc,{#10000},8,15,8,15" -locations_default(#20172,#10000,8,15,8,15) +properties(#20171,#20139,6,0,"static g() {}") +#20172=@"loc,{#10000},8,3,8,15" +locations_default(#20172,#10000,8,3,8,15) hasLocation(#20171,#20172) #20173=* -tokeninfo(#20173,8,#20001,26,"}") -hasLocation(#20173,#20109) +exprs(#20173,0,#20171,0,"g") +hasLocation(#20173,#20081) +enclosingStmt(#20173,#20139) +exprContainers(#20173,#20001) +literals("g","g",#20173) #20174=* -tokeninfo(#20174,7,#20001,27,"class") -#20175=@"loc,{#10000},11,1,11,5" -locations_default(#20175,#10000,11,1,11,5) +exprs(#20174,9,#20171,1,"() {}") +#20175=@"loc,{#10000},8,11,8,15" +locations_default(#20175,#10000,8,11,8,15) hasLocation(#20174,#20175) +enclosingStmt(#20174,#20139) +exprContainers(#20174,#20001) #20176=* -tokeninfo(#20176,6,#20001,28,"B") -hasLocation(#20176,#20058) -#20177=* -tokeninfo(#20177,7,#20001,29,"extends") -#20178=@"loc,{#10000},11,9,11,15" -locations_default(#20178,#10000,11,9,11,15) -hasLocation(#20177,#20178) -#20179=* -tokeninfo(#20179,6,#20001,30,"A") -hasLocation(#20179,#20061) +scopes(#20176,1) +scopenodes(#20174,#20176) +scopenesting(#20176,#20142) +#20177=@"var;{arguments};{#20176}" +variables(#20177,"arguments",#20176) +isArgumentsObject(#20177) +#20178=* +stmts(#20178,1,#20174,-2,"{}") +#20179=@"loc,{#10000},8,14,8,15" +locations_default(#20179,#10000,8,14,8,15) +hasLocation(#20178,#20179) +stmtContainers(#20178,#20174) +isMethod(#20171) +isStatic(#20171) #20180=* -tokeninfo(#20180,8,#20001,31,"{") -#20181=@"loc,{#10000},11,19,11,19" -locations_default(#20181,#10000,11,19,11,19) +stmts(#20180,26,#20001,1,"class B ... \n z;\n}") +#20181=@"loc,{#10000},11,1,18,1" +locations_default(#20181,#10000,11,1,18,1) hasLocation(#20180,#20181) +stmtContainers(#20180,#20001) #20182=* -tokeninfo(#20182,6,#20001,32,"constructor") -hasLocation(#20182,#20065) +exprs(#20182,78,#20180,0,"B") +hasLocation(#20182,#20094) +enclosingStmt(#20182,#20180) +exprContainers(#20182,#20001) +literals("B","B",#20182) +decl(#20182,#20136) +typedecl(#20182,#20138) #20183=* -tokeninfo(#20183,8,#20001,33,"(") -#20184=@"loc,{#10000},12,14,12,14" -locations_default(#20184,#10000,12,14,12,14) -hasLocation(#20183,#20184) +scopes(#20183,10) +scopenodes(#20180,#20183) +scopenesting(#20183,#20000) +#20184=* +exprs(#20184,79,#20180,1,"A") +hasLocation(#20184,#20098) +enclosingStmt(#20184,#20180) +exprContainers(#20184,#20001) +literals("A","A",#20184) +bind(#20184,#20135) #20185=* -tokeninfo(#20185,8,#20001,34,")") -#20186=@"loc,{#10000},12,15,12,15" -locations_default(#20186,#10000,12,15,12,15) +properties(#20185,#20180,2,0,"constru ... er;\n }") +#20186=@"loc,{#10000},12,3,16,3" +locations_default(#20186,#10000,12,3,16,3) hasLocation(#20185,#20186) #20187=* -tokeninfo(#20187,8,#20001,35,"{") -#20188=@"loc,{#10000},12,17,12,17" -locations_default(#20188,#10000,12,17,12,17) -hasLocation(#20187,#20188) -#20189=* -tokeninfo(#20189,6,#20001,36,"before") -hasLocation(#20189,#20075) +exprs(#20187,0,#20185,0,"constructor") +hasLocation(#20187,#20102) +enclosingStmt(#20187,#20180) +exprContainers(#20187,#20001) +literals("constructor","constructor",#20187) +#20188=* +exprs(#20188,9,#20185,1,"() {\n ... er;\n }") +#20189=@"loc,{#10000},12,14,16,3" +locations_default(#20189,#10000,12,14,16,3) +hasLocation(#20188,#20189) +enclosingStmt(#20188,#20180) +exprContainers(#20188,#20001) #20190=* -tokeninfo(#20190,8,#20001,37,";") -#20191=@"loc,{#10000},13,11,13,11" -locations_default(#20191,#10000,13,11,13,11) -hasLocation(#20190,#20191) +scopes(#20190,1) +scopenodes(#20188,#20190) +scopenesting(#20190,#20183) +#20191=@"var;{arguments};{#20190}" +variables(#20191,"arguments",#20190) +isArgumentsObject(#20191) #20192=* -tokeninfo(#20192,7,#20001,38,"super") -hasLocation(#20192,#20082) -#20193=* -tokeninfo(#20193,8,#20001,39,"(") -#20194=@"loc,{#10000},14,10,14,10" -locations_default(#20194,#10000,14,10,14,10) -hasLocation(#20193,#20194) -#20195=* -tokeninfo(#20195,8,#20001,40,")") -#20196=@"loc,{#10000},14,11,14,11" -locations_default(#20196,#10000,14,11,14,11) -hasLocation(#20195,#20196) -#20197=* -tokeninfo(#20197,8,#20001,41,";") -#20198=@"loc,{#10000},14,12,14,12" -locations_default(#20198,#10000,14,12,14,12) -hasLocation(#20197,#20198) -#20199=* -tokeninfo(#20199,6,#20001,42,"after") -hasLocation(#20199,#20086) +stmts(#20192,1,#20188,-2,"{\n b ... er;\n }") +#20193=@"loc,{#10000},12,17,16,3" +locations_default(#20193,#10000,12,17,16,3) +hasLocation(#20192,#20193) +stmtContainers(#20192,#20188) +#20194=* +stmts(#20194,2,#20192,0,"before;") +#20195=@"loc,{#10000},13,5,13,11" +locations_default(#20195,#10000,13,5,13,11) +hasLocation(#20194,#20195) +stmtContainers(#20194,#20188) +#20196=* +exprs(#20196,79,#20194,0,"before") +hasLocation(#20196,#20110) +enclosingStmt(#20196,#20194) +exprContainers(#20196,#20188) +literals("before","before",#20196) +#20197=@"var;{before};{#20000}" +variables(#20197,"before",#20000) +bind(#20196,#20197) +#20198=* +stmts(#20198,2,#20192,1,"super();") +#20199=@"loc,{#10000},14,5,14,12" +locations_default(#20199,#10000,14,5,14,12) +hasLocation(#20198,#20199) +stmtContainers(#20198,#20188) #20200=* -tokeninfo(#20200,8,#20001,43,";") -#20201=@"loc,{#10000},15,10,15,10" -locations_default(#20201,#10000,15,10,15,10) +exprs(#20200,13,#20198,0,"super()") +#20201=@"loc,{#10000},14,5,14,11" +locations_default(#20201,#10000,14,5,14,11) hasLocation(#20200,#20201) +enclosingStmt(#20200,#20198) +exprContainers(#20200,#20188) #20202=* -tokeninfo(#20202,8,#20001,44,"}") -#20203=@"loc,{#10000},16,3,16,3" -locations_default(#20203,#10000,16,3,16,3) -hasLocation(#20202,#20203) -#20204=* -tokeninfo(#20204,6,#20001,45,"z") -hasLocation(#20204,#20091) +exprs(#20202,81,#20200,-1,"super") +hasLocation(#20202,#20114) +enclosingStmt(#20202,#20198) +exprContainers(#20202,#20188) +#20203=* +stmts(#20203,2,#20192,2,"after;") +#20204=@"loc,{#10000},15,5,15,10" +locations_default(#20204,#10000,15,5,15,10) +hasLocation(#20203,#20204) +stmtContainers(#20203,#20188) #20205=* -tokeninfo(#20205,8,#20001,46,";") -#20206=@"loc,{#10000},17,4,17,4" -locations_default(#20206,#10000,17,4,17,4) -hasLocation(#20205,#20206) +exprs(#20205,79,#20203,0,"after") +hasLocation(#20205,#20122) +enclosingStmt(#20205,#20203) +exprContainers(#20205,#20188) +literals("after","after",#20205) +#20206=@"var;{after};{#20000}" +variables(#20206,"after",#20000) +bind(#20205,#20206) +isMethod(#20185) #20207=* -tokeninfo(#20207,8,#20001,47,"}") -hasLocation(#20207,#20127) -#20208=* -tokeninfo(#20208,0,#20001,48,"") -#20209=@"loc,{#10000},19,1,19,0" -locations_default(#20209,#10000,19,1,19,0) -hasLocation(#20208,#20209) +properties(#20207,#20180,3,8,"z;") +#20208=@"loc,{#10000},17,3,17,4" +locations_default(#20208,#10000,17,3,17,4) +hasLocation(#20207,#20208) +#20209=* +exprs(#20209,0,#20207,0,"z") +hasLocation(#20209,#20128) +enclosingStmt(#20209,#20180) +exprContainers(#20209,#20001) +literals("z","z",#20209) #20210=* entry_cfg_node(#20210,#20001) #20211=@"loc,{#10000},1,1,1,0" @@ -664,87 +660,87 @@ locations_default(#20211,#10000,1,1,1,0) hasLocation(#20210,#20211) #20212=* exit_cfg_node(#20212,#20001) -hasLocation(#20212,#20209) -successor(#20090,#20088) -successor(#20066,#20062) +hasLocation(#20212,#20133) +successor(#20209,#20207) +successor(#20188,#20185) #20213=* -entry_cfg_node(#20213,#20066) +entry_cfg_node(#20213,#20188) #20214=@"loc,{#10000},12,14,12,13" locations_default(#20214,#10000,12,14,12,13) hasLocation(#20213,#20214) #20215=* -exit_cfg_node(#20215,#20066) +exit_cfg_node(#20215,#20188) #20216=@"loc,{#10000},16,4,16,3" locations_default(#20216,#10000,16,4,16,3) hasLocation(#20215,#20216) -successor(#20070,#20072) -successor(#20083,#20085) -successor(#20085,#20215) -successor(#20077,#20081) -successor(#20081,#20079) -successor(#20088,#20083) -successor(#20079,#20090) -successor(#20072,#20074) -successor(#20074,#20077) -successor(#20213,#20070) -successor(#20064,#20066) -successor(#20062,#20055) -successor(#20060,#20064) -successor(#20057,#20060) -successor(#20055,#20212) -successor(#20029,#20027) -successor(#20049,#20045) +successor(#20192,#20194) +successor(#20203,#20205) +successor(#20205,#20215) +successor(#20198,#20202) +successor(#20202,#20200) +successor(#20207,#20203) +successor(#20200,#20209) +successor(#20194,#20196) +successor(#20196,#20198) +successor(#20213,#20192) +successor(#20187,#20188) +successor(#20185,#20180) +successor(#20184,#20187) +successor(#20182,#20184) +successor(#20180,#20212) +successor(#20158,#20156) +successor(#20174,#20171) #20217=* -entry_cfg_node(#20217,#20049) +entry_cfg_node(#20217,#20174) #20218=@"loc,{#10000},8,11,8,10" locations_default(#20218,#10000,8,11,8,10) hasLocation(#20217,#20218) #20219=* -exit_cfg_node(#20219,#20049) +exit_cfg_node(#20219,#20174) #20220=@"loc,{#10000},8,16,8,15" locations_default(#20220,#10000,8,16,8,15) hasLocation(#20219,#20220) -successor(#20053,#20219) -successor(#20217,#20053) -successor(#20047,#20049) -successor(#20045,#20007) -successor(#20039,#20035) +successor(#20178,#20219) +successor(#20217,#20178) +successor(#20173,#20174) +successor(#20171,#20139) +successor(#20165,#20162) #20221=* -entry_cfg_node(#20221,#20039) +entry_cfg_node(#20221,#20165) #20222=@"loc,{#10000},7,4,7,3" locations_default(#20222,#10000,7,4,7,3) hasLocation(#20221,#20222) #20223=* -exit_cfg_node(#20223,#20039) +exit_cfg_node(#20223,#20165) #20224=@"loc,{#10000},7,9,7,8" locations_default(#20224,#10000,7,9,7,8) hasLocation(#20223,#20224) -successor(#20043,#20223) -successor(#20221,#20043) -successor(#20037,#20039) -successor(#20035,#20047) -successor(#20016,#20012) +successor(#20169,#20223) +successor(#20221,#20169) +successor(#20164,#20165) +successor(#20162,#20173) +successor(#20146,#20143) #20225=* -entry_cfg_node(#20225,#20016) +entry_cfg_node(#20225,#20146) #20226=@"loc,{#10000},2,14,2,13" locations_default(#20226,#10000,2,14,2,13) hasLocation(#20225,#20226) -successor(#20027,#20020) +successor(#20156,#20150) #20227=* -exit_cfg_node(#20227,#20016) +exit_cfg_node(#20227,#20146) #20228=@"loc,{#10000},4,4,4,3" locations_default(#20228,#10000,4,4,4,3) hasLocation(#20227,#20228) -successor(#20020,#20022) -successor(#20022,#20024) -successor(#20024,#20227) -successor(#20225,#20029) -successor(#20014,#20016) -successor(#20012,#20037) -successor(#20009,#20014) -successor(#20033,#20031) -successor(#20031,#20057) -successor(#20007,#20033) -successor(#20210,#20009) +successor(#20150,#20152) +successor(#20152,#20154) +successor(#20154,#20227) +successor(#20225,#20158) +successor(#20145,#20146) +successor(#20143,#20164) +successor(#20141,#20145) +successor(#20161,#20159) +successor(#20159,#20182) +successor(#20139,#20161) +successor(#20210,#20141) numlines(#10000,18,17,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/cfg/output/trap/seq.js.trap b/javascript/extractor/tests/cfg/output/trap/seq.js.trap index 5753252a447..8c5bdbdf1e1 100644 --- a/javascript/extractor/tests/cfg/output/trap/seq.js.trap +++ b/javascript/extractor/tests/cfg/output/trap/seq.js.trap @@ -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") diff --git a/javascript/extractor/tests/cfg/output/trap/short-circuit.js.trap b/javascript/extractor/tests/cfg/output/trap/short-circuit.js.trap index eea493fc209..d215a1434ad 100644 --- a/javascript/extractor/tests/cfg/output/trap/short-circuit.js.trap +++ b/javascript/extractor/tests/cfg/output/trap/short-circuit.js.trap @@ -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") diff --git a/javascript/extractor/tests/cfg/output/trap/ternary.js.trap b/javascript/extractor/tests/cfg/output/trap/ternary.js.trap index fe017e828ba..65f9bc7288b 100644 --- a/javascript/extractor/tests/cfg/output/trap/ternary.js.trap +++ b/javascript/extractor/tests/cfg/output/trap/ternary.js.trap @@ -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") diff --git a/javascript/extractor/tests/cfg/output/trap/tst.js.trap b/javascript/extractor/tests/cfg/output/trap/tst.js.trap index 5dd8b77a97d..9d5347c23c6 100644 --- a/javascript/extractor/tests/cfg/output/trap/tst.js.trap +++ b/javascript/extractor/tests/cfg/output/trap/tst.js.trap @@ -9,1388 +9,1386 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,37,0" -locations_default(#20002,#10000,1,1,37,0) -hasLocation(#20001,#20002) -#20003=@"var;{outer};{#20000}" -variables(#20003,"outer",#20000) -#20004=@"var;{f};{#20000}" -variables(#20004,"f",#20000) -#20005=* -stmts(#20005,17,#20001,0,"functio ... }\n}") -#20006=@"loc,{#10000},1,1,10,1" -locations_default(#20006,#10000,1,1,10,1) -hasLocation(#20005,#20006) -stmtContainers(#20005,#20001) -#20007=* -exprs(#20007,78,#20005,-1,"outer") -#20008=@"loc,{#10000},1,10,1,14" -locations_default(#20008,#10000,1,10,1,14) -hasLocation(#20007,#20008) -exprContainers(#20007,#20005) -literals("outer","outer",#20007) -decl(#20007,#20003) -#20009=* -scopes(#20009,1) -scopenodes(#20005,#20009) -scopenesting(#20009,#20000) -#20010=@"var;{i};{#20009}" -variables(#20010,"i",#20009) -#20011=@"var;{arguments};{#20009}" -variables(#20011,"arguments",#20009) -isArgumentsObject(#20011) -#20012=* -stmts(#20012,1,#20005,-2,"{\n v ... }\n}") -#20013=@"loc,{#10000},2,1,10,1" -locations_default(#20013,#10000,2,1,10,1) -hasLocation(#20012,#20013) -stmtContainers(#20012,#20005) -#20014=* -stmts(#20014,18,#20012,0,"var i = 0;") -#20015=@"loc,{#10000},3,5,3,14" -locations_default(#20015,#10000,3,5,3,14) -hasLocation(#20014,#20015) -stmtContainers(#20014,#20005) -#20016=* -exprs(#20016,64,#20014,0,"i = 0") -#20017=@"loc,{#10000},3,9,3,13" -locations_default(#20017,#10000,3,9,3,13) -hasLocation(#20016,#20017) -enclosingStmt(#20016,#20014) -exprContainers(#20016,#20005) -#20018=* -exprs(#20018,78,#20016,0,"i") -#20019=@"loc,{#10000},3,9,3,9" -locations_default(#20019,#10000,3,9,3,9) -hasLocation(#20018,#20019) -enclosingStmt(#20018,#20014) -exprContainers(#20018,#20005) -literals("i","i",#20018) -decl(#20018,#20010) -#20020=* -exprs(#20020,3,#20016,1,"0") -#20021=@"loc,{#10000},3,13,3,13" -locations_default(#20021,#10000,3,13,3,13) -hasLocation(#20020,#20021) -enclosingStmt(#20020,#20014) -exprContainers(#20020,#20005) -literals("0","0",#20020) -#20022=* -stmts(#20022,18,#20012,1,"var i = 1;") -#20023=@"loc,{#10000},4,5,4,14" -locations_default(#20023,#10000,4,5,4,14) -hasLocation(#20022,#20023) -stmtContainers(#20022,#20005) -#20024=* -exprs(#20024,64,#20022,0,"i = 1") -#20025=@"loc,{#10000},4,9,4,13" -locations_default(#20025,#10000,4,9,4,13) -hasLocation(#20024,#20025) -enclosingStmt(#20024,#20022) -exprContainers(#20024,#20005) -#20026=* -exprs(#20026,78,#20024,0,"i") -#20027=@"loc,{#10000},4,9,4,9" -locations_default(#20027,#10000,4,9,4,9) -hasLocation(#20026,#20027) -enclosingStmt(#20026,#20022) -exprContainers(#20026,#20005) -literals("i","i",#20026) -decl(#20026,#20010) -#20028=* -exprs(#20028,3,#20024,1,"1") -#20029=@"loc,{#10000},4,13,4,13" -locations_default(#20029,#10000,4,13,4,13) -hasLocation(#20028,#20029) -enclosingStmt(#20028,#20022) -exprContainers(#20028,#20005) -literals("1","1",#20028) -#20030=* -stmts(#20030,14,#20012,2,"for ( i ... ++i );") -#20031=@"loc,{#10000},5,5,5,33" -locations_default(#20031,#10000,5,5,5,33) -hasLocation(#20030,#20031) -stmtContainers(#20030,#20005) -#20032=* -exprs(#20032,27,#20030,1,"i < 32") -#20033=@"loc,{#10000},5,19,5,24" -locations_default(#20033,#10000,5,19,5,24) -hasLocation(#20032,#20033) -enclosingStmt(#20032,#20030) -exprContainers(#20032,#20005) -#20034=* -exprs(#20034,79,#20032,0,"i") -#20035=@"loc,{#10000},5,19,5,19" -locations_default(#20035,#10000,5,19,5,19) -hasLocation(#20034,#20035) -enclosingStmt(#20034,#20030) -exprContainers(#20034,#20005) -literals("i","i",#20034) -bind(#20034,#20010) -#20036=* -exprs(#20036,3,#20032,1,"32") -#20037=@"loc,{#10000},5,23,5,24" -locations_default(#20037,#10000,5,23,5,24) -hasLocation(#20036,#20037) -enclosingStmt(#20036,#20030) -exprContainers(#20036,#20005) -literals("32","32",#20036) -#20038=* -exprs(#20038,59,#20030,2,"++i") -#20039=@"loc,{#10000},5,28,5,30" -locations_default(#20039,#10000,5,28,5,30) -hasLocation(#20038,#20039) -enclosingStmt(#20038,#20030) -exprContainers(#20038,#20005) -#20040=* -exprs(#20040,79,#20038,0,"i") -#20041=@"loc,{#10000},5,30,5,30" -locations_default(#20041,#10000,5,30,5,30) -hasLocation(#20040,#20041) -enclosingStmt(#20040,#20030) -exprContainers(#20040,#20005) -literals("i","i",#20040) -bind(#20040,#20010) -#20042=* -exprs(#20042,47,#20030,0,"i = 0") -#20043=@"loc,{#10000},5,11,5,15" -locations_default(#20043,#10000,5,11,5,15) -hasLocation(#20042,#20043) -enclosingStmt(#20042,#20030) -exprContainers(#20042,#20005) -#20044=* -exprs(#20044,79,#20042,0,"i") -#20045=@"loc,{#10000},5,11,5,11" -locations_default(#20045,#10000,5,11,5,11) -hasLocation(#20044,#20045) -enclosingStmt(#20044,#20030) -exprContainers(#20044,#20005) -literals("i","i",#20044) -bind(#20044,#20010) -#20046=* -exprs(#20046,3,#20042,1,"0") -#20047=@"loc,{#10000},5,15,5,15" -locations_default(#20047,#10000,5,15,5,15) -hasLocation(#20046,#20047) -enclosingStmt(#20046,#20030) -exprContainers(#20046,#20005) -literals("0","0",#20046) -#20048=* -stmts(#20048,0,#20030,3,";") -#20049=@"loc,{#10000},5,33,5,33" -locations_default(#20049,#10000,5,33,5,33) -hasLocation(#20048,#20049) -stmtContainers(#20048,#20005) -#20050=* -stmts(#20050,8,#20012,3,"switch ... ;\n }") -#20051=@"loc,{#10000},6,5,9,5" -locations_default(#20051,#10000,6,5,9,5) -hasLocation(#20050,#20051) -stmtContainers(#20050,#20005) -#20052=* -exprs(#20052,79,#20050,-1,"i") -#20053=@"loc,{#10000},6,13,6,13" -locations_default(#20053,#10000,6,13,6,13) -hasLocation(#20052,#20053) -enclosingStmt(#20052,#20050) -exprContainers(#20052,#20005) -literals("i","i",#20052) -bind(#20052,#20010) -#20054=* -stmts(#20054,19,#20050,0,"case 32 ... n true;") -#20055=@"loc,{#10000},7,5,8,20" -locations_default(#20055,#10000,7,5,8,20) -hasLocation(#20054,#20055) -stmtContainers(#20054,#20005) -#20056=* -exprs(#20056,3,#20054,-1,"32") -#20057=@"loc,{#10000},7,10,7,11" -locations_default(#20057,#10000,7,10,7,11) -hasLocation(#20056,#20057) -enclosingStmt(#20056,#20054) -exprContainers(#20056,#20005) -literals("32","32",#20056) -#20058=* -stmts(#20058,9,#20054,0,"return true;") -#20059=@"loc,{#10000},8,9,8,20" -locations_default(#20059,#10000,8,9,8,20) -hasLocation(#20058,#20059) -stmtContainers(#20058,#20005) -#20060=* -exprs(#20060,2,#20058,0,"true") -#20061=@"loc,{#10000},8,16,8,19" -locations_default(#20061,#10000,8,16,8,19) -hasLocation(#20060,#20061) -enclosingStmt(#20060,#20058) -exprContainers(#20060,#20005) -literals("true","true",#20060) -numlines(#20005,10,10,0) -#20062=* -stmts(#20062,14,#20001,1,"for (;a ... ntinue;") -#20063=@"loc,{#10000},12,1,13,13" -locations_default(#20063,#10000,12,1,13,13) -hasLocation(#20062,#20063) -stmtContainers(#20062,#20001) -#20064=* -exprs(#20064,79,#20062,1,"a") -#20065=@"loc,{#10000},12,7,12,7" -locations_default(#20065,#10000,12,7,12,7) -hasLocation(#20064,#20065) -enclosingStmt(#20064,#20062) -exprContainers(#20064,#20001) -literals("a","a",#20064) -#20066=@"var;{a};{#20000}" -variables(#20066,"a",#20000) -bind(#20064,#20066) -#20067=* -stmts(#20067,6,#20062,3,"continue;") -#20068=@"loc,{#10000},13,5,13,13" -locations_default(#20068,#10000,13,5,13,13) -hasLocation(#20067,#20068) -stmtContainers(#20067,#20001) -jumpTargets(#20067,#20062) -#20069=* -stmts(#20069,17,#20001,2,"functio ... (p);\n}") -#20070=@"loc,{#10000},15,1,18,1" -locations_default(#20070,#10000,15,1,18,1) -hasLocation(#20069,#20070) -stmtContainers(#20069,#20001) -#20071=* -exprs(#20071,78,#20069,-1,"f") -#20072=@"loc,{#10000},15,10,15,10" -locations_default(#20072,#10000,15,10,15,10) -hasLocation(#20071,#20072) -exprContainers(#20071,#20069) -literals("f","f",#20071) -decl(#20071,#20004) -#20073=* -scopes(#20073,1) -scopenodes(#20069,#20073) -scopenesting(#20073,#20000) -#20074=@"var;{p};{#20073}" -variables(#20074,"p",#20073) -#20075=@"var;{o};{#20073}" -variables(#20075,"o",#20073) -#20076=* -exprs(#20076,78,#20069,0,"o") -#20077=@"loc,{#10000},15,12,15,12" -locations_default(#20077,#10000,15,12,15,12) -hasLocation(#20076,#20077) -exprContainers(#20076,#20069) -literals("o","o",#20076) -decl(#20076,#20075) -#20078=@"var;{arguments};{#20073}" -variables(#20078,"arguments",#20073) -isArgumentsObject(#20078) -#20079=* -stmts(#20079,1,#20069,-2,"{\n f ... (p);\n}") -#20080=@"loc,{#10000},15,15,18,1" -locations_default(#20080,#10000,15,15,18,1) -hasLocation(#20079,#20080) -stmtContainers(#20079,#20069) -#20081=* -stmts(#20081,15,#20079,0,"for (va ... if (p);") -#20082=@"loc,{#10000},16,5,17,15" -locations_default(#20082,#10000,16,5,17,15) -hasLocation(#20081,#20082) -stmtContainers(#20081,#20069) -#20083=* -exprs(#20083,79,#20081,1,"o") -#20084=@"loc,{#10000},16,19,16,19" -locations_default(#20084,#10000,16,19,16,19) -hasLocation(#20083,#20084) -enclosingStmt(#20083,#20081) -exprContainers(#20083,#20069) -literals("o","o",#20083) -bind(#20083,#20075) -#20085=* -stmts(#20085,18,#20081,0,"var p") -#20086=@"loc,{#10000},16,10,16,14" -locations_default(#20086,#10000,16,10,16,14) -hasLocation(#20085,#20086) -stmtContainers(#20085,#20069) -#20087=* -exprs(#20087,64,#20085,0,"p") -#20088=@"loc,{#10000},16,14,16,14" -locations_default(#20088,#10000,16,14,16,14) -hasLocation(#20087,#20088) -enclosingStmt(#20087,#20085) -exprContainers(#20087,#20069) -#20089=* -exprs(#20089,78,#20087,0,"p") -hasLocation(#20089,#20088) -enclosingStmt(#20089,#20085) -exprContainers(#20089,#20069) -literals("p","p",#20089) -decl(#20089,#20074) -#20090=* -stmts(#20090,3,#20081,2,"if (p);") -#20091=@"loc,{#10000},17,9,17,15" -locations_default(#20091,#10000,17,9,17,15) -hasLocation(#20090,#20091) -stmtContainers(#20090,#20069) -#20092=* -exprs(#20092,79,#20090,0,"p") -#20093=@"loc,{#10000},17,13,17,13" -locations_default(#20093,#10000,17,13,17,13) -hasLocation(#20092,#20093) -enclosingStmt(#20092,#20090) -exprContainers(#20092,#20069) -literals("p","p",#20092) -bind(#20092,#20074) -#20094=* -stmts(#20094,0,#20090,1,";") -#20095=@"loc,{#10000},17,15,17,15" -locations_default(#20095,#10000,17,15,17,15) -hasLocation(#20094,#20095) -stmtContainers(#20094,#20069) -numlines(#20069,4,4,0) -#20096=* -stmts(#20096,11,#20001,3,"try {\n ... lly {\n}") -#20097=@"loc,{#10000},20,1,24,1" -locations_default(#20097,#10000,20,1,24,1) -hasLocation(#20096,#20097) -stmtContainers(#20096,#20001) -#20098=* -stmts(#20098,1,#20096,0,"{\n}") -#20099=@"loc,{#10000},20,6,21,1" -locations_default(#20099,#10000,20,6,21,1) -hasLocation(#20098,#20099) -stmtContainers(#20098,#20001) -#20100=* -stmts(#20100,20,#20096,1,"catch ( ... .m();\n}") -#20101=@"loc,{#10000},21,3,23,1" -locations_default(#20101,#10000,21,3,23,1) -hasLocation(#20100,#20101) -stmtContainers(#20100,#20001) -#20102=* -scopes(#20102,2) -scopenodes(#20100,#20102) -scopenesting(#20102,#20000) -#20103=@"var;{e};{#20102}" -variables(#20103,"e",#20102) -#20104=* -exprs(#20104,78,#20100,0,"e") -#20105=@"loc,{#10000},21,10,21,10" -locations_default(#20105,#10000,21,10,21,10) -hasLocation(#20104,#20105) -enclosingStmt(#20104,#20100) -exprContainers(#20104,#20001) -literals("e","e",#20104) -decl(#20104,#20103) -#20106=* -stmts(#20106,1,#20100,1,"{\n o.m();\n}") -#20107=@"loc,{#10000},21,13,23,1" -locations_default(#20107,#10000,21,13,23,1) -hasLocation(#20106,#20107) -stmtContainers(#20106,#20001) -#20108=* -stmts(#20108,2,#20106,0,"o.m();") -#20109=@"loc,{#10000},22,5,22,10" -locations_default(#20109,#10000,22,5,22,10) -hasLocation(#20108,#20109) -stmtContainers(#20108,#20001) -#20110=* -exprs(#20110,13,#20108,0,"o.m()") -#20111=@"loc,{#10000},22,5,22,9" -locations_default(#20111,#10000,22,5,22,9) -hasLocation(#20110,#20111) -enclosingStmt(#20110,#20108) -exprContainers(#20110,#20001) -#20112=* -exprs(#20112,14,#20110,-1,"o.m") -#20113=@"loc,{#10000},22,5,22,7" -locations_default(#20113,#10000,22,5,22,7) -hasLocation(#20112,#20113) -enclosingStmt(#20112,#20108) -exprContainers(#20112,#20001) -#20114=* -exprs(#20114,79,#20112,0,"o") -#20115=@"loc,{#10000},22,5,22,5" -locations_default(#20115,#10000,22,5,22,5) -hasLocation(#20114,#20115) -enclosingStmt(#20114,#20108) -exprContainers(#20114,#20001) -literals("o","o",#20114) -#20116=@"var;{o};{#20000}" -variables(#20116,"o",#20000) -bind(#20114,#20116) -#20117=* -exprs(#20117,0,#20112,1,"m") -#20118=@"loc,{#10000},22,7,22,7" -locations_default(#20118,#10000,22,7,22,7) -hasLocation(#20117,#20118) -enclosingStmt(#20117,#20108) -exprContainers(#20117,#20001) -literals("m","m",#20117) -#20119=* -stmts(#20119,1,#20096,-1,"{\n}") -#20120=@"loc,{#10000},23,11,24,1" -locations_default(#20120,#10000,23,11,24,1) -hasLocation(#20119,#20120) -stmtContainers(#20119,#20001) -#20121=* -stmts(#20121,11,#20001,4,"try {\n ... h(_) {}") -#20122=@"loc,{#10000},26,1,28,13" -locations_default(#20122,#10000,26,1,28,13) -hasLocation(#20121,#20122) -stmtContainers(#20121,#20001) -#20123=* -stmts(#20123,1,#20121,0,"{\n f ... ers);\n}") -#20124=@"loc,{#10000},26,5,28,1" -locations_default(#20124,#10000,26,5,28,1) -hasLocation(#20123,#20124) -stmtContainers(#20123,#20001) -#20125=* -stmts(#20125,15,#20123,0,"for (i in headers);") -#20126=@"loc,{#10000},27,5,27,23" -locations_default(#20126,#10000,27,5,27,23) -hasLocation(#20125,#20126) -stmtContainers(#20125,#20001) -#20127=* -exprs(#20127,79,#20125,1,"headers") -#20128=@"loc,{#10000},27,15,27,21" -locations_default(#20128,#10000,27,15,27,21) -hasLocation(#20127,#20128) -enclosingStmt(#20127,#20125) -exprContainers(#20127,#20001) -literals("headers","headers",#20127) -#20129=@"var;{headers};{#20000}" -variables(#20129,"headers",#20000) -bind(#20127,#20129) -#20130=* -exprs(#20130,79,#20125,0,"i") -#20131=@"loc,{#10000},27,10,27,10" -locations_default(#20131,#10000,27,10,27,10) -hasLocation(#20130,#20131) -enclosingStmt(#20130,#20125) -exprContainers(#20130,#20001) -literals("i","i",#20130) -#20132=@"var;{i};{#20000}" -variables(#20132,"i",#20000) -bind(#20130,#20132) -#20133=* -stmts(#20133,0,#20125,2,";") -#20134=@"loc,{#10000},27,23,27,23" -locations_default(#20134,#10000,27,23,27,23) -hasLocation(#20133,#20134) -stmtContainers(#20133,#20001) -#20135=* -stmts(#20135,20,#20121,1,"catch(_) {}") -#20136=@"loc,{#10000},28,3,28,13" -locations_default(#20136,#10000,28,3,28,13) -hasLocation(#20135,#20136) -stmtContainers(#20135,#20001) -#20137=* -scopes(#20137,2) -scopenodes(#20135,#20137) -scopenesting(#20137,#20000) -#20138=@"var;{_};{#20137}" -variables(#20138,"_",#20137) -#20139=* -exprs(#20139,78,#20135,0,"_") -#20140=@"loc,{#10000},28,9,28,9" -locations_default(#20140,#10000,28,9,28,9) -hasLocation(#20139,#20140) -enclosingStmt(#20139,#20135) -exprContainers(#20139,#20001) -literals("_","_",#20139) -decl(#20139,#20138) -#20141=* -stmts(#20141,1,#20135,1,"{}") -#20142=@"loc,{#10000},28,12,28,13" -locations_default(#20142,#10000,28,12,28,13) -hasLocation(#20141,#20142) -stmtContainers(#20141,#20001) -#20143=* -stmts(#20143,11,#20001,5,"try {\n} ... f();\n}") -#20144=@"loc,{#10000},30,1,33,1" -locations_default(#20144,#10000,30,1,33,1) -hasLocation(#20143,#20144) -stmtContainers(#20143,#20001) -#20145=* -stmts(#20145,1,#20143,0,"{\n}") -#20146=@"loc,{#10000},30,5,31,1" -locations_default(#20146,#10000,30,5,31,1) -hasLocation(#20145,#20146) -stmtContainers(#20145,#20001) -#20147=* -stmts(#20147,1,#20143,-1,"{\n f();\n}") -#20148=@"loc,{#10000},31,11,33,1" -locations_default(#20148,#10000,31,11,33,1) -hasLocation(#20147,#20148) -stmtContainers(#20147,#20001) -#20149=* -stmts(#20149,2,#20147,0,"f();") -#20150=@"loc,{#10000},32,5,32,8" -locations_default(#20150,#10000,32,5,32,8) -hasLocation(#20149,#20150) -stmtContainers(#20149,#20001) -#20151=* -exprs(#20151,13,#20149,0,"f()") -#20152=@"loc,{#10000},32,5,32,7" -locations_default(#20152,#10000,32,5,32,7) -hasLocation(#20151,#20152) -enclosingStmt(#20151,#20149) -exprContainers(#20151,#20001) -#20153=* -exprs(#20153,79,#20151,-1,"f") -#20154=@"loc,{#10000},32,5,32,5" -locations_default(#20154,#10000,32,5,32,5) -hasLocation(#20153,#20154) -enclosingStmt(#20153,#20149) -exprContainers(#20153,#20001) -literals("f","f",#20153) -bind(#20153,#20004) -#20155=* -stmts(#20155,3,#20001,6,"if (!(x || y))\n z;") -#20156=@"loc,{#10000},35,1,36,4" -locations_default(#20156,#10000,35,1,36,4) -hasLocation(#20155,#20156) -stmtContainers(#20155,#20001) -#20157=* -exprs(#20157,18,#20155,0,"!(x || y)") -#20158=@"loc,{#10000},35,5,35,13" -locations_default(#20158,#10000,35,5,35,13) -hasLocation(#20157,#20158) -enclosingStmt(#20157,#20155) -exprContainers(#20157,#20001) -#20159=* -exprs(#20159,63,#20157,0,"(x || y)") -#20160=@"loc,{#10000},35,6,35,13" -locations_default(#20160,#10000,35,6,35,13) -hasLocation(#20159,#20160) -enclosingStmt(#20159,#20155) -exprContainers(#20159,#20001) -#20161=* -exprs(#20161,45,#20159,0,"x || y") -#20162=@"loc,{#10000},35,7,35,12" -locations_default(#20162,#10000,35,7,35,12) -hasLocation(#20161,#20162) -enclosingStmt(#20161,#20155) -exprContainers(#20161,#20001) -#20163=* -exprs(#20163,79,#20161,0,"x") -#20164=@"loc,{#10000},35,7,35,7" -locations_default(#20164,#10000,35,7,35,7) -hasLocation(#20163,#20164) -enclosingStmt(#20163,#20155) -exprContainers(#20163,#20001) -literals("x","x",#20163) -#20165=@"var;{x};{#20000}" -variables(#20165,"x",#20000) -bind(#20163,#20165) -#20166=* -exprs(#20166,79,#20161,1,"y") -#20167=@"loc,{#10000},35,12,35,12" -locations_default(#20167,#10000,35,12,35,12) -hasLocation(#20166,#20167) -enclosingStmt(#20166,#20155) -exprContainers(#20166,#20001) -literals("y","y",#20166) -#20168=@"var;{y};{#20000}" -variables(#20168,"y",#20000) -bind(#20166,#20168) -#20169=* -stmts(#20169,2,#20155,1,"z;") -#20170=@"loc,{#10000},36,3,36,4" -locations_default(#20170,#10000,36,3,36,4) -hasLocation(#20169,#20170) -stmtContainers(#20169,#20001) -#20171=* -exprs(#20171,79,#20169,0,"z") -#20172=@"loc,{#10000},36,3,36,3" -locations_default(#20172,#10000,36,3,36,3) -hasLocation(#20171,#20172) -enclosingStmt(#20171,#20169) -exprContainers(#20171,#20001) -literals("z","z",#20171) -#20173=@"var;{z};{#20000}" -variables(#20173,"z",#20000) -bind(#20171,#20173) -#20174=* -lines(#20174,#20001,"function outer()"," +#20002=* +lines(#20002,#20001,"function outer()"," ") -#20175=@"loc,{#10000},1,1,1,16" -locations_default(#20175,#10000,1,1,1,16) -hasLocation(#20174,#20175) -#20176=* -lines(#20176,#20001,"{"," +#20003=@"loc,{#10000},1,1,1,16" +locations_default(#20003,#10000,1,1,1,16) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"{"," ") -#20177=@"loc,{#10000},2,1,2,1" -locations_default(#20177,#10000,2,1,2,1) -hasLocation(#20176,#20177) -#20178=* -lines(#20178,#20001," var i = 0;"," +#20005=@"loc,{#10000},2,1,2,1" +locations_default(#20005,#10000,2,1,2,1) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001," var i = 0;"," ") -#20179=@"loc,{#10000},3,1,3,14" -locations_default(#20179,#10000,3,1,3,14) -hasLocation(#20178,#20179) +#20007=@"loc,{#10000},3,1,3,14" +locations_default(#20007,#10000,3,1,3,14) +hasLocation(#20006,#20007) indentation(#10000,3," ",4) -#20180=* -lines(#20180,#20001," var i = 1;"," +#20008=* +lines(#20008,#20001," var i = 1;"," ") -#20181=@"loc,{#10000},4,1,4,14" -locations_default(#20181,#10000,4,1,4,14) -hasLocation(#20180,#20181) +#20009=@"loc,{#10000},4,1,4,14" +locations_default(#20009,#10000,4,1,4,14) +hasLocation(#20008,#20009) indentation(#10000,4," ",4) -#20182=* -lines(#20182,#20001," for ( i = 0 ; i < 32 ; ++i );"," +#20010=* +lines(#20010,#20001," for ( i = 0 ; i < 32 ; ++i );"," ") -#20183=@"loc,{#10000},5,1,5,33" -locations_default(#20183,#10000,5,1,5,33) -hasLocation(#20182,#20183) +#20011=@"loc,{#10000},5,1,5,33" +locations_default(#20011,#10000,5,1,5,33) +hasLocation(#20010,#20011) indentation(#10000,5," ",4) -#20184=* -lines(#20184,#20001," switch (i) {"," +#20012=* +lines(#20012,#20001," switch (i) {"," ") -#20185=@"loc,{#10000},6,1,6,16" -locations_default(#20185,#10000,6,1,6,16) -hasLocation(#20184,#20185) +#20013=@"loc,{#10000},6,1,6,16" +locations_default(#20013,#10000,6,1,6,16) +hasLocation(#20012,#20013) indentation(#10000,6," ",4) -#20186=* -lines(#20186,#20001," case 32:"," +#20014=* +lines(#20014,#20001," case 32:"," ") -#20187=@"loc,{#10000},7,1,7,12" -locations_default(#20187,#10000,7,1,7,12) -hasLocation(#20186,#20187) +#20015=@"loc,{#10000},7,1,7,12" +locations_default(#20015,#10000,7,1,7,12) +hasLocation(#20014,#20015) indentation(#10000,7," ",4) -#20188=* -lines(#20188,#20001," return true;"," +#20016=* +lines(#20016,#20001," return true;"," ") -#20189=@"loc,{#10000},8,1,8,20" -locations_default(#20189,#10000,8,1,8,20) -hasLocation(#20188,#20189) +#20017=@"loc,{#10000},8,1,8,20" +locations_default(#20017,#10000,8,1,8,20) +hasLocation(#20016,#20017) indentation(#10000,8," ",8) -#20190=* -lines(#20190,#20001," }"," +#20018=* +lines(#20018,#20001," }"," ") -#20191=@"loc,{#10000},9,1,9,5" -locations_default(#20191,#10000,9,1,9,5) -hasLocation(#20190,#20191) +#20019=@"loc,{#10000},9,1,9,5" +locations_default(#20019,#10000,9,1,9,5) +hasLocation(#20018,#20019) indentation(#10000,9," ",4) -#20192=* -lines(#20192,#20001,"}"," +#20020=* +lines(#20020,#20001,"}"," ") -#20193=@"loc,{#10000},10,1,10,1" -locations_default(#20193,#10000,10,1,10,1) -hasLocation(#20192,#20193) -#20194=* -lines(#20194,#20001,""," +#20021=@"loc,{#10000},10,1,10,1" +locations_default(#20021,#10000,10,1,10,1) +hasLocation(#20020,#20021) +#20022=* +lines(#20022,#20001,""," ") -#20195=@"loc,{#10000},11,1,11,0" -locations_default(#20195,#10000,11,1,11,0) -hasLocation(#20194,#20195) -#20196=* -lines(#20196,#20001,"for (;a;)"," +#20023=@"loc,{#10000},11,1,11,0" +locations_default(#20023,#10000,11,1,11,0) +hasLocation(#20022,#20023) +#20024=* +lines(#20024,#20001,"for (;a;)"," ") -#20197=@"loc,{#10000},12,1,12,9" -locations_default(#20197,#10000,12,1,12,9) -hasLocation(#20196,#20197) -#20198=* -lines(#20198,#20001," continue;"," +#20025=@"loc,{#10000},12,1,12,9" +locations_default(#20025,#10000,12,1,12,9) +hasLocation(#20024,#20025) +#20026=* +lines(#20026,#20001," continue;"," ") -#20199=@"loc,{#10000},13,1,13,13" -locations_default(#20199,#10000,13,1,13,13) -hasLocation(#20198,#20199) +#20027=@"loc,{#10000},13,1,13,13" +locations_default(#20027,#10000,13,1,13,13) +hasLocation(#20026,#20027) indentation(#10000,13," ",4) -#20200=* -lines(#20200,#20001,""," +#20028=* +lines(#20028,#20001,""," ") -#20201=@"loc,{#10000},14,1,14,0" -locations_default(#20201,#10000,14,1,14,0) -hasLocation(#20200,#20201) -#20202=* -lines(#20202,#20001,"function f(o) {"," +#20029=@"loc,{#10000},14,1,14,0" +locations_default(#20029,#10000,14,1,14,0) +hasLocation(#20028,#20029) +#20030=* +lines(#20030,#20001,"function f(o) {"," ") -#20203=@"loc,{#10000},15,1,15,15" -locations_default(#20203,#10000,15,1,15,15) -hasLocation(#20202,#20203) -#20204=* -lines(#20204,#20001," for (var p in o)"," +#20031=@"loc,{#10000},15,1,15,15" +locations_default(#20031,#10000,15,1,15,15) +hasLocation(#20030,#20031) +#20032=* +lines(#20032,#20001," for (var p in o)"," ") -#20205=@"loc,{#10000},16,1,16,20" -locations_default(#20205,#10000,16,1,16,20) -hasLocation(#20204,#20205) +#20033=@"loc,{#10000},16,1,16,20" +locations_default(#20033,#10000,16,1,16,20) +hasLocation(#20032,#20033) indentation(#10000,16," ",4) -#20206=* -lines(#20206,#20001," if (p);"," +#20034=* +lines(#20034,#20001," if (p);"," ") -#20207=@"loc,{#10000},17,1,17,15" -locations_default(#20207,#10000,17,1,17,15) -hasLocation(#20206,#20207) +#20035=@"loc,{#10000},17,1,17,15" +locations_default(#20035,#10000,17,1,17,15) +hasLocation(#20034,#20035) indentation(#10000,17," ",8) -#20208=* -lines(#20208,#20001,"}"," +#20036=* +lines(#20036,#20001,"}"," ") -#20209=@"loc,{#10000},18,1,18,1" -locations_default(#20209,#10000,18,1,18,1) -hasLocation(#20208,#20209) -#20210=* -lines(#20210,#20001,""," +#20037=@"loc,{#10000},18,1,18,1" +locations_default(#20037,#10000,18,1,18,1) +hasLocation(#20036,#20037) +#20038=* +lines(#20038,#20001,""," ") -#20211=@"loc,{#10000},19,1,19,0" -locations_default(#20211,#10000,19,1,19,0) -hasLocation(#20210,#20211) -#20212=* -lines(#20212,#20001,"try {"," +#20039=@"loc,{#10000},19,1,19,0" +locations_default(#20039,#10000,19,1,19,0) +hasLocation(#20038,#20039) +#20040=* +lines(#20040,#20001,"try {"," ") -#20213=@"loc,{#10000},20,1,20,6" -locations_default(#20213,#10000,20,1,20,6) -hasLocation(#20212,#20213) -#20214=* -lines(#20214,#20001,"} catch (e) {"," +#20041=@"loc,{#10000},20,1,20,6" +locations_default(#20041,#10000,20,1,20,6) +hasLocation(#20040,#20041) +#20042=* +lines(#20042,#20001,"} catch (e) {"," ") -#20215=@"loc,{#10000},21,1,21,13" -locations_default(#20215,#10000,21,1,21,13) -hasLocation(#20214,#20215) -#20216=* -lines(#20216,#20001," o.m();"," +#20043=@"loc,{#10000},21,1,21,13" +locations_default(#20043,#10000,21,1,21,13) +hasLocation(#20042,#20043) +#20044=* +lines(#20044,#20001," o.m();"," ") -#20217=@"loc,{#10000},22,1,22,10" -locations_default(#20217,#10000,22,1,22,10) -hasLocation(#20216,#20217) +#20045=@"loc,{#10000},22,1,22,10" +locations_default(#20045,#10000,22,1,22,10) +hasLocation(#20044,#20045) indentation(#10000,22," ",4) -#20218=* -lines(#20218,#20001,"} finally {"," +#20046=* +lines(#20046,#20001,"} finally {"," ") -#20219=@"loc,{#10000},23,1,23,11" -locations_default(#20219,#10000,23,1,23,11) -hasLocation(#20218,#20219) -#20220=* -lines(#20220,#20001,"}"," +#20047=@"loc,{#10000},23,1,23,11" +locations_default(#20047,#10000,23,1,23,11) +hasLocation(#20046,#20047) +#20048=* +lines(#20048,#20001,"}"," ") -#20221=@"loc,{#10000},24,1,24,1" -locations_default(#20221,#10000,24,1,24,1) -hasLocation(#20220,#20221) -#20222=* -lines(#20222,#20001,""," +#20049=@"loc,{#10000},24,1,24,1" +locations_default(#20049,#10000,24,1,24,1) +hasLocation(#20048,#20049) +#20050=* +lines(#20050,#20001,""," ") -#20223=@"loc,{#10000},25,1,25,0" -locations_default(#20223,#10000,25,1,25,0) -hasLocation(#20222,#20223) -#20224=* -lines(#20224,#20001,"try {"," +#20051=@"loc,{#10000},25,1,25,0" +locations_default(#20051,#10000,25,1,25,0) +hasLocation(#20050,#20051) +#20052=* +lines(#20052,#20001,"try {"," ") -#20225=@"loc,{#10000},26,1,26,5" -locations_default(#20225,#10000,26,1,26,5) -hasLocation(#20224,#20225) -#20226=* -lines(#20226,#20001," for (i in headers);"," +#20053=@"loc,{#10000},26,1,26,5" +locations_default(#20053,#10000,26,1,26,5) +hasLocation(#20052,#20053) +#20054=* +lines(#20054,#20001," for (i in headers);"," ") -#20227=@"loc,{#10000},27,1,27,23" -locations_default(#20227,#10000,27,1,27,23) -hasLocation(#20226,#20227) +#20055=@"loc,{#10000},27,1,27,23" +locations_default(#20055,#10000,27,1,27,23) +hasLocation(#20054,#20055) indentation(#10000,27," ",4) -#20228=* -lines(#20228,#20001,"} catch(_) {}"," +#20056=* +lines(#20056,#20001,"} catch(_) {}"," ") -#20229=@"loc,{#10000},28,1,28,13" -locations_default(#20229,#10000,28,1,28,13) -hasLocation(#20228,#20229) -#20230=* -lines(#20230,#20001,""," +#20057=@"loc,{#10000},28,1,28,13" +locations_default(#20057,#10000,28,1,28,13) +hasLocation(#20056,#20057) +#20058=* +lines(#20058,#20001,""," ") -#20231=@"loc,{#10000},29,1,29,0" -locations_default(#20231,#10000,29,1,29,0) -hasLocation(#20230,#20231) -#20232=* -lines(#20232,#20001,"try {"," +#20059=@"loc,{#10000},29,1,29,0" +locations_default(#20059,#10000,29,1,29,0) +hasLocation(#20058,#20059) +#20060=* +lines(#20060,#20001,"try {"," ") -#20233=@"loc,{#10000},30,1,30,5" -locations_default(#20233,#10000,30,1,30,5) -hasLocation(#20232,#20233) -#20234=* -lines(#20234,#20001,"} finally {"," +#20061=@"loc,{#10000},30,1,30,5" +locations_default(#20061,#10000,30,1,30,5) +hasLocation(#20060,#20061) +#20062=* +lines(#20062,#20001,"} finally {"," ") -#20235=@"loc,{#10000},31,1,31,11" -locations_default(#20235,#10000,31,1,31,11) -hasLocation(#20234,#20235) -#20236=* -lines(#20236,#20001," f();"," +#20063=@"loc,{#10000},31,1,31,11" +locations_default(#20063,#10000,31,1,31,11) +hasLocation(#20062,#20063) +#20064=* +lines(#20064,#20001," f();"," ") -#20237=@"loc,{#10000},32,1,32,8" -locations_default(#20237,#10000,32,1,32,8) -hasLocation(#20236,#20237) +#20065=@"loc,{#10000},32,1,32,8" +locations_default(#20065,#10000,32,1,32,8) +hasLocation(#20064,#20065) indentation(#10000,32," ",4) -#20238=* -lines(#20238,#20001,"}"," +#20066=* +lines(#20066,#20001,"}"," ") -#20239=@"loc,{#10000},33,1,33,1" -locations_default(#20239,#10000,33,1,33,1) -hasLocation(#20238,#20239) -#20240=* -lines(#20240,#20001,""," +#20067=@"loc,{#10000},33,1,33,1" +locations_default(#20067,#10000,33,1,33,1) +hasLocation(#20066,#20067) +#20068=* +lines(#20068,#20001,""," ") -#20241=@"loc,{#10000},34,1,34,0" -locations_default(#20241,#10000,34,1,34,0) -hasLocation(#20240,#20241) -#20242=* -lines(#20242,#20001,"if (!(x || y))"," +#20069=@"loc,{#10000},34,1,34,0" +locations_default(#20069,#10000,34,1,34,0) +hasLocation(#20068,#20069) +#20070=* +lines(#20070,#20001,"if (!(x || y))"," ") -#20243=@"loc,{#10000},35,1,35,14" -locations_default(#20243,#10000,35,1,35,14) -hasLocation(#20242,#20243) -#20244=* -lines(#20244,#20001," z;"," +#20071=@"loc,{#10000},35,1,35,14" +locations_default(#20071,#10000,35,1,35,14) +hasLocation(#20070,#20071) +#20072=* +lines(#20072,#20001," z;"," ") -#20245=@"loc,{#10000},36,1,36,4" -locations_default(#20245,#10000,36,1,36,4) -hasLocation(#20244,#20245) +#20073=@"loc,{#10000},36,1,36,4" +locations_default(#20073,#10000,36,1,36,4) +hasLocation(#20072,#20073) indentation(#10000,36," ",2) numlines(#20001,36,30,0) +#20074=* +tokeninfo(#20074,7,#20001,0,"function") +#20075=@"loc,{#10000},1,1,1,8" +locations_default(#20075,#10000,1,1,1,8) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,6,#20001,1,"outer") +#20077=@"loc,{#10000},1,10,1,14" +locations_default(#20077,#10000,1,10,1,14) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,8,#20001,2,"(") +#20079=@"loc,{#10000},1,15,1,15" +locations_default(#20079,#10000,1,15,1,15) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,8,#20001,3,")") +#20081=@"loc,{#10000},1,16,1,16" +locations_default(#20081,#10000,1,16,1,16) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,8,#20001,4,"{") +hasLocation(#20082,#20005) +#20083=* +tokeninfo(#20083,7,#20001,5,"var") +#20084=@"loc,{#10000},3,5,3,7" +locations_default(#20084,#10000,3,5,3,7) +hasLocation(#20083,#20084) +#20085=* +tokeninfo(#20085,6,#20001,6,"i") +#20086=@"loc,{#10000},3,9,3,9" +locations_default(#20086,#10000,3,9,3,9) +hasLocation(#20085,#20086) +#20087=* +tokeninfo(#20087,8,#20001,7,"=") +#20088=@"loc,{#10000},3,11,3,11" +locations_default(#20088,#10000,3,11,3,11) +hasLocation(#20087,#20088) +#20089=* +tokeninfo(#20089,3,#20001,8,"0") +#20090=@"loc,{#10000},3,13,3,13" +locations_default(#20090,#10000,3,13,3,13) +hasLocation(#20089,#20090) +#20091=* +tokeninfo(#20091,8,#20001,9,";") +#20092=@"loc,{#10000},3,14,3,14" +locations_default(#20092,#10000,3,14,3,14) +hasLocation(#20091,#20092) +#20093=* +tokeninfo(#20093,7,#20001,10,"var") +#20094=@"loc,{#10000},4,5,4,7" +locations_default(#20094,#10000,4,5,4,7) +hasLocation(#20093,#20094) +#20095=* +tokeninfo(#20095,6,#20001,11,"i") +#20096=@"loc,{#10000},4,9,4,9" +locations_default(#20096,#10000,4,9,4,9) +hasLocation(#20095,#20096) +#20097=* +tokeninfo(#20097,8,#20001,12,"=") +#20098=@"loc,{#10000},4,11,4,11" +locations_default(#20098,#10000,4,11,4,11) +hasLocation(#20097,#20098) +#20099=* +tokeninfo(#20099,3,#20001,13,"1") +#20100=@"loc,{#10000},4,13,4,13" +locations_default(#20100,#10000,4,13,4,13) +hasLocation(#20099,#20100) +#20101=* +tokeninfo(#20101,8,#20001,14,";") +#20102=@"loc,{#10000},4,14,4,14" +locations_default(#20102,#10000,4,14,4,14) +hasLocation(#20101,#20102) +#20103=* +tokeninfo(#20103,7,#20001,15,"for") +#20104=@"loc,{#10000},5,5,5,7" +locations_default(#20104,#10000,5,5,5,7) +hasLocation(#20103,#20104) +#20105=* +tokeninfo(#20105,8,#20001,16,"(") +#20106=@"loc,{#10000},5,9,5,9" +locations_default(#20106,#10000,5,9,5,9) +hasLocation(#20105,#20106) +#20107=* +tokeninfo(#20107,6,#20001,17,"i") +#20108=@"loc,{#10000},5,11,5,11" +locations_default(#20108,#10000,5,11,5,11) +hasLocation(#20107,#20108) +#20109=* +tokeninfo(#20109,8,#20001,18,"=") +#20110=@"loc,{#10000},5,13,5,13" +locations_default(#20110,#10000,5,13,5,13) +hasLocation(#20109,#20110) +#20111=* +tokeninfo(#20111,3,#20001,19,"0") +#20112=@"loc,{#10000},5,15,5,15" +locations_default(#20112,#10000,5,15,5,15) +hasLocation(#20111,#20112) +#20113=* +tokeninfo(#20113,8,#20001,20,";") +#20114=@"loc,{#10000},5,17,5,17" +locations_default(#20114,#10000,5,17,5,17) +hasLocation(#20113,#20114) +#20115=* +tokeninfo(#20115,6,#20001,21,"i") +#20116=@"loc,{#10000},5,19,5,19" +locations_default(#20116,#10000,5,19,5,19) +hasLocation(#20115,#20116) +#20117=* +tokeninfo(#20117,8,#20001,22,"<") +#20118=@"loc,{#10000},5,21,5,21" +locations_default(#20118,#10000,5,21,5,21) +hasLocation(#20117,#20118) +#20119=* +tokeninfo(#20119,3,#20001,23,"32") +#20120=@"loc,{#10000},5,23,5,24" +locations_default(#20120,#10000,5,23,5,24) +hasLocation(#20119,#20120) +#20121=* +tokeninfo(#20121,8,#20001,24,";") +#20122=@"loc,{#10000},5,26,5,26" +locations_default(#20122,#10000,5,26,5,26) +hasLocation(#20121,#20122) +#20123=* +tokeninfo(#20123,8,#20001,25,"++") +#20124=@"loc,{#10000},5,28,5,29" +locations_default(#20124,#10000,5,28,5,29) +hasLocation(#20123,#20124) +#20125=* +tokeninfo(#20125,6,#20001,26,"i") +#20126=@"loc,{#10000},5,30,5,30" +locations_default(#20126,#10000,5,30,5,30) +hasLocation(#20125,#20126) +#20127=* +tokeninfo(#20127,8,#20001,27,")") +#20128=@"loc,{#10000},5,32,5,32" +locations_default(#20128,#10000,5,32,5,32) +hasLocation(#20127,#20128) +#20129=* +tokeninfo(#20129,8,#20001,28,";") +#20130=@"loc,{#10000},5,33,5,33" +locations_default(#20130,#10000,5,33,5,33) +hasLocation(#20129,#20130) +#20131=* +tokeninfo(#20131,7,#20001,29,"switch") +#20132=@"loc,{#10000},6,5,6,10" +locations_default(#20132,#10000,6,5,6,10) +hasLocation(#20131,#20132) +#20133=* +tokeninfo(#20133,8,#20001,30,"(") +#20134=@"loc,{#10000},6,12,6,12" +locations_default(#20134,#10000,6,12,6,12) +hasLocation(#20133,#20134) +#20135=* +tokeninfo(#20135,6,#20001,31,"i") +#20136=@"loc,{#10000},6,13,6,13" +locations_default(#20136,#10000,6,13,6,13) +hasLocation(#20135,#20136) +#20137=* +tokeninfo(#20137,8,#20001,32,")") +#20138=@"loc,{#10000},6,14,6,14" +locations_default(#20138,#10000,6,14,6,14) +hasLocation(#20137,#20138) +#20139=* +tokeninfo(#20139,8,#20001,33,"{") +#20140=@"loc,{#10000},6,16,6,16" +locations_default(#20140,#10000,6,16,6,16) +hasLocation(#20139,#20140) +#20141=* +tokeninfo(#20141,7,#20001,34,"case") +#20142=@"loc,{#10000},7,5,7,8" +locations_default(#20142,#10000,7,5,7,8) +hasLocation(#20141,#20142) +#20143=* +tokeninfo(#20143,3,#20001,35,"32") +#20144=@"loc,{#10000},7,10,7,11" +locations_default(#20144,#10000,7,10,7,11) +hasLocation(#20143,#20144) +#20145=* +tokeninfo(#20145,8,#20001,36,":") +#20146=@"loc,{#10000},7,12,7,12" +locations_default(#20146,#10000,7,12,7,12) +hasLocation(#20145,#20146) +#20147=* +tokeninfo(#20147,7,#20001,37,"return") +#20148=@"loc,{#10000},8,9,8,14" +locations_default(#20148,#10000,8,9,8,14) +hasLocation(#20147,#20148) +#20149=* +tokeninfo(#20149,2,#20001,38,"true") +#20150=@"loc,{#10000},8,16,8,19" +locations_default(#20150,#10000,8,16,8,19) +hasLocation(#20149,#20150) +#20151=* +tokeninfo(#20151,8,#20001,39,";") +#20152=@"loc,{#10000},8,20,8,20" +locations_default(#20152,#10000,8,20,8,20) +hasLocation(#20151,#20152) +#20153=* +tokeninfo(#20153,8,#20001,40,"}") +#20154=@"loc,{#10000},9,5,9,5" +locations_default(#20154,#10000,9,5,9,5) +hasLocation(#20153,#20154) +#20155=* +tokeninfo(#20155,8,#20001,41,"}") +hasLocation(#20155,#20021) +#20156=* +tokeninfo(#20156,7,#20001,42,"for") +#20157=@"loc,{#10000},12,1,12,3" +locations_default(#20157,#10000,12,1,12,3) +hasLocation(#20156,#20157) +#20158=* +tokeninfo(#20158,8,#20001,43,"(") +#20159=@"loc,{#10000},12,5,12,5" +locations_default(#20159,#10000,12,5,12,5) +hasLocation(#20158,#20159) +#20160=* +tokeninfo(#20160,8,#20001,44,";") +#20161=@"loc,{#10000},12,6,12,6" +locations_default(#20161,#10000,12,6,12,6) +hasLocation(#20160,#20161) +#20162=* +tokeninfo(#20162,6,#20001,45,"a") +#20163=@"loc,{#10000},12,7,12,7" +locations_default(#20163,#10000,12,7,12,7) +hasLocation(#20162,#20163) +#20164=* +tokeninfo(#20164,8,#20001,46,";") +#20165=@"loc,{#10000},12,8,12,8" +locations_default(#20165,#10000,12,8,12,8) +hasLocation(#20164,#20165) +#20166=* +tokeninfo(#20166,8,#20001,47,")") +#20167=@"loc,{#10000},12,9,12,9" +locations_default(#20167,#10000,12,9,12,9) +hasLocation(#20166,#20167) +#20168=* +tokeninfo(#20168,7,#20001,48,"continue") +#20169=@"loc,{#10000},13,5,13,12" +locations_default(#20169,#10000,13,5,13,12) +hasLocation(#20168,#20169) +#20170=* +tokeninfo(#20170,8,#20001,49,";") +#20171=@"loc,{#10000},13,13,13,13" +locations_default(#20171,#10000,13,13,13,13) +hasLocation(#20170,#20171) +#20172=* +tokeninfo(#20172,7,#20001,50,"function") +#20173=@"loc,{#10000},15,1,15,8" +locations_default(#20173,#10000,15,1,15,8) +hasLocation(#20172,#20173) +#20174=* +tokeninfo(#20174,6,#20001,51,"f") +#20175=@"loc,{#10000},15,10,15,10" +locations_default(#20175,#10000,15,10,15,10) +hasLocation(#20174,#20175) +#20176=* +tokeninfo(#20176,8,#20001,52,"(") +#20177=@"loc,{#10000},15,11,15,11" +locations_default(#20177,#10000,15,11,15,11) +hasLocation(#20176,#20177) +#20178=* +tokeninfo(#20178,6,#20001,53,"o") +#20179=@"loc,{#10000},15,12,15,12" +locations_default(#20179,#10000,15,12,15,12) +hasLocation(#20178,#20179) +#20180=* +tokeninfo(#20180,8,#20001,54,")") +#20181=@"loc,{#10000},15,13,15,13" +locations_default(#20181,#10000,15,13,15,13) +hasLocation(#20180,#20181) +#20182=* +tokeninfo(#20182,8,#20001,55,"{") +#20183=@"loc,{#10000},15,15,15,15" +locations_default(#20183,#10000,15,15,15,15) +hasLocation(#20182,#20183) +#20184=* +tokeninfo(#20184,7,#20001,56,"for") +#20185=@"loc,{#10000},16,5,16,7" +locations_default(#20185,#10000,16,5,16,7) +hasLocation(#20184,#20185) +#20186=* +tokeninfo(#20186,8,#20001,57,"(") +#20187=@"loc,{#10000},16,9,16,9" +locations_default(#20187,#10000,16,9,16,9) +hasLocation(#20186,#20187) +#20188=* +tokeninfo(#20188,7,#20001,58,"var") +#20189=@"loc,{#10000},16,10,16,12" +locations_default(#20189,#10000,16,10,16,12) +hasLocation(#20188,#20189) +#20190=* +tokeninfo(#20190,6,#20001,59,"p") +#20191=@"loc,{#10000},16,14,16,14" +locations_default(#20191,#10000,16,14,16,14) +hasLocation(#20190,#20191) +#20192=* +tokeninfo(#20192,7,#20001,60,"in") +#20193=@"loc,{#10000},16,16,16,17" +locations_default(#20193,#10000,16,16,16,17) +hasLocation(#20192,#20193) +#20194=* +tokeninfo(#20194,6,#20001,61,"o") +#20195=@"loc,{#10000},16,19,16,19" +locations_default(#20195,#10000,16,19,16,19) +hasLocation(#20194,#20195) +#20196=* +tokeninfo(#20196,8,#20001,62,")") +#20197=@"loc,{#10000},16,20,16,20" +locations_default(#20197,#10000,16,20,16,20) +hasLocation(#20196,#20197) +#20198=* +tokeninfo(#20198,7,#20001,63,"if") +#20199=@"loc,{#10000},17,9,17,10" +locations_default(#20199,#10000,17,9,17,10) +hasLocation(#20198,#20199) +#20200=* +tokeninfo(#20200,8,#20001,64,"(") +#20201=@"loc,{#10000},17,12,17,12" +locations_default(#20201,#10000,17,12,17,12) +hasLocation(#20200,#20201) +#20202=* +tokeninfo(#20202,6,#20001,65,"p") +#20203=@"loc,{#10000},17,13,17,13" +locations_default(#20203,#10000,17,13,17,13) +hasLocation(#20202,#20203) +#20204=* +tokeninfo(#20204,8,#20001,66,")") +#20205=@"loc,{#10000},17,14,17,14" +locations_default(#20205,#10000,17,14,17,14) +hasLocation(#20204,#20205) +#20206=* +tokeninfo(#20206,8,#20001,67,";") +#20207=@"loc,{#10000},17,15,17,15" +locations_default(#20207,#10000,17,15,17,15) +hasLocation(#20206,#20207) +#20208=* +tokeninfo(#20208,8,#20001,68,"}") +hasLocation(#20208,#20037) +#20209=* +tokeninfo(#20209,7,#20001,69,"try") +#20210=@"loc,{#10000},20,1,20,3" +locations_default(#20210,#10000,20,1,20,3) +hasLocation(#20209,#20210) +#20211=* +tokeninfo(#20211,8,#20001,70,"{") +#20212=@"loc,{#10000},20,6,20,6" +locations_default(#20212,#10000,20,6,20,6) +hasLocation(#20211,#20212) +#20213=* +tokeninfo(#20213,8,#20001,71,"}") +#20214=@"loc,{#10000},21,1,21,1" +locations_default(#20214,#10000,21,1,21,1) +hasLocation(#20213,#20214) +#20215=* +tokeninfo(#20215,7,#20001,72,"catch") +#20216=@"loc,{#10000},21,3,21,7" +locations_default(#20216,#10000,21,3,21,7) +hasLocation(#20215,#20216) +#20217=* +tokeninfo(#20217,8,#20001,73,"(") +#20218=@"loc,{#10000},21,9,21,9" +locations_default(#20218,#10000,21,9,21,9) +hasLocation(#20217,#20218) +#20219=* +tokeninfo(#20219,6,#20001,74,"e") +#20220=@"loc,{#10000},21,10,21,10" +locations_default(#20220,#10000,21,10,21,10) +hasLocation(#20219,#20220) +#20221=* +tokeninfo(#20221,8,#20001,75,")") +#20222=@"loc,{#10000},21,11,21,11" +locations_default(#20222,#10000,21,11,21,11) +hasLocation(#20221,#20222) +#20223=* +tokeninfo(#20223,8,#20001,76,"{") +#20224=@"loc,{#10000},21,13,21,13" +locations_default(#20224,#10000,21,13,21,13) +hasLocation(#20223,#20224) +#20225=* +tokeninfo(#20225,6,#20001,77,"o") +#20226=@"loc,{#10000},22,5,22,5" +locations_default(#20226,#10000,22,5,22,5) +hasLocation(#20225,#20226) +#20227=* +tokeninfo(#20227,8,#20001,78,".") +#20228=@"loc,{#10000},22,6,22,6" +locations_default(#20228,#10000,22,6,22,6) +hasLocation(#20227,#20228) +#20229=* +tokeninfo(#20229,6,#20001,79,"m") +#20230=@"loc,{#10000},22,7,22,7" +locations_default(#20230,#10000,22,7,22,7) +hasLocation(#20229,#20230) +#20231=* +tokeninfo(#20231,8,#20001,80,"(") +#20232=@"loc,{#10000},22,8,22,8" +locations_default(#20232,#10000,22,8,22,8) +hasLocation(#20231,#20232) +#20233=* +tokeninfo(#20233,8,#20001,81,")") +#20234=@"loc,{#10000},22,9,22,9" +locations_default(#20234,#10000,22,9,22,9) +hasLocation(#20233,#20234) +#20235=* +tokeninfo(#20235,8,#20001,82,";") +#20236=@"loc,{#10000},22,10,22,10" +locations_default(#20236,#10000,22,10,22,10) +hasLocation(#20235,#20236) +#20237=* +tokeninfo(#20237,8,#20001,83,"}") +#20238=@"loc,{#10000},23,1,23,1" +locations_default(#20238,#10000,23,1,23,1) +hasLocation(#20237,#20238) +#20239=* +tokeninfo(#20239,7,#20001,84,"finally") +#20240=@"loc,{#10000},23,3,23,9" +locations_default(#20240,#10000,23,3,23,9) +hasLocation(#20239,#20240) +#20241=* +tokeninfo(#20241,8,#20001,85,"{") +#20242=@"loc,{#10000},23,11,23,11" +locations_default(#20242,#10000,23,11,23,11) +hasLocation(#20241,#20242) +#20243=* +tokeninfo(#20243,8,#20001,86,"}") +hasLocation(#20243,#20049) +#20244=* +tokeninfo(#20244,7,#20001,87,"try") +#20245=@"loc,{#10000},26,1,26,3" +locations_default(#20245,#10000,26,1,26,3) +hasLocation(#20244,#20245) #20246=* -tokeninfo(#20246,7,#20001,0,"function") -#20247=@"loc,{#10000},1,1,1,8" -locations_default(#20247,#10000,1,1,1,8) +tokeninfo(#20246,8,#20001,88,"{") +#20247=@"loc,{#10000},26,5,26,5" +locations_default(#20247,#10000,26,5,26,5) hasLocation(#20246,#20247) #20248=* -tokeninfo(#20248,6,#20001,1,"outer") -hasLocation(#20248,#20008) -#20249=* -tokeninfo(#20249,8,#20001,2,"(") -#20250=@"loc,{#10000},1,15,1,15" -locations_default(#20250,#10000,1,15,1,15) -hasLocation(#20249,#20250) -#20251=* -tokeninfo(#20251,8,#20001,3,")") -#20252=@"loc,{#10000},1,16,1,16" -locations_default(#20252,#10000,1,16,1,16) -hasLocation(#20251,#20252) -#20253=* -tokeninfo(#20253,8,#20001,4,"{") -hasLocation(#20253,#20177) +tokeninfo(#20248,7,#20001,89,"for") +#20249=@"loc,{#10000},27,5,27,7" +locations_default(#20249,#10000,27,5,27,7) +hasLocation(#20248,#20249) +#20250=* +tokeninfo(#20250,8,#20001,90,"(") +#20251=@"loc,{#10000},27,9,27,9" +locations_default(#20251,#10000,27,9,27,9) +hasLocation(#20250,#20251) +#20252=* +tokeninfo(#20252,6,#20001,91,"i") +#20253=@"loc,{#10000},27,10,27,10" +locations_default(#20253,#10000,27,10,27,10) +hasLocation(#20252,#20253) #20254=* -tokeninfo(#20254,7,#20001,5,"var") -#20255=@"loc,{#10000},3,5,3,7" -locations_default(#20255,#10000,3,5,3,7) +tokeninfo(#20254,7,#20001,92,"in") +#20255=@"loc,{#10000},27,12,27,13" +locations_default(#20255,#10000,27,12,27,13) hasLocation(#20254,#20255) #20256=* -tokeninfo(#20256,6,#20001,6,"i") -hasLocation(#20256,#20019) -#20257=* -tokeninfo(#20257,8,#20001,7,"=") -#20258=@"loc,{#10000},3,11,3,11" -locations_default(#20258,#10000,3,11,3,11) -hasLocation(#20257,#20258) -#20259=* -tokeninfo(#20259,3,#20001,8,"0") -hasLocation(#20259,#20021) +tokeninfo(#20256,6,#20001,93,"headers") +#20257=@"loc,{#10000},27,15,27,21" +locations_default(#20257,#10000,27,15,27,21) +hasLocation(#20256,#20257) +#20258=* +tokeninfo(#20258,8,#20001,94,")") +#20259=@"loc,{#10000},27,22,27,22" +locations_default(#20259,#10000,27,22,27,22) +hasLocation(#20258,#20259) #20260=* -tokeninfo(#20260,8,#20001,9,";") -#20261=@"loc,{#10000},3,14,3,14" -locations_default(#20261,#10000,3,14,3,14) +tokeninfo(#20260,8,#20001,95,";") +#20261=@"loc,{#10000},27,23,27,23" +locations_default(#20261,#10000,27,23,27,23) hasLocation(#20260,#20261) #20262=* -tokeninfo(#20262,7,#20001,10,"var") -#20263=@"loc,{#10000},4,5,4,7" -locations_default(#20263,#10000,4,5,4,7) +tokeninfo(#20262,8,#20001,96,"}") +#20263=@"loc,{#10000},28,1,28,1" +locations_default(#20263,#10000,28,1,28,1) hasLocation(#20262,#20263) #20264=* -tokeninfo(#20264,6,#20001,11,"i") -hasLocation(#20264,#20027) -#20265=* -tokeninfo(#20265,8,#20001,12,"=") -#20266=@"loc,{#10000},4,11,4,11" -locations_default(#20266,#10000,4,11,4,11) -hasLocation(#20265,#20266) -#20267=* -tokeninfo(#20267,3,#20001,13,"1") -hasLocation(#20267,#20029) +tokeninfo(#20264,7,#20001,97,"catch") +#20265=@"loc,{#10000},28,3,28,7" +locations_default(#20265,#10000,28,3,28,7) +hasLocation(#20264,#20265) +#20266=* +tokeninfo(#20266,8,#20001,98,"(") +#20267=@"loc,{#10000},28,8,28,8" +locations_default(#20267,#10000,28,8,28,8) +hasLocation(#20266,#20267) #20268=* -tokeninfo(#20268,8,#20001,14,";") -#20269=@"loc,{#10000},4,14,4,14" -locations_default(#20269,#10000,4,14,4,14) +tokeninfo(#20268,6,#20001,99,"_") +#20269=@"loc,{#10000},28,9,28,9" +locations_default(#20269,#10000,28,9,28,9) hasLocation(#20268,#20269) #20270=* -tokeninfo(#20270,7,#20001,15,"for") -#20271=@"loc,{#10000},5,5,5,7" -locations_default(#20271,#10000,5,5,5,7) +tokeninfo(#20270,8,#20001,100,")") +#20271=@"loc,{#10000},28,10,28,10" +locations_default(#20271,#10000,28,10,28,10) hasLocation(#20270,#20271) #20272=* -tokeninfo(#20272,8,#20001,16,"(") -#20273=@"loc,{#10000},5,9,5,9" -locations_default(#20273,#10000,5,9,5,9) +tokeninfo(#20272,8,#20001,101,"{") +#20273=@"loc,{#10000},28,12,28,12" +locations_default(#20273,#10000,28,12,28,12) hasLocation(#20272,#20273) #20274=* -tokeninfo(#20274,6,#20001,17,"i") -hasLocation(#20274,#20045) -#20275=* -tokeninfo(#20275,8,#20001,18,"=") -#20276=@"loc,{#10000},5,13,5,13" -locations_default(#20276,#10000,5,13,5,13) -hasLocation(#20275,#20276) -#20277=* -tokeninfo(#20277,3,#20001,19,"0") -hasLocation(#20277,#20047) +tokeninfo(#20274,8,#20001,102,"}") +#20275=@"loc,{#10000},28,13,28,13" +locations_default(#20275,#10000,28,13,28,13) +hasLocation(#20274,#20275) +#20276=* +tokeninfo(#20276,7,#20001,103,"try") +#20277=@"loc,{#10000},30,1,30,3" +locations_default(#20277,#10000,30,1,30,3) +hasLocation(#20276,#20277) #20278=* -tokeninfo(#20278,8,#20001,20,";") -#20279=@"loc,{#10000},5,17,5,17" -locations_default(#20279,#10000,5,17,5,17) +tokeninfo(#20278,8,#20001,104,"{") +#20279=@"loc,{#10000},30,5,30,5" +locations_default(#20279,#10000,30,5,30,5) hasLocation(#20278,#20279) #20280=* -tokeninfo(#20280,6,#20001,21,"i") -hasLocation(#20280,#20035) -#20281=* -tokeninfo(#20281,8,#20001,22,"<") -#20282=@"loc,{#10000},5,21,5,21" -locations_default(#20282,#10000,5,21,5,21) -hasLocation(#20281,#20282) -#20283=* -tokeninfo(#20283,3,#20001,23,"32") -hasLocation(#20283,#20037) +tokeninfo(#20280,8,#20001,105,"}") +#20281=@"loc,{#10000},31,1,31,1" +locations_default(#20281,#10000,31,1,31,1) +hasLocation(#20280,#20281) +#20282=* +tokeninfo(#20282,7,#20001,106,"finally") +#20283=@"loc,{#10000},31,3,31,9" +locations_default(#20283,#10000,31,3,31,9) +hasLocation(#20282,#20283) #20284=* -tokeninfo(#20284,8,#20001,24,";") -#20285=@"loc,{#10000},5,26,5,26" -locations_default(#20285,#10000,5,26,5,26) +tokeninfo(#20284,8,#20001,107,"{") +#20285=@"loc,{#10000},31,11,31,11" +locations_default(#20285,#10000,31,11,31,11) hasLocation(#20284,#20285) #20286=* -tokeninfo(#20286,8,#20001,25,"++") -#20287=@"loc,{#10000},5,28,5,29" -locations_default(#20287,#10000,5,28,5,29) +tokeninfo(#20286,6,#20001,108,"f") +#20287=@"loc,{#10000},32,5,32,5" +locations_default(#20287,#10000,32,5,32,5) hasLocation(#20286,#20287) #20288=* -tokeninfo(#20288,6,#20001,26,"i") -hasLocation(#20288,#20041) -#20289=* -tokeninfo(#20289,8,#20001,27,")") -#20290=@"loc,{#10000},5,32,5,32" -locations_default(#20290,#10000,5,32,5,32) -hasLocation(#20289,#20290) -#20291=* -tokeninfo(#20291,8,#20001,28,";") -hasLocation(#20291,#20049) +tokeninfo(#20288,8,#20001,109,"(") +#20289=@"loc,{#10000},32,6,32,6" +locations_default(#20289,#10000,32,6,32,6) +hasLocation(#20288,#20289) +#20290=* +tokeninfo(#20290,8,#20001,110,")") +#20291=@"loc,{#10000},32,7,32,7" +locations_default(#20291,#10000,32,7,32,7) +hasLocation(#20290,#20291) #20292=* -tokeninfo(#20292,7,#20001,29,"switch") -#20293=@"loc,{#10000},6,5,6,10" -locations_default(#20293,#10000,6,5,6,10) +tokeninfo(#20292,8,#20001,111,";") +#20293=@"loc,{#10000},32,8,32,8" +locations_default(#20293,#10000,32,8,32,8) hasLocation(#20292,#20293) #20294=* -tokeninfo(#20294,8,#20001,30,"(") -#20295=@"loc,{#10000},6,12,6,12" -locations_default(#20295,#10000,6,12,6,12) -hasLocation(#20294,#20295) -#20296=* -tokeninfo(#20296,6,#20001,31,"i") -hasLocation(#20296,#20053) +tokeninfo(#20294,8,#20001,112,"}") +hasLocation(#20294,#20067) +#20295=* +tokeninfo(#20295,7,#20001,113,"if") +#20296=@"loc,{#10000},35,1,35,2" +locations_default(#20296,#10000,35,1,35,2) +hasLocation(#20295,#20296) #20297=* -tokeninfo(#20297,8,#20001,32,")") -#20298=@"loc,{#10000},6,14,6,14" -locations_default(#20298,#10000,6,14,6,14) +tokeninfo(#20297,8,#20001,114,"(") +#20298=@"loc,{#10000},35,4,35,4" +locations_default(#20298,#10000,35,4,35,4) hasLocation(#20297,#20298) #20299=* -tokeninfo(#20299,8,#20001,33,"{") -#20300=@"loc,{#10000},6,16,6,16" -locations_default(#20300,#10000,6,16,6,16) +tokeninfo(#20299,8,#20001,115,"!") +#20300=@"loc,{#10000},35,5,35,5" +locations_default(#20300,#10000,35,5,35,5) hasLocation(#20299,#20300) #20301=* -tokeninfo(#20301,7,#20001,34,"case") -#20302=@"loc,{#10000},7,5,7,8" -locations_default(#20302,#10000,7,5,7,8) +tokeninfo(#20301,8,#20001,116,"(") +#20302=@"loc,{#10000},35,6,35,6" +locations_default(#20302,#10000,35,6,35,6) hasLocation(#20301,#20302) #20303=* -tokeninfo(#20303,3,#20001,35,"32") -hasLocation(#20303,#20057) -#20304=* -tokeninfo(#20304,8,#20001,36,":") -#20305=@"loc,{#10000},7,12,7,12" -locations_default(#20305,#10000,7,12,7,12) -hasLocation(#20304,#20305) -#20306=* -tokeninfo(#20306,7,#20001,37,"return") -#20307=@"loc,{#10000},8,9,8,14" -locations_default(#20307,#10000,8,9,8,14) -hasLocation(#20306,#20307) -#20308=* -tokeninfo(#20308,2,#20001,38,"true") -hasLocation(#20308,#20061) +tokeninfo(#20303,6,#20001,117,"x") +#20304=@"loc,{#10000},35,7,35,7" +locations_default(#20304,#10000,35,7,35,7) +hasLocation(#20303,#20304) +#20305=* +tokeninfo(#20305,8,#20001,118,"||") +#20306=@"loc,{#10000},35,9,35,10" +locations_default(#20306,#10000,35,9,35,10) +hasLocation(#20305,#20306) +#20307=* +tokeninfo(#20307,6,#20001,119,"y") +#20308=@"loc,{#10000},35,12,35,12" +locations_default(#20308,#10000,35,12,35,12) +hasLocation(#20307,#20308) #20309=* -tokeninfo(#20309,8,#20001,39,";") -#20310=@"loc,{#10000},8,20,8,20" -locations_default(#20310,#10000,8,20,8,20) +tokeninfo(#20309,8,#20001,120,")") +#20310=@"loc,{#10000},35,13,35,13" +locations_default(#20310,#10000,35,13,35,13) hasLocation(#20309,#20310) #20311=* -tokeninfo(#20311,8,#20001,40,"}") -#20312=@"loc,{#10000},9,5,9,5" -locations_default(#20312,#10000,9,5,9,5) +tokeninfo(#20311,8,#20001,121,")") +#20312=@"loc,{#10000},35,14,35,14" +locations_default(#20312,#10000,35,14,35,14) hasLocation(#20311,#20312) #20313=* -tokeninfo(#20313,8,#20001,41,"}") -hasLocation(#20313,#20193) -#20314=* -tokeninfo(#20314,7,#20001,42,"for") -#20315=@"loc,{#10000},12,1,12,3" -locations_default(#20315,#10000,12,1,12,3) -hasLocation(#20314,#20315) -#20316=* -tokeninfo(#20316,8,#20001,43,"(") -#20317=@"loc,{#10000},12,5,12,5" -locations_default(#20317,#10000,12,5,12,5) -hasLocation(#20316,#20317) -#20318=* -tokeninfo(#20318,8,#20001,44,";") -#20319=@"loc,{#10000},12,6,12,6" -locations_default(#20319,#10000,12,6,12,6) -hasLocation(#20318,#20319) -#20320=* -tokeninfo(#20320,6,#20001,45,"a") -hasLocation(#20320,#20065) -#20321=* -tokeninfo(#20321,8,#20001,46,";") -#20322=@"loc,{#10000},12,8,12,8" -locations_default(#20322,#10000,12,8,12,8) -hasLocation(#20321,#20322) -#20323=* -tokeninfo(#20323,8,#20001,47,")") -#20324=@"loc,{#10000},12,9,12,9" -locations_default(#20324,#10000,12,9,12,9) -hasLocation(#20323,#20324) +tokeninfo(#20313,6,#20001,122,"z") +#20314=@"loc,{#10000},36,3,36,3" +locations_default(#20314,#10000,36,3,36,3) +hasLocation(#20313,#20314) +#20315=* +tokeninfo(#20315,8,#20001,123,";") +#20316=@"loc,{#10000},36,4,36,4" +locations_default(#20316,#10000,36,4,36,4) +hasLocation(#20315,#20316) +#20317=* +tokeninfo(#20317,0,#20001,124,"") +#20318=@"loc,{#10000},37,1,37,0" +locations_default(#20318,#10000,37,1,37,0) +hasLocation(#20317,#20318) +toplevels(#20001,0) +#20319=@"loc,{#10000},1,1,37,0" +locations_default(#20319,#10000,1,1,37,0) +hasLocation(#20001,#20319) +#20320=@"var;{outer};{#20000}" +variables(#20320,"outer",#20000) +#20321=@"var;{f};{#20000}" +variables(#20321,"f",#20000) +#20322=* +stmts(#20322,17,#20001,0,"functio ... }\n}") +#20323=@"loc,{#10000},1,1,10,1" +locations_default(#20323,#10000,1,1,10,1) +hasLocation(#20322,#20323) +stmtContainers(#20322,#20001) +#20324=* +exprs(#20324,78,#20322,-1,"outer") +hasLocation(#20324,#20077) +exprContainers(#20324,#20322) +literals("outer","outer",#20324) +decl(#20324,#20320) #20325=* -tokeninfo(#20325,7,#20001,48,"continue") -#20326=@"loc,{#10000},13,5,13,12" -locations_default(#20326,#10000,13,5,13,12) -hasLocation(#20325,#20326) -#20327=* -tokeninfo(#20327,8,#20001,49,";") -#20328=@"loc,{#10000},13,13,13,13" -locations_default(#20328,#10000,13,13,13,13) -hasLocation(#20327,#20328) -#20329=* -tokeninfo(#20329,7,#20001,50,"function") -#20330=@"loc,{#10000},15,1,15,8" -locations_default(#20330,#10000,15,1,15,8) -hasLocation(#20329,#20330) -#20331=* -tokeninfo(#20331,6,#20001,51,"f") -hasLocation(#20331,#20072) +scopes(#20325,1) +scopenodes(#20322,#20325) +scopenesting(#20325,#20000) +#20326=@"var;{i};{#20325}" +variables(#20326,"i",#20325) +#20327=@"var;{arguments};{#20325}" +variables(#20327,"arguments",#20325) +isArgumentsObject(#20327) +#20328=* +stmts(#20328,1,#20322,-2,"{\n v ... }\n}") +#20329=@"loc,{#10000},2,1,10,1" +locations_default(#20329,#10000,2,1,10,1) +hasLocation(#20328,#20329) +stmtContainers(#20328,#20322) +#20330=* +stmts(#20330,18,#20328,0,"var i = 0;") +#20331=@"loc,{#10000},3,5,3,14" +locations_default(#20331,#10000,3,5,3,14) +hasLocation(#20330,#20331) +stmtContainers(#20330,#20322) #20332=* -tokeninfo(#20332,8,#20001,52,"(") -#20333=@"loc,{#10000},15,11,15,11" -locations_default(#20333,#10000,15,11,15,11) +exprs(#20332,64,#20330,0,"i = 0") +#20333=@"loc,{#10000},3,9,3,13" +locations_default(#20333,#10000,3,9,3,13) hasLocation(#20332,#20333) +enclosingStmt(#20332,#20330) +exprContainers(#20332,#20322) #20334=* -tokeninfo(#20334,6,#20001,53,"o") -hasLocation(#20334,#20077) +exprs(#20334,78,#20332,0,"i") +hasLocation(#20334,#20086) +enclosingStmt(#20334,#20330) +exprContainers(#20334,#20322) +literals("i","i",#20334) +decl(#20334,#20326) #20335=* -tokeninfo(#20335,8,#20001,54,")") -#20336=@"loc,{#10000},15,13,15,13" -locations_default(#20336,#10000,15,13,15,13) -hasLocation(#20335,#20336) -#20337=* -tokeninfo(#20337,8,#20001,55,"{") -#20338=@"loc,{#10000},15,15,15,15" -locations_default(#20338,#10000,15,15,15,15) -hasLocation(#20337,#20338) -#20339=* -tokeninfo(#20339,7,#20001,56,"for") -#20340=@"loc,{#10000},16,5,16,7" -locations_default(#20340,#10000,16,5,16,7) -hasLocation(#20339,#20340) +exprs(#20335,3,#20332,1,"0") +hasLocation(#20335,#20090) +enclosingStmt(#20335,#20330) +exprContainers(#20335,#20322) +literals("0","0",#20335) +#20336=* +stmts(#20336,18,#20328,1,"var i = 1;") +#20337=@"loc,{#10000},4,5,4,14" +locations_default(#20337,#10000,4,5,4,14) +hasLocation(#20336,#20337) +stmtContainers(#20336,#20322) +#20338=* +exprs(#20338,64,#20336,0,"i = 1") +#20339=@"loc,{#10000},4,9,4,13" +locations_default(#20339,#10000,4,9,4,13) +hasLocation(#20338,#20339) +enclosingStmt(#20338,#20336) +exprContainers(#20338,#20322) +#20340=* +exprs(#20340,78,#20338,0,"i") +hasLocation(#20340,#20096) +enclosingStmt(#20340,#20336) +exprContainers(#20340,#20322) +literals("i","i",#20340) +decl(#20340,#20326) #20341=* -tokeninfo(#20341,8,#20001,57,"(") -#20342=@"loc,{#10000},16,9,16,9" -locations_default(#20342,#10000,16,9,16,9) -hasLocation(#20341,#20342) -#20343=* -tokeninfo(#20343,7,#20001,58,"var") -#20344=@"loc,{#10000},16,10,16,12" -locations_default(#20344,#10000,16,10,16,12) -hasLocation(#20343,#20344) -#20345=* -tokeninfo(#20345,6,#20001,59,"p") -hasLocation(#20345,#20088) +exprs(#20341,3,#20338,1,"1") +hasLocation(#20341,#20100) +enclosingStmt(#20341,#20336) +exprContainers(#20341,#20322) +literals("1","1",#20341) +#20342=* +stmts(#20342,14,#20328,2,"for ( i ... ++i );") +#20343=@"loc,{#10000},5,5,5,33" +locations_default(#20343,#10000,5,5,5,33) +hasLocation(#20342,#20343) +stmtContainers(#20342,#20322) +#20344=* +exprs(#20344,27,#20342,1,"i < 32") +#20345=@"loc,{#10000},5,19,5,24" +locations_default(#20345,#10000,5,19,5,24) +hasLocation(#20344,#20345) +enclosingStmt(#20344,#20342) +exprContainers(#20344,#20322) #20346=* -tokeninfo(#20346,7,#20001,60,"in") -#20347=@"loc,{#10000},16,16,16,17" -locations_default(#20347,#10000,16,16,16,17) -hasLocation(#20346,#20347) +exprs(#20346,79,#20344,0,"i") +hasLocation(#20346,#20116) +enclosingStmt(#20346,#20342) +exprContainers(#20346,#20322) +literals("i","i",#20346) +bind(#20346,#20326) +#20347=* +exprs(#20347,3,#20344,1,"32") +hasLocation(#20347,#20120) +enclosingStmt(#20347,#20342) +exprContainers(#20347,#20322) +literals("32","32",#20347) #20348=* -tokeninfo(#20348,6,#20001,61,"o") -hasLocation(#20348,#20084) -#20349=* -tokeninfo(#20349,8,#20001,62,")") -#20350=@"loc,{#10000},16,20,16,20" -locations_default(#20350,#10000,16,20,16,20) -hasLocation(#20349,#20350) +exprs(#20348,59,#20342,2,"++i") +#20349=@"loc,{#10000},5,28,5,30" +locations_default(#20349,#10000,5,28,5,30) +hasLocation(#20348,#20349) +enclosingStmt(#20348,#20342) +exprContainers(#20348,#20322) +#20350=* +exprs(#20350,79,#20348,0,"i") +hasLocation(#20350,#20126) +enclosingStmt(#20350,#20342) +exprContainers(#20350,#20322) +literals("i","i",#20350) +bind(#20350,#20326) #20351=* -tokeninfo(#20351,7,#20001,63,"if") -#20352=@"loc,{#10000},17,9,17,10" -locations_default(#20352,#10000,17,9,17,10) +exprs(#20351,47,#20342,0,"i = 0") +#20352=@"loc,{#10000},5,11,5,15" +locations_default(#20352,#10000,5,11,5,15) hasLocation(#20351,#20352) +enclosingStmt(#20351,#20342) +exprContainers(#20351,#20322) #20353=* -tokeninfo(#20353,8,#20001,64,"(") -#20354=@"loc,{#10000},17,12,17,12" -locations_default(#20354,#10000,17,12,17,12) -hasLocation(#20353,#20354) +exprs(#20353,79,#20351,0,"i") +hasLocation(#20353,#20108) +enclosingStmt(#20353,#20342) +exprContainers(#20353,#20322) +literals("i","i",#20353) +bind(#20353,#20326) +#20354=* +exprs(#20354,3,#20351,1,"0") +hasLocation(#20354,#20112) +enclosingStmt(#20354,#20342) +exprContainers(#20354,#20322) +literals("0","0",#20354) #20355=* -tokeninfo(#20355,6,#20001,65,"p") -hasLocation(#20355,#20093) +stmts(#20355,0,#20342,3,";") +hasLocation(#20355,#20130) +stmtContainers(#20355,#20322) #20356=* -tokeninfo(#20356,8,#20001,66,")") -#20357=@"loc,{#10000},17,14,17,14" -locations_default(#20357,#10000,17,14,17,14) +stmts(#20356,8,#20328,3,"switch ... ;\n }") +#20357=@"loc,{#10000},6,5,9,5" +locations_default(#20357,#10000,6,5,9,5) hasLocation(#20356,#20357) +stmtContainers(#20356,#20322) #20358=* -tokeninfo(#20358,8,#20001,67,";") -hasLocation(#20358,#20095) +exprs(#20358,79,#20356,-1,"i") +hasLocation(#20358,#20136) +enclosingStmt(#20358,#20356) +exprContainers(#20358,#20322) +literals("i","i",#20358) +bind(#20358,#20326) #20359=* -tokeninfo(#20359,8,#20001,68,"}") -hasLocation(#20359,#20209) -#20360=* -tokeninfo(#20360,7,#20001,69,"try") -#20361=@"loc,{#10000},20,1,20,3" -locations_default(#20361,#10000,20,1,20,3) -hasLocation(#20360,#20361) +stmts(#20359,19,#20356,0,"case 32 ... n true;") +#20360=@"loc,{#10000},7,5,8,20" +locations_default(#20360,#10000,7,5,8,20) +hasLocation(#20359,#20360) +stmtContainers(#20359,#20322) +#20361=* +exprs(#20361,3,#20359,-1,"32") +hasLocation(#20361,#20144) +enclosingStmt(#20361,#20359) +exprContainers(#20361,#20322) +literals("32","32",#20361) #20362=* -tokeninfo(#20362,8,#20001,70,"{") -#20363=@"loc,{#10000},20,6,20,6" -locations_default(#20363,#10000,20,6,20,6) +stmts(#20362,9,#20359,0,"return true;") +#20363=@"loc,{#10000},8,9,8,20" +locations_default(#20363,#10000,8,9,8,20) hasLocation(#20362,#20363) +stmtContainers(#20362,#20322) #20364=* -tokeninfo(#20364,8,#20001,71,"}") -#20365=@"loc,{#10000},21,1,21,1" -locations_default(#20365,#10000,21,1,21,1) -hasLocation(#20364,#20365) -#20366=* -tokeninfo(#20366,7,#20001,72,"catch") -#20367=@"loc,{#10000},21,3,21,7" -locations_default(#20367,#10000,21,3,21,7) -hasLocation(#20366,#20367) -#20368=* -tokeninfo(#20368,8,#20001,73,"(") -#20369=@"loc,{#10000},21,9,21,9" -locations_default(#20369,#10000,21,9,21,9) -hasLocation(#20368,#20369) -#20370=* -tokeninfo(#20370,6,#20001,74,"e") -hasLocation(#20370,#20105) +exprs(#20364,2,#20362,0,"true") +hasLocation(#20364,#20150) +enclosingStmt(#20364,#20362) +exprContainers(#20364,#20322) +literals("true","true",#20364) +#20365=* +stmts(#20365,14,#20001,1,"for (;a ... ntinue;") +#20366=@"loc,{#10000},12,1,13,13" +locations_default(#20366,#10000,12,1,13,13) +hasLocation(#20365,#20366) +stmtContainers(#20365,#20001) +#20367=* +exprs(#20367,79,#20365,1,"a") +hasLocation(#20367,#20163) +enclosingStmt(#20367,#20365) +exprContainers(#20367,#20001) +literals("a","a",#20367) +#20368=@"var;{a};{#20000}" +variables(#20368,"a",#20000) +bind(#20367,#20368) +#20369=* +stmts(#20369,6,#20365,3,"continue;") +#20370=@"loc,{#10000},13,5,13,13" +locations_default(#20370,#10000,13,5,13,13) +hasLocation(#20369,#20370) +stmtContainers(#20369,#20001) +jumpTargets(#20369,#20365) #20371=* -tokeninfo(#20371,8,#20001,75,")") -#20372=@"loc,{#10000},21,11,21,11" -locations_default(#20372,#10000,21,11,21,11) +stmts(#20371,17,#20001,2,"functio ... (p);\n}") +#20372=@"loc,{#10000},15,1,18,1" +locations_default(#20372,#10000,15,1,18,1) hasLocation(#20371,#20372) +stmtContainers(#20371,#20001) #20373=* -tokeninfo(#20373,8,#20001,76,"{") -#20374=@"loc,{#10000},21,13,21,13" -locations_default(#20374,#10000,21,13,21,13) -hasLocation(#20373,#20374) -#20375=* -tokeninfo(#20375,6,#20001,77,"o") -hasLocation(#20375,#20115) -#20376=* -tokeninfo(#20376,8,#20001,78,".") -#20377=@"loc,{#10000},22,6,22,6" -locations_default(#20377,#10000,22,6,22,6) -hasLocation(#20376,#20377) -#20378=* -tokeninfo(#20378,6,#20001,79,"m") -hasLocation(#20378,#20118) +exprs(#20373,78,#20371,-1,"f") +hasLocation(#20373,#20175) +exprContainers(#20373,#20371) +literals("f","f",#20373) +decl(#20373,#20321) +#20374=* +scopes(#20374,1) +scopenodes(#20371,#20374) +scopenesting(#20374,#20000) +#20375=@"var;{p};{#20374}" +variables(#20375,"p",#20374) +#20376=@"var;{o};{#20374}" +variables(#20376,"o",#20374) +#20377=* +exprs(#20377,78,#20371,0,"o") +hasLocation(#20377,#20179) +exprContainers(#20377,#20371) +literals("o","o",#20377) +decl(#20377,#20376) +#20378=@"var;{arguments};{#20374}" +variables(#20378,"arguments",#20374) +isArgumentsObject(#20378) #20379=* -tokeninfo(#20379,8,#20001,80,"(") -#20380=@"loc,{#10000},22,8,22,8" -locations_default(#20380,#10000,22,8,22,8) +stmts(#20379,1,#20371,-2,"{\n f ... (p);\n}") +#20380=@"loc,{#10000},15,15,18,1" +locations_default(#20380,#10000,15,15,18,1) hasLocation(#20379,#20380) +stmtContainers(#20379,#20371) #20381=* -tokeninfo(#20381,8,#20001,81,")") -#20382=@"loc,{#10000},22,9,22,9" -locations_default(#20382,#10000,22,9,22,9) +stmts(#20381,15,#20379,0,"for (va ... if (p);") +#20382=@"loc,{#10000},16,5,17,15" +locations_default(#20382,#10000,16,5,17,15) hasLocation(#20381,#20382) +stmtContainers(#20381,#20371) #20383=* -tokeninfo(#20383,8,#20001,82,";") -#20384=@"loc,{#10000},22,10,22,10" -locations_default(#20384,#10000,22,10,22,10) -hasLocation(#20383,#20384) -#20385=* -tokeninfo(#20385,8,#20001,83,"}") -#20386=@"loc,{#10000},23,1,23,1" -locations_default(#20386,#10000,23,1,23,1) -hasLocation(#20385,#20386) +exprs(#20383,79,#20381,1,"o") +hasLocation(#20383,#20195) +enclosingStmt(#20383,#20381) +exprContainers(#20383,#20371) +literals("o","o",#20383) +bind(#20383,#20376) +#20384=* +stmts(#20384,18,#20381,0,"var p") +#20385=@"loc,{#10000},16,10,16,14" +locations_default(#20385,#10000,16,10,16,14) +hasLocation(#20384,#20385) +stmtContainers(#20384,#20371) +#20386=* +exprs(#20386,64,#20384,0,"p") +hasLocation(#20386,#20191) +enclosingStmt(#20386,#20384) +exprContainers(#20386,#20371) #20387=* -tokeninfo(#20387,7,#20001,84,"finally") -#20388=@"loc,{#10000},23,3,23,9" -locations_default(#20388,#10000,23,3,23,9) -hasLocation(#20387,#20388) -#20389=* -tokeninfo(#20389,8,#20001,85,"{") -#20390=@"loc,{#10000},23,11,23,11" -locations_default(#20390,#10000,23,11,23,11) -hasLocation(#20389,#20390) +exprs(#20387,78,#20386,0,"p") +hasLocation(#20387,#20191) +enclosingStmt(#20387,#20384) +exprContainers(#20387,#20371) +literals("p","p",#20387) +decl(#20387,#20375) +#20388=* +stmts(#20388,3,#20381,2,"if (p);") +#20389=@"loc,{#10000},17,9,17,15" +locations_default(#20389,#10000,17,9,17,15) +hasLocation(#20388,#20389) +stmtContainers(#20388,#20371) +#20390=* +exprs(#20390,79,#20388,0,"p") +hasLocation(#20390,#20203) +enclosingStmt(#20390,#20388) +exprContainers(#20390,#20371) +literals("p","p",#20390) +bind(#20390,#20375) #20391=* -tokeninfo(#20391,8,#20001,86,"}") -hasLocation(#20391,#20221) +stmts(#20391,0,#20388,1,";") +hasLocation(#20391,#20207) +stmtContainers(#20391,#20371) #20392=* -tokeninfo(#20392,7,#20001,87,"try") -#20393=@"loc,{#10000},26,1,26,3" -locations_default(#20393,#10000,26,1,26,3) +stmts(#20392,11,#20001,3,"try {\n ... lly {\n}") +#20393=@"loc,{#10000},20,1,24,1" +locations_default(#20393,#10000,20,1,24,1) hasLocation(#20392,#20393) +stmtContainers(#20392,#20001) #20394=* -tokeninfo(#20394,8,#20001,88,"{") -#20395=@"loc,{#10000},26,5,26,5" -locations_default(#20395,#10000,26,5,26,5) +stmts(#20394,1,#20392,0,"{\n}") +#20395=@"loc,{#10000},20,6,21,1" +locations_default(#20395,#10000,20,6,21,1) hasLocation(#20394,#20395) +stmtContainers(#20394,#20001) #20396=* -tokeninfo(#20396,7,#20001,89,"for") -#20397=@"loc,{#10000},27,5,27,7" -locations_default(#20397,#10000,27,5,27,7) +stmts(#20396,20,#20392,1,"catch ( ... .m();\n}") +#20397=@"loc,{#10000},21,3,23,1" +locations_default(#20397,#10000,21,3,23,1) hasLocation(#20396,#20397) +stmtContainers(#20396,#20001) #20398=* -tokeninfo(#20398,8,#20001,90,"(") -#20399=@"loc,{#10000},27,9,27,9" -locations_default(#20399,#10000,27,9,27,9) -hasLocation(#20398,#20399) +scopes(#20398,2) +scopenodes(#20396,#20398) +scopenesting(#20398,#20000) +#20399=@"var;{e};{#20398}" +variables(#20399,"e",#20398) #20400=* -tokeninfo(#20400,6,#20001,91,"i") -hasLocation(#20400,#20131) +exprs(#20400,78,#20396,0,"e") +hasLocation(#20400,#20220) +enclosingStmt(#20400,#20396) +exprContainers(#20400,#20001) +literals("e","e",#20400) +decl(#20400,#20399) #20401=* -tokeninfo(#20401,7,#20001,92,"in") -#20402=@"loc,{#10000},27,12,27,13" -locations_default(#20402,#10000,27,12,27,13) +stmts(#20401,1,#20396,1,"{\n o.m();\n}") +#20402=@"loc,{#10000},21,13,23,1" +locations_default(#20402,#10000,21,13,23,1) hasLocation(#20401,#20402) +stmtContainers(#20401,#20001) #20403=* -tokeninfo(#20403,6,#20001,93,"headers") -hasLocation(#20403,#20128) -#20404=* -tokeninfo(#20404,8,#20001,94,")") -#20405=@"loc,{#10000},27,22,27,22" -locations_default(#20405,#10000,27,22,27,22) -hasLocation(#20404,#20405) -#20406=* -tokeninfo(#20406,8,#20001,95,";") -hasLocation(#20406,#20134) +stmts(#20403,2,#20401,0,"o.m();") +#20404=@"loc,{#10000},22,5,22,10" +locations_default(#20404,#10000,22,5,22,10) +hasLocation(#20403,#20404) +stmtContainers(#20403,#20001) +#20405=* +exprs(#20405,13,#20403,0,"o.m()") +#20406=@"loc,{#10000},22,5,22,9" +locations_default(#20406,#10000,22,5,22,9) +hasLocation(#20405,#20406) +enclosingStmt(#20405,#20403) +exprContainers(#20405,#20001) #20407=* -tokeninfo(#20407,8,#20001,96,"}") -#20408=@"loc,{#10000},28,1,28,1" -locations_default(#20408,#10000,28,1,28,1) +exprs(#20407,14,#20405,-1,"o.m") +#20408=@"loc,{#10000},22,5,22,7" +locations_default(#20408,#10000,22,5,22,7) hasLocation(#20407,#20408) +enclosingStmt(#20407,#20403) +exprContainers(#20407,#20001) #20409=* -tokeninfo(#20409,7,#20001,97,"catch") -#20410=@"loc,{#10000},28,3,28,7" -locations_default(#20410,#10000,28,3,28,7) -hasLocation(#20409,#20410) +exprs(#20409,79,#20407,0,"o") +hasLocation(#20409,#20226) +enclosingStmt(#20409,#20403) +exprContainers(#20409,#20001) +literals("o","o",#20409) +#20410=@"var;{o};{#20000}" +variables(#20410,"o",#20000) +bind(#20409,#20410) #20411=* -tokeninfo(#20411,8,#20001,98,"(") -#20412=@"loc,{#10000},28,8,28,8" -locations_default(#20412,#10000,28,8,28,8) -hasLocation(#20411,#20412) -#20413=* -tokeninfo(#20413,6,#20001,99,"_") -hasLocation(#20413,#20140) +exprs(#20411,0,#20407,1,"m") +hasLocation(#20411,#20230) +enclosingStmt(#20411,#20403) +exprContainers(#20411,#20001) +literals("m","m",#20411) +#20412=* +stmts(#20412,1,#20392,-1,"{\n}") +#20413=@"loc,{#10000},23,11,24,1" +locations_default(#20413,#10000,23,11,24,1) +hasLocation(#20412,#20413) +stmtContainers(#20412,#20001) #20414=* -tokeninfo(#20414,8,#20001,100,")") -#20415=@"loc,{#10000},28,10,28,10" -locations_default(#20415,#10000,28,10,28,10) +stmts(#20414,11,#20001,4,"try {\n ... h(_) {}") +#20415=@"loc,{#10000},26,1,28,13" +locations_default(#20415,#10000,26,1,28,13) hasLocation(#20414,#20415) +stmtContainers(#20414,#20001) #20416=* -tokeninfo(#20416,8,#20001,101,"{") -#20417=@"loc,{#10000},28,12,28,12" -locations_default(#20417,#10000,28,12,28,12) +stmts(#20416,1,#20414,0,"{\n f ... ers);\n}") +#20417=@"loc,{#10000},26,5,28,1" +locations_default(#20417,#10000,26,5,28,1) hasLocation(#20416,#20417) +stmtContainers(#20416,#20001) #20418=* -tokeninfo(#20418,8,#20001,102,"}") -#20419=@"loc,{#10000},28,13,28,13" -locations_default(#20419,#10000,28,13,28,13) +stmts(#20418,15,#20416,0,"for (i in headers);") +#20419=@"loc,{#10000},27,5,27,23" +locations_default(#20419,#10000,27,5,27,23) hasLocation(#20418,#20419) +stmtContainers(#20418,#20001) #20420=* -tokeninfo(#20420,7,#20001,103,"try") -#20421=@"loc,{#10000},30,1,30,3" -locations_default(#20421,#10000,30,1,30,3) -hasLocation(#20420,#20421) +exprs(#20420,79,#20418,1,"headers") +hasLocation(#20420,#20257) +enclosingStmt(#20420,#20418) +exprContainers(#20420,#20001) +literals("headers","headers",#20420) +#20421=@"var;{headers};{#20000}" +variables(#20421,"headers",#20000) +bind(#20420,#20421) #20422=* -tokeninfo(#20422,8,#20001,104,"{") -#20423=@"loc,{#10000},30,5,30,5" -locations_default(#20423,#10000,30,5,30,5) -hasLocation(#20422,#20423) +exprs(#20422,79,#20418,0,"i") +hasLocation(#20422,#20253) +enclosingStmt(#20422,#20418) +exprContainers(#20422,#20001) +literals("i","i",#20422) +#20423=@"var;{i};{#20000}" +variables(#20423,"i",#20000) +bind(#20422,#20423) #20424=* -tokeninfo(#20424,8,#20001,105,"}") -#20425=@"loc,{#10000},31,1,31,1" -locations_default(#20425,#10000,31,1,31,1) -hasLocation(#20424,#20425) -#20426=* -tokeninfo(#20426,7,#20001,106,"finally") -#20427=@"loc,{#10000},31,3,31,9" -locations_default(#20427,#10000,31,3,31,9) -hasLocation(#20426,#20427) -#20428=* -tokeninfo(#20428,8,#20001,107,"{") -#20429=@"loc,{#10000},31,11,31,11" -locations_default(#20429,#10000,31,11,31,11) -hasLocation(#20428,#20429) +stmts(#20424,0,#20418,2,";") +hasLocation(#20424,#20261) +stmtContainers(#20424,#20001) +#20425=* +stmts(#20425,20,#20414,1,"catch(_) {}") +#20426=@"loc,{#10000},28,3,28,13" +locations_default(#20426,#10000,28,3,28,13) +hasLocation(#20425,#20426) +stmtContainers(#20425,#20001) +#20427=* +scopes(#20427,2) +scopenodes(#20425,#20427) +scopenesting(#20427,#20000) +#20428=@"var;{_};{#20427}" +variables(#20428,"_",#20427) +#20429=* +exprs(#20429,78,#20425,0,"_") +hasLocation(#20429,#20269) +enclosingStmt(#20429,#20425) +exprContainers(#20429,#20001) +literals("_","_",#20429) +decl(#20429,#20428) #20430=* -tokeninfo(#20430,6,#20001,108,"f") -hasLocation(#20430,#20154) -#20431=* -tokeninfo(#20431,8,#20001,109,"(") -#20432=@"loc,{#10000},32,6,32,6" -locations_default(#20432,#10000,32,6,32,6) -hasLocation(#20431,#20432) -#20433=* -tokeninfo(#20433,8,#20001,110,")") -#20434=@"loc,{#10000},32,7,32,7" -locations_default(#20434,#10000,32,7,32,7) -hasLocation(#20433,#20434) -#20435=* -tokeninfo(#20435,8,#20001,111,";") -#20436=@"loc,{#10000},32,8,32,8" -locations_default(#20436,#10000,32,8,32,8) -hasLocation(#20435,#20436) -#20437=* -tokeninfo(#20437,8,#20001,112,"}") -hasLocation(#20437,#20239) +stmts(#20430,1,#20425,1,"{}") +#20431=@"loc,{#10000},28,12,28,13" +locations_default(#20431,#10000,28,12,28,13) +hasLocation(#20430,#20431) +stmtContainers(#20430,#20001) +#20432=* +stmts(#20432,11,#20001,5,"try {\n} ... f();\n}") +#20433=@"loc,{#10000},30,1,33,1" +locations_default(#20433,#10000,30,1,33,1) +hasLocation(#20432,#20433) +stmtContainers(#20432,#20001) +#20434=* +stmts(#20434,1,#20432,0,"{\n}") +#20435=@"loc,{#10000},30,5,31,1" +locations_default(#20435,#10000,30,5,31,1) +hasLocation(#20434,#20435) +stmtContainers(#20434,#20001) +#20436=* +stmts(#20436,1,#20432,-1,"{\n f();\n}") +#20437=@"loc,{#10000},31,11,33,1" +locations_default(#20437,#10000,31,11,33,1) +hasLocation(#20436,#20437) +stmtContainers(#20436,#20001) #20438=* -tokeninfo(#20438,7,#20001,113,"if") -#20439=@"loc,{#10000},35,1,35,2" -locations_default(#20439,#10000,35,1,35,2) +stmts(#20438,2,#20436,0,"f();") +#20439=@"loc,{#10000},32,5,32,8" +locations_default(#20439,#10000,32,5,32,8) hasLocation(#20438,#20439) +stmtContainers(#20438,#20001) #20440=* -tokeninfo(#20440,8,#20001,114,"(") -#20441=@"loc,{#10000},35,4,35,4" -locations_default(#20441,#10000,35,4,35,4) +exprs(#20440,13,#20438,0,"f()") +#20441=@"loc,{#10000},32,5,32,7" +locations_default(#20441,#10000,32,5,32,7) hasLocation(#20440,#20441) +enclosingStmt(#20440,#20438) +exprContainers(#20440,#20001) #20442=* -tokeninfo(#20442,8,#20001,115,"!") -#20443=@"loc,{#10000},35,5,35,5" -locations_default(#20443,#10000,35,5,35,5) -hasLocation(#20442,#20443) -#20444=* -tokeninfo(#20444,8,#20001,116,"(") -#20445=@"loc,{#10000},35,6,35,6" -locations_default(#20445,#10000,35,6,35,6) -hasLocation(#20444,#20445) -#20446=* -tokeninfo(#20446,6,#20001,117,"x") -hasLocation(#20446,#20164) +exprs(#20442,79,#20440,-1,"f") +hasLocation(#20442,#20287) +enclosingStmt(#20442,#20438) +exprContainers(#20442,#20001) +literals("f","f",#20442) +bind(#20442,#20321) +#20443=* +stmts(#20443,3,#20001,6,"if (!(x || y))\n z;") +#20444=@"loc,{#10000},35,1,36,4" +locations_default(#20444,#10000,35,1,36,4) +hasLocation(#20443,#20444) +stmtContainers(#20443,#20001) +#20445=* +exprs(#20445,18,#20443,0,"!(x || y)") +#20446=@"loc,{#10000},35,5,35,13" +locations_default(#20446,#10000,35,5,35,13) +hasLocation(#20445,#20446) +enclosingStmt(#20445,#20443) +exprContainers(#20445,#20001) #20447=* -tokeninfo(#20447,8,#20001,118,"||") -#20448=@"loc,{#10000},35,9,35,10" -locations_default(#20448,#10000,35,9,35,10) +exprs(#20447,63,#20445,0,"(x || y)") +#20448=@"loc,{#10000},35,6,35,13" +locations_default(#20448,#10000,35,6,35,13) hasLocation(#20447,#20448) +enclosingStmt(#20447,#20443) +exprContainers(#20447,#20001) #20449=* -tokeninfo(#20449,6,#20001,119,"y") -hasLocation(#20449,#20167) -#20450=* -tokeninfo(#20450,8,#20001,120,")") -#20451=@"loc,{#10000},35,13,35,13" -locations_default(#20451,#10000,35,13,35,13) -hasLocation(#20450,#20451) -#20452=* -tokeninfo(#20452,8,#20001,121,")") -#20453=@"loc,{#10000},35,14,35,14" -locations_default(#20453,#10000,35,14,35,14) -hasLocation(#20452,#20453) -#20454=* -tokeninfo(#20454,6,#20001,122,"z") -hasLocation(#20454,#20172) +exprs(#20449,45,#20447,0,"x || y") +#20450=@"loc,{#10000},35,7,35,12" +locations_default(#20450,#10000,35,7,35,12) +hasLocation(#20449,#20450) +enclosingStmt(#20449,#20443) +exprContainers(#20449,#20001) +#20451=* +exprs(#20451,79,#20449,0,"x") +hasLocation(#20451,#20304) +enclosingStmt(#20451,#20443) +exprContainers(#20451,#20001) +literals("x","x",#20451) +#20452=@"var;{x};{#20000}" +variables(#20452,"x",#20000) +bind(#20451,#20452) +#20453=* +exprs(#20453,79,#20449,1,"y") +hasLocation(#20453,#20308) +enclosingStmt(#20453,#20443) +exprContainers(#20453,#20001) +literals("y","y",#20453) +#20454=@"var;{y};{#20000}" +variables(#20454,"y",#20000) +bind(#20453,#20454) #20455=* -tokeninfo(#20455,8,#20001,123,";") -#20456=@"loc,{#10000},36,4,36,4" -locations_default(#20456,#10000,36,4,36,4) +stmts(#20455,2,#20443,1,"z;") +#20456=@"loc,{#10000},36,3,36,4" +locations_default(#20456,#10000,36,3,36,4) hasLocation(#20455,#20456) +stmtContainers(#20455,#20001) #20457=* -tokeninfo(#20457,0,#20001,124,"") -#20458=@"loc,{#10000},37,1,37,0" -locations_default(#20458,#10000,37,1,37,0) -hasLocation(#20457,#20458) +exprs(#20457,79,#20455,0,"z") +hasLocation(#20457,#20314) +enclosingStmt(#20457,#20455) +exprContainers(#20457,#20001) +literals("z","z",#20457) +#20458=@"var;{z};{#20000}" +variables(#20458,"z",#20000) +bind(#20457,#20458) #20459=* entry_cfg_node(#20459,#20001) #20460=@"loc,{#10000},1,1,1,0" @@ -1398,152 +1396,152 @@ locations_default(#20460,#10000,1,1,1,0) hasLocation(#20459,#20460) #20461=* exit_cfg_node(#20461,#20001) -hasLocation(#20461,#20458) -successor(#20155,#20159) -successor(#20159,#20161) -successor(#20161,#20163) +hasLocation(#20461,#20318) +successor(#20443,#20447) +successor(#20447,#20449) +successor(#20449,#20451) #20462=* -guard_node(#20462,1,#20163) -hasLocation(#20462,#20164) -successor(#20462,#20157) +guard_node(#20462,1,#20451) +hasLocation(#20462,#20304) +successor(#20462,#20445) #20463=* -guard_node(#20463,0,#20163) -hasLocation(#20463,#20164) -successor(#20463,#20166) -successor(#20163,#20462) -successor(#20163,#20463) -successor(#20166,#20157) +guard_node(#20463,0,#20451) +hasLocation(#20463,#20304) +successor(#20463,#20453) +successor(#20451,#20462) +successor(#20451,#20463) +successor(#20453,#20445) #20464=* -guard_node(#20464,0,#20166) -hasLocation(#20464,#20167) -successor(#20464,#20169) +guard_node(#20464,0,#20453) +hasLocation(#20464,#20308) +successor(#20464,#20455) #20465=* -guard_node(#20465,0,#20163) -hasLocation(#20465,#20164) +guard_node(#20465,0,#20451) +hasLocation(#20465,#20304) successor(#20465,#20464) -successor(#20157,#20465) -successor(#20157,#20461) -successor(#20169,#20171) -successor(#20171,#20461) -successor(#20143,#20145) -successor(#20145,#20147) -successor(#20147,#20149) -successor(#20149,#20153) -successor(#20153,#20151) -successor(#20151,#20155) -successor(#20121,#20123) -successor(#20123,#20127) -successor(#20127,#20125) -successor(#20125,#20130) -successor(#20125,#20143) -successor(#20133,#20125) -successor(#20130,#20133) -successor(#20135,#20139) -successor(#20141,#20143) -successor(#20139,#20141) -successor(#20096,#20098) -successor(#20098,#20119) -successor(#20100,#20104) -successor(#20106,#20108) -successor(#20108,#20114) -successor(#20117,#20112) -successor(#20114,#20117) -successor(#20112,#20119) -successor(#20112,#20110) -successor(#20110,#20119) -successor(#20104,#20106) -successor(#20119,#20121) -successor(#20069,#20096) +successor(#20445,#20465) +successor(#20445,#20461) +successor(#20455,#20457) +successor(#20457,#20461) +successor(#20432,#20434) +successor(#20434,#20436) +successor(#20436,#20438) +successor(#20438,#20442) +successor(#20442,#20440) +successor(#20440,#20443) +successor(#20414,#20416) +successor(#20416,#20420) +successor(#20420,#20418) +successor(#20418,#20422) +successor(#20418,#20432) +successor(#20424,#20418) +successor(#20422,#20424) +successor(#20425,#20429) +successor(#20430,#20432) +successor(#20429,#20430) +successor(#20392,#20394) +successor(#20394,#20412) +successor(#20396,#20400) +successor(#20401,#20403) +successor(#20403,#20409) +successor(#20411,#20407) +successor(#20409,#20411) +successor(#20407,#20412) +successor(#20407,#20405) +successor(#20405,#20412) +successor(#20400,#20401) +successor(#20412,#20414) +successor(#20371,#20392) #20466=* -entry_cfg_node(#20466,#20069) +entry_cfg_node(#20466,#20371) #20467=@"loc,{#10000},15,1,15,0" locations_default(#20467,#10000,15,1,15,0) hasLocation(#20466,#20467) #20468=* -exit_cfg_node(#20468,#20069) +exit_cfg_node(#20468,#20371) #20469=@"loc,{#10000},18,2,18,1" locations_default(#20469,#10000,18,2,18,1) hasLocation(#20468,#20469) -successor(#20079,#20083) -successor(#20083,#20081) -successor(#20081,#20085) -successor(#20081,#20468) -successor(#20090,#20092) +successor(#20379,#20383) +successor(#20383,#20381) +successor(#20381,#20384) +successor(#20381,#20468) +successor(#20388,#20390) #20470=* -guard_node(#20470,1,#20092) -hasLocation(#20470,#20093) -successor(#20470,#20094) +guard_node(#20470,1,#20390) +hasLocation(#20470,#20203) +successor(#20470,#20391) #20471=* -guard_node(#20471,0,#20092) -hasLocation(#20471,#20093) -successor(#20471,#20081) -successor(#20092,#20470) -successor(#20092,#20471) -successor(#20094,#20081) -successor(#20085,#20089) -successor(#20089,#20087) -successor(#20087,#20090) -successor(#20076,#20079) -successor(#20466,#20076) -successor(#20062,#20064) +guard_node(#20471,0,#20390) +hasLocation(#20471,#20203) +successor(#20471,#20381) +successor(#20390,#20470) +successor(#20390,#20471) +successor(#20391,#20381) +successor(#20384,#20387) +successor(#20387,#20386) +successor(#20386,#20388) +successor(#20377,#20379) +successor(#20466,#20377) +successor(#20365,#20367) #20472=* -guard_node(#20472,1,#20064) -hasLocation(#20472,#20065) -successor(#20472,#20067) +guard_node(#20472,1,#20367) +hasLocation(#20472,#20163) +successor(#20472,#20369) #20473=* -guard_node(#20473,0,#20064) -hasLocation(#20473,#20065) -successor(#20473,#20069) -successor(#20064,#20472) -successor(#20064,#20473) -successor(#20067,#20064) -successor(#20005,#20062) +guard_node(#20473,0,#20367) +hasLocation(#20473,#20163) +successor(#20473,#20371) +successor(#20367,#20472) +successor(#20367,#20473) +successor(#20369,#20367) +successor(#20322,#20365) #20474=* -entry_cfg_node(#20474,#20005) +entry_cfg_node(#20474,#20322) hasLocation(#20474,#20460) #20475=* -exit_cfg_node(#20475,#20005) +exit_cfg_node(#20475,#20322) #20476=@"loc,{#10000},10,2,10,1" locations_default(#20476,#10000,10,2,10,1) hasLocation(#20475,#20476) -successor(#20012,#20014) -successor(#20050,#20052) -successor(#20052,#20054) -successor(#20054,#20056) -successor(#20056,#20060) -successor(#20056,#20475) -successor(#20060,#20058) -successor(#20058,#20475) -successor(#20030,#20044) -successor(#20046,#20042) -successor(#20044,#20046) -successor(#20042,#20034) -successor(#20036,#20032) -successor(#20034,#20036) +successor(#20328,#20330) +successor(#20356,#20358) +successor(#20358,#20359) +successor(#20359,#20361) +successor(#20361,#20364) +successor(#20361,#20475) +successor(#20364,#20362) +successor(#20362,#20475) +successor(#20342,#20353) +successor(#20354,#20351) +successor(#20353,#20354) +successor(#20351,#20346) +successor(#20347,#20344) +successor(#20346,#20347) #20477=* -guard_node(#20477,1,#20032) -hasLocation(#20477,#20033) -successor(#20477,#20048) +guard_node(#20477,1,#20344) +hasLocation(#20477,#20345) +successor(#20477,#20355) #20478=* -guard_node(#20478,0,#20032) -hasLocation(#20478,#20033) -successor(#20478,#20050) -successor(#20032,#20477) -successor(#20032,#20478) -successor(#20040,#20038) -successor(#20038,#20034) -successor(#20048,#20040) -successor(#20022,#20026) -successor(#20028,#20024) -successor(#20026,#20028) -successor(#20024,#20030) -successor(#20014,#20018) -successor(#20020,#20016) -successor(#20018,#20020) -successor(#20016,#20022) -successor(#20474,#20012) -successor(#20071,#20005) -successor(#20007,#20071) -successor(#20459,#20007) +guard_node(#20478,0,#20344) +hasLocation(#20478,#20345) +successor(#20478,#20356) +successor(#20344,#20477) +successor(#20344,#20478) +successor(#20350,#20348) +successor(#20348,#20346) +successor(#20355,#20350) +successor(#20336,#20340) +successor(#20341,#20338) +successor(#20340,#20341) +successor(#20338,#20342) +successor(#20330,#20334) +successor(#20335,#20332) +successor(#20334,#20335) +successor(#20332,#20336) +successor(#20474,#20328) +successor(#20373,#20322) +successor(#20324,#20373) +successor(#20459,#20324) numlines(#10000,36,30,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/closure/input/googDotDeclareModuleId.js b/javascript/extractor/tests/closure/input/googDotDeclareModuleId.js new file mode 100644 index 00000000000..621884a8865 --- /dev/null +++ b/javascript/extractor/tests/closure/input/googDotDeclareModuleId.js @@ -0,0 +1,3 @@ +goog.declareModuleId('test'); + +export let x = 5; diff --git a/javascript/extractor/tests/closure/input/googDotModule.js b/javascript/extractor/tests/closure/input/googDotModule.js new file mode 100644 index 00000000000..dcb994f981d --- /dev/null +++ b/javascript/extractor/tests/closure/input/googDotModule.js @@ -0,0 +1,3 @@ +goog.module('test'); +var x = 5; +exports = { x: x }; diff --git a/javascript/extractor/tests/closure/input/googDotProvide.js b/javascript/extractor/tests/closure/input/googDotProvide.js new file mode 100644 index 00000000000..a194c35957f --- /dev/null +++ b/javascript/extractor/tests/closure/input/googDotProvide.js @@ -0,0 +1,3 @@ +goog.provide('test.x'); + +test.x = 5; diff --git a/javascript/extractor/tests/closure/output/trap/googDotDeclareModuleId.js.trap b/javascript/extractor/tests/closure/output/trap/googDotDeclareModuleId.js.trap new file mode 100644 index 00000000000..729aae779a4 --- /dev/null +++ b/javascript/extractor/tests/closure/output/trap/googDotDeclareModuleId.js.trap @@ -0,0 +1,203 @@ +#10000=@"/googDotDeclareModuleId.js;sourcefile" +files(#10000,"/googDotDeclareModuleId.js","googDotDeclareModuleId","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +#20002=* +lines(#20002,#20001,"goog.declareModuleId('test');"," +") +#20003=@"loc,{#10000},1,1,1,29" +locations_default(#20003,#10000,1,1,1,29) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,""," +") +#20005=@"loc,{#10000},2,1,2,0" +locations_default(#20005,#10000,2,1,2,0) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"export let x = 5;"," +") +#20007=@"loc,{#10000},3,1,3,17" +locations_default(#20007,#10000,3,1,3,17) +hasLocation(#20006,#20007) +numlines(#20001,3,2,0) +#20008=* +tokeninfo(#20008,6,#20001,0,"goog") +#20009=@"loc,{#10000},1,1,1,4" +locations_default(#20009,#10000,1,1,1,4) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,1,".") +#20011=@"loc,{#10000},1,5,1,5" +locations_default(#20011,#10000,1,5,1,5) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,6,#20001,2,"declareModuleId") +#20013=@"loc,{#10000},1,6,1,20" +locations_default(#20013,#10000,1,6,1,20) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,3,"(") +#20015=@"loc,{#10000},1,21,1,21" +locations_default(#20015,#10000,1,21,1,21) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,4,#20001,4,"'test'") +#20017=@"loc,{#10000},1,22,1,27" +locations_default(#20017,#10000,1,22,1,27) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,5,")") +#20019=@"loc,{#10000},1,28,1,28" +locations_default(#20019,#10000,1,28,1,28) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,6,";") +#20021=@"loc,{#10000},1,29,1,29" +locations_default(#20021,#10000,1,29,1,29) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,7,#20001,7,"export") +#20023=@"loc,{#10000},3,1,3,6" +locations_default(#20023,#10000,3,1,3,6) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,7,#20001,8,"let") +#20025=@"loc,{#10000},3,8,3,10" +locations_default(#20025,#10000,3,8,3,10) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,6,#20001,9,"x") +#20027=@"loc,{#10000},3,12,3,12" +locations_default(#20027,#10000,3,12,3,12) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,10,"=") +#20029=@"loc,{#10000},3,14,3,14" +locations_default(#20029,#10000,3,14,3,14) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,3,#20001,11,"5") +#20031=@"loc,{#10000},3,16,3,16" +locations_default(#20031,#10000,3,16,3,16) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,12,";") +#20033=@"loc,{#10000},3,17,3,17" +locations_default(#20033,#10000,3,17,3,17) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,0,#20001,13,"") +#20035=@"loc,{#10000},4,1,4,0" +locations_default(#20035,#10000,4,1,4,0) +hasLocation(#20034,#20035) +toplevels(#20001,0) +#20036=@"loc,{#10000},1,1,4,0" +locations_default(#20036,#10000,1,1,4,0) +hasLocation(#20001,#20036) +#20037=@"module;{#10000},1,1" +scopes(#20037,3) +scopenodes(#20001,#20037) +scopenesting(#20037,#20000) +isModule(#20001) +isES2015Module(#20001) +#20038=@"var;{x};{#20037}" +variables(#20038,"x",#20037) +#20039=* +stmts(#20039,2,#20001,0,"goog.de ... test');") +hasLocation(#20039,#20003) +stmtContainers(#20039,#20001) +#20040=* +exprs(#20040,13,#20039,0,"goog.de ... 'test')") +#20041=@"loc,{#10000},1,1,1,28" +locations_default(#20041,#10000,1,1,1,28) +hasLocation(#20040,#20041) +enclosingStmt(#20040,#20039) +exprContainers(#20040,#20001) +#20042=* +exprs(#20042,14,#20040,-1,"goog.declareModuleId") +#20043=@"loc,{#10000},1,1,1,20" +locations_default(#20043,#10000,1,1,1,20) +hasLocation(#20042,#20043) +enclosingStmt(#20042,#20039) +exprContainers(#20042,#20001) +#20044=* +exprs(#20044,79,#20042,0,"goog") +hasLocation(#20044,#20009) +enclosingStmt(#20044,#20039) +exprContainers(#20044,#20001) +literals("goog","goog",#20044) +#20045=@"var;{goog};{#20000}" +variables(#20045,"goog",#20000) +bind(#20044,#20045) +#20046=* +exprs(#20046,0,#20042,1,"declareModuleId") +hasLocation(#20046,#20013) +enclosingStmt(#20046,#20039) +exprContainers(#20046,#20001) +literals("declareModuleId","declareModuleId",#20046) +#20047=* +exprs(#20047,4,#20040,0,"'test'") +hasLocation(#20047,#20017) +enclosingStmt(#20047,#20039) +exprContainers(#20047,#20001) +literals("test","'test'",#20047) +#20048=* +stmts(#20048,30,#20001,1,"export let x = 5;") +hasLocation(#20048,#20007) +stmtContainers(#20048,#20001) +#20049=* +stmts(#20049,23,#20048,-1,"let x = 5;") +#20050=@"loc,{#10000},3,8,3,17" +locations_default(#20050,#10000,3,8,3,17) +hasLocation(#20049,#20050) +stmtContainers(#20049,#20001) +#20051=* +exprs(#20051,64,#20049,0,"x = 5") +#20052=@"loc,{#10000},3,12,3,16" +locations_default(#20052,#10000,3,12,3,16) +hasLocation(#20051,#20052) +enclosingStmt(#20051,#20049) +exprContainers(#20051,#20001) +#20053=* +exprs(#20053,78,#20051,0,"x") +hasLocation(#20053,#20027) +enclosingStmt(#20053,#20049) +exprContainers(#20053,#20001) +literals("x","x",#20053) +decl(#20053,#20038) +#20054=* +exprs(#20054,3,#20051,1,"5") +hasLocation(#20054,#20031) +enclosingStmt(#20054,#20049) +exprContainers(#20054,#20001) +literals("5","5",#20054) +#20055=* +entry_cfg_node(#20055,#20001) +#20056=@"loc,{#10000},1,1,1,0" +locations_default(#20056,#10000,1,1,1,0) +hasLocation(#20055,#20056) +#20057=* +exit_cfg_node(#20057,#20001) +hasLocation(#20057,#20035) +successor(#20048,#20049) +successor(#20049,#20053) +successor(#20054,#20051) +successor(#20053,#20054) +successor(#20051,#20057) +successor(#20039,#20044) +successor(#20047,#20040) +successor(#20046,#20042) +successor(#20044,#20046) +successor(#20042,#20047) +successor(#20040,#20048) +successor(#20055,#20039) +numlines(#10000,3,2,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/closure/output/trap/googDotModule.js.trap b/javascript/extractor/tests/closure/output/trap/googDotModule.js.trap new file mode 100644 index 00000000000..7da62924256 --- /dev/null +++ b/javascript/extractor/tests/closure/output/trap/googDotModule.js.trap @@ -0,0 +1,283 @@ +#10000=@"/googDotModule.js;sourcefile" +files(#10000,"/googDotModule.js","googDotModule","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +#20002=* +lines(#20002,#20001,"goog.module('test');"," +") +#20003=@"loc,{#10000},1,1,1,20" +locations_default(#20003,#10000,1,1,1,20) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"var x = 5;"," +") +#20005=@"loc,{#10000},2,1,2,10" +locations_default(#20005,#10000,2,1,2,10) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"exports = { x: x };"," +") +#20007=@"loc,{#10000},3,1,3,19" +locations_default(#20007,#10000,3,1,3,19) +hasLocation(#20006,#20007) +numlines(#20001,3,3,0) +#20008=* +tokeninfo(#20008,6,#20001,0,"goog") +#20009=@"loc,{#10000},1,1,1,4" +locations_default(#20009,#10000,1,1,1,4) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,1,".") +#20011=@"loc,{#10000},1,5,1,5" +locations_default(#20011,#10000,1,5,1,5) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,6,#20001,2,"module") +#20013=@"loc,{#10000},1,6,1,11" +locations_default(#20013,#10000,1,6,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,4,#20001,4,"'test'") +#20017=@"loc,{#10000},1,13,1,18" +locations_default(#20017,#10000,1,13,1,18) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,5,")") +#20019=@"loc,{#10000},1,19,1,19" +locations_default(#20019,#10000,1,19,1,19) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,6,";") +#20021=@"loc,{#10000},1,20,1,20" +locations_default(#20021,#10000,1,20,1,20) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,7,#20001,7,"var") +#20023=@"loc,{#10000},2,1,2,3" +locations_default(#20023,#10000,2,1,2,3) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,6,#20001,8,"x") +#20025=@"loc,{#10000},2,5,2,5" +locations_default(#20025,#10000,2,5,2,5) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,9,"=") +#20027=@"loc,{#10000},2,7,2,7" +locations_default(#20027,#10000,2,7,2,7) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,3,#20001,10,"5") +#20029=@"loc,{#10000},2,9,2,9" +locations_default(#20029,#10000,2,9,2,9) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,11,";") +#20031=@"loc,{#10000},2,10,2,10" +locations_default(#20031,#10000,2,10,2,10) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,6,#20001,12,"exports") +#20033=@"loc,{#10000},3,1,3,7" +locations_default(#20033,#10000,3,1,3,7) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,13,"=") +#20035=@"loc,{#10000},3,9,3,9" +locations_default(#20035,#10000,3,9,3,9) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,14,"{") +#20037=@"loc,{#10000},3,11,3,11" +locations_default(#20037,#10000,3,11,3,11) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,6,#20001,15,"x") +#20039=@"loc,{#10000},3,13,3,13" +locations_default(#20039,#10000,3,13,3,13) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,16,":") +#20041=@"loc,{#10000},3,14,3,14" +locations_default(#20041,#10000,3,14,3,14) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,6,#20001,17,"x") +#20043=@"loc,{#10000},3,16,3,16" +locations_default(#20043,#10000,3,16,3,16) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,18,"}") +#20045=@"loc,{#10000},3,18,3,18" +locations_default(#20045,#10000,3,18,3,18) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,19,";") +#20047=@"loc,{#10000},3,19,3,19" +locations_default(#20047,#10000,3,19,3,19) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,0,#20001,20,"") +#20049=@"loc,{#10000},4,1,4,0" +locations_default(#20049,#10000,4,1,4,0) +hasLocation(#20048,#20049) +toplevels(#20001,0) +#20050=@"loc,{#10000},1,1,4,0" +locations_default(#20050,#10000,1,1,4,0) +hasLocation(#20001,#20050) +#20051=@"module;{#10000},1,1" +scopes(#20051,3) +scopenodes(#20001,#20051) +scopenesting(#20051,#20000) +#20052=@"var;{exports};{#20051}" +variables(#20052,"exports",#20051) +isModule(#20001) +isClosureModule(#20001) +#20053=@"var;{x};{#20051}" +variables(#20053,"x",#20051) +#20054=* +stmts(#20054,2,#20001,0,"goog.module('test');") +hasLocation(#20054,#20003) +stmtContainers(#20054,#20001) +#20055=* +exprs(#20055,13,#20054,0,"goog.module('test')") +#20056=@"loc,{#10000},1,1,1,19" +locations_default(#20056,#10000,1,1,1,19) +hasLocation(#20055,#20056) +enclosingStmt(#20055,#20054) +exprContainers(#20055,#20001) +#20057=* +exprs(#20057,14,#20055,-1,"goog.module") +#20058=@"loc,{#10000},1,1,1,11" +locations_default(#20058,#10000,1,1,1,11) +hasLocation(#20057,#20058) +enclosingStmt(#20057,#20054) +exprContainers(#20057,#20001) +#20059=* +exprs(#20059,79,#20057,0,"goog") +hasLocation(#20059,#20009) +enclosingStmt(#20059,#20054) +exprContainers(#20059,#20001) +literals("goog","goog",#20059) +#20060=@"var;{goog};{#20000}" +variables(#20060,"goog",#20000) +bind(#20059,#20060) +#20061=* +exprs(#20061,0,#20057,1,"module") +hasLocation(#20061,#20013) +enclosingStmt(#20061,#20054) +exprContainers(#20061,#20001) +literals("module","module",#20061) +#20062=* +exprs(#20062,4,#20055,0,"'test'") +hasLocation(#20062,#20017) +enclosingStmt(#20062,#20054) +exprContainers(#20062,#20001) +literals("test","'test'",#20062) +#20063=* +stmts(#20063,18,#20001,1,"var x = 5;") +hasLocation(#20063,#20005) +stmtContainers(#20063,#20001) +#20064=* +exprs(#20064,64,#20063,0,"x = 5") +#20065=@"loc,{#10000},2,5,2,9" +locations_default(#20065,#10000,2,5,2,9) +hasLocation(#20064,#20065) +enclosingStmt(#20064,#20063) +exprContainers(#20064,#20001) +#20066=* +exprs(#20066,78,#20064,0,"x") +hasLocation(#20066,#20025) +enclosingStmt(#20066,#20063) +exprContainers(#20066,#20001) +literals("x","x",#20066) +decl(#20066,#20053) +#20067=* +exprs(#20067,3,#20064,1,"5") +hasLocation(#20067,#20029) +enclosingStmt(#20067,#20063) +exprContainers(#20067,#20001) +literals("5","5",#20067) +#20068=* +stmts(#20068,2,#20001,2,"exports = { x: x };") +hasLocation(#20068,#20007) +stmtContainers(#20068,#20001) +#20069=* +exprs(#20069,47,#20068,0,"exports = { x: x }") +#20070=@"loc,{#10000},3,1,3,18" +locations_default(#20070,#10000,3,1,3,18) +hasLocation(#20069,#20070) +enclosingStmt(#20069,#20068) +exprContainers(#20069,#20001) +#20071=* +exprs(#20071,79,#20069,0,"exports") +hasLocation(#20071,#20033) +enclosingStmt(#20071,#20068) +exprContainers(#20071,#20001) +literals("exports","exports",#20071) +bind(#20071,#20052) +#20072=* +exprs(#20072,8,#20069,1,"{ x: x }") +#20073=@"loc,{#10000},3,11,3,18" +locations_default(#20073,#10000,3,11,3,18) +hasLocation(#20072,#20073) +enclosingStmt(#20072,#20068) +exprContainers(#20072,#20001) +#20074=* +properties(#20074,#20072,0,0,"x: x") +#20075=@"loc,{#10000},3,13,3,16" +locations_default(#20075,#10000,3,13,3,16) +hasLocation(#20074,#20075) +#20076=* +exprs(#20076,0,#20074,0,"x") +hasLocation(#20076,#20039) +enclosingStmt(#20076,#20068) +exprContainers(#20076,#20001) +literals("x","x",#20076) +#20077=* +exprs(#20077,79,#20074,1,"x") +hasLocation(#20077,#20043) +enclosingStmt(#20077,#20068) +exprContainers(#20077,#20001) +literals("x","x",#20077) +bind(#20077,#20053) +#20078=* +entry_cfg_node(#20078,#20001) +#20079=@"loc,{#10000},1,1,1,0" +locations_default(#20079,#10000,1,1,1,0) +hasLocation(#20078,#20079) +#20080=* +exit_cfg_node(#20080,#20001) +hasLocation(#20080,#20049) +successor(#20068,#20071) +successor(#20072,#20076) +successor(#20077,#20074) +successor(#20076,#20077) +successor(#20074,#20069) +successor(#20071,#20072) +successor(#20069,#20080) +successor(#20063,#20066) +successor(#20067,#20064) +successor(#20066,#20067) +successor(#20064,#20068) +successor(#20054,#20059) +successor(#20062,#20055) +successor(#20061,#20057) +successor(#20059,#20061) +successor(#20057,#20062) +successor(#20055,#20063) +successor(#20078,#20054) +numlines(#10000,3,3,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/closure/output/trap/googDotProvide.js.trap b/javascript/extractor/tests/closure/output/trap/googDotProvide.js.trap new file mode 100644 index 00000000000..be568d46f5c --- /dev/null +++ b/javascript/extractor/tests/closure/output/trap/googDotProvide.js.trap @@ -0,0 +1,205 @@ +#10000=@"/googDotProvide.js;sourcefile" +files(#10000,"/googDotProvide.js","googDotProvide","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +#20002=* +lines(#20002,#20001,"goog.provide('test.x');"," +") +#20003=@"loc,{#10000},1,1,1,23" +locations_default(#20003,#10000,1,1,1,23) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,""," +") +#20005=@"loc,{#10000},2,1,2,0" +locations_default(#20005,#10000,2,1,2,0) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"test.x = 5;"," +") +#20007=@"loc,{#10000},3,1,3,11" +locations_default(#20007,#10000,3,1,3,11) +hasLocation(#20006,#20007) +numlines(#20001,3,2,0) +#20008=* +tokeninfo(#20008,6,#20001,0,"goog") +#20009=@"loc,{#10000},1,1,1,4" +locations_default(#20009,#10000,1,1,1,4) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,1,".") +#20011=@"loc,{#10000},1,5,1,5" +locations_default(#20011,#10000,1,5,1,5) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,6,#20001,2,"provide") +#20013=@"loc,{#10000},1,6,1,12" +locations_default(#20013,#10000,1,6,1,12) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,3,"(") +#20015=@"loc,{#10000},1,13,1,13" +locations_default(#20015,#10000,1,13,1,13) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,4,#20001,4,"'test.x'") +#20017=@"loc,{#10000},1,14,1,21" +locations_default(#20017,#10000,1,14,1,21) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,5,")") +#20019=@"loc,{#10000},1,22,1,22" +locations_default(#20019,#10000,1,22,1,22) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,6,";") +#20021=@"loc,{#10000},1,23,1,23" +locations_default(#20021,#10000,1,23,1,23) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,6,#20001,7,"test") +#20023=@"loc,{#10000},3,1,3,4" +locations_default(#20023,#10000,3,1,3,4) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,8,".") +#20025=@"loc,{#10000},3,5,3,5" +locations_default(#20025,#10000,3,5,3,5) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,6,#20001,9,"x") +#20027=@"loc,{#10000},3,6,3,6" +locations_default(#20027,#10000,3,6,3,6) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,10,"=") +#20029=@"loc,{#10000},3,8,3,8" +locations_default(#20029,#10000,3,8,3,8) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,3,#20001,11,"5") +#20031=@"loc,{#10000},3,10,3,10" +locations_default(#20031,#10000,3,10,3,10) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,12,";") +#20033=@"loc,{#10000},3,11,3,11" +locations_default(#20033,#10000,3,11,3,11) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,0,#20001,13,"") +#20035=@"loc,{#10000},4,1,4,0" +locations_default(#20035,#10000,4,1,4,0) +hasLocation(#20034,#20035) +toplevels(#20001,0) +#20036=@"loc,{#10000},1,1,4,0" +locations_default(#20036,#10000,1,1,4,0) +hasLocation(#20001,#20036) +#20037=* +stmts(#20037,2,#20001,0,"goog.pr ... st.x');") +hasLocation(#20037,#20003) +stmtContainers(#20037,#20001) +#20038=* +exprs(#20038,13,#20037,0,"goog.pr ... est.x')") +#20039=@"loc,{#10000},1,1,1,22" +locations_default(#20039,#10000,1,1,1,22) +hasLocation(#20038,#20039) +enclosingStmt(#20038,#20037) +exprContainers(#20038,#20001) +#20040=* +exprs(#20040,14,#20038,-1,"goog.provide") +#20041=@"loc,{#10000},1,1,1,12" +locations_default(#20041,#10000,1,1,1,12) +hasLocation(#20040,#20041) +enclosingStmt(#20040,#20037) +exprContainers(#20040,#20001) +#20042=* +exprs(#20042,79,#20040,0,"goog") +hasLocation(#20042,#20009) +enclosingStmt(#20042,#20037) +exprContainers(#20042,#20001) +literals("goog","goog",#20042) +#20043=@"var;{goog};{#20000}" +variables(#20043,"goog",#20000) +bind(#20042,#20043) +#20044=* +exprs(#20044,0,#20040,1,"provide") +hasLocation(#20044,#20013) +enclosingStmt(#20044,#20037) +exprContainers(#20044,#20001) +literals("provide","provide",#20044) +#20045=* +exprs(#20045,4,#20038,0,"'test.x'") +hasLocation(#20045,#20017) +enclosingStmt(#20045,#20037) +exprContainers(#20045,#20001) +literals("test.x","'test.x'",#20045) +#20046=* +stmts(#20046,2,#20001,1,"test.x = 5;") +hasLocation(#20046,#20007) +stmtContainers(#20046,#20001) +#20047=* +exprs(#20047,47,#20046,0,"test.x = 5") +#20048=@"loc,{#10000},3,1,3,10" +locations_default(#20048,#10000,3,1,3,10) +hasLocation(#20047,#20048) +enclosingStmt(#20047,#20046) +exprContainers(#20047,#20001) +#20049=* +exprs(#20049,14,#20047,0,"test.x") +#20050=@"loc,{#10000},3,1,3,6" +locations_default(#20050,#10000,3,1,3,6) +hasLocation(#20049,#20050) +enclosingStmt(#20049,#20046) +exprContainers(#20049,#20001) +#20051=* +exprs(#20051,79,#20049,0,"test") +hasLocation(#20051,#20023) +enclosingStmt(#20051,#20046) +exprContainers(#20051,#20001) +literals("test","test",#20051) +#20052=@"var;{test};{#20000}" +variables(#20052,"test",#20000) +bind(#20051,#20052) +#20053=* +exprs(#20053,0,#20049,1,"x") +hasLocation(#20053,#20027) +enclosingStmt(#20053,#20046) +exprContainers(#20053,#20001) +literals("x","x",#20053) +#20054=* +exprs(#20054,3,#20047,1,"5") +hasLocation(#20054,#20031) +enclosingStmt(#20054,#20046) +exprContainers(#20054,#20001) +literals("5","5",#20054) +#20055=* +entry_cfg_node(#20055,#20001) +#20056=@"loc,{#10000},1,1,1,0" +locations_default(#20056,#10000,1,1,1,0) +hasLocation(#20055,#20056) +#20057=* +exit_cfg_node(#20057,#20001) +hasLocation(#20057,#20035) +successor(#20046,#20051) +successor(#20054,#20047) +successor(#20053,#20049) +successor(#20051,#20053) +successor(#20049,#20054) +successor(#20047,#20057) +successor(#20037,#20042) +successor(#20045,#20038) +successor(#20044,#20040) +successor(#20042,#20044) +successor(#20040,#20045) +successor(#20038,#20046) +successor(#20055,#20037) +numlines(#10000,3,2,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/comments/output/trap/comments.js.trap b/javascript/extractor/tests/comments/output/trap/comments.js.trap index 46de25e43c9..279e1aaba17 100644 --- a/javascript/extractor/tests/comments/output/trap/comments.js.trap +++ b/javascript/extractor/tests/comments/output/trap/comments.js.trap @@ -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"," 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"," 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," 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") diff --git a/javascript/extractor/tests/comments/output/trap/empty_comment.js.trap b/javascript/extractor/tests/comments/output/trap/empty_comment.js.trap index 7324758d274..b90f89ab061 100644 --- a/javascript/extractor/tests/comments/output/trap/empty_comment.js.trap +++ b/javascript/extractor/tests/comments/output/trap/empty_comment.js.trap @@ -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") diff --git a/javascript/extractor/tests/comments/output/trap/jsdoc.js.trap b/javascript/extractor/tests/comments/output/trap/jsdoc.js.trap index 7d0e6318fee..e13827b8f51 100644 --- a/javascript/extractor/tests/comments/output/trap/jsdoc.js.trap +++ b/javascript/extractor/tests/comments/output/trap/jsdoc.js.trap @@ -9,579 +9,579 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,43,0" -locations_default(#20002,#10000,1,1,43,0) -hasLocation(#20001,#20002) -#20003=* -comments(#20003,2,#20001," +#20002=* +comments(#20002,2,#20001," * This is a constant. * * @const x ","/**\n * ... t x\n */") -#20004=@"loc,{#10000},1,1,5,3" -locations_default(#20004,#10000,1,1,5,3) -hasLocation(#20003,#20004) -#20005=* -comments(#20005,2,#20001," @class {Object} klass ","/** @cl ... lass */") -#20006=@"loc,{#10000},6,1,6,28" -locations_default(#20006,#10000,6,1,6,28) -hasLocation(#20005,#20006) -#20007=* -comments(#20007,2,#20001," @deprecated ","/** @deprecated */") -#20008=@"loc,{#10000},7,1,7,18" -locations_default(#20008,#10000,7,1,7,18) -hasLocation(#20007,#20008) -#20009=* -comments(#20009,2,#20001," @param {(int|bool)} x +#20003=@"loc,{#10000},1,1,5,3" +locations_default(#20003,#10000,1,1,5,3) +hasLocation(#20002,#20003) +#20004=* +comments(#20004,2,#20001," @class {Object} klass ","/** @cl ... lass */") +#20005=@"loc,{#10000},6,1,6,28" +locations_default(#20005,#10000,6,1,6,28) +hasLocation(#20004,#20005) +#20006=* +comments(#20006,2,#20001," @deprecated ","/** @deprecated */") +#20007=@"loc,{#10000},7,1,7,18" +locations_default(#20007,#10000,7,1,7,18) +hasLocation(#20006,#20007) +#20008=* +comments(#20008,2,#20001," @param {(int|bool)} x * @param {Array.} ys * @param {String[]} zs * @param {function(new:goog.ui.Menu, ?string=, number=): void} f * @param {...number} var_args ","/** @pa ... rgs\n */") -#20010=@"loc,{#10000},8,1,13,3" -locations_default(#20010,#10000,8,1,13,3) -hasLocation(#20009,#20010) -#20011=* -comments(#20011,2,#20001," +#20009=@"loc,{#10000},8,1,13,3" +locations_default(#20009,#10000,8,1,13,3) +hasLocation(#20008,#20009) +#20010=* +comments(#20010,2,#20001," * @param {Function(DOMNode)} * @param {Function(DOMNode)} x ","/**\n * ... } x\n */") -#20012=@"loc,{#10000},14,1,17,3" -locations_default(#20012,#10000,14,1,17,3) -hasLocation(#20011,#20012) -#20013=* -comments(#20013,2,#20001," +#20011=@"loc,{#10000},14,1,17,3" +locations_default(#20011,#10000,14,1,17,3) +hasLocation(#20010,#20011) +#20012=* +comments(#20012,2,#20001," * @{link a} ","/**\n * @{link a}\n */") -#20014=@"loc,{#10000},19,1,21,3" -locations_default(#20014,#10000,19,1,21,3) -hasLocation(#20013,#20014) -#20015=* -comments(#20015,2,#20001," +#20013=@"loc,{#10000},19,1,21,3" +locations_default(#20013,#10000,19,1,21,3) +hasLocation(#20012,#20013) +#20014=* +comments(#20014,2,#20001," * @typedef * {a} ","/**\n * ... {a}\n */") -#20016=@"loc,{#10000},23,1,26,3" -locations_default(#20016,#10000,23,1,26,3) -hasLocation(#20015,#20016) -#20017=* -comments(#20017,2,#20001," +#20015=@"loc,{#10000},23,1,26,3" +locations_default(#20015,#10000,23,1,26,3) +hasLocation(#20014,#20015) +#20016=* +comments(#20016,2,#20001," * [resize description] * @param {[type]} w [description] * @param { } h [description] * @return {[type]} [description] ","/**\n * ... on]\n */") -#20018=@"loc,{#10000},28,1,33,3" -locations_default(#20018,#10000,28,1,33,3) -hasLocation(#20017,#20018) -#20019=* -comments(#20019,2,#20001," +#20017=@"loc,{#10000},28,1,33,3" +locations_default(#20017,#10000,28,1,33,3) +hasLocation(#20016,#20017) +#20018=* +comments(#20018,2,#20001," * @exports R * ","/**\n* @ ... R\n*\n*/") -#20020=@"loc,{#10000},35,1,38,2" -locations_default(#20020,#10000,35,1,38,2) -hasLocation(#20019,#20020) -#20021=* -comments(#20021,2,#20001," +#20019=@"loc,{#10000},35,1,38,2" +locations_default(#20019,#10000,35,1,38,2) +hasLocation(#20018,#20019) +#20020=* +comments(#20020,2,#20001," * @typedef {{0: number}} ","/**\n * ... r}}\n */") -#20022=@"loc,{#10000},40,1,42,3" -locations_default(#20022,#10000,40,1,42,3) -hasLocation(#20021,#20022) -#20023=* -lines(#20023,#20001,"/**"," +#20021=@"loc,{#10000},40,1,42,3" +locations_default(#20021,#10000,40,1,42,3) +hasLocation(#20020,#20021) +#20022=* +lines(#20022,#20001,"/**"," ") -#20024=@"loc,{#10000},1,1,1,3" -locations_default(#20024,#10000,1,1,1,3) -hasLocation(#20023,#20024) -#20025=* -lines(#20025,#20001," * This is a constant."," +#20023=@"loc,{#10000},1,1,1,3" +locations_default(#20023,#10000,1,1,1,3) +hasLocation(#20022,#20023) +#20024=* +lines(#20024,#20001," * This is a constant."," ") -#20026=@"loc,{#10000},2,1,2,22" -locations_default(#20026,#10000,2,1,2,22) -hasLocation(#20025,#20026) +#20025=@"loc,{#10000},2,1,2,22" +locations_default(#20025,#10000,2,1,2,22) +hasLocation(#20024,#20025) indentation(#10000,2," ",1) -#20027=* -lines(#20027,#20001," * "," +#20026=* +lines(#20026,#20001," * "," ") -#20028=@"loc,{#10000},3,1,3,3" -locations_default(#20028,#10000,3,1,3,3) -hasLocation(#20027,#20028) +#20027=@"loc,{#10000},3,1,3,3" +locations_default(#20027,#10000,3,1,3,3) +hasLocation(#20026,#20027) indentation(#10000,3," ",1) -#20029=* -lines(#20029,#20001," * @const x"," +#20028=* +lines(#20028,#20001," * @const x"," ") -#20030=@"loc,{#10000},4,1,4,11" -locations_default(#20030,#10000,4,1,4,11) -hasLocation(#20029,#20030) +#20029=@"loc,{#10000},4,1,4,11" +locations_default(#20029,#10000,4,1,4,11) +hasLocation(#20028,#20029) indentation(#10000,4," ",1) -#20031=* -lines(#20031,#20001," */"," +#20030=* +lines(#20030,#20001," */"," ") -#20032=@"loc,{#10000},5,1,5,3" -locations_default(#20032,#10000,5,1,5,3) -hasLocation(#20031,#20032) +#20031=@"loc,{#10000},5,1,5,3" +locations_default(#20031,#10000,5,1,5,3) +hasLocation(#20030,#20031) indentation(#10000,5," ",1) +#20032=* +lines(#20032,#20001,"/** @class {Object} klass */"," +") +hasLocation(#20032,#20005) #20033=* -lines(#20033,#20001,"/** @class {Object} klass */"," +lines(#20033,#20001,"/** @deprecated */"," ") -hasLocation(#20033,#20006) +hasLocation(#20033,#20007) #20034=* -lines(#20034,#20001,"/** @deprecated */"," +lines(#20034,#20001,"/** @param {(int|bool)} x"," ") -hasLocation(#20034,#20008) -#20035=* -lines(#20035,#20001,"/** @param {(int|bool)} x"," +#20035=@"loc,{#10000},8,1,8,25" +locations_default(#20035,#10000,8,1,8,25) +hasLocation(#20034,#20035) +#20036=* +lines(#20036,#20001," * @param {Array.} ys"," ") -#20036=@"loc,{#10000},8,1,8,25" -locations_default(#20036,#10000,8,1,8,25) -hasLocation(#20035,#20036) -#20037=* -lines(#20037,#20001," * @param {Array.} ys"," -") -#20038=@"loc,{#10000},9,1,9,38" -locations_default(#20038,#10000,9,1,9,38) -hasLocation(#20037,#20038) +#20037=@"loc,{#10000},9,1,9,38" +locations_default(#20037,#10000,9,1,9,38) +hasLocation(#20036,#20037) indentation(#10000,9," ",1) -#20039=* -lines(#20039,#20001," * @param {String[]} zs"," +#20038=* +lines(#20038,#20001," * @param {String[]} zs"," ") -#20040=@"loc,{#10000},10,1,10,24" -locations_default(#20040,#10000,10,1,10,24) -hasLocation(#20039,#20040) +#20039=@"loc,{#10000},10,1,10,24" +locations_default(#20039,#10000,10,1,10,24) +hasLocation(#20038,#20039) indentation(#10000,10," ",1) -#20041=* -lines(#20041,#20001," * @param {function(new:goog.ui.Menu, ?string=, number=): void} f"," +#20040=* +lines(#20040,#20001," * @param {function(new:goog.ui.Menu, ?string=, number=): void} f"," ") -#20042=@"loc,{#10000},11,1,11,66" -locations_default(#20042,#10000,11,1,11,66) -hasLocation(#20041,#20042) +#20041=@"loc,{#10000},11,1,11,66" +locations_default(#20041,#10000,11,1,11,66) +hasLocation(#20040,#20041) indentation(#10000,11," ",1) -#20043=* -lines(#20043,#20001," * @param {...number} var_args"," +#20042=* +lines(#20042,#20001," * @param {...number} var_args"," ") -#20044=@"loc,{#10000},12,1,12,31" -locations_default(#20044,#10000,12,1,12,31) -hasLocation(#20043,#20044) +#20043=@"loc,{#10000},12,1,12,31" +locations_default(#20043,#10000,12,1,12,31) +hasLocation(#20042,#20043) indentation(#10000,12," ",1) -#20045=* -lines(#20045,#20001," */"," +#20044=* +lines(#20044,#20001," */"," ") -#20046=@"loc,{#10000},13,1,13,3" -locations_default(#20046,#10000,13,1,13,3) -hasLocation(#20045,#20046) +#20045=@"loc,{#10000},13,1,13,3" +locations_default(#20045,#10000,13,1,13,3) +hasLocation(#20044,#20045) indentation(#10000,13," ",1) -#20047=* -lines(#20047,#20001,"/**"," +#20046=* +lines(#20046,#20001,"/**"," ") -#20048=@"loc,{#10000},14,1,14,3" -locations_default(#20048,#10000,14,1,14,3) -hasLocation(#20047,#20048) -#20049=* -lines(#20049,#20001," * @param {Function(DOMNode)}"," +#20047=@"loc,{#10000},14,1,14,3" +locations_default(#20047,#10000,14,1,14,3) +hasLocation(#20046,#20047) +#20048=* +lines(#20048,#20001," * @param {Function(DOMNode)}"," ") -#20050=@"loc,{#10000},15,1,15,29" -locations_default(#20050,#10000,15,1,15,29) -hasLocation(#20049,#20050) +#20049=@"loc,{#10000},15,1,15,29" +locations_default(#20049,#10000,15,1,15,29) +hasLocation(#20048,#20049) indentation(#10000,15," ",1) -#20051=* -lines(#20051,#20001," * @param {Function(DOMNode)} x"," +#20050=* +lines(#20050,#20001," * @param {Function(DOMNode)} x"," ") -#20052=@"loc,{#10000},16,1,16,31" -locations_default(#20052,#10000,16,1,16,31) -hasLocation(#20051,#20052) +#20051=@"loc,{#10000},16,1,16,31" +locations_default(#20051,#10000,16,1,16,31) +hasLocation(#20050,#20051) indentation(#10000,16," ",1) -#20053=* -lines(#20053,#20001," */"," +#20052=* +lines(#20052,#20001," */"," ") -#20054=@"loc,{#10000},17,1,17,3" -locations_default(#20054,#10000,17,1,17,3) -hasLocation(#20053,#20054) +#20053=@"loc,{#10000},17,1,17,3" +locations_default(#20053,#10000,17,1,17,3) +hasLocation(#20052,#20053) indentation(#10000,17," ",1) -#20055=* -lines(#20055,#20001,""," +#20054=* +lines(#20054,#20001,""," ") -#20056=@"loc,{#10000},18,1,18,0" -locations_default(#20056,#10000,18,1,18,0) -hasLocation(#20055,#20056) -#20057=* -lines(#20057,#20001,"/**"," +#20055=@"loc,{#10000},18,1,18,0" +locations_default(#20055,#10000,18,1,18,0) +hasLocation(#20054,#20055) +#20056=* +lines(#20056,#20001,"/**"," ") -#20058=@"loc,{#10000},19,1,19,3" -locations_default(#20058,#10000,19,1,19,3) -hasLocation(#20057,#20058) -#20059=* -lines(#20059,#20001," * @{link a}"," +#20057=@"loc,{#10000},19,1,19,3" +locations_default(#20057,#10000,19,1,19,3) +hasLocation(#20056,#20057) +#20058=* +lines(#20058,#20001," * @{link a}"," ") -#20060=@"loc,{#10000},20,1,20,12" -locations_default(#20060,#10000,20,1,20,12) -hasLocation(#20059,#20060) +#20059=@"loc,{#10000},20,1,20,12" +locations_default(#20059,#10000,20,1,20,12) +hasLocation(#20058,#20059) indentation(#10000,20," ",1) -#20061=* -lines(#20061,#20001," */"," +#20060=* +lines(#20060,#20001," */"," ") -#20062=@"loc,{#10000},21,1,21,3" -locations_default(#20062,#10000,21,1,21,3) -hasLocation(#20061,#20062) +#20061=@"loc,{#10000},21,1,21,3" +locations_default(#20061,#10000,21,1,21,3) +hasLocation(#20060,#20061) indentation(#10000,21," ",1) -#20063=* -lines(#20063,#20001,""," +#20062=* +lines(#20062,#20001,""," ") -#20064=@"loc,{#10000},22,1,22,0" -locations_default(#20064,#10000,22,1,22,0) -hasLocation(#20063,#20064) -#20065=* -lines(#20065,#20001,"/**"," +#20063=@"loc,{#10000},22,1,22,0" +locations_default(#20063,#10000,22,1,22,0) +hasLocation(#20062,#20063) +#20064=* +lines(#20064,#20001,"/**"," ") -#20066=@"loc,{#10000},23,1,23,3" -locations_default(#20066,#10000,23,1,23,3) -hasLocation(#20065,#20066) -#20067=* -lines(#20067,#20001," * @typedef"," +#20065=@"loc,{#10000},23,1,23,3" +locations_default(#20065,#10000,23,1,23,3) +hasLocation(#20064,#20065) +#20066=* +lines(#20066,#20001," * @typedef"," ") -#20068=@"loc,{#10000},24,1,24,11" -locations_default(#20068,#10000,24,1,24,11) -hasLocation(#20067,#20068) +#20067=@"loc,{#10000},24,1,24,11" +locations_default(#20067,#10000,24,1,24,11) +hasLocation(#20066,#20067) indentation(#10000,24," ",1) -#20069=* -lines(#20069,#20001," * {a}"," +#20068=* +lines(#20068,#20001," * {a}"," ") -#20070=@"loc,{#10000},25,1,25,6" -locations_default(#20070,#10000,25,1,25,6) -hasLocation(#20069,#20070) +#20069=@"loc,{#10000},25,1,25,6" +locations_default(#20069,#10000,25,1,25,6) +hasLocation(#20068,#20069) indentation(#10000,25," ",1) -#20071=* -lines(#20071,#20001," */"," +#20070=* +lines(#20070,#20001," */"," ") -#20072=@"loc,{#10000},26,1,26,3" -locations_default(#20072,#10000,26,1,26,3) -hasLocation(#20071,#20072) +#20071=@"loc,{#10000},26,1,26,3" +locations_default(#20071,#10000,26,1,26,3) +hasLocation(#20070,#20071) indentation(#10000,26," ",1) -#20073=* -lines(#20073,#20001,""," +#20072=* +lines(#20072,#20001,""," ") -#20074=@"loc,{#10000},27,1,27,0" -locations_default(#20074,#10000,27,1,27,0) -hasLocation(#20073,#20074) -#20075=* -lines(#20075,#20001,"/**"," +#20073=@"loc,{#10000},27,1,27,0" +locations_default(#20073,#10000,27,1,27,0) +hasLocation(#20072,#20073) +#20074=* +lines(#20074,#20001,"/**"," ") -#20076=@"loc,{#10000},28,1,28,3" -locations_default(#20076,#10000,28,1,28,3) -hasLocation(#20075,#20076) -#20077=* -lines(#20077,#20001," * [resize description]"," +#20075=@"loc,{#10000},28,1,28,3" +locations_default(#20075,#10000,28,1,28,3) +hasLocation(#20074,#20075) +#20076=* +lines(#20076,#20001," * [resize description]"," ") -#20078=@"loc,{#10000},29,1,29,23" -locations_default(#20078,#10000,29,1,29,23) -hasLocation(#20077,#20078) +#20077=@"loc,{#10000},29,1,29,23" +locations_default(#20077,#10000,29,1,29,23) +hasLocation(#20076,#20077) indentation(#10000,29," ",1) -#20079=* -lines(#20079,#20001," * @param {[type]} w [description]"," +#20078=* +lines(#20078,#20001," * @param {[type]} w [description]"," ") -#20080=@"loc,{#10000},30,1,30,35" -locations_default(#20080,#10000,30,1,30,35) -hasLocation(#20079,#20080) +#20079=@"loc,{#10000},30,1,30,35" +locations_default(#20079,#10000,30,1,30,35) +hasLocation(#20078,#20079) indentation(#10000,30," ",1) -#20081=* -lines(#20081,#20001," * @param { } h [description]"," +#20080=* +lines(#20080,#20001," * @param { } h [description]"," ") -#20082=@"loc,{#10000},31,1,31,31" -locations_default(#20082,#10000,31,1,31,31) -hasLocation(#20081,#20082) +#20081=@"loc,{#10000},31,1,31,31" +locations_default(#20081,#10000,31,1,31,31) +hasLocation(#20080,#20081) indentation(#10000,31," ",1) -#20083=* -lines(#20083,#20001," * @return {[type]} [description]"," +#20082=* +lines(#20082,#20001," * @return {[type]} [description]"," ") -#20084=@"loc,{#10000},32,1,32,35" -locations_default(#20084,#10000,32,1,32,35) -hasLocation(#20083,#20084) +#20083=@"loc,{#10000},32,1,32,35" +locations_default(#20083,#10000,32,1,32,35) +hasLocation(#20082,#20083) indentation(#10000,32," ",1) -#20085=* -lines(#20085,#20001," */"," +#20084=* +lines(#20084,#20001," */"," ") -#20086=@"loc,{#10000},33,1,33,3" -locations_default(#20086,#10000,33,1,33,3) -hasLocation(#20085,#20086) +#20085=@"loc,{#10000},33,1,33,3" +locations_default(#20085,#10000,33,1,33,3) +hasLocation(#20084,#20085) indentation(#10000,33," ",1) -#20087=* -lines(#20087,#20001,""," +#20086=* +lines(#20086,#20001,""," ") -#20088=@"loc,{#10000},34,1,34,0" -locations_default(#20088,#10000,34,1,34,0) -hasLocation(#20087,#20088) -#20089=* -lines(#20089,#20001,"/**"," +#20087=@"loc,{#10000},34,1,34,0" +locations_default(#20087,#10000,34,1,34,0) +hasLocation(#20086,#20087) +#20088=* +lines(#20088,#20001,"/**"," ") -#20090=@"loc,{#10000},35,1,35,3" -locations_default(#20090,#10000,35,1,35,3) -hasLocation(#20089,#20090) -#20091=* -lines(#20091,#20001,"* @exports R"," +#20089=@"loc,{#10000},35,1,35,3" +locations_default(#20089,#10000,35,1,35,3) +hasLocation(#20088,#20089) +#20090=* +lines(#20090,#20001,"* @exports R"," ") -#20092=@"loc,{#10000},36,1,36,12" -locations_default(#20092,#10000,36,1,36,12) -hasLocation(#20091,#20092) -#20093=* -lines(#20093,#20001,"*"," +#20091=@"loc,{#10000},36,1,36,12" +locations_default(#20091,#10000,36,1,36,12) +hasLocation(#20090,#20091) +#20092=* +lines(#20092,#20001,"*"," ") -#20094=@"loc,{#10000},37,1,37,1" -locations_default(#20094,#10000,37,1,37,1) -hasLocation(#20093,#20094) -#20095=* -lines(#20095,#20001,"*/"," +#20093=@"loc,{#10000},37,1,37,1" +locations_default(#20093,#10000,37,1,37,1) +hasLocation(#20092,#20093) +#20094=* +lines(#20094,#20001,"*/"," ") -#20096=@"loc,{#10000},38,1,38,2" -locations_default(#20096,#10000,38,1,38,2) -hasLocation(#20095,#20096) -#20097=* -lines(#20097,#20001,""," +#20095=@"loc,{#10000},38,1,38,2" +locations_default(#20095,#10000,38,1,38,2) +hasLocation(#20094,#20095) +#20096=* +lines(#20096,#20001,""," ") -#20098=@"loc,{#10000},39,1,39,0" -locations_default(#20098,#10000,39,1,39,0) -hasLocation(#20097,#20098) -#20099=* -lines(#20099,#20001,"/**"," +#20097=@"loc,{#10000},39,1,39,0" +locations_default(#20097,#10000,39,1,39,0) +hasLocation(#20096,#20097) +#20098=* +lines(#20098,#20001,"/**"," ") -#20100=@"loc,{#10000},40,1,40,3" -locations_default(#20100,#10000,40,1,40,3) -hasLocation(#20099,#20100) -#20101=* -lines(#20101,#20001," * @typedef {{0: number}}"," +#20099=@"loc,{#10000},40,1,40,3" +locations_default(#20099,#10000,40,1,40,3) +hasLocation(#20098,#20099) +#20100=* +lines(#20100,#20001," * @typedef {{0: number}}"," ") -#20102=@"loc,{#10000},41,1,41,25" -locations_default(#20102,#10000,41,1,41,25) -hasLocation(#20101,#20102) +#20101=@"loc,{#10000},41,1,41,25" +locations_default(#20101,#10000,41,1,41,25) +hasLocation(#20100,#20101) indentation(#10000,41," ",1) -#20103=* -lines(#20103,#20001," */"," +#20102=* +lines(#20102,#20001," */"," ") -#20104=@"loc,{#10000},42,1,42,3" -locations_default(#20104,#10000,42,1,42,3) -hasLocation(#20103,#20104) +#20103=@"loc,{#10000},42,1,42,3" +locations_default(#20103,#10000,42,1,42,3) +hasLocation(#20102,#20103) indentation(#10000,42," ",1) numlines(#20001,42,0,37) -#20105=* -tokeninfo(#20105,0,#20001,0,"") -#20106=@"loc,{#10000},43,1,43,0" -locations_default(#20106,#10000,43,1,43,0) -hasLocation(#20105,#20106) -next_token(#20003,#20105) -next_token(#20005,#20105) -next_token(#20007,#20105) -next_token(#20009,#20105) -next_token(#20011,#20105) -next_token(#20013,#20105) -next_token(#20015,#20105) -next_token(#20017,#20105) -next_token(#20019,#20105) -next_token(#20021,#20105) +#20104=* +tokeninfo(#20104,0,#20001,0,"") +#20105=@"loc,{#10000},43,1,43,0" +locations_default(#20105,#10000,43,1,43,0) +hasLocation(#20104,#20105) +next_token(#20002,#20104) +next_token(#20004,#20104) +next_token(#20006,#20104) +next_token(#20008,#20104) +next_token(#20010,#20104) +next_token(#20012,#20104) +next_token(#20014,#20104) +next_token(#20016,#20104) +next_token(#20018,#20104) +next_token(#20020,#20104) +#20106=* +jsdoc(#20106,"This is a constant.",#20002) +hasLocation(#20106,#20003) #20107=* -entry_cfg_node(#20107,#20001) -#20108=@"loc,{#10000},1,1,1,0" -locations_default(#20108,#10000,1,1,1,0) +jsdoc_tags(#20107,"const",#20106,0,"@const") +#20108=@"loc,{#10000},4,4,4,9" +locations_default(#20108,#10000,4,4,4,9) hasLocation(#20107,#20108) +jsdoc_tag_names(#20107,"x") #20109=* -exit_cfg_node(#20109,#20001) -hasLocation(#20109,#20106) -successor(#20107,#20109) +jsdoc(#20109,"",#20004) +hasLocation(#20109,#20005) #20110=* -jsdoc(#20110,"This is a constant.",#20003) -hasLocation(#20110,#20004) -#20111=* -jsdoc_tags(#20111,"const",#20110,0,"@const") -#20112=@"loc,{#10000},4,4,4,9" -locations_default(#20112,#10000,4,4,4,9) -hasLocation(#20111,#20112) -jsdoc_tag_names(#20111,"x") +jsdoc_tags(#20110,"class",#20109,0,"@class") +#20111=@"loc,{#10000},6,5,6,10" +locations_default(#20111,#10000,6,5,6,10) +hasLocation(#20110,#20111) +jsdoc_tag_names(#20110,"klass") +#20112=* +jsdoc_type_exprs(#20112,5,#20110,0,"Object") #20113=* -jsdoc(#20113,"",#20005) -hasLocation(#20113,#20006) +jsdoc(#20113,"",#20006) +hasLocation(#20113,#20007) #20114=* -jsdoc_tags(#20114,"class",#20113,0,"@class") -#20115=@"loc,{#10000},6,5,6,10" -locations_default(#20115,#10000,6,5,6,10) +jsdoc_tags(#20114,"deprecated",#20113,0,"@deprecated") +#20115=@"loc,{#10000},7,5,7,15" +locations_default(#20115,#10000,7,5,7,15) hasLocation(#20114,#20115) -jsdoc_tag_names(#20114,"klass") #20116=* -jsdoc_type_exprs(#20116,5,#20114,0,"Object") +jsdoc(#20116,"",#20008) +hasLocation(#20116,#20009) #20117=* -jsdoc(#20117,"",#20007) -hasLocation(#20117,#20008) -#20118=* -jsdoc_tags(#20118,"deprecated",#20117,0,"@deprecated") -#20119=@"loc,{#10000},7,5,7,15" -locations_default(#20119,#10000,7,5,7,15) -hasLocation(#20118,#20119) +jsdoc_tags(#20117,"param",#20116,0,"@param") +#20118=@"loc,{#10000},8,5,8,10" +locations_default(#20118,#10000,8,5,8,10) +hasLocation(#20117,#20118) +jsdoc_tag_names(#20117,"x") +#20119=* +jsdoc_type_exprs(#20119,11,#20117,0,"(int|bool)") #20120=* -jsdoc(#20120,"",#20009) -hasLocation(#20120,#20010) +jsdoc_type_exprs(#20120,5,#20119,0,"int") #20121=* -jsdoc_tags(#20121,"param",#20120,0,"@param") -#20122=@"loc,{#10000},8,5,8,10" -locations_default(#20122,#10000,8,5,8,10) -hasLocation(#20121,#20122) -jsdoc_tag_names(#20121,"x") -#20123=* -jsdoc_type_exprs(#20123,11,#20121,0,"(int|bool)") +jsdoc_type_exprs(#20121,5,#20119,1,"bool") +#20122=* +jsdoc_tags(#20122,"param",#20116,1,"@param") +#20123=@"loc,{#10000},9,5,9,10" +locations_default(#20123,#10000,9,5,9,10) +hasLocation(#20122,#20123) +jsdoc_tag_names(#20122,"ys") #20124=* -jsdoc_type_exprs(#20124,5,#20123,0,"int") +jsdoc_type_exprs(#20124,6,#20122,0,"Array.") #20125=* -jsdoc_type_exprs(#20125,5,#20123,1,"bool") +jsdoc_type_exprs(#20125,5,#20124,-1,"Array") #20126=* -jsdoc_tags(#20126,"param",#20120,1,"@param") -#20127=@"loc,{#10000},9,5,9,10" -locations_default(#20127,#10000,9,5,9,10) -hasLocation(#20126,#20127) -jsdoc_tag_names(#20126,"ys") +jsdoc_type_exprs(#20126,5,#20124,0,"String") +#20127=* +jsdoc_type_exprs(#20127,5,#20124,1,"Number") #20128=* -jsdoc_type_exprs(#20128,6,#20126,0,"Array.") -#20129=* -jsdoc_type_exprs(#20129,5,#20128,-1,"Array") +jsdoc_tags(#20128,"param",#20116,2,"@param") +#20129=@"loc,{#10000},10,5,10,10" +locations_default(#20129,#10000,10,5,10,10) +hasLocation(#20128,#20129) +jsdoc_tag_names(#20128,"zs") #20130=* -jsdoc_type_exprs(#20130,5,#20128,0,"String") +jsdoc_type_exprs(#20130,6,#20128,0,"Array.") #20131=* -jsdoc_type_exprs(#20131,5,#20128,1,"Number") +jsdoc_type_exprs(#20131,5,#20130,-1,"Array") #20132=* -jsdoc_tags(#20132,"param",#20120,2,"@param") -#20133=@"loc,{#10000},10,5,10,10" -locations_default(#20133,#10000,10,5,10,10) -hasLocation(#20132,#20133) -jsdoc_tag_names(#20132,"zs") -#20134=* -jsdoc_type_exprs(#20134,6,#20132,0,"Array.") +jsdoc_type_exprs(#20132,5,#20130,0,"String") +#20133=* +jsdoc_tags(#20133,"param",#20116,3,"@param") +#20134=@"loc,{#10000},11,5,11,10" +locations_default(#20134,#10000,11,5,11,10) +hasLocation(#20133,#20134) +jsdoc_tag_names(#20133,"f") #20135=* -jsdoc_type_exprs(#20135,5,#20134,-1,"Array") +jsdoc_type_exprs(#20135,12,#20133,0,"function (new: goog.ui.Menu, ?string=, number=): void") #20136=* -jsdoc_type_exprs(#20136,5,#20134,0,"String") +jsdoc_type_exprs(#20136,13,#20135,0,"?string=") #20137=* -jsdoc_tags(#20137,"param",#20120,3,"@param") -#20138=@"loc,{#10000},11,5,11,10" -locations_default(#20138,#10000,11,5,11,10) -hasLocation(#20137,#20138) -jsdoc_tag_names(#20137,"f") +jsdoc_type_exprs(#20137,7,#20136,0,"?string") +#20138=* +jsdoc_type_exprs(#20138,5,#20137,0,"string") +jsdoc_prefix_qualifier(#20137) #20139=* -jsdoc_type_exprs(#20139,12,#20137,0,"function (new: goog.ui.Menu, ?string=, number=): void") +jsdoc_type_exprs(#20139,13,#20135,1,"number=") #20140=* -jsdoc_type_exprs(#20140,13,#20139,0,"?string=") +jsdoc_type_exprs(#20140,5,#20139,0,"number") #20141=* -jsdoc_type_exprs(#20141,7,#20140,0,"?string") +jsdoc_type_exprs(#20141,4,#20135,-1,"void") #20142=* -jsdoc_type_exprs(#20142,5,#20141,0,"string") -jsdoc_prefix_qualifier(#20141) +jsdoc_type_exprs(#20142,5,#20135,-2,"goog.ui.Menu") +jsdoc_has_new_parameter(#20135) #20143=* -jsdoc_type_exprs(#20143,13,#20139,1,"number=") -#20144=* -jsdoc_type_exprs(#20144,5,#20143,0,"number") +jsdoc_tags(#20143,"param",#20116,4,"@param") +#20144=@"loc,{#10000},12,5,12,10" +locations_default(#20144,#10000,12,5,12,10) +hasLocation(#20143,#20144) +jsdoc_tag_names(#20143,"var_args") #20145=* -jsdoc_type_exprs(#20145,4,#20139,-1,"void") +jsdoc_type_exprs(#20145,14,#20143,0,"...number") #20146=* -jsdoc_type_exprs(#20146,5,#20139,-2,"goog.ui.Menu") -jsdoc_has_new_parameter(#20139) +jsdoc_type_exprs(#20146,5,#20145,0,"number") #20147=* -jsdoc_tags(#20147,"param",#20120,4,"@param") -#20148=@"loc,{#10000},12,5,12,10" -locations_default(#20148,#10000,12,5,12,10) -hasLocation(#20147,#20148) -jsdoc_tag_names(#20147,"var_args") -#20149=* -jsdoc_type_exprs(#20149,14,#20147,0,"...number") +jsdoc(#20147,"",#20010) +hasLocation(#20147,#20011) +#20148=* +jsdoc_tags(#20148,"param",#20147,0,"@param") +#20149=@"loc,{#10000},15,4,15,9" +locations_default(#20149,#10000,15,4,15,9) +hasLocation(#20148,#20149) #20150=* -jsdoc_type_exprs(#20150,5,#20149,0,"number") +jsdoc_errors(#20150,#20148,"Missing or invalid tag name","Missing ... ag name") #20151=* -jsdoc(#20151,"",#20011) -hasLocation(#20151,#20012) -#20152=* -jsdoc_tags(#20152,"param",#20151,0,"@param") -#20153=@"loc,{#10000},15,4,15,9" -locations_default(#20153,#10000,15,4,15,9) -hasLocation(#20152,#20153) +jsdoc_tags(#20151,"param",#20147,1,"@param") +#20152=@"loc,{#10000},16,4,16,9" +locations_default(#20152,#10000,16,4,16,9) +hasLocation(#20151,#20152) +jsdoc_tag_names(#20151,"x") +#20153=* +jsdoc(#20153,"",#20012) +hasLocation(#20153,#20013) #20154=* -jsdoc_errors(#20154,#20152,"Missing or invalid tag name","Missing ... ag name") -#20155=* -jsdoc_tags(#20155,"param",#20151,1,"@param") -#20156=@"loc,{#10000},16,4,16,9" -locations_default(#20156,#10000,16,4,16,9) -hasLocation(#20155,#20156) -jsdoc_tag_names(#20155,"x") +jsdoc_tags(#20154,"",#20153,0,"@") +#20155=@"loc,{#10000},20,4,20,4" +locations_default(#20155,#10000,20,4,20,4) +hasLocation(#20154,#20155) +jsdoc_tag_descriptions(#20154,"{link a}") +#20156=* +jsdoc_errors(#20156,#20154,"Missing or invalid title","Missing ... d title") #20157=* -jsdoc(#20157,"",#20013) -hasLocation(#20157,#20014) +jsdoc(#20157,"",#20014) +hasLocation(#20157,#20015) #20158=* -jsdoc_tags(#20158,"",#20157,0,"@") -#20159=@"loc,{#10000},20,4,20,4" -locations_default(#20159,#10000,20,4,20,4) +jsdoc_tags(#20158,"typedef",#20157,0,"@typedef") +#20159=@"loc,{#10000},24,4,24,11" +locations_default(#20159,#10000,24,4,24,11) hasLocation(#20158,#20159) -jsdoc_tag_descriptions(#20158,"{link a}") +jsdoc_tag_descriptions(#20158,"{a}") #20160=* -jsdoc_errors(#20160,#20158,"Missing or invalid title","Missing ... d title") +jsdoc_errors(#20160,#20158,"Missing or invalid tag type","Missing ... ag type") #20161=* -jsdoc(#20161,"",#20015) -hasLocation(#20161,#20016) +jsdoc(#20161,"[resize description]",#20016) +hasLocation(#20161,#20017) #20162=* -jsdoc_tags(#20162,"typedef",#20161,0,"@typedef") -#20163=@"loc,{#10000},24,4,24,11" -locations_default(#20163,#10000,24,4,24,11) +jsdoc_tags(#20162,"param",#20161,0,"@param") +#20163=@"loc,{#10000},30,4,30,9" +locations_default(#20163,#10000,30,4,30,9) hasLocation(#20162,#20163) -jsdoc_tag_descriptions(#20162,"{a}") +jsdoc_tag_descriptions(#20162,"[description] +") +jsdoc_tag_names(#20162,"w") #20164=* -jsdoc_errors(#20164,#20162,"Missing or invalid tag type","Missing ... ag type") +jsdoc_type_exprs(#20164,10,#20162,0,"[type]") #20165=* -jsdoc(#20165,"[resize description]",#20017) -hasLocation(#20165,#20018) +jsdoc_type_exprs(#20165,5,#20164,0,"type") #20166=* -jsdoc_tags(#20166,"param",#20165,0,"@param") -#20167=@"loc,{#10000},30,4,30,9" -locations_default(#20167,#10000,30,4,30,9) +jsdoc_tags(#20166,"param",#20161,1,"@param") +#20167=@"loc,{#10000},31,4,31,9" +locations_default(#20167,#10000,31,4,31,9) hasLocation(#20166,#20167) jsdoc_tag_descriptions(#20166,"[description] ") -jsdoc_tag_names(#20166,"w") #20168=* -jsdoc_type_exprs(#20168,10,#20166,0,"[type]") -#20169=* -jsdoc_type_exprs(#20169,5,#20168,0,"type") +jsdoc_tags(#20168,"return",#20161,2,"@return") +#20169=@"loc,{#10000},32,4,32,10" +locations_default(#20169,#10000,32,4,32,10) +hasLocation(#20168,#20169) +jsdoc_tag_descriptions(#20168,"[description]") #20170=* -jsdoc_tags(#20170,"param",#20165,1,"@param") -#20171=@"loc,{#10000},31,4,31,9" -locations_default(#20171,#10000,31,4,31,9) -hasLocation(#20170,#20171) -jsdoc_tag_descriptions(#20170,"[description] -") +jsdoc_type_exprs(#20170,10,#20168,0,"[type]") +#20171=* +jsdoc_type_exprs(#20171,5,#20170,0,"type") #20172=* -jsdoc_tags(#20172,"return",#20165,2,"@return") -#20173=@"loc,{#10000},32,4,32,10" -locations_default(#20173,#10000,32,4,32,10) -hasLocation(#20172,#20173) -jsdoc_tag_descriptions(#20172,"[description]") -#20174=* -jsdoc_type_exprs(#20174,10,#20172,0,"[type]") -#20175=* -jsdoc_type_exprs(#20175,5,#20174,0,"type") -#20176=* -jsdoc(#20176,"",#20019) -hasLocation(#20176,#20020) -#20177=* -jsdoc_tags(#20177,"exports",#20176,0,"@exports") -#20178=@"loc,{#10000},36,3,36,10" -locations_default(#20178,#10000,36,3,36,10) -hasLocation(#20177,#20178) -jsdoc_tag_descriptions(#20177,"R +jsdoc(#20172,"",#20018) +hasLocation(#20172,#20019) +#20173=* +jsdoc_tags(#20173,"exports",#20172,0,"@exports") +#20174=@"loc,{#10000},36,3,36,10" +locations_default(#20174,#10000,36,3,36,10) +hasLocation(#20173,#20174) +jsdoc_tag_descriptions(#20173,"R ") +#20175=* +jsdoc(#20175,"",#20020) +hasLocation(#20175,#20021) +#20176=* +jsdoc_tags(#20176,"typedef",#20175,0,"@typedef") +#20177=@"loc,{#10000},41,4,41,11" +locations_default(#20177,#10000,41,4,41,11) +hasLocation(#20176,#20177) +#20178=* +jsdoc_type_exprs(#20178,9,#20176,0,"{0: number}") +jsdoc_record_field_name(#20178,0,"0") #20179=* -jsdoc(#20179,"",#20021) -hasLocation(#20179,#20022) -#20180=* -jsdoc_tags(#20180,"typedef",#20179,0,"@typedef") -#20181=@"loc,{#10000},41,4,41,11" -locations_default(#20181,#10000,41,4,41,11) -hasLocation(#20180,#20181) -#20182=* -jsdoc_type_exprs(#20182,9,#20180,0,"{0: number}") -jsdoc_record_field_name(#20182,0,"0") +jsdoc_type_exprs(#20179,5,#20178,0,"number") +toplevels(#20001,0) +#20180=@"loc,{#10000},1,1,43,0" +locations_default(#20180,#10000,1,1,43,0) +hasLocation(#20001,#20180) +#20181=* +entry_cfg_node(#20181,#20001) +#20182=@"loc,{#10000},1,1,1,0" +locations_default(#20182,#10000,1,1,1,0) +hasLocation(#20181,#20182) #20183=* -jsdoc_type_exprs(#20183,5,#20182,0,"number") +exit_cfg_node(#20183,#20001) +hasLocation(#20183,#20105) +successor(#20181,#20183) numlines(#10000,42,0,37) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/default-encoding/output/trap/latin1.js.trap b/javascript/extractor/tests/default-encoding/output/trap/latin1.js.trap index 3a8205e2292..35ea7f8daad 100644 --- a/javascript/extractor/tests/default-encoding/output/trap/latin1.js.trap +++ b/javascript/extractor/tests/default-encoding/output/trap/latin1.js.trap @@ -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") diff --git a/javascript/extractor/tests/encoding/output/trap/surrogates.js.trap b/javascript/extractor/tests/encoding/output/trap/surrogates.js.trap index a277e749213..738aa17dbc2 100644 --- a/javascript/extractor/tests/encoding/output/trap/surrogates.js.trap +++ b/javascript/extractor/tests/encoding/output/trap/surrogates.js.trap @@ -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") diff --git a/javascript/extractor/tests/encoding/output/trap/unicode.js.trap b/javascript/extractor/tests/encoding/output/trap/unicode.js.trap index a264d715a00..eb8869438a3 100644 --- a/javascript/extractor/tests/encoding/output/trap/unicode.js.trap +++ b/javascript/extractor/tests/encoding/output/trap/unicode.js.trap @@ -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") diff --git a/javascript/extractor/tests/errors/output/trap/empty.js.trap b/javascript/extractor/tests/errors/output/trap/empty.js.trap index 356a53c1f80..977fc8c44af 100644 --- a/javascript/extractor/tests/errors/output/trap/empty.js.trap +++ b/javascript/extractor/tests/errors/output/trap/empty.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/array_pattern_with_default.js.trap b/javascript/extractor/tests/es2015/output/trap/array_pattern_with_default.js.trap index 797f4e5d80b..5f5c1a81f7c 100644 --- a/javascript/extractor/tests/es2015/output/trap/array_pattern_with_default.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/array_pattern_with_default.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/array_pattern_with_rest.js.trap b/javascript/extractor/tests/es2015/output/trap/array_pattern_with_rest.js.trap index b1951e4ee50..55e8e2c0cdc 100644 --- a/javascript/extractor/tests/es2015/output/trap/array_pattern_with_rest.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/array_pattern_with_rest.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/arrowfn.js.trap b/javascript/extractor/tests/es2015/output/trap/arrowfn.js.trap index 7ae4740d76c..814812ea081 100644 --- a/javascript/extractor/tests/es2015/output/trap/arrowfn.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/arrowfn.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/class_accessors.js.trap b/javascript/extractor/tests/es2015/output/trap/class_accessors.js.trap index 3fc1fbdf9c0..3b690ded91c 100644 --- a/javascript/extractor/tests/es2015/output/trap/class_accessors.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/class_accessors.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/class_ctor.js.trap b/javascript/extractor/tests/es2015/output/trap/class_ctor.js.trap index ce3d279f662..f949b122131 100644 --- a/javascript/extractor/tests/es2015/output/trap/class_ctor.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/class_ctor.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/class_extends.js.trap b/javascript/extractor/tests/es2015/output/trap/class_extends.js.trap index dc41f5a8f77..ac82898bc60 100644 --- a/javascript/extractor/tests/es2015/output/trap/class_extends.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/class_extends.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/class_extends2.js.trap b/javascript/extractor/tests/es2015/output/trap/class_extends2.js.trap index ae3385a216c..d91d61f3ec9 100644 --- a/javascript/extractor/tests/es2015/output/trap/class_extends2.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/class_extends2.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/class_method.js.trap b/javascript/extractor/tests/es2015/output/trap/class_method.js.trap index 7f9806a2244..dafa7aa739f 100644 --- a/javascript/extractor/tests/es2015/output/trap/class_method.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/class_method.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/class_static.js.trap b/javascript/extractor/tests/es2015/output/trap/class_static.js.trap index a7bebd56ebf..e4fd431fb9f 100644 --- a/javascript/extractor/tests/es2015/output/trap/class_static.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/class_static.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/classdecl.js.trap b/javascript/extractor/tests/es2015/output/trap/classdecl.js.trap index ec9230e22e1..560792fee3e 100644 --- a/javascript/extractor/tests/es2015/output/trap/classdecl.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/classdecl.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/classexpr.js.trap b/javascript/extractor/tests/es2015/output/trap/classexpr.js.trap index fe0b32e3e54..804e733a9f3 100644 --- a/javascript/extractor/tests/es2015/output/trap/classexpr.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/classexpr.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/classexpr2.js.trap b/javascript/extractor/tests/es2015/output/trap/classexpr2.js.trap index 7a51af8a622..c16a9b63e92 100644 --- a/javascript/extractor/tests/es2015/output/trap/classexpr2.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/classexpr2.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/complex_array_pattern.js.trap b/javascript/extractor/tests/es2015/output/trap/complex_array_pattern.js.trap index 7734f8d2a5b..ac27e7874c4 100644 --- a/javascript/extractor/tests/es2015/output/trap/complex_array_pattern.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/complex_array_pattern.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/complex_object_pattern.js.trap b/javascript/extractor/tests/es2015/output/trap/complex_object_pattern.js.trap index 3c75a04f2b7..1468ab36add 100644 --- a/javascript/extractor/tests/es2015/output/trap/complex_object_pattern.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/complex_object_pattern.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/const.js.trap b/javascript/extractor/tests/es2015/output/trap/const.js.trap index a82225cad49..8666f4503d3 100644 --- a/javascript/extractor/tests/es2015/output/trap/const.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/const.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/defaultargs.js.trap b/javascript/extractor/tests/es2015/output/trap/defaultargs.js.trap index 69e9be8a3be..d003a9ab8ac 100644 --- a/javascript/extractor/tests/es2015/output/trap/defaultargs.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/defaultargs.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/delegating_yield.js.trap b/javascript/extractor/tests/es2015/output/trap/delegating_yield.js.trap index dd530cbc701..76987d8d8d7 100644 --- a/javascript/extractor/tests/es2015/output/trap/delegating_yield.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/delegating_yield.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/destructuring.js.trap b/javascript/extractor/tests/es2015/output/trap/destructuring.js.trap index 6cb3f6a28e1..f6ea966f107 100644 --- a/javascript/extractor/tests/es2015/output/trap/destructuring.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/destructuring.js.trap @@ -9,804 +9,802 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,13,1" -locations_default(#20002,#10000,1,1,13,1) -hasLocation(#20001,#20002) -#20003=@"var;{f};{#20000}" -variables(#20003,"f",#20000) -#20004=@"var;{g};{#20000}" -variables(#20004,"g",#20000) -#20005=* -stmts(#20005,17,#20001,0,"functio ... );\n\t}\n}") -#20006=@"loc,{#10000},1,1,8,1" -locations_default(#20006,#10000,1,1,8,1) -hasLocation(#20005,#20006) -stmtContainers(#20005,#20001) -#20007=* -exprs(#20007,78,#20005,-1,"f") -#20008=@"loc,{#10000},1,10,1,10" -locations_default(#20008,#10000,1,10,1,10) -hasLocation(#20007,#20008) -exprContainers(#20007,#20005) -literals("f","f",#20007) -decl(#20007,#20003) -#20009=* -scopes(#20009,1) -scopenodes(#20005,#20009) -scopenesting(#20009,#20000) -#20010=@"var;{a};{#20009}" -variables(#20010,"a",#20009) -#20011=@"var;{c};{#20009}" -variables(#20011,"c",#20009) -#20012=@"var;{x};{#20009}" -variables(#20012,"x",#20009) -#20013=@"var;{y};{#20009}" -variables(#20013,"y",#20009) +#20002=* +lines(#20002,#20001,"function f([x, y]) {"," +") +#20003=@"loc,{#10000},1,1,1,20" +locations_default(#20003,#10000,1,1,1,20) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," var [a, [, c]] = x;"," +") +#20005=@"loc,{#10000},2,1,2,20" +locations_default(#20005,#10000,2,1,2,20) +hasLocation(#20004,#20005) +indentation(#10000,2," ",1) +#20006=* +lines(#20006,#20001," try {"," +") +#20007=@"loc,{#10000},3,1,3,6" +locations_default(#20007,#10000,3,1,3,6) +hasLocation(#20006,#20007) +indentation(#10000,3," ",1) +#20008=* +lines(#20008,#20001," throw [a, c];"," +") +#20009=@"loc,{#10000},4,1,4,15" +locations_default(#20009,#10000,4,1,4,15) +hasLocation(#20008,#20009) +indentation(#10000,4," ",2) +#20010=* +lines(#20010,#20001," } catch (d) {"," +") +#20011=@"loc,{#10000},5,1,5,14" +locations_default(#20011,#10000,5,1,5,14) +hasLocation(#20010,#20011) +indentation(#10000,5," ",1) +#20012=* +lines(#20012,#20001," console.log(d);"," +") +#20013=@"loc,{#10000},6,1,6,17" +locations_default(#20013,#10000,6,1,6,17) +hasLocation(#20012,#20013) +indentation(#10000,6," ",2) #20014=* -exprs(#20014,67,#20005,0,"[x, y]") -#20015=@"loc,{#10000},1,12,1,17" -locations_default(#20015,#10000,1,12,1,17) +lines(#20014,#20001," }"," +") +#20015=@"loc,{#10000},7,1,7,2" +locations_default(#20015,#10000,7,1,7,2) hasLocation(#20014,#20015) -exprContainers(#20014,#20005) +indentation(#10000,7," ",1) #20016=* -exprs(#20016,78,#20014,0,"x") -#20017=@"loc,{#10000},1,13,1,13" -locations_default(#20017,#10000,1,13,1,13) +lines(#20016,#20001,"}"," +") +#20017=@"loc,{#10000},8,1,8,1" +locations_default(#20017,#10000,8,1,8,1) hasLocation(#20016,#20017) -exprContainers(#20016,#20005) -literals("x","x",#20016) -decl(#20016,#20012) #20018=* -exprs(#20018,78,#20014,1,"y") -#20019=@"loc,{#10000},1,16,1,16" -locations_default(#20019,#10000,1,16,1,16) +lines(#20018,#20001,""," +") +#20019=@"loc,{#10000},9,1,9,0" +locations_default(#20019,#10000,9,1,9,0) hasLocation(#20018,#20019) -exprContainers(#20018,#20005) -literals("y","y",#20018) -decl(#20018,#20013) -arraySize(#20014,2) -#20020=@"var;{arguments};{#20009}" -variables(#20020,"arguments",#20009) -isArgumentsObject(#20020) -#20021=* -stmts(#20021,1,#20005,-2,"{\n\tvar ... );\n\t}\n}") -#20022=@"loc,{#10000},1,20,8,1" -locations_default(#20022,#10000,1,20,8,1) -hasLocation(#20021,#20022) -stmtContainers(#20021,#20005) -#20023=* -stmts(#20023,18,#20021,0,"var [a, [, c]] = x;") -#20024=@"loc,{#10000},2,2,2,20" -locations_default(#20024,#10000,2,2,2,20) -hasLocation(#20023,#20024) -stmtContainers(#20023,#20005) -#20025=* -exprs(#20025,64,#20023,0,"[a, [, c]] = x") -#20026=@"loc,{#10000},2,6,2,19" -locations_default(#20026,#10000,2,6,2,19) -hasLocation(#20025,#20026) -enclosingStmt(#20025,#20023) -exprContainers(#20025,#20005) -#20027=* -exprs(#20027,67,#20025,0,"[a, [, c]]") -#20028=@"loc,{#10000},2,6,2,15" -locations_default(#20028,#10000,2,6,2,15) -hasLocation(#20027,#20028) -enclosingStmt(#20027,#20023) -exprContainers(#20027,#20005) -#20029=* -exprs(#20029,78,#20027,0,"a") -#20030=@"loc,{#10000},2,7,2,7" -locations_default(#20030,#10000,2,7,2,7) -hasLocation(#20029,#20030) -enclosingStmt(#20029,#20023) -exprContainers(#20029,#20005) -literals("a","a",#20029) -decl(#20029,#20010) -#20031=* -exprs(#20031,67,#20027,1,"[, c]") -#20032=@"loc,{#10000},2,10,2,14" -locations_default(#20032,#10000,2,10,2,14) -hasLocation(#20031,#20032) -enclosingStmt(#20031,#20023) -exprContainers(#20031,#20005) -#20033=* -exprs(#20033,78,#20031,1,"c") -#20034=@"loc,{#10000},2,13,2,13" -locations_default(#20034,#10000,2,13,2,13) -hasLocation(#20033,#20034) -enclosingStmt(#20033,#20023) -exprContainers(#20033,#20005) -literals("c","c",#20033) -decl(#20033,#20011) -arraySize(#20031,2) -arraySize(#20027,2) -#20035=* -exprs(#20035,79,#20025,1,"x") -#20036=@"loc,{#10000},2,19,2,19" -locations_default(#20036,#10000,2,19,2,19) -hasLocation(#20035,#20036) -enclosingStmt(#20035,#20023) -exprContainers(#20035,#20005) -literals("x","x",#20035) -bind(#20035,#20012) -#20037=* -stmts(#20037,11,#20021,1,"try {\n\t ... (d);\n\t}") -#20038=@"loc,{#10000},3,2,7,2" -locations_default(#20038,#10000,3,2,7,2) -hasLocation(#20037,#20038) -stmtContainers(#20037,#20005) -#20039=* -stmts(#20039,1,#20037,0,"{\n\t\tthrow [a, c];\n\t}") -#20040=@"loc,{#10000},3,6,5,2" -locations_default(#20040,#10000,3,6,5,2) -hasLocation(#20039,#20040) -stmtContainers(#20039,#20005) -#20041=* -stmts(#20041,10,#20039,0,"throw [a, c];") -#20042=@"loc,{#10000},4,3,4,15" -locations_default(#20042,#10000,4,3,4,15) -hasLocation(#20041,#20042) -stmtContainers(#20041,#20005) -#20043=* -exprs(#20043,7,#20041,0,"[a, c]") -#20044=@"loc,{#10000},4,9,4,14" -locations_default(#20044,#10000,4,9,4,14) -hasLocation(#20043,#20044) -enclosingStmt(#20043,#20041) -exprContainers(#20043,#20005) -#20045=* -exprs(#20045,79,#20043,0,"a") -#20046=@"loc,{#10000},4,10,4,10" -locations_default(#20046,#10000,4,10,4,10) -hasLocation(#20045,#20046) -enclosingStmt(#20045,#20041) -exprContainers(#20045,#20005) -literals("a","a",#20045) -bind(#20045,#20010) -#20047=* -exprs(#20047,79,#20043,1,"c") -#20048=@"loc,{#10000},4,13,4,13" -locations_default(#20048,#10000,4,13,4,13) -hasLocation(#20047,#20048) -enclosingStmt(#20047,#20041) -exprContainers(#20047,#20005) -literals("c","c",#20047) -bind(#20047,#20011) -arraySize(#20043,2) -#20049=* -stmts(#20049,20,#20037,1,"catch ( ... (d);\n\t}") -#20050=@"loc,{#10000},5,4,7,2" -locations_default(#20050,#10000,5,4,7,2) -hasLocation(#20049,#20050) -stmtContainers(#20049,#20005) -#20051=* -scopes(#20051,2) -scopenodes(#20049,#20051) -scopenesting(#20051,#20009) -#20052=@"var;{d};{#20051}" -variables(#20052,"d",#20051) -#20053=* -exprs(#20053,78,#20049,0,"d") -#20054=@"loc,{#10000},5,11,5,11" -locations_default(#20054,#10000,5,11,5,11) -hasLocation(#20053,#20054) -enclosingStmt(#20053,#20049) -exprContainers(#20053,#20005) -literals("d","d",#20053) -decl(#20053,#20052) -#20055=* -stmts(#20055,1,#20049,1,"{\n\t\tcon ... (d);\n\t}") -#20056=@"loc,{#10000},5,14,7,2" -locations_default(#20056,#10000,5,14,7,2) -hasLocation(#20055,#20056) -stmtContainers(#20055,#20005) -#20057=* -stmts(#20057,2,#20055,0,"console.log(d);") -#20058=@"loc,{#10000},6,3,6,17" -locations_default(#20058,#10000,6,3,6,17) -hasLocation(#20057,#20058) -stmtContainers(#20057,#20005) -#20059=* -exprs(#20059,13,#20057,0,"console.log(d)") -#20060=@"loc,{#10000},6,3,6,16" -locations_default(#20060,#10000,6,3,6,16) -hasLocation(#20059,#20060) -enclosingStmt(#20059,#20057) -exprContainers(#20059,#20005) -#20061=* -exprs(#20061,14,#20059,-1,"console.log") -#20062=@"loc,{#10000},6,3,6,13" -locations_default(#20062,#10000,6,3,6,13) -hasLocation(#20061,#20062) -enclosingStmt(#20061,#20057) -exprContainers(#20061,#20005) -#20063=* -exprs(#20063,79,#20061,0,"console") -#20064=@"loc,{#10000},6,3,6,9" -locations_default(#20064,#10000,6,3,6,9) -hasLocation(#20063,#20064) -enclosingStmt(#20063,#20057) -exprContainers(#20063,#20005) -literals("console","console",#20063) -#20065=@"var;{console};{#20000}" -variables(#20065,"console",#20000) -bind(#20063,#20065) +#20020=* +lines(#20020,#20001,"function g({ x, y: z }) {"," +") +#20021=@"loc,{#10000},10,1,10,25" +locations_default(#20021,#10000,10,1,10,25) +hasLocation(#20020,#20021) +#20022=* +lines(#20022,#20001," var { [x]: w } = z;"," +") +#20023=@"loc,{#10000},11,1,11,20" +locations_default(#20023,#10000,11,1,11,20) +hasLocation(#20022,#20023) +indentation(#10000,11," ",1) +#20024=* +lines(#20024,#20001," return w;"," +") +#20025=@"loc,{#10000},12,1,12,10" +locations_default(#20025,#10000,12,1,12,10) +hasLocation(#20024,#20025) +indentation(#10000,12," ",1) +#20026=* +lines(#20026,#20001,"}","") +#20027=@"loc,{#10000},13,1,13,1" +locations_default(#20027,#10000,13,1,13,1) +hasLocation(#20026,#20027) +numlines(#20001,13,12,0) +#20028=* +tokeninfo(#20028,7,#20001,0,"function") +#20029=@"loc,{#10000},1,1,1,8" +locations_default(#20029,#10000,1,1,1,8) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,6,#20001,1,"f") +#20031=@"loc,{#10000},1,10,1,10" +locations_default(#20031,#10000,1,10,1,10) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,2,"(") +#20033=@"loc,{#10000},1,11,1,11" +locations_default(#20033,#10000,1,11,1,11) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,3,"[") +#20035=@"loc,{#10000},1,12,1,12" +locations_default(#20035,#10000,1,12,1,12) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,6,#20001,4,"x") +#20037=@"loc,{#10000},1,13,1,13" +locations_default(#20037,#10000,1,13,1,13) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,8,#20001,5,",") +#20039=@"loc,{#10000},1,14,1,14" +locations_default(#20039,#10000,1,14,1,14) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,6,#20001,6,"y") +#20041=@"loc,{#10000},1,16,1,16" +locations_default(#20041,#10000,1,16,1,16) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,7,"]") +#20043=@"loc,{#10000},1,17,1,17" +locations_default(#20043,#10000,1,17,1,17) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,8,")") +#20045=@"loc,{#10000},1,18,1,18" +locations_default(#20045,#10000,1,18,1,18) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,9,"{") +#20047=@"loc,{#10000},1,20,1,20" +locations_default(#20047,#10000,1,20,1,20) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,7,#20001,10,"var") +#20049=@"loc,{#10000},2,2,2,4" +locations_default(#20049,#10000,2,2,2,4) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,11,"[") +#20051=@"loc,{#10000},2,6,2,6" +locations_default(#20051,#10000,2,6,2,6) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,6,#20001,12,"a") +#20053=@"loc,{#10000},2,7,2,7" +locations_default(#20053,#10000,2,7,2,7) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,8,#20001,13,",") +#20055=@"loc,{#10000},2,8,2,8" +locations_default(#20055,#10000,2,8,2,8) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,8,#20001,14,"[") +#20057=@"loc,{#10000},2,10,2,10" +locations_default(#20057,#10000,2,10,2,10) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,8,#20001,15,",") +#20059=@"loc,{#10000},2,11,2,11" +locations_default(#20059,#10000,2,11,2,11) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,6,#20001,16,"c") +#20061=@"loc,{#10000},2,13,2,13" +locations_default(#20061,#10000,2,13,2,13) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,8,#20001,17,"]") +#20063=@"loc,{#10000},2,14,2,14" +locations_default(#20063,#10000,2,14,2,14) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,8,#20001,18,"]") +#20065=@"loc,{#10000},2,15,2,15" +locations_default(#20065,#10000,2,15,2,15) +hasLocation(#20064,#20065) #20066=* -exprs(#20066,0,#20061,1,"log") -#20067=@"loc,{#10000},6,11,6,13" -locations_default(#20067,#10000,6,11,6,13) +tokeninfo(#20066,8,#20001,19,"=") +#20067=@"loc,{#10000},2,17,2,17" +locations_default(#20067,#10000,2,17,2,17) hasLocation(#20066,#20067) -enclosingStmt(#20066,#20057) -exprContainers(#20066,#20005) -literals("log","log",#20066) #20068=* -exprs(#20068,79,#20059,0,"d") -#20069=@"loc,{#10000},6,15,6,15" -locations_default(#20069,#10000,6,15,6,15) +tokeninfo(#20068,6,#20001,20,"x") +#20069=@"loc,{#10000},2,19,2,19" +locations_default(#20069,#10000,2,19,2,19) hasLocation(#20068,#20069) -enclosingStmt(#20068,#20057) -exprContainers(#20068,#20005) -literals("d","d",#20068) -bind(#20068,#20052) -numlines(#20005,8,8,0) #20070=* -stmts(#20070,17,#20001,1,"functio ... rn w;\n}") -#20071=@"loc,{#10000},10,1,13,1" -locations_default(#20071,#10000,10,1,13,1) +tokeninfo(#20070,8,#20001,21,";") +#20071=@"loc,{#10000},2,20,2,20" +locations_default(#20071,#10000,2,20,2,20) hasLocation(#20070,#20071) -stmtContainers(#20070,#20001) #20072=* -exprs(#20072,78,#20070,-1,"g") -#20073=@"loc,{#10000},10,10,10,10" -locations_default(#20073,#10000,10,10,10,10) +tokeninfo(#20072,7,#20001,22,"try") +#20073=@"loc,{#10000},3,2,3,4" +locations_default(#20073,#10000,3,2,3,4) hasLocation(#20072,#20073) -exprContainers(#20072,#20070) -literals("g","g",#20072) -decl(#20072,#20004) #20074=* -scopes(#20074,1) -scopenodes(#20070,#20074) -scopenesting(#20074,#20000) -#20075=@"var;{w};{#20074}" -variables(#20075,"w",#20074) -#20076=@"var;{x};{#20074}" -variables(#20076,"x",#20074) -#20077=@"var;{z};{#20074}" -variables(#20077,"z",#20074) +tokeninfo(#20074,8,#20001,23,"{") +#20075=@"loc,{#10000},3,6,3,6" +locations_default(#20075,#10000,3,6,3,6) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,7,#20001,24,"throw") +#20077=@"loc,{#10000},4,3,4,7" +locations_default(#20077,#10000,4,3,4,7) +hasLocation(#20076,#20077) #20078=* -exprs(#20078,68,#20070,0,"{ x, y: z }") -#20079=@"loc,{#10000},10,12,10,22" -locations_default(#20079,#10000,10,12,10,22) +tokeninfo(#20078,8,#20001,25,"[") +#20079=@"loc,{#10000},4,9,4,9" +locations_default(#20079,#10000,4,9,4,9) hasLocation(#20078,#20079) -exprContainers(#20078,#20070) #20080=* -properties(#20080,#20078,0,0,"x") -#20081=@"loc,{#10000},10,14,10,14" -locations_default(#20081,#10000,10,14,10,14) +tokeninfo(#20080,6,#20001,26,"a") +#20081=@"loc,{#10000},4,10,4,10" +locations_default(#20081,#10000,4,10,4,10) hasLocation(#20080,#20081) #20082=* -exprs(#20082,0,#20080,0,"x") -hasLocation(#20082,#20081) -exprContainers(#20082,#20070) -literals("x","x",#20082) -#20083=* -exprs(#20083,78,#20080,1,"x") -hasLocation(#20083,#20081) -exprContainers(#20083,#20070) -literals("x","x",#20083) -decl(#20083,#20076) +tokeninfo(#20082,8,#20001,27,",") +#20083=@"loc,{#10000},4,11,4,11" +locations_default(#20083,#10000,4,11,4,11) +hasLocation(#20082,#20083) #20084=* -properties(#20084,#20078,1,0,"y: z") -#20085=@"loc,{#10000},10,17,10,20" -locations_default(#20085,#10000,10,17,10,20) +tokeninfo(#20084,6,#20001,28,"c") +#20085=@"loc,{#10000},4,13,4,13" +locations_default(#20085,#10000,4,13,4,13) hasLocation(#20084,#20085) #20086=* -exprs(#20086,0,#20084,0,"y") -#20087=@"loc,{#10000},10,17,10,17" -locations_default(#20087,#10000,10,17,10,17) +tokeninfo(#20086,8,#20001,29,"]") +#20087=@"loc,{#10000},4,14,4,14" +locations_default(#20087,#10000,4,14,4,14) hasLocation(#20086,#20087) -exprContainers(#20086,#20070) -literals("y","y",#20086) #20088=* -exprs(#20088,78,#20084,1,"z") -#20089=@"loc,{#10000},10,20,10,20" -locations_default(#20089,#10000,10,20,10,20) +tokeninfo(#20088,8,#20001,30,";") +#20089=@"loc,{#10000},4,15,4,15" +locations_default(#20089,#10000,4,15,4,15) hasLocation(#20088,#20089) -exprContainers(#20088,#20070) -literals("z","z",#20088) -decl(#20088,#20077) -#20090=@"var;{arguments};{#20074}" -variables(#20090,"arguments",#20074) -isArgumentsObject(#20090) -#20091=* -stmts(#20091,1,#20070,-2,"{\n\tvar ... rn w;\n}") -#20092=@"loc,{#10000},10,25,13,1" -locations_default(#20092,#10000,10,25,13,1) -hasLocation(#20091,#20092) -stmtContainers(#20091,#20070) -#20093=* -stmts(#20093,18,#20091,0,"var { [x]: w } = z;") -#20094=@"loc,{#10000},11,2,11,20" -locations_default(#20094,#10000,11,2,11,20) -hasLocation(#20093,#20094) -stmtContainers(#20093,#20070) -#20095=* -exprs(#20095,64,#20093,0,"{ [x]: w } = z") -#20096=@"loc,{#10000},11,6,11,19" -locations_default(#20096,#10000,11,6,11,19) -hasLocation(#20095,#20096) -enclosingStmt(#20095,#20093) -exprContainers(#20095,#20070) -#20097=* -exprs(#20097,68,#20095,0,"{ [x]: w }") -#20098=@"loc,{#10000},11,6,11,15" -locations_default(#20098,#10000,11,6,11,15) -hasLocation(#20097,#20098) -enclosingStmt(#20097,#20093) -exprContainers(#20097,#20070) -#20099=* -properties(#20099,#20097,0,0,"[x]: w") -#20100=@"loc,{#10000},11,8,11,13" -locations_default(#20100,#10000,11,8,11,13) -hasLocation(#20099,#20100) -#20101=* -exprs(#20101,79,#20099,0,"x") -#20102=@"loc,{#10000},11,9,11,9" -locations_default(#20102,#10000,11,9,11,9) -hasLocation(#20101,#20102) -enclosingStmt(#20101,#20093) -exprContainers(#20101,#20070) -literals("x","x",#20101) -bind(#20101,#20076) -#20103=* -exprs(#20103,78,#20099,1,"w") -#20104=@"loc,{#10000},11,13,11,13" -locations_default(#20104,#10000,11,13,11,13) -hasLocation(#20103,#20104) -enclosingStmt(#20103,#20093) -exprContainers(#20103,#20070) -literals("w","w",#20103) -decl(#20103,#20075) -isComputed(#20099) -#20105=* -exprs(#20105,79,#20095,1,"z") -#20106=@"loc,{#10000},11,19,11,19" -locations_default(#20106,#10000,11,19,11,19) -hasLocation(#20105,#20106) -enclosingStmt(#20105,#20093) -exprContainers(#20105,#20070) -literals("z","z",#20105) -bind(#20105,#20077) -#20107=* -stmts(#20107,9,#20091,1,"return w;") -#20108=@"loc,{#10000},12,2,12,10" -locations_default(#20108,#10000,12,2,12,10) -hasLocation(#20107,#20108) -stmtContainers(#20107,#20070) -#20109=* -exprs(#20109,79,#20107,0,"w") -#20110=@"loc,{#10000},12,9,12,9" -locations_default(#20110,#10000,12,9,12,9) -hasLocation(#20109,#20110) -enclosingStmt(#20109,#20107) -exprContainers(#20109,#20070) -literals("w","w",#20109) -bind(#20109,#20075) -numlines(#20070,4,4,0) -#20111=* -lines(#20111,#20001,"function f([x, y]) {"," -") -#20112=@"loc,{#10000},1,1,1,20" -locations_default(#20112,#10000,1,1,1,20) -hasLocation(#20111,#20112) -#20113=* -lines(#20113,#20001," var [a, [, c]] = x;"," -") -#20114=@"loc,{#10000},2,1,2,20" -locations_default(#20114,#10000,2,1,2,20) -hasLocation(#20113,#20114) -indentation(#10000,2," ",1) -#20115=* -lines(#20115,#20001," try {"," -") -#20116=@"loc,{#10000},3,1,3,6" -locations_default(#20116,#10000,3,1,3,6) -hasLocation(#20115,#20116) -indentation(#10000,3," ",1) -#20117=* -lines(#20117,#20001," throw [a, c];"," -") -#20118=@"loc,{#10000},4,1,4,15" -locations_default(#20118,#10000,4,1,4,15) -hasLocation(#20117,#20118) -indentation(#10000,4," ",2) +#20090=* +tokeninfo(#20090,8,#20001,31,"}") +#20091=@"loc,{#10000},5,2,5,2" +locations_default(#20091,#10000,5,2,5,2) +hasLocation(#20090,#20091) +#20092=* +tokeninfo(#20092,7,#20001,32,"catch") +#20093=@"loc,{#10000},5,4,5,8" +locations_default(#20093,#10000,5,4,5,8) +hasLocation(#20092,#20093) +#20094=* +tokeninfo(#20094,8,#20001,33,"(") +#20095=@"loc,{#10000},5,10,5,10" +locations_default(#20095,#10000,5,10,5,10) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,6,#20001,34,"d") +#20097=@"loc,{#10000},5,11,5,11" +locations_default(#20097,#10000,5,11,5,11) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,8,#20001,35,")") +#20099=@"loc,{#10000},5,12,5,12" +locations_default(#20099,#10000,5,12,5,12) +hasLocation(#20098,#20099) +#20100=* +tokeninfo(#20100,8,#20001,36,"{") +#20101=@"loc,{#10000},5,14,5,14" +locations_default(#20101,#10000,5,14,5,14) +hasLocation(#20100,#20101) +#20102=* +tokeninfo(#20102,6,#20001,37,"console") +#20103=@"loc,{#10000},6,3,6,9" +locations_default(#20103,#10000,6,3,6,9) +hasLocation(#20102,#20103) +#20104=* +tokeninfo(#20104,8,#20001,38,".") +#20105=@"loc,{#10000},6,10,6,10" +locations_default(#20105,#10000,6,10,6,10) +hasLocation(#20104,#20105) +#20106=* +tokeninfo(#20106,6,#20001,39,"log") +#20107=@"loc,{#10000},6,11,6,13" +locations_default(#20107,#10000,6,11,6,13) +hasLocation(#20106,#20107) +#20108=* +tokeninfo(#20108,8,#20001,40,"(") +#20109=@"loc,{#10000},6,14,6,14" +locations_default(#20109,#10000,6,14,6,14) +hasLocation(#20108,#20109) +#20110=* +tokeninfo(#20110,6,#20001,41,"d") +#20111=@"loc,{#10000},6,15,6,15" +locations_default(#20111,#10000,6,15,6,15) +hasLocation(#20110,#20111) +#20112=* +tokeninfo(#20112,8,#20001,42,")") +#20113=@"loc,{#10000},6,16,6,16" +locations_default(#20113,#10000,6,16,6,16) +hasLocation(#20112,#20113) +#20114=* +tokeninfo(#20114,8,#20001,43,";") +#20115=@"loc,{#10000},6,17,6,17" +locations_default(#20115,#10000,6,17,6,17) +hasLocation(#20114,#20115) +#20116=* +tokeninfo(#20116,8,#20001,44,"}") +#20117=@"loc,{#10000},7,2,7,2" +locations_default(#20117,#10000,7,2,7,2) +hasLocation(#20116,#20117) +#20118=* +tokeninfo(#20118,8,#20001,45,"}") +hasLocation(#20118,#20017) #20119=* -lines(#20119,#20001," } catch (d) {"," -") -#20120=@"loc,{#10000},5,1,5,14" -locations_default(#20120,#10000,5,1,5,14) +tokeninfo(#20119,7,#20001,46,"function") +#20120=@"loc,{#10000},10,1,10,8" +locations_default(#20120,#10000,10,1,10,8) hasLocation(#20119,#20120) -indentation(#10000,5," ",1) #20121=* -lines(#20121,#20001," console.log(d);"," -") -#20122=@"loc,{#10000},6,1,6,17" -locations_default(#20122,#10000,6,1,6,17) +tokeninfo(#20121,6,#20001,47,"g") +#20122=@"loc,{#10000},10,10,10,10" +locations_default(#20122,#10000,10,10,10,10) hasLocation(#20121,#20122) -indentation(#10000,6," ",2) #20123=* -lines(#20123,#20001," }"," -") -#20124=@"loc,{#10000},7,1,7,2" -locations_default(#20124,#10000,7,1,7,2) +tokeninfo(#20123,8,#20001,48,"(") +#20124=@"loc,{#10000},10,11,10,11" +locations_default(#20124,#10000,10,11,10,11) hasLocation(#20123,#20124) -indentation(#10000,7," ",1) #20125=* -lines(#20125,#20001,"}"," -") -#20126=@"loc,{#10000},8,1,8,1" -locations_default(#20126,#10000,8,1,8,1) +tokeninfo(#20125,8,#20001,49,"{") +#20126=@"loc,{#10000},10,12,10,12" +locations_default(#20126,#10000,10,12,10,12) hasLocation(#20125,#20126) #20127=* -lines(#20127,#20001,""," -") -#20128=@"loc,{#10000},9,1,9,0" -locations_default(#20128,#10000,9,1,9,0) +tokeninfo(#20127,6,#20001,50,"x") +#20128=@"loc,{#10000},10,14,10,14" +locations_default(#20128,#10000,10,14,10,14) hasLocation(#20127,#20128) #20129=* -lines(#20129,#20001,"function g({ x, y: z }) {"," -") -#20130=@"loc,{#10000},10,1,10,25" -locations_default(#20130,#10000,10,1,10,25) +tokeninfo(#20129,8,#20001,51,",") +#20130=@"loc,{#10000},10,15,10,15" +locations_default(#20130,#10000,10,15,10,15) hasLocation(#20129,#20130) #20131=* -lines(#20131,#20001," var { [x]: w } = z;"," -") -#20132=@"loc,{#10000},11,1,11,20" -locations_default(#20132,#10000,11,1,11,20) +tokeninfo(#20131,6,#20001,52,"y") +#20132=@"loc,{#10000},10,17,10,17" +locations_default(#20132,#10000,10,17,10,17) hasLocation(#20131,#20132) -indentation(#10000,11," ",1) #20133=* -lines(#20133,#20001," return w;"," -") -#20134=@"loc,{#10000},12,1,12,10" -locations_default(#20134,#10000,12,1,12,10) +tokeninfo(#20133,8,#20001,53,":") +#20134=@"loc,{#10000},10,18,10,18" +locations_default(#20134,#10000,10,18,10,18) hasLocation(#20133,#20134) -indentation(#10000,12," ",1) #20135=* -lines(#20135,#20001,"}","") -#20136=@"loc,{#10000},13,1,13,1" -locations_default(#20136,#10000,13,1,13,1) +tokeninfo(#20135,6,#20001,54,"z") +#20136=@"loc,{#10000},10,20,10,20" +locations_default(#20136,#10000,10,20,10,20) hasLocation(#20135,#20136) -numlines(#20001,13,12,0) #20137=* -tokeninfo(#20137,7,#20001,0,"function") -#20138=@"loc,{#10000},1,1,1,8" -locations_default(#20138,#10000,1,1,1,8) +tokeninfo(#20137,8,#20001,55,"}") +#20138=@"loc,{#10000},10,22,10,22" +locations_default(#20138,#10000,10,22,10,22) hasLocation(#20137,#20138) #20139=* -tokeninfo(#20139,6,#20001,1,"f") -hasLocation(#20139,#20008) -#20140=* -tokeninfo(#20140,8,#20001,2,"(") -#20141=@"loc,{#10000},1,11,1,11" -locations_default(#20141,#10000,1,11,1,11) -hasLocation(#20140,#20141) -#20142=* -tokeninfo(#20142,8,#20001,3,"[") -#20143=@"loc,{#10000},1,12,1,12" -locations_default(#20143,#10000,1,12,1,12) -hasLocation(#20142,#20143) -#20144=* -tokeninfo(#20144,6,#20001,4,"x") -hasLocation(#20144,#20017) +tokeninfo(#20139,8,#20001,56,")") +#20140=@"loc,{#10000},10,23,10,23" +locations_default(#20140,#10000,10,23,10,23) +hasLocation(#20139,#20140) +#20141=* +tokeninfo(#20141,8,#20001,57,"{") +#20142=@"loc,{#10000},10,25,10,25" +locations_default(#20142,#10000,10,25,10,25) +hasLocation(#20141,#20142) +#20143=* +tokeninfo(#20143,7,#20001,58,"var") +#20144=@"loc,{#10000},11,2,11,4" +locations_default(#20144,#10000,11,2,11,4) +hasLocation(#20143,#20144) #20145=* -tokeninfo(#20145,8,#20001,5,",") -#20146=@"loc,{#10000},1,14,1,14" -locations_default(#20146,#10000,1,14,1,14) +tokeninfo(#20145,8,#20001,59,"{") +#20146=@"loc,{#10000},11,6,11,6" +locations_default(#20146,#10000,11,6,11,6) hasLocation(#20145,#20146) #20147=* -tokeninfo(#20147,6,#20001,6,"y") -hasLocation(#20147,#20019) -#20148=* -tokeninfo(#20148,8,#20001,7,"]") -#20149=@"loc,{#10000},1,17,1,17" -locations_default(#20149,#10000,1,17,1,17) -hasLocation(#20148,#20149) -#20150=* -tokeninfo(#20150,8,#20001,8,")") -#20151=@"loc,{#10000},1,18,1,18" -locations_default(#20151,#10000,1,18,1,18) -hasLocation(#20150,#20151) -#20152=* -tokeninfo(#20152,8,#20001,9,"{") -#20153=@"loc,{#10000},1,20,1,20" -locations_default(#20153,#10000,1,20,1,20) -hasLocation(#20152,#20153) -#20154=* -tokeninfo(#20154,7,#20001,10,"var") -#20155=@"loc,{#10000},2,2,2,4" -locations_default(#20155,#10000,2,2,2,4) -hasLocation(#20154,#20155) -#20156=* -tokeninfo(#20156,8,#20001,11,"[") -#20157=@"loc,{#10000},2,6,2,6" -locations_default(#20157,#10000,2,6,2,6) -hasLocation(#20156,#20157) -#20158=* -tokeninfo(#20158,6,#20001,12,"a") -hasLocation(#20158,#20030) +tokeninfo(#20147,8,#20001,60,"[") +#20148=@"loc,{#10000},11,8,11,8" +locations_default(#20148,#10000,11,8,11,8) +hasLocation(#20147,#20148) +#20149=* +tokeninfo(#20149,6,#20001,61,"x") +#20150=@"loc,{#10000},11,9,11,9" +locations_default(#20150,#10000,11,9,11,9) +hasLocation(#20149,#20150) +#20151=* +tokeninfo(#20151,8,#20001,62,"]") +#20152=@"loc,{#10000},11,10,11,10" +locations_default(#20152,#10000,11,10,11,10) +hasLocation(#20151,#20152) +#20153=* +tokeninfo(#20153,8,#20001,63,":") +#20154=@"loc,{#10000},11,11,11,11" +locations_default(#20154,#10000,11,11,11,11) +hasLocation(#20153,#20154) +#20155=* +tokeninfo(#20155,6,#20001,64,"w") +#20156=@"loc,{#10000},11,13,11,13" +locations_default(#20156,#10000,11,13,11,13) +hasLocation(#20155,#20156) +#20157=* +tokeninfo(#20157,8,#20001,65,"}") +#20158=@"loc,{#10000},11,15,11,15" +locations_default(#20158,#10000,11,15,11,15) +hasLocation(#20157,#20158) #20159=* -tokeninfo(#20159,8,#20001,13,",") -#20160=@"loc,{#10000},2,8,2,8" -locations_default(#20160,#10000,2,8,2,8) +tokeninfo(#20159,8,#20001,66,"=") +#20160=@"loc,{#10000},11,17,11,17" +locations_default(#20160,#10000,11,17,11,17) hasLocation(#20159,#20160) #20161=* -tokeninfo(#20161,8,#20001,14,"[") -#20162=@"loc,{#10000},2,10,2,10" -locations_default(#20162,#10000,2,10,2,10) +tokeninfo(#20161,6,#20001,67,"z") +#20162=@"loc,{#10000},11,19,11,19" +locations_default(#20162,#10000,11,19,11,19) hasLocation(#20161,#20162) #20163=* -tokeninfo(#20163,8,#20001,15,",") -#20164=@"loc,{#10000},2,11,2,11" -locations_default(#20164,#10000,2,11,2,11) +tokeninfo(#20163,8,#20001,68,";") +#20164=@"loc,{#10000},11,20,11,20" +locations_default(#20164,#10000,11,20,11,20) hasLocation(#20163,#20164) #20165=* -tokeninfo(#20165,6,#20001,16,"c") -hasLocation(#20165,#20034) -#20166=* -tokeninfo(#20166,8,#20001,17,"]") -#20167=@"loc,{#10000},2,14,2,14" -locations_default(#20167,#10000,2,14,2,14) -hasLocation(#20166,#20167) -#20168=* -tokeninfo(#20168,8,#20001,18,"]") -#20169=@"loc,{#10000},2,15,2,15" -locations_default(#20169,#10000,2,15,2,15) -hasLocation(#20168,#20169) -#20170=* -tokeninfo(#20170,8,#20001,19,"=") -#20171=@"loc,{#10000},2,17,2,17" -locations_default(#20171,#10000,2,17,2,17) -hasLocation(#20170,#20171) +tokeninfo(#20165,7,#20001,69,"return") +#20166=@"loc,{#10000},12,2,12,7" +locations_default(#20166,#10000,12,2,12,7) +hasLocation(#20165,#20166) +#20167=* +tokeninfo(#20167,6,#20001,70,"w") +#20168=@"loc,{#10000},12,9,12,9" +locations_default(#20168,#10000,12,9,12,9) +hasLocation(#20167,#20168) +#20169=* +tokeninfo(#20169,8,#20001,71,";") +#20170=@"loc,{#10000},12,10,12,10" +locations_default(#20170,#10000,12,10,12,10) +hasLocation(#20169,#20170) +#20171=* +tokeninfo(#20171,8,#20001,72,"}") +hasLocation(#20171,#20027) #20172=* -tokeninfo(#20172,6,#20001,20,"x") -hasLocation(#20172,#20036) -#20173=* -tokeninfo(#20173,8,#20001,21,";") -#20174=@"loc,{#10000},2,20,2,20" -locations_default(#20174,#10000,2,20,2,20) -hasLocation(#20173,#20174) -#20175=* -tokeninfo(#20175,7,#20001,22,"try") -#20176=@"loc,{#10000},3,2,3,4" -locations_default(#20176,#10000,3,2,3,4) -hasLocation(#20175,#20176) +tokeninfo(#20172,0,#20001,73,"") +#20173=@"loc,{#10000},13,2,13,1" +locations_default(#20173,#10000,13,2,13,1) +hasLocation(#20172,#20173) +toplevels(#20001,0) +#20174=@"loc,{#10000},1,1,13,1" +locations_default(#20174,#10000,1,1,13,1) +hasLocation(#20001,#20174) +#20175=@"var;{f};{#20000}" +variables(#20175,"f",#20000) +#20176=@"var;{g};{#20000}" +variables(#20176,"g",#20000) #20177=* -tokeninfo(#20177,8,#20001,23,"{") -#20178=@"loc,{#10000},3,6,3,6" -locations_default(#20178,#10000,3,6,3,6) +stmts(#20177,17,#20001,0,"functio ... );\n\t}\n}") +#20178=@"loc,{#10000},1,1,8,1" +locations_default(#20178,#10000,1,1,8,1) hasLocation(#20177,#20178) +stmtContainers(#20177,#20001) #20179=* -tokeninfo(#20179,7,#20001,24,"throw") -#20180=@"loc,{#10000},4,3,4,7" -locations_default(#20180,#10000,4,3,4,7) -hasLocation(#20179,#20180) -#20181=* -tokeninfo(#20181,8,#20001,25,"[") -#20182=@"loc,{#10000},4,9,4,9" -locations_default(#20182,#10000,4,9,4,9) -hasLocation(#20181,#20182) -#20183=* -tokeninfo(#20183,6,#20001,26,"a") -hasLocation(#20183,#20046) -#20184=* -tokeninfo(#20184,8,#20001,27,",") -#20185=@"loc,{#10000},4,11,4,11" -locations_default(#20185,#10000,4,11,4,11) -hasLocation(#20184,#20185) -#20186=* -tokeninfo(#20186,6,#20001,28,"c") -hasLocation(#20186,#20048) +exprs(#20179,78,#20177,-1,"f") +hasLocation(#20179,#20031) +exprContainers(#20179,#20177) +literals("f","f",#20179) +decl(#20179,#20175) +#20180=* +scopes(#20180,1) +scopenodes(#20177,#20180) +scopenesting(#20180,#20000) +#20181=@"var;{a};{#20180}" +variables(#20181,"a",#20180) +#20182=@"var;{c};{#20180}" +variables(#20182,"c",#20180) +#20183=@"var;{x};{#20180}" +variables(#20183,"x",#20180) +#20184=@"var;{y};{#20180}" +variables(#20184,"y",#20180) +#20185=* +exprs(#20185,67,#20177,0,"[x, y]") +#20186=@"loc,{#10000},1,12,1,17" +locations_default(#20186,#10000,1,12,1,17) +hasLocation(#20185,#20186) +exprContainers(#20185,#20177) #20187=* -tokeninfo(#20187,8,#20001,29,"]") -#20188=@"loc,{#10000},4,14,4,14" -locations_default(#20188,#10000,4,14,4,14) -hasLocation(#20187,#20188) -#20189=* -tokeninfo(#20189,8,#20001,30,";") -#20190=@"loc,{#10000},4,15,4,15" -locations_default(#20190,#10000,4,15,4,15) -hasLocation(#20189,#20190) -#20191=* -tokeninfo(#20191,8,#20001,31,"}") -#20192=@"loc,{#10000},5,2,5,2" -locations_default(#20192,#10000,5,2,5,2) -hasLocation(#20191,#20192) -#20193=* -tokeninfo(#20193,7,#20001,32,"catch") -#20194=@"loc,{#10000},5,4,5,8" -locations_default(#20194,#10000,5,4,5,8) -hasLocation(#20193,#20194) -#20195=* -tokeninfo(#20195,8,#20001,33,"(") -#20196=@"loc,{#10000},5,10,5,10" -locations_default(#20196,#10000,5,10,5,10) -hasLocation(#20195,#20196) -#20197=* -tokeninfo(#20197,6,#20001,34,"d") -hasLocation(#20197,#20054) +exprs(#20187,78,#20185,0,"x") +hasLocation(#20187,#20037) +exprContainers(#20187,#20177) +literals("x","x",#20187) +decl(#20187,#20183) +#20188=* +exprs(#20188,78,#20185,1,"y") +hasLocation(#20188,#20041) +exprContainers(#20188,#20177) +literals("y","y",#20188) +decl(#20188,#20184) +arraySize(#20185,2) +#20189=@"var;{arguments};{#20180}" +variables(#20189,"arguments",#20180) +isArgumentsObject(#20189) +#20190=* +stmts(#20190,1,#20177,-2,"{\n\tvar ... );\n\t}\n}") +#20191=@"loc,{#10000},1,20,8,1" +locations_default(#20191,#10000,1,20,8,1) +hasLocation(#20190,#20191) +stmtContainers(#20190,#20177) +#20192=* +stmts(#20192,18,#20190,0,"var [a, [, c]] = x;") +#20193=@"loc,{#10000},2,2,2,20" +locations_default(#20193,#10000,2,2,2,20) +hasLocation(#20192,#20193) +stmtContainers(#20192,#20177) +#20194=* +exprs(#20194,64,#20192,0,"[a, [, c]] = x") +#20195=@"loc,{#10000},2,6,2,19" +locations_default(#20195,#10000,2,6,2,19) +hasLocation(#20194,#20195) +enclosingStmt(#20194,#20192) +exprContainers(#20194,#20177) +#20196=* +exprs(#20196,67,#20194,0,"[a, [, c]]") +#20197=@"loc,{#10000},2,6,2,15" +locations_default(#20197,#10000,2,6,2,15) +hasLocation(#20196,#20197) +enclosingStmt(#20196,#20192) +exprContainers(#20196,#20177) #20198=* -tokeninfo(#20198,8,#20001,35,")") -#20199=@"loc,{#10000},5,12,5,12" -locations_default(#20199,#10000,5,12,5,12) -hasLocation(#20198,#20199) -#20200=* -tokeninfo(#20200,8,#20001,36,"{") -#20201=@"loc,{#10000},5,14,5,14" -locations_default(#20201,#10000,5,14,5,14) -hasLocation(#20200,#20201) +exprs(#20198,78,#20196,0,"a") +hasLocation(#20198,#20053) +enclosingStmt(#20198,#20192) +exprContainers(#20198,#20177) +literals("a","a",#20198) +decl(#20198,#20181) +#20199=* +exprs(#20199,67,#20196,1,"[, c]") +#20200=@"loc,{#10000},2,10,2,14" +locations_default(#20200,#10000,2,10,2,14) +hasLocation(#20199,#20200) +enclosingStmt(#20199,#20192) +exprContainers(#20199,#20177) +#20201=* +exprs(#20201,78,#20199,1,"c") +hasLocation(#20201,#20061) +enclosingStmt(#20201,#20192) +exprContainers(#20201,#20177) +literals("c","c",#20201) +decl(#20201,#20182) +arraySize(#20199,2) +arraySize(#20196,2) #20202=* -tokeninfo(#20202,6,#20001,37,"console") -hasLocation(#20202,#20064) +exprs(#20202,79,#20194,1,"x") +hasLocation(#20202,#20069) +enclosingStmt(#20202,#20192) +exprContainers(#20202,#20177) +literals("x","x",#20202) +bind(#20202,#20183) #20203=* -tokeninfo(#20203,8,#20001,38,".") -#20204=@"loc,{#10000},6,10,6,10" -locations_default(#20204,#10000,6,10,6,10) +stmts(#20203,11,#20190,1,"try {\n\t ... (d);\n\t}") +#20204=@"loc,{#10000},3,2,7,2" +locations_default(#20204,#10000,3,2,7,2) hasLocation(#20203,#20204) +stmtContainers(#20203,#20177) #20205=* -tokeninfo(#20205,6,#20001,39,"log") -hasLocation(#20205,#20067) -#20206=* -tokeninfo(#20206,8,#20001,40,"(") -#20207=@"loc,{#10000},6,14,6,14" -locations_default(#20207,#10000,6,14,6,14) -hasLocation(#20206,#20207) -#20208=* -tokeninfo(#20208,6,#20001,41,"d") -hasLocation(#20208,#20069) +stmts(#20205,1,#20203,0,"{\n\t\tthrow [a, c];\n\t}") +#20206=@"loc,{#10000},3,6,5,2" +locations_default(#20206,#10000,3,6,5,2) +hasLocation(#20205,#20206) +stmtContainers(#20205,#20177) +#20207=* +stmts(#20207,10,#20205,0,"throw [a, c];") +#20208=@"loc,{#10000},4,3,4,15" +locations_default(#20208,#10000,4,3,4,15) +hasLocation(#20207,#20208) +stmtContainers(#20207,#20177) #20209=* -tokeninfo(#20209,8,#20001,42,")") -#20210=@"loc,{#10000},6,16,6,16" -locations_default(#20210,#10000,6,16,6,16) +exprs(#20209,7,#20207,0,"[a, c]") +#20210=@"loc,{#10000},4,9,4,14" +locations_default(#20210,#10000,4,9,4,14) hasLocation(#20209,#20210) +enclosingStmt(#20209,#20207) +exprContainers(#20209,#20177) #20211=* -tokeninfo(#20211,8,#20001,43,";") -#20212=@"loc,{#10000},6,17,6,17" -locations_default(#20212,#10000,6,17,6,17) -hasLocation(#20211,#20212) +exprs(#20211,79,#20209,0,"a") +hasLocation(#20211,#20081) +enclosingStmt(#20211,#20207) +exprContainers(#20211,#20177) +literals("a","a",#20211) +bind(#20211,#20181) +#20212=* +exprs(#20212,79,#20209,1,"c") +hasLocation(#20212,#20085) +enclosingStmt(#20212,#20207) +exprContainers(#20212,#20177) +literals("c","c",#20212) +bind(#20212,#20182) +arraySize(#20209,2) #20213=* -tokeninfo(#20213,8,#20001,44,"}") -#20214=@"loc,{#10000},7,2,7,2" -locations_default(#20214,#10000,7,2,7,2) +stmts(#20213,20,#20203,1,"catch ( ... (d);\n\t}") +#20214=@"loc,{#10000},5,4,7,2" +locations_default(#20214,#10000,5,4,7,2) hasLocation(#20213,#20214) +stmtContainers(#20213,#20177) #20215=* -tokeninfo(#20215,8,#20001,45,"}") -hasLocation(#20215,#20126) -#20216=* -tokeninfo(#20216,7,#20001,46,"function") -#20217=@"loc,{#10000},10,1,10,8" -locations_default(#20217,#10000,10,1,10,8) -hasLocation(#20216,#20217) +scopes(#20215,2) +scopenodes(#20213,#20215) +scopenesting(#20215,#20180) +#20216=@"var;{d};{#20215}" +variables(#20216,"d",#20215) +#20217=* +exprs(#20217,78,#20213,0,"d") +hasLocation(#20217,#20097) +enclosingStmt(#20217,#20213) +exprContainers(#20217,#20177) +literals("d","d",#20217) +decl(#20217,#20216) #20218=* -tokeninfo(#20218,6,#20001,47,"g") -hasLocation(#20218,#20073) -#20219=* -tokeninfo(#20219,8,#20001,48,"(") -#20220=@"loc,{#10000},10,11,10,11" -locations_default(#20220,#10000,10,11,10,11) -hasLocation(#20219,#20220) -#20221=* -tokeninfo(#20221,8,#20001,49,"{") -#20222=@"loc,{#10000},10,12,10,12" -locations_default(#20222,#10000,10,12,10,12) -hasLocation(#20221,#20222) -#20223=* -tokeninfo(#20223,6,#20001,50,"x") -hasLocation(#20223,#20081) +stmts(#20218,1,#20213,1,"{\n\t\tcon ... (d);\n\t}") +#20219=@"loc,{#10000},5,14,7,2" +locations_default(#20219,#10000,5,14,7,2) +hasLocation(#20218,#20219) +stmtContainers(#20218,#20177) +#20220=* +stmts(#20220,2,#20218,0,"console.log(d);") +#20221=@"loc,{#10000},6,3,6,17" +locations_default(#20221,#10000,6,3,6,17) +hasLocation(#20220,#20221) +stmtContainers(#20220,#20177) +#20222=* +exprs(#20222,13,#20220,0,"console.log(d)") +#20223=@"loc,{#10000},6,3,6,16" +locations_default(#20223,#10000,6,3,6,16) +hasLocation(#20222,#20223) +enclosingStmt(#20222,#20220) +exprContainers(#20222,#20177) #20224=* -tokeninfo(#20224,8,#20001,51,",") -#20225=@"loc,{#10000},10,15,10,15" -locations_default(#20225,#10000,10,15,10,15) +exprs(#20224,14,#20222,-1,"console.log") +#20225=@"loc,{#10000},6,3,6,13" +locations_default(#20225,#10000,6,3,6,13) hasLocation(#20224,#20225) +enclosingStmt(#20224,#20220) +exprContainers(#20224,#20177) #20226=* -tokeninfo(#20226,6,#20001,52,"y") -hasLocation(#20226,#20087) -#20227=* -tokeninfo(#20227,8,#20001,53,":") -#20228=@"loc,{#10000},10,18,10,18" -locations_default(#20228,#10000,10,18,10,18) -hasLocation(#20227,#20228) +exprs(#20226,79,#20224,0,"console") +hasLocation(#20226,#20103) +enclosingStmt(#20226,#20220) +exprContainers(#20226,#20177) +literals("console","console",#20226) +#20227=@"var;{console};{#20000}" +variables(#20227,"console",#20000) +bind(#20226,#20227) +#20228=* +exprs(#20228,0,#20224,1,"log") +hasLocation(#20228,#20107) +enclosingStmt(#20228,#20220) +exprContainers(#20228,#20177) +literals("log","log",#20228) #20229=* -tokeninfo(#20229,6,#20001,54,"z") -hasLocation(#20229,#20089) +exprs(#20229,79,#20222,0,"d") +hasLocation(#20229,#20111) +enclosingStmt(#20229,#20220) +exprContainers(#20229,#20177) +literals("d","d",#20229) +bind(#20229,#20216) #20230=* -tokeninfo(#20230,8,#20001,55,"}") -#20231=@"loc,{#10000},10,22,10,22" -locations_default(#20231,#10000,10,22,10,22) +stmts(#20230,17,#20001,1,"functio ... rn w;\n}") +#20231=@"loc,{#10000},10,1,13,1" +locations_default(#20231,#10000,10,1,13,1) hasLocation(#20230,#20231) +stmtContainers(#20230,#20001) #20232=* -tokeninfo(#20232,8,#20001,56,")") -#20233=@"loc,{#10000},10,23,10,23" -locations_default(#20233,#10000,10,23,10,23) -hasLocation(#20232,#20233) -#20234=* -tokeninfo(#20234,8,#20001,57,"{") -#20235=@"loc,{#10000},10,25,10,25" -locations_default(#20235,#10000,10,25,10,25) -hasLocation(#20234,#20235) -#20236=* -tokeninfo(#20236,7,#20001,58,"var") -#20237=@"loc,{#10000},11,2,11,4" -locations_default(#20237,#10000,11,2,11,4) -hasLocation(#20236,#20237) -#20238=* -tokeninfo(#20238,8,#20001,59,"{") -#20239=@"loc,{#10000},11,6,11,6" -locations_default(#20239,#10000,11,6,11,6) -hasLocation(#20238,#20239) +exprs(#20232,78,#20230,-1,"g") +hasLocation(#20232,#20122) +exprContainers(#20232,#20230) +literals("g","g",#20232) +decl(#20232,#20176) +#20233=* +scopes(#20233,1) +scopenodes(#20230,#20233) +scopenesting(#20233,#20000) +#20234=@"var;{w};{#20233}" +variables(#20234,"w",#20233) +#20235=@"var;{x};{#20233}" +variables(#20235,"x",#20233) +#20236=@"var;{z};{#20233}" +variables(#20236,"z",#20233) +#20237=* +exprs(#20237,68,#20230,0,"{ x, y: z }") +#20238=@"loc,{#10000},10,12,10,22" +locations_default(#20238,#10000,10,12,10,22) +hasLocation(#20237,#20238) +exprContainers(#20237,#20230) +#20239=* +properties(#20239,#20237,0,0,"x") +hasLocation(#20239,#20128) #20240=* -tokeninfo(#20240,8,#20001,60,"[") -#20241=@"loc,{#10000},11,8,11,8" -locations_default(#20241,#10000,11,8,11,8) -hasLocation(#20240,#20241) +exprs(#20240,0,#20239,0,"x") +hasLocation(#20240,#20128) +exprContainers(#20240,#20230) +literals("x","x",#20240) +#20241=* +exprs(#20241,78,#20239,1,"x") +hasLocation(#20241,#20128) +exprContainers(#20241,#20230) +literals("x","x",#20241) +decl(#20241,#20235) #20242=* -tokeninfo(#20242,6,#20001,61,"x") -hasLocation(#20242,#20102) -#20243=* -tokeninfo(#20243,8,#20001,62,"]") -#20244=@"loc,{#10000},11,10,11,10" -locations_default(#20244,#10000,11,10,11,10) -hasLocation(#20243,#20244) +properties(#20242,#20237,1,0,"y: z") +#20243=@"loc,{#10000},10,17,10,20" +locations_default(#20243,#10000,10,17,10,20) +hasLocation(#20242,#20243) +#20244=* +exprs(#20244,0,#20242,0,"y") +hasLocation(#20244,#20132) +exprContainers(#20244,#20230) +literals("y","y",#20244) #20245=* -tokeninfo(#20245,8,#20001,63,":") -#20246=@"loc,{#10000},11,11,11,11" -locations_default(#20246,#10000,11,11,11,11) -hasLocation(#20245,#20246) +exprs(#20245,78,#20242,1,"z") +hasLocation(#20245,#20136) +exprContainers(#20245,#20230) +literals("z","z",#20245) +decl(#20245,#20236) +#20246=@"var;{arguments};{#20233}" +variables(#20246,"arguments",#20233) +isArgumentsObject(#20246) #20247=* -tokeninfo(#20247,6,#20001,64,"w") -hasLocation(#20247,#20104) -#20248=* -tokeninfo(#20248,8,#20001,65,"}") -#20249=@"loc,{#10000},11,15,11,15" -locations_default(#20249,#10000,11,15,11,15) -hasLocation(#20248,#20249) -#20250=* -tokeninfo(#20250,8,#20001,66,"=") -#20251=@"loc,{#10000},11,17,11,17" -locations_default(#20251,#10000,11,17,11,17) -hasLocation(#20250,#20251) -#20252=* -tokeninfo(#20252,6,#20001,67,"z") -hasLocation(#20252,#20106) +stmts(#20247,1,#20230,-2,"{\n\tvar ... rn w;\n}") +#20248=@"loc,{#10000},10,25,13,1" +locations_default(#20248,#10000,10,25,13,1) +hasLocation(#20247,#20248) +stmtContainers(#20247,#20230) +#20249=* +stmts(#20249,18,#20247,0,"var { [x]: w } = z;") +#20250=@"loc,{#10000},11,2,11,20" +locations_default(#20250,#10000,11,2,11,20) +hasLocation(#20249,#20250) +stmtContainers(#20249,#20230) +#20251=* +exprs(#20251,64,#20249,0,"{ [x]: w } = z") +#20252=@"loc,{#10000},11,6,11,19" +locations_default(#20252,#10000,11,6,11,19) +hasLocation(#20251,#20252) +enclosingStmt(#20251,#20249) +exprContainers(#20251,#20230) #20253=* -tokeninfo(#20253,8,#20001,68,";") -#20254=@"loc,{#10000},11,20,11,20" -locations_default(#20254,#10000,11,20,11,20) +exprs(#20253,68,#20251,0,"{ [x]: w }") +#20254=@"loc,{#10000},11,6,11,15" +locations_default(#20254,#10000,11,6,11,15) hasLocation(#20253,#20254) +enclosingStmt(#20253,#20249) +exprContainers(#20253,#20230) #20255=* -tokeninfo(#20255,7,#20001,69,"return") -#20256=@"loc,{#10000},12,2,12,7" -locations_default(#20256,#10000,12,2,12,7) +properties(#20255,#20253,0,0,"[x]: w") +#20256=@"loc,{#10000},11,8,11,13" +locations_default(#20256,#10000,11,8,11,13) hasLocation(#20255,#20256) #20257=* -tokeninfo(#20257,6,#20001,70,"w") -hasLocation(#20257,#20110) +exprs(#20257,79,#20255,0,"x") +hasLocation(#20257,#20150) +enclosingStmt(#20257,#20249) +exprContainers(#20257,#20230) +literals("x","x",#20257) +bind(#20257,#20235) #20258=* -tokeninfo(#20258,8,#20001,71,";") -#20259=@"loc,{#10000},12,10,12,10" -locations_default(#20259,#10000,12,10,12,10) -hasLocation(#20258,#20259) +exprs(#20258,78,#20255,1,"w") +hasLocation(#20258,#20156) +enclosingStmt(#20258,#20249) +exprContainers(#20258,#20230) +literals("w","w",#20258) +decl(#20258,#20234) +isComputed(#20255) +#20259=* +exprs(#20259,79,#20251,1,"z") +hasLocation(#20259,#20162) +enclosingStmt(#20259,#20249) +exprContainers(#20259,#20230) +literals("z","z",#20259) +bind(#20259,#20236) #20260=* -tokeninfo(#20260,8,#20001,72,"}") -hasLocation(#20260,#20136) -#20261=* -tokeninfo(#20261,0,#20001,73,"") -#20262=@"loc,{#10000},13,2,13,1" -locations_default(#20262,#10000,13,2,13,1) -hasLocation(#20261,#20262) +stmts(#20260,9,#20247,1,"return w;") +#20261=@"loc,{#10000},12,2,12,10" +locations_default(#20261,#10000,12,2,12,10) +hasLocation(#20260,#20261) +stmtContainers(#20260,#20230) +#20262=* +exprs(#20262,79,#20260,0,"w") +hasLocation(#20262,#20168) +enclosingStmt(#20262,#20260) +exprContainers(#20262,#20230) +literals("w","w",#20262) +bind(#20262,#20234) #20263=* entry_cfg_node(#20263,#20001) #20264=@"loc,{#10000},1,1,1,0" @@ -814,72 +812,72 @@ locations_default(#20264,#10000,1,1,1,0) hasLocation(#20263,#20264) #20265=* exit_cfg_node(#20265,#20001) -hasLocation(#20265,#20262) -successor(#20070,#20265) +hasLocation(#20265,#20173) +successor(#20230,#20265) #20266=* -entry_cfg_node(#20266,#20070) +entry_cfg_node(#20266,#20230) #20267=@"loc,{#10000},10,1,10,0" locations_default(#20267,#10000,10,1,10,0) hasLocation(#20266,#20267) #20268=* -exit_cfg_node(#20268,#20070) -hasLocation(#20268,#20262) -successor(#20091,#20093) -successor(#20109,#20107) -successor(#20107,#20268) -successor(#20093,#20105) -successor(#20097,#20101) -successor(#20103,#20099) -successor(#20101,#20103) -successor(#20099,#20095) -successor(#20105,#20097) -successor(#20095,#20109) -successor(#20078,#20082) -successor(#20088,#20084) -successor(#20086,#20088) -successor(#20084,#20091) -successor(#20083,#20080) -successor(#20082,#20083) -successor(#20080,#20086) -successor(#20266,#20078) -successor(#20005,#20070) +exit_cfg_node(#20268,#20230) +hasLocation(#20268,#20173) +successor(#20247,#20249) +successor(#20262,#20260) +successor(#20260,#20268) +successor(#20249,#20259) +successor(#20253,#20257) +successor(#20258,#20255) +successor(#20257,#20258) +successor(#20255,#20251) +successor(#20259,#20253) +successor(#20251,#20262) +successor(#20237,#20240) +successor(#20245,#20242) +successor(#20244,#20245) +successor(#20242,#20247) +successor(#20241,#20239) +successor(#20240,#20241) +successor(#20239,#20244) +successor(#20266,#20237) +successor(#20177,#20230) #20269=* -entry_cfg_node(#20269,#20005) +entry_cfg_node(#20269,#20177) hasLocation(#20269,#20264) #20270=* -exit_cfg_node(#20270,#20005) +exit_cfg_node(#20270,#20177) #20271=@"loc,{#10000},8,2,8,1" locations_default(#20271,#10000,8,2,8,1) hasLocation(#20270,#20271) -successor(#20021,#20023) -successor(#20037,#20039) -successor(#20039,#20043) -successor(#20043,#20045) -successor(#20047,#20041) -successor(#20045,#20047) -successor(#20041,#20049) -successor(#20049,#20053) -successor(#20055,#20057) -successor(#20057,#20063) -successor(#20068,#20059) -successor(#20066,#20061) -successor(#20063,#20066) -successor(#20061,#20068) -successor(#20059,#20270) -successor(#20053,#20055) -successor(#20023,#20035) -successor(#20027,#20029) -successor(#20031,#20033) -successor(#20033,#20025) -successor(#20029,#20031) -successor(#20035,#20027) -successor(#20025,#20037) -successor(#20014,#20016) -successor(#20018,#20021) -successor(#20016,#20018) -successor(#20269,#20014) -successor(#20072,#20005) -successor(#20007,#20072) -successor(#20263,#20007) +successor(#20190,#20192) +successor(#20203,#20205) +successor(#20205,#20209) +successor(#20209,#20211) +successor(#20212,#20207) +successor(#20211,#20212) +successor(#20207,#20213) +successor(#20213,#20217) +successor(#20218,#20220) +successor(#20220,#20226) +successor(#20229,#20222) +successor(#20228,#20224) +successor(#20226,#20228) +successor(#20224,#20229) +successor(#20222,#20270) +successor(#20217,#20218) +successor(#20192,#20202) +successor(#20196,#20198) +successor(#20199,#20201) +successor(#20201,#20194) +successor(#20198,#20199) +successor(#20202,#20196) +successor(#20194,#20203) +successor(#20185,#20187) +successor(#20188,#20190) +successor(#20187,#20188) +successor(#20269,#20185) +successor(#20232,#20177) +successor(#20179,#20232) +successor(#20263,#20179) numlines(#10000,13,12,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2015/output/trap/export1.js.trap b/javascript/extractor/tests/es2015/output/trap/export1.js.trap index ab9ade05f8d..d941f194304 100644 --- a/javascript/extractor/tests/es2015/output/trap/export1.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/export1.js.trap @@ -9,86 +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,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) +isES2015Module(#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 +97,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") diff --git a/javascript/extractor/tests/es2015/output/trap/export10.js.trap b/javascript/extractor/tests/es2015/output/trap/export10.js.trap index 065c269c934..11992095dfe 100644 --- a/javascript/extractor/tests/es2015/output/trap/export10.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/export10.js.trap @@ -9,128 +9,128 @@ 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) +isES2015Module(#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 +138,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") diff --git a/javascript/extractor/tests/es2015/output/trap/export11.js.trap b/javascript/extractor/tests/es2015/output/trap/export11.js.trap index 29cda6f7a06..25f9caf1b81 100644 --- a/javascript/extractor/tests/es2015/output/trap/export11.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/export11.js.trap @@ -9,92 +9,92 @@ 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) +isES2015Module(#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 +102,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") diff --git a/javascript/extractor/tests/es2015/output/trap/export2.js.trap b/javascript/extractor/tests/es2015/output/trap/export2.js.trap index 87b7bc5c223..27ec1b0d1d1 100644 --- a/javascript/extractor/tests/es2015/output/trap/export2.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/export2.js.trap @@ -9,102 +9,102 @@ 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) +isES2015Module(#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 +112,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") diff --git a/javascript/extractor/tests/es2015/output/trap/export3.js.trap b/javascript/extractor/tests/es2015/output/trap/export3.js.trap index 1f8592dae57..bcb6b619e12 100644 --- a/javascript/extractor/tests/es2015/output/trap/export3.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/export3.js.trap @@ -9,107 +9,107 @@ 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) +isES2015Module(#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 +117,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") diff --git a/javascript/extractor/tests/es2015/output/trap/export4.js.trap b/javascript/extractor/tests/es2015/output/trap/export4.js.trap index d9565ac80cc..541992fd903 100644 --- a/javascript/extractor/tests/es2015/output/trap/export4.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/export4.js.trap @@ -9,95 +9,95 @@ 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) +isES2015Module(#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 +105,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") diff --git a/javascript/extractor/tests/es2015/output/trap/export5.js.trap b/javascript/extractor/tests/es2015/output/trap/export5.js.trap index 320b00886a8..11aee4bdd59 100644 --- a/javascript/extractor/tests/es2015/output/trap/export5.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/export5.js.trap @@ -9,212 +9,213 @@ 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) +isES2015Module(#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 +223,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") diff --git a/javascript/extractor/tests/es2015/output/trap/export6.js.trap b/javascript/extractor/tests/es2015/output/trap/export6.js.trap index 08c3d379b81..be811781ee0 100644 --- a/javascript/extractor/tests/es2015/output/trap/export6.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/export6.js.trap @@ -9,59 +9,60 @@ 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) +isES2015Module(#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 +70,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") diff --git a/javascript/extractor/tests/es2015/output/trap/export7.js.trap b/javascript/extractor/tests/es2015/output/trap/export7.js.trap index f7a1c406d13..3856ac50b40 100644 --- a/javascript/extractor/tests/es2015/output/trap/export7.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/export7.js.trap @@ -9,125 +9,126 @@ 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) +isES2015Module(#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 +136,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") diff --git a/javascript/extractor/tests/es2015/output/trap/export8.js.trap b/javascript/extractor/tests/es2015/output/trap/export8.js.trap index 458f5c098a9..56b6518f11e 100644 --- a/javascript/extractor/tests/es2015/output/trap/export8.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/export8.js.trap @@ -9,109 +9,110 @@ 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) +isES2015Module(#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 +120,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") diff --git a/javascript/extractor/tests/es2015/output/trap/export9.js.trap b/javascript/extractor/tests/es2015/output/trap/export9.js.trap index 99be90b75cd..65237923a52 100644 --- a/javascript/extractor/tests/es2015/output/trap/export9.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/export9.js.trap @@ -9,141 +9,141 @@ 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) +isES2015Module(#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 +151,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") diff --git a/javascript/extractor/tests/es2015/output/trap/forof.js.trap b/javascript/extractor/tests/es2015/output/trap/forof.js.trap index 40ff88df586..f8d8c3db1fb 100644 --- a/javascript/extractor/tests/es2015/output/trap/forof.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/forof.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/import1.js.trap b/javascript/extractor/tests/es2015/output/trap/import1.js.trap index 8466f842d7b..7e28e03e25f 100644 --- a/javascript/extractor/tests/es2015/output/trap/import1.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/import1.js.trap @@ -9,82 +9,83 @@ 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) +isES2015Module(#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 +93,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") diff --git a/javascript/extractor/tests/es2015/output/trap/import2.js.trap b/javascript/extractor/tests/es2015/output/trap/import2.js.trap index 3fdc1d70488..b6385936355 100644 --- a/javascript/extractor/tests/es2015/output/trap/import2.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/import2.js.trap @@ -9,98 +9,99 @@ 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) +isES2015Module(#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 +109,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") diff --git a/javascript/extractor/tests/es2015/output/trap/import3.js.trap b/javascript/extractor/tests/es2015/output/trap/import3.js.trap index e42af4de913..135adff01a2 100644 --- a/javascript/extractor/tests/es2015/output/trap/import3.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/import3.js.trap @@ -9,110 +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,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) +isES2015Module(#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 +121,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") diff --git a/javascript/extractor/tests/es2015/output/trap/import4.js.trap b/javascript/extractor/tests/es2015/output/trap/import4.js.trap index d4eb85a489c..2243a8fcd20 100644 --- a/javascript/extractor/tests/es2015/output/trap/import4.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/import4.js.trap @@ -9,143 +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,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) +isES2015Module(#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 +154,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") diff --git a/javascript/extractor/tests/es2015/output/trap/import5.js.trap b/javascript/extractor/tests/es2015/output/trap/import5.js.trap index 18b2128ef58..ea5ea8a3836 100644 --- a/javascript/extractor/tests/es2015/output/trap/import5.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/import5.js.trap @@ -9,90 +9,91 @@ 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) +isES2015Module(#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 +101,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") diff --git a/javascript/extractor/tests/es2015/output/trap/import6.js.trap b/javascript/extractor/tests/es2015/output/trap/import6.js.trap index 76399b8698d..252b32338cf 100644 --- a/javascript/extractor/tests/es2015/output/trap/import6.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/import6.js.trap @@ -9,49 +9,50 @@ 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) +isES2015Module(#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 +60,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") diff --git a/javascript/extractor/tests/es2015/output/trap/import7.js.trap b/javascript/extractor/tests/es2015/output/trap/import7.js.trap index 44f037a199f..974a3cc10b7 100644 --- a/javascript/extractor/tests/es2015/output/trap/import7.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/import7.js.trap @@ -9,207 +9,208 @@ 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) +isES2015Module(#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 +218,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") diff --git a/javascript/extractor/tests/es2015/output/trap/let.js.trap b/javascript/extractor/tests/es2015/output/trap/let.js.trap index c58b10d22e6..24e5491d9b8 100644 --- a/javascript/extractor/tests/es2015/output/trap/let.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/let.js.trap @@ -9,662 +9,662 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,12,1" -locations_default(#20002,#10000,1,1,12,1) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,1,#20001,0,"{\n l ... }\n}") -hasLocation(#20003,#20002) -stmtContainers(#20003,#20001) +#20002=* +lines(#20002,#20001,"{"," +") +#20003=@"loc,{#10000},1,1,1,1" +locations_default(#20003,#10000,1,1,1,1) +hasLocation(#20002,#20003) #20004=* -scopes(#20004,4) -scopenodes(#20003,#20004) -scopenesting(#20004,#20000) -#20005=@"var;{x};{#20004}" -variables(#20005,"x",#20004) +lines(#20004,#20001," let x = 23;"," +") +#20005=@"loc,{#10000},2,1,2,15" +locations_default(#20005,#10000,2,1,2,15) +hasLocation(#20004,#20005) +indentation(#10000,2," ",4) #20006=* -stmts(#20006,23,#20003,0,"let x = 23;") -#20007=@"loc,{#10000},2,5,2,15" -locations_default(#20007,#10000,2,5,2,15) +lines(#20006,#20001," {"," +") +#20007=@"loc,{#10000},3,1,3,5" +locations_default(#20007,#10000,3,1,3,5) hasLocation(#20006,#20007) -stmtContainers(#20006,#20001) +indentation(#10000,3," ",4) #20008=* -exprs(#20008,64,#20006,0,"x = 23") -#20009=@"loc,{#10000},2,9,2,14" -locations_default(#20009,#10000,2,9,2,14) +lines(#20008,#20001," let x = 42;"," +") +#20009=@"loc,{#10000},4,1,4,19" +locations_default(#20009,#10000,4,1,4,19) hasLocation(#20008,#20009) -enclosingStmt(#20008,#20006) -exprContainers(#20008,#20001) +indentation(#10000,4," ",8) #20010=* -exprs(#20010,78,#20008,0,"x") -#20011=@"loc,{#10000},2,9,2,9" -locations_default(#20011,#10000,2,9,2,9) +lines(#20010,#20001," for (let x = x-19; x<42;) {"," +") +#20011=@"loc,{#10000},5,1,5,35" +locations_default(#20011,#10000,5,1,5,35) hasLocation(#20010,#20011) -enclosingStmt(#20010,#20006) -exprContainers(#20010,#20001) -literals("x","x",#20010) -decl(#20010,#20005) +indentation(#10000,5," ",8) #20012=* -exprs(#20012,3,#20008,1,"23") -#20013=@"loc,{#10000},2,13,2,14" -locations_default(#20013,#10000,2,13,2,14) +lines(#20012,#20001," let x = 56;"," +") +#20013=@"loc,{#10000},6,1,6,23" +locations_default(#20013,#10000,6,1,6,23) hasLocation(#20012,#20013) -enclosingStmt(#20012,#20006) -exprContainers(#20012,#20001) -literals("23","23",#20012) +indentation(#10000,6," ",12) #20014=* -stmts(#20014,1,#20003,1,"{\n ... ;\n }") -#20015=@"loc,{#10000},3,5,11,5" -locations_default(#20015,#10000,3,5,11,5) +lines(#20014,#20001," console.log(x);"," +") +#20015=@"loc,{#10000},7,1,7,27" +locations_default(#20015,#10000,7,1,7,27) hasLocation(#20014,#20015) -stmtContainers(#20014,#20001) +indentation(#10000,7," ",12) #20016=* -scopes(#20016,4) -scopenodes(#20014,#20016) -scopenesting(#20016,#20004) -#20017=@"var;{x};{#20016}" -variables(#20017,"x",#20016) +lines(#20016,#20001," }"," +") +#20017=@"loc,{#10000},8,1,8,9" +locations_default(#20017,#10000,8,1,8,9) +hasLocation(#20016,#20017) +indentation(#10000,8," ",8) #20018=* -stmts(#20018,23,#20014,0,"let x = 42;") -#20019=@"loc,{#10000},4,9,4,19" -locations_default(#20019,#10000,4,9,4,19) +lines(#20018,#20001," for (let x in { x: x })"," +") +#20019=@"loc,{#10000},9,1,9,31" +locations_default(#20019,#10000,9,1,9,31) hasLocation(#20018,#20019) -stmtContainers(#20018,#20001) +indentation(#10000,9," ",8) #20020=* -exprs(#20020,64,#20018,0,"x = 42") -#20021=@"loc,{#10000},4,13,4,18" -locations_default(#20021,#10000,4,13,4,18) +lines(#20020,#20001," x;"," +") +#20021=@"loc,{#10000},10,1,10,14" +locations_default(#20021,#10000,10,1,10,14) hasLocation(#20020,#20021) -enclosingStmt(#20020,#20018) -exprContainers(#20020,#20001) +indentation(#10000,10," ",12) #20022=* -exprs(#20022,78,#20020,0,"x") -#20023=@"loc,{#10000},4,13,4,13" -locations_default(#20023,#10000,4,13,4,13) +lines(#20022,#20001," }"," +") +#20023=@"loc,{#10000},11,1,11,5" +locations_default(#20023,#10000,11,1,11,5) hasLocation(#20022,#20023) -enclosingStmt(#20022,#20018) -exprContainers(#20022,#20001) -literals("x","x",#20022) -decl(#20022,#20017) +indentation(#10000,11," ",4) #20024=* -exprs(#20024,3,#20020,1,"42") -#20025=@"loc,{#10000},4,17,4,18" -locations_default(#20025,#10000,4,17,4,18) +lines(#20024,#20001,"}","") +#20025=@"loc,{#10000},12,1,12,1" +locations_default(#20025,#10000,12,1,12,1) hasLocation(#20024,#20025) -enclosingStmt(#20024,#20018) -exprContainers(#20024,#20001) -literals("42","42",#20024) +numlines(#20001,12,12,0) #20026=* -stmts(#20026,14,#20014,1,"for (le ... }") -#20027=@"loc,{#10000},5,9,8,9" -locations_default(#20027,#10000,5,9,8,9) -hasLocation(#20026,#20027) -stmtContainers(#20026,#20001) -#20028=* -scopes(#20028,5) -scopenodes(#20026,#20028) -scopenesting(#20028,#20016) -#20029=@"var;{x};{#20028}" -variables(#20029,"x",#20028) -#20030=* -exprs(#20030,27,#20026,1,"x<42") -#20031=@"loc,{#10000},5,28,5,31" -locations_default(#20031,#10000,5,28,5,31) -hasLocation(#20030,#20031) -enclosingStmt(#20030,#20026) -exprContainers(#20030,#20001) -#20032=* -exprs(#20032,79,#20030,0,"x") -#20033=@"loc,{#10000},5,28,5,28" -locations_default(#20033,#10000,5,28,5,28) -hasLocation(#20032,#20033) -enclosingStmt(#20032,#20026) -exprContainers(#20032,#20001) -literals("x","x",#20032) -bind(#20032,#20029) -#20034=* -exprs(#20034,3,#20030,1,"42") -#20035=@"loc,{#10000},5,30,5,31" -locations_default(#20035,#10000,5,30,5,31) -hasLocation(#20034,#20035) -enclosingStmt(#20034,#20026) -exprContainers(#20034,#20001) -literals("42","42",#20034) -#20036=* -stmts(#20036,23,#20026,0,"let x = x-19") -#20037=@"loc,{#10000},5,14,5,25" -locations_default(#20037,#10000,5,14,5,25) -hasLocation(#20036,#20037) -stmtContainers(#20036,#20001) -#20038=* -exprs(#20038,64,#20036,0,"x = x-19") -#20039=@"loc,{#10000},5,18,5,25" -locations_default(#20039,#10000,5,18,5,25) -hasLocation(#20038,#20039) -enclosingStmt(#20038,#20036) -exprContainers(#20038,#20001) -#20040=* -exprs(#20040,78,#20038,0,"x") -#20041=@"loc,{#10000},5,18,5,18" -locations_default(#20041,#10000,5,18,5,18) -hasLocation(#20040,#20041) -enclosingStmt(#20040,#20036) -exprContainers(#20040,#20001) -literals("x","x",#20040) -decl(#20040,#20029) -#20042=* -exprs(#20042,35,#20038,1,"x-19") -#20043=@"loc,{#10000},5,22,5,25" -locations_default(#20043,#10000,5,22,5,25) -hasLocation(#20042,#20043) -enclosingStmt(#20042,#20036) -exprContainers(#20042,#20001) -#20044=* -exprs(#20044,79,#20042,0,"x") -#20045=@"loc,{#10000},5,22,5,22" -locations_default(#20045,#10000,5,22,5,22) -hasLocation(#20044,#20045) -enclosingStmt(#20044,#20036) -exprContainers(#20044,#20001) -literals("x","x",#20044) -bind(#20044,#20017) -#20046=* -exprs(#20046,3,#20042,1,"19") -#20047=@"loc,{#10000},5,24,5,25" -locations_default(#20047,#10000,5,24,5,25) -hasLocation(#20046,#20047) -enclosingStmt(#20046,#20036) -exprContainers(#20046,#20001) -literals("19","19",#20046) -#20048=* -stmts(#20048,1,#20026,3,"{\n ... }") -#20049=@"loc,{#10000},5,35,8,9" -locations_default(#20049,#10000,5,35,8,9) -hasLocation(#20048,#20049) -stmtContainers(#20048,#20001) -#20050=* -scopes(#20050,4) -scopenodes(#20048,#20050) -scopenesting(#20050,#20028) -#20051=@"var;{x};{#20050}" -variables(#20051,"x",#20050) -#20052=* -stmts(#20052,23,#20048,0,"let x = 56;") -#20053=@"loc,{#10000},6,13,6,23" -locations_default(#20053,#10000,6,13,6,23) -hasLocation(#20052,#20053) -stmtContainers(#20052,#20001) -#20054=* -exprs(#20054,64,#20052,0,"x = 56") -#20055=@"loc,{#10000},6,17,6,22" -locations_default(#20055,#10000,6,17,6,22) -hasLocation(#20054,#20055) -enclosingStmt(#20054,#20052) -exprContainers(#20054,#20001) -#20056=* -exprs(#20056,78,#20054,0,"x") -#20057=@"loc,{#10000},6,17,6,17" -locations_default(#20057,#10000,6,17,6,17) -hasLocation(#20056,#20057) -enclosingStmt(#20056,#20052) -exprContainers(#20056,#20001) -literals("x","x",#20056) -decl(#20056,#20051) -#20058=* -exprs(#20058,3,#20054,1,"56") -#20059=@"loc,{#10000},6,21,6,22" -locations_default(#20059,#10000,6,21,6,22) -hasLocation(#20058,#20059) -enclosingStmt(#20058,#20052) -exprContainers(#20058,#20001) -literals("56","56",#20058) -#20060=* -stmts(#20060,2,#20048,1,"console.log(x);") -#20061=@"loc,{#10000},7,13,7,27" -locations_default(#20061,#10000,7,13,7,27) -hasLocation(#20060,#20061) -stmtContainers(#20060,#20001) -#20062=* -exprs(#20062,13,#20060,0,"console.log(x)") -#20063=@"loc,{#10000},7,13,7,26" -locations_default(#20063,#10000,7,13,7,26) -hasLocation(#20062,#20063) -enclosingStmt(#20062,#20060) -exprContainers(#20062,#20001) -#20064=* -exprs(#20064,14,#20062,-1,"console.log") -#20065=@"loc,{#10000},7,13,7,23" -locations_default(#20065,#10000,7,13,7,23) -hasLocation(#20064,#20065) -enclosingStmt(#20064,#20060) -exprContainers(#20064,#20001) -#20066=* -exprs(#20066,79,#20064,0,"console") -#20067=@"loc,{#10000},7,13,7,19" -locations_default(#20067,#10000,7,13,7,19) -hasLocation(#20066,#20067) -enclosingStmt(#20066,#20060) -exprContainers(#20066,#20001) -literals("console","console",#20066) -#20068=@"var;{console};{#20000}" -variables(#20068,"console",#20000) -bind(#20066,#20068) +tokeninfo(#20026,8,#20001,0,"{") +hasLocation(#20026,#20003) +#20027=* +tokeninfo(#20027,7,#20001,1,"let") +#20028=@"loc,{#10000},2,5,2,7" +locations_default(#20028,#10000,2,5,2,7) +hasLocation(#20027,#20028) +#20029=* +tokeninfo(#20029,6,#20001,2,"x") +#20030=@"loc,{#10000},2,9,2,9" +locations_default(#20030,#10000,2,9,2,9) +hasLocation(#20029,#20030) +#20031=* +tokeninfo(#20031,8,#20001,3,"=") +#20032=@"loc,{#10000},2,11,2,11" +locations_default(#20032,#10000,2,11,2,11) +hasLocation(#20031,#20032) +#20033=* +tokeninfo(#20033,3,#20001,4,"23") +#20034=@"loc,{#10000},2,13,2,14" +locations_default(#20034,#10000,2,13,2,14) +hasLocation(#20033,#20034) +#20035=* +tokeninfo(#20035,8,#20001,5,";") +#20036=@"loc,{#10000},2,15,2,15" +locations_default(#20036,#10000,2,15,2,15) +hasLocation(#20035,#20036) +#20037=* +tokeninfo(#20037,8,#20001,6,"{") +#20038=@"loc,{#10000},3,5,3,5" +locations_default(#20038,#10000,3,5,3,5) +hasLocation(#20037,#20038) +#20039=* +tokeninfo(#20039,7,#20001,7,"let") +#20040=@"loc,{#10000},4,9,4,11" +locations_default(#20040,#10000,4,9,4,11) +hasLocation(#20039,#20040) +#20041=* +tokeninfo(#20041,6,#20001,8,"x") +#20042=@"loc,{#10000},4,13,4,13" +locations_default(#20042,#10000,4,13,4,13) +hasLocation(#20041,#20042) +#20043=* +tokeninfo(#20043,8,#20001,9,"=") +#20044=@"loc,{#10000},4,15,4,15" +locations_default(#20044,#10000,4,15,4,15) +hasLocation(#20043,#20044) +#20045=* +tokeninfo(#20045,3,#20001,10,"42") +#20046=@"loc,{#10000},4,17,4,18" +locations_default(#20046,#10000,4,17,4,18) +hasLocation(#20045,#20046) +#20047=* +tokeninfo(#20047,8,#20001,11,";") +#20048=@"loc,{#10000},4,19,4,19" +locations_default(#20048,#10000,4,19,4,19) +hasLocation(#20047,#20048) +#20049=* +tokeninfo(#20049,7,#20001,12,"for") +#20050=@"loc,{#10000},5,9,5,11" +locations_default(#20050,#10000,5,9,5,11) +hasLocation(#20049,#20050) +#20051=* +tokeninfo(#20051,8,#20001,13,"(") +#20052=@"loc,{#10000},5,13,5,13" +locations_default(#20052,#10000,5,13,5,13) +hasLocation(#20051,#20052) +#20053=* +tokeninfo(#20053,7,#20001,14,"let") +#20054=@"loc,{#10000},5,14,5,16" +locations_default(#20054,#10000,5,14,5,16) +hasLocation(#20053,#20054) +#20055=* +tokeninfo(#20055,6,#20001,15,"x") +#20056=@"loc,{#10000},5,18,5,18" +locations_default(#20056,#10000,5,18,5,18) +hasLocation(#20055,#20056) +#20057=* +tokeninfo(#20057,8,#20001,16,"=") +#20058=@"loc,{#10000},5,20,5,20" +locations_default(#20058,#10000,5,20,5,20) +hasLocation(#20057,#20058) +#20059=* +tokeninfo(#20059,6,#20001,17,"x") +#20060=@"loc,{#10000},5,22,5,22" +locations_default(#20060,#10000,5,22,5,22) +hasLocation(#20059,#20060) +#20061=* +tokeninfo(#20061,8,#20001,18,"-") +#20062=@"loc,{#10000},5,23,5,23" +locations_default(#20062,#10000,5,23,5,23) +hasLocation(#20061,#20062) +#20063=* +tokeninfo(#20063,3,#20001,19,"19") +#20064=@"loc,{#10000},5,24,5,25" +locations_default(#20064,#10000,5,24,5,25) +hasLocation(#20063,#20064) +#20065=* +tokeninfo(#20065,8,#20001,20,";") +#20066=@"loc,{#10000},5,26,5,26" +locations_default(#20066,#10000,5,26,5,26) +hasLocation(#20065,#20066) +#20067=* +tokeninfo(#20067,6,#20001,21,"x") +#20068=@"loc,{#10000},5,28,5,28" +locations_default(#20068,#10000,5,28,5,28) +hasLocation(#20067,#20068) #20069=* -exprs(#20069,0,#20064,1,"log") -#20070=@"loc,{#10000},7,21,7,23" -locations_default(#20070,#10000,7,21,7,23) +tokeninfo(#20069,8,#20001,22,"<") +#20070=@"loc,{#10000},5,29,5,29" +locations_default(#20070,#10000,5,29,5,29) hasLocation(#20069,#20070) -enclosingStmt(#20069,#20060) -exprContainers(#20069,#20001) -literals("log","log",#20069) #20071=* -exprs(#20071,79,#20062,0,"x") -#20072=@"loc,{#10000},7,25,7,25" -locations_default(#20072,#10000,7,25,7,25) +tokeninfo(#20071,3,#20001,23,"42") +#20072=@"loc,{#10000},5,30,5,31" +locations_default(#20072,#10000,5,30,5,31) hasLocation(#20071,#20072) -enclosingStmt(#20071,#20060) -exprContainers(#20071,#20001) -literals("x","x",#20071) -bind(#20071,#20051) #20073=* -stmts(#20073,15,#20014,2,"for (le ... x;") -#20074=@"loc,{#10000},9,9,10,14" -locations_default(#20074,#10000,9,9,10,14) +tokeninfo(#20073,8,#20001,24,";") +#20074=@"loc,{#10000},5,32,5,32" +locations_default(#20074,#10000,5,32,5,32) hasLocation(#20073,#20074) -stmtContainers(#20073,#20001) #20075=* -exprs(#20075,8,#20073,1,"{ x: x }") -#20076=@"loc,{#10000},9,23,9,30" -locations_default(#20076,#10000,9,23,9,30) +tokeninfo(#20075,8,#20001,25,")") +#20076=@"loc,{#10000},5,33,5,33" +locations_default(#20076,#10000,5,33,5,33) hasLocation(#20075,#20076) -enclosingStmt(#20075,#20073) -exprContainers(#20075,#20001) #20077=* -properties(#20077,#20075,0,0,"x: x") -#20078=@"loc,{#10000},9,25,9,28" -locations_default(#20078,#10000,9,25,9,28) +tokeninfo(#20077,8,#20001,26,"{") +#20078=@"loc,{#10000},5,35,5,35" +locations_default(#20078,#10000,5,35,5,35) hasLocation(#20077,#20078) #20079=* -exprs(#20079,0,#20077,0,"x") -#20080=@"loc,{#10000},9,25,9,25" -locations_default(#20080,#10000,9,25,9,25) +tokeninfo(#20079,7,#20001,27,"let") +#20080=@"loc,{#10000},6,13,6,15" +locations_default(#20080,#10000,6,13,6,15) hasLocation(#20079,#20080) -enclosingStmt(#20079,#20073) -exprContainers(#20079,#20001) -literals("x","x",#20079) #20081=* -exprs(#20081,79,#20077,1,"x") -#20082=@"loc,{#10000},9,28,9,28" -locations_default(#20082,#10000,9,28,9,28) +tokeninfo(#20081,6,#20001,28,"x") +#20082=@"loc,{#10000},6,17,6,17" +locations_default(#20082,#10000,6,17,6,17) hasLocation(#20081,#20082) -enclosingStmt(#20081,#20073) -exprContainers(#20081,#20001) -literals("x","x",#20081) -bind(#20081,#20017) #20083=* -scopes(#20083,6) -scopenodes(#20073,#20083) -scopenesting(#20083,#20016) -#20084=@"var;{x};{#20083}" -variables(#20084,"x",#20083) +tokeninfo(#20083,8,#20001,29,"=") +#20084=@"loc,{#10000},6,19,6,19" +locations_default(#20084,#10000,6,19,6,19) +hasLocation(#20083,#20084) #20085=* -stmts(#20085,23,#20073,0,"let x") -#20086=@"loc,{#10000},9,14,9,18" -locations_default(#20086,#10000,9,14,9,18) +tokeninfo(#20085,3,#20001,30,"56") +#20086=@"loc,{#10000},6,21,6,22" +locations_default(#20086,#10000,6,21,6,22) hasLocation(#20085,#20086) -stmtContainers(#20085,#20001) #20087=* -exprs(#20087,64,#20085,0,"x") -#20088=@"loc,{#10000},9,18,9,18" -locations_default(#20088,#10000,9,18,9,18) +tokeninfo(#20087,8,#20001,31,";") +#20088=@"loc,{#10000},6,23,6,23" +locations_default(#20088,#10000,6,23,6,23) hasLocation(#20087,#20088) -enclosingStmt(#20087,#20085) -exprContainers(#20087,#20001) #20089=* -exprs(#20089,78,#20087,0,"x") -hasLocation(#20089,#20088) -enclosingStmt(#20089,#20085) -exprContainers(#20089,#20001) -literals("x","x",#20089) -decl(#20089,#20084) -#20090=* -stmts(#20090,2,#20073,2,"x;") -#20091=@"loc,{#10000},10,13,10,14" -locations_default(#20091,#10000,10,13,10,14) -hasLocation(#20090,#20091) -stmtContainers(#20090,#20001) -#20092=* -exprs(#20092,79,#20090,0,"x") -#20093=@"loc,{#10000},10,13,10,13" -locations_default(#20093,#10000,10,13,10,13) -hasLocation(#20092,#20093) -enclosingStmt(#20092,#20090) -exprContainers(#20092,#20001) -literals("x","x",#20092) -bind(#20092,#20084) -#20094=* -lines(#20094,#20001,"{"," -") -#20095=@"loc,{#10000},1,1,1,1" -locations_default(#20095,#10000,1,1,1,1) -hasLocation(#20094,#20095) -#20096=* -lines(#20096,#20001," let x = 23;"," -") -#20097=@"loc,{#10000},2,1,2,15" -locations_default(#20097,#10000,2,1,2,15) -hasLocation(#20096,#20097) -indentation(#10000,2," ",4) -#20098=* -lines(#20098,#20001," {"," -") -#20099=@"loc,{#10000},3,1,3,5" -locations_default(#20099,#10000,3,1,3,5) -hasLocation(#20098,#20099) -indentation(#10000,3," ",4) -#20100=* -lines(#20100,#20001," let x = 42;"," -") -#20101=@"loc,{#10000},4,1,4,19" -locations_default(#20101,#10000,4,1,4,19) -hasLocation(#20100,#20101) -indentation(#10000,4," ",8) -#20102=* -lines(#20102,#20001," for (let x = x-19; x<42;) {"," -") -#20103=@"loc,{#10000},5,1,5,35" -locations_default(#20103,#10000,5,1,5,35) -hasLocation(#20102,#20103) -indentation(#10000,5," ",8) -#20104=* -lines(#20104,#20001," let x = 56;"," -") -#20105=@"loc,{#10000},6,1,6,23" -locations_default(#20105,#10000,6,1,6,23) -hasLocation(#20104,#20105) -indentation(#10000,6," ",12) -#20106=* -lines(#20106,#20001," console.log(x);"," -") -#20107=@"loc,{#10000},7,1,7,27" -locations_default(#20107,#10000,7,1,7,27) -hasLocation(#20106,#20107) -indentation(#10000,7," ",12) -#20108=* -lines(#20108,#20001," }"," -") -#20109=@"loc,{#10000},8,1,8,9" -locations_default(#20109,#10000,8,1,8,9) -hasLocation(#20108,#20109) -indentation(#10000,8," ",8) -#20110=* -lines(#20110,#20001," for (let x in { x: x })"," -") -#20111=@"loc,{#10000},9,1,9,31" -locations_default(#20111,#10000,9,1,9,31) -hasLocation(#20110,#20111) -indentation(#10000,9," ",8) -#20112=* -lines(#20112,#20001," x;"," -") -#20113=@"loc,{#10000},10,1,10,14" -locations_default(#20113,#10000,10,1,10,14) -hasLocation(#20112,#20113) -indentation(#10000,10," ",12) -#20114=* -lines(#20114,#20001," }"," -") -#20115=@"loc,{#10000},11,1,11,5" -locations_default(#20115,#10000,11,1,11,5) -hasLocation(#20114,#20115) -indentation(#10000,11," ",4) -#20116=* -lines(#20116,#20001,"}","") -#20117=@"loc,{#10000},12,1,12,1" -locations_default(#20117,#10000,12,1,12,1) -hasLocation(#20116,#20117) -numlines(#20001,12,12,0) -#20118=* -tokeninfo(#20118,8,#20001,0,"{") -hasLocation(#20118,#20095) +tokeninfo(#20089,6,#20001,32,"console") +#20090=@"loc,{#10000},7,13,7,19" +locations_default(#20090,#10000,7,13,7,19) +hasLocation(#20089,#20090) +#20091=* +tokeninfo(#20091,8,#20001,33,".") +#20092=@"loc,{#10000},7,20,7,20" +locations_default(#20092,#10000,7,20,7,20) +hasLocation(#20091,#20092) +#20093=* +tokeninfo(#20093,6,#20001,34,"log") +#20094=@"loc,{#10000},7,21,7,23" +locations_default(#20094,#10000,7,21,7,23) +hasLocation(#20093,#20094) +#20095=* +tokeninfo(#20095,8,#20001,35,"(") +#20096=@"loc,{#10000},7,24,7,24" +locations_default(#20096,#10000,7,24,7,24) +hasLocation(#20095,#20096) +#20097=* +tokeninfo(#20097,6,#20001,36,"x") +#20098=@"loc,{#10000},7,25,7,25" +locations_default(#20098,#10000,7,25,7,25) +hasLocation(#20097,#20098) +#20099=* +tokeninfo(#20099,8,#20001,37,")") +#20100=@"loc,{#10000},7,26,7,26" +locations_default(#20100,#10000,7,26,7,26) +hasLocation(#20099,#20100) +#20101=* +tokeninfo(#20101,8,#20001,38,";") +#20102=@"loc,{#10000},7,27,7,27" +locations_default(#20102,#10000,7,27,7,27) +hasLocation(#20101,#20102) +#20103=* +tokeninfo(#20103,8,#20001,39,"}") +#20104=@"loc,{#10000},8,9,8,9" +locations_default(#20104,#10000,8,9,8,9) +hasLocation(#20103,#20104) +#20105=* +tokeninfo(#20105,7,#20001,40,"for") +#20106=@"loc,{#10000},9,9,9,11" +locations_default(#20106,#10000,9,9,9,11) +hasLocation(#20105,#20106) +#20107=* +tokeninfo(#20107,8,#20001,41,"(") +#20108=@"loc,{#10000},9,13,9,13" +locations_default(#20108,#10000,9,13,9,13) +hasLocation(#20107,#20108) +#20109=* +tokeninfo(#20109,7,#20001,42,"let") +#20110=@"loc,{#10000},9,14,9,16" +locations_default(#20110,#10000,9,14,9,16) +hasLocation(#20109,#20110) +#20111=* +tokeninfo(#20111,6,#20001,43,"x") +#20112=@"loc,{#10000},9,18,9,18" +locations_default(#20112,#10000,9,18,9,18) +hasLocation(#20111,#20112) +#20113=* +tokeninfo(#20113,7,#20001,44,"in") +#20114=@"loc,{#10000},9,20,9,21" +locations_default(#20114,#10000,9,20,9,21) +hasLocation(#20113,#20114) +#20115=* +tokeninfo(#20115,8,#20001,45,"{") +#20116=@"loc,{#10000},9,23,9,23" +locations_default(#20116,#10000,9,23,9,23) +hasLocation(#20115,#20116) +#20117=* +tokeninfo(#20117,6,#20001,46,"x") +#20118=@"loc,{#10000},9,25,9,25" +locations_default(#20118,#10000,9,25,9,25) +hasLocation(#20117,#20118) #20119=* -tokeninfo(#20119,7,#20001,1,"let") -#20120=@"loc,{#10000},2,5,2,7" -locations_default(#20120,#10000,2,5,2,7) +tokeninfo(#20119,8,#20001,47,":") +#20120=@"loc,{#10000},9,26,9,26" +locations_default(#20120,#10000,9,26,9,26) hasLocation(#20119,#20120) #20121=* -tokeninfo(#20121,6,#20001,2,"x") -hasLocation(#20121,#20011) -#20122=* -tokeninfo(#20122,8,#20001,3,"=") -#20123=@"loc,{#10000},2,11,2,11" -locations_default(#20123,#10000,2,11,2,11) -hasLocation(#20122,#20123) -#20124=* -tokeninfo(#20124,3,#20001,4,"23") -hasLocation(#20124,#20013) +tokeninfo(#20121,6,#20001,48,"x") +#20122=@"loc,{#10000},9,28,9,28" +locations_default(#20122,#10000,9,28,9,28) +hasLocation(#20121,#20122) +#20123=* +tokeninfo(#20123,8,#20001,49,"}") +#20124=@"loc,{#10000},9,30,9,30" +locations_default(#20124,#10000,9,30,9,30) +hasLocation(#20123,#20124) #20125=* -tokeninfo(#20125,8,#20001,5,";") -#20126=@"loc,{#10000},2,15,2,15" -locations_default(#20126,#10000,2,15,2,15) +tokeninfo(#20125,8,#20001,50,")") +#20126=@"loc,{#10000},9,31,9,31" +locations_default(#20126,#10000,9,31,9,31) hasLocation(#20125,#20126) #20127=* -tokeninfo(#20127,8,#20001,6,"{") -#20128=@"loc,{#10000},3,5,3,5" -locations_default(#20128,#10000,3,5,3,5) +tokeninfo(#20127,6,#20001,51,"x") +#20128=@"loc,{#10000},10,13,10,13" +locations_default(#20128,#10000,10,13,10,13) hasLocation(#20127,#20128) #20129=* -tokeninfo(#20129,7,#20001,7,"let") -#20130=@"loc,{#10000},4,9,4,11" -locations_default(#20130,#10000,4,9,4,11) +tokeninfo(#20129,8,#20001,52,";") +#20130=@"loc,{#10000},10,14,10,14" +locations_default(#20130,#10000,10,14,10,14) hasLocation(#20129,#20130) #20131=* -tokeninfo(#20131,6,#20001,8,"x") -hasLocation(#20131,#20023) -#20132=* -tokeninfo(#20132,8,#20001,9,"=") -#20133=@"loc,{#10000},4,15,4,15" -locations_default(#20133,#10000,4,15,4,15) -hasLocation(#20132,#20133) +tokeninfo(#20131,8,#20001,53,"}") +#20132=@"loc,{#10000},11,5,11,5" +locations_default(#20132,#10000,11,5,11,5) +hasLocation(#20131,#20132) +#20133=* +tokeninfo(#20133,8,#20001,54,"}") +hasLocation(#20133,#20025) #20134=* -tokeninfo(#20134,3,#20001,10,"42") -hasLocation(#20134,#20025) -#20135=* -tokeninfo(#20135,8,#20001,11,";") -#20136=@"loc,{#10000},4,19,4,19" -locations_default(#20136,#10000,4,19,4,19) -hasLocation(#20135,#20136) +tokeninfo(#20134,0,#20001,55,"") +#20135=@"loc,{#10000},12,2,12,1" +locations_default(#20135,#10000,12,2,12,1) +hasLocation(#20134,#20135) +toplevels(#20001,0) +#20136=@"loc,{#10000},1,1,12,1" +locations_default(#20136,#10000,1,1,12,1) +hasLocation(#20001,#20136) #20137=* -tokeninfo(#20137,7,#20001,12,"for") -#20138=@"loc,{#10000},5,9,5,11" -locations_default(#20138,#10000,5,9,5,11) -hasLocation(#20137,#20138) -#20139=* -tokeninfo(#20139,8,#20001,13,"(") -#20140=@"loc,{#10000},5,13,5,13" -locations_default(#20140,#10000,5,13,5,13) -hasLocation(#20139,#20140) -#20141=* -tokeninfo(#20141,7,#20001,14,"let") -#20142=@"loc,{#10000},5,14,5,16" -locations_default(#20142,#10000,5,14,5,16) -hasLocation(#20141,#20142) -#20143=* -tokeninfo(#20143,6,#20001,15,"x") -hasLocation(#20143,#20041) +stmts(#20137,1,#20001,0,"{\n l ... }\n}") +hasLocation(#20137,#20136) +stmtContainers(#20137,#20001) +#20138=* +scopes(#20138,4) +scopenodes(#20137,#20138) +scopenesting(#20138,#20000) +#20139=@"var;{x};{#20138}" +variables(#20139,"x",#20138) +#20140=* +stmts(#20140,23,#20137,0,"let x = 23;") +#20141=@"loc,{#10000},2,5,2,15" +locations_default(#20141,#10000,2,5,2,15) +hasLocation(#20140,#20141) +stmtContainers(#20140,#20001) +#20142=* +exprs(#20142,64,#20140,0,"x = 23") +#20143=@"loc,{#10000},2,9,2,14" +locations_default(#20143,#10000,2,9,2,14) +hasLocation(#20142,#20143) +enclosingStmt(#20142,#20140) +exprContainers(#20142,#20001) #20144=* -tokeninfo(#20144,8,#20001,16,"=") -#20145=@"loc,{#10000},5,20,5,20" -locations_default(#20145,#10000,5,20,5,20) -hasLocation(#20144,#20145) +exprs(#20144,78,#20142,0,"x") +hasLocation(#20144,#20030) +enclosingStmt(#20144,#20140) +exprContainers(#20144,#20001) +literals("x","x",#20144) +decl(#20144,#20139) +#20145=* +exprs(#20145,3,#20142,1,"23") +hasLocation(#20145,#20034) +enclosingStmt(#20145,#20140) +exprContainers(#20145,#20001) +literals("23","23",#20145) #20146=* -tokeninfo(#20146,6,#20001,17,"x") -hasLocation(#20146,#20045) -#20147=* -tokeninfo(#20147,8,#20001,18,"-") -#20148=@"loc,{#10000},5,23,5,23" -locations_default(#20148,#10000,5,23,5,23) -hasLocation(#20147,#20148) -#20149=* -tokeninfo(#20149,3,#20001,19,"19") -hasLocation(#20149,#20047) +stmts(#20146,1,#20137,1,"{\n ... ;\n }") +#20147=@"loc,{#10000},3,5,11,5" +locations_default(#20147,#10000,3,5,11,5) +hasLocation(#20146,#20147) +stmtContainers(#20146,#20001) +#20148=* +scopes(#20148,4) +scopenodes(#20146,#20148) +scopenesting(#20148,#20138) +#20149=@"var;{x};{#20148}" +variables(#20149,"x",#20148) #20150=* -tokeninfo(#20150,8,#20001,20,";") -#20151=@"loc,{#10000},5,26,5,26" -locations_default(#20151,#10000,5,26,5,26) +stmts(#20150,23,#20146,0,"let x = 42;") +#20151=@"loc,{#10000},4,9,4,19" +locations_default(#20151,#10000,4,9,4,19) hasLocation(#20150,#20151) +stmtContainers(#20150,#20001) #20152=* -tokeninfo(#20152,6,#20001,21,"x") -hasLocation(#20152,#20033) -#20153=* -tokeninfo(#20153,8,#20001,22,"<") -#20154=@"loc,{#10000},5,29,5,29" -locations_default(#20154,#10000,5,29,5,29) -hasLocation(#20153,#20154) +exprs(#20152,64,#20150,0,"x = 42") +#20153=@"loc,{#10000},4,13,4,18" +locations_default(#20153,#10000,4,13,4,18) +hasLocation(#20152,#20153) +enclosingStmt(#20152,#20150) +exprContainers(#20152,#20001) +#20154=* +exprs(#20154,78,#20152,0,"x") +hasLocation(#20154,#20042) +enclosingStmt(#20154,#20150) +exprContainers(#20154,#20001) +literals("x","x",#20154) +decl(#20154,#20149) #20155=* -tokeninfo(#20155,3,#20001,23,"42") -hasLocation(#20155,#20035) +exprs(#20155,3,#20152,1,"42") +hasLocation(#20155,#20046) +enclosingStmt(#20155,#20150) +exprContainers(#20155,#20001) +literals("42","42",#20155) #20156=* -tokeninfo(#20156,8,#20001,24,";") -#20157=@"loc,{#10000},5,32,5,32" -locations_default(#20157,#10000,5,32,5,32) +stmts(#20156,14,#20146,1,"for (le ... }") +#20157=@"loc,{#10000},5,9,8,9" +locations_default(#20157,#10000,5,9,8,9) hasLocation(#20156,#20157) +stmtContainers(#20156,#20001) #20158=* -tokeninfo(#20158,8,#20001,25,")") -#20159=@"loc,{#10000},5,33,5,33" -locations_default(#20159,#10000,5,33,5,33) -hasLocation(#20158,#20159) +scopes(#20158,5) +scopenodes(#20156,#20158) +scopenesting(#20158,#20148) +#20159=@"var;{x};{#20158}" +variables(#20159,"x",#20158) #20160=* -tokeninfo(#20160,8,#20001,26,"{") -#20161=@"loc,{#10000},5,35,5,35" -locations_default(#20161,#10000,5,35,5,35) +exprs(#20160,27,#20156,1,"x<42") +#20161=@"loc,{#10000},5,28,5,31" +locations_default(#20161,#10000,5,28,5,31) hasLocation(#20160,#20161) +enclosingStmt(#20160,#20156) +exprContainers(#20160,#20001) #20162=* -tokeninfo(#20162,7,#20001,27,"let") -#20163=@"loc,{#10000},6,13,6,15" -locations_default(#20163,#10000,6,13,6,15) -hasLocation(#20162,#20163) +exprs(#20162,79,#20160,0,"x") +hasLocation(#20162,#20068) +enclosingStmt(#20162,#20156) +exprContainers(#20162,#20001) +literals("x","x",#20162) +bind(#20162,#20159) +#20163=* +exprs(#20163,3,#20160,1,"42") +hasLocation(#20163,#20072) +enclosingStmt(#20163,#20156) +exprContainers(#20163,#20001) +literals("42","42",#20163) #20164=* -tokeninfo(#20164,6,#20001,28,"x") -hasLocation(#20164,#20057) -#20165=* -tokeninfo(#20165,8,#20001,29,"=") -#20166=@"loc,{#10000},6,19,6,19" -locations_default(#20166,#10000,6,19,6,19) -hasLocation(#20165,#20166) -#20167=* -tokeninfo(#20167,3,#20001,30,"56") -hasLocation(#20167,#20059) +stmts(#20164,23,#20156,0,"let x = x-19") +#20165=@"loc,{#10000},5,14,5,25" +locations_default(#20165,#10000,5,14,5,25) +hasLocation(#20164,#20165) +stmtContainers(#20164,#20001) +#20166=* +exprs(#20166,64,#20164,0,"x = x-19") +#20167=@"loc,{#10000},5,18,5,25" +locations_default(#20167,#10000,5,18,5,25) +hasLocation(#20166,#20167) +enclosingStmt(#20166,#20164) +exprContainers(#20166,#20001) #20168=* -tokeninfo(#20168,8,#20001,31,";") -#20169=@"loc,{#10000},6,23,6,23" -locations_default(#20169,#10000,6,23,6,23) -hasLocation(#20168,#20169) -#20170=* -tokeninfo(#20170,6,#20001,32,"console") -hasLocation(#20170,#20067) +exprs(#20168,78,#20166,0,"x") +hasLocation(#20168,#20056) +enclosingStmt(#20168,#20164) +exprContainers(#20168,#20001) +literals("x","x",#20168) +decl(#20168,#20159) +#20169=* +exprs(#20169,35,#20166,1,"x-19") +#20170=@"loc,{#10000},5,22,5,25" +locations_default(#20170,#10000,5,22,5,25) +hasLocation(#20169,#20170) +enclosingStmt(#20169,#20164) +exprContainers(#20169,#20001) #20171=* -tokeninfo(#20171,8,#20001,33,".") -#20172=@"loc,{#10000},7,20,7,20" -locations_default(#20172,#10000,7,20,7,20) -hasLocation(#20171,#20172) +exprs(#20171,79,#20169,0,"x") +hasLocation(#20171,#20060) +enclosingStmt(#20171,#20164) +exprContainers(#20171,#20001) +literals("x","x",#20171) +bind(#20171,#20149) +#20172=* +exprs(#20172,3,#20169,1,"19") +hasLocation(#20172,#20064) +enclosingStmt(#20172,#20164) +exprContainers(#20172,#20001) +literals("19","19",#20172) #20173=* -tokeninfo(#20173,6,#20001,34,"log") -hasLocation(#20173,#20070) -#20174=* -tokeninfo(#20174,8,#20001,35,"(") -#20175=@"loc,{#10000},7,24,7,24" -locations_default(#20175,#10000,7,24,7,24) -hasLocation(#20174,#20175) -#20176=* -tokeninfo(#20176,6,#20001,36,"x") -hasLocation(#20176,#20072) +stmts(#20173,1,#20156,3,"{\n ... }") +#20174=@"loc,{#10000},5,35,8,9" +locations_default(#20174,#10000,5,35,8,9) +hasLocation(#20173,#20174) +stmtContainers(#20173,#20001) +#20175=* +scopes(#20175,4) +scopenodes(#20173,#20175) +scopenesting(#20175,#20158) +#20176=@"var;{x};{#20175}" +variables(#20176,"x",#20175) #20177=* -tokeninfo(#20177,8,#20001,37,")") -#20178=@"loc,{#10000},7,26,7,26" -locations_default(#20178,#10000,7,26,7,26) +stmts(#20177,23,#20173,0,"let x = 56;") +#20178=@"loc,{#10000},6,13,6,23" +locations_default(#20178,#10000,6,13,6,23) hasLocation(#20177,#20178) +stmtContainers(#20177,#20001) #20179=* -tokeninfo(#20179,8,#20001,38,";") -#20180=@"loc,{#10000},7,27,7,27" -locations_default(#20180,#10000,7,27,7,27) +exprs(#20179,64,#20177,0,"x = 56") +#20180=@"loc,{#10000},6,17,6,22" +locations_default(#20180,#10000,6,17,6,22) hasLocation(#20179,#20180) +enclosingStmt(#20179,#20177) +exprContainers(#20179,#20001) #20181=* -tokeninfo(#20181,8,#20001,39,"}") -#20182=@"loc,{#10000},8,9,8,9" -locations_default(#20182,#10000,8,9,8,9) -hasLocation(#20181,#20182) +exprs(#20181,78,#20179,0,"x") +hasLocation(#20181,#20082) +enclosingStmt(#20181,#20177) +exprContainers(#20181,#20001) +literals("x","x",#20181) +decl(#20181,#20176) +#20182=* +exprs(#20182,3,#20179,1,"56") +hasLocation(#20182,#20086) +enclosingStmt(#20182,#20177) +exprContainers(#20182,#20001) +literals("56","56",#20182) #20183=* -tokeninfo(#20183,7,#20001,40,"for") -#20184=@"loc,{#10000},9,9,9,11" -locations_default(#20184,#10000,9,9,9,11) +stmts(#20183,2,#20173,1,"console.log(x);") +#20184=@"loc,{#10000},7,13,7,27" +locations_default(#20184,#10000,7,13,7,27) hasLocation(#20183,#20184) +stmtContainers(#20183,#20001) #20185=* -tokeninfo(#20185,8,#20001,41,"(") -#20186=@"loc,{#10000},9,13,9,13" -locations_default(#20186,#10000,9,13,9,13) +exprs(#20185,13,#20183,0,"console.log(x)") +#20186=@"loc,{#10000},7,13,7,26" +locations_default(#20186,#10000,7,13,7,26) hasLocation(#20185,#20186) +enclosingStmt(#20185,#20183) +exprContainers(#20185,#20001) #20187=* -tokeninfo(#20187,7,#20001,42,"let") -#20188=@"loc,{#10000},9,14,9,16" -locations_default(#20188,#10000,9,14,9,16) +exprs(#20187,14,#20185,-1,"console.log") +#20188=@"loc,{#10000},7,13,7,23" +locations_default(#20188,#10000,7,13,7,23) hasLocation(#20187,#20188) +enclosingStmt(#20187,#20183) +exprContainers(#20187,#20001) #20189=* -tokeninfo(#20189,6,#20001,43,"x") -hasLocation(#20189,#20088) -#20190=* -tokeninfo(#20190,7,#20001,44,"in") -#20191=@"loc,{#10000},9,20,9,21" -locations_default(#20191,#10000,9,20,9,21) -hasLocation(#20190,#20191) +exprs(#20189,79,#20187,0,"console") +hasLocation(#20189,#20090) +enclosingStmt(#20189,#20183) +exprContainers(#20189,#20001) +literals("console","console",#20189) +#20190=@"var;{console};{#20000}" +variables(#20190,"console",#20000) +bind(#20189,#20190) +#20191=* +exprs(#20191,0,#20187,1,"log") +hasLocation(#20191,#20094) +enclosingStmt(#20191,#20183) +exprContainers(#20191,#20001) +literals("log","log",#20191) #20192=* -tokeninfo(#20192,8,#20001,45,"{") -#20193=@"loc,{#10000},9,23,9,23" -locations_default(#20193,#10000,9,23,9,23) -hasLocation(#20192,#20193) -#20194=* -tokeninfo(#20194,6,#20001,46,"x") -hasLocation(#20194,#20080) +exprs(#20192,79,#20185,0,"x") +hasLocation(#20192,#20098) +enclosingStmt(#20192,#20183) +exprContainers(#20192,#20001) +literals("x","x",#20192) +bind(#20192,#20176) +#20193=* +stmts(#20193,15,#20146,2,"for (le ... x;") +#20194=@"loc,{#10000},9,9,10,14" +locations_default(#20194,#10000,9,9,10,14) +hasLocation(#20193,#20194) +stmtContainers(#20193,#20001) #20195=* -tokeninfo(#20195,8,#20001,47,":") -#20196=@"loc,{#10000},9,26,9,26" -locations_default(#20196,#10000,9,26,9,26) +exprs(#20195,8,#20193,1,"{ x: x }") +#20196=@"loc,{#10000},9,23,9,30" +locations_default(#20196,#10000,9,23,9,30) hasLocation(#20195,#20196) +enclosingStmt(#20195,#20193) +exprContainers(#20195,#20001) #20197=* -tokeninfo(#20197,6,#20001,48,"x") -hasLocation(#20197,#20082) -#20198=* -tokeninfo(#20198,8,#20001,49,"}") -#20199=@"loc,{#10000},9,30,9,30" -locations_default(#20199,#10000,9,30,9,30) -hasLocation(#20198,#20199) +properties(#20197,#20195,0,0,"x: x") +#20198=@"loc,{#10000},9,25,9,28" +locations_default(#20198,#10000,9,25,9,28) +hasLocation(#20197,#20198) +#20199=* +exprs(#20199,0,#20197,0,"x") +hasLocation(#20199,#20118) +enclosingStmt(#20199,#20193) +exprContainers(#20199,#20001) +literals("x","x",#20199) #20200=* -tokeninfo(#20200,8,#20001,50,")") -#20201=@"loc,{#10000},9,31,9,31" -locations_default(#20201,#10000,9,31,9,31) -hasLocation(#20200,#20201) -#20202=* -tokeninfo(#20202,6,#20001,51,"x") -hasLocation(#20202,#20093) +exprs(#20200,79,#20197,1,"x") +hasLocation(#20200,#20122) +enclosingStmt(#20200,#20193) +exprContainers(#20200,#20001) +literals("x","x",#20200) +bind(#20200,#20149) +#20201=* +scopes(#20201,6) +scopenodes(#20193,#20201) +scopenesting(#20201,#20148) +#20202=@"var;{x};{#20201}" +variables(#20202,"x",#20201) #20203=* -tokeninfo(#20203,8,#20001,52,";") -#20204=@"loc,{#10000},10,14,10,14" -locations_default(#20204,#10000,10,14,10,14) +stmts(#20203,23,#20193,0,"let x") +#20204=@"loc,{#10000},9,14,9,18" +locations_default(#20204,#10000,9,14,9,18) hasLocation(#20203,#20204) +stmtContainers(#20203,#20001) #20205=* -tokeninfo(#20205,8,#20001,53,"}") -#20206=@"loc,{#10000},11,5,11,5" -locations_default(#20206,#10000,11,5,11,5) -hasLocation(#20205,#20206) +exprs(#20205,64,#20203,0,"x") +hasLocation(#20205,#20112) +enclosingStmt(#20205,#20203) +exprContainers(#20205,#20001) +#20206=* +exprs(#20206,78,#20205,0,"x") +hasLocation(#20206,#20112) +enclosingStmt(#20206,#20203) +exprContainers(#20206,#20001) +literals("x","x",#20206) +decl(#20206,#20202) #20207=* -tokeninfo(#20207,8,#20001,54,"}") -hasLocation(#20207,#20117) -#20208=* -tokeninfo(#20208,0,#20001,55,"") -#20209=@"loc,{#10000},12,2,12,1" -locations_default(#20209,#10000,12,2,12,1) -hasLocation(#20208,#20209) +stmts(#20207,2,#20193,2,"x;") +#20208=@"loc,{#10000},10,13,10,14" +locations_default(#20208,#10000,10,13,10,14) +hasLocation(#20207,#20208) +stmtContainers(#20207,#20001) +#20209=* +exprs(#20209,79,#20207,0,"x") +hasLocation(#20209,#20128) +enclosingStmt(#20209,#20207) +exprContainers(#20209,#20001) +literals("x","x",#20209) +bind(#20209,#20202) #20210=* entry_cfg_node(#20210,#20001) #20211=@"loc,{#10000},1,1,1,0" @@ -672,58 +672,58 @@ locations_default(#20211,#10000,1,1,1,0) hasLocation(#20210,#20211) #20212=* exit_cfg_node(#20212,#20001) -hasLocation(#20212,#20209) -successor(#20003,#20006) -successor(#20014,#20018) -successor(#20075,#20079) -successor(#20081,#20077) -successor(#20079,#20081) -successor(#20077,#20073) -successor(#20073,#20085) -successor(#20073,#20212) -successor(#20090,#20092) -successor(#20092,#20073) -successor(#20085,#20089) -successor(#20089,#20087) -successor(#20087,#20090) -successor(#20026,#20036) -successor(#20036,#20040) -successor(#20046,#20042) -successor(#20044,#20046) -successor(#20042,#20038) -successor(#20040,#20044) -successor(#20038,#20032) -successor(#20034,#20030) -successor(#20032,#20034) +hasLocation(#20212,#20135) +successor(#20137,#20140) +successor(#20146,#20150) +successor(#20195,#20199) +successor(#20200,#20197) +successor(#20199,#20200) +successor(#20197,#20193) +successor(#20193,#20203) +successor(#20193,#20212) +successor(#20207,#20209) +successor(#20209,#20193) +successor(#20203,#20206) +successor(#20206,#20205) +successor(#20205,#20207) +successor(#20156,#20164) +successor(#20164,#20168) +successor(#20172,#20169) +successor(#20171,#20172) +successor(#20169,#20166) +successor(#20168,#20171) +successor(#20166,#20162) +successor(#20163,#20160) +successor(#20162,#20163) #20213=* -guard_node(#20213,1,#20030) -hasLocation(#20213,#20031) -successor(#20213,#20048) +guard_node(#20213,1,#20160) +hasLocation(#20213,#20161) +successor(#20213,#20173) #20214=* -guard_node(#20214,0,#20030) -hasLocation(#20214,#20031) -successor(#20214,#20075) -successor(#20030,#20213) -successor(#20030,#20214) -successor(#20048,#20052) -successor(#20060,#20066) -successor(#20071,#20062) -successor(#20069,#20064) -successor(#20066,#20069) -successor(#20064,#20071) -successor(#20062,#20032) -successor(#20052,#20056) -successor(#20058,#20054) -successor(#20056,#20058) -successor(#20054,#20060) -successor(#20018,#20022) -successor(#20024,#20020) -successor(#20022,#20024) -successor(#20020,#20026) -successor(#20006,#20010) -successor(#20012,#20008) -successor(#20010,#20012) -successor(#20008,#20014) -successor(#20210,#20003) +guard_node(#20214,0,#20160) +hasLocation(#20214,#20161) +successor(#20214,#20195) +successor(#20160,#20213) +successor(#20160,#20214) +successor(#20173,#20177) +successor(#20183,#20189) +successor(#20192,#20185) +successor(#20191,#20187) +successor(#20189,#20191) +successor(#20187,#20192) +successor(#20185,#20162) +successor(#20177,#20181) +successor(#20182,#20179) +successor(#20181,#20182) +successor(#20179,#20183) +successor(#20150,#20154) +successor(#20155,#20152) +successor(#20154,#20155) +successor(#20152,#20156) +successor(#20140,#20144) +successor(#20145,#20142) +successor(#20144,#20145) +successor(#20142,#20146) +successor(#20210,#20137) numlines(#10000,12,12,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2015/output/trap/let2.js.trap b/javascript/extractor/tests/es2015/output/trap/let2.js.trap index 186e28fc02b..fbee8af2336 100644 --- a/javascript/extractor/tests/es2015/output/trap/let2.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/let2.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/nested_import.js.trap b/javascript/extractor/tests/es2015/output/trap/nested_import.js.trap index 2c924daf790..074cc3dce4d 100644 --- a/javascript/extractor/tests/es2015/output/trap/nested_import.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/nested_import.js.trap @@ -9,316 +9,317 @@ 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) +isES2015Module(#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 +327,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") diff --git a/javascript/extractor/tests/es2015/output/trap/new_target.js.trap b/javascript/extractor/tests/es2015/output/trap/new_target.js.trap index 90606dcc709..be30fe58298 100644 --- a/javascript/extractor/tests/es2015/output/trap/new_target.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/new_target.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/no-substitution.js.trap b/javascript/extractor/tests/es2015/output/trap/no-substitution.js.trap index f6b64a7fb1f..2ccaa644c0e 100644 --- a/javascript/extractor/tests/es2015/output/trap/no-substitution.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/no-substitution.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/nullMethodName.js.trap b/javascript/extractor/tests/es2015/output/trap/nullMethodName.js.trap index 4aa441ed680..c66a150e5ad 100644 --- a/javascript/extractor/tests/es2015/output/trap/nullMethodName.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/nullMethodName.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/odasa-2593.js.trap b/javascript/extractor/tests/es2015/output/trap/odasa-2593.js.trap index ce24a10e76d..85cf5204d77 100644 --- a/javascript/extractor/tests/es2015/output/trap/odasa-2593.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/odasa-2593.js.trap @@ -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") diff --git a/javascript/extractor/tests/es2015/output/trap/properties.js.trap b/javascript/extractor/tests/es2015/output/trap/properties.js.trap index 9be4b97471c..7eb9fc21c54 100644 --- a/javascript/extractor/tests/es2015/output/trap/properties.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/properties.js.trap @@ -9,380 +9,379 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,6,6" -locations_default(#20002,#10000,1,1,6,6) -hasLocation(#20001,#20002) -#20003=@"var;{x};{#20000}" -variables(#20003,"x",#20000) -#20004=@"var;{o};{#20000}" -variables(#20004,"o",#20000) -#20005=* -stmts(#20005,18,#20001,0,"var x = ... \n };") -hasLocation(#20005,#20002) -stmtContainers(#20005,#20001) -#20006=* -exprs(#20006,64,#20005,0,"x = 42") -#20007=@"loc,{#10000},1,5,1,10" -locations_default(#20007,#10000,1,5,1,10) -hasLocation(#20006,#20007) -enclosingStmt(#20006,#20005) -exprContainers(#20006,#20001) -#20008=* -exprs(#20008,78,#20006,0,"x") -#20009=@"loc,{#10000},1,5,1,5" -locations_default(#20009,#10000,1,5,1,5) -hasLocation(#20008,#20009) -enclosingStmt(#20008,#20005) -exprContainers(#20008,#20001) -literals("x","x",#20008) -decl(#20008,#20003) -#20010=* -exprs(#20010,3,#20006,1,"42") -#20011=@"loc,{#10000},1,9,1,10" -locations_default(#20011,#10000,1,9,1,10) -hasLocation(#20010,#20011) -enclosingStmt(#20010,#20005) -exprContainers(#20010,#20001) -literals("42","42",#20010) -#20012=* -exprs(#20012,64,#20005,1,"o = {\n ... }\n }") -#20013=@"loc,{#10000},2,5,6,5" -locations_default(#20013,#10000,2,5,6,5) -hasLocation(#20012,#20013) -enclosingStmt(#20012,#20005) -exprContainers(#20012,#20001) -#20014=* -exprs(#20014,78,#20012,0,"o") -#20015=@"loc,{#10000},2,5,2,5" -locations_default(#20015,#10000,2,5,2,5) -hasLocation(#20014,#20015) -enclosingStmt(#20014,#20005) -exprContainers(#20014,#20001) -literals("o","o",#20014) -decl(#20014,#20004) -#20016=* -exprs(#20016,8,#20012,1,"{\n ... }\n }") -#20017=@"loc,{#10000},2,9,6,5" -locations_default(#20017,#10000,2,9,6,5) -hasLocation(#20016,#20017) -enclosingStmt(#20016,#20005) -exprContainers(#20016,#20001) -#20018=* -properties(#20018,#20016,0,0,"[""prop"" ... ()]: 23") -#20019=@"loc,{#10000},3,9,3,36" -locations_default(#20019,#10000,3,9,3,36) -hasLocation(#20018,#20019) -#20020=* -exprs(#20020,34,#20018,0,"""prop"" ... andom()") -#20021=@"loc,{#10000},3,10,3,31" -locations_default(#20021,#10000,3,10,3,31) -hasLocation(#20020,#20021) -enclosingStmt(#20020,#20005) -exprContainers(#20020,#20001) -#20022=* -exprs(#20022,4,#20020,0,"""prop""") -#20023=@"loc,{#10000},3,10,3,15" -locations_default(#20023,#10000,3,10,3,15) -hasLocation(#20022,#20023) -enclosingStmt(#20022,#20005) -exprContainers(#20022,#20001) -literals("prop","""prop""",#20022) -#20024=* -exprs(#20024,13,#20020,1,"Math.random()") -#20025=@"loc,{#10000},3,19,3,31" -locations_default(#20025,#10000,3,19,3,31) -hasLocation(#20024,#20025) -enclosingStmt(#20024,#20005) -exprContainers(#20024,#20001) -#20026=* -exprs(#20026,14,#20024,-1,"Math.random") -#20027=@"loc,{#10000},3,19,3,29" -locations_default(#20027,#10000,3,19,3,29) -hasLocation(#20026,#20027) -enclosingStmt(#20026,#20005) -exprContainers(#20026,#20001) -#20028=* -exprs(#20028,79,#20026,0,"Math") -#20029=@"loc,{#10000},3,19,3,22" -locations_default(#20029,#10000,3,19,3,22) -hasLocation(#20028,#20029) -enclosingStmt(#20028,#20005) -exprContainers(#20028,#20001) -literals("Math","Math",#20028) -#20030=@"var;{Math};{#20000}" -variables(#20030,"Math",#20000) -bind(#20028,#20030) -#20031=* -exprs(#20031,0,#20026,1,"random") -#20032=@"loc,{#10000},3,24,3,29" -locations_default(#20032,#10000,3,24,3,29) -hasLocation(#20031,#20032) -enclosingStmt(#20031,#20005) -exprContainers(#20031,#20001) -literals("random","random",#20031) -#20033=* -exprs(#20033,3,#20018,1,"23") -#20034=@"loc,{#10000},3,35,3,36" -locations_default(#20034,#10000,3,35,3,36) -hasLocation(#20033,#20034) -enclosingStmt(#20033,#20005) -exprContainers(#20033,#20001) -literals("23","23",#20033) -isComputed(#20018) -#20035=* -properties(#20035,#20016,1,0,"x") -#20036=@"loc,{#10000},4,9,4,9" -locations_default(#20036,#10000,4,9,4,9) -hasLocation(#20035,#20036) -#20037=* -exprs(#20037,0,#20035,0,"x") -hasLocation(#20037,#20036) -enclosingStmt(#20037,#20005) -exprContainers(#20037,#20001) -literals("x","x",#20037) -#20038=* -exprs(#20038,79,#20035,1,"x") -hasLocation(#20038,#20036) -enclosingStmt(#20038,#20005) -exprContainers(#20038,#20001) -literals("x","x",#20038) -bind(#20038,#20003) -#20039=* -properties(#20039,#20016,2,0,"m() { return 56; }") -#20040=@"loc,{#10000},5,9,5,26" -locations_default(#20040,#10000,5,9,5,26) -hasLocation(#20039,#20040) -#20041=* -exprs(#20041,0,#20039,0,"m") -#20042=@"loc,{#10000},5,9,5,9" -locations_default(#20042,#10000,5,9,5,9) -hasLocation(#20041,#20042) -enclosingStmt(#20041,#20005) -exprContainers(#20041,#20001) -literals("m","m",#20041) -#20043=* -exprs(#20043,9,#20039,1,"() { return 56; }") -#20044=@"loc,{#10000},5,10,5,26" -locations_default(#20044,#10000,5,10,5,26) -hasLocation(#20043,#20044) -enclosingStmt(#20043,#20005) -exprContainers(#20043,#20001) -#20045=* -scopes(#20045,1) -scopenodes(#20043,#20045) -scopenesting(#20045,#20000) -#20046=@"var;{arguments};{#20045}" -variables(#20046,"arguments",#20045) -isArgumentsObject(#20046) -#20047=* -stmts(#20047,1,#20043,-2,"{ return 56; }") -#20048=@"loc,{#10000},5,13,5,26" -locations_default(#20048,#10000,5,13,5,26) -hasLocation(#20047,#20048) -stmtContainers(#20047,#20043) -#20049=* -stmts(#20049,9,#20047,0,"return 56;") -#20050=@"loc,{#10000},5,15,5,24" -locations_default(#20050,#10000,5,15,5,24) -hasLocation(#20049,#20050) -stmtContainers(#20049,#20043) -#20051=* -exprs(#20051,3,#20049,0,"56") -#20052=@"loc,{#10000},5,22,5,23" -locations_default(#20052,#10000,5,22,5,23) -hasLocation(#20051,#20052) -enclosingStmt(#20051,#20049) -exprContainers(#20051,#20043) -literals("56","56",#20051) -numlines(#20043,1,1,0) -isMethod(#20039) -#20053=* -lines(#20053,#20001,"var x = 42,"," +#20002=* +lines(#20002,#20001,"var x = 42,"," ") -#20054=@"loc,{#10000},1,1,1,11" -locations_default(#20054,#10000,1,1,1,11) -hasLocation(#20053,#20054) -#20055=* -lines(#20055,#20001," o = {"," +#20003=@"loc,{#10000},1,1,1,11" +locations_default(#20003,#10000,1,1,1,11) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," o = {"," ") -#20056=@"loc,{#10000},2,1,2,9" -locations_default(#20056,#10000,2,1,2,9) -hasLocation(#20055,#20056) +#20005=@"loc,{#10000},2,1,2,9" +locations_default(#20005,#10000,2,1,2,9) +hasLocation(#20004,#20005) indentation(#10000,2," ",4) -#20057=* -lines(#20057,#20001," [""prop"" + Math.random()]: 23,"," +#20006=* +lines(#20006,#20001," [""prop"" + Math.random()]: 23,"," ") -#20058=@"loc,{#10000},3,1,3,37" -locations_default(#20058,#10000,3,1,3,37) -hasLocation(#20057,#20058) +#20007=@"loc,{#10000},3,1,3,37" +locations_default(#20007,#10000,3,1,3,37) +hasLocation(#20006,#20007) indentation(#10000,3," ",8) -#20059=* -lines(#20059,#20001," x,"," +#20008=* +lines(#20008,#20001," x,"," ") -#20060=@"loc,{#10000},4,1,4,10" -locations_default(#20060,#10000,4,1,4,10) -hasLocation(#20059,#20060) +#20009=@"loc,{#10000},4,1,4,10" +locations_default(#20009,#10000,4,1,4,10) +hasLocation(#20008,#20009) indentation(#10000,4," ",8) -#20061=* -lines(#20061,#20001," m() { return 56; }"," +#20010=* +lines(#20010,#20001," m() { return 56; }"," ") -#20062=@"loc,{#10000},5,1,5,26" -locations_default(#20062,#10000,5,1,5,26) -hasLocation(#20061,#20062) +#20011=@"loc,{#10000},5,1,5,26" +locations_default(#20011,#10000,5,1,5,26) +hasLocation(#20010,#20011) indentation(#10000,5," ",8) -#20063=* -lines(#20063,#20001," };","") -#20064=@"loc,{#10000},6,1,6,6" -locations_default(#20064,#10000,6,1,6,6) -hasLocation(#20063,#20064) +#20012=* +lines(#20012,#20001," };","") +#20013=@"loc,{#10000},6,1,6,6" +locations_default(#20013,#10000,6,1,6,6) +hasLocation(#20012,#20013) indentation(#10000,6," ",4) numlines(#20001,6,6,0) -#20065=* -tokeninfo(#20065,7,#20001,0,"var") -#20066=@"loc,{#10000},1,1,1,3" -locations_default(#20066,#10000,1,1,1,3) -hasLocation(#20065,#20066) -#20067=* -tokeninfo(#20067,6,#20001,1,"x") -hasLocation(#20067,#20009) +#20014=* +tokeninfo(#20014,7,#20001,0,"var") +#20015=@"loc,{#10000},1,1,1,3" +locations_default(#20015,#10000,1,1,1,3) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,6,#20001,1,"x") +#20017=@"loc,{#10000},1,5,1,5" +locations_default(#20017,#10000,1,5,1,5) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,2,"=") +#20019=@"loc,{#10000},1,7,1,7" +locations_default(#20019,#10000,1,7,1,7) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,3,#20001,3,"42") +#20021=@"loc,{#10000},1,9,1,10" +locations_default(#20021,#10000,1,9,1,10) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,4,",") +#20023=@"loc,{#10000},1,11,1,11" +locations_default(#20023,#10000,1,11,1,11) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,6,#20001,5,"o") +#20025=@"loc,{#10000},2,5,2,5" +locations_default(#20025,#10000,2,5,2,5) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,6,"=") +#20027=@"loc,{#10000},2,7,2,7" +locations_default(#20027,#10000,2,7,2,7) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,7,"{") +#20029=@"loc,{#10000},2,9,2,9" +locations_default(#20029,#10000,2,9,2,9) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,8,"[") +#20031=@"loc,{#10000},3,9,3,9" +locations_default(#20031,#10000,3,9,3,9) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,4,#20001,9,"""prop""") +#20033=@"loc,{#10000},3,10,3,15" +locations_default(#20033,#10000,3,10,3,15) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,10,"+") +#20035=@"loc,{#10000},3,17,3,17" +locations_default(#20035,#10000,3,17,3,17) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,6,#20001,11,"Math") +#20037=@"loc,{#10000},3,19,3,22" +locations_default(#20037,#10000,3,19,3,22) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,8,#20001,12,".") +#20039=@"loc,{#10000},3,23,3,23" +locations_default(#20039,#10000,3,23,3,23) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,6,#20001,13,"random") +#20041=@"loc,{#10000},3,24,3,29" +locations_default(#20041,#10000,3,24,3,29) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,14,"(") +#20043=@"loc,{#10000},3,30,3,30" +locations_default(#20043,#10000,3,30,3,30) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,15,")") +#20045=@"loc,{#10000},3,31,3,31" +locations_default(#20045,#10000,3,31,3,31) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,16,"]") +#20047=@"loc,{#10000},3,32,3,32" +locations_default(#20047,#10000,3,32,3,32) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,8,#20001,17,":") +#20049=@"loc,{#10000},3,33,3,33" +locations_default(#20049,#10000,3,33,3,33) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,3,#20001,18,"23") +#20051=@"loc,{#10000},3,35,3,36" +locations_default(#20051,#10000,3,35,3,36) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,8,#20001,19,",") +#20053=@"loc,{#10000},3,37,3,37" +locations_default(#20053,#10000,3,37,3,37) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,6,#20001,20,"x") +#20055=@"loc,{#10000},4,9,4,9" +locations_default(#20055,#10000,4,9,4,9) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,8,#20001,21,",") +#20057=@"loc,{#10000},4,10,4,10" +locations_default(#20057,#10000,4,10,4,10) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,6,#20001,22,"m") +#20059=@"loc,{#10000},5,9,5,9" +locations_default(#20059,#10000,5,9,5,9) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,8,#20001,23,"(") +#20061=@"loc,{#10000},5,10,5,10" +locations_default(#20061,#10000,5,10,5,10) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,8,#20001,24,")") +#20063=@"loc,{#10000},5,11,5,11" +locations_default(#20063,#10000,5,11,5,11) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,8,#20001,25,"{") +#20065=@"loc,{#10000},5,13,5,13" +locations_default(#20065,#10000,5,13,5,13) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,7,#20001,26,"return") +#20067=@"loc,{#10000},5,15,5,20" +locations_default(#20067,#10000,5,15,5,20) +hasLocation(#20066,#20067) #20068=* -tokeninfo(#20068,8,#20001,2,"=") -#20069=@"loc,{#10000},1,7,1,7" -locations_default(#20069,#10000,1,7,1,7) +tokeninfo(#20068,3,#20001,27,"56") +#20069=@"loc,{#10000},5,22,5,23" +locations_default(#20069,#10000,5,22,5,23) hasLocation(#20068,#20069) #20070=* -tokeninfo(#20070,3,#20001,3,"42") -hasLocation(#20070,#20011) -#20071=* -tokeninfo(#20071,8,#20001,4,",") -#20072=@"loc,{#10000},1,11,1,11" -locations_default(#20072,#10000,1,11,1,11) -hasLocation(#20071,#20072) -#20073=* -tokeninfo(#20073,6,#20001,5,"o") -hasLocation(#20073,#20015) +tokeninfo(#20070,8,#20001,28,";") +#20071=@"loc,{#10000},5,24,5,24" +locations_default(#20071,#10000,5,24,5,24) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,8,#20001,29,"}") +#20073=@"loc,{#10000},5,26,5,26" +locations_default(#20073,#10000,5,26,5,26) +hasLocation(#20072,#20073) #20074=* -tokeninfo(#20074,8,#20001,6,"=") -#20075=@"loc,{#10000},2,7,2,7" -locations_default(#20075,#10000,2,7,2,7) +tokeninfo(#20074,8,#20001,30,"}") +#20075=@"loc,{#10000},6,5,6,5" +locations_default(#20075,#10000,6,5,6,5) hasLocation(#20074,#20075) #20076=* -tokeninfo(#20076,8,#20001,7,"{") -#20077=@"loc,{#10000},2,9,2,9" -locations_default(#20077,#10000,2,9,2,9) +tokeninfo(#20076,8,#20001,31,";") +#20077=@"loc,{#10000},6,6,6,6" +locations_default(#20077,#10000,6,6,6,6) hasLocation(#20076,#20077) #20078=* -tokeninfo(#20078,8,#20001,8,"[") -#20079=@"loc,{#10000},3,9,3,9" -locations_default(#20079,#10000,3,9,3,9) +tokeninfo(#20078,0,#20001,32,"") +#20079=@"loc,{#10000},6,7,6,6" +locations_default(#20079,#10000,6,7,6,6) hasLocation(#20078,#20079) -#20080=* -tokeninfo(#20080,4,#20001,9,"""prop""") -hasLocation(#20080,#20023) -#20081=* -tokeninfo(#20081,8,#20001,10,"+") -#20082=@"loc,{#10000},3,17,3,17" -locations_default(#20082,#10000,3,17,3,17) -hasLocation(#20081,#20082) +toplevels(#20001,0) +#20080=@"loc,{#10000},1,1,6,6" +locations_default(#20080,#10000,1,1,6,6) +hasLocation(#20001,#20080) +#20081=@"var;{x};{#20000}" +variables(#20081,"x",#20000) +#20082=@"var;{o};{#20000}" +variables(#20082,"o",#20000) #20083=* -tokeninfo(#20083,6,#20001,11,"Math") -hasLocation(#20083,#20029) +stmts(#20083,18,#20001,0,"var x = ... \n };") +hasLocation(#20083,#20080) +stmtContainers(#20083,#20001) #20084=* -tokeninfo(#20084,8,#20001,12,".") -#20085=@"loc,{#10000},3,23,3,23" -locations_default(#20085,#10000,3,23,3,23) +exprs(#20084,64,#20083,0,"x = 42") +#20085=@"loc,{#10000},1,5,1,10" +locations_default(#20085,#10000,1,5,1,10) hasLocation(#20084,#20085) +enclosingStmt(#20084,#20083) +exprContainers(#20084,#20001) #20086=* -tokeninfo(#20086,6,#20001,13,"random") -hasLocation(#20086,#20032) +exprs(#20086,78,#20084,0,"x") +hasLocation(#20086,#20017) +enclosingStmt(#20086,#20083) +exprContainers(#20086,#20001) +literals("x","x",#20086) +decl(#20086,#20081) #20087=* -tokeninfo(#20087,8,#20001,14,"(") -#20088=@"loc,{#10000},3,30,3,30" -locations_default(#20088,#10000,3,30,3,30) -hasLocation(#20087,#20088) -#20089=* -tokeninfo(#20089,8,#20001,15,")") -#20090=@"loc,{#10000},3,31,3,31" -locations_default(#20090,#10000,3,31,3,31) -hasLocation(#20089,#20090) +exprs(#20087,3,#20084,1,"42") +hasLocation(#20087,#20021) +enclosingStmt(#20087,#20083) +exprContainers(#20087,#20001) +literals("42","42",#20087) +#20088=* +exprs(#20088,64,#20083,1,"o = {\n ... }\n }") +#20089=@"loc,{#10000},2,5,6,5" +locations_default(#20089,#10000,2,5,6,5) +hasLocation(#20088,#20089) +enclosingStmt(#20088,#20083) +exprContainers(#20088,#20001) +#20090=* +exprs(#20090,78,#20088,0,"o") +hasLocation(#20090,#20025) +enclosingStmt(#20090,#20083) +exprContainers(#20090,#20001) +literals("o","o",#20090) +decl(#20090,#20082) #20091=* -tokeninfo(#20091,8,#20001,16,"]") -#20092=@"loc,{#10000},3,32,3,32" -locations_default(#20092,#10000,3,32,3,32) +exprs(#20091,8,#20088,1,"{\n ... }\n }") +#20092=@"loc,{#10000},2,9,6,5" +locations_default(#20092,#10000,2,9,6,5) hasLocation(#20091,#20092) +enclosingStmt(#20091,#20083) +exprContainers(#20091,#20001) #20093=* -tokeninfo(#20093,8,#20001,17,":") -#20094=@"loc,{#10000},3,33,3,33" -locations_default(#20094,#10000,3,33,3,33) +properties(#20093,#20091,0,0,"[""prop"" ... ()]: 23") +#20094=@"loc,{#10000},3,9,3,36" +locations_default(#20094,#10000,3,9,3,36) hasLocation(#20093,#20094) #20095=* -tokeninfo(#20095,3,#20001,18,"23") -hasLocation(#20095,#20034) -#20096=* -tokeninfo(#20096,8,#20001,19,",") -#20097=@"loc,{#10000},3,37,3,37" -locations_default(#20097,#10000,3,37,3,37) -hasLocation(#20096,#20097) +exprs(#20095,34,#20093,0,"""prop"" ... andom()") +#20096=@"loc,{#10000},3,10,3,31" +locations_default(#20096,#10000,3,10,3,31) +hasLocation(#20095,#20096) +enclosingStmt(#20095,#20083) +exprContainers(#20095,#20001) +#20097=* +exprs(#20097,4,#20095,0,"""prop""") +hasLocation(#20097,#20033) +enclosingStmt(#20097,#20083) +exprContainers(#20097,#20001) +literals("prop","""prop""",#20097) #20098=* -tokeninfo(#20098,6,#20001,20,"x") -hasLocation(#20098,#20036) -#20099=* -tokeninfo(#20099,8,#20001,21,",") -#20100=@"loc,{#10000},4,10,4,10" -locations_default(#20100,#10000,4,10,4,10) -hasLocation(#20099,#20100) -#20101=* -tokeninfo(#20101,6,#20001,22,"m") -hasLocation(#20101,#20042) +exprs(#20098,13,#20095,1,"Math.random()") +#20099=@"loc,{#10000},3,19,3,31" +locations_default(#20099,#10000,3,19,3,31) +hasLocation(#20098,#20099) +enclosingStmt(#20098,#20083) +exprContainers(#20098,#20001) +#20100=* +exprs(#20100,14,#20098,-1,"Math.random") +#20101=@"loc,{#10000},3,19,3,29" +locations_default(#20101,#10000,3,19,3,29) +hasLocation(#20100,#20101) +enclosingStmt(#20100,#20083) +exprContainers(#20100,#20001) #20102=* -tokeninfo(#20102,8,#20001,23,"(") -#20103=@"loc,{#10000},5,10,5,10" -locations_default(#20103,#10000,5,10,5,10) -hasLocation(#20102,#20103) +exprs(#20102,79,#20100,0,"Math") +hasLocation(#20102,#20037) +enclosingStmt(#20102,#20083) +exprContainers(#20102,#20001) +literals("Math","Math",#20102) +#20103=@"var;{Math};{#20000}" +variables(#20103,"Math",#20000) +bind(#20102,#20103) #20104=* -tokeninfo(#20104,8,#20001,24,")") -#20105=@"loc,{#10000},5,11,5,11" -locations_default(#20105,#10000,5,11,5,11) -hasLocation(#20104,#20105) +exprs(#20104,0,#20100,1,"random") +hasLocation(#20104,#20041) +enclosingStmt(#20104,#20083) +exprContainers(#20104,#20001) +literals("random","random",#20104) +#20105=* +exprs(#20105,3,#20093,1,"23") +hasLocation(#20105,#20051) +enclosingStmt(#20105,#20083) +exprContainers(#20105,#20001) +literals("23","23",#20105) +isComputed(#20093) #20106=* -tokeninfo(#20106,8,#20001,25,"{") -#20107=@"loc,{#10000},5,13,5,13" -locations_default(#20107,#10000,5,13,5,13) -hasLocation(#20106,#20107) +properties(#20106,#20091,1,0,"x") +hasLocation(#20106,#20055) +#20107=* +exprs(#20107,0,#20106,0,"x") +hasLocation(#20107,#20055) +enclosingStmt(#20107,#20083) +exprContainers(#20107,#20001) +literals("x","x",#20107) #20108=* -tokeninfo(#20108,7,#20001,26,"return") -#20109=@"loc,{#10000},5,15,5,20" -locations_default(#20109,#10000,5,15,5,20) -hasLocation(#20108,#20109) -#20110=* -tokeninfo(#20110,3,#20001,27,"56") -hasLocation(#20110,#20052) +exprs(#20108,79,#20106,1,"x") +hasLocation(#20108,#20055) +enclosingStmt(#20108,#20083) +exprContainers(#20108,#20001) +literals("x","x",#20108) +bind(#20108,#20081) +#20109=* +properties(#20109,#20091,2,0,"m() { return 56; }") +#20110=@"loc,{#10000},5,9,5,26" +locations_default(#20110,#10000,5,9,5,26) +hasLocation(#20109,#20110) #20111=* -tokeninfo(#20111,8,#20001,28,";") -#20112=@"loc,{#10000},5,24,5,24" -locations_default(#20112,#10000,5,24,5,24) -hasLocation(#20111,#20112) -#20113=* -tokeninfo(#20113,8,#20001,29,"}") -#20114=@"loc,{#10000},5,26,5,26" -locations_default(#20114,#10000,5,26,5,26) -hasLocation(#20113,#20114) -#20115=* -tokeninfo(#20115,8,#20001,30,"}") -#20116=@"loc,{#10000},6,5,6,5" -locations_default(#20116,#10000,6,5,6,5) -hasLocation(#20115,#20116) -#20117=* -tokeninfo(#20117,8,#20001,31,";") -#20118=@"loc,{#10000},6,6,6,6" -locations_default(#20118,#10000,6,6,6,6) -hasLocation(#20117,#20118) -#20119=* -tokeninfo(#20119,0,#20001,32,"") -#20120=@"loc,{#10000},6,7,6,6" -locations_default(#20120,#10000,6,7,6,6) -hasLocation(#20119,#20120) +exprs(#20111,0,#20109,0,"m") +hasLocation(#20111,#20059) +enclosingStmt(#20111,#20083) +exprContainers(#20111,#20001) +literals("m","m",#20111) +#20112=* +exprs(#20112,9,#20109,1,"() { return 56; }") +#20113=@"loc,{#10000},5,10,5,26" +locations_default(#20113,#10000,5,10,5,26) +hasLocation(#20112,#20113) +enclosingStmt(#20112,#20083) +exprContainers(#20112,#20001) +#20114=* +scopes(#20114,1) +scopenodes(#20112,#20114) +scopenesting(#20114,#20000) +#20115=@"var;{arguments};{#20114}" +variables(#20115,"arguments",#20114) +isArgumentsObject(#20115) +#20116=* +stmts(#20116,1,#20112,-2,"{ return 56; }") +#20117=@"loc,{#10000},5,13,5,26" +locations_default(#20117,#10000,5,13,5,26) +hasLocation(#20116,#20117) +stmtContainers(#20116,#20112) +#20118=* +stmts(#20118,9,#20116,0,"return 56;") +#20119=@"loc,{#10000},5,15,5,24" +locations_default(#20119,#10000,5,15,5,24) +hasLocation(#20118,#20119) +stmtContainers(#20118,#20112) +#20120=* +exprs(#20120,3,#20118,0,"56") +hasLocation(#20120,#20069) +enclosingStmt(#20120,#20118) +exprContainers(#20120,#20112) +literals("56","56",#20120) +isMethod(#20109) #20121=* entry_cfg_node(#20121,#20001) #20122=@"loc,{#10000},1,1,1,0" @@ -390,42 +389,42 @@ locations_default(#20122,#10000,1,1,1,0) hasLocation(#20121,#20122) #20123=* exit_cfg_node(#20123,#20001) -hasLocation(#20123,#20120) -successor(#20005,#20008) -successor(#20016,#20022) -successor(#20043,#20039) +hasLocation(#20123,#20079) +successor(#20083,#20086) +successor(#20091,#20097) +successor(#20112,#20109) #20124=* -entry_cfg_node(#20124,#20043) +entry_cfg_node(#20124,#20112) #20125=@"loc,{#10000},5,10,5,9" locations_default(#20125,#10000,5,10,5,9) hasLocation(#20124,#20125) #20126=* -exit_cfg_node(#20126,#20043) +exit_cfg_node(#20126,#20112) #20127=@"loc,{#10000},5,27,5,26" locations_default(#20127,#10000,5,27,5,26) hasLocation(#20126,#20127) -successor(#20047,#20051) -successor(#20051,#20049) -successor(#20049,#20126) -successor(#20124,#20047) -successor(#20041,#20043) -successor(#20039,#20012) -successor(#20038,#20035) -successor(#20037,#20038) -successor(#20035,#20041) -successor(#20033,#20018) -successor(#20031,#20026) -successor(#20028,#20031) -successor(#20026,#20024) -successor(#20024,#20020) -successor(#20022,#20028) -successor(#20020,#20033) -successor(#20018,#20037) -successor(#20014,#20016) -successor(#20012,#20123) -successor(#20010,#20006) -successor(#20008,#20010) -successor(#20006,#20014) -successor(#20121,#20005) +successor(#20116,#20120) +successor(#20120,#20118) +successor(#20118,#20126) +successor(#20124,#20116) +successor(#20111,#20112) +successor(#20109,#20088) +successor(#20108,#20106) +successor(#20107,#20108) +successor(#20106,#20111) +successor(#20105,#20093) +successor(#20104,#20100) +successor(#20102,#20104) +successor(#20100,#20098) +successor(#20098,#20095) +successor(#20097,#20102) +successor(#20095,#20105) +successor(#20093,#20107) +successor(#20090,#20091) +successor(#20088,#20123) +successor(#20087,#20084) +successor(#20086,#20087) +successor(#20084,#20090) +successor(#20121,#20083) numlines(#10000,6,6,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2015/output/trap/property_pattern_with_default.js.trap b/javascript/extractor/tests/es2015/output/trap/property_pattern_with_default.js.trap index 0c7b76ca778..f8911274a6d 100644 --- a/javascript/extractor/tests/es2015/output/trap/property_pattern_with_default.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/property_pattern_with_default.js.trap @@ -9,120 +9,119 @@ 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,2,#20001,0,"({x = 1}) => x;") -hasLocation(#20003,#20002) -stmtContainers(#20003,#20001) +#20002=* +lines(#20002,#20001,"({x = 1}) => x;","") +#20003=@"loc,{#10000},1,1,1,15" +locations_default(#20003,#10000,1,1,1,15) +hasLocation(#20002,#20003) +numlines(#20001,1,1,0) #20004=* -exprs(#20004,65,#20003,0,"({x = 1}) => x") -#20005=@"loc,{#10000},1,1,1,14" -locations_default(#20005,#10000,1,1,1,14) +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=* -scopes(#20006,1) -scopenodes(#20004,#20006) -scopenesting(#20006,#20000) -#20007=@"var;{x};{#20006}" -variables(#20007,"x",#20006) +tokeninfo(#20006,8,#20001,1,"{") +#20007=@"loc,{#10000},1,2,1,2" +locations_default(#20007,#10000,1,2,1,2) +hasLocation(#20006,#20007) #20008=* -exprs(#20008,68,#20004,0,"{x = 1}") -#20009=@"loc,{#10000},1,2,1,8" -locations_default(#20009,#10000,1,2,1,8) +tokeninfo(#20008,6,#20001,2,"x") +#20009=@"loc,{#10000},1,3,1,3" +locations_default(#20009,#10000,1,3,1,3) hasLocation(#20008,#20009) -exprContainers(#20008,#20004) #20010=* -properties(#20010,#20008,0,0,"x = 1") -#20011=@"loc,{#10000},1,3,1,7" -locations_default(#20011,#10000,1,3,1,7) +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,3,1,3" -locations_default(#20013,#10000,1,3,1,3) +tokeninfo(#20012,3,#20001,4,"1") +#20013=@"loc,{#10000},1,7,1,7" +locations_default(#20013,#10000,1,7,1,7) hasLocation(#20012,#20013) -exprContainers(#20012,#20004) -literals("x","x",#20012) #20014=* -exprs(#20014,78,#20010,1,"x") -hasLocation(#20014,#20013) -exprContainers(#20014,#20004) -literals("x","x",#20014) -decl(#20014,#20007) -#20015=* -exprs(#20015,3,#20010,2,"1") -#20016=@"loc,{#10000},1,7,1,7" -locations_default(#20016,#10000,1,7,1,7) -hasLocation(#20015,#20016) -exprContainers(#20015,#20004) -literals("1","1",#20015) -#20017=* -exprs(#20017,79,#20004,-2,"x") -#20018=@"loc,{#10000},1,14,1,14" -locations_default(#20018,#10000,1,14,1,14) -hasLocation(#20017,#20018) -exprContainers(#20017,#20004) -literals("x","x",#20017) -bind(#20017,#20007) -numlines(#20004,1,1,0) -#20019=* -lines(#20019,#20001,"({x = 1}) => x;","") -hasLocation(#20019,#20002) -numlines(#20001,1,1,0) +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,6,")") +#20017=@"loc,{#10000},1,9,1,9" +locations_default(#20017,#10000,1,9,1,9) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,7,"=>") +#20019=@"loc,{#10000},1,11,1,12" +locations_default(#20019,#10000,1,11,1,12) +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,6,#20001,8,"x") +#20021=@"loc,{#10000},1,14,1,14" +locations_default(#20021,#10000,1,14,1,14) hasLocation(#20020,#20021) #20022=* -tokeninfo(#20022,8,#20001,1,"{") -#20023=@"loc,{#10000},1,2,1,2" -locations_default(#20023,#10000,1,2,1,2) +tokeninfo(#20022,8,#20001,9,";") +#20023=@"loc,{#10000},1,15,1,15" +locations_default(#20023,#10000,1,15,1,15) hasLocation(#20022,#20023) #20024=* -tokeninfo(#20024,6,#20001,2,"x") -hasLocation(#20024,#20013) -#20025=* -tokeninfo(#20025,8,#20001,3,"=") -#20026=@"loc,{#10000},1,5,1,5" -locations_default(#20026,#10000,1,5,1,5) -hasLocation(#20025,#20026) +tokeninfo(#20024,0,#20001,10,"") +#20025=@"loc,{#10000},1,16,1,15" +locations_default(#20025,#10000,1,16,1,15) +hasLocation(#20024,#20025) +toplevels(#20001,0) +hasLocation(#20001,#20003) +#20026=* +stmts(#20026,2,#20001,0,"({x = 1}) => x;") +hasLocation(#20026,#20003) +stmtContainers(#20026,#20001) #20027=* -tokeninfo(#20027,3,#20001,4,"1") -hasLocation(#20027,#20016) -#20028=* -tokeninfo(#20028,8,#20001,5,"}") -#20029=@"loc,{#10000},1,8,1,8" -locations_default(#20029,#10000,1,8,1,8) -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,8,#20001,7,"=>") -#20033=@"loc,{#10000},1,11,1,12" -locations_default(#20033,#10000,1,11,1,12) -hasLocation(#20032,#20033) -#20034=* -tokeninfo(#20034,6,#20001,8,"x") -hasLocation(#20034,#20018) +exprs(#20027,65,#20026,0,"({x = 1}) => x") +#20028=@"loc,{#10000},1,1,1,14" +locations_default(#20028,#10000,1,1,1,14) +hasLocation(#20027,#20028) +enclosingStmt(#20027,#20026) +exprContainers(#20027,#20001) +#20029=* +scopes(#20029,1) +scopenodes(#20027,#20029) +scopenesting(#20029,#20000) +#20030=@"var;{x};{#20029}" +variables(#20030,"x",#20029) +#20031=* +exprs(#20031,68,#20027,0,"{x = 1}") +#20032=@"loc,{#10000},1,2,1,8" +locations_default(#20032,#10000,1,2,1,8) +hasLocation(#20031,#20032) +exprContainers(#20031,#20027) +#20033=* +properties(#20033,#20031,0,0,"x = 1") +#20034=@"loc,{#10000},1,3,1,7" +locations_default(#20034,#10000,1,3,1,7) +hasLocation(#20033,#20034) #20035=* -tokeninfo(#20035,8,#20001,9,";") -#20036=@"loc,{#10000},1,15,1,15" -locations_default(#20036,#10000,1,15,1,15) -hasLocation(#20035,#20036) +exprs(#20035,0,#20033,0,"x") +hasLocation(#20035,#20009) +exprContainers(#20035,#20027) +literals("x","x",#20035) +#20036=* +exprs(#20036,78,#20033,1,"x") +hasLocation(#20036,#20009) +exprContainers(#20036,#20027) +literals("x","x",#20036) +decl(#20036,#20030) #20037=* -tokeninfo(#20037,0,#20001,10,"") -#20038=@"loc,{#10000},1,16,1,15" -locations_default(#20038,#10000,1,16,1,15) -hasLocation(#20037,#20038) +exprs(#20037,3,#20033,2,"1") +hasLocation(#20037,#20013) +exprContainers(#20037,#20027) +literals("1","1",#20037) +#20038=* +exprs(#20038,79,#20027,-2,"x") +hasLocation(#20038,#20021) +exprContainers(#20038,#20027) +literals("x","x",#20038) +bind(#20038,#20030) #20039=* entry_cfg_node(#20039,#20001) #20040=@"loc,{#10000},1,1,1,0" @@ -130,24 +129,24 @@ locations_default(#20040,#10000,1,1,1,0) hasLocation(#20039,#20040) #20041=* exit_cfg_node(#20041,#20001) -hasLocation(#20041,#20038) -successor(#20003,#20004) -successor(#20004,#20041) +hasLocation(#20041,#20025) +successor(#20026,#20027) +successor(#20027,#20041) #20042=* -entry_cfg_node(#20042,#20004) +entry_cfg_node(#20042,#20027) hasLocation(#20042,#20040) #20043=* -exit_cfg_node(#20043,#20004) +exit_cfg_node(#20043,#20027) #20044=@"loc,{#10000},1,15,1,14" locations_default(#20044,#10000,1,15,1,14) hasLocation(#20043,#20044) -successor(#20017,#20043) -successor(#20008,#20012) -successor(#20015,#20010) -successor(#20014,#20015) -successor(#20012,#20014) -successor(#20010,#20017) -successor(#20042,#20008) -successor(#20039,#20003) +successor(#20038,#20043) +successor(#20031,#20035) +successor(#20037,#20033) +successor(#20036,#20037) +successor(#20035,#20036) +successor(#20033,#20038) +successor(#20042,#20031) +successor(#20039,#20026) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2015/output/trap/restparms.js.trap b/javascript/extractor/tests/es2015/output/trap/restparms.js.trap index 10a16898dcf..8f60250eed9 100644 --- a/javascript/extractor/tests/es2015/output/trap/restparms.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/restparms.js.trap @@ -9,118 +9,117 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,2,1" -locations_default(#20002,#10000,1,1,2,1) -hasLocation(#20001,#20002) -#20003=@"var;{f};{#20000}" -variables(#20003,"f",#20000) -#20004=* -stmts(#20004,17,#20001,0,"functio ... ys) {\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;{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;{ys};{#20007}" -variables(#20011,"ys",#20007) -#20012=* -exprs(#20012,78,#20004,1,"ys") -#20013=@"loc,{#10000},1,18,1,19" -locations_default(#20013,#10000,1,18,1,19) -hasLocation(#20012,#20013) -exprContainers(#20012,#20004) -literals("ys","ys",#20012) -decl(#20012,#20011) -#20014=@"var;{arguments};{#20007}" -variables(#20014,"arguments",#20007) -isArgumentsObject(#20014) -hasRestParameter(#20004) -#20015=* -stmts(#20015,1,#20004,-2,"{\n}") -#20016=@"loc,{#10000},1,22,2,1" -locations_default(#20016,#10000,1,22,2,1) -hasLocation(#20015,#20016) -stmtContainers(#20015,#20004) -numlines(#20004,2,2,0) -#20017=* -lines(#20017,#20001,"function f(x, ...ys) {"," +#20002=* +lines(#20002,#20001,"function f(x, ...ys) {"," ") -#20018=@"loc,{#10000},1,1,1,22" -locations_default(#20018,#10000,1,1,1,22) -hasLocation(#20017,#20018) -#20019=* -lines(#20019,#20001,"}","") -#20020=@"loc,{#10000},2,1,2,1" -locations_default(#20020,#10000,2,1,2,1) -hasLocation(#20019,#20020) +#20003=@"loc,{#10000},1,1,1,22" +locations_default(#20003,#10000,1,1,1,22) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"}","") +#20005=@"loc,{#10000},2,1,2,1" +locations_default(#20005,#10000,2,1,2,1) +hasLocation(#20004,#20005) numlines(#20001,2,2,0) -#20021=* -tokeninfo(#20021,7,#20001,0,"function") -#20022=@"loc,{#10000},1,1,1,8" -locations_default(#20022,#10000,1,1,1,8) -hasLocation(#20021,#20022) -#20023=* -tokeninfo(#20023,6,#20001,1,"f") -hasLocation(#20023,#20006) +#20006=* +tokeninfo(#20006,7,#20001,0,"function") +#20007=@"loc,{#10000},1,1,1,8" +locations_default(#20007,#10000,1,1,1,8) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,6,#20001,1,"f") +#20009=@"loc,{#10000},1,10,1,10" +locations_default(#20009,#10000,1,10,1,10) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,2,"(") +#20011=@"loc,{#10000},1,11,1,11" +locations_default(#20011,#10000,1,11,1,11) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,6,#20001,3,"x") +#20013=@"loc,{#10000},1,12,1,12" +locations_default(#20013,#10000,1,12,1,12) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,4,",") +#20015=@"loc,{#10000},1,13,1,13" +locations_default(#20015,#10000,1,13,1,13) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,5,"...") +#20017=@"loc,{#10000},1,15,1,17" +locations_default(#20017,#10000,1,15,1,17) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,6,#20001,6,"ys") +#20019=@"loc,{#10000},1,18,1,19" +locations_default(#20019,#10000,1,18,1,19) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,7,")") +#20021=@"loc,{#10000},1,20,1,20" +locations_default(#20021,#10000,1,20,1,20) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,8,"{") +#20023=@"loc,{#10000},1,22,1,22" +locations_default(#20023,#10000,1,22,1,22) +hasLocation(#20022,#20023) #20024=* -tokeninfo(#20024,8,#20001,2,"(") -#20025=@"loc,{#10000},1,11,1,11" -locations_default(#20025,#10000,1,11,1,11) -hasLocation(#20024,#20025) -#20026=* -tokeninfo(#20026,6,#20001,3,"x") -hasLocation(#20026,#20010) -#20027=* -tokeninfo(#20027,8,#20001,4,",") -#20028=@"loc,{#10000},1,13,1,13" -locations_default(#20028,#10000,1,13,1,13) -hasLocation(#20027,#20028) +tokeninfo(#20024,8,#20001,9,"}") +hasLocation(#20024,#20005) +#20025=* +tokeninfo(#20025,0,#20001,10,"") +#20026=@"loc,{#10000},2,2,2,1" +locations_default(#20026,#10000,2,2,2,1) +hasLocation(#20025,#20026) +toplevels(#20001,0) +#20027=@"loc,{#10000},1,1,2,1" +locations_default(#20027,#10000,1,1,2,1) +hasLocation(#20001,#20027) +#20028=@"var;{f};{#20000}" +variables(#20028,"f",#20000) #20029=* -tokeninfo(#20029,8,#20001,5,"...") -#20030=@"loc,{#10000},1,15,1,17" -locations_default(#20030,#10000,1,15,1,17) -hasLocation(#20029,#20030) +stmts(#20029,17,#20001,0,"functio ... ys) {\n}") +hasLocation(#20029,#20027) +stmtContainers(#20029,#20001) +#20030=* +exprs(#20030,78,#20029,-1,"f") +hasLocation(#20030,#20009) +exprContainers(#20030,#20029) +literals("f","f",#20030) +decl(#20030,#20028) #20031=* -tokeninfo(#20031,6,#20001,6,"ys") -hasLocation(#20031,#20013) -#20032=* -tokeninfo(#20032,8,#20001,7,")") -#20033=@"loc,{#10000},1,20,1,20" -locations_default(#20033,#10000,1,20,1,20) -hasLocation(#20032,#20033) -#20034=* -tokeninfo(#20034,8,#20001,8,"{") -#20035=@"loc,{#10000},1,22,1,22" -locations_default(#20035,#10000,1,22,1,22) -hasLocation(#20034,#20035) -#20036=* -tokeninfo(#20036,8,#20001,9,"}") -hasLocation(#20036,#20020) +scopes(#20031,1) +scopenodes(#20029,#20031) +scopenesting(#20031,#20000) +#20032=@"var;{x};{#20031}" +variables(#20032,"x",#20031) +#20033=* +exprs(#20033,78,#20029,0,"x") +hasLocation(#20033,#20013) +exprContainers(#20033,#20029) +literals("x","x",#20033) +decl(#20033,#20032) +#20034=@"var;{ys};{#20031}" +variables(#20034,"ys",#20031) +#20035=* +exprs(#20035,78,#20029,1,"ys") +hasLocation(#20035,#20019) +exprContainers(#20035,#20029) +literals("ys","ys",#20035) +decl(#20035,#20034) +#20036=@"var;{arguments};{#20031}" +variables(#20036,"arguments",#20031) +isArgumentsObject(#20036) +hasRestParameter(#20029) #20037=* -tokeninfo(#20037,0,#20001,10,"") -#20038=@"loc,{#10000},2,2,2,1" -locations_default(#20038,#10000,2,2,2,1) +stmts(#20037,1,#20029,-2,"{\n}") +#20038=@"loc,{#10000},1,22,2,1" +locations_default(#20038,#10000,1,22,2,1) hasLocation(#20037,#20038) +stmtContainers(#20037,#20029) #20039=* entry_cfg_node(#20039,#20001) #20040=@"loc,{#10000},1,1,1,0" @@ -128,19 +127,19 @@ locations_default(#20040,#10000,1,1,1,0) hasLocation(#20039,#20040) #20041=* exit_cfg_node(#20041,#20001) -hasLocation(#20041,#20038) -successor(#20004,#20041) +hasLocation(#20041,#20026) +successor(#20029,#20041) #20042=* -entry_cfg_node(#20042,#20004) +entry_cfg_node(#20042,#20029) hasLocation(#20042,#20040) #20043=* -exit_cfg_node(#20043,#20004) -hasLocation(#20043,#20038) -successor(#20015,#20043) -successor(#20012,#20015) -successor(#20009,#20012) -successor(#20042,#20009) -successor(#20005,#20004) -successor(#20039,#20005) +exit_cfg_node(#20043,#20029) +hasLocation(#20043,#20026) +successor(#20037,#20043) +successor(#20035,#20037) +successor(#20033,#20035) +successor(#20042,#20033) +successor(#20030,#20029) +successor(#20039,#20030) numlines(#10000,2,2,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2015/output/trap/spreadelement.js.trap b/javascript/extractor/tests/es2015/output/trap/spreadelement.js.trap index 0a498fda418..5f77944aae7 100644 --- a/javascript/extractor/tests/es2015/output/trap/spreadelement.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/spreadelement.js.trap @@ -9,170 +9,170 @@ 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=* -stmts(#20003,2,#20001,0,"[a, ...as];") -#20004=@"loc,{#10000},1,1,1,11" -locations_default(#20004,#10000,1,1,1,11) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,7,#20003,0,"[a, ...as]") -#20006=@"loc,{#10000},1,1,1,10" -locations_default(#20006,#10000,1,1,1,10) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -#20007=* -exprs(#20007,79,#20005,0,"a") -#20008=@"loc,{#10000},1,2,1,2" -locations_default(#20008,#10000,1,2,1,2) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20003) -exprContainers(#20007,#20001) -literals("a","a",#20007) -#20009=@"var;{a};{#20000}" -variables(#20009,"a",#20000) -bind(#20007,#20009) -#20010=* -exprs(#20010,66,#20005,1,"...as") -#20011=@"loc,{#10000},1,5,1,9" -locations_default(#20011,#10000,1,5,1,9) -hasLocation(#20010,#20011) -enclosingStmt(#20010,#20003) -exprContainers(#20010,#20001) -#20012=* -exprs(#20012,79,#20010,0,"as") -#20013=@"loc,{#10000},1,8,1,9" -locations_default(#20013,#10000,1,8,1,9) -hasLocation(#20012,#20013) -enclosingStmt(#20012,#20003) -exprContainers(#20012,#20001) -literals("as","as",#20012) -#20014=@"var;{as};{#20000}" -variables(#20014,"as",#20000) -bind(#20012,#20014) -arraySize(#20005,2) -#20015=* -stmts(#20015,2,#20001,1,"new Array(...elts);") -#20016=@"loc,{#10000},2,1,2,19" -locations_default(#20016,#10000,2,1,2,19) -hasLocation(#20015,#20016) -stmtContainers(#20015,#20001) -#20017=* -exprs(#20017,12,#20015,0,"new Array(...elts)") -#20018=@"loc,{#10000},2,1,2,18" -locations_default(#20018,#10000,2,1,2,18) -hasLocation(#20017,#20018) -enclosingStmt(#20017,#20015) -exprContainers(#20017,#20001) -#20019=* -exprs(#20019,79,#20017,-1,"Array") -#20020=@"loc,{#10000},2,5,2,9" -locations_default(#20020,#10000,2,5,2,9) -hasLocation(#20019,#20020) -enclosingStmt(#20019,#20015) -exprContainers(#20019,#20001) -literals("Array","Array",#20019) -#20021=@"var;{Array};{#20000}" -variables(#20021,"Array",#20000) -bind(#20019,#20021) -#20022=* -exprs(#20022,66,#20017,0,"...elts") -#20023=@"loc,{#10000},2,11,2,17" -locations_default(#20023,#10000,2,11,2,17) -hasLocation(#20022,#20023) -enclosingStmt(#20022,#20015) -exprContainers(#20022,#20001) -#20024=* -exprs(#20024,79,#20022,0,"elts") -#20025=@"loc,{#10000},2,14,2,17" -locations_default(#20025,#10000,2,14,2,17) -hasLocation(#20024,#20025) -enclosingStmt(#20024,#20015) -exprContainers(#20024,#20001) -literals("elts","elts",#20024) -#20026=@"var;{elts};{#20000}" -variables(#20026,"elts",#20000) -bind(#20024,#20026) -#20027=* -lines(#20027,#20001,"[a, ...as];"," +#20002=* +lines(#20002,#20001,"[a, ...as];"," ") -hasLocation(#20027,#20004) -#20028=* -lines(#20028,#20001,"new Array(...elts);","") -hasLocation(#20028,#20016) +#20003=@"loc,{#10000},1,1,1,11" +locations_default(#20003,#10000,1,1,1,11) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"new Array(...elts);","") +#20005=@"loc,{#10000},2,1,2,19" +locations_default(#20005,#10000,2,1,2,19) +hasLocation(#20004,#20005) numlines(#20001,2,2,0) -#20029=* -tokeninfo(#20029,8,#20001,0,"[") -#20030=@"loc,{#10000},1,1,1,1" -locations_default(#20030,#10000,1,1,1,1) -hasLocation(#20029,#20030) -#20031=* -tokeninfo(#20031,6,#20001,1,"a") -hasLocation(#20031,#20008) +#20006=* +tokeninfo(#20006,8,#20001,0,"[") +#20007=@"loc,{#10000},1,1,1,1" +locations_default(#20007,#10000,1,1,1,1) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,6,#20001,1,"a") +#20009=@"loc,{#10000},1,2,1,2" +locations_default(#20009,#10000,1,2,1,2) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,2,",") +#20011=@"loc,{#10000},1,3,1,3" +locations_default(#20011,#10000,1,3,1,3) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,8,#20001,3,"...") +#20013=@"loc,{#10000},1,5,1,7" +locations_default(#20013,#10000,1,5,1,7) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,6,#20001,4,"as") +#20015=@"loc,{#10000},1,8,1,9" +locations_default(#20015,#10000,1,8,1,9) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,5,"]") +#20017=@"loc,{#10000},1,10,1,10" +locations_default(#20017,#10000,1,10,1,10) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,6,";") +#20019=@"loc,{#10000},1,11,1,11" +locations_default(#20019,#10000,1,11,1,11) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,7,#20001,7,"new") +#20021=@"loc,{#10000},2,1,2,3" +locations_default(#20021,#10000,2,1,2,3) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,6,#20001,8,"Array") +#20023=@"loc,{#10000},2,5,2,9" +locations_default(#20023,#10000,2,5,2,9) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,9,"(") +#20025=@"loc,{#10000},2,10,2,10" +locations_default(#20025,#10000,2,10,2,10) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,10,"...") +#20027=@"loc,{#10000},2,11,2,13" +locations_default(#20027,#10000,2,11,2,13) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,6,#20001,11,"elts") +#20029=@"loc,{#10000},2,14,2,17" +locations_default(#20029,#10000,2,14,2,17) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,12,")") +#20031=@"loc,{#10000},2,18,2,18" +locations_default(#20031,#10000,2,18,2,18) +hasLocation(#20030,#20031) #20032=* -tokeninfo(#20032,8,#20001,2,",") -#20033=@"loc,{#10000},1,3,1,3" -locations_default(#20033,#10000,1,3,1,3) +tokeninfo(#20032,8,#20001,13,";") +#20033=@"loc,{#10000},2,19,2,19" +locations_default(#20033,#10000,2,19,2,19) hasLocation(#20032,#20033) #20034=* -tokeninfo(#20034,8,#20001,3,"...") -#20035=@"loc,{#10000},1,5,1,7" -locations_default(#20035,#10000,1,5,1,7) +tokeninfo(#20034,0,#20001,14,"") +#20035=@"loc,{#10000},2,20,2,19" +locations_default(#20035,#10000,2,20,2,19) hasLocation(#20034,#20035) -#20036=* -tokeninfo(#20036,6,#20001,4,"as") -hasLocation(#20036,#20013) +toplevels(#20001,0) +#20036=@"loc,{#10000},1,1,2,19" +locations_default(#20036,#10000,1,1,2,19) +hasLocation(#20001,#20036) #20037=* -tokeninfo(#20037,8,#20001,5,"]") -#20038=@"loc,{#10000},1,10,1,10" -locations_default(#20038,#10000,1,10,1,10) -hasLocation(#20037,#20038) -#20039=* -tokeninfo(#20039,8,#20001,6,";") -#20040=@"loc,{#10000},1,11,1,11" -locations_default(#20040,#10000,1,11,1,11) -hasLocation(#20039,#20040) -#20041=* -tokeninfo(#20041,7,#20001,7,"new") -#20042=@"loc,{#10000},2,1,2,3" -locations_default(#20042,#10000,2,1,2,3) -hasLocation(#20041,#20042) -#20043=* -tokeninfo(#20043,6,#20001,8,"Array") -hasLocation(#20043,#20020) +stmts(#20037,2,#20001,0,"[a, ...as];") +hasLocation(#20037,#20003) +stmtContainers(#20037,#20001) +#20038=* +exprs(#20038,7,#20037,0,"[a, ...as]") +#20039=@"loc,{#10000},1,1,1,10" +locations_default(#20039,#10000,1,1,1,10) +hasLocation(#20038,#20039) +enclosingStmt(#20038,#20037) +exprContainers(#20038,#20001) +#20040=* +exprs(#20040,79,#20038,0,"a") +hasLocation(#20040,#20009) +enclosingStmt(#20040,#20037) +exprContainers(#20040,#20001) +literals("a","a",#20040) +#20041=@"var;{a};{#20000}" +variables(#20041,"a",#20000) +bind(#20040,#20041) +#20042=* +exprs(#20042,66,#20038,1,"...as") +#20043=@"loc,{#10000},1,5,1,9" +locations_default(#20043,#10000,1,5,1,9) +hasLocation(#20042,#20043) +enclosingStmt(#20042,#20037) +exprContainers(#20042,#20001) #20044=* -tokeninfo(#20044,8,#20001,9,"(") -#20045=@"loc,{#10000},2,10,2,10" -locations_default(#20045,#10000,2,10,2,10) -hasLocation(#20044,#20045) +exprs(#20044,79,#20042,0,"as") +hasLocation(#20044,#20015) +enclosingStmt(#20044,#20037) +exprContainers(#20044,#20001) +literals("as","as",#20044) +#20045=@"var;{as};{#20000}" +variables(#20045,"as",#20000) +bind(#20044,#20045) +arraySize(#20038,2) #20046=* -tokeninfo(#20046,8,#20001,10,"...") -#20047=@"loc,{#10000},2,11,2,13" -locations_default(#20047,#10000,2,11,2,13) -hasLocation(#20046,#20047) -#20048=* -tokeninfo(#20048,6,#20001,11,"elts") -hasLocation(#20048,#20025) +stmts(#20046,2,#20001,1,"new Array(...elts);") +hasLocation(#20046,#20005) +stmtContainers(#20046,#20001) +#20047=* +exprs(#20047,12,#20046,0,"new Array(...elts)") +#20048=@"loc,{#10000},2,1,2,18" +locations_default(#20048,#10000,2,1,2,18) +hasLocation(#20047,#20048) +enclosingStmt(#20047,#20046) +exprContainers(#20047,#20001) #20049=* -tokeninfo(#20049,8,#20001,12,")") -#20050=@"loc,{#10000},2,18,2,18" -locations_default(#20050,#10000,2,18,2,18) -hasLocation(#20049,#20050) +exprs(#20049,79,#20047,-1,"Array") +hasLocation(#20049,#20023) +enclosingStmt(#20049,#20046) +exprContainers(#20049,#20001) +literals("Array","Array",#20049) +#20050=@"var;{Array};{#20000}" +variables(#20050,"Array",#20000) +bind(#20049,#20050) #20051=* -tokeninfo(#20051,8,#20001,13,";") -#20052=@"loc,{#10000},2,19,2,19" -locations_default(#20052,#10000,2,19,2,19) +exprs(#20051,66,#20047,0,"...elts") +#20052=@"loc,{#10000},2,11,2,17" +locations_default(#20052,#10000,2,11,2,17) hasLocation(#20051,#20052) +enclosingStmt(#20051,#20046) +exprContainers(#20051,#20001) #20053=* -tokeninfo(#20053,0,#20001,14,"") -#20054=@"loc,{#10000},2,20,2,19" -locations_default(#20054,#10000,2,20,2,19) -hasLocation(#20053,#20054) +exprs(#20053,79,#20051,0,"elts") +hasLocation(#20053,#20029) +enclosingStmt(#20053,#20046) +exprContainers(#20053,#20001) +literals("elts","elts",#20053) +#20054=@"var;{elts};{#20000}" +variables(#20054,"elts",#20000) +bind(#20053,#20054) #20055=* entry_cfg_node(#20055,#20001) #20056=@"loc,{#10000},1,1,1,0" @@ -180,17 +180,17 @@ locations_default(#20056,#10000,1,1,1,0) hasLocation(#20055,#20056) #20057=* exit_cfg_node(#20057,#20001) -hasLocation(#20057,#20054) -successor(#20015,#20019) -successor(#20024,#20022) -successor(#20022,#20017) -successor(#20019,#20024) -successor(#20017,#20057) -successor(#20003,#20005) -successor(#20005,#20007) -successor(#20012,#20010) -successor(#20010,#20015) -successor(#20007,#20012) -successor(#20055,#20003) +hasLocation(#20057,#20035) +successor(#20046,#20049) +successor(#20053,#20051) +successor(#20051,#20047) +successor(#20049,#20053) +successor(#20047,#20057) +successor(#20037,#20038) +successor(#20038,#20040) +successor(#20044,#20042) +successor(#20042,#20046) +successor(#20040,#20044) +successor(#20055,#20037) numlines(#10000,2,2,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2015/output/trap/super_call.js.trap b/javascript/extractor/tests/es2015/output/trap/super_call.js.trap index a8e679d8242..e754a835435 100644 --- a/javascript/extractor/tests/es2015/output/trap/super_call.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/super_call.js.trap @@ -9,316 +9,314 @@ 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 extends B {"," +") +#20003=@"loc,{#10000},1,1,1,19" +locations_default(#20003,#10000,1,1,1,19) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," m() {"," +") +#20005=@"loc,{#10000},2,1,2,7" +locations_default(#20005,#10000,2,1,2,7) +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 super.m() + 19;"," +") +#20007=@"loc,{#10000},3,1,3,26" +locations_default(#20007,#10000,3,1,3,26) 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=* -exprs(#20009,79,#20005,1,"B") -#20010=@"loc,{#10000},1,17,1,17" -locations_default(#20010,#10000,1,17,1,17) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20005) -exprContainers(#20009,#20001) -literals("B","B",#20009) -#20011=@"var;{B};{#20000}" -variables(#20011,"B",#20000) -bind(#20009,#20011) +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=* -properties(#20012,#20005,2,0,"m() {\n ... 19;\n }") -#20013=@"loc,{#10000},2,3,4,3" -locations_default(#20013,#10000,2,3,4,3) +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=* -exprs(#20014,0,#20012,0,"m") -#20015=@"loc,{#10000},2,3,2,3" -locations_default(#20015,#10000,2,3,2,3) +tokeninfo(#20014,6,#20001,1,"A") +#20015=@"loc,{#10000},1,7,1,7" +locations_default(#20015,#10000,1,7,1,7) hasLocation(#20014,#20015) -enclosingStmt(#20014,#20005) -exprContainers(#20014,#20001) -literals("m","m",#20014) #20016=* -exprs(#20016,9,#20012,1,"() {\n ... 19;\n }") -#20017=@"loc,{#10000},2,4,4,3" -locations_default(#20017,#10000,2,4,4,3) +tokeninfo(#20016,7,#20001,2,"extends") +#20017=@"loc,{#10000},1,9,1,15" +locations_default(#20017,#10000,1,9,1,15) hasLocation(#20016,#20017) -enclosingStmt(#20016,#20005) -exprContainers(#20016,#20001) #20018=* -scopes(#20018,1) -scopenodes(#20016,#20018) -scopenesting(#20018,#20008) -#20019=@"var;{arguments};{#20018}" -variables(#20019,"arguments",#20018) -isArgumentsObject(#20019) +tokeninfo(#20018,6,#20001,3,"B") +#20019=@"loc,{#10000},1,17,1,17" +locations_default(#20019,#10000,1,17,1,17) +hasLocation(#20018,#20019) #20020=* -stmts(#20020,1,#20016,-2,"{\n r ... 19;\n }") -#20021=@"loc,{#10000},2,7,4,3" -locations_default(#20021,#10000,2,7,4,3) +tokeninfo(#20020,8,#20001,4,"{") +#20021=@"loc,{#10000},1,19,1,19" +locations_default(#20021,#10000,1,19,1,19) hasLocation(#20020,#20021) -stmtContainers(#20020,#20016) #20022=* -stmts(#20022,9,#20020,0,"return ... ) + 19;") -#20023=@"loc,{#10000},3,5,3,26" -locations_default(#20023,#10000,3,5,3,26) +tokeninfo(#20022,6,#20001,5,"m") +#20023=@"loc,{#10000},2,3,2,3" +locations_default(#20023,#10000,2,3,2,3) hasLocation(#20022,#20023) -stmtContainers(#20022,#20016) #20024=* -exprs(#20024,34,#20022,0,"super.m() + 19") -#20025=@"loc,{#10000},3,12,3,25" -locations_default(#20025,#10000,3,12,3,25) +tokeninfo(#20024,8,#20001,6,"(") +#20025=@"loc,{#10000},2,4,2,4" +locations_default(#20025,#10000,2,4,2,4) hasLocation(#20024,#20025) -enclosingStmt(#20024,#20022) -exprContainers(#20024,#20016) #20026=* -exprs(#20026,13,#20024,0,"super.m()") -#20027=@"loc,{#10000},3,12,3,20" -locations_default(#20027,#10000,3,12,3,20) +tokeninfo(#20026,8,#20001,7,")") +#20027=@"loc,{#10000},2,5,2,5" +locations_default(#20027,#10000,2,5,2,5) hasLocation(#20026,#20027) -enclosingStmt(#20026,#20022) -exprContainers(#20026,#20016) #20028=* -exprs(#20028,14,#20026,-1,"super.m") -#20029=@"loc,{#10000},3,12,3,18" -locations_default(#20029,#10000,3,12,3,18) +tokeninfo(#20028,8,#20001,8,"{") +#20029=@"loc,{#10000},2,7,2,7" +locations_default(#20029,#10000,2,7,2,7) hasLocation(#20028,#20029) -enclosingStmt(#20028,#20022) -exprContainers(#20028,#20016) #20030=* -exprs(#20030,81,#20028,0,"super") -#20031=@"loc,{#10000},3,12,3,16" -locations_default(#20031,#10000,3,12,3,16) +tokeninfo(#20030,7,#20001,9,"return") +#20031=@"loc,{#10000},3,5,3,10" +locations_default(#20031,#10000,3,5,3,10) hasLocation(#20030,#20031) -enclosingStmt(#20030,#20022) -exprContainers(#20030,#20016) #20032=* -exprs(#20032,0,#20028,1,"m") -#20033=@"loc,{#10000},3,18,3,18" -locations_default(#20033,#10000,3,18,3,18) +tokeninfo(#20032,7,#20001,10,"super") +#20033=@"loc,{#10000},3,12,3,16" +locations_default(#20033,#10000,3,12,3,16) hasLocation(#20032,#20033) -enclosingStmt(#20032,#20022) -exprContainers(#20032,#20016) -literals("m","m",#20032) #20034=* -exprs(#20034,3,#20024,1,"19") -#20035=@"loc,{#10000},3,24,3,25" -locations_default(#20035,#10000,3,24,3,25) +tokeninfo(#20034,8,#20001,11,".") +#20035=@"loc,{#10000},3,17,3,17" +locations_default(#20035,#10000,3,17,3,17) hasLocation(#20034,#20035) -enclosingStmt(#20034,#20022) -exprContainers(#20034,#20016) -literals("19","19",#20034) -numlines(#20016,3,3,0) -isMethod(#20012) #20036=* -properties(#20036,#20005,3,0,"constru ... rgs); }") -#20037=@"loc,{#10000},1,19,1,18" -locations_default(#20037,#10000,1,19,1,18) +tokeninfo(#20036,6,#20001,12,"m") +#20037=@"loc,{#10000},3,18,3,18" +locations_default(#20037,#10000,3,18,3,18) hasLocation(#20036,#20037) #20038=* -exprs(#20038,0,#20036,0,"constructor") -hasLocation(#20038,#20037) -enclosingStmt(#20038,#20005) -exprContainers(#20038,#20001) -literals("constructor","constructor",#20038) -#20039=* -exprs(#20039,9,#20036,1,"(...arg ... rgs); }") -hasLocation(#20039,#20037) -enclosingStmt(#20039,#20005) -exprContainers(#20039,#20001) +tokeninfo(#20038,8,#20001,13,"(") +#20039=@"loc,{#10000},3,19,3,19" +locations_default(#20039,#10000,3,19,3,19) +hasLocation(#20038,#20039) #20040=* -scopes(#20040,1) -scopenodes(#20039,#20040) -scopenesting(#20040,#20008) -#20041=@"var;{args};{#20040}" -variables(#20041,"args",#20040) +tokeninfo(#20040,8,#20001,14,")") +#20041=@"loc,{#10000},3,20,3,20" +locations_default(#20041,#10000,3,20,3,20) +hasLocation(#20040,#20041) #20042=* -exprs(#20042,78,#20039,0,"args") -hasLocation(#20042,#20037) -exprContainers(#20042,#20039) -literals("args","args",#20042) -decl(#20042,#20041) -#20043=@"var;{arguments};{#20040}" -variables(#20043,"arguments",#20040) -isArgumentsObject(#20043) -hasRestParameter(#20039) +tokeninfo(#20042,8,#20001,15,"+") +#20043=@"loc,{#10000},3,22,3,22" +locations_default(#20043,#10000,3,22,3,22) +hasLocation(#20042,#20043) #20044=* -stmts(#20044,1,#20039,-2,"{ super(...args); }") -hasLocation(#20044,#20037) -stmtContainers(#20044,#20039) -#20045=* -stmts(#20045,2,#20044,0,"super(...args);") -hasLocation(#20045,#20037) -stmtContainers(#20045,#20039) +tokeninfo(#20044,3,#20001,16,"19") +#20045=@"loc,{#10000},3,24,3,25" +locations_default(#20045,#10000,3,24,3,25) +hasLocation(#20044,#20045) #20046=* -exprs(#20046,13,#20045,0,"super(...args)") -hasLocation(#20046,#20037) -enclosingStmt(#20046,#20045) -exprContainers(#20046,#20039) -#20047=* -exprs(#20047,81,#20046,-1,"super") -hasLocation(#20047,#20037) -enclosingStmt(#20047,#20045) -exprContainers(#20047,#20039) +tokeninfo(#20046,8,#20001,17,";") +#20047=@"loc,{#10000},3,26,3,26" +locations_default(#20047,#10000,3,26,3,26) +hasLocation(#20046,#20047) #20048=* -exprs(#20048,66,#20046,0,"...args") -hasLocation(#20048,#20037) -enclosingStmt(#20048,#20045) -exprContainers(#20048,#20039) -#20049=* -exprs(#20049,79,#20048,0,"args") -hasLocation(#20049,#20037) -enclosingStmt(#20049,#20045) -exprContainers(#20049,#20039) -literals("args","args",#20049) -bind(#20049,#20041) -numlines(#20039,1,0,0) -isMethod(#20036) +tokeninfo(#20048,8,#20001,18,"}") +#20049=@"loc,{#10000},4,3,4,3" +locations_default(#20049,#10000,4,3,4,3) +hasLocation(#20048,#20049) #20050=* -lines(#20050,#20001,"class A extends B {"," -") -#20051=@"loc,{#10000},1,1,1,19" -locations_default(#20051,#10000,1,1,1,19) -hasLocation(#20050,#20051) -#20052=* -lines(#20052,#20001," m() {"," -") -#20053=@"loc,{#10000},2,1,2,7" -locations_default(#20053,#10000,2,1,2,7) -hasLocation(#20052,#20053) -indentation(#10000,2," ",2) -#20054=* -lines(#20054,#20001," return super.m() + 19;"," -") -#20055=@"loc,{#10000},3,1,3,26" -locations_default(#20055,#10000,3,1,3,26) -hasLocation(#20054,#20055) -indentation(#10000,3," ",4) +tokeninfo(#20050,8,#20001,19,"}") +hasLocation(#20050,#20011) +#20051=* +tokeninfo(#20051,0,#20001,20,"") +#20052=@"loc,{#10000},5,2,5,1" +locations_default(#20052,#10000,5,2,5,1) +hasLocation(#20051,#20052) +toplevels(#20001,0) +#20053=@"loc,{#10000},1,1,5,1" +locations_default(#20053,#10000,1,1,5,1) +hasLocation(#20001,#20053) +#20054=@"var;{A};{#20000}" +variables(#20054,"A",#20000) +#20055=@"local_type_name;{A};{#20000}" +local_type_names(#20055,"A",#20000) #20056=* -lines(#20056,#20001," }"," -") -#20057=@"loc,{#10000},4,1,4,3" -locations_default(#20057,#10000,4,1,4,3) -hasLocation(#20056,#20057) -indentation(#10000,4," ",2) +stmts(#20056,26,#20001,0,"class A ... ;\n }\n}") +hasLocation(#20056,#20053) +stmtContainers(#20056,#20001) +#20057=* +exprs(#20057,78,#20056,0,"A") +hasLocation(#20057,#20015) +enclosingStmt(#20057,#20056) +exprContainers(#20057,#20001) +literals("A","A",#20057) +decl(#20057,#20054) +typedecl(#20057,#20055) #20058=* -lines(#20058,#20001,"}","") -#20059=@"loc,{#10000},5,1,5,1" -locations_default(#20059,#10000,5,1,5,1) -hasLocation(#20058,#20059) -numlines(#20001,5,5,0) -#20060=* -tokeninfo(#20060,7,#20001,0,"class") -#20061=@"loc,{#10000},1,1,1,5" -locations_default(#20061,#10000,1,1,1,5) -hasLocation(#20060,#20061) -#20062=* -tokeninfo(#20062,6,#20001,1,"A") -hasLocation(#20062,#20007) +scopes(#20058,10) +scopenodes(#20056,#20058) +scopenesting(#20058,#20000) +#20059=* +exprs(#20059,79,#20056,1,"B") +hasLocation(#20059,#20019) +enclosingStmt(#20059,#20056) +exprContainers(#20059,#20001) +literals("B","B",#20059) +#20060=@"var;{B};{#20000}" +variables(#20060,"B",#20000) +bind(#20059,#20060) +#20061=* +properties(#20061,#20056,2,0,"m() {\n ... 19;\n }") +#20062=@"loc,{#10000},2,3,4,3" +locations_default(#20062,#10000,2,3,4,3) +hasLocation(#20061,#20062) #20063=* -tokeninfo(#20063,7,#20001,2,"extends") -#20064=@"loc,{#10000},1,9,1,15" -locations_default(#20064,#10000,1,9,1,15) -hasLocation(#20063,#20064) -#20065=* -tokeninfo(#20065,6,#20001,3,"B") -hasLocation(#20065,#20010) +exprs(#20063,0,#20061,0,"m") +hasLocation(#20063,#20023) +enclosingStmt(#20063,#20056) +exprContainers(#20063,#20001) +literals("m","m",#20063) +#20064=* +exprs(#20064,9,#20061,1,"() {\n ... 19;\n }") +#20065=@"loc,{#10000},2,4,4,3" +locations_default(#20065,#10000,2,4,4,3) +hasLocation(#20064,#20065) +enclosingStmt(#20064,#20056) +exprContainers(#20064,#20001) #20066=* -tokeninfo(#20066,8,#20001,4,"{") -#20067=@"loc,{#10000},1,19,1,19" -locations_default(#20067,#10000,1,19,1,19) -hasLocation(#20066,#20067) +scopes(#20066,1) +scopenodes(#20064,#20066) +scopenesting(#20066,#20058) +#20067=@"var;{arguments};{#20066}" +variables(#20067,"arguments",#20066) +isArgumentsObject(#20067) #20068=* -tokeninfo(#20068,6,#20001,5,"m") -hasLocation(#20068,#20015) -#20069=* -tokeninfo(#20069,8,#20001,6,"(") -#20070=@"loc,{#10000},2,4,2,4" -locations_default(#20070,#10000,2,4,2,4) -hasLocation(#20069,#20070) -#20071=* -tokeninfo(#20071,8,#20001,7,")") -#20072=@"loc,{#10000},2,5,2,5" -locations_default(#20072,#10000,2,5,2,5) -hasLocation(#20071,#20072) -#20073=* -tokeninfo(#20073,8,#20001,8,"{") -#20074=@"loc,{#10000},2,7,2,7" -locations_default(#20074,#10000,2,7,2,7) -hasLocation(#20073,#20074) -#20075=* -tokeninfo(#20075,7,#20001,9,"return") -#20076=@"loc,{#10000},3,5,3,10" -locations_default(#20076,#10000,3,5,3,10) -hasLocation(#20075,#20076) -#20077=* -tokeninfo(#20077,7,#20001,10,"super") -hasLocation(#20077,#20031) +stmts(#20068,1,#20064,-2,"{\n r ... 19;\n }") +#20069=@"loc,{#10000},2,7,4,3" +locations_default(#20069,#10000,2,7,4,3) +hasLocation(#20068,#20069) +stmtContainers(#20068,#20064) +#20070=* +stmts(#20070,9,#20068,0,"return ... ) + 19;") +#20071=@"loc,{#10000},3,5,3,26" +locations_default(#20071,#10000,3,5,3,26) +hasLocation(#20070,#20071) +stmtContainers(#20070,#20064) +#20072=* +exprs(#20072,34,#20070,0,"super.m() + 19") +#20073=@"loc,{#10000},3,12,3,25" +locations_default(#20073,#10000,3,12,3,25) +hasLocation(#20072,#20073) +enclosingStmt(#20072,#20070) +exprContainers(#20072,#20064) +#20074=* +exprs(#20074,13,#20072,0,"super.m()") +#20075=@"loc,{#10000},3,12,3,20" +locations_default(#20075,#10000,3,12,3,20) +hasLocation(#20074,#20075) +enclosingStmt(#20074,#20070) +exprContainers(#20074,#20064) +#20076=* +exprs(#20076,14,#20074,-1,"super.m") +#20077=@"loc,{#10000},3,12,3,18" +locations_default(#20077,#10000,3,12,3,18) +hasLocation(#20076,#20077) +enclosingStmt(#20076,#20070) +exprContainers(#20076,#20064) #20078=* -tokeninfo(#20078,8,#20001,11,".") -#20079=@"loc,{#10000},3,17,3,17" -locations_default(#20079,#10000,3,17,3,17) -hasLocation(#20078,#20079) +exprs(#20078,81,#20076,0,"super") +hasLocation(#20078,#20033) +enclosingStmt(#20078,#20070) +exprContainers(#20078,#20064) +#20079=* +exprs(#20079,0,#20076,1,"m") +hasLocation(#20079,#20037) +enclosingStmt(#20079,#20070) +exprContainers(#20079,#20064) +literals("m","m",#20079) #20080=* -tokeninfo(#20080,6,#20001,12,"m") -hasLocation(#20080,#20033) +exprs(#20080,3,#20072,1,"19") +hasLocation(#20080,#20045) +enclosingStmt(#20080,#20070) +exprContainers(#20080,#20064) +literals("19","19",#20080) +isMethod(#20061) #20081=* -tokeninfo(#20081,8,#20001,13,"(") -#20082=@"loc,{#10000},3,19,3,19" -locations_default(#20082,#10000,3,19,3,19) +properties(#20081,#20056,3,0,"constru ... rgs); }") +#20082=@"loc,{#10000},1,19,1,18" +locations_default(#20082,#10000,1,19,1,18) hasLocation(#20081,#20082) #20083=* -tokeninfo(#20083,8,#20001,14,")") -#20084=@"loc,{#10000},3,20,3,20" -locations_default(#20084,#10000,3,20,3,20) -hasLocation(#20083,#20084) +exprs(#20083,0,#20081,0,"constructor") +hasLocation(#20083,#20082) +enclosingStmt(#20083,#20056) +exprContainers(#20083,#20001) +literals("constructor","constructor",#20083) +#20084=* +exprs(#20084,9,#20081,1,"(...arg ... rgs); }") +hasLocation(#20084,#20082) +enclosingStmt(#20084,#20056) +exprContainers(#20084,#20001) #20085=* -tokeninfo(#20085,8,#20001,15,"+") -#20086=@"loc,{#10000},3,22,3,22" -locations_default(#20086,#10000,3,22,3,22) -hasLocation(#20085,#20086) +scopes(#20085,1) +scopenodes(#20084,#20085) +scopenesting(#20085,#20058) +#20086=@"var;{args};{#20085}" +variables(#20086,"args",#20085) #20087=* -tokeninfo(#20087,3,#20001,16,"19") -hasLocation(#20087,#20035) -#20088=* -tokeninfo(#20088,8,#20001,17,";") -#20089=@"loc,{#10000},3,26,3,26" -locations_default(#20089,#10000,3,26,3,26) -hasLocation(#20088,#20089) +exprs(#20087,78,#20084,0,"args") +hasLocation(#20087,#20082) +exprContainers(#20087,#20084) +literals("args","args",#20087) +decl(#20087,#20086) +#20088=@"var;{arguments};{#20085}" +variables(#20088,"arguments",#20085) +isArgumentsObject(#20088) +hasRestParameter(#20084) +#20089=* +stmts(#20089,1,#20084,-2,"{ super(...args); }") +hasLocation(#20089,#20082) +stmtContainers(#20089,#20084) #20090=* -tokeninfo(#20090,8,#20001,18,"}") -#20091=@"loc,{#10000},4,3,4,3" -locations_default(#20091,#10000,4,3,4,3) -hasLocation(#20090,#20091) +stmts(#20090,2,#20089,0,"super(...args);") +hasLocation(#20090,#20082) +stmtContainers(#20090,#20084) +#20091=* +exprs(#20091,13,#20090,0,"super(...args)") +hasLocation(#20091,#20082) +enclosingStmt(#20091,#20090) +exprContainers(#20091,#20084) #20092=* -tokeninfo(#20092,8,#20001,19,"}") -hasLocation(#20092,#20059) +exprs(#20092,81,#20091,-1,"super") +hasLocation(#20092,#20082) +enclosingStmt(#20092,#20090) +exprContainers(#20092,#20084) #20093=* -tokeninfo(#20093,0,#20001,20,"") -#20094=@"loc,{#10000},5,2,5,1" -locations_default(#20094,#10000,5,2,5,1) -hasLocation(#20093,#20094) +exprs(#20093,66,#20091,0,"...args") +hasLocation(#20093,#20082) +enclosingStmt(#20093,#20090) +exprContainers(#20093,#20084) +#20094=* +exprs(#20094,79,#20093,0,"args") +hasLocation(#20094,#20082) +enclosingStmt(#20094,#20090) +exprContainers(#20094,#20084) +literals("args","args",#20094) +bind(#20094,#20086) +isMethod(#20081) #20095=* entry_cfg_node(#20095,#20001) #20096=@"loc,{#10000},1,1,1,0" @@ -326,49 +324,49 @@ locations_default(#20096,#10000,1,1,1,0) hasLocation(#20095,#20096) #20097=* exit_cfg_node(#20097,#20001) -hasLocation(#20097,#20094) -successor(#20039,#20036) +hasLocation(#20097,#20052) +successor(#20084,#20081) #20098=* -entry_cfg_node(#20098,#20039) -hasLocation(#20098,#20037) +entry_cfg_node(#20098,#20084) +hasLocation(#20098,#20082) #20099=* -exit_cfg_node(#20099,#20039) -hasLocation(#20099,#20037) -successor(#20044,#20045) -successor(#20045,#20047) -successor(#20049,#20048) -successor(#20048,#20046) -successor(#20047,#20049) -successor(#20046,#20099) -successor(#20042,#20044) -successor(#20098,#20042) -successor(#20038,#20039) -successor(#20036,#20005) -successor(#20016,#20012) +exit_cfg_node(#20099,#20084) +hasLocation(#20099,#20082) +successor(#20089,#20090) +successor(#20090,#20092) +successor(#20094,#20093) +successor(#20093,#20091) +successor(#20092,#20094) +successor(#20091,#20099) +successor(#20087,#20089) +successor(#20098,#20087) +successor(#20083,#20084) +successor(#20081,#20056) +successor(#20064,#20061) #20100=* -entry_cfg_node(#20100,#20016) +entry_cfg_node(#20100,#20064) #20101=@"loc,{#10000},2,4,2,3" locations_default(#20101,#10000,2,4,2,3) hasLocation(#20100,#20101) #20102=* -exit_cfg_node(#20102,#20016) +exit_cfg_node(#20102,#20064) #20103=@"loc,{#10000},4,4,4,3" locations_default(#20103,#10000,4,4,4,3) hasLocation(#20102,#20103) -successor(#20020,#20030) -successor(#20034,#20024) -successor(#20032,#20028) -successor(#20030,#20032) -successor(#20028,#20026) -successor(#20026,#20034) -successor(#20024,#20022) -successor(#20022,#20102) -successor(#20100,#20020) -successor(#20014,#20016) -successor(#20012,#20038) -successor(#20009,#20014) -successor(#20006,#20009) -successor(#20005,#20097) -successor(#20095,#20006) +successor(#20068,#20078) +successor(#20080,#20072) +successor(#20079,#20076) +successor(#20078,#20079) +successor(#20076,#20074) +successor(#20074,#20080) +successor(#20072,#20070) +successor(#20070,#20102) +successor(#20100,#20068) +successor(#20063,#20064) +successor(#20061,#20083) +successor(#20059,#20063) +successor(#20057,#20059) +successor(#20056,#20097) +successor(#20095,#20057) numlines(#10000,5,5,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2015/output/trap/super_ctor.js.trap b/javascript/extractor/tests/es2015/output/trap/super_ctor.js.trap index bbc99278571..771ed5ab864 100644 --- a/javascript/extractor/tests/es2015/output/trap/super_ctor.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/super_ctor.js.trap @@ -9,212 +9,211 @@ 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 extends B {"," +") +#20003=@"loc,{#10000},1,1,1,19" +locations_default(#20003,#10000,1,1,1,19) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," constructor() {"," +") +#20005=@"loc,{#10000},2,1,2,17" +locations_default(#20005,#10000,2,1,2,17) +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," super(42);"," +") +#20007=@"loc,{#10000},3,1,3,14" +locations_default(#20007,#10000,3,1,3,14) 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=* -exprs(#20009,79,#20005,1,"B") -#20010=@"loc,{#10000},1,17,1,17" -locations_default(#20010,#10000,1,17,1,17) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20005) -exprContainers(#20009,#20001) -literals("B","B",#20009) -#20011=@"var;{B};{#20000}" -variables(#20011,"B",#20000) -bind(#20009,#20011) +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=* -properties(#20012,#20005,2,0,"constru ... 2);\n }") -#20013=@"loc,{#10000},2,3,4,3" -locations_default(#20013,#10000,2,3,4,3) +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=* -exprs(#20014,0,#20012,0,"constructor") -#20015=@"loc,{#10000},2,3,2,13" -locations_default(#20015,#10000,2,3,2,13) +tokeninfo(#20014,6,#20001,1,"A") +#20015=@"loc,{#10000},1,7,1,7" +locations_default(#20015,#10000,1,7,1,7) hasLocation(#20014,#20015) -enclosingStmt(#20014,#20005) -exprContainers(#20014,#20001) -literals("constructor","constructor",#20014) #20016=* -exprs(#20016,9,#20012,1,"() {\n ... 2);\n }") -#20017=@"loc,{#10000},2,14,4,3" -locations_default(#20017,#10000,2,14,4,3) +tokeninfo(#20016,7,#20001,2,"extends") +#20017=@"loc,{#10000},1,9,1,15" +locations_default(#20017,#10000,1,9,1,15) hasLocation(#20016,#20017) -enclosingStmt(#20016,#20005) -exprContainers(#20016,#20001) #20018=* -scopes(#20018,1) -scopenodes(#20016,#20018) -scopenesting(#20018,#20008) -#20019=@"var;{arguments};{#20018}" -variables(#20019,"arguments",#20018) -isArgumentsObject(#20019) +tokeninfo(#20018,6,#20001,3,"B") +#20019=@"loc,{#10000},1,17,1,17" +locations_default(#20019,#10000,1,17,1,17) +hasLocation(#20018,#20019) #20020=* -stmts(#20020,1,#20016,-2,"{\n super(42);\n }") -#20021=@"loc,{#10000},2,17,4,3" -locations_default(#20021,#10000,2,17,4,3) +tokeninfo(#20020,8,#20001,4,"{") +#20021=@"loc,{#10000},1,19,1,19" +locations_default(#20021,#10000,1,19,1,19) hasLocation(#20020,#20021) -stmtContainers(#20020,#20016) #20022=* -stmts(#20022,2,#20020,0,"super(42);") -#20023=@"loc,{#10000},3,5,3,14" -locations_default(#20023,#10000,3,5,3,14) +tokeninfo(#20022,6,#20001,5,"constructor") +#20023=@"loc,{#10000},2,3,2,13" +locations_default(#20023,#10000,2,3,2,13) hasLocation(#20022,#20023) -stmtContainers(#20022,#20016) #20024=* -exprs(#20024,13,#20022,0,"super(42)") -#20025=@"loc,{#10000},3,5,3,13" -locations_default(#20025,#10000,3,5,3,13) +tokeninfo(#20024,8,#20001,6,"(") +#20025=@"loc,{#10000},2,14,2,14" +locations_default(#20025,#10000,2,14,2,14) hasLocation(#20024,#20025) -enclosingStmt(#20024,#20022) -exprContainers(#20024,#20016) #20026=* -exprs(#20026,81,#20024,-1,"super") -#20027=@"loc,{#10000},3,5,3,9" -locations_default(#20027,#10000,3,5,3,9) +tokeninfo(#20026,8,#20001,7,")") +#20027=@"loc,{#10000},2,15,2,15" +locations_default(#20027,#10000,2,15,2,15) hasLocation(#20026,#20027) -enclosingStmt(#20026,#20022) -exprContainers(#20026,#20016) #20028=* -exprs(#20028,3,#20024,0,"42") -#20029=@"loc,{#10000},3,11,3,12" -locations_default(#20029,#10000,3,11,3,12) +tokeninfo(#20028,8,#20001,8,"{") +#20029=@"loc,{#10000},2,17,2,17" +locations_default(#20029,#10000,2,17,2,17) hasLocation(#20028,#20029) -enclosingStmt(#20028,#20022) -exprContainers(#20028,#20016) -literals("42","42",#20028) -numlines(#20016,3,3,0) -isMethod(#20012) #20030=* -lines(#20030,#20001,"class A extends B {"," -") -#20031=@"loc,{#10000},1,1,1,19" -locations_default(#20031,#10000,1,1,1,19) +tokeninfo(#20030,7,#20001,9,"super") +#20031=@"loc,{#10000},3,5,3,9" +locations_default(#20031,#10000,3,5,3,9) hasLocation(#20030,#20031) #20032=* -lines(#20032,#20001," constructor() {"," -") -#20033=@"loc,{#10000},2,1,2,17" -locations_default(#20033,#10000,2,1,2,17) +tokeninfo(#20032,8,#20001,10,"(") +#20033=@"loc,{#10000},3,10,3,10" +locations_default(#20033,#10000,3,10,3,10) hasLocation(#20032,#20033) -indentation(#10000,2," ",2) #20034=* -lines(#20034,#20001," super(42);"," -") -#20035=@"loc,{#10000},3,1,3,14" -locations_default(#20035,#10000,3,1,3,14) +tokeninfo(#20034,3,#20001,11,"42") +#20035=@"loc,{#10000},3,11,3,12" +locations_default(#20035,#10000,3,11,3,12) 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) +tokeninfo(#20036,8,#20001,12,")") +#20037=@"loc,{#10000},3,13,3,13" +locations_default(#20037,#10000,3,13,3,13) 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) +tokeninfo(#20038,8,#20001,13,";") +#20039=@"loc,{#10000},3,14,3,14" +locations_default(#20039,#10000,3,14,3,14) 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) +tokeninfo(#20040,8,#20001,14,"}") +#20041=@"loc,{#10000},4,3,4,3" +locations_default(#20041,#10000,4,3,4,3) hasLocation(#20040,#20041) #20042=* -tokeninfo(#20042,6,#20001,1,"A") -hasLocation(#20042,#20007) +tokeninfo(#20042,8,#20001,15,"}") +hasLocation(#20042,#20011) #20043=* -tokeninfo(#20043,7,#20001,2,"extends") -#20044=@"loc,{#10000},1,9,1,15" -locations_default(#20044,#10000,1,9,1,15) +tokeninfo(#20043,0,#20001,16,"") +#20044=@"loc,{#10000},5,2,5,1" +locations_default(#20044,#10000,5,2,5,1) hasLocation(#20043,#20044) -#20045=* -tokeninfo(#20045,6,#20001,3,"B") -hasLocation(#20045,#20010) -#20046=* -tokeninfo(#20046,8,#20001,4,"{") -#20047=@"loc,{#10000},1,19,1,19" -locations_default(#20047,#10000,1,19,1,19) -hasLocation(#20046,#20047) +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=* -tokeninfo(#20048,6,#20001,5,"constructor") -hasLocation(#20048,#20015) +stmts(#20048,26,#20001,0,"class A ... ;\n }\n}") +hasLocation(#20048,#20045) +stmtContainers(#20048,#20001) #20049=* -tokeninfo(#20049,8,#20001,6,"(") -#20050=@"loc,{#10000},2,14,2,14" -locations_default(#20050,#10000,2,14,2,14) -hasLocation(#20049,#20050) +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=* +scopes(#20050,10) +scopenodes(#20048,#20050) +scopenesting(#20050,#20000) #20051=* -tokeninfo(#20051,8,#20001,7,")") -#20052=@"loc,{#10000},2,15,2,15" -locations_default(#20052,#10000,2,15,2,15) -hasLocation(#20051,#20052) +exprs(#20051,79,#20048,1,"B") +hasLocation(#20051,#20019) +enclosingStmt(#20051,#20048) +exprContainers(#20051,#20001) +literals("B","B",#20051) +#20052=@"var;{B};{#20000}" +variables(#20052,"B",#20000) +bind(#20051,#20052) #20053=* -tokeninfo(#20053,8,#20001,8,"{") -#20054=@"loc,{#10000},2,17,2,17" -locations_default(#20054,#10000,2,17,2,17) +properties(#20053,#20048,2,0,"constru ... 2);\n }") +#20054=@"loc,{#10000},2,3,4,3" +locations_default(#20054,#10000,2,3,4,3) hasLocation(#20053,#20054) #20055=* -tokeninfo(#20055,7,#20001,9,"super") -hasLocation(#20055,#20027) +exprs(#20055,0,#20053,0,"constructor") +hasLocation(#20055,#20023) +enclosingStmt(#20055,#20048) +exprContainers(#20055,#20001) +literals("constructor","constructor",#20055) #20056=* -tokeninfo(#20056,8,#20001,10,"(") -#20057=@"loc,{#10000},3,10,3,10" -locations_default(#20057,#10000,3,10,3,10) +exprs(#20056,9,#20053,1,"() {\n ... 2);\n }") +#20057=@"loc,{#10000},2,14,4,3" +locations_default(#20057,#10000,2,14,4,3) hasLocation(#20056,#20057) +enclosingStmt(#20056,#20048) +exprContainers(#20056,#20001) #20058=* -tokeninfo(#20058,3,#20001,11,"42") -hasLocation(#20058,#20029) -#20059=* -tokeninfo(#20059,8,#20001,12,")") -#20060=@"loc,{#10000},3,13,3,13" -locations_default(#20060,#10000,3,13,3,13) -hasLocation(#20059,#20060) -#20061=* -tokeninfo(#20061,8,#20001,13,";") -#20062=@"loc,{#10000},3,14,3,14" -locations_default(#20062,#10000,3,14,3,14) -hasLocation(#20061,#20062) -#20063=* -tokeninfo(#20063,8,#20001,14,"}") -#20064=@"loc,{#10000},4,3,4,3" -locations_default(#20064,#10000,4,3,4,3) -hasLocation(#20063,#20064) -#20065=* -tokeninfo(#20065,8,#20001,15,"}") -hasLocation(#20065,#20039) +scopes(#20058,1) +scopenodes(#20056,#20058) +scopenesting(#20058,#20050) +#20059=@"var;{arguments};{#20058}" +variables(#20059,"arguments",#20058) +isArgumentsObject(#20059) +#20060=* +stmts(#20060,1,#20056,-2,"{\n super(42);\n }") +#20061=@"loc,{#10000},2,17,4,3" +locations_default(#20061,#10000,2,17,4,3) +hasLocation(#20060,#20061) +stmtContainers(#20060,#20056) +#20062=* +stmts(#20062,2,#20060,0,"super(42);") +#20063=@"loc,{#10000},3,5,3,14" +locations_default(#20063,#10000,3,5,3,14) +hasLocation(#20062,#20063) +stmtContainers(#20062,#20056) +#20064=* +exprs(#20064,13,#20062,0,"super(42)") +#20065=@"loc,{#10000},3,5,3,13" +locations_default(#20065,#10000,3,5,3,13) +hasLocation(#20064,#20065) +enclosingStmt(#20064,#20062) +exprContainers(#20064,#20056) #20066=* -tokeninfo(#20066,0,#20001,16,"") -#20067=@"loc,{#10000},5,2,5,1" -locations_default(#20067,#10000,5,2,5,1) -hasLocation(#20066,#20067) +exprs(#20066,81,#20064,-1,"super") +hasLocation(#20066,#20031) +enclosingStmt(#20066,#20062) +exprContainers(#20066,#20056) +#20067=* +exprs(#20067,3,#20064,0,"42") +hasLocation(#20067,#20035) +enclosingStmt(#20067,#20062) +exprContainers(#20067,#20056) +literals("42","42",#20067) +isMethod(#20053) #20068=* entry_cfg_node(#20068,#20001) #20069=@"loc,{#10000},1,1,1,0" @@ -222,29 +221,29 @@ locations_default(#20069,#10000,1,1,1,0) hasLocation(#20068,#20069) #20070=* exit_cfg_node(#20070,#20001) -hasLocation(#20070,#20067) -successor(#20016,#20012) +hasLocation(#20070,#20044) +successor(#20056,#20053) #20071=* -entry_cfg_node(#20071,#20016) +entry_cfg_node(#20071,#20056) #20072=@"loc,{#10000},2,14,2,13" locations_default(#20072,#10000,2,14,2,13) hasLocation(#20071,#20072) #20073=* -exit_cfg_node(#20073,#20016) +exit_cfg_node(#20073,#20056) #20074=@"loc,{#10000},4,4,4,3" locations_default(#20074,#10000,4,4,4,3) hasLocation(#20073,#20074) -successor(#20020,#20022) -successor(#20022,#20026) -successor(#20028,#20024) -successor(#20026,#20028) -successor(#20024,#20073) -successor(#20071,#20020) -successor(#20014,#20016) -successor(#20012,#20005) -successor(#20009,#20014) -successor(#20006,#20009) -successor(#20005,#20070) -successor(#20068,#20006) +successor(#20060,#20062) +successor(#20062,#20066) +successor(#20067,#20064) +successor(#20066,#20067) +successor(#20064,#20073) +successor(#20071,#20060) +successor(#20055,#20056) +successor(#20053,#20048) +successor(#20051,#20055) +successor(#20049,#20051) +successor(#20048,#20070) +successor(#20068,#20049) numlines(#10000,5,5,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2015/output/trap/templates.js.trap b/javascript/extractor/tests/es2015/output/trap/templates.js.trap index 96431cc6df7..e73217f6918 100644 --- a/javascript/extractor/tests/es2015/output/trap/templates.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/templates.js.trap @@ -9,676 +9,675 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,8,29" -locations_default(#20002,#10000,1,1,8,29) -hasLocation(#20001,#20002) -#20003=@"var;{tag};{#20000}" -variables(#20003,"tag",#20000) -#20004=@"var;{x};{#20000}" -variables(#20004,"x",#20000) -#20005=@"var;{y};{#20000}" -variables(#20005,"y",#20000) -#20006=* -stmts(#20006,17,#20001,0,"functio ... , ');\n}") -#20007=@"loc,{#10000},1,1,3,1" -locations_default(#20007,#10000,1,1,3,1) -hasLocation(#20006,#20007) -stmtContainers(#20006,#20001) -#20008=* -exprs(#20008,78,#20006,-1,"tag") -#20009=@"loc,{#10000},1,10,1,12" -locations_default(#20009,#10000,1,10,1,12) -hasLocation(#20008,#20009) -exprContainers(#20008,#20006) -literals("tag","tag",#20008) -decl(#20008,#20003) -#20010=* -scopes(#20010,1) -scopenodes(#20006,#20010) -scopenesting(#20010,#20000) -#20011=@"var;{strings};{#20010}" -variables(#20011,"strings",#20010) -#20012=* -exprs(#20012,78,#20006,0,"strings") -#20013=@"loc,{#10000},1,14,1,20" -locations_default(#20013,#10000,1,14,1,20) -hasLocation(#20012,#20013) -exprContainers(#20012,#20006) -literals("strings","strings",#20012) -decl(#20012,#20011) -#20014=@"var;{values};{#20010}" -variables(#20014,"values",#20010) -#20015=* -exprs(#20015,78,#20006,1,"values") -#20016=@"loc,{#10000},1,26,1,31" -locations_default(#20016,#10000,1,26,1,31) -hasLocation(#20015,#20016) -exprContainers(#20015,#20006) -literals("values","values",#20015) -decl(#20015,#20014) -#20017=@"var;{arguments};{#20010}" -variables(#20017,"arguments",#20010) -isArgumentsObject(#20017) -hasRestParameter(#20006) -#20018=* -stmts(#20018,1,#20006,-2,"{\n ret ... , ');\n}") -#20019=@"loc,{#10000},1,34,3,1" -locations_default(#20019,#10000,1,34,3,1) -hasLocation(#20018,#20019) -stmtContainers(#20018,#20006) -#20020=* -stmts(#20020,9,#20018,0,"return ... (', ');") -#20021=@"loc,{#10000},2,3,2,40" -locations_default(#20021,#10000,2,3,2,40) -hasLocation(#20020,#20021) -stmtContainers(#20020,#20006) -#20022=* -exprs(#20022,34,#20020,0,"""values ... n(', ')") -#20023=@"loc,{#10000},2,10,2,39" -locations_default(#20023,#10000,2,10,2,39) -hasLocation(#20022,#20023) -enclosingStmt(#20022,#20020) -exprContainers(#20022,#20006) -#20024=* -exprs(#20024,4,#20022,0,"""values: """) -#20025=@"loc,{#10000},2,10,2,19" -locations_default(#20025,#10000,2,10,2,19) -hasLocation(#20024,#20025) -enclosingStmt(#20024,#20020) -exprContainers(#20024,#20006) -literals("values: ","""values: """,#20024) -#20026=* -exprs(#20026,13,#20022,1,"values.join(', ')") -#20027=@"loc,{#10000},2,23,2,39" -locations_default(#20027,#10000,2,23,2,39) -hasLocation(#20026,#20027) -enclosingStmt(#20026,#20020) -exprContainers(#20026,#20006) -#20028=* -exprs(#20028,14,#20026,-1,"values.join") -#20029=@"loc,{#10000},2,23,2,33" -locations_default(#20029,#10000,2,23,2,33) -hasLocation(#20028,#20029) -enclosingStmt(#20028,#20020) -exprContainers(#20028,#20006) -#20030=* -exprs(#20030,79,#20028,0,"values") -#20031=@"loc,{#10000},2,23,2,28" -locations_default(#20031,#10000,2,23,2,28) -hasLocation(#20030,#20031) -enclosingStmt(#20030,#20020) -exprContainers(#20030,#20006) -literals("values","values",#20030) -bind(#20030,#20014) -#20032=* -exprs(#20032,0,#20028,1,"join") -#20033=@"loc,{#10000},2,30,2,33" -locations_default(#20033,#10000,2,30,2,33) -hasLocation(#20032,#20033) -enclosingStmt(#20032,#20020) -exprContainers(#20032,#20006) -literals("join","join",#20032) -#20034=* -exprs(#20034,4,#20026,0,"', '") -#20035=@"loc,{#10000},2,35,2,38" -locations_default(#20035,#10000,2,35,2,38) -hasLocation(#20034,#20035) -enclosingStmt(#20034,#20020) -exprContainers(#20034,#20006) -literals(", ","', '",#20034) -numlines(#20006,3,3,0) -#20036=* -stmts(#20036,18,#20001,1,"var x = 23;") -#20037=@"loc,{#10000},5,1,5,11" -locations_default(#20037,#10000,5,1,5,11) -hasLocation(#20036,#20037) -stmtContainers(#20036,#20001) -#20038=* -exprs(#20038,64,#20036,0,"x = 23") -#20039=@"loc,{#10000},5,5,5,10" -locations_default(#20039,#10000,5,5,5,10) -hasLocation(#20038,#20039) -enclosingStmt(#20038,#20036) -exprContainers(#20038,#20001) -#20040=* -exprs(#20040,78,#20038,0,"x") -#20041=@"loc,{#10000},5,5,5,5" -locations_default(#20041,#10000,5,5,5,5) -hasLocation(#20040,#20041) -enclosingStmt(#20040,#20036) -exprContainers(#20040,#20001) -literals("x","x",#20040) -decl(#20040,#20004) -#20042=* -exprs(#20042,3,#20038,1,"23") -#20043=@"loc,{#10000},5,9,5,10" -locations_default(#20043,#10000,5,9,5,10) -hasLocation(#20042,#20043) -enclosingStmt(#20042,#20036) -exprContainers(#20042,#20001) -literals("23","23",#20042) -#20044=* -stmts(#20044,18,#20001,2,"var y = 19;") -#20045=@"loc,{#10000},6,1,6,11" -locations_default(#20045,#10000,6,1,6,11) -hasLocation(#20044,#20045) -stmtContainers(#20044,#20001) -#20046=* -exprs(#20046,64,#20044,0,"y = 19") -#20047=@"loc,{#10000},6,5,6,10" -locations_default(#20047,#10000,6,5,6,10) -hasLocation(#20046,#20047) -enclosingStmt(#20046,#20044) -exprContainers(#20046,#20001) -#20048=* -exprs(#20048,78,#20046,0,"y") -#20049=@"loc,{#10000},6,5,6,5" -locations_default(#20049,#10000,6,5,6,5) -hasLocation(#20048,#20049) -enclosingStmt(#20048,#20044) -exprContainers(#20048,#20001) -literals("y","y",#20048) -decl(#20048,#20005) -#20050=* -exprs(#20050,3,#20046,1,"19") -#20051=@"loc,{#10000},6,9,6,10" -locations_default(#20051,#10000,6,9,6,10) -hasLocation(#20050,#20051) -enclosingStmt(#20050,#20044) -exprContainers(#20050,#20001) -literals("19","19",#20050) -#20052=* -stmts(#20052,2,#20001,3,"`${x} + ... + y}`;") -#20053=@"loc,{#10000},7,1,7,25" -locations_default(#20053,#10000,7,1,7,25) -hasLocation(#20052,#20053) -stmtContainers(#20052,#20001) -#20054=* -exprs(#20054,71,#20052,0,"`${x} + ... x + y}`") -#20055=@"loc,{#10000},7,1,7,24" -locations_default(#20055,#10000,7,1,7,24) -hasLocation(#20054,#20055) -enclosingStmt(#20054,#20052) -exprContainers(#20054,#20001) -#20056=* -exprs(#20056,79,#20054,0,"x") -#20057=@"loc,{#10000},7,4,7,4" -locations_default(#20057,#10000,7,4,7,4) -hasLocation(#20056,#20057) -enclosingStmt(#20056,#20052) -exprContainers(#20056,#20001) -literals("x","x",#20056) -bind(#20056,#20004) -#20058=* -exprs(#20058,72,#20054,1," + ") -#20059=@"loc,{#10000},7,6,7,8" -locations_default(#20059,#10000,7,6,7,8) -hasLocation(#20058,#20059) -enclosingStmt(#20058,#20052) -exprContainers(#20058,#20001) -literals(" + "," + ",#20058) -#20060=* -exprs(#20060,79,#20054,2,"y") -#20061=@"loc,{#10000},7,11,7,11" -locations_default(#20061,#10000,7,11,7,11) -hasLocation(#20060,#20061) -enclosingStmt(#20060,#20052) -exprContainers(#20060,#20001) -literals("y","y",#20060) -bind(#20060,#20005) -#20062=* -exprs(#20062,72,#20054,3," = ") -#20063=@"loc,{#10000},7,13,7,15" -locations_default(#20063,#10000,7,13,7,15) -hasLocation(#20062,#20063) -enclosingStmt(#20062,#20052) -exprContainers(#20062,#20001) -literals(" = "," = ",#20062) -#20064=* -exprs(#20064,34,#20054,4,"x + y") -#20065=@"loc,{#10000},7,18,7,22" -locations_default(#20065,#10000,7,18,7,22) -hasLocation(#20064,#20065) -enclosingStmt(#20064,#20052) -exprContainers(#20064,#20001) -#20066=* -exprs(#20066,79,#20064,0,"x") -#20067=@"loc,{#10000},7,18,7,18" -locations_default(#20067,#10000,7,18,7,18) -hasLocation(#20066,#20067) -enclosingStmt(#20066,#20052) -exprContainers(#20066,#20001) -literals("x","x",#20066) -bind(#20066,#20004) -#20068=* -exprs(#20068,79,#20064,1,"y") -#20069=@"loc,{#10000},7,22,7,22" -locations_default(#20069,#10000,7,22,7,22) -hasLocation(#20068,#20069) -enclosingStmt(#20068,#20052) -exprContainers(#20068,#20001) -literals("y","y",#20068) -bind(#20068,#20005) -#20070=* -stmts(#20070,2,#20001,4,"tag `${ ... + y}`;") -#20071=@"loc,{#10000},8,1,8,29" -locations_default(#20071,#10000,8,1,8,29) -hasLocation(#20070,#20071) -stmtContainers(#20070,#20001) -#20072=* -exprs(#20072,70,#20070,0,"tag `${ ... x + y}`") -#20073=@"loc,{#10000},8,1,8,28" -locations_default(#20073,#10000,8,1,8,28) -hasLocation(#20072,#20073) -enclosingStmt(#20072,#20070) -exprContainers(#20072,#20001) -#20074=* -exprs(#20074,79,#20072,0,"tag") -#20075=@"loc,{#10000},8,1,8,3" -locations_default(#20075,#10000,8,1,8,3) -hasLocation(#20074,#20075) -enclosingStmt(#20074,#20070) -exprContainers(#20074,#20001) -literals("tag","tag",#20074) -bind(#20074,#20003) -#20076=* -exprs(#20076,71,#20072,1,"`${x} + ... x + y}`") -#20077=@"loc,{#10000},8,5,8,28" -locations_default(#20077,#10000,8,5,8,28) -hasLocation(#20076,#20077) -enclosingStmt(#20076,#20070) -exprContainers(#20076,#20001) -#20078=* -exprs(#20078,79,#20076,0,"x") -#20079=@"loc,{#10000},8,8,8,8" -locations_default(#20079,#10000,8,8,8,8) -hasLocation(#20078,#20079) -enclosingStmt(#20078,#20070) -exprContainers(#20078,#20001) -literals("x","x",#20078) -bind(#20078,#20004) -#20080=* -exprs(#20080,72,#20076,1," + ") -#20081=@"loc,{#10000},8,10,8,12" -locations_default(#20081,#10000,8,10,8,12) -hasLocation(#20080,#20081) -enclosingStmt(#20080,#20070) -exprContainers(#20080,#20001) -literals(" + "," + ",#20080) -#20082=* -exprs(#20082,79,#20076,2,"y") -#20083=@"loc,{#10000},8,15,8,15" -locations_default(#20083,#10000,8,15,8,15) -hasLocation(#20082,#20083) -enclosingStmt(#20082,#20070) -exprContainers(#20082,#20001) -literals("y","y",#20082) -bind(#20082,#20005) -#20084=* -exprs(#20084,72,#20076,3," = ") -#20085=@"loc,{#10000},8,17,8,19" -locations_default(#20085,#10000,8,17,8,19) -hasLocation(#20084,#20085) -enclosingStmt(#20084,#20070) -exprContainers(#20084,#20001) -literals(" = "," = ",#20084) -#20086=* -exprs(#20086,34,#20076,4,"x + y") -#20087=@"loc,{#10000},8,22,8,26" -locations_default(#20087,#10000,8,22,8,26) -hasLocation(#20086,#20087) -enclosingStmt(#20086,#20070) -exprContainers(#20086,#20001) -#20088=* -exprs(#20088,79,#20086,0,"x") -#20089=@"loc,{#10000},8,22,8,22" -locations_default(#20089,#10000,8,22,8,22) -hasLocation(#20088,#20089) -enclosingStmt(#20088,#20070) -exprContainers(#20088,#20001) -literals("x","x",#20088) -bind(#20088,#20004) -#20090=* -exprs(#20090,79,#20086,1,"y") -#20091=@"loc,{#10000},8,26,8,26" -locations_default(#20091,#10000,8,26,8,26) -hasLocation(#20090,#20091) -enclosingStmt(#20090,#20070) -exprContainers(#20090,#20001) -literals("y","y",#20090) -bind(#20090,#20005) -#20092=* -lines(#20092,#20001,"function tag(strings, ...values) {"," +#20002=* +lines(#20002,#20001,"function tag(strings, ...values) {"," ") -#20093=@"loc,{#10000},1,1,1,34" -locations_default(#20093,#10000,1,1,1,34) -hasLocation(#20092,#20093) -#20094=* -lines(#20094,#20001," return ""values: "" + values.join(', ');"," +#20003=@"loc,{#10000},1,1,1,34" +locations_default(#20003,#10000,1,1,1,34) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," return ""values: "" + values.join(', ');"," ") -#20095=@"loc,{#10000},2,1,2,40" -locations_default(#20095,#10000,2,1,2,40) -hasLocation(#20094,#20095) +#20005=@"loc,{#10000},2,1,2,40" +locations_default(#20005,#10000,2,1,2,40) +hasLocation(#20004,#20005) indentation(#10000,2," ",2) -#20096=* -lines(#20096,#20001,"}"," +#20006=* +lines(#20006,#20001,"}"," ") -#20097=@"loc,{#10000},3,1,3,1" -locations_default(#20097,#10000,3,1,3,1) -hasLocation(#20096,#20097) -#20098=* -lines(#20098,#20001,""," +#20007=@"loc,{#10000},3,1,3,1" +locations_default(#20007,#10000,3,1,3,1) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001,""," ") -#20099=@"loc,{#10000},4,1,4,0" -locations_default(#20099,#10000,4,1,4,0) -hasLocation(#20098,#20099) -#20100=* -lines(#20100,#20001,"var x = 23;"," +#20009=@"loc,{#10000},4,1,4,0" +locations_default(#20009,#10000,4,1,4,0) +hasLocation(#20008,#20009) +#20010=* +lines(#20010,#20001,"var x = 23;"," ") -hasLocation(#20100,#20037) -#20101=* -lines(#20101,#20001,"var y = 19;"," +#20011=@"loc,{#10000},5,1,5,11" +locations_default(#20011,#10000,5,1,5,11) +hasLocation(#20010,#20011) +#20012=* +lines(#20012,#20001,"var y = 19;"," ") -hasLocation(#20101,#20045) -#20102=* -lines(#20102,#20001,"`${x} + ${y} = ${x + y}`;"," +#20013=@"loc,{#10000},6,1,6,11" +locations_default(#20013,#10000,6,1,6,11) +hasLocation(#20012,#20013) +#20014=* +lines(#20014,#20001,"`${x} + ${y} = ${x + y}`;"," ") -hasLocation(#20102,#20053) -#20103=* -lines(#20103,#20001,"tag `${x} + ${y} = ${x + y}`;","") -hasLocation(#20103,#20071) +#20015=@"loc,{#10000},7,1,7,25" +locations_default(#20015,#10000,7,1,7,25) +hasLocation(#20014,#20015) +#20016=* +lines(#20016,#20001,"tag `${x} + ${y} = ${x + y}`;","") +#20017=@"loc,{#10000},8,1,8,29" +locations_default(#20017,#10000,8,1,8,29) +hasLocation(#20016,#20017) numlines(#20001,8,7,0) -#20104=* -tokeninfo(#20104,7,#20001,0,"function") -#20105=@"loc,{#10000},1,1,1,8" -locations_default(#20105,#10000,1,1,1,8) -hasLocation(#20104,#20105) -#20106=* -tokeninfo(#20106,6,#20001,1,"tag") -hasLocation(#20106,#20009) +#20018=* +tokeninfo(#20018,7,#20001,0,"function") +#20019=@"loc,{#10000},1,1,1,8" +locations_default(#20019,#10000,1,1,1,8) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,6,#20001,1,"tag") +#20021=@"loc,{#10000},1,10,1,12" +locations_default(#20021,#10000,1,10,1,12) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,2,"(") +#20023=@"loc,{#10000},1,13,1,13" +locations_default(#20023,#10000,1,13,1,13) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,6,#20001,3,"strings") +#20025=@"loc,{#10000},1,14,1,20" +locations_default(#20025,#10000,1,14,1,20) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,4,",") +#20027=@"loc,{#10000},1,21,1,21" +locations_default(#20027,#10000,1,21,1,21) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,5,"...") +#20029=@"loc,{#10000},1,23,1,25" +locations_default(#20029,#10000,1,23,1,25) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,6,#20001,6,"values") +#20031=@"loc,{#10000},1,26,1,31" +locations_default(#20031,#10000,1,26,1,31) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,7,")") +#20033=@"loc,{#10000},1,32,1,32" +locations_default(#20033,#10000,1,32,1,32) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,8,"{") +#20035=@"loc,{#10000},1,34,1,34" +locations_default(#20035,#10000,1,34,1,34) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,7,#20001,9,"return") +#20037=@"loc,{#10000},2,3,2,8" +locations_default(#20037,#10000,2,3,2,8) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,4,#20001,10,"""values: """) +#20039=@"loc,{#10000},2,10,2,19" +locations_default(#20039,#10000,2,10,2,19) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,11,"+") +#20041=@"loc,{#10000},2,21,2,21" +locations_default(#20041,#10000,2,21,2,21) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,6,#20001,12,"values") +#20043=@"loc,{#10000},2,23,2,28" +locations_default(#20043,#10000,2,23,2,28) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,13,".") +#20045=@"loc,{#10000},2,29,2,29" +locations_default(#20045,#10000,2,29,2,29) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,6,#20001,14,"join") +#20047=@"loc,{#10000},2,30,2,33" +locations_default(#20047,#10000,2,30,2,33) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,8,#20001,15,"(") +#20049=@"loc,{#10000},2,34,2,34" +locations_default(#20049,#10000,2,34,2,34) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,4,#20001,16,"', '") +#20051=@"loc,{#10000},2,35,2,38" +locations_default(#20051,#10000,2,35,2,38) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,8,#20001,17,")") +#20053=@"loc,{#10000},2,39,2,39" +locations_default(#20053,#10000,2,39,2,39) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,8,#20001,18,";") +#20055=@"loc,{#10000},2,40,2,40" +locations_default(#20055,#10000,2,40,2,40) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,8,#20001,19,"}") +hasLocation(#20056,#20007) +#20057=* +tokeninfo(#20057,7,#20001,20,"var") +#20058=@"loc,{#10000},5,1,5,3" +locations_default(#20058,#10000,5,1,5,3) +hasLocation(#20057,#20058) +#20059=* +tokeninfo(#20059,6,#20001,21,"x") +#20060=@"loc,{#10000},5,5,5,5" +locations_default(#20060,#10000,5,5,5,5) +hasLocation(#20059,#20060) +#20061=* +tokeninfo(#20061,8,#20001,22,"=") +#20062=@"loc,{#10000},5,7,5,7" +locations_default(#20062,#10000,5,7,5,7) +hasLocation(#20061,#20062) +#20063=* +tokeninfo(#20063,3,#20001,23,"23") +#20064=@"loc,{#10000},5,9,5,10" +locations_default(#20064,#10000,5,9,5,10) +hasLocation(#20063,#20064) +#20065=* +tokeninfo(#20065,8,#20001,24,";") +#20066=@"loc,{#10000},5,11,5,11" +locations_default(#20066,#10000,5,11,5,11) +hasLocation(#20065,#20066) +#20067=* +tokeninfo(#20067,7,#20001,25,"var") +#20068=@"loc,{#10000},6,1,6,3" +locations_default(#20068,#10000,6,1,6,3) +hasLocation(#20067,#20068) +#20069=* +tokeninfo(#20069,6,#20001,26,"y") +#20070=@"loc,{#10000},6,5,6,5" +locations_default(#20070,#10000,6,5,6,5) +hasLocation(#20069,#20070) +#20071=* +tokeninfo(#20071,8,#20001,27,"=") +#20072=@"loc,{#10000},6,7,6,7" +locations_default(#20072,#10000,6,7,6,7) +hasLocation(#20071,#20072) +#20073=* +tokeninfo(#20073,3,#20001,28,"19") +#20074=@"loc,{#10000},6,9,6,10" +locations_default(#20074,#10000,6,9,6,10) +hasLocation(#20073,#20074) +#20075=* +tokeninfo(#20075,8,#20001,29,";") +#20076=@"loc,{#10000},6,11,6,11" +locations_default(#20076,#10000,6,11,6,11) +hasLocation(#20075,#20076) +#20077=* +tokeninfo(#20077,8,#20001,30,"`") +#20078=@"loc,{#10000},7,1,7,1" +locations_default(#20078,#10000,7,1,7,1) +hasLocation(#20077,#20078) +#20079=* +tokeninfo(#20079,4,#20001,31,"") +#20080=@"loc,{#10000},7,2,7,1" +locations_default(#20080,#10000,7,2,7,1) +hasLocation(#20079,#20080) +#20081=* +tokeninfo(#20081,8,#20001,32,"${") +#20082=@"loc,{#10000},7,2,7,3" +locations_default(#20082,#10000,7,2,7,3) +hasLocation(#20081,#20082) +#20083=* +tokeninfo(#20083,6,#20001,33,"x") +#20084=@"loc,{#10000},7,4,7,4" +locations_default(#20084,#10000,7,4,7,4) +hasLocation(#20083,#20084) +#20085=* +tokeninfo(#20085,8,#20001,34,"}") +#20086=@"loc,{#10000},7,5,7,5" +locations_default(#20086,#10000,7,5,7,5) +hasLocation(#20085,#20086) +#20087=* +tokeninfo(#20087,4,#20001,35," + ") +#20088=@"loc,{#10000},7,6,7,8" +locations_default(#20088,#10000,7,6,7,8) +hasLocation(#20087,#20088) +#20089=* +tokeninfo(#20089,8,#20001,36,"${") +#20090=@"loc,{#10000},7,9,7,10" +locations_default(#20090,#10000,7,9,7,10) +hasLocation(#20089,#20090) +#20091=* +tokeninfo(#20091,6,#20001,37,"y") +#20092=@"loc,{#10000},7,11,7,11" +locations_default(#20092,#10000,7,11,7,11) +hasLocation(#20091,#20092) +#20093=* +tokeninfo(#20093,8,#20001,38,"}") +#20094=@"loc,{#10000},7,12,7,12" +locations_default(#20094,#10000,7,12,7,12) +hasLocation(#20093,#20094) +#20095=* +tokeninfo(#20095,4,#20001,39," = ") +#20096=@"loc,{#10000},7,13,7,15" +locations_default(#20096,#10000,7,13,7,15) +hasLocation(#20095,#20096) +#20097=* +tokeninfo(#20097,8,#20001,40,"${") +#20098=@"loc,{#10000},7,16,7,17" +locations_default(#20098,#10000,7,16,7,17) +hasLocation(#20097,#20098) +#20099=* +tokeninfo(#20099,6,#20001,41,"x") +#20100=@"loc,{#10000},7,18,7,18" +locations_default(#20100,#10000,7,18,7,18) +hasLocation(#20099,#20100) +#20101=* +tokeninfo(#20101,8,#20001,42,"+") +#20102=@"loc,{#10000},7,20,7,20" +locations_default(#20102,#10000,7,20,7,20) +hasLocation(#20101,#20102) +#20103=* +tokeninfo(#20103,6,#20001,43,"y") +#20104=@"loc,{#10000},7,22,7,22" +locations_default(#20104,#10000,7,22,7,22) +hasLocation(#20103,#20104) +#20105=* +tokeninfo(#20105,8,#20001,44,"}") +#20106=@"loc,{#10000},7,23,7,23" +locations_default(#20106,#10000,7,23,7,23) +hasLocation(#20105,#20106) #20107=* -tokeninfo(#20107,8,#20001,2,"(") -#20108=@"loc,{#10000},1,13,1,13" -locations_default(#20108,#10000,1,13,1,13) +tokeninfo(#20107,4,#20001,45,"") +#20108=@"loc,{#10000},7,24,7,23" +locations_default(#20108,#10000,7,24,7,23) hasLocation(#20107,#20108) #20109=* -tokeninfo(#20109,6,#20001,3,"strings") -hasLocation(#20109,#20013) -#20110=* -tokeninfo(#20110,8,#20001,4,",") -#20111=@"loc,{#10000},1,21,1,21" -locations_default(#20111,#10000,1,21,1,21) -hasLocation(#20110,#20111) -#20112=* -tokeninfo(#20112,8,#20001,5,"...") -#20113=@"loc,{#10000},1,23,1,25" -locations_default(#20113,#10000,1,23,1,25) -hasLocation(#20112,#20113) -#20114=* -tokeninfo(#20114,6,#20001,6,"values") -hasLocation(#20114,#20016) +tokeninfo(#20109,8,#20001,46,"`") +#20110=@"loc,{#10000},7,24,7,24" +locations_default(#20110,#10000,7,24,7,24) +hasLocation(#20109,#20110) +#20111=* +tokeninfo(#20111,8,#20001,47,";") +#20112=@"loc,{#10000},7,25,7,25" +locations_default(#20112,#10000,7,25,7,25) +hasLocation(#20111,#20112) +#20113=* +tokeninfo(#20113,6,#20001,48,"tag") +#20114=@"loc,{#10000},8,1,8,3" +locations_default(#20114,#10000,8,1,8,3) +hasLocation(#20113,#20114) #20115=* -tokeninfo(#20115,8,#20001,7,")") -#20116=@"loc,{#10000},1,32,1,32" -locations_default(#20116,#10000,1,32,1,32) +tokeninfo(#20115,8,#20001,49,"`") +#20116=@"loc,{#10000},8,5,8,5" +locations_default(#20116,#10000,8,5,8,5) hasLocation(#20115,#20116) #20117=* -tokeninfo(#20117,8,#20001,8,"{") -#20118=@"loc,{#10000},1,34,1,34" -locations_default(#20118,#10000,1,34,1,34) +tokeninfo(#20117,4,#20001,50,"") +#20118=@"loc,{#10000},8,6,8,5" +locations_default(#20118,#10000,8,6,8,5) hasLocation(#20117,#20118) #20119=* -tokeninfo(#20119,7,#20001,9,"return") -#20120=@"loc,{#10000},2,3,2,8" -locations_default(#20120,#10000,2,3,2,8) +tokeninfo(#20119,8,#20001,51,"${") +#20120=@"loc,{#10000},8,6,8,7" +locations_default(#20120,#10000,8,6,8,7) hasLocation(#20119,#20120) #20121=* -tokeninfo(#20121,4,#20001,10,"""values: """) -hasLocation(#20121,#20025) -#20122=* -tokeninfo(#20122,8,#20001,11,"+") -#20123=@"loc,{#10000},2,21,2,21" -locations_default(#20123,#10000,2,21,2,21) -hasLocation(#20122,#20123) -#20124=* -tokeninfo(#20124,6,#20001,12,"values") -hasLocation(#20124,#20031) +tokeninfo(#20121,6,#20001,52,"x") +#20122=@"loc,{#10000},8,8,8,8" +locations_default(#20122,#10000,8,8,8,8) +hasLocation(#20121,#20122) +#20123=* +tokeninfo(#20123,8,#20001,53,"}") +#20124=@"loc,{#10000},8,9,8,9" +locations_default(#20124,#10000,8,9,8,9) +hasLocation(#20123,#20124) #20125=* -tokeninfo(#20125,8,#20001,13,".") -#20126=@"loc,{#10000},2,29,2,29" -locations_default(#20126,#10000,2,29,2,29) +tokeninfo(#20125,4,#20001,54," + ") +#20126=@"loc,{#10000},8,10,8,12" +locations_default(#20126,#10000,8,10,8,12) hasLocation(#20125,#20126) #20127=* -tokeninfo(#20127,6,#20001,14,"join") -hasLocation(#20127,#20033) -#20128=* -tokeninfo(#20128,8,#20001,15,"(") -#20129=@"loc,{#10000},2,34,2,34" -locations_default(#20129,#10000,2,34,2,34) -hasLocation(#20128,#20129) -#20130=* -tokeninfo(#20130,4,#20001,16,"', '") -hasLocation(#20130,#20035) +tokeninfo(#20127,8,#20001,55,"${") +#20128=@"loc,{#10000},8,13,8,14" +locations_default(#20128,#10000,8,13,8,14) +hasLocation(#20127,#20128) +#20129=* +tokeninfo(#20129,6,#20001,56,"y") +#20130=@"loc,{#10000},8,15,8,15" +locations_default(#20130,#10000,8,15,8,15) +hasLocation(#20129,#20130) #20131=* -tokeninfo(#20131,8,#20001,17,")") -#20132=@"loc,{#10000},2,39,2,39" -locations_default(#20132,#10000,2,39,2,39) +tokeninfo(#20131,8,#20001,57,"}") +#20132=@"loc,{#10000},8,16,8,16" +locations_default(#20132,#10000,8,16,8,16) hasLocation(#20131,#20132) #20133=* -tokeninfo(#20133,8,#20001,18,";") -#20134=@"loc,{#10000},2,40,2,40" -locations_default(#20134,#10000,2,40,2,40) +tokeninfo(#20133,4,#20001,58," = ") +#20134=@"loc,{#10000},8,17,8,19" +locations_default(#20134,#10000,8,17,8,19) hasLocation(#20133,#20134) #20135=* -tokeninfo(#20135,8,#20001,19,"}") -hasLocation(#20135,#20097) -#20136=* -tokeninfo(#20136,7,#20001,20,"var") -#20137=@"loc,{#10000},5,1,5,3" -locations_default(#20137,#10000,5,1,5,3) -hasLocation(#20136,#20137) -#20138=* -tokeninfo(#20138,6,#20001,21,"x") -hasLocation(#20138,#20041) +tokeninfo(#20135,8,#20001,59,"${") +#20136=@"loc,{#10000},8,20,8,21" +locations_default(#20136,#10000,8,20,8,21) +hasLocation(#20135,#20136) +#20137=* +tokeninfo(#20137,6,#20001,60,"x") +#20138=@"loc,{#10000},8,22,8,22" +locations_default(#20138,#10000,8,22,8,22) +hasLocation(#20137,#20138) #20139=* -tokeninfo(#20139,8,#20001,22,"=") -#20140=@"loc,{#10000},5,7,5,7" -locations_default(#20140,#10000,5,7,5,7) +tokeninfo(#20139,8,#20001,61,"+") +#20140=@"loc,{#10000},8,24,8,24" +locations_default(#20140,#10000,8,24,8,24) hasLocation(#20139,#20140) #20141=* -tokeninfo(#20141,3,#20001,23,"23") -hasLocation(#20141,#20043) -#20142=* -tokeninfo(#20142,8,#20001,24,";") -#20143=@"loc,{#10000},5,11,5,11" -locations_default(#20143,#10000,5,11,5,11) -hasLocation(#20142,#20143) -#20144=* -tokeninfo(#20144,7,#20001,25,"var") -#20145=@"loc,{#10000},6,1,6,3" -locations_default(#20145,#10000,6,1,6,3) -hasLocation(#20144,#20145) -#20146=* -tokeninfo(#20146,6,#20001,26,"y") -hasLocation(#20146,#20049) +tokeninfo(#20141,6,#20001,62,"y") +#20142=@"loc,{#10000},8,26,8,26" +locations_default(#20142,#10000,8,26,8,26) +hasLocation(#20141,#20142) +#20143=* +tokeninfo(#20143,8,#20001,63,"}") +#20144=@"loc,{#10000},8,27,8,27" +locations_default(#20144,#10000,8,27,8,27) +hasLocation(#20143,#20144) +#20145=* +tokeninfo(#20145,4,#20001,64,"") +#20146=@"loc,{#10000},8,28,8,27" +locations_default(#20146,#10000,8,28,8,27) +hasLocation(#20145,#20146) #20147=* -tokeninfo(#20147,8,#20001,27,"=") -#20148=@"loc,{#10000},6,7,6,7" -locations_default(#20148,#10000,6,7,6,7) +tokeninfo(#20147,8,#20001,65,"`") +#20148=@"loc,{#10000},8,28,8,28" +locations_default(#20148,#10000,8,28,8,28) hasLocation(#20147,#20148) #20149=* -tokeninfo(#20149,3,#20001,28,"19") -hasLocation(#20149,#20051) -#20150=* -tokeninfo(#20150,8,#20001,29,";") -#20151=@"loc,{#10000},6,11,6,11" -locations_default(#20151,#10000,6,11,6,11) -hasLocation(#20150,#20151) -#20152=* -tokeninfo(#20152,8,#20001,30,"`") -#20153=@"loc,{#10000},7,1,7,1" -locations_default(#20153,#10000,7,1,7,1) -hasLocation(#20152,#20153) -#20154=* -tokeninfo(#20154,4,#20001,31,"") -#20155=@"loc,{#10000},7,2,7,1" -locations_default(#20155,#10000,7,2,7,1) -hasLocation(#20154,#20155) -#20156=* -tokeninfo(#20156,8,#20001,32,"${") -#20157=@"loc,{#10000},7,2,7,3" -locations_default(#20157,#10000,7,2,7,3) -hasLocation(#20156,#20157) -#20158=* -tokeninfo(#20158,6,#20001,33,"x") -hasLocation(#20158,#20057) +tokeninfo(#20149,8,#20001,66,";") +#20150=@"loc,{#10000},8,29,8,29" +locations_default(#20150,#10000,8,29,8,29) +hasLocation(#20149,#20150) +#20151=* +tokeninfo(#20151,0,#20001,67,"") +#20152=@"loc,{#10000},8,30,8,29" +locations_default(#20152,#10000,8,30,8,29) +hasLocation(#20151,#20152) +toplevels(#20001,0) +#20153=@"loc,{#10000},1,1,8,29" +locations_default(#20153,#10000,1,1,8,29) +hasLocation(#20001,#20153) +#20154=@"var;{tag};{#20000}" +variables(#20154,"tag",#20000) +#20155=@"var;{x};{#20000}" +variables(#20155,"x",#20000) +#20156=@"var;{y};{#20000}" +variables(#20156,"y",#20000) +#20157=* +stmts(#20157,17,#20001,0,"functio ... , ');\n}") +#20158=@"loc,{#10000},1,1,3,1" +locations_default(#20158,#10000,1,1,3,1) +hasLocation(#20157,#20158) +stmtContainers(#20157,#20001) #20159=* -tokeninfo(#20159,8,#20001,34,"}") -#20160=@"loc,{#10000},7,5,7,5" -locations_default(#20160,#10000,7,5,7,5) -hasLocation(#20159,#20160) -#20161=* -tokeninfo(#20161,4,#20001,35," + ") -hasLocation(#20161,#20059) +exprs(#20159,78,#20157,-1,"tag") +hasLocation(#20159,#20021) +exprContainers(#20159,#20157) +literals("tag","tag",#20159) +decl(#20159,#20154) +#20160=* +scopes(#20160,1) +scopenodes(#20157,#20160) +scopenesting(#20160,#20000) +#20161=@"var;{strings};{#20160}" +variables(#20161,"strings",#20160) #20162=* -tokeninfo(#20162,8,#20001,36,"${") -#20163=@"loc,{#10000},7,9,7,10" -locations_default(#20163,#10000,7,9,7,10) -hasLocation(#20162,#20163) +exprs(#20162,78,#20157,0,"strings") +hasLocation(#20162,#20025) +exprContainers(#20162,#20157) +literals("strings","strings",#20162) +decl(#20162,#20161) +#20163=@"var;{values};{#20160}" +variables(#20163,"values",#20160) #20164=* -tokeninfo(#20164,6,#20001,37,"y") -hasLocation(#20164,#20061) -#20165=* -tokeninfo(#20165,8,#20001,38,"}") -#20166=@"loc,{#10000},7,12,7,12" -locations_default(#20166,#10000,7,12,7,12) -hasLocation(#20165,#20166) -#20167=* -tokeninfo(#20167,4,#20001,39," = ") -hasLocation(#20167,#20063) +exprs(#20164,78,#20157,1,"values") +hasLocation(#20164,#20031) +exprContainers(#20164,#20157) +literals("values","values",#20164) +decl(#20164,#20163) +#20165=@"var;{arguments};{#20160}" +variables(#20165,"arguments",#20160) +isArgumentsObject(#20165) +hasRestParameter(#20157) +#20166=* +stmts(#20166,1,#20157,-2,"{\n ret ... , ');\n}") +#20167=@"loc,{#10000},1,34,3,1" +locations_default(#20167,#10000,1,34,3,1) +hasLocation(#20166,#20167) +stmtContainers(#20166,#20157) #20168=* -tokeninfo(#20168,8,#20001,40,"${") -#20169=@"loc,{#10000},7,16,7,17" -locations_default(#20169,#10000,7,16,7,17) +stmts(#20168,9,#20166,0,"return ... (', ');") +#20169=@"loc,{#10000},2,3,2,40" +locations_default(#20169,#10000,2,3,2,40) hasLocation(#20168,#20169) +stmtContainers(#20168,#20157) #20170=* -tokeninfo(#20170,6,#20001,41,"x") -hasLocation(#20170,#20067) -#20171=* -tokeninfo(#20171,8,#20001,42,"+") -#20172=@"loc,{#10000},7,20,7,20" -locations_default(#20172,#10000,7,20,7,20) -hasLocation(#20171,#20172) +exprs(#20170,34,#20168,0,"""values ... n(', ')") +#20171=@"loc,{#10000},2,10,2,39" +locations_default(#20171,#10000,2,10,2,39) +hasLocation(#20170,#20171) +enclosingStmt(#20170,#20168) +exprContainers(#20170,#20157) +#20172=* +exprs(#20172,4,#20170,0,"""values: """) +hasLocation(#20172,#20039) +enclosingStmt(#20172,#20168) +exprContainers(#20172,#20157) +literals("values: ","""values: """,#20172) #20173=* -tokeninfo(#20173,6,#20001,43,"y") -hasLocation(#20173,#20069) -#20174=* -tokeninfo(#20174,8,#20001,44,"}") -#20175=@"loc,{#10000},7,23,7,23" -locations_default(#20175,#10000,7,23,7,23) -hasLocation(#20174,#20175) -#20176=* -tokeninfo(#20176,4,#20001,45,"") -#20177=@"loc,{#10000},7,24,7,23" -locations_default(#20177,#10000,7,24,7,23) -hasLocation(#20176,#20177) +exprs(#20173,13,#20170,1,"values.join(', ')") +#20174=@"loc,{#10000},2,23,2,39" +locations_default(#20174,#10000,2,23,2,39) +hasLocation(#20173,#20174) +enclosingStmt(#20173,#20168) +exprContainers(#20173,#20157) +#20175=* +exprs(#20175,14,#20173,-1,"values.join") +#20176=@"loc,{#10000},2,23,2,33" +locations_default(#20176,#10000,2,23,2,33) +hasLocation(#20175,#20176) +enclosingStmt(#20175,#20168) +exprContainers(#20175,#20157) +#20177=* +exprs(#20177,79,#20175,0,"values") +hasLocation(#20177,#20043) +enclosingStmt(#20177,#20168) +exprContainers(#20177,#20157) +literals("values","values",#20177) +bind(#20177,#20163) #20178=* -tokeninfo(#20178,8,#20001,46,"`") -#20179=@"loc,{#10000},7,24,7,24" -locations_default(#20179,#10000,7,24,7,24) -hasLocation(#20178,#20179) +exprs(#20178,0,#20175,1,"join") +hasLocation(#20178,#20047) +enclosingStmt(#20178,#20168) +exprContainers(#20178,#20157) +literals("join","join",#20178) +#20179=* +exprs(#20179,4,#20173,0,"', '") +hasLocation(#20179,#20051) +enclosingStmt(#20179,#20168) +exprContainers(#20179,#20157) +literals(", ","', '",#20179) #20180=* -tokeninfo(#20180,8,#20001,47,";") -#20181=@"loc,{#10000},7,25,7,25" -locations_default(#20181,#10000,7,25,7,25) -hasLocation(#20180,#20181) -#20182=* -tokeninfo(#20182,6,#20001,48,"tag") -hasLocation(#20182,#20075) +stmts(#20180,18,#20001,1,"var x = 23;") +hasLocation(#20180,#20011) +stmtContainers(#20180,#20001) +#20181=* +exprs(#20181,64,#20180,0,"x = 23") +#20182=@"loc,{#10000},5,5,5,10" +locations_default(#20182,#10000,5,5,5,10) +hasLocation(#20181,#20182) +enclosingStmt(#20181,#20180) +exprContainers(#20181,#20001) #20183=* -tokeninfo(#20183,8,#20001,49,"`") -#20184=@"loc,{#10000},8,5,8,5" -locations_default(#20184,#10000,8,5,8,5) -hasLocation(#20183,#20184) +exprs(#20183,78,#20181,0,"x") +hasLocation(#20183,#20060) +enclosingStmt(#20183,#20180) +exprContainers(#20183,#20001) +literals("x","x",#20183) +decl(#20183,#20155) +#20184=* +exprs(#20184,3,#20181,1,"23") +hasLocation(#20184,#20064) +enclosingStmt(#20184,#20180) +exprContainers(#20184,#20001) +literals("23","23",#20184) #20185=* -tokeninfo(#20185,4,#20001,50,"") -#20186=@"loc,{#10000},8,6,8,5" -locations_default(#20186,#10000,8,6,8,5) -hasLocation(#20185,#20186) -#20187=* -tokeninfo(#20187,8,#20001,51,"${") -#20188=@"loc,{#10000},8,6,8,7" -locations_default(#20188,#10000,8,6,8,7) -hasLocation(#20187,#20188) +stmts(#20185,18,#20001,2,"var y = 19;") +hasLocation(#20185,#20013) +stmtContainers(#20185,#20001) +#20186=* +exprs(#20186,64,#20185,0,"y = 19") +#20187=@"loc,{#10000},6,5,6,10" +locations_default(#20187,#10000,6,5,6,10) +hasLocation(#20186,#20187) +enclosingStmt(#20186,#20185) +exprContainers(#20186,#20001) +#20188=* +exprs(#20188,78,#20186,0,"y") +hasLocation(#20188,#20070) +enclosingStmt(#20188,#20185) +exprContainers(#20188,#20001) +literals("y","y",#20188) +decl(#20188,#20156) #20189=* -tokeninfo(#20189,6,#20001,52,"x") -hasLocation(#20189,#20079) +exprs(#20189,3,#20186,1,"19") +hasLocation(#20189,#20074) +enclosingStmt(#20189,#20185) +exprContainers(#20189,#20001) +literals("19","19",#20189) #20190=* -tokeninfo(#20190,8,#20001,53,"}") -#20191=@"loc,{#10000},8,9,8,9" -locations_default(#20191,#10000,8,9,8,9) -hasLocation(#20190,#20191) -#20192=* -tokeninfo(#20192,4,#20001,54," + ") -hasLocation(#20192,#20081) +stmts(#20190,2,#20001,3,"`${x} + ... + y}`;") +hasLocation(#20190,#20015) +stmtContainers(#20190,#20001) +#20191=* +exprs(#20191,71,#20190,0,"`${x} + ... x + y}`") +#20192=@"loc,{#10000},7,1,7,24" +locations_default(#20192,#10000,7,1,7,24) +hasLocation(#20191,#20192) +enclosingStmt(#20191,#20190) +exprContainers(#20191,#20001) #20193=* -tokeninfo(#20193,8,#20001,55,"${") -#20194=@"loc,{#10000},8,13,8,14" -locations_default(#20194,#10000,8,13,8,14) -hasLocation(#20193,#20194) +exprs(#20193,79,#20191,0,"x") +hasLocation(#20193,#20084) +enclosingStmt(#20193,#20190) +exprContainers(#20193,#20001) +literals("x","x",#20193) +bind(#20193,#20155) +#20194=* +exprs(#20194,72,#20191,1," + ") +hasLocation(#20194,#20088) +enclosingStmt(#20194,#20190) +exprContainers(#20194,#20001) +literals(" + "," + ",#20194) #20195=* -tokeninfo(#20195,6,#20001,56,"y") -hasLocation(#20195,#20083) +exprs(#20195,79,#20191,2,"y") +hasLocation(#20195,#20092) +enclosingStmt(#20195,#20190) +exprContainers(#20195,#20001) +literals("y","y",#20195) +bind(#20195,#20156) #20196=* -tokeninfo(#20196,8,#20001,57,"}") -#20197=@"loc,{#10000},8,16,8,16" -locations_default(#20197,#10000,8,16,8,16) -hasLocation(#20196,#20197) -#20198=* -tokeninfo(#20198,4,#20001,58," = ") -hasLocation(#20198,#20085) +exprs(#20196,72,#20191,3," = ") +hasLocation(#20196,#20096) +enclosingStmt(#20196,#20190) +exprContainers(#20196,#20001) +literals(" = "," = ",#20196) +#20197=* +exprs(#20197,34,#20191,4,"x + y") +#20198=@"loc,{#10000},7,18,7,22" +locations_default(#20198,#10000,7,18,7,22) +hasLocation(#20197,#20198) +enclosingStmt(#20197,#20190) +exprContainers(#20197,#20001) #20199=* -tokeninfo(#20199,8,#20001,59,"${") -#20200=@"loc,{#10000},8,20,8,21" -locations_default(#20200,#10000,8,20,8,21) -hasLocation(#20199,#20200) +exprs(#20199,79,#20197,0,"x") +hasLocation(#20199,#20100) +enclosingStmt(#20199,#20190) +exprContainers(#20199,#20001) +literals("x","x",#20199) +bind(#20199,#20155) +#20200=* +exprs(#20200,79,#20197,1,"y") +hasLocation(#20200,#20104) +enclosingStmt(#20200,#20190) +exprContainers(#20200,#20001) +literals("y","y",#20200) +bind(#20200,#20156) #20201=* -tokeninfo(#20201,6,#20001,60,"x") -hasLocation(#20201,#20089) +stmts(#20201,2,#20001,4,"tag `${ ... + y}`;") +hasLocation(#20201,#20017) +stmtContainers(#20201,#20001) #20202=* -tokeninfo(#20202,8,#20001,61,"+") -#20203=@"loc,{#10000},8,24,8,24" -locations_default(#20203,#10000,8,24,8,24) +exprs(#20202,70,#20201,0,"tag `${ ... x + y}`") +#20203=@"loc,{#10000},8,1,8,28" +locations_default(#20203,#10000,8,1,8,28) hasLocation(#20202,#20203) +enclosingStmt(#20202,#20201) +exprContainers(#20202,#20001) #20204=* -tokeninfo(#20204,6,#20001,62,"y") -hasLocation(#20204,#20091) +exprs(#20204,79,#20202,0,"tag") +hasLocation(#20204,#20114) +enclosingStmt(#20204,#20201) +exprContainers(#20204,#20001) +literals("tag","tag",#20204) +bind(#20204,#20154) #20205=* -tokeninfo(#20205,8,#20001,63,"}") -#20206=@"loc,{#10000},8,27,8,27" -locations_default(#20206,#10000,8,27,8,27) +exprs(#20205,71,#20202,1,"`${x} + ... x + y}`") +#20206=@"loc,{#10000},8,5,8,28" +locations_default(#20206,#10000,8,5,8,28) hasLocation(#20205,#20206) +enclosingStmt(#20205,#20201) +exprContainers(#20205,#20001) #20207=* -tokeninfo(#20207,4,#20001,64,"") -#20208=@"loc,{#10000},8,28,8,27" -locations_default(#20208,#10000,8,28,8,27) -hasLocation(#20207,#20208) +exprs(#20207,79,#20205,0,"x") +hasLocation(#20207,#20122) +enclosingStmt(#20207,#20201) +exprContainers(#20207,#20001) +literals("x","x",#20207) +bind(#20207,#20155) +#20208=* +exprs(#20208,72,#20205,1," + ") +hasLocation(#20208,#20126) +enclosingStmt(#20208,#20201) +exprContainers(#20208,#20001) +literals(" + "," + ",#20208) #20209=* -tokeninfo(#20209,8,#20001,65,"`") -#20210=@"loc,{#10000},8,28,8,28" -locations_default(#20210,#10000,8,28,8,28) -hasLocation(#20209,#20210) +exprs(#20209,79,#20205,2,"y") +hasLocation(#20209,#20130) +enclosingStmt(#20209,#20201) +exprContainers(#20209,#20001) +literals("y","y",#20209) +bind(#20209,#20156) +#20210=* +exprs(#20210,72,#20205,3," = ") +hasLocation(#20210,#20134) +enclosingStmt(#20210,#20201) +exprContainers(#20210,#20001) +literals(" = "," = ",#20210) #20211=* -tokeninfo(#20211,8,#20001,66,";") -#20212=@"loc,{#10000},8,29,8,29" -locations_default(#20212,#10000,8,29,8,29) +exprs(#20211,34,#20205,4,"x + y") +#20212=@"loc,{#10000},8,22,8,26" +locations_default(#20212,#10000,8,22,8,26) hasLocation(#20211,#20212) +enclosingStmt(#20211,#20201) +exprContainers(#20211,#20001) #20213=* -tokeninfo(#20213,0,#20001,67,"") -#20214=@"loc,{#10000},8,30,8,29" -locations_default(#20214,#10000,8,30,8,29) -hasLocation(#20213,#20214) +exprs(#20213,79,#20211,0,"x") +hasLocation(#20213,#20138) +enclosingStmt(#20213,#20201) +exprContainers(#20213,#20001) +literals("x","x",#20213) +bind(#20213,#20155) +#20214=* +exprs(#20214,79,#20211,1,"y") +hasLocation(#20214,#20142) +enclosingStmt(#20214,#20201) +exprContainers(#20214,#20001) +literals("y","y",#20214) +bind(#20214,#20156) #20215=* entry_cfg_node(#20215,#20001) #20216=@"loc,{#10000},1,1,1,0" @@ -686,57 +685,57 @@ locations_default(#20216,#10000,1,1,1,0) hasLocation(#20215,#20216) #20217=* exit_cfg_node(#20217,#20001) -hasLocation(#20217,#20214) -successor(#20070,#20072) -successor(#20072,#20074) -successor(#20076,#20078) -successor(#20090,#20086) -successor(#20088,#20090) -successor(#20086,#20217) -successor(#20084,#20088) -successor(#20082,#20084) -successor(#20080,#20082) -successor(#20078,#20080) -successor(#20074,#20076) -successor(#20052,#20054) -successor(#20054,#20056) -successor(#20068,#20064) -successor(#20066,#20068) -successor(#20064,#20070) -successor(#20062,#20066) -successor(#20060,#20062) -successor(#20058,#20060) -successor(#20056,#20058) -successor(#20044,#20048) -successor(#20050,#20046) -successor(#20048,#20050) -successor(#20046,#20052) -successor(#20036,#20040) -successor(#20042,#20038) -successor(#20040,#20042) -successor(#20038,#20044) -successor(#20006,#20036) +hasLocation(#20217,#20152) +successor(#20201,#20202) +successor(#20202,#20204) +successor(#20205,#20207) +successor(#20214,#20211) +successor(#20213,#20214) +successor(#20211,#20217) +successor(#20210,#20213) +successor(#20209,#20210) +successor(#20208,#20209) +successor(#20207,#20208) +successor(#20204,#20205) +successor(#20190,#20191) +successor(#20191,#20193) +successor(#20200,#20197) +successor(#20199,#20200) +successor(#20197,#20201) +successor(#20196,#20199) +successor(#20195,#20196) +successor(#20194,#20195) +successor(#20193,#20194) +successor(#20185,#20188) +successor(#20189,#20186) +successor(#20188,#20189) +successor(#20186,#20190) +successor(#20180,#20183) +successor(#20184,#20181) +successor(#20183,#20184) +successor(#20181,#20185) +successor(#20157,#20180) #20218=* -entry_cfg_node(#20218,#20006) +entry_cfg_node(#20218,#20157) hasLocation(#20218,#20216) #20219=* -exit_cfg_node(#20219,#20006) +exit_cfg_node(#20219,#20157) #20220=@"loc,{#10000},3,2,3,1" locations_default(#20220,#10000,3,2,3,1) hasLocation(#20219,#20220) -successor(#20018,#20024) -successor(#20034,#20026) -successor(#20032,#20028) -successor(#20030,#20032) -successor(#20028,#20034) -successor(#20026,#20022) -successor(#20024,#20030) -successor(#20022,#20020) -successor(#20020,#20219) -successor(#20015,#20018) -successor(#20012,#20015) -successor(#20218,#20012) -successor(#20008,#20006) -successor(#20215,#20008) +successor(#20166,#20172) +successor(#20179,#20173) +successor(#20178,#20175) +successor(#20177,#20178) +successor(#20175,#20179) +successor(#20173,#20170) +successor(#20172,#20177) +successor(#20170,#20168) +successor(#20168,#20219) +successor(#20164,#20166) +successor(#20162,#20164) +successor(#20218,#20162) +successor(#20159,#20157) +successor(#20215,#20159) numlines(#10000,8,7,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2015/output/trap/unknown_meta_property.js.trap b/javascript/extractor/tests/es2015/output/trap/unknown_meta_property.js.trap index 15c536cfec4..17e66585923 100644 --- a/javascript/extractor/tests/es2015/output/trap/unknown_meta_property.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/unknown_meta_property.js.trap @@ -9,121 +9,120 @@ 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;{g};{#20000}" -variables(#20003,"g",#20000) +#20002=* +lines(#20002,#20001,"function g() {"," +") +#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 ... urce;\n}") -hasLocation(#20004,#20002) -stmtContainers(#20004,#20001) -#20005=* -exprs(#20005,78,#20004,-1,"g") -#20006=@"loc,{#10000},1,10,1,10" -locations_default(#20006,#10000,1,10,1,10) -hasLocation(#20005,#20006) -exprContainers(#20005,#20004) -literals("g","g",#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 new.source;\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,2,#20009,0,"new.source;") -#20012=@"loc,{#10000},2,3,2,13" -locations_default(#20012,#10000,2,3,2,13) -hasLocation(#20011,#20012) -stmtContainers(#20011,#20004) -#20013=* -exprs(#20013,82,#20011,0,"new.source") -#20014=@"loc,{#10000},2,3,2,12" -locations_default(#20014,#10000,2,3,2,12) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20011) -exprContainers(#20013,#20004) -numlines(#20004,3,3,0) -#20015=* -lines(#20015,#20001,"function g() {"," +lines(#20004,#20001," new.source;"," ") -#20016=@"loc,{#10000},1,1,1,14" -locations_default(#20016,#10000,1,1,1,14) -hasLocation(#20015,#20016) -#20017=* -lines(#20017,#20001," new.source;"," -") -#20018=@"loc,{#10000},2,1,2,13" -locations_default(#20018,#10000,2,1,2,13) -hasLocation(#20017,#20018) +#20005=@"loc,{#10000},2,1,2,13" +locations_default(#20005,#10000,2,1,2,13) +hasLocation(#20004,#20005) indentation(#10000,2," ",2) -#20019=* -lines(#20019,#20001,"}","") -#20020=@"loc,{#10000},3,1,3,1" -locations_default(#20020,#10000,3,1,3,1) -hasLocation(#20019,#20020) +#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) -#20021=* -tokeninfo(#20021,7,#20001,0,"function") -#20022=@"loc,{#10000},1,1,1,8" -locations_default(#20022,#10000,1,1,1,8) -hasLocation(#20021,#20022) -#20023=* -tokeninfo(#20023,6,#20001,1,"g") -hasLocation(#20023,#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,"g") +#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,"new") +#20019=@"loc,{#10000},2,3,2,5" +locations_default(#20019,#10000,2,3,2,5) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,6,".") +#20021=@"loc,{#10000},2,6,2,6" +locations_default(#20021,#10000,2,6,2,6) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,6,#20001,7,"source") +#20023=@"loc,{#10000},2,7,2,12" +locations_default(#20023,#10000,2,7,2,12) +hasLocation(#20022,#20023) #20024=* -tokeninfo(#20024,8,#20001,2,"(") -#20025=@"loc,{#10000},1,11,1,11" -locations_default(#20025,#10000,1,11,1,11) +tokeninfo(#20024,8,#20001,8,";") +#20025=@"loc,{#10000},2,13,2,13" +locations_default(#20025,#10000,2,13,2,13) hasLocation(#20024,#20025) #20026=* -tokeninfo(#20026,8,#20001,3,")") -#20027=@"loc,{#10000},1,12,1,12" -locations_default(#20027,#10000,1,12,1,12) -hasLocation(#20026,#20027) -#20028=* -tokeninfo(#20028,8,#20001,4,"{") -#20029=@"loc,{#10000},1,14,1,14" -locations_default(#20029,#10000,1,14,1,14) -hasLocation(#20028,#20029) -#20030=* -tokeninfo(#20030,7,#20001,5,"new") -#20031=@"loc,{#10000},2,3,2,5" -locations_default(#20031,#10000,2,3,2,5) -hasLocation(#20030,#20031) +tokeninfo(#20026,8,#20001,9,"}") +hasLocation(#20026,#20007) +#20027=* +tokeninfo(#20027,0,#20001,10,"") +#20028=@"loc,{#10000},3,2,3,1" +locations_default(#20028,#10000,3,2,3,1) +hasLocation(#20027,#20028) +toplevels(#20001,0) +#20029=@"loc,{#10000},1,1,3,1" +locations_default(#20029,#10000,1,1,3,1) +hasLocation(#20001,#20029) +#20030=@"var;{g};{#20000}" +variables(#20030,"g",#20000) +#20031=* +stmts(#20031,17,#20001,0,"functio ... urce;\n}") +hasLocation(#20031,#20029) +stmtContainers(#20031,#20001) #20032=* -tokeninfo(#20032,8,#20001,6,".") -#20033=@"loc,{#10000},2,6,2,6" -locations_default(#20033,#10000,2,6,2,6) -hasLocation(#20032,#20033) -#20034=* -tokeninfo(#20034,6,#20001,7,"source") -#20035=@"loc,{#10000},2,7,2,12" -locations_default(#20035,#10000,2,7,2,12) -hasLocation(#20034,#20035) -#20036=* -tokeninfo(#20036,8,#20001,8,";") -#20037=@"loc,{#10000},2,13,2,13" -locations_default(#20037,#10000,2,13,2,13) -hasLocation(#20036,#20037) -#20038=* -tokeninfo(#20038,8,#20001,9,"}") -hasLocation(#20038,#20020) +exprs(#20032,78,#20031,-1,"g") +hasLocation(#20032,#20011) +exprContainers(#20032,#20031) +literals("g","g",#20032) +decl(#20032,#20030) +#20033=* +scopes(#20033,1) +scopenodes(#20031,#20033) +scopenesting(#20033,#20000) +#20034=@"var;{arguments};{#20033}" +variables(#20034,"arguments",#20033) +isArgumentsObject(#20034) +#20035=* +stmts(#20035,1,#20031,-2,"{\n new.source;\n}") +#20036=@"loc,{#10000},1,14,3,1" +locations_default(#20036,#10000,1,14,3,1) +hasLocation(#20035,#20036) +stmtContainers(#20035,#20031) +#20037=* +stmts(#20037,2,#20035,0,"new.source;") +#20038=@"loc,{#10000},2,3,2,13" +locations_default(#20038,#10000,2,3,2,13) +hasLocation(#20037,#20038) +stmtContainers(#20037,#20031) #20039=* -tokeninfo(#20039,0,#20001,10,"") -#20040=@"loc,{#10000},3,2,3,1" -locations_default(#20040,#10000,3,2,3,1) +exprs(#20039,82,#20037,0,"new.source") +#20040=@"loc,{#10000},2,3,2,12" +locations_default(#20040,#10000,2,3,2,12) hasLocation(#20039,#20040) +enclosingStmt(#20039,#20037) +exprContainers(#20039,#20031) #20041=* entry_cfg_node(#20041,#20001) #20042=@"loc,{#10000},1,1,1,0" @@ -131,20 +130,20 @@ locations_default(#20042,#10000,1,1,1,0) hasLocation(#20041,#20042) #20043=* exit_cfg_node(#20043,#20001) -hasLocation(#20043,#20040) -successor(#20004,#20043) +hasLocation(#20043,#20028) +successor(#20031,#20043) #20044=* -entry_cfg_node(#20044,#20004) +entry_cfg_node(#20044,#20031) hasLocation(#20044,#20042) #20045=* -exit_cfg_node(#20045,#20004) -hasLocation(#20045,#20040) -successor(#20009,#20011) -successor(#20011,#20013) -successor(#20013,#20045) -successor(#20044,#20009) -successor(#20005,#20004) -successor(#20041,#20005) +exit_cfg_node(#20045,#20031) +hasLocation(#20045,#20028) +successor(#20035,#20037) +successor(#20037,#20039) +successor(#20039,#20045) +successor(#20044,#20035) +successor(#20032,#20031) +successor(#20041,#20032) #20046=* jsParseErrors(#20046,#20001,"Error: The only valid meta property for new is new.target"," new.source; ") @@ -154,15 +153,15 @@ hasLocation(#20046,#20047) #20048=* lines(#20048,#20001,"function g() {"," ") -hasLocation(#20048,#20016) +hasLocation(#20048,#20003) #20049=* lines(#20049,#20001," new.source;"," ") -hasLocation(#20049,#20018) +hasLocation(#20049,#20005) indentation(#10000,2," ",2) #20050=* lines(#20050,#20001,"}","") -hasLocation(#20050,#20020) -numlines(#20001,3,3,0) +hasLocation(#20050,#20007) +numlines(#20001,3,0,0) numlines(#10000,3,3,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2015/output/trap/yield.js.trap b/javascript/extractor/tests/es2015/output/trap/yield.js.trap index c0ffd539c9e..aae98b87b16 100644 --- a/javascript/extractor/tests/es2015/output/trap/yield.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/yield.js.trap @@ -9,270 +9,269 @@ 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;{foo};{#20000}" -variables(#20003,"foo",#20000) +#20002=* +comments(#20002,0,#20001," when index reaches 2, yield's done will be true and its value will be undefined;","// when ... efined;") +#20003=@"loc,{#10000},3,21,3,103" +locations_default(#20003,#10000,3,21,3,103) +hasLocation(#20002,#20003) #20004=* -stmts(#20004,17,#20001,0,"functio ... ex++;\n}") -hasLocation(#20004,#20002) -stmtContainers(#20004,#20001) -#20005=* -exprs(#20005,78,#20004,-1,"foo") -#20006=@"loc,{#10000},1,11,1,13" -locations_default(#20006,#10000,1,11,1,13) -hasLocation(#20005,#20006) -exprContainers(#20005,#20004) -literals("foo","foo",#20005) -decl(#20005,#20003) -#20007=* -scopes(#20007,1) -scopenodes(#20004,#20007) -scopenesting(#20007,#20000) -#20008=@"var;{index};{#20007}" -variables(#20008,"index",#20007) -#20009=@"var;{arguments};{#20007}" -variables(#20009,"arguments",#20007) -isArgumentsObject(#20009) -isGenerator(#20004) +lines(#20004,#20001,"function* foo(){"," +") +#20005=@"loc,{#10000},1,1,1,16" +locations_default(#20005,#10000,1,1,1,16) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001," var index = 0;"," +") +#20007=@"loc,{#10000},2,1,2,16" +locations_default(#20007,#10000,2,1,2,16) +hasLocation(#20006,#20007) +indentation(#10000,2," ",2) +#20008=* +lines(#20008,#20001," while(index <= 2) // when index reaches 2, yield's done will be true and its value will be undefined;"," +") +#20009=@"loc,{#10000},3,1,3,103" +locations_default(#20009,#10000,3,1,3,103) +hasLocation(#20008,#20009) +indentation(#10000,3," ",2) #20010=* -stmts(#20010,1,#20004,-2,"{\n var ... ex++;\n}") -#20011=@"loc,{#10000},1,16,5,1" -locations_default(#20011,#10000,1,16,5,1) +lines(#20010,#20001," yield index++;"," +") +#20011=@"loc,{#10000},4,1,4,18" +locations_default(#20011,#10000,4,1,4,18) hasLocation(#20010,#20011) -stmtContainers(#20010,#20004) +indentation(#10000,4," ",4) #20012=* -stmts(#20012,18,#20010,0,"var index = 0;") -#20013=@"loc,{#10000},2,3,2,16" -locations_default(#20013,#10000,2,3,2,16) +lines(#20012,#20001,"}","") +#20013=@"loc,{#10000},5,1,5,1" +locations_default(#20013,#10000,5,1,5,1) hasLocation(#20012,#20013) -stmtContainers(#20012,#20004) +numlines(#20001,5,5,1) #20014=* -exprs(#20014,64,#20012,0,"index = 0") -#20015=@"loc,{#10000},2,7,2,15" -locations_default(#20015,#10000,2,7,2,15) +tokeninfo(#20014,7,#20001,0,"function") +#20015=@"loc,{#10000},1,1,1,8" +locations_default(#20015,#10000,1,1,1,8) hasLocation(#20014,#20015) -enclosingStmt(#20014,#20012) -exprContainers(#20014,#20004) #20016=* -exprs(#20016,78,#20014,0,"index") -#20017=@"loc,{#10000},2,7,2,11" -locations_default(#20017,#10000,2,7,2,11) +tokeninfo(#20016,8,#20001,1,"*") +#20017=@"loc,{#10000},1,9,1,9" +locations_default(#20017,#10000,1,9,1,9) hasLocation(#20016,#20017) -enclosingStmt(#20016,#20012) -exprContainers(#20016,#20004) -literals("index","index",#20016) -decl(#20016,#20008) #20018=* -exprs(#20018,3,#20014,1,"0") -#20019=@"loc,{#10000},2,15,2,15" -locations_default(#20019,#10000,2,15,2,15) +tokeninfo(#20018,6,#20001,2,"foo") +#20019=@"loc,{#10000},1,11,1,13" +locations_default(#20019,#10000,1,11,1,13) hasLocation(#20018,#20019) -enclosingStmt(#20018,#20012) -exprContainers(#20018,#20004) -literals("0","0",#20018) #20020=* -stmts(#20020,12,#20010,1,"while(i ... ndex++;") -#20021=@"loc,{#10000},3,3,4,18" -locations_default(#20021,#10000,3,3,4,18) +tokeninfo(#20020,8,#20001,3,"(") +#20021=@"loc,{#10000},1,14,1,14" +locations_default(#20021,#10000,1,14,1,14) hasLocation(#20020,#20021) -stmtContainers(#20020,#20004) #20022=* -exprs(#20022,28,#20020,0,"index <= 2") -#20023=@"loc,{#10000},3,9,3,18" -locations_default(#20023,#10000,3,9,3,18) +tokeninfo(#20022,8,#20001,4,")") +#20023=@"loc,{#10000},1,15,1,15" +locations_default(#20023,#10000,1,15,1,15) hasLocation(#20022,#20023) -enclosingStmt(#20022,#20020) -exprContainers(#20022,#20004) #20024=* -exprs(#20024,79,#20022,0,"index") -#20025=@"loc,{#10000},3,9,3,13" -locations_default(#20025,#10000,3,9,3,13) +tokeninfo(#20024,8,#20001,5,"{") +#20025=@"loc,{#10000},1,16,1,16" +locations_default(#20025,#10000,1,16,1,16) hasLocation(#20024,#20025) -enclosingStmt(#20024,#20020) -exprContainers(#20024,#20004) -literals("index","index",#20024) -bind(#20024,#20008) #20026=* -exprs(#20026,3,#20022,1,"2") -#20027=@"loc,{#10000},3,18,3,18" -locations_default(#20027,#10000,3,18,3,18) +tokeninfo(#20026,7,#20001,6,"var") +#20027=@"loc,{#10000},2,3,2,5" +locations_default(#20027,#10000,2,3,2,5) hasLocation(#20026,#20027) -enclosingStmt(#20026,#20020) -exprContainers(#20026,#20004) -literals("2","2",#20026) #20028=* -stmts(#20028,2,#20020,1,"yield index++;") -#20029=@"loc,{#10000},4,5,4,18" -locations_default(#20029,#10000,4,5,4,18) +tokeninfo(#20028,6,#20001,7,"index") +#20029=@"loc,{#10000},2,7,2,11" +locations_default(#20029,#10000,2,7,2,11) hasLocation(#20028,#20029) -stmtContainers(#20028,#20004) #20030=* -exprs(#20030,69,#20028,0,"yield index++") -#20031=@"loc,{#10000},4,5,4,17" -locations_default(#20031,#10000,4,5,4,17) +tokeninfo(#20030,8,#20001,8,"=") +#20031=@"loc,{#10000},2,13,2,13" +locations_default(#20031,#10000,2,13,2,13) hasLocation(#20030,#20031) -enclosingStmt(#20030,#20028) -exprContainers(#20030,#20004) #20032=* -exprs(#20032,60,#20030,0,"index++") -#20033=@"loc,{#10000},4,11,4,17" -locations_default(#20033,#10000,4,11,4,17) +tokeninfo(#20032,3,#20001,9,"0") +#20033=@"loc,{#10000},2,15,2,15" +locations_default(#20033,#10000,2,15,2,15) hasLocation(#20032,#20033) -enclosingStmt(#20032,#20028) -exprContainers(#20032,#20004) #20034=* -exprs(#20034,79,#20032,0,"index") -#20035=@"loc,{#10000},4,11,4,15" -locations_default(#20035,#10000,4,11,4,15) +tokeninfo(#20034,8,#20001,10,";") +#20035=@"loc,{#10000},2,16,2,16" +locations_default(#20035,#10000,2,16,2,16) hasLocation(#20034,#20035) -enclosingStmt(#20034,#20028) -exprContainers(#20034,#20004) -literals("index","index",#20034) -bind(#20034,#20008) -numlines(#20004,5,5,1) #20036=* -comments(#20036,0,#20001," when index reaches 2, yield's done will be true and its value will be undefined;","// when ... efined;") -#20037=@"loc,{#10000},3,21,3,103" -locations_default(#20037,#10000,3,21,3,103) +tokeninfo(#20036,7,#20001,11,"while") +#20037=@"loc,{#10000},3,3,3,7" +locations_default(#20037,#10000,3,3,3,7) hasLocation(#20036,#20037) #20038=* -lines(#20038,#20001,"function* foo(){"," -") -#20039=@"loc,{#10000},1,1,1,16" -locations_default(#20039,#10000,1,1,1,16) +tokeninfo(#20038,8,#20001,12,"(") +#20039=@"loc,{#10000},3,8,3,8" +locations_default(#20039,#10000,3,8,3,8) hasLocation(#20038,#20039) #20040=* -lines(#20040,#20001," var index = 0;"," -") -#20041=@"loc,{#10000},2,1,2,16" -locations_default(#20041,#10000,2,1,2,16) +tokeninfo(#20040,6,#20001,13,"index") +#20041=@"loc,{#10000},3,9,3,13" +locations_default(#20041,#10000,3,9,3,13) hasLocation(#20040,#20041) -indentation(#10000,2," ",2) #20042=* -lines(#20042,#20001," while(index <= 2) // when index reaches 2, yield's done will be true and its value will be undefined;"," -") -#20043=@"loc,{#10000},3,1,3,103" -locations_default(#20043,#10000,3,1,3,103) +tokeninfo(#20042,8,#20001,14,"<=") +#20043=@"loc,{#10000},3,15,3,16" +locations_default(#20043,#10000,3,15,3,16) hasLocation(#20042,#20043) -indentation(#10000,3," ",2) #20044=* -lines(#20044,#20001," yield index++;"," -") -#20045=@"loc,{#10000},4,1,4,18" -locations_default(#20045,#10000,4,1,4,18) +tokeninfo(#20044,3,#20001,15,"2") +#20045=@"loc,{#10000},3,18,3,18" +locations_default(#20045,#10000,3,18,3,18) hasLocation(#20044,#20045) -indentation(#10000,4," ",4) #20046=* -lines(#20046,#20001,"}","") -#20047=@"loc,{#10000},5,1,5,1" -locations_default(#20047,#10000,5,1,5,1) +tokeninfo(#20046,8,#20001,16,")") +#20047=@"loc,{#10000},3,19,3,19" +locations_default(#20047,#10000,3,19,3,19) hasLocation(#20046,#20047) -numlines(#20001,5,5,1) #20048=* -tokeninfo(#20048,7,#20001,0,"function") -#20049=@"loc,{#10000},1,1,1,8" -locations_default(#20049,#10000,1,1,1,8) +tokeninfo(#20048,7,#20001,17,"yield") +#20049=@"loc,{#10000},4,5,4,9" +locations_default(#20049,#10000,4,5,4,9) hasLocation(#20048,#20049) +next_token(#20002,#20048) #20050=* -tokeninfo(#20050,8,#20001,1,"*") -#20051=@"loc,{#10000},1,9,1,9" -locations_default(#20051,#10000,1,9,1,9) +tokeninfo(#20050,6,#20001,18,"index") +#20051=@"loc,{#10000},4,11,4,15" +locations_default(#20051,#10000,4,11,4,15) hasLocation(#20050,#20051) #20052=* -tokeninfo(#20052,6,#20001,2,"foo") -hasLocation(#20052,#20006) -#20053=* -tokeninfo(#20053,8,#20001,3,"(") -#20054=@"loc,{#10000},1,14,1,14" -locations_default(#20054,#10000,1,14,1,14) -hasLocation(#20053,#20054) -#20055=* -tokeninfo(#20055,8,#20001,4,")") -#20056=@"loc,{#10000},1,15,1,15" -locations_default(#20056,#10000,1,15,1,15) -hasLocation(#20055,#20056) +tokeninfo(#20052,8,#20001,19,"++") +#20053=@"loc,{#10000},4,16,4,17" +locations_default(#20053,#10000,4,16,4,17) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,8,#20001,20,";") +#20055=@"loc,{#10000},4,18,4,18" +locations_default(#20055,#10000,4,18,4,18) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,8,#20001,21,"}") +hasLocation(#20056,#20013) #20057=* -tokeninfo(#20057,8,#20001,5,"{") -#20058=@"loc,{#10000},1,16,1,16" -locations_default(#20058,#10000,1,16,1,16) +tokeninfo(#20057,0,#20001,22,"") +#20058=@"loc,{#10000},5,2,5,1" +locations_default(#20058,#10000,5,2,5,1) hasLocation(#20057,#20058) -#20059=* -tokeninfo(#20059,7,#20001,6,"var") -#20060=@"loc,{#10000},2,3,2,5" -locations_default(#20060,#10000,2,3,2,5) -hasLocation(#20059,#20060) +toplevels(#20001,0) +#20059=@"loc,{#10000},1,1,5,1" +locations_default(#20059,#10000,1,1,5,1) +hasLocation(#20001,#20059) +#20060=@"var;{foo};{#20000}" +variables(#20060,"foo",#20000) #20061=* -tokeninfo(#20061,6,#20001,7,"index") -hasLocation(#20061,#20017) +stmts(#20061,17,#20001,0,"functio ... ex++;\n}") +hasLocation(#20061,#20059) +stmtContainers(#20061,#20001) #20062=* -tokeninfo(#20062,8,#20001,8,"=") -#20063=@"loc,{#10000},2,13,2,13" -locations_default(#20063,#10000,2,13,2,13) -hasLocation(#20062,#20063) -#20064=* -tokeninfo(#20064,3,#20001,9,"0") -hasLocation(#20064,#20019) -#20065=* -tokeninfo(#20065,8,#20001,10,";") -#20066=@"loc,{#10000},2,16,2,16" -locations_default(#20066,#10000,2,16,2,16) -hasLocation(#20065,#20066) -#20067=* -tokeninfo(#20067,7,#20001,11,"while") -#20068=@"loc,{#10000},3,3,3,7" -locations_default(#20068,#10000,3,3,3,7) -hasLocation(#20067,#20068) -#20069=* -tokeninfo(#20069,8,#20001,12,"(") -#20070=@"loc,{#10000},3,8,3,8" -locations_default(#20070,#10000,3,8,3,8) -hasLocation(#20069,#20070) -#20071=* -tokeninfo(#20071,6,#20001,13,"index") -hasLocation(#20071,#20025) +exprs(#20062,78,#20061,-1,"foo") +hasLocation(#20062,#20019) +exprContainers(#20062,#20061) +literals("foo","foo",#20062) +decl(#20062,#20060) +#20063=* +scopes(#20063,1) +scopenodes(#20061,#20063) +scopenesting(#20063,#20000) +#20064=@"var;{index};{#20063}" +variables(#20064,"index",#20063) +#20065=@"var;{arguments};{#20063}" +variables(#20065,"arguments",#20063) +isArgumentsObject(#20065) +isGenerator(#20061) +#20066=* +stmts(#20066,1,#20061,-2,"{\n var ... ex++;\n}") +#20067=@"loc,{#10000},1,16,5,1" +locations_default(#20067,#10000,1,16,5,1) +hasLocation(#20066,#20067) +stmtContainers(#20066,#20061) +#20068=* +stmts(#20068,18,#20066,0,"var index = 0;") +#20069=@"loc,{#10000},2,3,2,16" +locations_default(#20069,#10000,2,3,2,16) +hasLocation(#20068,#20069) +stmtContainers(#20068,#20061) +#20070=* +exprs(#20070,64,#20068,0,"index = 0") +#20071=@"loc,{#10000},2,7,2,15" +locations_default(#20071,#10000,2,7,2,15) +hasLocation(#20070,#20071) +enclosingStmt(#20070,#20068) +exprContainers(#20070,#20061) #20072=* -tokeninfo(#20072,8,#20001,14,"<=") -#20073=@"loc,{#10000},3,15,3,16" -locations_default(#20073,#10000,3,15,3,16) -hasLocation(#20072,#20073) +exprs(#20072,78,#20070,0,"index") +hasLocation(#20072,#20029) +enclosingStmt(#20072,#20068) +exprContainers(#20072,#20061) +literals("index","index",#20072) +decl(#20072,#20064) +#20073=* +exprs(#20073,3,#20070,1,"0") +hasLocation(#20073,#20033) +enclosingStmt(#20073,#20068) +exprContainers(#20073,#20061) +literals("0","0",#20073) #20074=* -tokeninfo(#20074,3,#20001,15,"2") -hasLocation(#20074,#20027) -#20075=* -tokeninfo(#20075,8,#20001,16,")") -#20076=@"loc,{#10000},3,19,3,19" -locations_default(#20076,#10000,3,19,3,19) -hasLocation(#20075,#20076) -#20077=* -tokeninfo(#20077,7,#20001,17,"yield") -#20078=@"loc,{#10000},4,5,4,9" -locations_default(#20078,#10000,4,5,4,9) -hasLocation(#20077,#20078) -next_token(#20036,#20077) +stmts(#20074,12,#20066,1,"while(i ... ndex++;") +#20075=@"loc,{#10000},3,3,4,18" +locations_default(#20075,#10000,3,3,4,18) +hasLocation(#20074,#20075) +stmtContainers(#20074,#20061) +#20076=* +exprs(#20076,28,#20074,0,"index <= 2") +#20077=@"loc,{#10000},3,9,3,18" +locations_default(#20077,#10000,3,9,3,18) +hasLocation(#20076,#20077) +enclosingStmt(#20076,#20074) +exprContainers(#20076,#20061) +#20078=* +exprs(#20078,79,#20076,0,"index") +hasLocation(#20078,#20041) +enclosingStmt(#20078,#20074) +exprContainers(#20078,#20061) +literals("index","index",#20078) +bind(#20078,#20064) #20079=* -tokeninfo(#20079,6,#20001,18,"index") -hasLocation(#20079,#20035) +exprs(#20079,3,#20076,1,"2") +hasLocation(#20079,#20045) +enclosingStmt(#20079,#20074) +exprContainers(#20079,#20061) +literals("2","2",#20079) #20080=* -tokeninfo(#20080,8,#20001,19,"++") -#20081=@"loc,{#10000},4,16,4,17" -locations_default(#20081,#10000,4,16,4,17) +stmts(#20080,2,#20074,1,"yield index++;") +#20081=@"loc,{#10000},4,5,4,18" +locations_default(#20081,#10000,4,5,4,18) hasLocation(#20080,#20081) +stmtContainers(#20080,#20061) #20082=* -tokeninfo(#20082,8,#20001,20,";") -#20083=@"loc,{#10000},4,18,4,18" -locations_default(#20083,#10000,4,18,4,18) +exprs(#20082,69,#20080,0,"yield index++") +#20083=@"loc,{#10000},4,5,4,17" +locations_default(#20083,#10000,4,5,4,17) hasLocation(#20082,#20083) +enclosingStmt(#20082,#20080) +exprContainers(#20082,#20061) #20084=* -tokeninfo(#20084,8,#20001,21,"}") -hasLocation(#20084,#20047) -#20085=* -tokeninfo(#20085,0,#20001,22,"") -#20086=@"loc,{#10000},5,2,5,1" -locations_default(#20086,#10000,5,2,5,1) -hasLocation(#20085,#20086) +exprs(#20084,60,#20082,0,"index++") +#20085=@"loc,{#10000},4,11,4,17" +locations_default(#20085,#10000,4,11,4,17) +hasLocation(#20084,#20085) +enclosingStmt(#20084,#20080) +exprContainers(#20084,#20061) +#20086=* +exprs(#20086,79,#20084,0,"index") +hasLocation(#20086,#20051) +enclosingStmt(#20086,#20080) +exprContainers(#20086,#20061) +literals("index","index",#20086) +bind(#20086,#20064) #20087=* entry_cfg_node(#20087,#20001) #20088=@"loc,{#10000},1,1,1,0" @@ -280,38 +279,38 @@ locations_default(#20088,#10000,1,1,1,0) hasLocation(#20087,#20088) #20089=* exit_cfg_node(#20089,#20001) -hasLocation(#20089,#20086) -successor(#20004,#20089) +hasLocation(#20089,#20058) +successor(#20061,#20089) #20090=* -entry_cfg_node(#20090,#20004) +entry_cfg_node(#20090,#20061) hasLocation(#20090,#20088) #20091=* -exit_cfg_node(#20091,#20004) -hasLocation(#20091,#20086) -successor(#20010,#20012) -successor(#20020,#20024) -successor(#20028,#20034) -successor(#20034,#20032) -successor(#20032,#20030) -successor(#20030,#20024) -successor(#20026,#20022) -successor(#20024,#20026) +exit_cfg_node(#20091,#20061) +hasLocation(#20091,#20058) +successor(#20066,#20068) +successor(#20074,#20078) +successor(#20080,#20086) +successor(#20086,#20084) +successor(#20084,#20082) +successor(#20082,#20078) +successor(#20079,#20076) +successor(#20078,#20079) #20092=* -guard_node(#20092,1,#20022) -hasLocation(#20092,#20023) -successor(#20092,#20028) +guard_node(#20092,1,#20076) +hasLocation(#20092,#20077) +successor(#20092,#20080) #20093=* -guard_node(#20093,0,#20022) -hasLocation(#20093,#20023) +guard_node(#20093,0,#20076) +hasLocation(#20093,#20077) successor(#20093,#20091) -successor(#20022,#20092) -successor(#20022,#20093) -successor(#20012,#20016) -successor(#20018,#20014) -successor(#20016,#20018) -successor(#20014,#20020) -successor(#20090,#20010) -successor(#20005,#20004) -successor(#20087,#20005) +successor(#20076,#20092) +successor(#20076,#20093) +successor(#20068,#20072) +successor(#20073,#20070) +successor(#20072,#20073) +successor(#20070,#20074) +successor(#20090,#20066) +successor(#20062,#20061) +successor(#20087,#20062) numlines(#10000,5,5,1) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2015/output/trap/yield2.js.trap b/javascript/extractor/tests/es2015/output/trap/yield2.js.trap index 995b9f42327..6d7cf1932ae 100644 --- a/javascript/extractor/tests/es2015/output/trap/yield2.js.trap +++ b/javascript/extractor/tests/es2015/output/trap/yield2.js.trap @@ -9,118 +9,117 @@ 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;{f};{#20000}" -variables(#20003,"f",#20000) -#20004=* -stmts(#20004,17,#20001,0,"functio ... ield;\n}") -#20005=@"loc,{#10000},1,1,3,1" -locations_default(#20005,#10000,1,1,3,1) -hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) -#20006=* -exprs(#20006,78,#20004,-1,"f") -#20007=@"loc,{#10000},1,11,1,11" -locations_default(#20007,#10000,1,11,1,11) -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;{arguments};{#20008}" -variables(#20009,"arguments",#20008) -isArgumentsObject(#20009) -isGenerator(#20004) -#20010=* -stmts(#20010,1,#20004,-2,"{\n yield;\n}") -#20011=@"loc,{#10000},1,15,3,1" -locations_default(#20011,#10000,1,15,3,1) -hasLocation(#20010,#20011) -stmtContainers(#20010,#20004) -#20012=* -stmts(#20012,2,#20010,0,"yield;") -#20013=@"loc,{#10000},2,5,2,10" -locations_default(#20013,#10000,2,5,2,10) -hasLocation(#20012,#20013) -stmtContainers(#20012,#20004) -#20014=* -exprs(#20014,69,#20012,0,"yield") -#20015=@"loc,{#10000},2,5,2,9" -locations_default(#20015,#10000,2,5,2,9) -hasLocation(#20014,#20015) -enclosingStmt(#20014,#20012) -exprContainers(#20014,#20004) -numlines(#20004,3,3,0) -#20016=* -lines(#20016,#20001,"function* f() {"," +#20002=* +lines(#20002,#20001,"function* f() {"," ") -#20017=@"loc,{#10000},1,1,1,15" -locations_default(#20017,#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;"," +") +#20005=@"loc,{#10000},2,1,2,10" +locations_default(#20005,#10000,2,1,2,10) +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=* -lines(#20018,#20001," yield;"," -") -#20019=@"loc,{#10000},2,1,2,10" -locations_default(#20019,#10000,2,1,2,10) +tokeninfo(#20018,8,#20001,5,"{") +#20019=@"loc,{#10000},1,15,1,15" +locations_default(#20019,#10000,1,15,1,15) hasLocation(#20018,#20019) -indentation(#10000,2," ",4) #20020=* -lines(#20020,#20001,"}"," -") -#20021=@"loc,{#10000},3,1,3,1" -locations_default(#20021,#10000,3,1,3,1) +tokeninfo(#20020,7,#20001,6,"yield") +#20021=@"loc,{#10000},2,5,2,9" +locations_default(#20021,#10000,2,5,2,9) hasLocation(#20020,#20021) -numlines(#20001,3,3,0) #20022=* -tokeninfo(#20022,7,#20001,0,"function") -#20023=@"loc,{#10000},1,1,1,8" -locations_default(#20023,#10000,1,1,1,8) +tokeninfo(#20022,8,#20001,7,";") +#20023=@"loc,{#10000},2,10,2,10" +locations_default(#20023,#10000,2,10,2,10) hasLocation(#20022,#20023) #20024=* -tokeninfo(#20024,8,#20001,1,"*") -#20025=@"loc,{#10000},1,9,1,9" -locations_default(#20025,#10000,1,9,1,9) -hasLocation(#20024,#20025) -#20026=* -tokeninfo(#20026,6,#20001,2,"f") -hasLocation(#20026,#20007) -#20027=* -tokeninfo(#20027,8,#20001,3,"(") -#20028=@"loc,{#10000},1,12,1,12" -locations_default(#20028,#10000,1,12,1,12) -hasLocation(#20027,#20028) +tokeninfo(#20024,8,#20001,8,"}") +hasLocation(#20024,#20007) +#20025=* +tokeninfo(#20025,0,#20001,9,"") +#20026=@"loc,{#10000},4,1,4,0" +locations_default(#20026,#10000,4,1,4,0) +hasLocation(#20025,#20026) +toplevels(#20001,0) +#20027=@"loc,{#10000},1,1,4,0" +locations_default(#20027,#10000,1,1,4,0) +hasLocation(#20001,#20027) +#20028=@"var;{f};{#20000}" +variables(#20028,"f",#20000) #20029=* -tokeninfo(#20029,8,#20001,4,")") -#20030=@"loc,{#10000},1,13,1,13" -locations_default(#20030,#10000,1,13,1,13) +stmts(#20029,17,#20001,0,"functio ... ield;\n}") +#20030=@"loc,{#10000},1,1,3,1" +locations_default(#20030,#10000,1,1,3,1) hasLocation(#20029,#20030) +stmtContainers(#20029,#20001) #20031=* -tokeninfo(#20031,8,#20001,5,"{") -#20032=@"loc,{#10000},1,15,1,15" -locations_default(#20032,#10000,1,15,1,15) -hasLocation(#20031,#20032) -#20033=* -tokeninfo(#20033,7,#20001,6,"yield") -hasLocation(#20033,#20015) +exprs(#20031,78,#20029,-1,"f") +hasLocation(#20031,#20013) +exprContainers(#20031,#20029) +literals("f","f",#20031) +decl(#20031,#20028) +#20032=* +scopes(#20032,1) +scopenodes(#20029,#20032) +scopenesting(#20032,#20000) +#20033=@"var;{arguments};{#20032}" +variables(#20033,"arguments",#20032) +isArgumentsObject(#20033) +isGenerator(#20029) #20034=* -tokeninfo(#20034,8,#20001,7,";") -#20035=@"loc,{#10000},2,10,2,10" -locations_default(#20035,#10000,2,10,2,10) +stmts(#20034,1,#20029,-2,"{\n yield;\n}") +#20035=@"loc,{#10000},1,15,3,1" +locations_default(#20035,#10000,1,15,3,1) hasLocation(#20034,#20035) +stmtContainers(#20034,#20029) #20036=* -tokeninfo(#20036,8,#20001,8,"}") -hasLocation(#20036,#20021) -#20037=* -tokeninfo(#20037,0,#20001,9,"") -#20038=@"loc,{#10000},4,1,4,0" -locations_default(#20038,#10000,4,1,4,0) -hasLocation(#20037,#20038) +stmts(#20036,2,#20034,0,"yield;") +#20037=@"loc,{#10000},2,5,2,10" +locations_default(#20037,#10000,2,5,2,10) +hasLocation(#20036,#20037) +stmtContainers(#20036,#20029) +#20038=* +exprs(#20038,69,#20036,0,"yield") +hasLocation(#20038,#20021) +enclosingStmt(#20038,#20036) +exprContainers(#20038,#20029) #20039=* entry_cfg_node(#20039,#20001) #20040=@"loc,{#10000},1,1,1,0" @@ -128,21 +127,21 @@ locations_default(#20040,#10000,1,1,1,0) hasLocation(#20039,#20040) #20041=* exit_cfg_node(#20041,#20001) -hasLocation(#20041,#20038) -successor(#20004,#20041) +hasLocation(#20041,#20026) +successor(#20029,#20041) #20042=* -entry_cfg_node(#20042,#20004) +entry_cfg_node(#20042,#20029) hasLocation(#20042,#20040) #20043=* -exit_cfg_node(#20043,#20004) +exit_cfg_node(#20043,#20029) #20044=@"loc,{#10000},3,2,3,1" locations_default(#20044,#10000,3,2,3,1) hasLocation(#20043,#20044) -successor(#20010,#20012) -successor(#20012,#20014) -successor(#20014,#20043) -successor(#20042,#20010) -successor(#20006,#20004) -successor(#20039,#20006) +successor(#20034,#20036) +successor(#20036,#20038) +successor(#20038,#20043) +successor(#20042,#20034) +successor(#20031,#20029) +successor(#20039,#20031) numlines(#10000,3,3,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2016/output/trap/exp.js.trap b/javascript/extractor/tests/es2016/output/trap/exp.js.trap index b767fb455bf..4b6a420648d 100644 --- a/javascript/extractor/tests/es2016/output/trap/exp.js.trap +++ b/javascript/extractor/tests/es2016/output/trap/exp.js.trap @@ -9,102 +9,102 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,2,5" -locations_default(#20002,#10000,1,1,2,5) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"1**0") -#20004=@"loc,{#10000},1,1,1,4" -locations_default(#20004,#10000,1,1,1,4) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,87,#20003,0,"1**0") -hasLocation(#20005,#20004) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) +#20002=* +lines(#20002,#20001,"1**0"," +") +#20003=@"loc,{#10000},1,1,1,4" +locations_default(#20003,#10000,1,1,1,4) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"x**=2","") +#20005=@"loc,{#10000},2,1,2,5" +locations_default(#20005,#10000,2,1,2,5) +hasLocation(#20004,#20005) +numlines(#20001,2,2,0) #20006=* -exprs(#20006,3,#20005,0,"1") +tokeninfo(#20006,3,#20001,0,"1") #20007=@"loc,{#10000},1,1,1,1" locations_default(#20007,#10000,1,1,1,1) hasLocation(#20006,#20007) -enclosingStmt(#20006,#20003) -exprContainers(#20006,#20001) -literals("1","1",#20006) #20008=* -exprs(#20008,3,#20005,1,"0") -#20009=@"loc,{#10000},1,4,1,4" -locations_default(#20009,#10000,1,4,1,4) +tokeninfo(#20008,8,#20001,1,"**") +#20009=@"loc,{#10000},1,2,1,3" +locations_default(#20009,#10000,1,2,1,3) hasLocation(#20008,#20009) -enclosingStmt(#20008,#20003) -exprContainers(#20008,#20001) -literals("0","0",#20008) #20010=* -stmts(#20010,2,#20001,1,"x**=2") -#20011=@"loc,{#10000},2,1,2,5" -locations_default(#20011,#10000,2,1,2,5) +tokeninfo(#20010,3,#20001,2,"0") +#20011=@"loc,{#10000},1,4,1,4" +locations_default(#20011,#10000,1,4,1,4) hasLocation(#20010,#20011) -stmtContainers(#20010,#20001) #20012=* -exprs(#20012,88,#20010,0,"x**=2") -hasLocation(#20012,#20011) -enclosingStmt(#20012,#20010) -exprContainers(#20012,#20001) -#20013=* -exprs(#20013,79,#20012,0,"x") -#20014=@"loc,{#10000},2,1,2,1" -locations_default(#20014,#10000,2,1,2,1) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20010) -exprContainers(#20013,#20001) -literals("x","x",#20013) -#20015=@"var;{x};{#20000}" -variables(#20015,"x",#20000) -bind(#20013,#20015) +tokeninfo(#20012,6,#20001,3,"x") +#20013=@"loc,{#10000},2,1,2,1" +locations_default(#20013,#10000,2,1,2,1) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,4,"**=") +#20015=@"loc,{#10000},2,2,2,4" +locations_default(#20015,#10000,2,2,2,4) +hasLocation(#20014,#20015) #20016=* -exprs(#20016,3,#20012,1,"2") +tokeninfo(#20016,3,#20001,5,"2") #20017=@"loc,{#10000},2,5,2,5" locations_default(#20017,#10000,2,5,2,5) hasLocation(#20016,#20017) -enclosingStmt(#20016,#20010) -exprContainers(#20016,#20001) -literals("2","2",#20016) #20018=* -lines(#20018,#20001,"1**0"," -") -hasLocation(#20018,#20004) -#20019=* -lines(#20019,#20001,"x**=2","") -hasLocation(#20019,#20011) -numlines(#20001,2,2,0) -#20020=* -tokeninfo(#20020,3,#20001,0,"1") -hasLocation(#20020,#20007) +tokeninfo(#20018,0,#20001,6,"") +#20019=@"loc,{#10000},2,6,2,5" +locations_default(#20019,#10000,2,6,2,5) +hasLocation(#20018,#20019) +toplevels(#20001,0) +#20020=@"loc,{#10000},1,1,2,5" +locations_default(#20020,#10000,1,1,2,5) +hasLocation(#20001,#20020) #20021=* -tokeninfo(#20021,8,#20001,1,"**") -#20022=@"loc,{#10000},1,2,1,3" -locations_default(#20022,#10000,1,2,1,3) -hasLocation(#20021,#20022) +stmts(#20021,2,#20001,0,"1**0") +hasLocation(#20021,#20003) +stmtContainers(#20021,#20001) +#20022=* +exprs(#20022,87,#20021,0,"1**0") +hasLocation(#20022,#20003) +enclosingStmt(#20022,#20021) +exprContainers(#20022,#20001) #20023=* -tokeninfo(#20023,3,#20001,2,"0") -hasLocation(#20023,#20009) +exprs(#20023,3,#20022,0,"1") +hasLocation(#20023,#20007) +enclosingStmt(#20023,#20021) +exprContainers(#20023,#20001) +literals("1","1",#20023) #20024=* -tokeninfo(#20024,6,#20001,3,"x") -hasLocation(#20024,#20014) +exprs(#20024,3,#20022,1,"0") +hasLocation(#20024,#20011) +enclosingStmt(#20024,#20021) +exprContainers(#20024,#20001) +literals("0","0",#20024) #20025=* -tokeninfo(#20025,8,#20001,4,"**=") -#20026=@"loc,{#10000},2,2,2,4" -locations_default(#20026,#10000,2,2,2,4) -hasLocation(#20025,#20026) +stmts(#20025,2,#20001,1,"x**=2") +hasLocation(#20025,#20005) +stmtContainers(#20025,#20001) +#20026=* +exprs(#20026,88,#20025,0,"x**=2") +hasLocation(#20026,#20005) +enclosingStmt(#20026,#20025) +exprContainers(#20026,#20001) #20027=* -tokeninfo(#20027,3,#20001,5,"2") -hasLocation(#20027,#20017) -#20028=* -tokeninfo(#20028,0,#20001,6,"") -#20029=@"loc,{#10000},2,6,2,5" -locations_default(#20029,#10000,2,6,2,5) -hasLocation(#20028,#20029) +exprs(#20027,79,#20026,0,"x") +hasLocation(#20027,#20013) +enclosingStmt(#20027,#20025) +exprContainers(#20027,#20001) +literals("x","x",#20027) +#20028=@"var;{x};{#20000}" +variables(#20028,"x",#20000) +bind(#20027,#20028) +#20029=* +exprs(#20029,3,#20026,1,"2") +hasLocation(#20029,#20017) +enclosingStmt(#20029,#20025) +exprContainers(#20029,#20001) +literals("2","2",#20029) #20030=* entry_cfg_node(#20030,#20001) #20031=@"loc,{#10000},1,1,1,0" @@ -112,15 +112,15 @@ locations_default(#20031,#10000,1,1,1,0) hasLocation(#20030,#20031) #20032=* exit_cfg_node(#20032,#20001) -hasLocation(#20032,#20029) -successor(#20010,#20013) -successor(#20016,#20012) -successor(#20013,#20016) -successor(#20012,#20032) -successor(#20003,#20006) -successor(#20008,#20005) -successor(#20006,#20008) -successor(#20005,#20010) -successor(#20030,#20003) +hasLocation(#20032,#20019) +successor(#20025,#20027) +successor(#20029,#20026) +successor(#20027,#20029) +successor(#20026,#20032) +successor(#20021,#20023) +successor(#20024,#20022) +successor(#20023,#20024) +successor(#20022,#20025) +successor(#20030,#20021) numlines(#10000,2,2,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2016/output/trap/usestrict.js.trap b/javascript/extractor/tests/es2016/output/trap/usestrict.js.trap index cb0a0d0b4bd..a499cbc2244 100644 --- a/javascript/extractor/tests/es2016/output/trap/usestrict.js.trap +++ b/javascript/extractor/tests/es2016/output/trap/usestrict.js.trap @@ -9,125 +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,33" -locations_default(#20002,#10000,1,1,1,33) -hasLocation(#20001,#20002) -#20003=@"var;{f};{#20000}" -variables(#20003,"f",#20000) -#20004=* -stmts(#20004,17,#20001,0,"functio ... ict'; }") -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;{a};{#20007}" -variables(#20008,"a",#20007) -#20009=* -exprs(#20009,78,#20004,0,"a") -#20010=@"loc,{#10000},1,12,1,12" -locations_default(#20010,#10000,1,12,1,12) -hasLocation(#20009,#20010) -exprContainers(#20009,#20004) -literals("a","a",#20009) -decl(#20009,#20008) -#20011=@"var;{arguments};{#20007}" -variables(#20011,"arguments",#20007) -isArgumentsObject(#20011) -#20012=* -exprs(#20012,3,#20004,-5,"2") -#20013=@"loc,{#10000},1,14,1,14" -locations_default(#20013,#10000,1,14,1,14) -hasLocation(#20012,#20013) -exprContainers(#20012,#20004) -literals("2","2",#20012) -#20014=* -stmts(#20014,1,#20004,-2,"{ 'use strict'; }") -#20015=@"loc,{#10000},1,17,1,33" -locations_default(#20015,#10000,1,17,1,33) -hasLocation(#20014,#20015) -stmtContainers(#20014,#20004) -#20016=* -stmts(#20016,2,#20014,0,"'use strict';") -#20017=@"loc,{#10000},1,19,1,31" -locations_default(#20017,#10000,1,19,1,31) -hasLocation(#20016,#20017) -stmtContainers(#20016,#20004) -#20018=* -exprs(#20018,4,#20016,0,"'use strict'") -#20019=@"loc,{#10000},1,19,1,30" -locations_default(#20019,#10000,1,19,1,30) -hasLocation(#20018,#20019) -enclosingStmt(#20018,#20016) -exprContainers(#20018,#20004) -literals("use strict","'use strict'",#20018) -numlines(#20004,1,1,0) -#20020=* -lines(#20020,#20001,"function f(a=2) { 'use strict'; }","") -hasLocation(#20020,#20002) +#20002=* +lines(#20002,#20001,"function f(a=2) { 'use strict'; }","") +#20003=@"loc,{#10000},1,1,1,33" +locations_default(#20003,#10000,1,1,1,33) +hasLocation(#20002,#20003) numlines(#20001,1,1,0) -#20021=* -tokeninfo(#20021,7,#20001,0,"function") -#20022=@"loc,{#10000},1,1,1,8" -locations_default(#20022,#10000,1,1,1,8) -hasLocation(#20021,#20022) -#20023=* -tokeninfo(#20023,6,#20001,1,"f") -hasLocation(#20023,#20006) +#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,"a") +#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,3,#20001,5,"2") +#20015=@"loc,{#10000},1,14,1,14" +locations_default(#20015,#10000,1,14,1,14) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,6,")") +#20017=@"loc,{#10000},1,15,1,15" +locations_default(#20017,#10000,1,15,1,15) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,7,"{") +#20019=@"loc,{#10000},1,17,1,17" +locations_default(#20019,#10000,1,17,1,17) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,4,#20001,8,"'use strict'") +#20021=@"loc,{#10000},1,19,1,30" +locations_default(#20021,#10000,1,19,1,30) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,9,";") +#20023=@"loc,{#10000},1,31,1,31" +locations_default(#20023,#10000,1,31,1,31) +hasLocation(#20022,#20023) #20024=* -tokeninfo(#20024,8,#20001,2,"(") -#20025=@"loc,{#10000},1,11,1,11" -locations_default(#20025,#10000,1,11,1,11) +tokeninfo(#20024,8,#20001,10,"}") +#20025=@"loc,{#10000},1,33,1,33" +locations_default(#20025,#10000,1,33,1,33) hasLocation(#20024,#20025) #20026=* -tokeninfo(#20026,6,#20001,3,"a") -hasLocation(#20026,#20010) -#20027=* -tokeninfo(#20027,8,#20001,4,"=") -#20028=@"loc,{#10000},1,13,1,13" -locations_default(#20028,#10000,1,13,1,13) -hasLocation(#20027,#20028) +tokeninfo(#20026,0,#20001,11,"") +#20027=@"loc,{#10000},1,34,1,33" +locations_default(#20027,#10000,1,34,1,33) +hasLocation(#20026,#20027) +toplevels(#20001,0) +hasLocation(#20001,#20003) +#20028=@"var;{f};{#20000}" +variables(#20028,"f",#20000) #20029=* -tokeninfo(#20029,3,#20001,5,"2") -hasLocation(#20029,#20013) +stmts(#20029,17,#20001,0,"functio ... ict'; }") +hasLocation(#20029,#20003) +stmtContainers(#20029,#20001) #20030=* -tokeninfo(#20030,8,#20001,6,")") -#20031=@"loc,{#10000},1,15,1,15" -locations_default(#20031,#10000,1,15,1,15) -hasLocation(#20030,#20031) -#20032=* -tokeninfo(#20032,8,#20001,7,"{") -#20033=@"loc,{#10000},1,17,1,17" -locations_default(#20033,#10000,1,17,1,17) -hasLocation(#20032,#20033) -#20034=* -tokeninfo(#20034,4,#20001,8,"'use strict'") -hasLocation(#20034,#20019) +exprs(#20030,78,#20029,-1,"f") +hasLocation(#20030,#20007) +exprContainers(#20030,#20029) +literals("f","f",#20030) +decl(#20030,#20028) +#20031=* +scopes(#20031,1) +scopenodes(#20029,#20031) +scopenesting(#20031,#20000) +#20032=@"var;{a};{#20031}" +variables(#20032,"a",#20031) +#20033=* +exprs(#20033,78,#20029,0,"a") +hasLocation(#20033,#20011) +exprContainers(#20033,#20029) +literals("a","a",#20033) +decl(#20033,#20032) +#20034=@"var;{arguments};{#20031}" +variables(#20034,"arguments",#20031) +isArgumentsObject(#20034) #20035=* -tokeninfo(#20035,8,#20001,9,";") -#20036=@"loc,{#10000},1,31,1,31" -locations_default(#20036,#10000,1,31,1,31) -hasLocation(#20035,#20036) -#20037=* -tokeninfo(#20037,8,#20001,10,"}") -#20038=@"loc,{#10000},1,33,1,33" -locations_default(#20038,#10000,1,33,1,33) -hasLocation(#20037,#20038) -#20039=* -tokeninfo(#20039,0,#20001,11,"") -#20040=@"loc,{#10000},1,34,1,33" -locations_default(#20040,#10000,1,34,1,33) -hasLocation(#20039,#20040) +exprs(#20035,3,#20029,-5,"2") +hasLocation(#20035,#20015) +exprContainers(#20035,#20029) +literals("2","2",#20035) +#20036=* +stmts(#20036,1,#20029,-2,"{ 'use strict'; }") +#20037=@"loc,{#10000},1,17,1,33" +locations_default(#20037,#10000,1,17,1,33) +hasLocation(#20036,#20037) +stmtContainers(#20036,#20029) +#20038=* +stmts(#20038,2,#20036,0,"'use strict';") +#20039=@"loc,{#10000},1,19,1,31" +locations_default(#20039,#10000,1,19,1,31) +hasLocation(#20038,#20039) +stmtContainers(#20038,#20029) +#20040=* +exprs(#20040,4,#20038,0,"'use strict'") +hasLocation(#20040,#20021) +enclosingStmt(#20040,#20038) +exprContainers(#20040,#20029) +literals("use strict","'use strict'",#20040) #20041=* entry_cfg_node(#20041,#20001) #20042=@"loc,{#10000},1,1,1,0" @@ -135,22 +134,22 @@ locations_default(#20042,#10000,1,1,1,0) hasLocation(#20041,#20042) #20043=* exit_cfg_node(#20043,#20001) -hasLocation(#20043,#20040) -successor(#20004,#20043) +hasLocation(#20043,#20027) +successor(#20029,#20043) #20044=* -entry_cfg_node(#20044,#20004) +entry_cfg_node(#20044,#20029) hasLocation(#20044,#20042) #20045=* -exit_cfg_node(#20045,#20004) -hasLocation(#20045,#20040) -successor(#20014,#20016) -successor(#20016,#20018) -successor(#20018,#20045) -successor(#20009,#20014) -successor(#20012,#20009) -successor(#20044,#20012) -successor(#20005,#20004) -successor(#20041,#20005) +exit_cfg_node(#20045,#20029) +hasLocation(#20045,#20027) +successor(#20036,#20038) +successor(#20038,#20040) +successor(#20040,#20045) +successor(#20033,#20036) +successor(#20035,#20033) +successor(#20044,#20035) +successor(#20030,#20029) +successor(#20041,#20030) #20046=* jsParseErrors(#20046,#20001,"Error: Illegal 'use strict' directive in function with non-simple parameter list","function f(a=2) { 'use strict'; }") #20047=@"loc,{#10000},1,19,1,19" @@ -158,7 +157,7 @@ locations_default(#20047,#10000,1,19,1,19) hasLocation(#20046,#20047) #20048=* lines(#20048,#20001,"function f(a=2) { 'use strict'; }","") -hasLocation(#20048,#20002) -numlines(#20001,1,1,0) +hasLocation(#20048,#20003) +numlines(#20001,1,0,0) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2017/output/trap/async-await.js.trap b/javascript/extractor/tests/es2017/output/trap/async-await.js.trap index c33f0af4812..ec4802a50a2 100644 --- a/javascript/extractor/tests/es2017/output/trap/async-await.js.trap +++ b/javascript/extractor/tests/es2017/output/trap/async-await.js.trap @@ -9,309 +9,309 @@ 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=@"module;{#10000},1,1" -scopes(#20003,3) -scopenodes(#20001,#20003) -scopenesting(#20003,#20000) -isModule(#20001) -#20004=@"var;{foo};{#20003}" -variables(#20004,"foo",#20003) -#20005=* -stmts(#20005,30,#20001,0,"export ... ;\n }\n}") -#20006=@"loc,{#10000},1,1,7,1" -locations_default(#20006,#10000,1,1,7,1) -hasLocation(#20005,#20006) -stmtContainers(#20005,#20001) -#20007=* -stmts(#20007,17,#20005,-1,"async f ... ;\n }\n}") -#20008=@"loc,{#10000},1,8,7,1" -locations_default(#20008,#10000,1,8,7,1) -hasLocation(#20007,#20008) -stmtContainers(#20007,#20001) -#20009=* -exprs(#20009,78,#20007,-1,"foo") -#20010=@"loc,{#10000},1,23,1,25" -locations_default(#20010,#10000,1,23,1,25) -hasLocation(#20009,#20010) -exprContainers(#20009,#20007) -literals("foo","foo",#20009) -decl(#20009,#20004) -#20011=* -scopes(#20011,1) -scopenodes(#20007,#20011) -scopenesting(#20011,#20003) -#20012=@"var;{x};{#20011}" -variables(#20012,"x",#20011) -#20013=* -exprs(#20013,78,#20007,0,"x") -#20014=@"loc,{#10000},1,27,1,27" -locations_default(#20014,#10000,1,27,1,27) -hasLocation(#20013,#20014) -exprContainers(#20013,#20007) -literals("x","x",#20013) -decl(#20013,#20012) -#20015=@"var;{arguments};{#20011}" -variables(#20015,"arguments",#20011) -isArgumentsObject(#20015) -isAsync(#20007) -#20016=* -stmts(#20016,1,#20007,-2,"{\n try ... ;\n }\n}") -#20017=@"loc,{#10000},1,30,7,1" -locations_default(#20017,#10000,1,30,7,1) -hasLocation(#20016,#20017) -stmtContainers(#20016,#20007) -#20018=* -stmts(#20018,11,#20016,0,"try {\n ... ll;\n }") -#20019=@"loc,{#10000},2,3,6,3" -locations_default(#20019,#10000,2,3,6,3) -hasLocation(#20018,#20019) -stmtContainers(#20018,#20007) -#20020=* -stmts(#20020,1,#20018,0,"{\n await x;\n }") -#20021=@"loc,{#10000},2,7,4,3" -locations_default(#20021,#10000,2,7,4,3) -hasLocation(#20020,#20021) -stmtContainers(#20020,#20007) -#20022=* -stmts(#20022,2,#20020,0,"await x;") -#20023=@"loc,{#10000},3,5,3,12" -locations_default(#20023,#10000,3,5,3,12) -hasLocation(#20022,#20023) -stmtContainers(#20022,#20007) -#20024=* -exprs(#20024,92,#20022,0,"await x") -#20025=@"loc,{#10000},3,5,3,11" -locations_default(#20025,#10000,3,5,3,11) -hasLocation(#20024,#20025) -enclosingStmt(#20024,#20022) -exprContainers(#20024,#20007) -#20026=* -exprs(#20026,79,#20024,0,"x") -#20027=@"loc,{#10000},3,11,3,11" -locations_default(#20027,#10000,3,11,3,11) -hasLocation(#20026,#20027) -enclosingStmt(#20026,#20022) -exprContainers(#20026,#20007) -literals("x","x",#20026) -bind(#20026,#20012) -#20028=* -stmts(#20028,20,#20018,1,"catch ( ... ll;\n }") -#20029=@"loc,{#10000},4,5,6,3" -locations_default(#20029,#10000,4,5,6,3) -hasLocation(#20028,#20029) -stmtContainers(#20028,#20007) -#20030=* -scopes(#20030,2) -scopenodes(#20028,#20030) -scopenesting(#20030,#20011) -#20031=@"var;{e};{#20030}" -variables(#20031,"e",#20030) -#20032=* -exprs(#20032,78,#20028,0,"e") -#20033=@"loc,{#10000},4,12,4,12" -locations_default(#20033,#10000,4,12,4,12) -hasLocation(#20032,#20033) -enclosingStmt(#20032,#20028) -exprContainers(#20032,#20007) -literals("e","e",#20032) -decl(#20032,#20031) -#20034=* -stmts(#20034,1,#20028,1,"{\n r ... ll;\n }") -#20035=@"loc,{#10000},4,15,6,3" -locations_default(#20035,#10000,4,15,6,3) -hasLocation(#20034,#20035) -stmtContainers(#20034,#20007) -#20036=* -stmts(#20036,9,#20034,0,"return null;") -#20037=@"loc,{#10000},5,5,5,16" -locations_default(#20037,#10000,5,5,5,16) -hasLocation(#20036,#20037) -stmtContainers(#20036,#20007) -#20038=* -exprs(#20038,1,#20036,0,"null") -#20039=@"loc,{#10000},5,12,5,15" -locations_default(#20039,#10000,5,12,5,15) -hasLocation(#20038,#20039) -enclosingStmt(#20038,#20036) -exprContainers(#20038,#20007) -literals("null","null",#20038) -numlines(#20007,7,7,0) -#20040=* -stmts(#20040,0,#20001,1,";") -#20041=@"loc,{#10000},7,2,7,2" -locations_default(#20041,#10000,7,2,7,2) -hasLocation(#20040,#20041) -stmtContainers(#20040,#20001) -#20042=* -lines(#20042,#20001,"export async function foo(x) {"," +#20002=* +lines(#20002,#20001,"export async function foo(x) {"," ") -#20043=@"loc,{#10000},1,1,1,30" -locations_default(#20043,#10000,1,1,1,30) +#20003=@"loc,{#10000},1,1,1,30" +locations_default(#20003,#10000,1,1,1,30) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," try {"," +") +#20005=@"loc,{#10000},2,1,2,7" +locations_default(#20005,#10000,2,1,2,7) +hasLocation(#20004,#20005) +indentation(#10000,2," ",2) +#20006=* +lines(#20006,#20001," await x;"," +") +#20007=@"loc,{#10000},3,1,3,12" +locations_default(#20007,#10000,3,1,3,12) +hasLocation(#20006,#20007) +indentation(#10000,3," ",4) +#20008=* +lines(#20008,#20001," } catch (e) {"," +") +#20009=@"loc,{#10000},4,1,4,15" +locations_default(#20009,#10000,4,1,4,15) +hasLocation(#20008,#20009) +indentation(#10000,4," ",2) +#20010=* +lines(#20010,#20001," return null;"," +") +#20011=@"loc,{#10000},5,1,5,16" +locations_default(#20011,#10000,5,1,5,16) +hasLocation(#20010,#20011) +indentation(#10000,5," ",4) +#20012=* +lines(#20012,#20001," }"," +") +#20013=@"loc,{#10000},6,1,6,3" +locations_default(#20013,#10000,6,1,6,3) +hasLocation(#20012,#20013) +indentation(#10000,6," ",2) +#20014=* +lines(#20014,#20001,"};"," +") +#20015=@"loc,{#10000},7,1,7,2" +locations_default(#20015,#10000,7,1,7,2) +hasLocation(#20014,#20015) +numlines(#20001,7,7,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) +#20018=* +tokeninfo(#20018,6,#20001,1,"async") +#20019=@"loc,{#10000},1,8,1,12" +locations_default(#20019,#10000,1,8,1,12) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,7,#20001,2,"function") +#20021=@"loc,{#10000},1,14,1,21" +locations_default(#20021,#10000,1,14,1,21) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,6,#20001,3,"foo") +#20023=@"loc,{#10000},1,23,1,25" +locations_default(#20023,#10000,1,23,1,25) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,4,"(") +#20025=@"loc,{#10000},1,26,1,26" +locations_default(#20025,#10000,1,26,1,26) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,6,#20001,5,"x") +#20027=@"loc,{#10000},1,27,1,27" +locations_default(#20027,#10000,1,27,1,27) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,6,")") +#20029=@"loc,{#10000},1,28,1,28" +locations_default(#20029,#10000,1,28,1,28) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,7,"{") +#20031=@"loc,{#10000},1,30,1,30" +locations_default(#20031,#10000,1,30,1,30) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,7,#20001,8,"try") +#20033=@"loc,{#10000},2,3,2,5" +locations_default(#20033,#10000,2,3,2,5) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,9,"{") +#20035=@"loc,{#10000},2,7,2,7" +locations_default(#20035,#10000,2,7,2,7) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,6,#20001,10,"await") +#20037=@"loc,{#10000},3,5,3,9" +locations_default(#20037,#10000,3,5,3,9) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,6,#20001,11,"x") +#20039=@"loc,{#10000},3,11,3,11" +locations_default(#20039,#10000,3,11,3,11) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,12,";") +#20041=@"loc,{#10000},3,12,3,12" +locations_default(#20041,#10000,3,12,3,12) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,13,"}") +#20043=@"loc,{#10000},4,3,4,3" +locations_default(#20043,#10000,4,3,4,3) hasLocation(#20042,#20043) #20044=* -lines(#20044,#20001," try {"," -") -#20045=@"loc,{#10000},2,1,2,7" -locations_default(#20045,#10000,2,1,2,7) +tokeninfo(#20044,7,#20001,14,"catch") +#20045=@"loc,{#10000},4,5,4,9" +locations_default(#20045,#10000,4,5,4,9) hasLocation(#20044,#20045) -indentation(#10000,2," ",2) #20046=* -lines(#20046,#20001," await x;"," -") -#20047=@"loc,{#10000},3,1,3,12" -locations_default(#20047,#10000,3,1,3,12) +tokeninfo(#20046,8,#20001,15,"(") +#20047=@"loc,{#10000},4,11,4,11" +locations_default(#20047,#10000,4,11,4,11) hasLocation(#20046,#20047) -indentation(#10000,3," ",4) #20048=* -lines(#20048,#20001," } catch (e) {"," -") -#20049=@"loc,{#10000},4,1,4,15" -locations_default(#20049,#10000,4,1,4,15) +tokeninfo(#20048,6,#20001,16,"e") +#20049=@"loc,{#10000},4,12,4,12" +locations_default(#20049,#10000,4,12,4,12) hasLocation(#20048,#20049) -indentation(#10000,4," ",2) #20050=* -lines(#20050,#20001," return null;"," -") -#20051=@"loc,{#10000},5,1,5,16" -locations_default(#20051,#10000,5,1,5,16) +tokeninfo(#20050,8,#20001,17,")") +#20051=@"loc,{#10000},4,13,4,13" +locations_default(#20051,#10000,4,13,4,13) hasLocation(#20050,#20051) -indentation(#10000,5," ",4) #20052=* -lines(#20052,#20001," }"," -") -#20053=@"loc,{#10000},6,1,6,3" -locations_default(#20053,#10000,6,1,6,3) +tokeninfo(#20052,8,#20001,18,"{") +#20053=@"loc,{#10000},4,15,4,15" +locations_default(#20053,#10000,4,15,4,15) hasLocation(#20052,#20053) -indentation(#10000,6," ",2) #20054=* -lines(#20054,#20001,"};"," -") -#20055=@"loc,{#10000},7,1,7,2" -locations_default(#20055,#10000,7,1,7,2) +tokeninfo(#20054,7,#20001,19,"return") +#20055=@"loc,{#10000},5,5,5,10" +locations_default(#20055,#10000,5,5,5,10) hasLocation(#20054,#20055) -numlines(#20001,7,7,0) #20056=* -tokeninfo(#20056,7,#20001,0,"export") -#20057=@"loc,{#10000},1,1,1,6" -locations_default(#20057,#10000,1,1,1,6) +tokeninfo(#20056,1,#20001,20,"null") +#20057=@"loc,{#10000},5,12,5,15" +locations_default(#20057,#10000,5,12,5,15) hasLocation(#20056,#20057) #20058=* -tokeninfo(#20058,6,#20001,1,"async") -#20059=@"loc,{#10000},1,8,1,12" -locations_default(#20059,#10000,1,8,1,12) +tokeninfo(#20058,8,#20001,21,";") +#20059=@"loc,{#10000},5,16,5,16" +locations_default(#20059,#10000,5,16,5,16) hasLocation(#20058,#20059) #20060=* -tokeninfo(#20060,7,#20001,2,"function") -#20061=@"loc,{#10000},1,14,1,21" -locations_default(#20061,#10000,1,14,1,21) +tokeninfo(#20060,8,#20001,22,"}") +#20061=@"loc,{#10000},6,3,6,3" +locations_default(#20061,#10000,6,3,6,3) hasLocation(#20060,#20061) #20062=* -tokeninfo(#20062,6,#20001,3,"foo") -hasLocation(#20062,#20010) -#20063=* -tokeninfo(#20063,8,#20001,4,"(") -#20064=@"loc,{#10000},1,26,1,26" -locations_default(#20064,#10000,1,26,1,26) -hasLocation(#20063,#20064) -#20065=* -tokeninfo(#20065,6,#20001,5,"x") -hasLocation(#20065,#20014) +tokeninfo(#20062,8,#20001,23,"}") +#20063=@"loc,{#10000},7,1,7,1" +locations_default(#20063,#10000,7,1,7,1) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,8,#20001,24,";") +#20065=@"loc,{#10000},7,2,7,2" +locations_default(#20065,#10000,7,2,7,2) +hasLocation(#20064,#20065) #20066=* -tokeninfo(#20066,8,#20001,6,")") -#20067=@"loc,{#10000},1,28,1,28" -locations_default(#20067,#10000,1,28,1,28) +tokeninfo(#20066,0,#20001,25,"") +#20067=@"loc,{#10000},8,1,8,0" +locations_default(#20067,#10000,8,1,8,0) hasLocation(#20066,#20067) -#20068=* -tokeninfo(#20068,8,#20001,7,"{") -#20069=@"loc,{#10000},1,30,1,30" -locations_default(#20069,#10000,1,30,1,30) -hasLocation(#20068,#20069) -#20070=* -tokeninfo(#20070,7,#20001,8,"try") -#20071=@"loc,{#10000},2,3,2,5" -locations_default(#20071,#10000,2,3,2,5) -hasLocation(#20070,#20071) -#20072=* -tokeninfo(#20072,8,#20001,9,"{") -#20073=@"loc,{#10000},2,7,2,7" -locations_default(#20073,#10000,2,7,2,7) -hasLocation(#20072,#20073) -#20074=* -tokeninfo(#20074,6,#20001,10,"await") -#20075=@"loc,{#10000},3,5,3,9" -locations_default(#20075,#10000,3,5,3,9) -hasLocation(#20074,#20075) +toplevels(#20001,0) +#20068=@"loc,{#10000},1,1,8,0" +locations_default(#20068,#10000,1,1,8,0) +hasLocation(#20001,#20068) +#20069=@"module;{#10000},1,1" +scopes(#20069,3) +scopenodes(#20001,#20069) +scopenesting(#20069,#20000) +isModule(#20001) +isES2015Module(#20001) +#20070=@"var;{foo};{#20069}" +variables(#20070,"foo",#20069) +#20071=* +stmts(#20071,30,#20001,0,"export ... ;\n }\n}") +#20072=@"loc,{#10000},1,1,7,1" +locations_default(#20072,#10000,1,1,7,1) +hasLocation(#20071,#20072) +stmtContainers(#20071,#20001) +#20073=* +stmts(#20073,17,#20071,-1,"async f ... ;\n }\n}") +#20074=@"loc,{#10000},1,8,7,1" +locations_default(#20074,#10000,1,8,7,1) +hasLocation(#20073,#20074) +stmtContainers(#20073,#20001) +#20075=* +exprs(#20075,78,#20073,-1,"foo") +hasLocation(#20075,#20023) +exprContainers(#20075,#20073) +literals("foo","foo",#20075) +decl(#20075,#20070) #20076=* -tokeninfo(#20076,6,#20001,11,"x") -hasLocation(#20076,#20027) -#20077=* -tokeninfo(#20077,8,#20001,12,";") -#20078=@"loc,{#10000},3,12,3,12" -locations_default(#20078,#10000,3,12,3,12) -hasLocation(#20077,#20078) -#20079=* -tokeninfo(#20079,8,#20001,13,"}") -#20080=@"loc,{#10000},4,3,4,3" -locations_default(#20080,#10000,4,3,4,3) -hasLocation(#20079,#20080) -#20081=* -tokeninfo(#20081,7,#20001,14,"catch") -#20082=@"loc,{#10000},4,5,4,9" -locations_default(#20082,#10000,4,5,4,9) -hasLocation(#20081,#20082) -#20083=* -tokeninfo(#20083,8,#20001,15,"(") -#20084=@"loc,{#10000},4,11,4,11" -locations_default(#20084,#10000,4,11,4,11) -hasLocation(#20083,#20084) -#20085=* -tokeninfo(#20085,6,#20001,16,"e") -hasLocation(#20085,#20033) +scopes(#20076,1) +scopenodes(#20073,#20076) +scopenesting(#20076,#20069) +#20077=@"var;{x};{#20076}" +variables(#20077,"x",#20076) +#20078=* +exprs(#20078,78,#20073,0,"x") +hasLocation(#20078,#20027) +exprContainers(#20078,#20073) +literals("x","x",#20078) +decl(#20078,#20077) +#20079=@"var;{arguments};{#20076}" +variables(#20079,"arguments",#20076) +isArgumentsObject(#20079) +isAsync(#20073) +#20080=* +stmts(#20080,1,#20073,-2,"{\n try ... ;\n }\n}") +#20081=@"loc,{#10000},1,30,7,1" +locations_default(#20081,#10000,1,30,7,1) +hasLocation(#20080,#20081) +stmtContainers(#20080,#20073) +#20082=* +stmts(#20082,11,#20080,0,"try {\n ... ll;\n }") +#20083=@"loc,{#10000},2,3,6,3" +locations_default(#20083,#10000,2,3,6,3) +hasLocation(#20082,#20083) +stmtContainers(#20082,#20073) +#20084=* +stmts(#20084,1,#20082,0,"{\n await x;\n }") +#20085=@"loc,{#10000},2,7,4,3" +locations_default(#20085,#10000,2,7,4,3) +hasLocation(#20084,#20085) +stmtContainers(#20084,#20073) #20086=* -tokeninfo(#20086,8,#20001,17,")") -#20087=@"loc,{#10000},4,13,4,13" -locations_default(#20087,#10000,4,13,4,13) +stmts(#20086,2,#20084,0,"await x;") +#20087=@"loc,{#10000},3,5,3,12" +locations_default(#20087,#10000,3,5,3,12) hasLocation(#20086,#20087) +stmtContainers(#20086,#20073) #20088=* -tokeninfo(#20088,8,#20001,18,"{") -#20089=@"loc,{#10000},4,15,4,15" -locations_default(#20089,#10000,4,15,4,15) +exprs(#20088,92,#20086,0,"await x") +#20089=@"loc,{#10000},3,5,3,11" +locations_default(#20089,#10000,3,5,3,11) hasLocation(#20088,#20089) +enclosingStmt(#20088,#20086) +exprContainers(#20088,#20073) #20090=* -tokeninfo(#20090,7,#20001,19,"return") -#20091=@"loc,{#10000},5,5,5,10" -locations_default(#20091,#10000,5,5,5,10) -hasLocation(#20090,#20091) -#20092=* -tokeninfo(#20092,1,#20001,20,"null") -hasLocation(#20092,#20039) +exprs(#20090,79,#20088,0,"x") +hasLocation(#20090,#20039) +enclosingStmt(#20090,#20086) +exprContainers(#20090,#20073) +literals("x","x",#20090) +bind(#20090,#20077) +#20091=* +stmts(#20091,20,#20082,1,"catch ( ... ll;\n }") +#20092=@"loc,{#10000},4,5,6,3" +locations_default(#20092,#10000,4,5,6,3) +hasLocation(#20091,#20092) +stmtContainers(#20091,#20073) #20093=* -tokeninfo(#20093,8,#20001,21,";") -#20094=@"loc,{#10000},5,16,5,16" -locations_default(#20094,#10000,5,16,5,16) -hasLocation(#20093,#20094) +scopes(#20093,2) +scopenodes(#20091,#20093) +scopenesting(#20093,#20076) +#20094=@"var;{e};{#20093}" +variables(#20094,"e",#20093) #20095=* -tokeninfo(#20095,8,#20001,22,"}") -#20096=@"loc,{#10000},6,3,6,3" -locations_default(#20096,#10000,6,3,6,3) -hasLocation(#20095,#20096) -#20097=* -tokeninfo(#20097,8,#20001,23,"}") -#20098=@"loc,{#10000},7,1,7,1" -locations_default(#20098,#10000,7,1,7,1) -hasLocation(#20097,#20098) -#20099=* -tokeninfo(#20099,8,#20001,24,";") -hasLocation(#20099,#20041) +exprs(#20095,78,#20091,0,"e") +hasLocation(#20095,#20049) +enclosingStmt(#20095,#20091) +exprContainers(#20095,#20073) +literals("e","e",#20095) +decl(#20095,#20094) +#20096=* +stmts(#20096,1,#20091,1,"{\n r ... ll;\n }") +#20097=@"loc,{#10000},4,15,6,3" +locations_default(#20097,#10000,4,15,6,3) +hasLocation(#20096,#20097) +stmtContainers(#20096,#20073) +#20098=* +stmts(#20098,9,#20096,0,"return null;") +#20099=@"loc,{#10000},5,5,5,16" +locations_default(#20099,#10000,5,5,5,16) +hasLocation(#20098,#20099) +stmtContainers(#20098,#20073) #20100=* -tokeninfo(#20100,0,#20001,25,"") -#20101=@"loc,{#10000},8,1,8,0" -locations_default(#20101,#10000,8,1,8,0) -hasLocation(#20100,#20101) +exprs(#20100,1,#20098,0,"null") +hasLocation(#20100,#20057) +enclosingStmt(#20100,#20098) +exprContainers(#20100,#20073) +literals("null","null",#20100) +#20101=* +stmts(#20101,0,#20001,1,";") +hasLocation(#20101,#20065) +stmtContainers(#20101,#20001) #20102=* entry_cfg_node(#20102,#20001) #20103=@"loc,{#10000},1,1,1,0" @@ -319,35 +319,35 @@ locations_default(#20103,#10000,1,1,1,0) hasLocation(#20102,#20103) #20104=* exit_cfg_node(#20104,#20001) -hasLocation(#20104,#20101) -successor(#20040,#20104) -successor(#20005,#20007) -successor(#20007,#20040) +hasLocation(#20104,#20067) +successor(#20101,#20104) +successor(#20071,#20073) +successor(#20073,#20101) #20105=* -entry_cfg_node(#20105,#20007) +entry_cfg_node(#20105,#20073) #20106=@"loc,{#10000},1,8,1,7" locations_default(#20106,#10000,1,8,1,7) hasLocation(#20105,#20106) #20107=* -exit_cfg_node(#20107,#20007) +exit_cfg_node(#20107,#20073) #20108=@"loc,{#10000},7,2,7,1" locations_default(#20108,#10000,7,2,7,1) hasLocation(#20107,#20108) -successor(#20016,#20018) -successor(#20018,#20020) -successor(#20020,#20022) -successor(#20022,#20026) -successor(#20026,#20024) -successor(#20024,#20028) -successor(#20024,#20107) -successor(#20028,#20032) -successor(#20034,#20038) -successor(#20038,#20036) -successor(#20036,#20107) -successor(#20032,#20034) -successor(#20013,#20016) -successor(#20105,#20013) -successor(#20009,#20005) -successor(#20102,#20009) +successor(#20080,#20082) +successor(#20082,#20084) +successor(#20084,#20086) +successor(#20086,#20090) +successor(#20090,#20088) +successor(#20088,#20091) +successor(#20088,#20107) +successor(#20091,#20095) +successor(#20096,#20100) +successor(#20100,#20098) +successor(#20098,#20107) +successor(#20095,#20096) +successor(#20078,#20080) +successor(#20105,#20078) +successor(#20075,#20071) +successor(#20102,#20075) numlines(#10000,7,7,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2017/output/trap/export-async-1.js.trap b/javascript/extractor/tests/es2017/output/trap/export-async-1.js.trap index dd9fae620e2..89d065a8b85 100644 --- a/javascript/extractor/tests/es2017/output/trap/export-async-1.js.trap +++ b/javascript/extractor/tests/es2017/output/trap/export-async-1.js.trap @@ -9,116 +9,116 @@ 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,36" -locations_default(#20006,#10000,1,1,1,36) -hasLocation(#20005,#20006) -stmtContainers(#20005,#20001) -#20007=* -stmts(#20007,17,#20005,0,"async f ... f() {}") -#20008=@"loc,{#10000},1,16,1,36" -locations_default(#20008,#10000,1,16,1,36) -hasLocation(#20007,#20008) -stmtContainers(#20007,#20001) -#20009=* -exprs(#20009,78,#20007,-1,"f") -#20010=@"loc,{#10000},1,31,1,31" -locations_default(#20010,#10000,1,31,1,31) -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) -isAsync(#20007) -#20013=* -stmts(#20013,1,#20007,-2,"{}") -#20014=@"loc,{#10000},1,35,1,36" -locations_default(#20014,#10000,1,35,1,36) -hasLocation(#20013,#20014) -stmtContainers(#20013,#20007) -numlines(#20007,1,1,0) -#20015=* -stmts(#20015,0,#20001,1,";") -#20016=@"loc,{#10000},1,37,1,37" -locations_default(#20016,#10000,1,37,1,37) -hasLocation(#20015,#20016) -stmtContainers(#20015,#20001) -#20017=* -lines(#20017,#20001,"export default async function f() {};"," +#20002=* +lines(#20002,#20001,"export default async function f() {};"," ") -#20018=@"loc,{#10000},1,1,1,37" -locations_default(#20018,#10000,1,1,1,37) -hasLocation(#20017,#20018) +#20003=@"loc,{#10000},1,1,1,37" +locations_default(#20003,#10000,1,1,1,37) +hasLocation(#20002,#20003) numlines(#20001,1,1,0) -#20019=* -tokeninfo(#20019,7,#20001,0,"export") -#20020=@"loc,{#10000},1,1,1,6" -locations_default(#20020,#10000,1,1,1,6) -hasLocation(#20019,#20020) -#20021=* -tokeninfo(#20021,7,#20001,1,"default") -#20022=@"loc,{#10000},1,8,1,14" -locations_default(#20022,#10000,1,8,1,14) -hasLocation(#20021,#20022) -#20023=* -tokeninfo(#20023,6,#20001,2,"async") -#20024=@"loc,{#10000},1,16,1,20" -locations_default(#20024,#10000,1,16,1,20) -hasLocation(#20023,#20024) -#20025=* -tokeninfo(#20025,7,#20001,3,"function") -#20026=@"loc,{#10000},1,22,1,29" -locations_default(#20026,#10000,1,22,1,29) -hasLocation(#20025,#20026) -#20027=* -tokeninfo(#20027,6,#20001,4,"f") -hasLocation(#20027,#20010) -#20028=* -tokeninfo(#20028,8,#20001,5,"(") -#20029=@"loc,{#10000},1,32,1,32" -locations_default(#20029,#10000,1,32,1,32) -hasLocation(#20028,#20029) -#20030=* -tokeninfo(#20030,8,#20001,6,")") -#20031=@"loc,{#10000},1,33,1,33" -locations_default(#20031,#10000,1,33,1,33) -hasLocation(#20030,#20031) -#20032=* -tokeninfo(#20032,8,#20001,7,"{") -#20033=@"loc,{#10000},1,35,1,35" -locations_default(#20033,#10000,1,35,1,35) -hasLocation(#20032,#20033) +#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,6,#20001,2,"async") +#20009=@"loc,{#10000},1,16,1,20" +locations_default(#20009,#10000,1,16,1,20) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,7,#20001,3,"function") +#20011=@"loc,{#10000},1,22,1,29" +locations_default(#20011,#10000,1,22,1,29) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,6,#20001,4,"f") +#20013=@"loc,{#10000},1,31,1,31" +locations_default(#20013,#10000,1,31,1,31) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,5,"(") +#20015=@"loc,{#10000},1,32,1,32" +locations_default(#20015,#10000,1,32,1,32) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,6,")") +#20017=@"loc,{#10000},1,33,1,33" +locations_default(#20017,#10000,1,33,1,33) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,7,"{") +#20019=@"loc,{#10000},1,35,1,35" +locations_default(#20019,#10000,1,35,1,35) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,8,"}") +#20021=@"loc,{#10000},1,36,1,36" +locations_default(#20021,#10000,1,36,1,36) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,9,";") +#20023=@"loc,{#10000},1,37,1,37" +locations_default(#20023,#10000,1,37,1,37) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,0,#20001,10,"") +#20025=@"loc,{#10000},2,1,2,0" +locations_default(#20025,#10000,2,1,2,0) +hasLocation(#20024,#20025) +toplevels(#20001,0) +#20026=@"loc,{#10000},1,1,2,0" +locations_default(#20026,#10000,1,1,2,0) +hasLocation(#20001,#20026) +#20027=@"module;{#10000},1,1" +scopes(#20027,3) +scopenodes(#20001,#20027) +scopenesting(#20027,#20000) +isModule(#20001) +isES2015Module(#20001) +#20028=@"var;{f};{#20027}" +variables(#20028,"f",#20027) +#20029=* +stmts(#20029,29,#20001,0,"export ... f() {}") +#20030=@"loc,{#10000},1,1,1,36" +locations_default(#20030,#10000,1,1,1,36) +hasLocation(#20029,#20030) +stmtContainers(#20029,#20001) +#20031=* +stmts(#20031,17,#20029,0,"async f ... f() {}") +#20032=@"loc,{#10000},1,16,1,36" +locations_default(#20032,#10000,1,16,1,36) +hasLocation(#20031,#20032) +stmtContainers(#20031,#20001) +#20033=* +exprs(#20033,78,#20031,-1,"f") +hasLocation(#20033,#20013) +exprContainers(#20033,#20031) +literals("f","f",#20033) +decl(#20033,#20028) #20034=* -tokeninfo(#20034,8,#20001,8,"}") -#20035=@"loc,{#10000},1,36,1,36" -locations_default(#20035,#10000,1,36,1,36) -hasLocation(#20034,#20035) +scopes(#20034,1) +scopenodes(#20031,#20034) +scopenesting(#20034,#20027) +#20035=@"var;{arguments};{#20034}" +variables(#20035,"arguments",#20034) +isArgumentsObject(#20035) +isAsync(#20031) #20036=* -tokeninfo(#20036,8,#20001,9,";") -hasLocation(#20036,#20016) -#20037=* -tokeninfo(#20037,0,#20001,10,"") -#20038=@"loc,{#10000},2,1,2,0" -locations_default(#20038,#10000,2,1,2,0) -hasLocation(#20037,#20038) +stmts(#20036,1,#20031,-2,"{}") +#20037=@"loc,{#10000},1,35,1,36" +locations_default(#20037,#10000,1,35,1,36) +hasLocation(#20036,#20037) +stmtContainers(#20036,#20031) +#20038=* +stmts(#20038,0,#20001,1,";") +hasLocation(#20038,#20023) +stmtContainers(#20038,#20001) #20039=* entry_cfg_node(#20039,#20001) #20040=@"loc,{#10000},1,1,1,0" @@ -126,23 +126,23 @@ locations_default(#20040,#10000,1,1,1,0) hasLocation(#20039,#20040) #20041=* exit_cfg_node(#20041,#20001) -hasLocation(#20041,#20038) -successor(#20015,#20041) -successor(#20005,#20007) -successor(#20007,#20015) +hasLocation(#20041,#20025) +successor(#20038,#20041) +successor(#20029,#20031) +successor(#20031,#20038) #20042=* -entry_cfg_node(#20042,#20007) +entry_cfg_node(#20042,#20031) #20043=@"loc,{#10000},1,16,1,15" locations_default(#20043,#10000,1,16,1,15) hasLocation(#20042,#20043) #20044=* -exit_cfg_node(#20044,#20007) +exit_cfg_node(#20044,#20031) #20045=@"loc,{#10000},1,37,1,36" locations_default(#20045,#10000,1,37,1,36) hasLocation(#20044,#20045) -successor(#20013,#20044) -successor(#20042,#20013) -successor(#20009,#20005) -successor(#20039,#20009) +successor(#20036,#20044) +successor(#20042,#20036) +successor(#20033,#20029) +successor(#20039,#20033) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2017/output/trap/export-async-2.js.trap b/javascript/extractor/tests/es2017/output/trap/export-async-2.js.trap index cc3d7af00ad..651e897f0ae 100644 --- a/javascript/extractor/tests/es2017/output/trap/export-async-2.js.trap +++ b/javascript/extractor/tests/es2017/output/trap/export-async-2.js.trap @@ -9,104 +9,104 @@ 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=* -stmts(#20004,29,#20001,0,"export ... n () {}") -#20005=@"loc,{#10000},1,1,1,35" -locations_default(#20005,#10000,1,1,1,35) -hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) -#20006=* -exprs(#20006,9,#20004,0,"async function () {}") -#20007=@"loc,{#10000},1,16,1,35" -locations_default(#20007,#10000,1,16,1,35) -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) -isAsync(#20006) -#20010=* -stmts(#20010,1,#20006,-2,"{}") -#20011=@"loc,{#10000},1,34,1,35" -locations_default(#20011,#10000,1,34,1,35) -hasLocation(#20010,#20011) -stmtContainers(#20010,#20006) -numlines(#20006,1,1,0) -#20012=* -stmts(#20012,0,#20001,1,";") -#20013=@"loc,{#10000},1,36,1,36" -locations_default(#20013,#10000,1,36,1,36) -hasLocation(#20012,#20013) -stmtContainers(#20012,#20001) -#20014=* -lines(#20014,#20001,"export default async function () {};"," +#20002=* +lines(#20002,#20001,"export default async function () {};"," ") -#20015=@"loc,{#10000},1,1,1,36" -locations_default(#20015,#10000,1,1,1,36) -hasLocation(#20014,#20015) +#20003=@"loc,{#10000},1,1,1,36" +locations_default(#20003,#10000,1,1,1,36) +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,6,#20001,2,"async") +#20009=@"loc,{#10000},1,16,1,20" +locations_default(#20009,#10000,1,16,1,20) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,7,#20001,3,"function") +#20011=@"loc,{#10000},1,22,1,29" +locations_default(#20011,#10000,1,22,1,29) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,8,#20001,4,"(") +#20013=@"loc,{#10000},1,31,1,31" +locations_default(#20013,#10000,1,31,1,31) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,5,")") +#20015=@"loc,{#10000},1,32,1,32" +locations_default(#20015,#10000,1,32,1,32) +hasLocation(#20014,#20015) #20016=* -tokeninfo(#20016,7,#20001,0,"export") -#20017=@"loc,{#10000},1,1,1,6" -locations_default(#20017,#10000,1,1,1,6) +tokeninfo(#20016,8,#20001,6,"{") +#20017=@"loc,{#10000},1,34,1,34" +locations_default(#20017,#10000,1,34,1,34) hasLocation(#20016,#20017) #20018=* -tokeninfo(#20018,7,#20001,1,"default") -#20019=@"loc,{#10000},1,8,1,14" -locations_default(#20019,#10000,1,8,1,14) +tokeninfo(#20018,8,#20001,7,"}") +#20019=@"loc,{#10000},1,35,1,35" +locations_default(#20019,#10000,1,35,1,35) hasLocation(#20018,#20019) #20020=* -tokeninfo(#20020,6,#20001,2,"async") -#20021=@"loc,{#10000},1,16,1,20" -locations_default(#20021,#10000,1,16,1,20) +tokeninfo(#20020,8,#20001,8,";") +#20021=@"loc,{#10000},1,36,1,36" +locations_default(#20021,#10000,1,36,1,36) hasLocation(#20020,#20021) #20022=* -tokeninfo(#20022,7,#20001,3,"function") -#20023=@"loc,{#10000},1,22,1,29" -locations_default(#20023,#10000,1,22,1,29) +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,8,#20001,4,"(") -#20025=@"loc,{#10000},1,31,1,31" -locations_default(#20025,#10000,1,31,1,31) -hasLocation(#20024,#20025) +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) +isES2015Module(#20001) #20026=* -tokeninfo(#20026,8,#20001,5,")") -#20027=@"loc,{#10000},1,32,1,32" -locations_default(#20027,#10000,1,32,1,32) +stmts(#20026,29,#20001,0,"export ... n () {}") +#20027=@"loc,{#10000},1,1,1,35" +locations_default(#20027,#10000,1,1,1,35) hasLocation(#20026,#20027) +stmtContainers(#20026,#20001) #20028=* -tokeninfo(#20028,8,#20001,6,"{") -#20029=@"loc,{#10000},1,34,1,34" -locations_default(#20029,#10000,1,34,1,34) +exprs(#20028,9,#20026,0,"async function () {}") +#20029=@"loc,{#10000},1,16,1,35" +locations_default(#20029,#10000,1,16,1,35) hasLocation(#20028,#20029) +enclosingStmt(#20028,#20026) +exprContainers(#20028,#20001) #20030=* -tokeninfo(#20030,8,#20001,7,"}") -#20031=@"loc,{#10000},1,35,1,35" -locations_default(#20031,#10000,1,35,1,35) -hasLocation(#20030,#20031) +scopes(#20030,1) +scopenodes(#20028,#20030) +scopenesting(#20030,#20025) +#20031=@"var;{arguments};{#20030}" +variables(#20031,"arguments",#20030) +isArgumentsObject(#20031) +isAsync(#20028) #20032=* -tokeninfo(#20032,8,#20001,8,";") -hasLocation(#20032,#20013) -#20033=* -tokeninfo(#20033,0,#20001,9,"") -#20034=@"loc,{#10000},2,1,2,0" -locations_default(#20034,#10000,2,1,2,0) -hasLocation(#20033,#20034) +stmts(#20032,1,#20028,-2,"{}") +#20033=@"loc,{#10000},1,34,1,35" +locations_default(#20033,#10000,1,34,1,35) +hasLocation(#20032,#20033) +stmtContainers(#20032,#20028) +#20034=* +stmts(#20034,0,#20001,1,";") +hasLocation(#20034,#20021) +stmtContainers(#20034,#20001) #20035=* entry_cfg_node(#20035,#20001) #20036=@"loc,{#10000},1,1,1,0" @@ -114,22 +114,22 @@ locations_default(#20036,#10000,1,1,1,0) hasLocation(#20035,#20036) #20037=* exit_cfg_node(#20037,#20001) -hasLocation(#20037,#20034) -successor(#20012,#20037) -successor(#20004,#20006) -successor(#20006,#20012) +hasLocation(#20037,#20023) +successor(#20034,#20037) +successor(#20026,#20028) +successor(#20028,#20034) #20038=* -entry_cfg_node(#20038,#20006) +entry_cfg_node(#20038,#20028) #20039=@"loc,{#10000},1,16,1,15" locations_default(#20039,#10000,1,16,1,15) hasLocation(#20038,#20039) #20040=* -exit_cfg_node(#20040,#20006) +exit_cfg_node(#20040,#20028) #20041=@"loc,{#10000},1,36,1,35" locations_default(#20041,#10000,1,36,1,35) hasLocation(#20040,#20041) -successor(#20010,#20040) -successor(#20038,#20010) -successor(#20035,#20004) +successor(#20032,#20040) +successor(#20038,#20032) +successor(#20035,#20026) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2017/output/trap/invalid-async-fn.js.trap b/javascript/extractor/tests/es2017/output/trap/invalid-async-fn.js.trap index 7b7b6079233..3287759506c 100644 --- a/javascript/extractor/tests/es2017/output/trap/invalid-async-fn.js.trap +++ b/javascript/extractor/tests/es2017/output/trap/invalid-async-fn.js.trap @@ -9,114 +9,113 @@ 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,"f = async ((x)) => x") -hasLocation(#20003,#20002) -stmtContainers(#20003,#20001) -#20004=* -exprs(#20004,47,#20003,0,"f = async ((x)) => x") -hasLocation(#20004,#20002) -enclosingStmt(#20004,#20003) -exprContainers(#20004,#20001) -#20005=* -exprs(#20005,79,#20004,0,"f") -#20006=@"loc,{#10000},1,1,1,1" -locations_default(#20006,#10000,1,1,1,1) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -literals("f","f",#20005) -#20007=@"var;{f};{#20000}" -variables(#20007,"f",#20000) -bind(#20005,#20007) -#20008=* -exprs(#20008,65,#20004,1,"async ((x)) => x") -#20009=@"loc,{#10000},1,5,1,20" -locations_default(#20009,#10000,1,5,1,20) -hasLocation(#20008,#20009) -enclosingStmt(#20008,#20003) -exprContainers(#20008,#20001) -#20010=* -scopes(#20010,1) -scopenodes(#20008,#20010) -scopenesting(#20010,#20000) -#20011=@"var;{x};{#20010}" -variables(#20011,"x",#20010) -#20012=* -exprs(#20012,78,#20008,0,"x") -#20013=@"loc,{#10000},1,13,1,13" -locations_default(#20013,#10000,1,13,1,13) -hasLocation(#20012,#20013) -exprContainers(#20012,#20008) -literals("x","x",#20012) -decl(#20012,#20011) -isAsync(#20008) -#20014=* -exprs(#20014,79,#20008,-2,"x") -#20015=@"loc,{#10000},1,20,1,20" -locations_default(#20015,#10000,1,20,1,20) -hasLocation(#20014,#20015) -exprContainers(#20014,#20008) -literals("x","x",#20014) -bind(#20014,#20011) -numlines(#20008,1,1,0) -#20016=* -lines(#20016,#20001,"f = async ((x)) => x","") -hasLocation(#20016,#20002) +#20002=* +lines(#20002,#20001,"f = async ((x)) => x","") +#20003=@"loc,{#10000},1,1,1,20" +locations_default(#20003,#10000,1,1,1,20) +hasLocation(#20002,#20003) numlines(#20001,1,1,0) -#20017=* -tokeninfo(#20017,6,#20001,0,"f") -hasLocation(#20017,#20006) +#20004=* +tokeninfo(#20004,6,#20001,0,"f") +#20005=@"loc,{#10000},1,1,1,1" +locations_default(#20005,#10000,1,1,1,1) +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,"async") +#20009=@"loc,{#10000},1,5,1,9" +locations_default(#20009,#10000,1,5,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,8,#20001,4,"(") +#20013=@"loc,{#10000},1,12,1,12" +locations_default(#20013,#10000,1,12,1,12) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,6,#20001,5,"x") +#20015=@"loc,{#10000},1,13,1,13" +locations_default(#20015,#10000,1,13,1,13) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,6,")") +#20017=@"loc,{#10000},1,14,1,14" +locations_default(#20017,#10000,1,14,1,14) +hasLocation(#20016,#20017) #20018=* -tokeninfo(#20018,8,#20001,1,"=") -#20019=@"loc,{#10000},1,3,1,3" -locations_default(#20019,#10000,1,3,1,3) +tokeninfo(#20018,8,#20001,7,")") +#20019=@"loc,{#10000},1,15,1,15" +locations_default(#20019,#10000,1,15,1,15) hasLocation(#20018,#20019) #20020=* -tokeninfo(#20020,6,#20001,2,"async") -#20021=@"loc,{#10000},1,5,1,9" -locations_default(#20021,#10000,1,5,1,9) +tokeninfo(#20020,8,#20001,8,"=>") +#20021=@"loc,{#10000},1,17,1,18" +locations_default(#20021,#10000,1,17,1,18) hasLocation(#20020,#20021) #20022=* -tokeninfo(#20022,8,#20001,3,"(") -#20023=@"loc,{#10000},1,11,1,11" -locations_default(#20023,#10000,1,11,1,11) +tokeninfo(#20022,6,#20001,9,"x") +#20023=@"loc,{#10000},1,20,1,20" +locations_default(#20023,#10000,1,20,1,20) hasLocation(#20022,#20023) #20024=* -tokeninfo(#20024,8,#20001,4,"(") -#20025=@"loc,{#10000},1,12,1,12" -locations_default(#20025,#10000,1,12,1,12) +tokeninfo(#20024,0,#20001,10,"") +#20025=@"loc,{#10000},1,21,1,20" +locations_default(#20025,#10000,1,21,1,20) hasLocation(#20024,#20025) +toplevels(#20001,0) +hasLocation(#20001,#20003) #20026=* -tokeninfo(#20026,6,#20001,5,"x") -hasLocation(#20026,#20013) +stmts(#20026,2,#20001,0,"f = async ((x)) => x") +hasLocation(#20026,#20003) +stmtContainers(#20026,#20001) #20027=* -tokeninfo(#20027,8,#20001,6,")") -#20028=@"loc,{#10000},1,14,1,14" -locations_default(#20028,#10000,1,14,1,14) -hasLocation(#20027,#20028) -#20029=* -tokeninfo(#20029,8,#20001,7,")") -#20030=@"loc,{#10000},1,15,1,15" -locations_default(#20030,#10000,1,15,1,15) -hasLocation(#20029,#20030) -#20031=* -tokeninfo(#20031,8,#20001,8,"=>") -#20032=@"loc,{#10000},1,17,1,18" -locations_default(#20032,#10000,1,17,1,18) -hasLocation(#20031,#20032) -#20033=* -tokeninfo(#20033,6,#20001,9,"x") -hasLocation(#20033,#20015) +exprs(#20027,47,#20026,0,"f = async ((x)) => x") +hasLocation(#20027,#20003) +enclosingStmt(#20027,#20026) +exprContainers(#20027,#20001) +#20028=* +exprs(#20028,79,#20027,0,"f") +hasLocation(#20028,#20005) +enclosingStmt(#20028,#20026) +exprContainers(#20028,#20001) +literals("f","f",#20028) +#20029=@"var;{f};{#20000}" +variables(#20029,"f",#20000) +bind(#20028,#20029) +#20030=* +exprs(#20030,65,#20027,1,"async ((x)) => x") +#20031=@"loc,{#10000},1,5,1,20" +locations_default(#20031,#10000,1,5,1,20) +hasLocation(#20030,#20031) +enclosingStmt(#20030,#20026) +exprContainers(#20030,#20001) +#20032=* +scopes(#20032,1) +scopenodes(#20030,#20032) +scopenesting(#20032,#20000) +#20033=@"var;{x};{#20032}" +variables(#20033,"x",#20032) #20034=* -tokeninfo(#20034,0,#20001,10,"") -#20035=@"loc,{#10000},1,21,1,20" -locations_default(#20035,#10000,1,21,1,20) -hasLocation(#20034,#20035) +exprs(#20034,78,#20030,0,"x") +hasLocation(#20034,#20015) +exprContainers(#20034,#20030) +literals("x","x",#20034) +decl(#20034,#20033) +isAsync(#20030) +#20035=* +exprs(#20035,79,#20030,-2,"x") +hasLocation(#20035,#20023) +exprContainers(#20035,#20030) +literals("x","x",#20035) +bind(#20035,#20033) #20036=* entry_cfg_node(#20036,#20001) #20037=@"loc,{#10000},1,1,1,0" @@ -124,22 +123,22 @@ locations_default(#20037,#10000,1,1,1,0) hasLocation(#20036,#20037) #20038=* exit_cfg_node(#20038,#20001) -hasLocation(#20038,#20035) -successor(#20003,#20005) -successor(#20008,#20004) +hasLocation(#20038,#20025) +successor(#20026,#20028) +successor(#20030,#20027) #20039=* -entry_cfg_node(#20039,#20008) +entry_cfg_node(#20039,#20030) #20040=@"loc,{#10000},1,5,1,4" locations_default(#20040,#10000,1,5,1,4) hasLocation(#20039,#20040) #20041=* -exit_cfg_node(#20041,#20008) -hasLocation(#20041,#20035) -successor(#20014,#20041) -successor(#20012,#20014) -successor(#20039,#20012) -successor(#20005,#20008) -successor(#20004,#20038) -successor(#20036,#20003) +exit_cfg_node(#20041,#20030) +hasLocation(#20041,#20025) +successor(#20035,#20041) +successor(#20034,#20035) +successor(#20039,#20034) +successor(#20028,#20030) +successor(#20027,#20038) +successor(#20036,#20026) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2017/output/trap/shorthand-prop-async.js.trap b/javascript/extractor/tests/es2017/output/trap/shorthand-prop-async.js.trap index ca7d5b51006..062544cfa75 100644 --- a/javascript/extractor/tests/es2017/output/trap/shorthand-prop-async.js.trap +++ b/javascript/extractor/tests/es2017/output/trap/shorthand-prop-async.js.trap @@ -9,88 +9,88 @@ 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,"({ async });") -#20004=@"loc,{#10000},1,1,1,12" -locations_default(#20004,#10000,1,1,1,12) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,63,#20003,0,"({ async })") -#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,8,#20005,0,"{ async }") -#20008=@"loc,{#10000},1,2,1,10" -locations_default(#20008,#10000,1,2,1,10) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20003) -exprContainers(#20007,#20001) -#20009=* -properties(#20009,#20007,0,0,"async") -#20010=@"loc,{#10000},1,4,1,8" -locations_default(#20010,#10000,1,4,1,8) -hasLocation(#20009,#20010) -#20011=* -exprs(#20011,0,#20009,0,"async") -hasLocation(#20011,#20010) -enclosingStmt(#20011,#20003) -exprContainers(#20011,#20001) -literals("async","async",#20011) -#20012=* -exprs(#20012,79,#20009,1,"async") -hasLocation(#20012,#20010) -enclosingStmt(#20012,#20003) -exprContainers(#20012,#20001) -literals("async","async",#20012) -#20013=@"var;{async};{#20000}" -variables(#20013,"async",#20000) -bind(#20012,#20013) -#20014=* -lines(#20014,#20001,"({ async });"," +#20002=* +lines(#20002,#20001,"({ async });"," ") -hasLocation(#20014,#20004) +#20003=@"loc,{#10000},1,1,1,12" +locations_default(#20003,#10000,1,1,1,12) +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) -#20017=* -tokeninfo(#20017,8,#20001,1,"{") -#20018=@"loc,{#10000},1,2,1,2" -locations_default(#20018,#10000,1,2,1,2) -hasLocation(#20017,#20018) +#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,8,#20001,1,"{") +#20007=@"loc,{#10000},1,2,1,2" +locations_default(#20007,#10000,1,2,1,2) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,6,#20001,2,"async") +#20009=@"loc,{#10000},1,4,1,8" +locations_default(#20009,#10000,1,4,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},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=* -tokeninfo(#20019,6,#20001,2,"async") -hasLocation(#20019,#20010) +stmts(#20019,2,#20001,0,"({ async });") +hasLocation(#20019,#20003) +stmtContainers(#20019,#20001) #20020=* -tokeninfo(#20020,8,#20001,3,"}") -#20021=@"loc,{#10000},1,10,1,10" -locations_default(#20021,#10000,1,10,1,10) +exprs(#20020,63,#20019,0,"({ async })") +#20021=@"loc,{#10000},1,1,1,11" +locations_default(#20021,#10000,1,1,1,11) hasLocation(#20020,#20021) +enclosingStmt(#20020,#20019) +exprContainers(#20020,#20001) #20022=* -tokeninfo(#20022,8,#20001,4,")") -#20023=@"loc,{#10000},1,11,1,11" -locations_default(#20023,#10000,1,11,1,11) +exprs(#20022,8,#20020,0,"{ async }") +#20023=@"loc,{#10000},1,2,1,10" +locations_default(#20023,#10000,1,2,1,10) hasLocation(#20022,#20023) +enclosingStmt(#20022,#20019) +exprContainers(#20022,#20001) #20024=* -tokeninfo(#20024,8,#20001,5,";") -#20025=@"loc,{#10000},1,12,1,12" -locations_default(#20025,#10000,1,12,1,12) -hasLocation(#20024,#20025) +properties(#20024,#20022,0,0,"async") +hasLocation(#20024,#20009) +#20025=* +exprs(#20025,0,#20024,0,"async") +hasLocation(#20025,#20009) +enclosingStmt(#20025,#20019) +exprContainers(#20025,#20001) +literals("async","async",#20025) #20026=* -tokeninfo(#20026,0,#20001,6,"") -#20027=@"loc,{#10000},2,1,2,0" -locations_default(#20027,#10000,2,1,2,0) -hasLocation(#20026,#20027) +exprs(#20026,79,#20024,1,"async") +hasLocation(#20026,#20009) +enclosingStmt(#20026,#20019) +exprContainers(#20026,#20001) +literals("async","async",#20026) +#20027=@"var;{async};{#20000}" +variables(#20027,"async",#20000) +bind(#20026,#20027) #20028=* entry_cfg_node(#20028,#20001) #20029=@"loc,{#10000},1,1,1,0" @@ -98,13 +98,13 @@ locations_default(#20029,#10000,1,1,1,0) hasLocation(#20028,#20029) #20030=* exit_cfg_node(#20030,#20001) -hasLocation(#20030,#20027) -successor(#20003,#20005) -successor(#20005,#20007) -successor(#20007,#20011) -successor(#20012,#20009) -successor(#20011,#20012) -successor(#20009,#20030) -successor(#20028,#20003) +hasLocation(#20030,#20017) +successor(#20019,#20020) +successor(#20020,#20022) +successor(#20022,#20025) +successor(#20026,#20024) +successor(#20025,#20026) +successor(#20024,#20030) +successor(#20028,#20019) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2018/output/trap/templates.js.trap b/javascript/extractor/tests/es2018/output/trap/templates.js.trap index f4f713473cd..e2c81cb18e3 100644 --- a/javascript/extractor/tests/es2018/output/trap/templates.js.trap +++ b/javascript/extractor/tests/es2018/output/trap/templates.js.trap @@ -9,728 +9,728 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,13,0" -locations_default(#20002,#10000,1,1,13,0) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"`foo`\n` ... \u25a0`") -#20004=@"loc,{#10000},1,1,3,17" -locations_default(#20004,#10000,1,1,3,17) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,70,#20003,0,"`foo`\n` ... \u25a0`") -hasLocation(#20005,#20004) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) +#20002=* +lines(#20002,#20001,"`foo`"," +") +#20003=@"loc,{#10000},1,1,1,5" +locations_default(#20003,#10000,1,1,1,5) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"`foo\u25a0`"," +") +#20005=@"loc,{#10000},2,1,2,11" +locations_default(#20005,#10000,2,1,2,11) +hasLocation(#20004,#20005) #20006=* -exprs(#20006,70,#20005,0,"`foo`\n`foo\u25a0`") -#20007=@"loc,{#10000},1,1,2,11" -locations_default(#20007,#10000,1,1,2,11) +lines(#20006,#20001,"`foo${bar}\u25a0`"," +") +#20007=@"loc,{#10000},3,1,3,17" +locations_default(#20007,#10000,3,1,3,17) hasLocation(#20006,#20007) -enclosingStmt(#20006,#20003) -exprContainers(#20006,#20001) #20008=* -exprs(#20008,71,#20006,0,"`foo`") -#20009=@"loc,{#10000},1,1,1,5" -locations_default(#20009,#10000,1,1,1,5) +lines(#20008,#20001,"foo `\u25a0`"," +") +#20009=@"loc,{#10000},4,1,4,12" +locations_default(#20009,#10000,4,1,4,12) hasLocation(#20008,#20009) -enclosingStmt(#20008,#20003) -exprContainers(#20008,#20001) #20010=* -exprs(#20010,72,#20008,0,"foo") -#20011=@"loc,{#10000},1,2,1,4" -locations_default(#20011,#10000,1,2,1,4) +lines(#20010,#20001,"foo `foo${bar}\u25a0`"," +") +#20011=@"loc,{#10000},5,1,5,21" +locations_default(#20011,#10000,5,1,5,21) hasLocation(#20010,#20011) -enclosingStmt(#20010,#20003) -exprContainers(#20010,#20001) -literals("foo","foo",#20010) #20012=* -exprs(#20012,71,#20006,1,"`foo\u25a0`") -#20013=@"loc,{#10000},2,1,2,11" -locations_default(#20013,#10000,2,1,2,11) +lines(#20012,#20001,"foo `\unicode`"," +") +#20013=@"loc,{#10000},6,1,6,14" +locations_default(#20013,#10000,6,1,6,14) hasLocation(#20012,#20013) -enclosingStmt(#20012,#20003) -exprContainers(#20012,#20001) #20014=* -exprs(#20014,72,#20012,0,"foo\u25a0") -#20015=@"loc,{#10000},2,2,2,10" -locations_default(#20015,#10000,2,2,2,10) +lines(#20014,#20001,"foo `foo${bar}\unicode`"," +") +#20015=@"loc,{#10000},7,1,7,23" +locations_default(#20015,#10000,7,1,7,23) hasLocation(#20014,#20015) -enclosingStmt(#20014,#20003) -exprContainers(#20014,#20001) -literals("foo■","foo\u25a0",#20014) #20016=* -exprs(#20016,71,#20005,1,"`foo${bar}\u25a0`") -#20017=@"loc,{#10000},3,1,3,17" -locations_default(#20017,#10000,3,1,3,17) +lines(#20016,#20001,"foo `\u`"," +") +#20017=@"loc,{#10000},8,1,8,8" +locations_default(#20017,#10000,8,1,8,8) hasLocation(#20016,#20017) -enclosingStmt(#20016,#20003) -exprContainers(#20016,#20001) #20018=* -exprs(#20018,72,#20016,0,"foo") -#20019=@"loc,{#10000},3,2,3,4" -locations_default(#20019,#10000,3,2,3,4) +lines(#20018,#20001,"foo `\u{`"," +") +#20019=@"loc,{#10000},9,1,9,9" +locations_default(#20019,#10000,9,1,9,9) hasLocation(#20018,#20019) -enclosingStmt(#20018,#20003) -exprContainers(#20018,#20001) -literals("foo","foo",#20018) #20020=* -exprs(#20020,79,#20016,1,"bar") -#20021=@"loc,{#10000},3,7,3,9" -locations_default(#20021,#10000,3,7,3,9) +lines(#20020,#20001,"foo `\u{abcdx`"," +") +#20021=@"loc,{#10000},10,1,10,14" +locations_default(#20021,#10000,10,1,10,14) hasLocation(#20020,#20021) -enclosingStmt(#20020,#20003) -exprContainers(#20020,#20001) -literals("bar","bar",#20020) -#20022=@"var;{bar};{#20000}" -variables(#20022,"bar",#20000) -bind(#20020,#20022) -#20023=* -exprs(#20023,72,#20016,2,"\u25a0") -#20024=@"loc,{#10000},3,11,3,16" -locations_default(#20024,#10000,3,11,3,16) -hasLocation(#20023,#20024) -enclosingStmt(#20023,#20003) -exprContainers(#20023,#20001) -literals("■","\u25a0",#20023) -#20025=* -stmts(#20025,2,#20001,1,"foo `\u25a0`") -#20026=@"loc,{#10000},4,1,4,12" -locations_default(#20026,#10000,4,1,4,12) -hasLocation(#20025,#20026) -stmtContainers(#20025,#20001) -#20027=* -exprs(#20027,70,#20025,0,"foo `\u25a0`") -hasLocation(#20027,#20026) -enclosingStmt(#20027,#20025) -exprContainers(#20027,#20001) -#20028=* -exprs(#20028,79,#20027,0,"foo") -#20029=@"loc,{#10000},4,1,4,3" -locations_default(#20029,#10000,4,1,4,3) -hasLocation(#20028,#20029) -enclosingStmt(#20028,#20025) -exprContainers(#20028,#20001) -literals("foo","foo",#20028) -#20030=@"var;{foo};{#20000}" -variables(#20030,"foo",#20000) -bind(#20028,#20030) -#20031=* -exprs(#20031,71,#20027,1,"`\u25a0`") -#20032=@"loc,{#10000},4,5,4,12" -locations_default(#20032,#10000,4,5,4,12) -hasLocation(#20031,#20032) -enclosingStmt(#20031,#20025) -exprContainers(#20031,#20001) -#20033=* -exprs(#20033,72,#20031,0,"\u25a0") -#20034=@"loc,{#10000},4,6,4,11" -locations_default(#20034,#10000,4,6,4,11) -hasLocation(#20033,#20034) -enclosingStmt(#20033,#20025) -exprContainers(#20033,#20001) -literals("■","\u25a0",#20033) -#20035=* -stmts(#20035,2,#20001,2,"foo `fo ... \u25a0`") -#20036=@"loc,{#10000},5,1,5,21" -locations_default(#20036,#10000,5,1,5,21) -hasLocation(#20035,#20036) -stmtContainers(#20035,#20001) -#20037=* -exprs(#20037,70,#20035,0,"foo `fo ... \u25a0`") -hasLocation(#20037,#20036) -enclosingStmt(#20037,#20035) -exprContainers(#20037,#20001) -#20038=* -exprs(#20038,79,#20037,0,"foo") -#20039=@"loc,{#10000},5,1,5,3" -locations_default(#20039,#10000,5,1,5,3) -hasLocation(#20038,#20039) -enclosingStmt(#20038,#20035) -exprContainers(#20038,#20001) -literals("foo","foo",#20038) -bind(#20038,#20030) -#20040=* -exprs(#20040,71,#20037,1,"`foo${bar}\u25a0`") -#20041=@"loc,{#10000},5,5,5,21" -locations_default(#20041,#10000,5,5,5,21) -hasLocation(#20040,#20041) -enclosingStmt(#20040,#20035) -exprContainers(#20040,#20001) -#20042=* -exprs(#20042,72,#20040,0,"foo") -#20043=@"loc,{#10000},5,6,5,8" -locations_default(#20043,#10000,5,6,5,8) -hasLocation(#20042,#20043) -enclosingStmt(#20042,#20035) -exprContainers(#20042,#20001) -literals("foo","foo",#20042) -#20044=* -exprs(#20044,79,#20040,1,"bar") -#20045=@"loc,{#10000},5,11,5,13" -locations_default(#20045,#10000,5,11,5,13) -hasLocation(#20044,#20045) -enclosingStmt(#20044,#20035) -exprContainers(#20044,#20001) -literals("bar","bar",#20044) -bind(#20044,#20022) -#20046=* -exprs(#20046,72,#20040,2,"\u25a0") -#20047=@"loc,{#10000},5,15,5,20" -locations_default(#20047,#10000,5,15,5,20) -hasLocation(#20046,#20047) -enclosingStmt(#20046,#20035) -exprContainers(#20046,#20001) -literals("■","\u25a0",#20046) -#20048=* -stmts(#20048,2,#20001,3,"foo `\unicode`") -#20049=@"loc,{#10000},6,1,6,14" -locations_default(#20049,#10000,6,1,6,14) -hasLocation(#20048,#20049) -stmtContainers(#20048,#20001) -#20050=* -exprs(#20050,70,#20048,0,"foo `\unicode`") -hasLocation(#20050,#20049) -enclosingStmt(#20050,#20048) -exprContainers(#20050,#20001) -#20051=* -exprs(#20051,79,#20050,0,"foo") -#20052=@"loc,{#10000},6,1,6,3" -locations_default(#20052,#10000,6,1,6,3) -hasLocation(#20051,#20052) -enclosingStmt(#20051,#20048) -exprContainers(#20051,#20001) -literals("foo","foo",#20051) -bind(#20051,#20030) -#20053=* -exprs(#20053,71,#20050,1,"`\unicode`") -#20054=@"loc,{#10000},6,5,6,14" -locations_default(#20054,#10000,6,5,6,14) -hasLocation(#20053,#20054) -enclosingStmt(#20053,#20048) -exprContainers(#20053,#20001) -#20055=* -exprs(#20055,72,#20053,0,"\unicode") -#20056=@"loc,{#10000},6,6,6,13" -locations_default(#20056,#10000,6,6,6,13) -hasLocation(#20055,#20056) -enclosingStmt(#20055,#20048) -exprContainers(#20055,#20001) -literals("","\unicode",#20055) -#20057=* -stmts(#20057,2,#20001,4,"foo `fo ... nicode`") -#20058=@"loc,{#10000},7,1,7,23" -locations_default(#20058,#10000,7,1,7,23) -hasLocation(#20057,#20058) -stmtContainers(#20057,#20001) -#20059=* -exprs(#20059,70,#20057,0,"foo `fo ... nicode`") -hasLocation(#20059,#20058) -enclosingStmt(#20059,#20057) -exprContainers(#20059,#20001) -#20060=* -exprs(#20060,79,#20059,0,"foo") -#20061=@"loc,{#10000},7,1,7,3" -locations_default(#20061,#10000,7,1,7,3) -hasLocation(#20060,#20061) -enclosingStmt(#20060,#20057) -exprContainers(#20060,#20001) -literals("foo","foo",#20060) -bind(#20060,#20030) -#20062=* -exprs(#20062,71,#20059,1,"`foo${bar}\unicode`") -#20063=@"loc,{#10000},7,5,7,23" -locations_default(#20063,#10000,7,5,7,23) -hasLocation(#20062,#20063) -enclosingStmt(#20062,#20057) -exprContainers(#20062,#20001) -#20064=* -exprs(#20064,72,#20062,0,"foo") -#20065=@"loc,{#10000},7,6,7,8" -locations_default(#20065,#10000,7,6,7,8) -hasLocation(#20064,#20065) -enclosingStmt(#20064,#20057) -exprContainers(#20064,#20001) -literals("foo","foo",#20064) -#20066=* -exprs(#20066,79,#20062,1,"bar") -#20067=@"loc,{#10000},7,11,7,13" -locations_default(#20067,#10000,7,11,7,13) -hasLocation(#20066,#20067) -enclosingStmt(#20066,#20057) -exprContainers(#20066,#20001) -literals("bar","bar",#20066) -bind(#20066,#20022) -#20068=* -exprs(#20068,72,#20062,2,"\unicode") -#20069=@"loc,{#10000},7,15,7,22" -locations_default(#20069,#10000,7,15,7,22) -hasLocation(#20068,#20069) -enclosingStmt(#20068,#20057) -exprContainers(#20068,#20001) -literals("","\unicode",#20068) -#20070=* -stmts(#20070,2,#20001,5,"foo `\u`") -#20071=@"loc,{#10000},8,1,8,8" -locations_default(#20071,#10000,8,1,8,8) -hasLocation(#20070,#20071) -stmtContainers(#20070,#20001) -#20072=* -exprs(#20072,70,#20070,0,"foo `\u`") -hasLocation(#20072,#20071) -enclosingStmt(#20072,#20070) -exprContainers(#20072,#20001) -#20073=* -exprs(#20073,79,#20072,0,"foo") -#20074=@"loc,{#10000},8,1,8,3" -locations_default(#20074,#10000,8,1,8,3) -hasLocation(#20073,#20074) -enclosingStmt(#20073,#20070) -exprContainers(#20073,#20001) -literals("foo","foo",#20073) -bind(#20073,#20030) -#20075=* -exprs(#20075,71,#20072,1,"`\u`") -#20076=@"loc,{#10000},8,5,8,8" -locations_default(#20076,#10000,8,5,8,8) -hasLocation(#20075,#20076) -enclosingStmt(#20075,#20070) -exprContainers(#20075,#20001) -#20077=* -exprs(#20077,72,#20075,0,"\u") -#20078=@"loc,{#10000},8,6,8,7" -locations_default(#20078,#10000,8,6,8,7) -hasLocation(#20077,#20078) -enclosingStmt(#20077,#20070) -exprContainers(#20077,#20001) -literals("","\u",#20077) -#20079=* -stmts(#20079,2,#20001,6,"foo `\u{`") -#20080=@"loc,{#10000},9,1,9,9" -locations_default(#20080,#10000,9,1,9,9) -hasLocation(#20079,#20080) -stmtContainers(#20079,#20001) -#20081=* -exprs(#20081,70,#20079,0,"foo `\u{`") -hasLocation(#20081,#20080) -enclosingStmt(#20081,#20079) -exprContainers(#20081,#20001) -#20082=* -exprs(#20082,79,#20081,0,"foo") -#20083=@"loc,{#10000},9,1,9,3" -locations_default(#20083,#10000,9,1,9,3) -hasLocation(#20082,#20083) -enclosingStmt(#20082,#20079) -exprContainers(#20082,#20001) -literals("foo","foo",#20082) -bind(#20082,#20030) -#20084=* -exprs(#20084,71,#20081,1,"`\u{`") -#20085=@"loc,{#10000},9,5,9,9" -locations_default(#20085,#10000,9,5,9,9) -hasLocation(#20084,#20085) -enclosingStmt(#20084,#20079) -exprContainers(#20084,#20001) -#20086=* -exprs(#20086,72,#20084,0,"\u{") -#20087=@"loc,{#10000},9,6,9,8" -locations_default(#20087,#10000,9,6,9,8) -hasLocation(#20086,#20087) -enclosingStmt(#20086,#20079) -exprContainers(#20086,#20001) -literals("","\u{",#20086) -#20088=* -stmts(#20088,2,#20001,7,"foo `\u{abcdx`") -#20089=@"loc,{#10000},10,1,10,14" -locations_default(#20089,#10000,10,1,10,14) -hasLocation(#20088,#20089) -stmtContainers(#20088,#20001) -#20090=* -exprs(#20090,70,#20088,0,"foo `\u{abcdx`") -hasLocation(#20090,#20089) -enclosingStmt(#20090,#20088) -exprContainers(#20090,#20001) -#20091=* -exprs(#20091,79,#20090,0,"foo") -#20092=@"loc,{#10000},10,1,10,3" -locations_default(#20092,#10000,10,1,10,3) -hasLocation(#20091,#20092) -enclosingStmt(#20091,#20088) -exprContainers(#20091,#20001) -literals("foo","foo",#20091) -bind(#20091,#20030) -#20093=* -exprs(#20093,71,#20090,1,"`\u{abcdx`") -#20094=@"loc,{#10000},10,5,10,14" -locations_default(#20094,#10000,10,5,10,14) -hasLocation(#20093,#20094) -enclosingStmt(#20093,#20088) -exprContainers(#20093,#20001) -#20095=* -exprs(#20095,72,#20093,0,"\u{abcdx") -#20096=@"loc,{#10000},10,6,10,13" -locations_default(#20096,#10000,10,6,10,13) -hasLocation(#20095,#20096) -enclosingStmt(#20095,#20088) -exprContainers(#20095,#20001) -literals("","\u{abcdx",#20095) -#20097=* -stmts(#20097,2,#20001,8,"foo `\u{abcdx}`") -#20098=@"loc,{#10000},11,1,11,15" -locations_default(#20098,#10000,11,1,11,15) -hasLocation(#20097,#20098) -stmtContainers(#20097,#20001) -#20099=* -exprs(#20099,70,#20097,0,"foo `\u{abcdx}`") -hasLocation(#20099,#20098) -enclosingStmt(#20099,#20097) -exprContainers(#20099,#20001) -#20100=* -exprs(#20100,79,#20099,0,"foo") -#20101=@"loc,{#10000},11,1,11,3" -locations_default(#20101,#10000,11,1,11,3) -hasLocation(#20100,#20101) -enclosingStmt(#20100,#20097) -exprContainers(#20100,#20001) -literals("foo","foo",#20100) -bind(#20100,#20030) -#20102=* -exprs(#20102,71,#20099,1,"`\u{abcdx}`") -#20103=@"loc,{#10000},11,5,11,15" -locations_default(#20103,#10000,11,5,11,15) -hasLocation(#20102,#20103) -enclosingStmt(#20102,#20097) -exprContainers(#20102,#20001) -#20104=* -exprs(#20104,72,#20102,0,"\u{abcdx}") -#20105=@"loc,{#10000},11,6,11,14" -locations_default(#20105,#10000,11,6,11,14) -hasLocation(#20104,#20105) -enclosingStmt(#20104,#20097) -exprContainers(#20104,#20001) -literals("","\u{abcdx}",#20104) -#20106=* -stmts(#20106,2,#20001,9,"foo `\unicode\\`") -#20107=@"loc,{#10000},12,1,12,16" -locations_default(#20107,#10000,12,1,12,16) -hasLocation(#20106,#20107) -stmtContainers(#20106,#20001) -#20108=* -exprs(#20108,70,#20106,0,"foo `\unicode\\`") -hasLocation(#20108,#20107) -enclosingStmt(#20108,#20106) -exprContainers(#20108,#20001) -#20109=* -exprs(#20109,79,#20108,0,"foo") -#20110=@"loc,{#10000},12,1,12,3" -locations_default(#20110,#10000,12,1,12,3) -hasLocation(#20109,#20110) -enclosingStmt(#20109,#20106) -exprContainers(#20109,#20001) -literals("foo","foo",#20109) -bind(#20109,#20030) -#20111=* -exprs(#20111,71,#20108,1,"`\unicode\\`") -#20112=@"loc,{#10000},12,5,12,16" -locations_default(#20112,#10000,12,5,12,16) -hasLocation(#20111,#20112) -enclosingStmt(#20111,#20106) -exprContainers(#20111,#20001) -#20113=* -exprs(#20113,72,#20111,0,"\unicode\\") -#20114=@"loc,{#10000},12,6,12,15" -locations_default(#20114,#10000,12,6,12,15) -hasLocation(#20113,#20114) -enclosingStmt(#20113,#20106) -exprContainers(#20113,#20001) -literals("","\unicode\\",#20113) -#20115=* -lines(#20115,#20001,"`foo`"," +#20022=* +lines(#20022,#20001,"foo `\u{abcdx}`"," ") -hasLocation(#20115,#20009) -#20116=* -lines(#20116,#20001,"`foo\u25a0`"," +#20023=@"loc,{#10000},11,1,11,15" +locations_default(#20023,#10000,11,1,11,15) +hasLocation(#20022,#20023) +#20024=* +lines(#20024,#20001,"foo `\unicode\\`"," ") -hasLocation(#20116,#20013) -#20117=* -lines(#20117,#20001,"`foo${bar}\u25a0`"," -") -hasLocation(#20117,#20017) -#20118=* -lines(#20118,#20001,"foo `\u25a0`"," -") -hasLocation(#20118,#20026) -#20119=* -lines(#20119,#20001,"foo `foo${bar}\u25a0`"," -") -hasLocation(#20119,#20036) -#20120=* -lines(#20120,#20001,"foo `\unicode`"," -") -hasLocation(#20120,#20049) -#20121=* -lines(#20121,#20001,"foo `foo${bar}\unicode`"," -") -hasLocation(#20121,#20058) -#20122=* -lines(#20122,#20001,"foo `\u`"," -") -hasLocation(#20122,#20071) -#20123=* -lines(#20123,#20001,"foo `\u{`"," -") -hasLocation(#20123,#20080) -#20124=* -lines(#20124,#20001,"foo `\u{abcdx`"," -") -hasLocation(#20124,#20089) -#20125=* -lines(#20125,#20001,"foo `\u{abcdx}`"," -") -hasLocation(#20125,#20098) -#20126=* -lines(#20126,#20001,"foo `\unicode\\`"," -") -hasLocation(#20126,#20107) +#20025=@"loc,{#10000},12,1,12,16" +locations_default(#20025,#10000,12,1,12,16) +hasLocation(#20024,#20025) numlines(#20001,12,12,0) -#20127=* -tokeninfo(#20127,8,#20001,0,"`") -#20128=@"loc,{#10000},1,1,1,1" -locations_default(#20128,#10000,1,1,1,1) -hasLocation(#20127,#20128) -#20129=* -tokeninfo(#20129,4,#20001,1,"foo") -hasLocation(#20129,#20011) +#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,4,#20001,1,"foo") +#20029=@"loc,{#10000},1,2,1,4" +locations_default(#20029,#10000,1,2,1,4) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,2,"`") +#20031=@"loc,{#10000},1,5,1,5" +locations_default(#20031,#10000,1,5,1,5) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,3,"`") +#20033=@"loc,{#10000},2,1,2,1" +locations_default(#20033,#10000,2,1,2,1) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,4,#20001,4,"foo\u25a0") +#20035=@"loc,{#10000},2,2,2,10" +locations_default(#20035,#10000,2,2,2,10) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,5,"`") +#20037=@"loc,{#10000},2,11,2,11" +locations_default(#20037,#10000,2,11,2,11) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,8,#20001,6,"`") +#20039=@"loc,{#10000},3,1,3,1" +locations_default(#20039,#10000,3,1,3,1) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,4,#20001,7,"foo") +#20041=@"loc,{#10000},3,2,3,4" +locations_default(#20041,#10000,3,2,3,4) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,8,"${") +#20043=@"loc,{#10000},3,5,3,6" +locations_default(#20043,#10000,3,5,3,6) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,6,#20001,9,"bar") +#20045=@"loc,{#10000},3,7,3,9" +locations_default(#20045,#10000,3,7,3,9) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,10,"}") +#20047=@"loc,{#10000},3,10,3,10" +locations_default(#20047,#10000,3,10,3,10) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,4,#20001,11,"\u25a0") +#20049=@"loc,{#10000},3,11,3,16" +locations_default(#20049,#10000,3,11,3,16) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,12,"`") +#20051=@"loc,{#10000},3,17,3,17" +locations_default(#20051,#10000,3,17,3,17) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,6,#20001,13,"foo") +#20053=@"loc,{#10000},4,1,4,3" +locations_default(#20053,#10000,4,1,4,3) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,8,#20001,14,"`") +#20055=@"loc,{#10000},4,5,4,5" +locations_default(#20055,#10000,4,5,4,5) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,4,#20001,15,"\u25a0") +#20057=@"loc,{#10000},4,6,4,11" +locations_default(#20057,#10000,4,6,4,11) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,8,#20001,16,"`") +#20059=@"loc,{#10000},4,12,4,12" +locations_default(#20059,#10000,4,12,4,12) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,6,#20001,17,"foo") +#20061=@"loc,{#10000},5,1,5,3" +locations_default(#20061,#10000,5,1,5,3) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,8,#20001,18,"`") +#20063=@"loc,{#10000},5,5,5,5" +locations_default(#20063,#10000,5,5,5,5) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,4,#20001,19,"foo") +#20065=@"loc,{#10000},5,6,5,8" +locations_default(#20065,#10000,5,6,5,8) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,8,#20001,20,"${") +#20067=@"loc,{#10000},5,9,5,10" +locations_default(#20067,#10000,5,9,5,10) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,6,#20001,21,"bar") +#20069=@"loc,{#10000},5,11,5,13" +locations_default(#20069,#10000,5,11,5,13) +hasLocation(#20068,#20069) +#20070=* +tokeninfo(#20070,8,#20001,22,"}") +#20071=@"loc,{#10000},5,14,5,14" +locations_default(#20071,#10000,5,14,5,14) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,4,#20001,23,"\u25a0") +#20073=@"loc,{#10000},5,15,5,20" +locations_default(#20073,#10000,5,15,5,20) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,8,#20001,24,"`") +#20075=@"loc,{#10000},5,21,5,21" +locations_default(#20075,#10000,5,21,5,21) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,6,#20001,25,"foo") +#20077=@"loc,{#10000},6,1,6,3" +locations_default(#20077,#10000,6,1,6,3) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,8,#20001,26,"`") +#20079=@"loc,{#10000},6,5,6,5" +locations_default(#20079,#10000,6,5,6,5) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,8,#20001,27,"\unicode") +#20081=@"loc,{#10000},6,6,6,13" +locations_default(#20081,#10000,6,6,6,13) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,8,#20001,28,"`") +#20083=@"loc,{#10000},6,14,6,14" +locations_default(#20083,#10000,6,14,6,14) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,6,#20001,29,"foo") +#20085=@"loc,{#10000},7,1,7,3" +locations_default(#20085,#10000,7,1,7,3) +hasLocation(#20084,#20085) +#20086=* +tokeninfo(#20086,8,#20001,30,"`") +#20087=@"loc,{#10000},7,5,7,5" +locations_default(#20087,#10000,7,5,7,5) +hasLocation(#20086,#20087) +#20088=* +tokeninfo(#20088,4,#20001,31,"foo") +#20089=@"loc,{#10000},7,6,7,8" +locations_default(#20089,#10000,7,6,7,8) +hasLocation(#20088,#20089) +#20090=* +tokeninfo(#20090,8,#20001,32,"${") +#20091=@"loc,{#10000},7,9,7,10" +locations_default(#20091,#10000,7,9,7,10) +hasLocation(#20090,#20091) +#20092=* +tokeninfo(#20092,6,#20001,33,"bar") +#20093=@"loc,{#10000},7,11,7,13" +locations_default(#20093,#10000,7,11,7,13) +hasLocation(#20092,#20093) +#20094=* +tokeninfo(#20094,8,#20001,34,"}") +#20095=@"loc,{#10000},7,14,7,14" +locations_default(#20095,#10000,7,14,7,14) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,8,#20001,35,"\unicode") +#20097=@"loc,{#10000},7,15,7,22" +locations_default(#20097,#10000,7,15,7,22) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,8,#20001,36,"`") +#20099=@"loc,{#10000},7,23,7,23" +locations_default(#20099,#10000,7,23,7,23) +hasLocation(#20098,#20099) +#20100=* +tokeninfo(#20100,6,#20001,37,"foo") +#20101=@"loc,{#10000},8,1,8,3" +locations_default(#20101,#10000,8,1,8,3) +hasLocation(#20100,#20101) +#20102=* +tokeninfo(#20102,8,#20001,38,"`") +#20103=@"loc,{#10000},8,5,8,5" +locations_default(#20103,#10000,8,5,8,5) +hasLocation(#20102,#20103) +#20104=* +tokeninfo(#20104,8,#20001,39,"\u") +#20105=@"loc,{#10000},8,6,8,7" +locations_default(#20105,#10000,8,6,8,7) +hasLocation(#20104,#20105) +#20106=* +tokeninfo(#20106,8,#20001,40,"`") +#20107=@"loc,{#10000},8,8,8,8" +locations_default(#20107,#10000,8,8,8,8) +hasLocation(#20106,#20107) +#20108=* +tokeninfo(#20108,6,#20001,41,"foo") +#20109=@"loc,{#10000},9,1,9,3" +locations_default(#20109,#10000,9,1,9,3) +hasLocation(#20108,#20109) +#20110=* +tokeninfo(#20110,8,#20001,42,"`") +#20111=@"loc,{#10000},9,5,9,5" +locations_default(#20111,#10000,9,5,9,5) +hasLocation(#20110,#20111) +#20112=* +tokeninfo(#20112,8,#20001,43,"\u{") +#20113=@"loc,{#10000},9,6,9,8" +locations_default(#20113,#10000,9,6,9,8) +hasLocation(#20112,#20113) +#20114=* +tokeninfo(#20114,8,#20001,44,"`") +#20115=@"loc,{#10000},9,9,9,9" +locations_default(#20115,#10000,9,9,9,9) +hasLocation(#20114,#20115) +#20116=* +tokeninfo(#20116,6,#20001,45,"foo") +#20117=@"loc,{#10000},10,1,10,3" +locations_default(#20117,#10000,10,1,10,3) +hasLocation(#20116,#20117) +#20118=* +tokeninfo(#20118,8,#20001,46,"`") +#20119=@"loc,{#10000},10,5,10,5" +locations_default(#20119,#10000,10,5,10,5) +hasLocation(#20118,#20119) +#20120=* +tokeninfo(#20120,8,#20001,47,"\u{abcdx") +#20121=@"loc,{#10000},10,6,10,13" +locations_default(#20121,#10000,10,6,10,13) +hasLocation(#20120,#20121) +#20122=* +tokeninfo(#20122,8,#20001,48,"`") +#20123=@"loc,{#10000},10,14,10,14" +locations_default(#20123,#10000,10,14,10,14) +hasLocation(#20122,#20123) +#20124=* +tokeninfo(#20124,6,#20001,49,"foo") +#20125=@"loc,{#10000},11,1,11,3" +locations_default(#20125,#10000,11,1,11,3) +hasLocation(#20124,#20125) +#20126=* +tokeninfo(#20126,8,#20001,50,"`") +#20127=@"loc,{#10000},11,5,11,5" +locations_default(#20127,#10000,11,5,11,5) +hasLocation(#20126,#20127) +#20128=* +tokeninfo(#20128,8,#20001,51,"\u{abcdx}") +#20129=@"loc,{#10000},11,6,11,14" +locations_default(#20129,#10000,11,6,11,14) +hasLocation(#20128,#20129) #20130=* -tokeninfo(#20130,8,#20001,2,"`") -#20131=@"loc,{#10000},1,5,1,5" -locations_default(#20131,#10000,1,5,1,5) +tokeninfo(#20130,8,#20001,52,"`") +#20131=@"loc,{#10000},11,15,11,15" +locations_default(#20131,#10000,11,15,11,15) hasLocation(#20130,#20131) #20132=* -tokeninfo(#20132,8,#20001,3,"`") -#20133=@"loc,{#10000},2,1,2,1" -locations_default(#20133,#10000,2,1,2,1) +tokeninfo(#20132,6,#20001,53,"foo") +#20133=@"loc,{#10000},12,1,12,3" +locations_default(#20133,#10000,12,1,12,3) hasLocation(#20132,#20133) #20134=* -tokeninfo(#20134,4,#20001,4,"foo\u25a0") -hasLocation(#20134,#20015) -#20135=* -tokeninfo(#20135,8,#20001,5,"`") -#20136=@"loc,{#10000},2,11,2,11" -locations_default(#20136,#10000,2,11,2,11) -hasLocation(#20135,#20136) -#20137=* -tokeninfo(#20137,8,#20001,6,"`") -#20138=@"loc,{#10000},3,1,3,1" -locations_default(#20138,#10000,3,1,3,1) -hasLocation(#20137,#20138) -#20139=* -tokeninfo(#20139,4,#20001,7,"foo") -hasLocation(#20139,#20019) +tokeninfo(#20134,8,#20001,54,"`") +#20135=@"loc,{#10000},12,5,12,5" +locations_default(#20135,#10000,12,5,12,5) +hasLocation(#20134,#20135) +#20136=* +tokeninfo(#20136,8,#20001,55,"\unicode\\") +#20137=@"loc,{#10000},12,6,12,15" +locations_default(#20137,#10000,12,6,12,15) +hasLocation(#20136,#20137) +#20138=* +tokeninfo(#20138,8,#20001,56,"`") +#20139=@"loc,{#10000},12,16,12,16" +locations_default(#20139,#10000,12,16,12,16) +hasLocation(#20138,#20139) #20140=* -tokeninfo(#20140,8,#20001,8,"${") -#20141=@"loc,{#10000},3,5,3,6" -locations_default(#20141,#10000,3,5,3,6) +tokeninfo(#20140,0,#20001,57,"") +#20141=@"loc,{#10000},13,1,13,0" +locations_default(#20141,#10000,13,1,13,0) hasLocation(#20140,#20141) -#20142=* -tokeninfo(#20142,6,#20001,9,"bar") -hasLocation(#20142,#20021) +toplevels(#20001,0) +#20142=@"loc,{#10000},1,1,13,0" +locations_default(#20142,#10000,1,1,13,0) +hasLocation(#20001,#20142) #20143=* -tokeninfo(#20143,8,#20001,10,"}") -#20144=@"loc,{#10000},3,10,3,10" -locations_default(#20144,#10000,3,10,3,10) +stmts(#20143,2,#20001,0,"`foo`\n` ... \u25a0`") +#20144=@"loc,{#10000},1,1,3,17" +locations_default(#20144,#10000,1,1,3,17) hasLocation(#20143,#20144) +stmtContainers(#20143,#20001) #20145=* -tokeninfo(#20145,4,#20001,11,"\u25a0") -hasLocation(#20145,#20024) +exprs(#20145,70,#20143,0,"`foo`\n` ... \u25a0`") +hasLocation(#20145,#20144) +enclosingStmt(#20145,#20143) +exprContainers(#20145,#20001) #20146=* -tokeninfo(#20146,8,#20001,12,"`") -#20147=@"loc,{#10000},3,17,3,17" -locations_default(#20147,#10000,3,17,3,17) +exprs(#20146,70,#20145,0,"`foo`\n`foo\u25a0`") +#20147=@"loc,{#10000},1,1,2,11" +locations_default(#20147,#10000,1,1,2,11) hasLocation(#20146,#20147) +enclosingStmt(#20146,#20143) +exprContainers(#20146,#20001) #20148=* -tokeninfo(#20148,6,#20001,13,"foo") -hasLocation(#20148,#20029) +exprs(#20148,71,#20146,0,"`foo`") +hasLocation(#20148,#20003) +enclosingStmt(#20148,#20143) +exprContainers(#20148,#20001) #20149=* -tokeninfo(#20149,8,#20001,14,"`") -#20150=@"loc,{#10000},4,5,4,5" -locations_default(#20150,#10000,4,5,4,5) -hasLocation(#20149,#20150) +exprs(#20149,72,#20148,0,"foo") +hasLocation(#20149,#20029) +enclosingStmt(#20149,#20143) +exprContainers(#20149,#20001) +literals("foo","foo",#20149) +#20150=* +exprs(#20150,71,#20146,1,"`foo\u25a0`") +hasLocation(#20150,#20005) +enclosingStmt(#20150,#20143) +exprContainers(#20150,#20001) #20151=* -tokeninfo(#20151,4,#20001,15,"\u25a0") -hasLocation(#20151,#20034) +exprs(#20151,72,#20150,0,"foo\u25a0") +hasLocation(#20151,#20035) +enclosingStmt(#20151,#20143) +exprContainers(#20151,#20001) +literals("foo■","foo\u25a0",#20151) #20152=* -tokeninfo(#20152,8,#20001,16,"`") -#20153=@"loc,{#10000},4,12,4,12" -locations_default(#20153,#10000,4,12,4,12) -hasLocation(#20152,#20153) +exprs(#20152,71,#20145,1,"`foo${bar}\u25a0`") +hasLocation(#20152,#20007) +enclosingStmt(#20152,#20143) +exprContainers(#20152,#20001) +#20153=* +exprs(#20153,72,#20152,0,"foo") +hasLocation(#20153,#20041) +enclosingStmt(#20153,#20143) +exprContainers(#20153,#20001) +literals("foo","foo",#20153) #20154=* -tokeninfo(#20154,6,#20001,17,"foo") -hasLocation(#20154,#20039) -#20155=* -tokeninfo(#20155,8,#20001,18,"`") -#20156=@"loc,{#10000},5,5,5,5" -locations_default(#20156,#10000,5,5,5,5) -hasLocation(#20155,#20156) +exprs(#20154,79,#20152,1,"bar") +hasLocation(#20154,#20045) +enclosingStmt(#20154,#20143) +exprContainers(#20154,#20001) +literals("bar","bar",#20154) +#20155=@"var;{bar};{#20000}" +variables(#20155,"bar",#20000) +bind(#20154,#20155) +#20156=* +exprs(#20156,72,#20152,2,"\u25a0") +hasLocation(#20156,#20049) +enclosingStmt(#20156,#20143) +exprContainers(#20156,#20001) +literals("■","\u25a0",#20156) #20157=* -tokeninfo(#20157,4,#20001,19,"foo") -hasLocation(#20157,#20043) +stmts(#20157,2,#20001,1,"foo `\u25a0`") +hasLocation(#20157,#20009) +stmtContainers(#20157,#20001) #20158=* -tokeninfo(#20158,8,#20001,20,"${") -#20159=@"loc,{#10000},5,9,5,10" -locations_default(#20159,#10000,5,9,5,10) -hasLocation(#20158,#20159) -#20160=* -tokeninfo(#20160,6,#20001,21,"bar") -hasLocation(#20160,#20045) +exprs(#20158,70,#20157,0,"foo `\u25a0`") +hasLocation(#20158,#20009) +enclosingStmt(#20158,#20157) +exprContainers(#20158,#20001) +#20159=* +exprs(#20159,79,#20158,0,"foo") +hasLocation(#20159,#20053) +enclosingStmt(#20159,#20157) +exprContainers(#20159,#20001) +literals("foo","foo",#20159) +#20160=@"var;{foo};{#20000}" +variables(#20160,"foo",#20000) +bind(#20159,#20160) #20161=* -tokeninfo(#20161,8,#20001,22,"}") -#20162=@"loc,{#10000},5,14,5,14" -locations_default(#20162,#10000,5,14,5,14) +exprs(#20161,71,#20158,1,"`\u25a0`") +#20162=@"loc,{#10000},4,5,4,12" +locations_default(#20162,#10000,4,5,4,12) hasLocation(#20161,#20162) +enclosingStmt(#20161,#20157) +exprContainers(#20161,#20001) #20163=* -tokeninfo(#20163,4,#20001,23,"\u25a0") -hasLocation(#20163,#20047) +exprs(#20163,72,#20161,0,"\u25a0") +hasLocation(#20163,#20057) +enclosingStmt(#20163,#20157) +exprContainers(#20163,#20001) +literals("■","\u25a0",#20163) #20164=* -tokeninfo(#20164,8,#20001,24,"`") -#20165=@"loc,{#10000},5,21,5,21" -locations_default(#20165,#10000,5,21,5,21) -hasLocation(#20164,#20165) +stmts(#20164,2,#20001,2,"foo `fo ... \u25a0`") +hasLocation(#20164,#20011) +stmtContainers(#20164,#20001) +#20165=* +exprs(#20165,70,#20164,0,"foo `fo ... \u25a0`") +hasLocation(#20165,#20011) +enclosingStmt(#20165,#20164) +exprContainers(#20165,#20001) #20166=* -tokeninfo(#20166,6,#20001,25,"foo") -hasLocation(#20166,#20052) +exprs(#20166,79,#20165,0,"foo") +hasLocation(#20166,#20061) +enclosingStmt(#20166,#20164) +exprContainers(#20166,#20001) +literals("foo","foo",#20166) +bind(#20166,#20160) #20167=* -tokeninfo(#20167,8,#20001,26,"`") -#20168=@"loc,{#10000},6,5,6,5" -locations_default(#20168,#10000,6,5,6,5) +exprs(#20167,71,#20165,1,"`foo${bar}\u25a0`") +#20168=@"loc,{#10000},5,5,5,21" +locations_default(#20168,#10000,5,5,5,21) hasLocation(#20167,#20168) +enclosingStmt(#20167,#20164) +exprContainers(#20167,#20001) #20169=* -tokeninfo(#20169,8,#20001,27,"\unicode") -hasLocation(#20169,#20056) +exprs(#20169,72,#20167,0,"foo") +hasLocation(#20169,#20065) +enclosingStmt(#20169,#20164) +exprContainers(#20169,#20001) +literals("foo","foo",#20169) #20170=* -tokeninfo(#20170,8,#20001,28,"`") -#20171=@"loc,{#10000},6,14,6,14" -locations_default(#20171,#10000,6,14,6,14) -hasLocation(#20170,#20171) +exprs(#20170,79,#20167,1,"bar") +hasLocation(#20170,#20069) +enclosingStmt(#20170,#20164) +exprContainers(#20170,#20001) +literals("bar","bar",#20170) +bind(#20170,#20155) +#20171=* +exprs(#20171,72,#20167,2,"\u25a0") +hasLocation(#20171,#20073) +enclosingStmt(#20171,#20164) +exprContainers(#20171,#20001) +literals("■","\u25a0",#20171) #20172=* -tokeninfo(#20172,6,#20001,29,"foo") -hasLocation(#20172,#20061) +stmts(#20172,2,#20001,3,"foo `\unicode`") +hasLocation(#20172,#20013) +stmtContainers(#20172,#20001) #20173=* -tokeninfo(#20173,8,#20001,30,"`") -#20174=@"loc,{#10000},7,5,7,5" -locations_default(#20174,#10000,7,5,7,5) -hasLocation(#20173,#20174) +exprs(#20173,70,#20172,0,"foo `\unicode`") +hasLocation(#20173,#20013) +enclosingStmt(#20173,#20172) +exprContainers(#20173,#20001) +#20174=* +exprs(#20174,79,#20173,0,"foo") +hasLocation(#20174,#20077) +enclosingStmt(#20174,#20172) +exprContainers(#20174,#20001) +literals("foo","foo",#20174) +bind(#20174,#20160) #20175=* -tokeninfo(#20175,4,#20001,31,"foo") -hasLocation(#20175,#20065) -#20176=* -tokeninfo(#20176,8,#20001,32,"${") -#20177=@"loc,{#10000},7,9,7,10" -locations_default(#20177,#10000,7,9,7,10) -hasLocation(#20176,#20177) +exprs(#20175,71,#20173,1,"`\unicode`") +#20176=@"loc,{#10000},6,5,6,14" +locations_default(#20176,#10000,6,5,6,14) +hasLocation(#20175,#20176) +enclosingStmt(#20175,#20172) +exprContainers(#20175,#20001) +#20177=* +exprs(#20177,72,#20175,0,"\unicode") +hasLocation(#20177,#20081) +enclosingStmt(#20177,#20172) +exprContainers(#20177,#20001) +literals("","\unicode",#20177) #20178=* -tokeninfo(#20178,6,#20001,33,"bar") -hasLocation(#20178,#20067) +stmts(#20178,2,#20001,4,"foo `fo ... nicode`") +hasLocation(#20178,#20015) +stmtContainers(#20178,#20001) #20179=* -tokeninfo(#20179,8,#20001,34,"}") -#20180=@"loc,{#10000},7,14,7,14" -locations_default(#20180,#10000,7,14,7,14) -hasLocation(#20179,#20180) +exprs(#20179,70,#20178,0,"foo `fo ... nicode`") +hasLocation(#20179,#20015) +enclosingStmt(#20179,#20178) +exprContainers(#20179,#20001) +#20180=* +exprs(#20180,79,#20179,0,"foo") +hasLocation(#20180,#20085) +enclosingStmt(#20180,#20178) +exprContainers(#20180,#20001) +literals("foo","foo",#20180) +bind(#20180,#20160) #20181=* -tokeninfo(#20181,8,#20001,35,"\unicode") -hasLocation(#20181,#20069) -#20182=* -tokeninfo(#20182,8,#20001,36,"`") -#20183=@"loc,{#10000},7,23,7,23" -locations_default(#20183,#10000,7,23,7,23) -hasLocation(#20182,#20183) +exprs(#20181,71,#20179,1,"`foo${bar}\unicode`") +#20182=@"loc,{#10000},7,5,7,23" +locations_default(#20182,#10000,7,5,7,23) +hasLocation(#20181,#20182) +enclosingStmt(#20181,#20178) +exprContainers(#20181,#20001) +#20183=* +exprs(#20183,72,#20181,0,"foo") +hasLocation(#20183,#20089) +enclosingStmt(#20183,#20178) +exprContainers(#20183,#20001) +literals("foo","foo",#20183) #20184=* -tokeninfo(#20184,6,#20001,37,"foo") -hasLocation(#20184,#20074) +exprs(#20184,79,#20181,1,"bar") +hasLocation(#20184,#20093) +enclosingStmt(#20184,#20178) +exprContainers(#20184,#20001) +literals("bar","bar",#20184) +bind(#20184,#20155) #20185=* -tokeninfo(#20185,8,#20001,38,"`") -#20186=@"loc,{#10000},8,5,8,5" -locations_default(#20186,#10000,8,5,8,5) -hasLocation(#20185,#20186) +exprs(#20185,72,#20181,2,"\unicode") +hasLocation(#20185,#20097) +enclosingStmt(#20185,#20178) +exprContainers(#20185,#20001) +literals("","\unicode",#20185) +#20186=* +stmts(#20186,2,#20001,5,"foo `\u`") +hasLocation(#20186,#20017) +stmtContainers(#20186,#20001) #20187=* -tokeninfo(#20187,8,#20001,39,"\u") -hasLocation(#20187,#20078) +exprs(#20187,70,#20186,0,"foo `\u`") +hasLocation(#20187,#20017) +enclosingStmt(#20187,#20186) +exprContainers(#20187,#20001) #20188=* -tokeninfo(#20188,8,#20001,40,"`") -#20189=@"loc,{#10000},8,8,8,8" -locations_default(#20189,#10000,8,8,8,8) -hasLocation(#20188,#20189) -#20190=* -tokeninfo(#20190,6,#20001,41,"foo") -hasLocation(#20190,#20083) +exprs(#20188,79,#20187,0,"foo") +hasLocation(#20188,#20101) +enclosingStmt(#20188,#20186) +exprContainers(#20188,#20001) +literals("foo","foo",#20188) +bind(#20188,#20160) +#20189=* +exprs(#20189,71,#20187,1,"`\u`") +#20190=@"loc,{#10000},8,5,8,8" +locations_default(#20190,#10000,8,5,8,8) +hasLocation(#20189,#20190) +enclosingStmt(#20189,#20186) +exprContainers(#20189,#20001) #20191=* -tokeninfo(#20191,8,#20001,42,"`") -#20192=@"loc,{#10000},9,5,9,5" -locations_default(#20192,#10000,9,5,9,5) -hasLocation(#20191,#20192) +exprs(#20191,72,#20189,0,"\u") +hasLocation(#20191,#20105) +enclosingStmt(#20191,#20186) +exprContainers(#20191,#20001) +literals("","\u",#20191) +#20192=* +stmts(#20192,2,#20001,6,"foo `\u{`") +hasLocation(#20192,#20019) +stmtContainers(#20192,#20001) #20193=* -tokeninfo(#20193,8,#20001,43,"\u{") -hasLocation(#20193,#20087) +exprs(#20193,70,#20192,0,"foo `\u{`") +hasLocation(#20193,#20019) +enclosingStmt(#20193,#20192) +exprContainers(#20193,#20001) #20194=* -tokeninfo(#20194,8,#20001,44,"`") -#20195=@"loc,{#10000},9,9,9,9" -locations_default(#20195,#10000,9,9,9,9) -hasLocation(#20194,#20195) -#20196=* -tokeninfo(#20196,6,#20001,45,"foo") -hasLocation(#20196,#20092) +exprs(#20194,79,#20193,0,"foo") +hasLocation(#20194,#20109) +enclosingStmt(#20194,#20192) +exprContainers(#20194,#20001) +literals("foo","foo",#20194) +bind(#20194,#20160) +#20195=* +exprs(#20195,71,#20193,1,"`\u{`") +#20196=@"loc,{#10000},9,5,9,9" +locations_default(#20196,#10000,9,5,9,9) +hasLocation(#20195,#20196) +enclosingStmt(#20195,#20192) +exprContainers(#20195,#20001) #20197=* -tokeninfo(#20197,8,#20001,46,"`") -#20198=@"loc,{#10000},10,5,10,5" -locations_default(#20198,#10000,10,5,10,5) -hasLocation(#20197,#20198) +exprs(#20197,72,#20195,0,"\u{") +hasLocation(#20197,#20113) +enclosingStmt(#20197,#20192) +exprContainers(#20197,#20001) +literals("","\u{",#20197) +#20198=* +stmts(#20198,2,#20001,7,"foo `\u{abcdx`") +hasLocation(#20198,#20021) +stmtContainers(#20198,#20001) #20199=* -tokeninfo(#20199,8,#20001,47,"\u{abcdx") -hasLocation(#20199,#20096) +exprs(#20199,70,#20198,0,"foo `\u{abcdx`") +hasLocation(#20199,#20021) +enclosingStmt(#20199,#20198) +exprContainers(#20199,#20001) #20200=* -tokeninfo(#20200,8,#20001,48,"`") -#20201=@"loc,{#10000},10,14,10,14" -locations_default(#20201,#10000,10,14,10,14) -hasLocation(#20200,#20201) -#20202=* -tokeninfo(#20202,6,#20001,49,"foo") -hasLocation(#20202,#20101) +exprs(#20200,79,#20199,0,"foo") +hasLocation(#20200,#20117) +enclosingStmt(#20200,#20198) +exprContainers(#20200,#20001) +literals("foo","foo",#20200) +bind(#20200,#20160) +#20201=* +exprs(#20201,71,#20199,1,"`\u{abcdx`") +#20202=@"loc,{#10000},10,5,10,14" +locations_default(#20202,#10000,10,5,10,14) +hasLocation(#20201,#20202) +enclosingStmt(#20201,#20198) +exprContainers(#20201,#20001) #20203=* -tokeninfo(#20203,8,#20001,50,"`") -#20204=@"loc,{#10000},11,5,11,5" -locations_default(#20204,#10000,11,5,11,5) -hasLocation(#20203,#20204) +exprs(#20203,72,#20201,0,"\u{abcdx") +hasLocation(#20203,#20121) +enclosingStmt(#20203,#20198) +exprContainers(#20203,#20001) +literals("","\u{abcdx",#20203) +#20204=* +stmts(#20204,2,#20001,8,"foo `\u{abcdx}`") +hasLocation(#20204,#20023) +stmtContainers(#20204,#20001) #20205=* -tokeninfo(#20205,8,#20001,51,"\u{abcdx}") -hasLocation(#20205,#20105) +exprs(#20205,70,#20204,0,"foo `\u{abcdx}`") +hasLocation(#20205,#20023) +enclosingStmt(#20205,#20204) +exprContainers(#20205,#20001) #20206=* -tokeninfo(#20206,8,#20001,52,"`") -#20207=@"loc,{#10000},11,15,11,15" -locations_default(#20207,#10000,11,15,11,15) -hasLocation(#20206,#20207) -#20208=* -tokeninfo(#20208,6,#20001,53,"foo") -hasLocation(#20208,#20110) +exprs(#20206,79,#20205,0,"foo") +hasLocation(#20206,#20125) +enclosingStmt(#20206,#20204) +exprContainers(#20206,#20001) +literals("foo","foo",#20206) +bind(#20206,#20160) +#20207=* +exprs(#20207,71,#20205,1,"`\u{abcdx}`") +#20208=@"loc,{#10000},11,5,11,15" +locations_default(#20208,#10000,11,5,11,15) +hasLocation(#20207,#20208) +enclosingStmt(#20207,#20204) +exprContainers(#20207,#20001) #20209=* -tokeninfo(#20209,8,#20001,54,"`") -#20210=@"loc,{#10000},12,5,12,5" -locations_default(#20210,#10000,12,5,12,5) -hasLocation(#20209,#20210) +exprs(#20209,72,#20207,0,"\u{abcdx}") +hasLocation(#20209,#20129) +enclosingStmt(#20209,#20204) +exprContainers(#20209,#20001) +literals("","\u{abcdx}",#20209) +#20210=* +stmts(#20210,2,#20001,9,"foo `\unicode\\`") +hasLocation(#20210,#20025) +stmtContainers(#20210,#20001) #20211=* -tokeninfo(#20211,8,#20001,55,"\unicode\\") -hasLocation(#20211,#20114) +exprs(#20211,70,#20210,0,"foo `\unicode\\`") +hasLocation(#20211,#20025) +enclosingStmt(#20211,#20210) +exprContainers(#20211,#20001) #20212=* -tokeninfo(#20212,8,#20001,56,"`") -#20213=@"loc,{#10000},12,16,12,16" -locations_default(#20213,#10000,12,16,12,16) -hasLocation(#20212,#20213) -#20214=* -tokeninfo(#20214,0,#20001,57,"") -#20215=@"loc,{#10000},13,1,13,0" -locations_default(#20215,#10000,13,1,13,0) -hasLocation(#20214,#20215) +exprs(#20212,79,#20211,0,"foo") +hasLocation(#20212,#20133) +enclosingStmt(#20212,#20210) +exprContainers(#20212,#20001) +literals("foo","foo",#20212) +bind(#20212,#20160) +#20213=* +exprs(#20213,71,#20211,1,"`\unicode\\`") +#20214=@"loc,{#10000},12,5,12,16" +locations_default(#20214,#10000,12,5,12,16) +hasLocation(#20213,#20214) +enclosingStmt(#20213,#20210) +exprContainers(#20213,#20001) +#20215=* +exprs(#20215,72,#20213,0,"\unicode\\") +hasLocation(#20215,#20137) +enclosingStmt(#20215,#20210) +exprContainers(#20215,#20001) +literals("","\unicode\\",#20215) #20216=* entry_cfg_node(#20216,#20001) #20217=@"loc,{#10000},1,1,1,0" @@ -738,67 +738,67 @@ locations_default(#20217,#10000,1,1,1,0) hasLocation(#20216,#20217) #20218=* exit_cfg_node(#20218,#20001) -hasLocation(#20218,#20215) -successor(#20106,#20108) -successor(#20108,#20109) -successor(#20111,#20113) -successor(#20113,#20218) -successor(#20109,#20111) -successor(#20097,#20099) -successor(#20099,#20100) -successor(#20102,#20104) -successor(#20104,#20106) -successor(#20100,#20102) -successor(#20088,#20090) -successor(#20090,#20091) -successor(#20093,#20095) -successor(#20095,#20097) -successor(#20091,#20093) -successor(#20079,#20081) -successor(#20081,#20082) -successor(#20084,#20086) -successor(#20086,#20088) -successor(#20082,#20084) -successor(#20070,#20072) -successor(#20072,#20073) -successor(#20075,#20077) -successor(#20077,#20079) -successor(#20073,#20075) -successor(#20057,#20059) -successor(#20059,#20060) -successor(#20062,#20064) -successor(#20068,#20070) -successor(#20066,#20068) -successor(#20064,#20066) -successor(#20060,#20062) -successor(#20048,#20050) -successor(#20050,#20051) -successor(#20053,#20055) -successor(#20055,#20057) -successor(#20051,#20053) -successor(#20035,#20037) -successor(#20037,#20038) -successor(#20040,#20042) -successor(#20046,#20048) -successor(#20044,#20046) -successor(#20042,#20044) -successor(#20038,#20040) -successor(#20025,#20027) -successor(#20027,#20028) -successor(#20031,#20033) -successor(#20033,#20035) -successor(#20028,#20031) -successor(#20003,#20005) -successor(#20005,#20006) -successor(#20016,#20018) -successor(#20023,#20025) -successor(#20020,#20023) -successor(#20018,#20020) -successor(#20006,#20008) -successor(#20012,#20014) -successor(#20014,#20016) -successor(#20008,#20010) -successor(#20010,#20012) -successor(#20216,#20003) +hasLocation(#20218,#20141) +successor(#20210,#20211) +successor(#20211,#20212) +successor(#20213,#20215) +successor(#20215,#20218) +successor(#20212,#20213) +successor(#20204,#20205) +successor(#20205,#20206) +successor(#20207,#20209) +successor(#20209,#20210) +successor(#20206,#20207) +successor(#20198,#20199) +successor(#20199,#20200) +successor(#20201,#20203) +successor(#20203,#20204) +successor(#20200,#20201) +successor(#20192,#20193) +successor(#20193,#20194) +successor(#20195,#20197) +successor(#20197,#20198) +successor(#20194,#20195) +successor(#20186,#20187) +successor(#20187,#20188) +successor(#20189,#20191) +successor(#20191,#20192) +successor(#20188,#20189) +successor(#20178,#20179) +successor(#20179,#20180) +successor(#20181,#20183) +successor(#20185,#20186) +successor(#20184,#20185) +successor(#20183,#20184) +successor(#20180,#20181) +successor(#20172,#20173) +successor(#20173,#20174) +successor(#20175,#20177) +successor(#20177,#20178) +successor(#20174,#20175) +successor(#20164,#20165) +successor(#20165,#20166) +successor(#20167,#20169) +successor(#20171,#20172) +successor(#20170,#20171) +successor(#20169,#20170) +successor(#20166,#20167) +successor(#20157,#20158) +successor(#20158,#20159) +successor(#20161,#20163) +successor(#20163,#20164) +successor(#20159,#20161) +successor(#20143,#20145) +successor(#20145,#20146) +successor(#20152,#20153) +successor(#20156,#20157) +successor(#20154,#20156) +successor(#20153,#20154) +successor(#20146,#20148) +successor(#20150,#20151) +successor(#20151,#20152) +successor(#20148,#20149) +successor(#20149,#20150) +successor(#20216,#20143) numlines(#10000,12,12,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/esnext/output/trap/async-generators.js.trap b/javascript/extractor/tests/esnext/output/trap/async-generators.js.trap index 394bf7d967d..d84af789b77 100644 --- a/javascript/extractor/tests/esnext/output/trap/async-generators.js.trap +++ b/javascript/extractor/tests/esnext/output/trap/async-generators.js.trap @@ -9,283 +9,281 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,7,0" -locations_default(#20002,#10000,1,1,7,0) -hasLocation(#20001,#20002) -#20003=@"var;{foo};{#20000}" -variables(#20003,"foo",#20000) -#20004=@"var;{bar};{#20000}" -variables(#20004,"bar",#20000) -#20005=* -stmts(#20005,17,#20001,0,"async f ... o() {\n}") -#20006=@"loc,{#10000},1,1,2,1" -locations_default(#20006,#10000,1,1,2,1) -hasLocation(#20005,#20006) -stmtContainers(#20005,#20001) -#20007=* -exprs(#20007,78,#20005,-1,"foo") -#20008=@"loc,{#10000},1,17,1,19" -locations_default(#20008,#10000,1,17,1,19) -hasLocation(#20007,#20008) -exprContainers(#20007,#20005) -literals("foo","foo",#20007) -decl(#20007,#20003) -#20009=* -scopes(#20009,1) -scopenodes(#20005,#20009) -scopenesting(#20009,#20000) -#20010=@"var;{arguments};{#20009}" -variables(#20010,"arguments",#20009) -isArgumentsObject(#20010) -isGenerator(#20005) -isAsync(#20005) -#20011=* -stmts(#20011,1,#20005,-2,"{\n}") -#20012=@"loc,{#10000},1,23,2,1" -locations_default(#20012,#10000,1,23,2,1) -hasLocation(#20011,#20012) -stmtContainers(#20011,#20005) -numlines(#20005,2,2,0) -#20013=* -stmts(#20013,17,#20001,1,"async f ... o());\n}") -#20014=@"loc,{#10000},4,1,6,1" -locations_default(#20014,#10000,4,1,6,1) -hasLocation(#20013,#20014) -stmtContainers(#20013,#20001) -#20015=* -exprs(#20015,78,#20013,-1,"bar") -#20016=@"loc,{#10000},4,16,4,18" -locations_default(#20016,#10000,4,16,4,18) -hasLocation(#20015,#20016) -exprContainers(#20015,#20013) -literals("bar","bar",#20015) -decl(#20015,#20004) -#20017=* -scopes(#20017,1) -scopenodes(#20013,#20017) -scopenesting(#20017,#20000) -#20018=@"var;{x};{#20017}" -variables(#20018,"x",#20017) -#20019=@"var;{arguments};{#20017}" -variables(#20019,"arguments",#20017) -isArgumentsObject(#20019) -isAsync(#20013) -#20020=* -stmts(#20020,1,#20013,-2,"{\n for ... o());\n}") -#20021=@"loc,{#10000},4,22,6,1" -locations_default(#20021,#10000,4,22,6,1) -hasLocation(#20020,#20021) -stmtContainers(#20020,#20013) -#20022=* -stmts(#20022,21,#20020,0,"for awa ... foo());") -#20023=@"loc,{#10000},5,3,5,28" -locations_default(#20023,#10000,5,3,5,28) -hasLocation(#20022,#20023) -stmtContainers(#20022,#20013) -#20024=* -exprs(#20024,13,#20022,1,"foo()") -#20025=@"loc,{#10000},5,22,5,26" -locations_default(#20025,#10000,5,22,5,26) -hasLocation(#20024,#20025) -enclosingStmt(#20024,#20022) -exprContainers(#20024,#20013) -#20026=* -exprs(#20026,79,#20024,-1,"foo") -#20027=@"loc,{#10000},5,22,5,24" -locations_default(#20027,#10000,5,22,5,24) -hasLocation(#20026,#20027) -enclosingStmt(#20026,#20022) -exprContainers(#20026,#20013) -literals("foo","foo",#20026) -bind(#20026,#20003) -#20028=* -stmts(#20028,18,#20022,0,"var x") -#20029=@"loc,{#10000},5,13,5,17" -locations_default(#20029,#10000,5,13,5,17) -hasLocation(#20028,#20029) -stmtContainers(#20028,#20013) -#20030=* -exprs(#20030,64,#20028,0,"x") -#20031=@"loc,{#10000},5,17,5,17" -locations_default(#20031,#10000,5,17,5,17) -hasLocation(#20030,#20031) -enclosingStmt(#20030,#20028) -exprContainers(#20030,#20013) -#20032=* -exprs(#20032,78,#20030,0,"x") -hasLocation(#20032,#20031) -enclosingStmt(#20032,#20028) -exprContainers(#20032,#20013) -literals("x","x",#20032) -decl(#20032,#20018) -#20033=* -stmts(#20033,0,#20022,2,";") -#20034=@"loc,{#10000},5,28,5,28" -locations_default(#20034,#10000,5,28,5,28) -hasLocation(#20033,#20034) -stmtContainers(#20033,#20013) -isForAwaitOf(#20022) -numlines(#20013,3,3,0) -#20035=* -lines(#20035,#20001,"async function *foo() {"," +#20002=* +lines(#20002,#20001,"async function *foo() {"," ") -#20036=@"loc,{#10000},1,1,1,23" -locations_default(#20036,#10000,1,1,1,23) +#20003=@"loc,{#10000},1,1,1,23" +locations_default(#20003,#10000,1,1,1,23) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"}"," +") +#20005=@"loc,{#10000},2,1,2,1" +locations_default(#20005,#10000,2,1,2,1) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,""," +") +#20007=@"loc,{#10000},3,1,3,0" +locations_default(#20007,#10000,3,1,3,0) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001,"async function bar() {"," +") +#20009=@"loc,{#10000},4,1,4,22" +locations_default(#20009,#10000,4,1,4,22) +hasLocation(#20008,#20009) +#20010=* +lines(#20010,#20001," for await(var x of foo());"," +") +#20011=@"loc,{#10000},5,1,5,28" +locations_default(#20011,#10000,5,1,5,28) +hasLocation(#20010,#20011) +indentation(#10000,5," ",2) +#20012=* +lines(#20012,#20001,"}"," +") +#20013=@"loc,{#10000},6,1,6,1" +locations_default(#20013,#10000,6,1,6,1) +hasLocation(#20012,#20013) +numlines(#20001,6,5,0) +#20014=* +tokeninfo(#20014,6,#20001,0,"async") +#20015=@"loc,{#10000},1,1,1,5" +locations_default(#20015,#10000,1,1,1,5) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,7,#20001,1,"function") +#20017=@"loc,{#10000},1,7,1,14" +locations_default(#20017,#10000,1,7,1,14) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,2,"*") +#20019=@"loc,{#10000},1,16,1,16" +locations_default(#20019,#10000,1,16,1,16) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,6,#20001,3,"foo") +#20021=@"loc,{#10000},1,17,1,19" +locations_default(#20021,#10000,1,17,1,19) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,4,"(") +#20023=@"loc,{#10000},1,20,1,20" +locations_default(#20023,#10000,1,20,1,20) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,5,")") +#20025=@"loc,{#10000},1,21,1,21" +locations_default(#20025,#10000,1,21,1,21) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,6,"{") +#20027=@"loc,{#10000},1,23,1,23" +locations_default(#20027,#10000,1,23,1,23) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,7,"}") +hasLocation(#20028,#20005) +#20029=* +tokeninfo(#20029,6,#20001,8,"async") +#20030=@"loc,{#10000},4,1,4,5" +locations_default(#20030,#10000,4,1,4,5) +hasLocation(#20029,#20030) +#20031=* +tokeninfo(#20031,7,#20001,9,"function") +#20032=@"loc,{#10000},4,7,4,14" +locations_default(#20032,#10000,4,7,4,14) +hasLocation(#20031,#20032) +#20033=* +tokeninfo(#20033,6,#20001,10,"bar") +#20034=@"loc,{#10000},4,16,4,18" +locations_default(#20034,#10000,4,16,4,18) +hasLocation(#20033,#20034) +#20035=* +tokeninfo(#20035,8,#20001,11,"(") +#20036=@"loc,{#10000},4,19,4,19" +locations_default(#20036,#10000,4,19,4,19) hasLocation(#20035,#20036) #20037=* -lines(#20037,#20001,"}"," -") -#20038=@"loc,{#10000},2,1,2,1" -locations_default(#20038,#10000,2,1,2,1) +tokeninfo(#20037,8,#20001,12,")") +#20038=@"loc,{#10000},4,20,4,20" +locations_default(#20038,#10000,4,20,4,20) hasLocation(#20037,#20038) #20039=* -lines(#20039,#20001,""," -") -#20040=@"loc,{#10000},3,1,3,0" -locations_default(#20040,#10000,3,1,3,0) +tokeninfo(#20039,8,#20001,13,"{") +#20040=@"loc,{#10000},4,22,4,22" +locations_default(#20040,#10000,4,22,4,22) hasLocation(#20039,#20040) #20041=* -lines(#20041,#20001,"async function bar() {"," -") -#20042=@"loc,{#10000},4,1,4,22" -locations_default(#20042,#10000,4,1,4,22) +tokeninfo(#20041,7,#20001,14,"for") +#20042=@"loc,{#10000},5,3,5,5" +locations_default(#20042,#10000,5,3,5,5) hasLocation(#20041,#20042) #20043=* -lines(#20043,#20001," for await(var x of foo());"," -") -#20044=@"loc,{#10000},5,1,5,28" -locations_default(#20044,#10000,5,1,5,28) +tokeninfo(#20043,6,#20001,15,"await") +#20044=@"loc,{#10000},5,7,5,11" +locations_default(#20044,#10000,5,7,5,11) hasLocation(#20043,#20044) -indentation(#10000,5," ",2) #20045=* -lines(#20045,#20001,"}"," -") -#20046=@"loc,{#10000},6,1,6,1" -locations_default(#20046,#10000,6,1,6,1) +tokeninfo(#20045,8,#20001,16,"(") +#20046=@"loc,{#10000},5,12,5,12" +locations_default(#20046,#10000,5,12,5,12) hasLocation(#20045,#20046) -numlines(#20001,6,5,0) #20047=* -tokeninfo(#20047,6,#20001,0,"async") -#20048=@"loc,{#10000},1,1,1,5" -locations_default(#20048,#10000,1,1,1,5) +tokeninfo(#20047,7,#20001,17,"var") +#20048=@"loc,{#10000},5,13,5,15" +locations_default(#20048,#10000,5,13,5,15) hasLocation(#20047,#20048) #20049=* -tokeninfo(#20049,7,#20001,1,"function") -#20050=@"loc,{#10000},1,7,1,14" -locations_default(#20050,#10000,1,7,1,14) +tokeninfo(#20049,6,#20001,18,"x") +#20050=@"loc,{#10000},5,17,5,17" +locations_default(#20050,#10000,5,17,5,17) hasLocation(#20049,#20050) #20051=* -tokeninfo(#20051,8,#20001,2,"*") -#20052=@"loc,{#10000},1,16,1,16" -locations_default(#20052,#10000,1,16,1,16) +tokeninfo(#20051,6,#20001,19,"of") +#20052=@"loc,{#10000},5,19,5,20" +locations_default(#20052,#10000,5,19,5,20) hasLocation(#20051,#20052) #20053=* -tokeninfo(#20053,6,#20001,3,"foo") -hasLocation(#20053,#20008) -#20054=* -tokeninfo(#20054,8,#20001,4,"(") -#20055=@"loc,{#10000},1,20,1,20" -locations_default(#20055,#10000,1,20,1,20) -hasLocation(#20054,#20055) -#20056=* -tokeninfo(#20056,8,#20001,5,")") -#20057=@"loc,{#10000},1,21,1,21" -locations_default(#20057,#10000,1,21,1,21) -hasLocation(#20056,#20057) -#20058=* -tokeninfo(#20058,8,#20001,6,"{") -#20059=@"loc,{#10000},1,23,1,23" -locations_default(#20059,#10000,1,23,1,23) -hasLocation(#20058,#20059) -#20060=* -tokeninfo(#20060,8,#20001,7,"}") -hasLocation(#20060,#20038) +tokeninfo(#20053,6,#20001,20,"foo") +#20054=@"loc,{#10000},5,22,5,24" +locations_default(#20054,#10000,5,22,5,24) +hasLocation(#20053,#20054) +#20055=* +tokeninfo(#20055,8,#20001,21,"(") +#20056=@"loc,{#10000},5,25,5,25" +locations_default(#20056,#10000,5,25,5,25) +hasLocation(#20055,#20056) +#20057=* +tokeninfo(#20057,8,#20001,22,")") +#20058=@"loc,{#10000},5,26,5,26" +locations_default(#20058,#10000,5,26,5,26) +hasLocation(#20057,#20058) +#20059=* +tokeninfo(#20059,8,#20001,23,")") +#20060=@"loc,{#10000},5,27,5,27" +locations_default(#20060,#10000,5,27,5,27) +hasLocation(#20059,#20060) #20061=* -tokeninfo(#20061,6,#20001,8,"async") -#20062=@"loc,{#10000},4,1,4,5" -locations_default(#20062,#10000,4,1,4,5) +tokeninfo(#20061,8,#20001,24,";") +#20062=@"loc,{#10000},5,28,5,28" +locations_default(#20062,#10000,5,28,5,28) hasLocation(#20061,#20062) #20063=* -tokeninfo(#20063,7,#20001,9,"function") -#20064=@"loc,{#10000},4,7,4,14" -locations_default(#20064,#10000,4,7,4,14) -hasLocation(#20063,#20064) -#20065=* -tokeninfo(#20065,6,#20001,10,"bar") -hasLocation(#20065,#20016) -#20066=* -tokeninfo(#20066,8,#20001,11,"(") -#20067=@"loc,{#10000},4,19,4,19" -locations_default(#20067,#10000,4,19,4,19) -hasLocation(#20066,#20067) -#20068=* -tokeninfo(#20068,8,#20001,12,")") -#20069=@"loc,{#10000},4,20,4,20" -locations_default(#20069,#10000,4,20,4,20) -hasLocation(#20068,#20069) -#20070=* -tokeninfo(#20070,8,#20001,13,"{") -#20071=@"loc,{#10000},4,22,4,22" -locations_default(#20071,#10000,4,22,4,22) -hasLocation(#20070,#20071) +tokeninfo(#20063,8,#20001,25,"}") +hasLocation(#20063,#20013) +#20064=* +tokeninfo(#20064,0,#20001,26,"") +#20065=@"loc,{#10000},7,1,7,0" +locations_default(#20065,#10000,7,1,7,0) +hasLocation(#20064,#20065) +toplevels(#20001,0) +#20066=@"loc,{#10000},1,1,7,0" +locations_default(#20066,#10000,1,1,7,0) +hasLocation(#20001,#20066) +#20067=@"var;{foo};{#20000}" +variables(#20067,"foo",#20000) +#20068=@"var;{bar};{#20000}" +variables(#20068,"bar",#20000) +#20069=* +stmts(#20069,17,#20001,0,"async f ... o() {\n}") +#20070=@"loc,{#10000},1,1,2,1" +locations_default(#20070,#10000,1,1,2,1) +hasLocation(#20069,#20070) +stmtContainers(#20069,#20001) +#20071=* +exprs(#20071,78,#20069,-1,"foo") +hasLocation(#20071,#20021) +exprContainers(#20071,#20069) +literals("foo","foo",#20071) +decl(#20071,#20067) #20072=* -tokeninfo(#20072,7,#20001,14,"for") -#20073=@"loc,{#10000},5,3,5,5" -locations_default(#20073,#10000,5,3,5,5) -hasLocation(#20072,#20073) +scopes(#20072,1) +scopenodes(#20069,#20072) +scopenesting(#20072,#20000) +#20073=@"var;{arguments};{#20072}" +variables(#20073,"arguments",#20072) +isArgumentsObject(#20073) +isGenerator(#20069) +isAsync(#20069) #20074=* -tokeninfo(#20074,6,#20001,15,"await") -#20075=@"loc,{#10000},5,7,5,11" -locations_default(#20075,#10000,5,7,5,11) +stmts(#20074,1,#20069,-2,"{\n}") +#20075=@"loc,{#10000},1,23,2,1" +locations_default(#20075,#10000,1,23,2,1) hasLocation(#20074,#20075) +stmtContainers(#20074,#20069) #20076=* -tokeninfo(#20076,8,#20001,16,"(") -#20077=@"loc,{#10000},5,12,5,12" -locations_default(#20077,#10000,5,12,5,12) +stmts(#20076,17,#20001,1,"async f ... o());\n}") +#20077=@"loc,{#10000},4,1,6,1" +locations_default(#20077,#10000,4,1,6,1) hasLocation(#20076,#20077) +stmtContainers(#20076,#20001) #20078=* -tokeninfo(#20078,7,#20001,17,"var") -#20079=@"loc,{#10000},5,13,5,15" -locations_default(#20079,#10000,5,13,5,15) -hasLocation(#20078,#20079) -#20080=* -tokeninfo(#20080,6,#20001,18,"x") -hasLocation(#20080,#20031) -#20081=* -tokeninfo(#20081,6,#20001,19,"of") -#20082=@"loc,{#10000},5,19,5,20" -locations_default(#20082,#10000,5,19,5,20) -hasLocation(#20081,#20082) -#20083=* -tokeninfo(#20083,6,#20001,20,"foo") -hasLocation(#20083,#20027) +exprs(#20078,78,#20076,-1,"bar") +hasLocation(#20078,#20034) +exprContainers(#20078,#20076) +literals("bar","bar",#20078) +decl(#20078,#20068) +#20079=* +scopes(#20079,1) +scopenodes(#20076,#20079) +scopenesting(#20079,#20000) +#20080=@"var;{x};{#20079}" +variables(#20080,"x",#20079) +#20081=@"var;{arguments};{#20079}" +variables(#20081,"arguments",#20079) +isArgumentsObject(#20081) +isAsync(#20076) +#20082=* +stmts(#20082,1,#20076,-2,"{\n for ... o());\n}") +#20083=@"loc,{#10000},4,22,6,1" +locations_default(#20083,#10000,4,22,6,1) +hasLocation(#20082,#20083) +stmtContainers(#20082,#20076) #20084=* -tokeninfo(#20084,8,#20001,21,"(") -#20085=@"loc,{#10000},5,25,5,25" -locations_default(#20085,#10000,5,25,5,25) +stmts(#20084,21,#20082,0,"for awa ... foo());") +#20085=@"loc,{#10000},5,3,5,28" +locations_default(#20085,#10000,5,3,5,28) hasLocation(#20084,#20085) +stmtContainers(#20084,#20076) #20086=* -tokeninfo(#20086,8,#20001,22,")") -#20087=@"loc,{#10000},5,26,5,26" -locations_default(#20087,#10000,5,26,5,26) +exprs(#20086,13,#20084,1,"foo()") +#20087=@"loc,{#10000},5,22,5,26" +locations_default(#20087,#10000,5,22,5,26) hasLocation(#20086,#20087) +enclosingStmt(#20086,#20084) +exprContainers(#20086,#20076) #20088=* -tokeninfo(#20088,8,#20001,23,")") -#20089=@"loc,{#10000},5,27,5,27" -locations_default(#20089,#10000,5,27,5,27) -hasLocation(#20088,#20089) -#20090=* -tokeninfo(#20090,8,#20001,24,";") -hasLocation(#20090,#20034) +exprs(#20088,79,#20086,-1,"foo") +hasLocation(#20088,#20054) +enclosingStmt(#20088,#20084) +exprContainers(#20088,#20076) +literals("foo","foo",#20088) +bind(#20088,#20067) +#20089=* +stmts(#20089,18,#20084,0,"var x") +#20090=@"loc,{#10000},5,13,5,17" +locations_default(#20090,#10000,5,13,5,17) +hasLocation(#20089,#20090) +stmtContainers(#20089,#20076) #20091=* -tokeninfo(#20091,8,#20001,25,"}") -hasLocation(#20091,#20046) +exprs(#20091,64,#20089,0,"x") +hasLocation(#20091,#20050) +enclosingStmt(#20091,#20089) +exprContainers(#20091,#20076) #20092=* -tokeninfo(#20092,0,#20001,26,"") -#20093=@"loc,{#10000},7,1,7,0" -locations_default(#20093,#10000,7,1,7,0) -hasLocation(#20092,#20093) +exprs(#20092,78,#20091,0,"x") +hasLocation(#20092,#20050) +enclosingStmt(#20092,#20089) +exprContainers(#20092,#20076) +literals("x","x",#20092) +decl(#20092,#20080) +#20093=* +stmts(#20093,0,#20084,2,";") +hasLocation(#20093,#20062) +stmtContainers(#20093,#20076) +isForAwaitOf(#20084) #20094=* entry_cfg_node(#20094,#20001) #20095=@"loc,{#10000},1,1,1,0" @@ -293,41 +291,41 @@ locations_default(#20095,#10000,1,1,1,0) hasLocation(#20094,#20095) #20096=* exit_cfg_node(#20096,#20001) -hasLocation(#20096,#20093) -successor(#20013,#20096) +hasLocation(#20096,#20065) +successor(#20076,#20096) #20097=* -entry_cfg_node(#20097,#20013) +entry_cfg_node(#20097,#20076) #20098=@"loc,{#10000},4,1,4,0" locations_default(#20098,#10000,4,1,4,0) hasLocation(#20097,#20098) #20099=* -exit_cfg_node(#20099,#20013) +exit_cfg_node(#20099,#20076) #20100=@"loc,{#10000},6,2,6,1" locations_default(#20100,#10000,6,2,6,1) hasLocation(#20099,#20100) -successor(#20020,#20026) -successor(#20026,#20024) -successor(#20024,#20022) -successor(#20022,#20028) -successor(#20022,#20099) -successor(#20033,#20022) -successor(#20028,#20032) -successor(#20032,#20030) -successor(#20030,#20033) -successor(#20097,#20020) -successor(#20005,#20013) +successor(#20082,#20088) +successor(#20088,#20086) +successor(#20086,#20084) +successor(#20084,#20089) +successor(#20084,#20099) +successor(#20093,#20084) +successor(#20089,#20092) +successor(#20092,#20091) +successor(#20091,#20093) +successor(#20097,#20082) +successor(#20069,#20076) #20101=* -entry_cfg_node(#20101,#20005) +entry_cfg_node(#20101,#20069) hasLocation(#20101,#20095) #20102=* -exit_cfg_node(#20102,#20005) +exit_cfg_node(#20102,#20069) #20103=@"loc,{#10000},2,2,2,1" locations_default(#20103,#10000,2,2,2,1) hasLocation(#20102,#20103) -successor(#20011,#20102) -successor(#20101,#20011) -successor(#20015,#20005) -successor(#20007,#20015) -successor(#20094,#20007) +successor(#20074,#20102) +successor(#20101,#20074) +successor(#20078,#20069) +successor(#20071,#20078) +successor(#20094,#20071) numlines(#10000,6,5,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/esnext/output/trap/catchGuardAndNoBinding.js.trap b/javascript/extractor/tests/esnext/output/trap/catchGuardAndNoBinding.js.trap index f96395b0b44..c1c75d069e0 100644 --- a/javascript/extractor/tests/esnext/output/trap/catchGuardAndNoBinding.js.trap +++ b/javascript/extractor/tests/esnext/output/trap/catchGuardAndNoBinding.js.trap @@ -9,589 +9,589 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,11,0" -locations_default(#20002,#10000,1,1,11,0) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,11,#20001,0,"try {}\n ... atch {}") -#20004=@"loc,{#10000},1,1,4,8" -locations_default(#20004,#10000,1,1,4,8) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -stmts(#20005,1,#20003,0,"{}") -#20006=@"loc,{#10000},1,5,1,6" -locations_default(#20006,#10000,1,5,1,6) -hasLocation(#20005,#20006) -stmtContainers(#20005,#20001) -#20007=* -stmts(#20007,20,#20003,1,"catch ( ... ror) {}") -#20008=@"loc,{#10000},2,1,2,38" -locations_default(#20008,#10000,2,1,2,38) -hasLocation(#20007,#20008) -stmtContainers(#20007,#20001) -#20009=* -scopes(#20009,2) -scopenodes(#20007,#20009) -scopenesting(#20009,#20000) -#20010=@"var;{e};{#20009}" -variables(#20010,"e",#20009) -#20011=* -exprs(#20011,78,#20007,0,"e") -#20012=@"loc,{#10000},2,8,2,8" -locations_default(#20012,#10000,2,8,2,8) -hasLocation(#20011,#20012) -enclosingStmt(#20011,#20007) -exprContainers(#20011,#20001) -literals("e","e",#20011) -decl(#20011,#20010) -#20013=* -exprs(#20013,43,#20007,2,"e insta ... peError") -#20014=@"loc,{#10000},2,13,2,34" -locations_default(#20014,#10000,2,13,2,34) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20007) -exprContainers(#20013,#20001) -#20015=* -exprs(#20015,79,#20013,0,"e") -#20016=@"loc,{#10000},2,13,2,13" -locations_default(#20016,#10000,2,13,2,13) -hasLocation(#20015,#20016) -enclosingStmt(#20015,#20007) -exprContainers(#20015,#20001) -literals("e","e",#20015) -bind(#20015,#20010) -#20017=* -exprs(#20017,79,#20013,1,"TypeError") -#20018=@"loc,{#10000},2,26,2,34" -locations_default(#20018,#10000,2,26,2,34) -hasLocation(#20017,#20018) -enclosingStmt(#20017,#20007) -exprContainers(#20017,#20001) -literals("TypeError","TypeError",#20017) -#20019=@"var;{TypeError};{#20000}" -variables(#20019,"TypeError",#20000) -bind(#20017,#20019) +#20002=* +lines(#20002,#20001,"try {}"," +") +#20003=@"loc,{#10000},1,1,1,6" +locations_default(#20003,#10000,1,1,1,6) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"catch (e if e instanceof TypeError) {}"," +") +#20005=@"loc,{#10000},2,1,2,38" +locations_default(#20005,#10000,2,1,2,38) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"catch (e if e instanceof Error) {}"," +") +#20007=@"loc,{#10000},3,1,3,34" +locations_default(#20007,#10000,3,1,3,34) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001,"catch {}"," +") +#20009=@"loc,{#10000},4,1,4,8" +locations_default(#20009,#10000,4,1,4,8) +hasLocation(#20008,#20009) +#20010=* +lines(#20010,#20001,""," +") +#20011=@"loc,{#10000},5,1,5,0" +locations_default(#20011,#10000,5,1,5,0) +hasLocation(#20010,#20011) +#20012=* +lines(#20012,#20001,"try {}"," +") +#20013=@"loc,{#10000},6,1,6,6" +locations_default(#20013,#10000,6,1,6,6) +hasLocation(#20012,#20013) +#20014=* +lines(#20014,#20001,"catch (e if e instanceof TypeError) {}"," +") +#20015=@"loc,{#10000},7,1,7,38" +locations_default(#20015,#10000,7,1,7,38) +hasLocation(#20014,#20015) +#20016=* +lines(#20016,#20001,"catch (e if e instanceof Error) {}"," +") +#20017=@"loc,{#10000},8,1,8,34" +locations_default(#20017,#10000,8,1,8,34) +hasLocation(#20016,#20017) +#20018=* +lines(#20018,#20001,"catch {}"," +") +#20019=@"loc,{#10000},9,1,9,8" +locations_default(#20019,#10000,9,1,9,8) +hasLocation(#20018,#20019) #20020=* -stmts(#20020,1,#20007,1,"{}") -#20021=@"loc,{#10000},2,37,2,38" -locations_default(#20021,#10000,2,37,2,38) +lines(#20020,#20001,"finally {}"," +") +#20021=@"loc,{#10000},10,1,10,10" +locations_default(#20021,#10000,10,1,10,10) hasLocation(#20020,#20021) -stmtContainers(#20020,#20001) +numlines(#20001,10,9,0) #20022=* -stmts(#20022,20,#20003,2,"catch ( ... ror) {}") -#20023=@"loc,{#10000},3,1,3,34" -locations_default(#20023,#10000,3,1,3,34) +tokeninfo(#20022,7,#20001,0,"try") +#20023=@"loc,{#10000},1,1,1,3" +locations_default(#20023,#10000,1,1,1,3) hasLocation(#20022,#20023) -stmtContainers(#20022,#20001) #20024=* -scopes(#20024,2) -scopenodes(#20022,#20024) -scopenesting(#20024,#20000) -#20025=@"var;{e};{#20024}" -variables(#20025,"e",#20024) +tokeninfo(#20024,8,#20001,1,"{") +#20025=@"loc,{#10000},1,5,1,5" +locations_default(#20025,#10000,1,5,1,5) +hasLocation(#20024,#20025) #20026=* -exprs(#20026,78,#20022,0,"e") -#20027=@"loc,{#10000},3,8,3,8" -locations_default(#20027,#10000,3,8,3,8) +tokeninfo(#20026,8,#20001,2,"}") +#20027=@"loc,{#10000},1,6,1,6" +locations_default(#20027,#10000,1,6,1,6) hasLocation(#20026,#20027) -enclosingStmt(#20026,#20022) -exprContainers(#20026,#20001) -literals("e","e",#20026) -decl(#20026,#20025) #20028=* -exprs(#20028,43,#20022,2,"e instanceof Error") -#20029=@"loc,{#10000},3,13,3,30" -locations_default(#20029,#10000,3,13,3,30) +tokeninfo(#20028,7,#20001,3,"catch") +#20029=@"loc,{#10000},2,1,2,5" +locations_default(#20029,#10000,2,1,2,5) hasLocation(#20028,#20029) -enclosingStmt(#20028,#20022) -exprContainers(#20028,#20001) #20030=* -exprs(#20030,79,#20028,0,"e") -#20031=@"loc,{#10000},3,13,3,13" -locations_default(#20031,#10000,3,13,3,13) +tokeninfo(#20030,8,#20001,4,"(") +#20031=@"loc,{#10000},2,7,2,7" +locations_default(#20031,#10000,2,7,2,7) hasLocation(#20030,#20031) -enclosingStmt(#20030,#20022) -exprContainers(#20030,#20001) -literals("e","e",#20030) -bind(#20030,#20025) #20032=* -exprs(#20032,79,#20028,1,"Error") -#20033=@"loc,{#10000},3,26,3,30" -locations_default(#20033,#10000,3,26,3,30) +tokeninfo(#20032,6,#20001,5,"e") +#20033=@"loc,{#10000},2,8,2,8" +locations_default(#20033,#10000,2,8,2,8) hasLocation(#20032,#20033) -enclosingStmt(#20032,#20022) -exprContainers(#20032,#20001) -literals("Error","Error",#20032) -#20034=@"var;{Error};{#20000}" -variables(#20034,"Error",#20000) -bind(#20032,#20034) -#20035=* -stmts(#20035,1,#20022,1,"{}") -#20036=@"loc,{#10000},3,33,3,34" -locations_default(#20036,#10000,3,33,3,34) -hasLocation(#20035,#20036) -stmtContainers(#20035,#20001) -#20037=* -stmts(#20037,20,#20003,3,"catch {}") -#20038=@"loc,{#10000},4,1,4,8" -locations_default(#20038,#10000,4,1,4,8) -hasLocation(#20037,#20038) -stmtContainers(#20037,#20001) -#20039=* -scopes(#20039,2) -scopenodes(#20037,#20039) -scopenesting(#20039,#20000) +#20034=* +tokeninfo(#20034,7,#20001,6,"if") +#20035=@"loc,{#10000},2,10,2,11" +locations_default(#20035,#10000,2,10,2,11) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,6,#20001,7,"e") +#20037=@"loc,{#10000},2,13,2,13" +locations_default(#20037,#10000,2,13,2,13) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,7,#20001,8,"instanceof") +#20039=@"loc,{#10000},2,15,2,24" +locations_default(#20039,#10000,2,15,2,24) +hasLocation(#20038,#20039) #20040=* -stmts(#20040,1,#20037,1,"{}") -#20041=@"loc,{#10000},4,7,4,8" -locations_default(#20041,#10000,4,7,4,8) +tokeninfo(#20040,6,#20001,9,"TypeError") +#20041=@"loc,{#10000},2,26,2,34" +locations_default(#20041,#10000,2,26,2,34) hasLocation(#20040,#20041) -stmtContainers(#20040,#20001) #20042=* -stmts(#20042,11,#20001,1,"try {}\n ... ally {}") -#20043=@"loc,{#10000},6,1,10,10" -locations_default(#20043,#10000,6,1,10,10) +tokeninfo(#20042,8,#20001,10,")") +#20043=@"loc,{#10000},2,35,2,35" +locations_default(#20043,#10000,2,35,2,35) hasLocation(#20042,#20043) -stmtContainers(#20042,#20001) #20044=* -stmts(#20044,1,#20042,0,"{}") -#20045=@"loc,{#10000},6,5,6,6" -locations_default(#20045,#10000,6,5,6,6) +tokeninfo(#20044,8,#20001,11,"{") +#20045=@"loc,{#10000},2,37,2,37" +locations_default(#20045,#10000,2,37,2,37) hasLocation(#20044,#20045) -stmtContainers(#20044,#20001) #20046=* -stmts(#20046,20,#20042,1,"catch ( ... ror) {}") -#20047=@"loc,{#10000},7,1,7,38" -locations_default(#20047,#10000,7,1,7,38) +tokeninfo(#20046,8,#20001,12,"}") +#20047=@"loc,{#10000},2,38,2,38" +locations_default(#20047,#10000,2,38,2,38) hasLocation(#20046,#20047) -stmtContainers(#20046,#20001) #20048=* -scopes(#20048,2) -scopenodes(#20046,#20048) -scopenesting(#20048,#20000) -#20049=@"var;{e};{#20048}" -variables(#20049,"e",#20048) +tokeninfo(#20048,7,#20001,13,"catch") +#20049=@"loc,{#10000},3,1,3,5" +locations_default(#20049,#10000,3,1,3,5) +hasLocation(#20048,#20049) #20050=* -exprs(#20050,78,#20046,0,"e") -#20051=@"loc,{#10000},7,8,7,8" -locations_default(#20051,#10000,7,8,7,8) +tokeninfo(#20050,8,#20001,14,"(") +#20051=@"loc,{#10000},3,7,3,7" +locations_default(#20051,#10000,3,7,3,7) hasLocation(#20050,#20051) -enclosingStmt(#20050,#20046) -exprContainers(#20050,#20001) -literals("e","e",#20050) -decl(#20050,#20049) #20052=* -exprs(#20052,43,#20046,2,"e insta ... peError") -#20053=@"loc,{#10000},7,13,7,34" -locations_default(#20053,#10000,7,13,7,34) +tokeninfo(#20052,6,#20001,15,"e") +#20053=@"loc,{#10000},3,8,3,8" +locations_default(#20053,#10000,3,8,3,8) hasLocation(#20052,#20053) -enclosingStmt(#20052,#20046) -exprContainers(#20052,#20001) #20054=* -exprs(#20054,79,#20052,0,"e") -#20055=@"loc,{#10000},7,13,7,13" -locations_default(#20055,#10000,7,13,7,13) +tokeninfo(#20054,7,#20001,16,"if") +#20055=@"loc,{#10000},3,10,3,11" +locations_default(#20055,#10000,3,10,3,11) hasLocation(#20054,#20055) -enclosingStmt(#20054,#20046) -exprContainers(#20054,#20001) -literals("e","e",#20054) -bind(#20054,#20049) #20056=* -exprs(#20056,79,#20052,1,"TypeError") -#20057=@"loc,{#10000},7,26,7,34" -locations_default(#20057,#10000,7,26,7,34) +tokeninfo(#20056,6,#20001,17,"e") +#20057=@"loc,{#10000},3,13,3,13" +locations_default(#20057,#10000,3,13,3,13) hasLocation(#20056,#20057) -enclosingStmt(#20056,#20046) -exprContainers(#20056,#20001) -literals("TypeError","TypeError",#20056) -bind(#20056,#20019) #20058=* -stmts(#20058,1,#20046,1,"{}") -#20059=@"loc,{#10000},7,37,7,38" -locations_default(#20059,#10000,7,37,7,38) +tokeninfo(#20058,7,#20001,18,"instanceof") +#20059=@"loc,{#10000},3,15,3,24" +locations_default(#20059,#10000,3,15,3,24) hasLocation(#20058,#20059) -stmtContainers(#20058,#20001) #20060=* -stmts(#20060,20,#20042,2,"catch ( ... ror) {}") -#20061=@"loc,{#10000},8,1,8,34" -locations_default(#20061,#10000,8,1,8,34) +tokeninfo(#20060,6,#20001,19,"Error") +#20061=@"loc,{#10000},3,26,3,30" +locations_default(#20061,#10000,3,26,3,30) hasLocation(#20060,#20061) -stmtContainers(#20060,#20001) #20062=* -scopes(#20062,2) -scopenodes(#20060,#20062) -scopenesting(#20062,#20000) -#20063=@"var;{e};{#20062}" -variables(#20063,"e",#20062) +tokeninfo(#20062,8,#20001,20,")") +#20063=@"loc,{#10000},3,31,3,31" +locations_default(#20063,#10000,3,31,3,31) +hasLocation(#20062,#20063) #20064=* -exprs(#20064,78,#20060,0,"e") -#20065=@"loc,{#10000},8,8,8,8" -locations_default(#20065,#10000,8,8,8,8) +tokeninfo(#20064,8,#20001,21,"{") +#20065=@"loc,{#10000},3,33,3,33" +locations_default(#20065,#10000,3,33,3,33) hasLocation(#20064,#20065) -enclosingStmt(#20064,#20060) -exprContainers(#20064,#20001) -literals("e","e",#20064) -decl(#20064,#20063) #20066=* -exprs(#20066,43,#20060,2,"e instanceof Error") -#20067=@"loc,{#10000},8,13,8,30" -locations_default(#20067,#10000,8,13,8,30) +tokeninfo(#20066,8,#20001,22,"}") +#20067=@"loc,{#10000},3,34,3,34" +locations_default(#20067,#10000,3,34,3,34) hasLocation(#20066,#20067) -enclosingStmt(#20066,#20060) -exprContainers(#20066,#20001) #20068=* -exprs(#20068,79,#20066,0,"e") -#20069=@"loc,{#10000},8,13,8,13" -locations_default(#20069,#10000,8,13,8,13) +tokeninfo(#20068,7,#20001,23,"catch") +#20069=@"loc,{#10000},4,1,4,5" +locations_default(#20069,#10000,4,1,4,5) hasLocation(#20068,#20069) -enclosingStmt(#20068,#20060) -exprContainers(#20068,#20001) -literals("e","e",#20068) -bind(#20068,#20063) #20070=* -exprs(#20070,79,#20066,1,"Error") -#20071=@"loc,{#10000},8,26,8,30" -locations_default(#20071,#10000,8,26,8,30) +tokeninfo(#20070,8,#20001,24,"{") +#20071=@"loc,{#10000},4,7,4,7" +locations_default(#20071,#10000,4,7,4,7) hasLocation(#20070,#20071) -enclosingStmt(#20070,#20060) -exprContainers(#20070,#20001) -literals("Error","Error",#20070) -bind(#20070,#20034) #20072=* -stmts(#20072,1,#20060,1,"{}") -#20073=@"loc,{#10000},8,33,8,34" -locations_default(#20073,#10000,8,33,8,34) +tokeninfo(#20072,8,#20001,25,"}") +#20073=@"loc,{#10000},4,8,4,8" +locations_default(#20073,#10000,4,8,4,8) hasLocation(#20072,#20073) -stmtContainers(#20072,#20001) #20074=* -stmts(#20074,20,#20042,3,"catch {}") -#20075=@"loc,{#10000},9,1,9,8" -locations_default(#20075,#10000,9,1,9,8) +tokeninfo(#20074,7,#20001,26,"try") +#20075=@"loc,{#10000},6,1,6,3" +locations_default(#20075,#10000,6,1,6,3) hasLocation(#20074,#20075) -stmtContainers(#20074,#20001) #20076=* -scopes(#20076,2) -scopenodes(#20074,#20076) -scopenesting(#20076,#20000) -#20077=* -stmts(#20077,1,#20074,1,"{}") -#20078=@"loc,{#10000},9,7,9,8" -locations_default(#20078,#10000,9,7,9,8) -hasLocation(#20077,#20078) -stmtContainers(#20077,#20001) -#20079=* -stmts(#20079,1,#20042,-1,"{}") -#20080=@"loc,{#10000},10,9,10,10" -locations_default(#20080,#10000,10,9,10,10) -hasLocation(#20079,#20080) -stmtContainers(#20079,#20001) -#20081=* -lines(#20081,#20001,"try {}"," -") -#20082=@"loc,{#10000},1,1,1,6" -locations_default(#20082,#10000,1,1,1,6) -hasLocation(#20081,#20082) -#20083=* -lines(#20083,#20001,"catch (e if e instanceof TypeError) {}"," -") -hasLocation(#20083,#20008) +tokeninfo(#20076,8,#20001,27,"{") +#20077=@"loc,{#10000},6,5,6,5" +locations_default(#20077,#10000,6,5,6,5) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,8,#20001,28,"}") +#20079=@"loc,{#10000},6,6,6,6" +locations_default(#20079,#10000,6,6,6,6) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,7,#20001,29,"catch") +#20081=@"loc,{#10000},7,1,7,5" +locations_default(#20081,#10000,7,1,7,5) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,8,#20001,30,"(") +#20083=@"loc,{#10000},7,7,7,7" +locations_default(#20083,#10000,7,7,7,7) +hasLocation(#20082,#20083) #20084=* -lines(#20084,#20001,"catch (e if e instanceof Error) {}"," -") -hasLocation(#20084,#20023) -#20085=* -lines(#20085,#20001,"catch {}"," -") -hasLocation(#20085,#20038) +tokeninfo(#20084,6,#20001,31,"e") +#20085=@"loc,{#10000},7,8,7,8" +locations_default(#20085,#10000,7,8,7,8) +hasLocation(#20084,#20085) #20086=* -lines(#20086,#20001,""," -") -#20087=@"loc,{#10000},5,1,5,0" -locations_default(#20087,#10000,5,1,5,0) +tokeninfo(#20086,7,#20001,32,"if") +#20087=@"loc,{#10000},7,10,7,11" +locations_default(#20087,#10000,7,10,7,11) hasLocation(#20086,#20087) #20088=* -lines(#20088,#20001,"try {}"," -") -#20089=@"loc,{#10000},6,1,6,6" -locations_default(#20089,#10000,6,1,6,6) +tokeninfo(#20088,6,#20001,33,"e") +#20089=@"loc,{#10000},7,13,7,13" +locations_default(#20089,#10000,7,13,7,13) hasLocation(#20088,#20089) #20090=* -lines(#20090,#20001,"catch (e if e instanceof TypeError) {}"," -") -hasLocation(#20090,#20047) -#20091=* -lines(#20091,#20001,"catch (e if e instanceof Error) {}"," -") -hasLocation(#20091,#20061) +tokeninfo(#20090,7,#20001,34,"instanceof") +#20091=@"loc,{#10000},7,15,7,24" +locations_default(#20091,#10000,7,15,7,24) +hasLocation(#20090,#20091) #20092=* -lines(#20092,#20001,"catch {}"," -") -hasLocation(#20092,#20075) -#20093=* -lines(#20093,#20001,"finally {}"," -") -#20094=@"loc,{#10000},10,1,10,10" -locations_default(#20094,#10000,10,1,10,10) -hasLocation(#20093,#20094) -numlines(#20001,10,9,0) -#20095=* -tokeninfo(#20095,7,#20001,0,"try") -#20096=@"loc,{#10000},1,1,1,3" -locations_default(#20096,#10000,1,1,1,3) -hasLocation(#20095,#20096) -#20097=* -tokeninfo(#20097,8,#20001,1,"{") -#20098=@"loc,{#10000},1,5,1,5" -locations_default(#20098,#10000,1,5,1,5) -hasLocation(#20097,#20098) -#20099=* -tokeninfo(#20099,8,#20001,2,"}") -#20100=@"loc,{#10000},1,6,1,6" -locations_default(#20100,#10000,1,6,1,6) -hasLocation(#20099,#20100) -#20101=* -tokeninfo(#20101,7,#20001,3,"catch") -#20102=@"loc,{#10000},2,1,2,5" -locations_default(#20102,#10000,2,1,2,5) -hasLocation(#20101,#20102) -#20103=* -tokeninfo(#20103,8,#20001,4,"(") -#20104=@"loc,{#10000},2,7,2,7" -locations_default(#20104,#10000,2,7,2,7) -hasLocation(#20103,#20104) -#20105=* -tokeninfo(#20105,6,#20001,5,"e") -hasLocation(#20105,#20012) +tokeninfo(#20092,6,#20001,35,"TypeError") +#20093=@"loc,{#10000},7,26,7,34" +locations_default(#20093,#10000,7,26,7,34) +hasLocation(#20092,#20093) +#20094=* +tokeninfo(#20094,8,#20001,36,")") +#20095=@"loc,{#10000},7,35,7,35" +locations_default(#20095,#10000,7,35,7,35) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,8,#20001,37,"{") +#20097=@"loc,{#10000},7,37,7,37" +locations_default(#20097,#10000,7,37,7,37) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,8,#20001,38,"}") +#20099=@"loc,{#10000},7,38,7,38" +locations_default(#20099,#10000,7,38,7,38) +hasLocation(#20098,#20099) +#20100=* +tokeninfo(#20100,7,#20001,39,"catch") +#20101=@"loc,{#10000},8,1,8,5" +locations_default(#20101,#10000,8,1,8,5) +hasLocation(#20100,#20101) +#20102=* +tokeninfo(#20102,8,#20001,40,"(") +#20103=@"loc,{#10000},8,7,8,7" +locations_default(#20103,#10000,8,7,8,7) +hasLocation(#20102,#20103) +#20104=* +tokeninfo(#20104,6,#20001,41,"e") +#20105=@"loc,{#10000},8,8,8,8" +locations_default(#20105,#10000,8,8,8,8) +hasLocation(#20104,#20105) #20106=* -tokeninfo(#20106,7,#20001,6,"if") -#20107=@"loc,{#10000},2,10,2,11" -locations_default(#20107,#10000,2,10,2,11) +tokeninfo(#20106,7,#20001,42,"if") +#20107=@"loc,{#10000},8,10,8,11" +locations_default(#20107,#10000,8,10,8,11) hasLocation(#20106,#20107) #20108=* -tokeninfo(#20108,6,#20001,7,"e") -hasLocation(#20108,#20016) -#20109=* -tokeninfo(#20109,7,#20001,8,"instanceof") -#20110=@"loc,{#10000},2,15,2,24" -locations_default(#20110,#10000,2,15,2,24) -hasLocation(#20109,#20110) -#20111=* -tokeninfo(#20111,6,#20001,9,"TypeError") -hasLocation(#20111,#20018) +tokeninfo(#20108,6,#20001,43,"e") +#20109=@"loc,{#10000},8,13,8,13" +locations_default(#20109,#10000,8,13,8,13) +hasLocation(#20108,#20109) +#20110=* +tokeninfo(#20110,7,#20001,44,"instanceof") +#20111=@"loc,{#10000},8,15,8,24" +locations_default(#20111,#10000,8,15,8,24) +hasLocation(#20110,#20111) #20112=* -tokeninfo(#20112,8,#20001,10,")") -#20113=@"loc,{#10000},2,35,2,35" -locations_default(#20113,#10000,2,35,2,35) +tokeninfo(#20112,6,#20001,45,"Error") +#20113=@"loc,{#10000},8,26,8,30" +locations_default(#20113,#10000,8,26,8,30) hasLocation(#20112,#20113) #20114=* -tokeninfo(#20114,8,#20001,11,"{") -#20115=@"loc,{#10000},2,37,2,37" -locations_default(#20115,#10000,2,37,2,37) +tokeninfo(#20114,8,#20001,46,")") +#20115=@"loc,{#10000},8,31,8,31" +locations_default(#20115,#10000,8,31,8,31) hasLocation(#20114,#20115) #20116=* -tokeninfo(#20116,8,#20001,12,"}") -#20117=@"loc,{#10000},2,38,2,38" -locations_default(#20117,#10000,2,38,2,38) +tokeninfo(#20116,8,#20001,47,"{") +#20117=@"loc,{#10000},8,33,8,33" +locations_default(#20117,#10000,8,33,8,33) hasLocation(#20116,#20117) #20118=* -tokeninfo(#20118,7,#20001,13,"catch") -#20119=@"loc,{#10000},3,1,3,5" -locations_default(#20119,#10000,3,1,3,5) +tokeninfo(#20118,8,#20001,48,"}") +#20119=@"loc,{#10000},8,34,8,34" +locations_default(#20119,#10000,8,34,8,34) hasLocation(#20118,#20119) #20120=* -tokeninfo(#20120,8,#20001,14,"(") -#20121=@"loc,{#10000},3,7,3,7" -locations_default(#20121,#10000,3,7,3,7) +tokeninfo(#20120,7,#20001,49,"catch") +#20121=@"loc,{#10000},9,1,9,5" +locations_default(#20121,#10000,9,1,9,5) hasLocation(#20120,#20121) #20122=* -tokeninfo(#20122,6,#20001,15,"e") -hasLocation(#20122,#20027) -#20123=* -tokeninfo(#20123,7,#20001,16,"if") -#20124=@"loc,{#10000},3,10,3,11" -locations_default(#20124,#10000,3,10,3,11) -hasLocation(#20123,#20124) -#20125=* -tokeninfo(#20125,6,#20001,17,"e") -hasLocation(#20125,#20031) +tokeninfo(#20122,8,#20001,50,"{") +#20123=@"loc,{#10000},9,7,9,7" +locations_default(#20123,#10000,9,7,9,7) +hasLocation(#20122,#20123) +#20124=* +tokeninfo(#20124,8,#20001,51,"}") +#20125=@"loc,{#10000},9,8,9,8" +locations_default(#20125,#10000,9,8,9,8) +hasLocation(#20124,#20125) #20126=* -tokeninfo(#20126,7,#20001,18,"instanceof") -#20127=@"loc,{#10000},3,15,3,24" -locations_default(#20127,#10000,3,15,3,24) +tokeninfo(#20126,7,#20001,52,"finally") +#20127=@"loc,{#10000},10,1,10,7" +locations_default(#20127,#10000,10,1,10,7) hasLocation(#20126,#20127) #20128=* -tokeninfo(#20128,6,#20001,19,"Error") -hasLocation(#20128,#20033) -#20129=* -tokeninfo(#20129,8,#20001,20,")") -#20130=@"loc,{#10000},3,31,3,31" -locations_default(#20130,#10000,3,31,3,31) -hasLocation(#20129,#20130) -#20131=* -tokeninfo(#20131,8,#20001,21,"{") -#20132=@"loc,{#10000},3,33,3,33" -locations_default(#20132,#10000,3,33,3,33) -hasLocation(#20131,#20132) -#20133=* -tokeninfo(#20133,8,#20001,22,"}") -#20134=@"loc,{#10000},3,34,3,34" -locations_default(#20134,#10000,3,34,3,34) -hasLocation(#20133,#20134) +tokeninfo(#20128,8,#20001,53,"{") +#20129=@"loc,{#10000},10,9,10,9" +locations_default(#20129,#10000,10,9,10,9) +hasLocation(#20128,#20129) +#20130=* +tokeninfo(#20130,8,#20001,54,"}") +#20131=@"loc,{#10000},10,10,10,10" +locations_default(#20131,#10000,10,10,10,10) +hasLocation(#20130,#20131) +#20132=* +tokeninfo(#20132,0,#20001,55,"") +#20133=@"loc,{#10000},11,1,11,0" +locations_default(#20133,#10000,11,1,11,0) +hasLocation(#20132,#20133) +toplevels(#20001,0) +#20134=@"loc,{#10000},1,1,11,0" +locations_default(#20134,#10000,1,1,11,0) +hasLocation(#20001,#20134) #20135=* -tokeninfo(#20135,7,#20001,23,"catch") -#20136=@"loc,{#10000},4,1,4,5" -locations_default(#20136,#10000,4,1,4,5) +stmts(#20135,11,#20001,0,"try {}\n ... atch {}") +#20136=@"loc,{#10000},1,1,4,8" +locations_default(#20136,#10000,1,1,4,8) hasLocation(#20135,#20136) +stmtContainers(#20135,#20001) #20137=* -tokeninfo(#20137,8,#20001,24,"{") -#20138=@"loc,{#10000},4,7,4,7" -locations_default(#20138,#10000,4,7,4,7) +stmts(#20137,1,#20135,0,"{}") +#20138=@"loc,{#10000},1,5,1,6" +locations_default(#20138,#10000,1,5,1,6) hasLocation(#20137,#20138) +stmtContainers(#20137,#20001) #20139=* -tokeninfo(#20139,8,#20001,25,"}") -#20140=@"loc,{#10000},4,8,4,8" -locations_default(#20140,#10000,4,8,4,8) -hasLocation(#20139,#20140) -#20141=* -tokeninfo(#20141,7,#20001,26,"try") -#20142=@"loc,{#10000},6,1,6,3" -locations_default(#20142,#10000,6,1,6,3) -hasLocation(#20141,#20142) +stmts(#20139,20,#20135,1,"catch ( ... ror) {}") +hasLocation(#20139,#20005) +stmtContainers(#20139,#20001) +#20140=* +scopes(#20140,2) +scopenodes(#20139,#20140) +scopenesting(#20140,#20000) +#20141=@"var;{e};{#20140}" +variables(#20141,"e",#20140) +#20142=* +exprs(#20142,78,#20139,0,"e") +hasLocation(#20142,#20033) +enclosingStmt(#20142,#20139) +exprContainers(#20142,#20001) +literals("e","e",#20142) +decl(#20142,#20141) #20143=* -tokeninfo(#20143,8,#20001,27,"{") -#20144=@"loc,{#10000},6,5,6,5" -locations_default(#20144,#10000,6,5,6,5) +exprs(#20143,43,#20139,2,"e insta ... peError") +#20144=@"loc,{#10000},2,13,2,34" +locations_default(#20144,#10000,2,13,2,34) hasLocation(#20143,#20144) +enclosingStmt(#20143,#20139) +exprContainers(#20143,#20001) #20145=* -tokeninfo(#20145,8,#20001,28,"}") -#20146=@"loc,{#10000},6,6,6,6" -locations_default(#20146,#10000,6,6,6,6) -hasLocation(#20145,#20146) -#20147=* -tokeninfo(#20147,7,#20001,29,"catch") -#20148=@"loc,{#10000},7,1,7,5" -locations_default(#20148,#10000,7,1,7,5) -hasLocation(#20147,#20148) -#20149=* -tokeninfo(#20149,8,#20001,30,"(") -#20150=@"loc,{#10000},7,7,7,7" -locations_default(#20150,#10000,7,7,7,7) -hasLocation(#20149,#20150) +exprs(#20145,79,#20143,0,"e") +hasLocation(#20145,#20037) +enclosingStmt(#20145,#20139) +exprContainers(#20145,#20001) +literals("e","e",#20145) +bind(#20145,#20141) +#20146=* +exprs(#20146,79,#20143,1,"TypeError") +hasLocation(#20146,#20041) +enclosingStmt(#20146,#20139) +exprContainers(#20146,#20001) +literals("TypeError","TypeError",#20146) +#20147=@"var;{TypeError};{#20000}" +variables(#20147,"TypeError",#20000) +bind(#20146,#20147) +#20148=* +stmts(#20148,1,#20139,1,"{}") +#20149=@"loc,{#10000},2,37,2,38" +locations_default(#20149,#10000,2,37,2,38) +hasLocation(#20148,#20149) +stmtContainers(#20148,#20001) +#20150=* +stmts(#20150,20,#20135,2,"catch ( ... ror) {}") +hasLocation(#20150,#20007) +stmtContainers(#20150,#20001) #20151=* -tokeninfo(#20151,6,#20001,31,"e") -hasLocation(#20151,#20051) -#20152=* -tokeninfo(#20152,7,#20001,32,"if") -#20153=@"loc,{#10000},7,10,7,11" -locations_default(#20153,#10000,7,10,7,11) -hasLocation(#20152,#20153) +scopes(#20151,2) +scopenodes(#20150,#20151) +scopenesting(#20151,#20000) +#20152=@"var;{e};{#20151}" +variables(#20152,"e",#20151) +#20153=* +exprs(#20153,78,#20150,0,"e") +hasLocation(#20153,#20053) +enclosingStmt(#20153,#20150) +exprContainers(#20153,#20001) +literals("e","e",#20153) +decl(#20153,#20152) #20154=* -tokeninfo(#20154,6,#20001,33,"e") -hasLocation(#20154,#20055) -#20155=* -tokeninfo(#20155,7,#20001,34,"instanceof") -#20156=@"loc,{#10000},7,15,7,24" -locations_default(#20156,#10000,7,15,7,24) -hasLocation(#20155,#20156) +exprs(#20154,43,#20150,2,"e instanceof Error") +#20155=@"loc,{#10000},3,13,3,30" +locations_default(#20155,#10000,3,13,3,30) +hasLocation(#20154,#20155) +enclosingStmt(#20154,#20150) +exprContainers(#20154,#20001) +#20156=* +exprs(#20156,79,#20154,0,"e") +hasLocation(#20156,#20057) +enclosingStmt(#20156,#20150) +exprContainers(#20156,#20001) +literals("e","e",#20156) +bind(#20156,#20152) #20157=* -tokeninfo(#20157,6,#20001,35,"TypeError") -hasLocation(#20157,#20057) -#20158=* -tokeninfo(#20158,8,#20001,36,")") -#20159=@"loc,{#10000},7,35,7,35" -locations_default(#20159,#10000,7,35,7,35) -hasLocation(#20158,#20159) -#20160=* -tokeninfo(#20160,8,#20001,37,"{") -#20161=@"loc,{#10000},7,37,7,37" -locations_default(#20161,#10000,7,37,7,37) -hasLocation(#20160,#20161) +exprs(#20157,79,#20154,1,"Error") +hasLocation(#20157,#20061) +enclosingStmt(#20157,#20150) +exprContainers(#20157,#20001) +literals("Error","Error",#20157) +#20158=@"var;{Error};{#20000}" +variables(#20158,"Error",#20000) +bind(#20157,#20158) +#20159=* +stmts(#20159,1,#20150,1,"{}") +#20160=@"loc,{#10000},3,33,3,34" +locations_default(#20160,#10000,3,33,3,34) +hasLocation(#20159,#20160) +stmtContainers(#20159,#20001) +#20161=* +stmts(#20161,20,#20135,3,"catch {}") +hasLocation(#20161,#20009) +stmtContainers(#20161,#20001) #20162=* -tokeninfo(#20162,8,#20001,38,"}") -#20163=@"loc,{#10000},7,38,7,38" -locations_default(#20163,#10000,7,38,7,38) -hasLocation(#20162,#20163) -#20164=* -tokeninfo(#20164,7,#20001,39,"catch") -#20165=@"loc,{#10000},8,1,8,5" -locations_default(#20165,#10000,8,1,8,5) -hasLocation(#20164,#20165) -#20166=* -tokeninfo(#20166,8,#20001,40,"(") -#20167=@"loc,{#10000},8,7,8,7" -locations_default(#20167,#10000,8,7,8,7) -hasLocation(#20166,#20167) -#20168=* -tokeninfo(#20168,6,#20001,41,"e") -hasLocation(#20168,#20065) +scopes(#20162,2) +scopenodes(#20161,#20162) +scopenesting(#20162,#20000) +#20163=* +stmts(#20163,1,#20161,1,"{}") +#20164=@"loc,{#10000},4,7,4,8" +locations_default(#20164,#10000,4,7,4,8) +hasLocation(#20163,#20164) +stmtContainers(#20163,#20001) +#20165=* +stmts(#20165,11,#20001,1,"try {}\n ... ally {}") +#20166=@"loc,{#10000},6,1,10,10" +locations_default(#20166,#10000,6,1,10,10) +hasLocation(#20165,#20166) +stmtContainers(#20165,#20001) +#20167=* +stmts(#20167,1,#20165,0,"{}") +#20168=@"loc,{#10000},6,5,6,6" +locations_default(#20168,#10000,6,5,6,6) +hasLocation(#20167,#20168) +stmtContainers(#20167,#20001) #20169=* -tokeninfo(#20169,7,#20001,42,"if") -#20170=@"loc,{#10000},8,10,8,11" -locations_default(#20170,#10000,8,10,8,11) -hasLocation(#20169,#20170) -#20171=* -tokeninfo(#20171,6,#20001,43,"e") -hasLocation(#20171,#20069) +stmts(#20169,20,#20165,1,"catch ( ... ror) {}") +hasLocation(#20169,#20015) +stmtContainers(#20169,#20001) +#20170=* +scopes(#20170,2) +scopenodes(#20169,#20170) +scopenesting(#20170,#20000) +#20171=@"var;{e};{#20170}" +variables(#20171,"e",#20170) #20172=* -tokeninfo(#20172,7,#20001,44,"instanceof") -#20173=@"loc,{#10000},8,15,8,24" -locations_default(#20173,#10000,8,15,8,24) -hasLocation(#20172,#20173) -#20174=* -tokeninfo(#20174,6,#20001,45,"Error") -hasLocation(#20174,#20071) +exprs(#20172,78,#20169,0,"e") +hasLocation(#20172,#20085) +enclosingStmt(#20172,#20169) +exprContainers(#20172,#20001) +literals("e","e",#20172) +decl(#20172,#20171) +#20173=* +exprs(#20173,43,#20169,2,"e insta ... peError") +#20174=@"loc,{#10000},7,13,7,34" +locations_default(#20174,#10000,7,13,7,34) +hasLocation(#20173,#20174) +enclosingStmt(#20173,#20169) +exprContainers(#20173,#20001) #20175=* -tokeninfo(#20175,8,#20001,46,")") -#20176=@"loc,{#10000},8,31,8,31" -locations_default(#20176,#10000,8,31,8,31) -hasLocation(#20175,#20176) +exprs(#20175,79,#20173,0,"e") +hasLocation(#20175,#20089) +enclosingStmt(#20175,#20169) +exprContainers(#20175,#20001) +literals("e","e",#20175) +bind(#20175,#20171) +#20176=* +exprs(#20176,79,#20173,1,"TypeError") +hasLocation(#20176,#20093) +enclosingStmt(#20176,#20169) +exprContainers(#20176,#20001) +literals("TypeError","TypeError",#20176) +bind(#20176,#20147) #20177=* -tokeninfo(#20177,8,#20001,47,"{") -#20178=@"loc,{#10000},8,33,8,33" -locations_default(#20178,#10000,8,33,8,33) +stmts(#20177,1,#20169,1,"{}") +#20178=@"loc,{#10000},7,37,7,38" +locations_default(#20178,#10000,7,37,7,38) hasLocation(#20177,#20178) +stmtContainers(#20177,#20001) #20179=* -tokeninfo(#20179,8,#20001,48,"}") -#20180=@"loc,{#10000},8,34,8,34" -locations_default(#20180,#10000,8,34,8,34) -hasLocation(#20179,#20180) -#20181=* -tokeninfo(#20181,7,#20001,49,"catch") -#20182=@"loc,{#10000},9,1,9,5" -locations_default(#20182,#10000,9,1,9,5) -hasLocation(#20181,#20182) +stmts(#20179,20,#20165,2,"catch ( ... ror) {}") +hasLocation(#20179,#20017) +stmtContainers(#20179,#20001) +#20180=* +scopes(#20180,2) +scopenodes(#20179,#20180) +scopenesting(#20180,#20000) +#20181=@"var;{e};{#20180}" +variables(#20181,"e",#20180) +#20182=* +exprs(#20182,78,#20179,0,"e") +hasLocation(#20182,#20105) +enclosingStmt(#20182,#20179) +exprContainers(#20182,#20001) +literals("e","e",#20182) +decl(#20182,#20181) #20183=* -tokeninfo(#20183,8,#20001,50,"{") -#20184=@"loc,{#10000},9,7,9,7" -locations_default(#20184,#10000,9,7,9,7) +exprs(#20183,43,#20179,2,"e instanceof Error") +#20184=@"loc,{#10000},8,13,8,30" +locations_default(#20184,#10000,8,13,8,30) hasLocation(#20183,#20184) +enclosingStmt(#20183,#20179) +exprContainers(#20183,#20001) #20185=* -tokeninfo(#20185,8,#20001,51,"}") -#20186=@"loc,{#10000},9,8,9,8" -locations_default(#20186,#10000,9,8,9,8) -hasLocation(#20185,#20186) +exprs(#20185,79,#20183,0,"e") +hasLocation(#20185,#20109) +enclosingStmt(#20185,#20179) +exprContainers(#20185,#20001) +literals("e","e",#20185) +bind(#20185,#20181) +#20186=* +exprs(#20186,79,#20183,1,"Error") +hasLocation(#20186,#20113) +enclosingStmt(#20186,#20179) +exprContainers(#20186,#20001) +literals("Error","Error",#20186) +bind(#20186,#20158) #20187=* -tokeninfo(#20187,7,#20001,52,"finally") -#20188=@"loc,{#10000},10,1,10,7" -locations_default(#20188,#10000,10,1,10,7) +stmts(#20187,1,#20179,1,"{}") +#20188=@"loc,{#10000},8,33,8,34" +locations_default(#20188,#10000,8,33,8,34) hasLocation(#20187,#20188) +stmtContainers(#20187,#20001) #20189=* -tokeninfo(#20189,8,#20001,53,"{") -#20190=@"loc,{#10000},10,9,10,9" -locations_default(#20190,#10000,10,9,10,9) -hasLocation(#20189,#20190) +stmts(#20189,20,#20165,3,"catch {}") +hasLocation(#20189,#20019) +stmtContainers(#20189,#20001) +#20190=* +scopes(#20190,2) +scopenodes(#20189,#20190) +scopenesting(#20190,#20000) #20191=* -tokeninfo(#20191,8,#20001,54,"}") -#20192=@"loc,{#10000},10,10,10,10" -locations_default(#20192,#10000,10,10,10,10) +stmts(#20191,1,#20189,1,"{}") +#20192=@"loc,{#10000},9,7,9,8" +locations_default(#20192,#10000,9,7,9,8) hasLocation(#20191,#20192) +stmtContainers(#20191,#20001) #20193=* -tokeninfo(#20193,0,#20001,55,"") -#20194=@"loc,{#10000},11,1,11,0" -locations_default(#20194,#10000,11,1,11,0) +stmts(#20193,1,#20165,-1,"{}") +#20194=@"loc,{#10000},10,9,10,10" +locations_default(#20194,#10000,10,9,10,10) hasLocation(#20193,#20194) +stmtContainers(#20193,#20001) #20195=* entry_cfg_node(#20195,#20001) #20196=@"loc,{#10000},1,1,1,0" @@ -599,44 +599,44 @@ locations_default(#20196,#10000,1,1,1,0) hasLocation(#20195,#20196) #20197=* exit_cfg_node(#20197,#20001) -hasLocation(#20197,#20194) -successor(#20042,#20044) -successor(#20044,#20079) -successor(#20046,#20050) -successor(#20056,#20052) -successor(#20054,#20056) -successor(#20052,#20058) -successor(#20052,#20060) -successor(#20050,#20054) -successor(#20058,#20079) -successor(#20060,#20064) -successor(#20070,#20066) -successor(#20068,#20070) -successor(#20066,#20072) -successor(#20066,#20074) -successor(#20064,#20068) -successor(#20072,#20079) -successor(#20074,#20077) -successor(#20077,#20079) -successor(#20079,#20197) -successor(#20003,#20005) -successor(#20005,#20042) -successor(#20007,#20011) -successor(#20017,#20013) -successor(#20015,#20017) -successor(#20013,#20020) -successor(#20013,#20022) -successor(#20011,#20015) -successor(#20020,#20042) -successor(#20022,#20026) -successor(#20032,#20028) -successor(#20030,#20032) -successor(#20028,#20035) -successor(#20028,#20037) -successor(#20026,#20030) -successor(#20035,#20042) -successor(#20037,#20040) -successor(#20040,#20042) -successor(#20195,#20003) +hasLocation(#20197,#20133) +successor(#20165,#20167) +successor(#20167,#20193) +successor(#20169,#20172) +successor(#20176,#20173) +successor(#20175,#20176) +successor(#20173,#20177) +successor(#20173,#20179) +successor(#20172,#20175) +successor(#20177,#20193) +successor(#20179,#20182) +successor(#20186,#20183) +successor(#20185,#20186) +successor(#20183,#20187) +successor(#20183,#20189) +successor(#20182,#20185) +successor(#20187,#20193) +successor(#20189,#20191) +successor(#20191,#20193) +successor(#20193,#20197) +successor(#20135,#20137) +successor(#20137,#20165) +successor(#20139,#20142) +successor(#20146,#20143) +successor(#20145,#20146) +successor(#20143,#20148) +successor(#20143,#20150) +successor(#20142,#20145) +successor(#20148,#20165) +successor(#20150,#20153) +successor(#20157,#20154) +successor(#20156,#20157) +successor(#20154,#20159) +successor(#20154,#20161) +successor(#20153,#20156) +successor(#20159,#20165) +successor(#20161,#20163) +successor(#20163,#20165) +successor(#20195,#20135) numlines(#10000,10,9,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/esnext/output/trap/catchNoBinding.js.trap b/javascript/extractor/tests/esnext/output/trap/catchNoBinding.js.trap index 4950424398f..1049ef198eb 100644 --- a/javascript/extractor/tests/esnext/output/trap/catchNoBinding.js.trap +++ b/javascript/extractor/tests/esnext/output/trap/catchNoBinding.js.trap @@ -9,241 +9,241 @@ 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=* -stmts(#20003,11,#20001,0,"try {\n\t ... ly {}\n}") -#20004=@"loc,{#10000},1,1,5,1" -locations_default(#20004,#10000,1,1,5,1) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -stmts(#20005,1,#20003,0,"{\n\ttry {} catch {}\n}") -#20006=@"loc,{#10000},1,5,3,1" -locations_default(#20006,#10000,1,5,3,1) -hasLocation(#20005,#20006) -stmtContainers(#20005,#20001) -#20007=* -stmts(#20007,11,#20005,0,"try {} catch {}") -#20008=@"loc,{#10000},2,2,2,16" -locations_default(#20008,#10000,2,2,2,16) -hasLocation(#20007,#20008) -stmtContainers(#20007,#20001) -#20009=* -stmts(#20009,1,#20007,0,"{}") -#20010=@"loc,{#10000},2,6,2,7" -locations_default(#20010,#10000,2,6,2,7) -hasLocation(#20009,#20010) -stmtContainers(#20009,#20001) -#20011=* -stmts(#20011,20,#20007,1,"catch {}") -#20012=@"loc,{#10000},2,9,2,16" -locations_default(#20012,#10000,2,9,2,16) -hasLocation(#20011,#20012) -stmtContainers(#20011,#20001) -#20013=* -scopes(#20013,2) -scopenodes(#20011,#20013) -scopenesting(#20013,#20000) -#20014=* -stmts(#20014,1,#20011,1,"{}") -#20015=@"loc,{#10000},2,15,2,16" -locations_default(#20015,#10000,2,15,2,16) -hasLocation(#20014,#20015) -stmtContainers(#20014,#20001) -#20016=* -stmts(#20016,20,#20003,1,"catch { ... ly {}\n}") -#20017=@"loc,{#10000},3,3,5,1" -locations_default(#20017,#10000,3,3,5,1) -hasLocation(#20016,#20017) -stmtContainers(#20016,#20001) -#20018=* -scopes(#20018,2) -scopenodes(#20016,#20018) -scopenesting(#20018,#20000) -#20019=* -stmts(#20019,1,#20016,1,"{\n\ttry ... ly {}\n}") -#20020=@"loc,{#10000},3,9,5,1" -locations_default(#20020,#10000,3,9,5,1) -hasLocation(#20019,#20020) -stmtContainers(#20019,#20001) -#20021=* -stmts(#20021,11,#20019,0,"try {} ... ally {}") -#20022=@"loc,{#10000},4,2,4,27" -locations_default(#20022,#10000,4,2,4,27) -hasLocation(#20021,#20022) -stmtContainers(#20021,#20001) -#20023=* -stmts(#20023,1,#20021,0,"{}") -#20024=@"loc,{#10000},4,6,4,7" -locations_default(#20024,#10000,4,6,4,7) -hasLocation(#20023,#20024) -stmtContainers(#20023,#20001) -#20025=* -stmts(#20025,20,#20021,1,"catch {}") -#20026=@"loc,{#10000},4,9,4,16" -locations_default(#20026,#10000,4,9,4,16) -hasLocation(#20025,#20026) -stmtContainers(#20025,#20001) -#20027=* -scopes(#20027,2) -scopenodes(#20025,#20027) -scopenesting(#20027,#20018) -#20028=* -stmts(#20028,1,#20025,1,"{}") -#20029=@"loc,{#10000},4,15,4,16" -locations_default(#20029,#10000,4,15,4,16) -hasLocation(#20028,#20029) -stmtContainers(#20028,#20001) -#20030=* -stmts(#20030,1,#20021,-1,"{}") -#20031=@"loc,{#10000},4,26,4,27" -locations_default(#20031,#10000,4,26,4,27) -hasLocation(#20030,#20031) -stmtContainers(#20030,#20001) -#20032=* -lines(#20032,#20001,"try {"," +#20002=* +lines(#20002,#20001,"try {"," ") -#20033=@"loc,{#10000},1,1,1,5" -locations_default(#20033,#10000,1,1,1,5) +#20003=@"loc,{#10000},1,1,1,5" +locations_default(#20003,#10000,1,1,1,5) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," try {} catch {}"," +") +#20005=@"loc,{#10000},2,1,2,16" +locations_default(#20005,#10000,2,1,2,16) +hasLocation(#20004,#20005) +indentation(#10000,2," ",1) +#20006=* +lines(#20006,#20001,"} catch {"," +") +#20007=@"loc,{#10000},3,1,3,9" +locations_default(#20007,#10000,3,1,3,9) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001," try {} catch {} finally {}"," +") +#20009=@"loc,{#10000},4,1,4,27" +locations_default(#20009,#10000,4,1,4,27) +hasLocation(#20008,#20009) +indentation(#10000,4," ",1) +#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,"try") +#20013=@"loc,{#10000},1,1,1,3" +locations_default(#20013,#10000,1,1,1,3) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,1,"{") +#20015=@"loc,{#10000},1,5,1,5" +locations_default(#20015,#10000,1,5,1,5) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,7,#20001,2,"try") +#20017=@"loc,{#10000},2,2,2,4" +locations_default(#20017,#10000,2,2,2,4) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,3,"{") +#20019=@"loc,{#10000},2,6,2,6" +locations_default(#20019,#10000,2,6,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,7,#20001,5,"catch") +#20023=@"loc,{#10000},2,9,2,13" +locations_default(#20023,#10000,2,9,2,13) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,6,"{") +#20025=@"loc,{#10000},2,15,2,15" +locations_default(#20025,#10000,2,15,2,15) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,7,"}") +#20027=@"loc,{#10000},2,16,2,16" +locations_default(#20027,#10000,2,16,2,16) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,8,"}") +#20029=@"loc,{#10000},3,1,3,1" +locations_default(#20029,#10000,3,1,3,1) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,7,#20001,9,"catch") +#20031=@"loc,{#10000},3,3,3,7" +locations_default(#20031,#10000,3,3,3,7) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,10,"{") +#20033=@"loc,{#10000},3,9,3,9" +locations_default(#20033,#10000,3,9,3,9) hasLocation(#20032,#20033) #20034=* -lines(#20034,#20001," try {} catch {}"," -") -#20035=@"loc,{#10000},2,1,2,16" -locations_default(#20035,#10000,2,1,2,16) +tokeninfo(#20034,7,#20001,11,"try") +#20035=@"loc,{#10000},4,2,4,4" +locations_default(#20035,#10000,4,2,4,4) hasLocation(#20034,#20035) -indentation(#10000,2," ",1) #20036=* -lines(#20036,#20001,"} catch {"," -") -#20037=@"loc,{#10000},3,1,3,9" -locations_default(#20037,#10000,3,1,3,9) +tokeninfo(#20036,8,#20001,12,"{") +#20037=@"loc,{#10000},4,6,4,6" +locations_default(#20037,#10000,4,6,4,6) hasLocation(#20036,#20037) #20038=* -lines(#20038,#20001," try {} catch {} finally {}"," -") -#20039=@"loc,{#10000},4,1,4,27" -locations_default(#20039,#10000,4,1,4,27) +tokeninfo(#20038,8,#20001,13,"}") +#20039=@"loc,{#10000},4,7,4,7" +locations_default(#20039,#10000,4,7,4,7) hasLocation(#20038,#20039) -indentation(#10000,4," ",1) #20040=* -lines(#20040,#20001,"}"," -") -#20041=@"loc,{#10000},5,1,5,1" -locations_default(#20041,#10000,5,1,5,1) +tokeninfo(#20040,7,#20001,14,"catch") +#20041=@"loc,{#10000},4,9,4,13" +locations_default(#20041,#10000,4,9,4,13) hasLocation(#20040,#20041) -numlines(#20001,5,5,0) #20042=* -tokeninfo(#20042,7,#20001,0,"try") -#20043=@"loc,{#10000},1,1,1,3" -locations_default(#20043,#10000,1,1,1,3) +tokeninfo(#20042,8,#20001,15,"{") +#20043=@"loc,{#10000},4,15,4,15" +locations_default(#20043,#10000,4,15,4,15) hasLocation(#20042,#20043) #20044=* -tokeninfo(#20044,8,#20001,1,"{") -#20045=@"loc,{#10000},1,5,1,5" -locations_default(#20045,#10000,1,5,1,5) +tokeninfo(#20044,8,#20001,16,"}") +#20045=@"loc,{#10000},4,16,4,16" +locations_default(#20045,#10000,4,16,4,16) hasLocation(#20044,#20045) #20046=* -tokeninfo(#20046,7,#20001,2,"try") -#20047=@"loc,{#10000},2,2,2,4" -locations_default(#20047,#10000,2,2,2,4) +tokeninfo(#20046,7,#20001,17,"finally") +#20047=@"loc,{#10000},4,18,4,24" +locations_default(#20047,#10000,4,18,4,24) hasLocation(#20046,#20047) #20048=* -tokeninfo(#20048,8,#20001,3,"{") -#20049=@"loc,{#10000},2,6,2,6" -locations_default(#20049,#10000,2,6,2,6) +tokeninfo(#20048,8,#20001,18,"{") +#20049=@"loc,{#10000},4,26,4,26" +locations_default(#20049,#10000,4,26,4,26) hasLocation(#20048,#20049) #20050=* -tokeninfo(#20050,8,#20001,4,"}") -#20051=@"loc,{#10000},2,7,2,7" -locations_default(#20051,#10000,2,7,2,7) +tokeninfo(#20050,8,#20001,19,"}") +#20051=@"loc,{#10000},4,27,4,27" +locations_default(#20051,#10000,4,27,4,27) hasLocation(#20050,#20051) #20052=* -tokeninfo(#20052,7,#20001,5,"catch") -#20053=@"loc,{#10000},2,9,2,13" -locations_default(#20053,#10000,2,9,2,13) -hasLocation(#20052,#20053) -#20054=* -tokeninfo(#20054,8,#20001,6,"{") -#20055=@"loc,{#10000},2,15,2,15" -locations_default(#20055,#10000,2,15,2,15) -hasLocation(#20054,#20055) +tokeninfo(#20052,8,#20001,20,"}") +hasLocation(#20052,#20011) +#20053=* +tokeninfo(#20053,0,#20001,21,"") +#20054=@"loc,{#10000},6,1,6,0" +locations_default(#20054,#10000,6,1,6,0) +hasLocation(#20053,#20054) +toplevels(#20001,0) +#20055=@"loc,{#10000},1,1,6,0" +locations_default(#20055,#10000,1,1,6,0) +hasLocation(#20001,#20055) #20056=* -tokeninfo(#20056,8,#20001,7,"}") -#20057=@"loc,{#10000},2,16,2,16" -locations_default(#20057,#10000,2,16,2,16) +stmts(#20056,11,#20001,0,"try {\n\t ... ly {}\n}") +#20057=@"loc,{#10000},1,1,5,1" +locations_default(#20057,#10000,1,1,5,1) hasLocation(#20056,#20057) +stmtContainers(#20056,#20001) #20058=* -tokeninfo(#20058,8,#20001,8,"}") -#20059=@"loc,{#10000},3,1,3,1" -locations_default(#20059,#10000,3,1,3,1) +stmts(#20058,1,#20056,0,"{\n\ttry {} catch {}\n}") +#20059=@"loc,{#10000},1,5,3,1" +locations_default(#20059,#10000,1,5,3,1) hasLocation(#20058,#20059) +stmtContainers(#20058,#20001) #20060=* -tokeninfo(#20060,7,#20001,9,"catch") -#20061=@"loc,{#10000},3,3,3,7" -locations_default(#20061,#10000,3,3,3,7) +stmts(#20060,11,#20058,0,"try {} catch {}") +#20061=@"loc,{#10000},2,2,2,16" +locations_default(#20061,#10000,2,2,2,16) hasLocation(#20060,#20061) +stmtContainers(#20060,#20001) #20062=* -tokeninfo(#20062,8,#20001,10,"{") -#20063=@"loc,{#10000},3,9,3,9" -locations_default(#20063,#10000,3,9,3,9) +stmts(#20062,1,#20060,0,"{}") +#20063=@"loc,{#10000},2,6,2,7" +locations_default(#20063,#10000,2,6,2,7) hasLocation(#20062,#20063) +stmtContainers(#20062,#20001) #20064=* -tokeninfo(#20064,7,#20001,11,"try") -#20065=@"loc,{#10000},4,2,4,4" -locations_default(#20065,#10000,4,2,4,4) +stmts(#20064,20,#20060,1,"catch {}") +#20065=@"loc,{#10000},2,9,2,16" +locations_default(#20065,#10000,2,9,2,16) hasLocation(#20064,#20065) +stmtContainers(#20064,#20001) #20066=* -tokeninfo(#20066,8,#20001,12,"{") -#20067=@"loc,{#10000},4,6,4,6" -locations_default(#20067,#10000,4,6,4,6) -hasLocation(#20066,#20067) -#20068=* -tokeninfo(#20068,8,#20001,13,"}") -#20069=@"loc,{#10000},4,7,4,7" -locations_default(#20069,#10000,4,7,4,7) -hasLocation(#20068,#20069) -#20070=* -tokeninfo(#20070,7,#20001,14,"catch") -#20071=@"loc,{#10000},4,9,4,13" -locations_default(#20071,#10000,4,9,4,13) -hasLocation(#20070,#20071) +scopes(#20066,2) +scopenodes(#20064,#20066) +scopenesting(#20066,#20000) +#20067=* +stmts(#20067,1,#20064,1,"{}") +#20068=@"loc,{#10000},2,15,2,16" +locations_default(#20068,#10000,2,15,2,16) +hasLocation(#20067,#20068) +stmtContainers(#20067,#20001) +#20069=* +stmts(#20069,20,#20056,1,"catch { ... ly {}\n}") +#20070=@"loc,{#10000},3,3,5,1" +locations_default(#20070,#10000,3,3,5,1) +hasLocation(#20069,#20070) +stmtContainers(#20069,#20001) +#20071=* +scopes(#20071,2) +scopenodes(#20069,#20071) +scopenesting(#20071,#20000) #20072=* -tokeninfo(#20072,8,#20001,15,"{") -#20073=@"loc,{#10000},4,15,4,15" -locations_default(#20073,#10000,4,15,4,15) +stmts(#20072,1,#20069,1,"{\n\ttry ... ly {}\n}") +#20073=@"loc,{#10000},3,9,5,1" +locations_default(#20073,#10000,3,9,5,1) hasLocation(#20072,#20073) +stmtContainers(#20072,#20001) #20074=* -tokeninfo(#20074,8,#20001,16,"}") -#20075=@"loc,{#10000},4,16,4,16" -locations_default(#20075,#10000,4,16,4,16) +stmts(#20074,11,#20072,0,"try {} ... ally {}") +#20075=@"loc,{#10000},4,2,4,27" +locations_default(#20075,#10000,4,2,4,27) hasLocation(#20074,#20075) +stmtContainers(#20074,#20001) #20076=* -tokeninfo(#20076,7,#20001,17,"finally") -#20077=@"loc,{#10000},4,18,4,24" -locations_default(#20077,#10000,4,18,4,24) +stmts(#20076,1,#20074,0,"{}") +#20077=@"loc,{#10000},4,6,4,7" +locations_default(#20077,#10000,4,6,4,7) hasLocation(#20076,#20077) +stmtContainers(#20076,#20001) #20078=* -tokeninfo(#20078,8,#20001,18,"{") -#20079=@"loc,{#10000},4,26,4,26" -locations_default(#20079,#10000,4,26,4,26) +stmts(#20078,20,#20074,1,"catch {}") +#20079=@"loc,{#10000},4,9,4,16" +locations_default(#20079,#10000,4,9,4,16) hasLocation(#20078,#20079) +stmtContainers(#20078,#20001) #20080=* -tokeninfo(#20080,8,#20001,19,"}") -#20081=@"loc,{#10000},4,27,4,27" -locations_default(#20081,#10000,4,27,4,27) -hasLocation(#20080,#20081) -#20082=* -tokeninfo(#20082,8,#20001,20,"}") -hasLocation(#20082,#20041) +scopes(#20080,2) +scopenodes(#20078,#20080) +scopenesting(#20080,#20071) +#20081=* +stmts(#20081,1,#20078,1,"{}") +#20082=@"loc,{#10000},4,15,4,16" +locations_default(#20082,#10000,4,15,4,16) +hasLocation(#20081,#20082) +stmtContainers(#20081,#20001) #20083=* -tokeninfo(#20083,0,#20001,21,"") -#20084=@"loc,{#10000},6,1,6,0" -locations_default(#20084,#10000,6,1,6,0) +stmts(#20083,1,#20074,-1,"{}") +#20084=@"loc,{#10000},4,26,4,27" +locations_default(#20084,#10000,4,26,4,27) hasLocation(#20083,#20084) +stmtContainers(#20083,#20001) #20085=* entry_cfg_node(#20085,#20001) #20086=@"loc,{#10000},1,1,1,0" @@ -251,20 +251,20 @@ locations_default(#20086,#10000,1,1,1,0) hasLocation(#20085,#20086) #20087=* exit_cfg_node(#20087,#20001) -hasLocation(#20087,#20084) -successor(#20003,#20005) -successor(#20005,#20007) -successor(#20007,#20009) -successor(#20009,#20087) -successor(#20011,#20014) -successor(#20014,#20087) -successor(#20016,#20019) -successor(#20019,#20021) -successor(#20021,#20023) -successor(#20023,#20030) -successor(#20025,#20028) -successor(#20028,#20030) -successor(#20030,#20087) -successor(#20085,#20003) +hasLocation(#20087,#20054) +successor(#20056,#20058) +successor(#20058,#20060) +successor(#20060,#20062) +successor(#20062,#20087) +successor(#20064,#20067) +successor(#20067,#20087) +successor(#20069,#20072) +successor(#20072,#20074) +successor(#20074,#20076) +successor(#20076,#20083) +successor(#20078,#20081) +successor(#20081,#20083) +successor(#20083,#20087) +successor(#20085,#20056) numlines(#10000,5,5,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/esnext/output/trap/dynamic-import.js.trap b/javascript/extractor/tests/esnext/output/trap/dynamic-import.js.trap index ed1dd37705b..5539e654b68 100644 --- a/javascript/extractor/tests/esnext/output/trap/dynamic-import.js.trap +++ b/javascript/extractor/tests/esnext/output/trap/dynamic-import.js.trap @@ -9,309 +9,309 @@ 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=@"module;{#10000},1,1" -scopes(#20003,3) -scopenodes(#20001,#20003) -scopenesting(#20003,#20000) -isModule(#20001) +#20002=* +lines(#20002,#20001,"import(""m"");"," +") +#20003=@"loc,{#10000},1,1,1,12" +locations_default(#20003,#10000,1,1,1,12) +hasLocation(#20002,#20003) #20004=* -stmts(#20004,2,#20001,0,"import(""m"");") -#20005=@"loc,{#10000},1,1,1,12" -locations_default(#20005,#10000,1,1,1,12) +lines(#20004,#20001,"b ? import(""n"") : {};"," +") +#20005=@"loc,{#10000},2,1,2,21" +locations_default(#20005,#10000,2,1,2,21) hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) #20006=* -exprs(#20006,99,#20004,0,"import(""m"")") -#20007=@"loc,{#10000},1,1,1,11" -locations_default(#20007,#10000,1,1,1,11) +lines(#20006,#20001,"import(""o"").then((o) => {});"," +") +#20007=@"loc,{#10000},3,1,3,28" +locations_default(#20007,#10000,3,1,3,28) hasLocation(#20006,#20007) -enclosingStmt(#20006,#20004) -exprContainers(#20006,#20001) -#20008=* -exprs(#20008,4,#20006,0,"""m""") -#20009=@"loc,{#10000},1,8,1,10" -locations_default(#20009,#10000,1,8,1,10) -hasLocation(#20008,#20009) -enclosingStmt(#20008,#20004) -exprContainers(#20008,#20001) -literals("m","""m""",#20008) -#20010=* -stmts(#20010,2,#20001,1,"b ? imp ... ) : {};") -#20011=@"loc,{#10000},2,1,2,21" -locations_default(#20011,#10000,2,1,2,21) -hasLocation(#20010,#20011) -stmtContainers(#20010,#20001) -#20012=* -exprs(#20012,11,#20010,0,"b ? import(""n"") : {}") -#20013=@"loc,{#10000},2,1,2,20" -locations_default(#20013,#10000,2,1,2,20) -hasLocation(#20012,#20013) -enclosingStmt(#20012,#20010) -exprContainers(#20012,#20001) -#20014=* -exprs(#20014,79,#20012,0,"b") -#20015=@"loc,{#10000},2,1,2,1" -locations_default(#20015,#10000,2,1,2,1) -hasLocation(#20014,#20015) -enclosingStmt(#20014,#20010) -exprContainers(#20014,#20001) -literals("b","b",#20014) -#20016=@"var;{b};{#20000}" -variables(#20016,"b",#20000) -bind(#20014,#20016) -#20017=* -exprs(#20017,99,#20012,1,"import(""n"")") -#20018=@"loc,{#10000},2,5,2,15" -locations_default(#20018,#10000,2,5,2,15) -hasLocation(#20017,#20018) -enclosingStmt(#20017,#20010) -exprContainers(#20017,#20001) -#20019=* -exprs(#20019,4,#20017,0,"""n""") -#20020=@"loc,{#10000},2,12,2,14" -locations_default(#20020,#10000,2,12,2,14) -hasLocation(#20019,#20020) -enclosingStmt(#20019,#20010) -exprContainers(#20019,#20001) -literals("n","""n""",#20019) -#20021=* -exprs(#20021,8,#20012,2,"{}") -#20022=@"loc,{#10000},2,19,2,20" -locations_default(#20022,#10000,2,19,2,20) -hasLocation(#20021,#20022) -enclosingStmt(#20021,#20010) -exprContainers(#20021,#20001) -#20023=* -stmts(#20023,2,#20001,2,"import( ... => {});") -#20024=@"loc,{#10000},3,1,3,28" -locations_default(#20024,#10000,3,1,3,28) -hasLocation(#20023,#20024) -stmtContainers(#20023,#20001) -#20025=* -exprs(#20025,13,#20023,0,"import( ... => {})") -#20026=@"loc,{#10000},3,1,3,27" -locations_default(#20026,#10000,3,1,3,27) -hasLocation(#20025,#20026) -enclosingStmt(#20025,#20023) -exprContainers(#20025,#20001) -#20027=* -exprs(#20027,14,#20025,-1,"import(""o"").then") -#20028=@"loc,{#10000},3,1,3,16" -locations_default(#20028,#10000,3,1,3,16) -hasLocation(#20027,#20028) -enclosingStmt(#20027,#20023) -exprContainers(#20027,#20001) -#20029=* -exprs(#20029,99,#20027,0,"import(""o"")") -#20030=@"loc,{#10000},3,1,3,11" -locations_default(#20030,#10000,3,1,3,11) -hasLocation(#20029,#20030) -enclosingStmt(#20029,#20023) -exprContainers(#20029,#20001) -#20031=* -exprs(#20031,4,#20029,0,"""o""") -#20032=@"loc,{#10000},3,8,3,10" -locations_default(#20032,#10000,3,8,3,10) -hasLocation(#20031,#20032) -enclosingStmt(#20031,#20023) -exprContainers(#20031,#20001) -literals("o","""o""",#20031) -#20033=* -exprs(#20033,0,#20027,1,"then") -#20034=@"loc,{#10000},3,13,3,16" -locations_default(#20034,#10000,3,13,3,16) -hasLocation(#20033,#20034) -enclosingStmt(#20033,#20023) -exprContainers(#20033,#20001) -literals("then","then",#20033) -#20035=* -exprs(#20035,65,#20025,0,"(o) => {}") -#20036=@"loc,{#10000},3,18,3,26" -locations_default(#20036,#10000,3,18,3,26) -hasLocation(#20035,#20036) -enclosingStmt(#20035,#20023) -exprContainers(#20035,#20001) -#20037=* -scopes(#20037,1) -scopenodes(#20035,#20037) -scopenesting(#20037,#20003) -#20038=@"var;{o};{#20037}" -variables(#20038,"o",#20037) -#20039=* -exprs(#20039,78,#20035,0,"o") -#20040=@"loc,{#10000},3,19,3,19" -locations_default(#20040,#10000,3,19,3,19) -hasLocation(#20039,#20040) -exprContainers(#20039,#20035) -literals("o","o",#20039) -decl(#20039,#20038) -#20041=* -stmts(#20041,1,#20035,-2,"{}") -#20042=@"loc,{#10000},3,25,3,26" -locations_default(#20042,#10000,3,25,3,26) -hasLocation(#20041,#20042) -stmtContainers(#20041,#20035) -numlines(#20035,1,1,0) -#20043=* -lines(#20043,#20001,"import(""m"");"," -") -hasLocation(#20043,#20005) -#20044=* -lines(#20044,#20001,"b ? import(""n"") : {};"," -") -hasLocation(#20044,#20011) -#20045=* -lines(#20045,#20001,"import(""o"").then((o) => {});"," -") -hasLocation(#20045,#20024) 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,8,#20001,1,"(") +#20011=@"loc,{#10000},1,7,1,7" +locations_default(#20011,#10000,1,7,1,7) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,4,#20001,2,"""m""") +#20013=@"loc,{#10000},1,8,1,10" +locations_default(#20013,#10000,1,8,1,10) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,3,")") +#20015=@"loc,{#10000},1,11,1,11" +locations_default(#20015,#10000,1,11,1,11) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,4,";") +#20017=@"loc,{#10000},1,12,1,12" +locations_default(#20017,#10000,1,12,1,12) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,6,#20001,5,"b") +#20019=@"loc,{#10000},2,1,2,1" +locations_default(#20019,#10000,2,1,2,1) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,6,"?") +#20021=@"loc,{#10000},2,3,2,3" +locations_default(#20021,#10000,2,3,2,3) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,7,#20001,7,"import") +#20023=@"loc,{#10000},2,5,2,10" +locations_default(#20023,#10000,2,5,2,10) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,8,"(") +#20025=@"loc,{#10000},2,11,2,11" +locations_default(#20025,#10000,2,11,2,11) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,4,#20001,9,"""n""") +#20027=@"loc,{#10000},2,12,2,14" +locations_default(#20027,#10000,2,12,2,14) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,10,")") +#20029=@"loc,{#10000},2,15,2,15" +locations_default(#20029,#10000,2,15,2,15) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,11,":") +#20031=@"loc,{#10000},2,17,2,17" +locations_default(#20031,#10000,2,17,2,17) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,12,"{") +#20033=@"loc,{#10000},2,19,2,19" +locations_default(#20033,#10000,2,19,2,19) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,13,"}") +#20035=@"loc,{#10000},2,20,2,20" +locations_default(#20035,#10000,2,20,2,20) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,14,";") +#20037=@"loc,{#10000},2,21,2,21" +locations_default(#20037,#10000,2,21,2,21) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,7,#20001,15,"import") +#20039=@"loc,{#10000},3,1,3,6" +locations_default(#20039,#10000,3,1,3,6) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,16,"(") +#20041=@"loc,{#10000},3,7,3,7" +locations_default(#20041,#10000,3,7,3,7) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,4,#20001,17,"""o""") +#20043=@"loc,{#10000},3,8,3,10" +locations_default(#20043,#10000,3,8,3,10) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,18,")") +#20045=@"loc,{#10000},3,11,3,11" +locations_default(#20045,#10000,3,11,3,11) +hasLocation(#20044,#20045) #20046=* -tokeninfo(#20046,7,#20001,0,"import") -#20047=@"loc,{#10000},1,1,1,6" -locations_default(#20047,#10000,1,1,1,6) +tokeninfo(#20046,8,#20001,19,".") +#20047=@"loc,{#10000},3,12,3,12" +locations_default(#20047,#10000,3,12,3,12) hasLocation(#20046,#20047) #20048=* -tokeninfo(#20048,8,#20001,1,"(") -#20049=@"loc,{#10000},1,7,1,7" -locations_default(#20049,#10000,1,7,1,7) +tokeninfo(#20048,6,#20001,20,"then") +#20049=@"loc,{#10000},3,13,3,16" +locations_default(#20049,#10000,3,13,3,16) hasLocation(#20048,#20049) #20050=* -tokeninfo(#20050,4,#20001,2,"""m""") -hasLocation(#20050,#20009) -#20051=* -tokeninfo(#20051,8,#20001,3,")") -#20052=@"loc,{#10000},1,11,1,11" -locations_default(#20052,#10000,1,11,1,11) -hasLocation(#20051,#20052) -#20053=* -tokeninfo(#20053,8,#20001,4,";") -#20054=@"loc,{#10000},1,12,1,12" -locations_default(#20054,#10000,1,12,1,12) -hasLocation(#20053,#20054) -#20055=* -tokeninfo(#20055,6,#20001,5,"b") -hasLocation(#20055,#20015) +tokeninfo(#20050,8,#20001,21,"(") +#20051=@"loc,{#10000},3,17,3,17" +locations_default(#20051,#10000,3,17,3,17) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,8,#20001,22,"(") +#20053=@"loc,{#10000},3,18,3,18" +locations_default(#20053,#10000,3,18,3,18) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,6,#20001,23,"o") +#20055=@"loc,{#10000},3,19,3,19" +locations_default(#20055,#10000,3,19,3,19) +hasLocation(#20054,#20055) #20056=* -tokeninfo(#20056,8,#20001,6,"?") -#20057=@"loc,{#10000},2,3,2,3" -locations_default(#20057,#10000,2,3,2,3) +tokeninfo(#20056,8,#20001,24,")") +#20057=@"loc,{#10000},3,20,3,20" +locations_default(#20057,#10000,3,20,3,20) hasLocation(#20056,#20057) #20058=* -tokeninfo(#20058,7,#20001,7,"import") -#20059=@"loc,{#10000},2,5,2,10" -locations_default(#20059,#10000,2,5,2,10) +tokeninfo(#20058,8,#20001,25,"=>") +#20059=@"loc,{#10000},3,22,3,23" +locations_default(#20059,#10000,3,22,3,23) hasLocation(#20058,#20059) #20060=* -tokeninfo(#20060,8,#20001,8,"(") -#20061=@"loc,{#10000},2,11,2,11" -locations_default(#20061,#10000,2,11,2,11) +tokeninfo(#20060,8,#20001,26,"{") +#20061=@"loc,{#10000},3,25,3,25" +locations_default(#20061,#10000,3,25,3,25) hasLocation(#20060,#20061) #20062=* -tokeninfo(#20062,4,#20001,9,"""n""") -hasLocation(#20062,#20020) -#20063=* -tokeninfo(#20063,8,#20001,10,")") -#20064=@"loc,{#10000},2,15,2,15" -locations_default(#20064,#10000,2,15,2,15) -hasLocation(#20063,#20064) -#20065=* -tokeninfo(#20065,8,#20001,11,":") -#20066=@"loc,{#10000},2,17,2,17" -locations_default(#20066,#10000,2,17,2,17) -hasLocation(#20065,#20066) -#20067=* -tokeninfo(#20067,8,#20001,12,"{") -#20068=@"loc,{#10000},2,19,2,19" -locations_default(#20068,#10000,2,19,2,19) -hasLocation(#20067,#20068) -#20069=* -tokeninfo(#20069,8,#20001,13,"}") -#20070=@"loc,{#10000},2,20,2,20" -locations_default(#20070,#10000,2,20,2,20) -hasLocation(#20069,#20070) -#20071=* -tokeninfo(#20071,8,#20001,14,";") -#20072=@"loc,{#10000},2,21,2,21" -locations_default(#20072,#10000,2,21,2,21) -hasLocation(#20071,#20072) +tokeninfo(#20062,8,#20001,27,"}") +#20063=@"loc,{#10000},3,26,3,26" +locations_default(#20063,#10000,3,26,3,26) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,8,#20001,28,")") +#20065=@"loc,{#10000},3,27,3,27" +locations_default(#20065,#10000,3,27,3,27) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,8,#20001,29,";") +#20067=@"loc,{#10000},3,28,3,28" +locations_default(#20067,#10000,3,28,3,28) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,0,#20001,30,"") +#20069=@"loc,{#10000},4,1,4,0" +locations_default(#20069,#10000,4,1,4,0) +hasLocation(#20068,#20069) +toplevels(#20001,0) +#20070=@"loc,{#10000},1,1,4,0" +locations_default(#20070,#10000,1,1,4,0) +hasLocation(#20001,#20070) +#20071=@"module;{#10000},1,1" +scopes(#20071,3) +scopenodes(#20001,#20071) +scopenesting(#20071,#20000) +isModule(#20001) +isES2015Module(#20001) +#20072=* +stmts(#20072,2,#20001,0,"import(""m"");") +hasLocation(#20072,#20003) +stmtContainers(#20072,#20001) #20073=* -tokeninfo(#20073,7,#20001,15,"import") -#20074=@"loc,{#10000},3,1,3,6" -locations_default(#20074,#10000,3,1,3,6) +exprs(#20073,99,#20072,0,"import(""m"")") +#20074=@"loc,{#10000},1,1,1,11" +locations_default(#20074,#10000,1,1,1,11) hasLocation(#20073,#20074) +enclosingStmt(#20073,#20072) +exprContainers(#20073,#20001) #20075=* -tokeninfo(#20075,8,#20001,16,"(") -#20076=@"loc,{#10000},3,7,3,7" -locations_default(#20076,#10000,3,7,3,7) -hasLocation(#20075,#20076) +exprs(#20075,4,#20073,0,"""m""") +hasLocation(#20075,#20013) +enclosingStmt(#20075,#20072) +exprContainers(#20075,#20001) +literals("m","""m""",#20075) +#20076=* +stmts(#20076,2,#20001,1,"b ? imp ... ) : {};") +hasLocation(#20076,#20005) +stmtContainers(#20076,#20001) #20077=* -tokeninfo(#20077,4,#20001,17,"""o""") -hasLocation(#20077,#20032) -#20078=* -tokeninfo(#20078,8,#20001,18,")") -#20079=@"loc,{#10000},3,11,3,11" -locations_default(#20079,#10000,3,11,3,11) -hasLocation(#20078,#20079) -#20080=* -tokeninfo(#20080,8,#20001,19,".") -#20081=@"loc,{#10000},3,12,3,12" -locations_default(#20081,#10000,3,12,3,12) -hasLocation(#20080,#20081) -#20082=* -tokeninfo(#20082,6,#20001,20,"then") -hasLocation(#20082,#20034) +exprs(#20077,11,#20076,0,"b ? import(""n"") : {}") +#20078=@"loc,{#10000},2,1,2,20" +locations_default(#20078,#10000,2,1,2,20) +hasLocation(#20077,#20078) +enclosingStmt(#20077,#20076) +exprContainers(#20077,#20001) +#20079=* +exprs(#20079,79,#20077,0,"b") +hasLocation(#20079,#20019) +enclosingStmt(#20079,#20076) +exprContainers(#20079,#20001) +literals("b","b",#20079) +#20080=@"var;{b};{#20000}" +variables(#20080,"b",#20000) +bind(#20079,#20080) +#20081=* +exprs(#20081,99,#20077,1,"import(""n"")") +#20082=@"loc,{#10000},2,5,2,15" +locations_default(#20082,#10000,2,5,2,15) +hasLocation(#20081,#20082) +enclosingStmt(#20081,#20076) +exprContainers(#20081,#20001) #20083=* -tokeninfo(#20083,8,#20001,21,"(") -#20084=@"loc,{#10000},3,17,3,17" -locations_default(#20084,#10000,3,17,3,17) -hasLocation(#20083,#20084) -#20085=* -tokeninfo(#20085,8,#20001,22,"(") -#20086=@"loc,{#10000},3,18,3,18" -locations_default(#20086,#10000,3,18,3,18) -hasLocation(#20085,#20086) +exprs(#20083,4,#20081,0,"""n""") +hasLocation(#20083,#20027) +enclosingStmt(#20083,#20076) +exprContainers(#20083,#20001) +literals("n","""n""",#20083) +#20084=* +exprs(#20084,8,#20077,2,"{}") +#20085=@"loc,{#10000},2,19,2,20" +locations_default(#20085,#10000,2,19,2,20) +hasLocation(#20084,#20085) +enclosingStmt(#20084,#20076) +exprContainers(#20084,#20001) +#20086=* +stmts(#20086,2,#20001,2,"import( ... => {});") +hasLocation(#20086,#20007) +stmtContainers(#20086,#20001) #20087=* -tokeninfo(#20087,6,#20001,23,"o") -hasLocation(#20087,#20040) -#20088=* -tokeninfo(#20088,8,#20001,24,")") -#20089=@"loc,{#10000},3,20,3,20" -locations_default(#20089,#10000,3,20,3,20) -hasLocation(#20088,#20089) -#20090=* -tokeninfo(#20090,8,#20001,25,"=>") -#20091=@"loc,{#10000},3,22,3,23" -locations_default(#20091,#10000,3,22,3,23) -hasLocation(#20090,#20091) -#20092=* -tokeninfo(#20092,8,#20001,26,"{") -#20093=@"loc,{#10000},3,25,3,25" -locations_default(#20093,#10000,3,25,3,25) -hasLocation(#20092,#20093) +exprs(#20087,13,#20086,0,"import( ... => {})") +#20088=@"loc,{#10000},3,1,3,27" +locations_default(#20088,#10000,3,1,3,27) +hasLocation(#20087,#20088) +enclosingStmt(#20087,#20086) +exprContainers(#20087,#20001) +#20089=* +exprs(#20089,14,#20087,-1,"import(""o"").then") +#20090=@"loc,{#10000},3,1,3,16" +locations_default(#20090,#10000,3,1,3,16) +hasLocation(#20089,#20090) +enclosingStmt(#20089,#20086) +exprContainers(#20089,#20001) +#20091=* +exprs(#20091,99,#20089,0,"import(""o"")") +#20092=@"loc,{#10000},3,1,3,11" +locations_default(#20092,#10000,3,1,3,11) +hasLocation(#20091,#20092) +enclosingStmt(#20091,#20086) +exprContainers(#20091,#20001) +#20093=* +exprs(#20093,4,#20091,0,"""o""") +hasLocation(#20093,#20043) +enclosingStmt(#20093,#20086) +exprContainers(#20093,#20001) +literals("o","""o""",#20093) #20094=* -tokeninfo(#20094,8,#20001,27,"}") -#20095=@"loc,{#10000},3,26,3,26" -locations_default(#20095,#10000,3,26,3,26) -hasLocation(#20094,#20095) -#20096=* -tokeninfo(#20096,8,#20001,28,")") -#20097=@"loc,{#10000},3,27,3,27" -locations_default(#20097,#10000,3,27,3,27) -hasLocation(#20096,#20097) -#20098=* -tokeninfo(#20098,8,#20001,29,";") -#20099=@"loc,{#10000},3,28,3,28" -locations_default(#20099,#10000,3,28,3,28) -hasLocation(#20098,#20099) +exprs(#20094,0,#20089,1,"then") +hasLocation(#20094,#20049) +enclosingStmt(#20094,#20086) +exprContainers(#20094,#20001) +literals("then","then",#20094) +#20095=* +exprs(#20095,65,#20087,0,"(o) => {}") +#20096=@"loc,{#10000},3,18,3,26" +locations_default(#20096,#10000,3,18,3,26) +hasLocation(#20095,#20096) +enclosingStmt(#20095,#20086) +exprContainers(#20095,#20001) +#20097=* +scopes(#20097,1) +scopenodes(#20095,#20097) +scopenesting(#20097,#20071) +#20098=@"var;{o};{#20097}" +variables(#20098,"o",#20097) +#20099=* +exprs(#20099,78,#20095,0,"o") +hasLocation(#20099,#20055) +exprContainers(#20099,#20095) +literals("o","o",#20099) +decl(#20099,#20098) #20100=* -tokeninfo(#20100,0,#20001,30,"") -#20101=@"loc,{#10000},4,1,4,0" -locations_default(#20101,#10000,4,1,4,0) +stmts(#20100,1,#20095,-2,"{}") +#20101=@"loc,{#10000},3,25,3,26" +locations_default(#20101,#10000,3,25,3,26) hasLocation(#20100,#20101) +stmtContainers(#20100,#20095) #20102=* entry_cfg_node(#20102,#20001) #20103=@"loc,{#10000},1,1,1,0" @@ -319,45 +319,45 @@ locations_default(#20103,#10000,1,1,1,0) hasLocation(#20102,#20103) #20104=* exit_cfg_node(#20104,#20001) -hasLocation(#20104,#20101) -successor(#20023,#20031) -successor(#20035,#20025) +hasLocation(#20104,#20069) +successor(#20086,#20093) +successor(#20095,#20087) #20105=* -entry_cfg_node(#20105,#20035) +entry_cfg_node(#20105,#20095) #20106=@"loc,{#10000},3,18,3,17" locations_default(#20106,#10000,3,18,3,17) hasLocation(#20105,#20106) #20107=* -exit_cfg_node(#20107,#20035) +exit_cfg_node(#20107,#20095) #20108=@"loc,{#10000},3,27,3,26" locations_default(#20108,#10000,3,27,3,26) hasLocation(#20107,#20108) -successor(#20041,#20107) -successor(#20039,#20041) -successor(#20105,#20039) -successor(#20033,#20027) -successor(#20031,#20029) -successor(#20029,#20033) -successor(#20027,#20035) -successor(#20025,#20104) -successor(#20010,#20012) -successor(#20012,#20014) +successor(#20100,#20107) +successor(#20099,#20100) +successor(#20105,#20099) +successor(#20094,#20089) +successor(#20093,#20091) +successor(#20091,#20094) +successor(#20089,#20095) +successor(#20087,#20104) +successor(#20076,#20077) +successor(#20077,#20079) #20109=* -guard_node(#20109,1,#20014) -hasLocation(#20109,#20015) -successor(#20109,#20019) +guard_node(#20109,1,#20079) +hasLocation(#20109,#20019) +successor(#20109,#20083) #20110=* -guard_node(#20110,0,#20014) -hasLocation(#20110,#20015) -successor(#20110,#20021) -successor(#20014,#20109) -successor(#20014,#20110) -successor(#20019,#20017) -successor(#20017,#20023) -successor(#20021,#20023) -successor(#20004,#20008) -successor(#20008,#20006) -successor(#20006,#20010) -successor(#20102,#20004) +guard_node(#20110,0,#20079) +hasLocation(#20110,#20019) +successor(#20110,#20084) +successor(#20079,#20109) +successor(#20079,#20110) +successor(#20083,#20081) +successor(#20081,#20086) +successor(#20084,#20086) +successor(#20072,#20075) +successor(#20075,#20073) +successor(#20073,#20076) +successor(#20102,#20072) numlines(#10000,3,3,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/esnext/output/trap/fields.js.trap b/javascript/extractor/tests/esnext/output/trap/fields.js.trap index e84e9f8d8fe..26d7696f266 100644 --- a/javascript/extractor/tests/esnext/output/trap/fields.js.trap +++ b/javascript/extractor/tests/esnext/output/trap/fields.js.trap @@ -9,468 +9,465 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,12,0" -locations_default(#20002,#10000,1,1,12,0) -hasLocation(#20001,#20002) -#20003=@"var;{A};{#20000}" -variables(#20003,"A",#20000) -#20004=@"var;{B};{#20000}" -variables(#20004,"B",#20000) -#20005=@"var;{C};{#20000}" -variables(#20005,"C",#20000) -#20006=@"local_type_name;{A};{#20000}" -local_type_names(#20006,"A",#20000) -#20007=@"local_type_name;{B};{#20000}" -local_type_names(#20007,"B",#20000) -#20008=@"local_type_name;{C};{#20000}" -local_type_names(#20008,"C",#20000) -#20009=* -stmts(#20009,26,#20001,0,"class A ... rget;\n}") -#20010=@"loc,{#10000},1,1,3,1" -locations_default(#20010,#10000,1,1,3,1) -hasLocation(#20009,#20010) -stmtContainers(#20009,#20001) -#20011=* -exprs(#20011,78,#20009,0,"A") -#20012=@"loc,{#10000},1,7,1,7" -locations_default(#20012,#10000,1,7,1,7) -hasLocation(#20011,#20012) -enclosingStmt(#20011,#20009) -exprContainers(#20011,#20001) -literals("A","A",#20011) -decl(#20011,#20003) -typedecl(#20011,#20006) -#20013=* -scopes(#20013,10) -scopenodes(#20009,#20013) -scopenesting(#20013,#20000) +#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," x = new.target;"," +") +#20005=@"loc,{#10000},2,1,2,17" +locations_default(#20005,#10000,2,1,2,17) +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) +#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,"class B extends A {"," +") +#20011=@"loc,{#10000},5,1,5,19" +locations_default(#20011,#10000,5,1,5,19) +hasLocation(#20010,#20011) +#20012=* +lines(#20012,#20001," y = super.x;"," +") +#20013=@"loc,{#10000},6,1,6,14" +locations_default(#20013,#10000,6,1,6,14) +hasLocation(#20012,#20013) +indentation(#10000,6," ",2) #20014=* -properties(#20014,#20009,2,8,"x = new.target;") -#20015=@"loc,{#10000},2,3,2,17" -locations_default(#20015,#10000,2,3,2,17) +lines(#20014,#20001,"}"," +") +#20015=@"loc,{#10000},7,1,7,1" +locations_default(#20015,#10000,7,1,7,1) hasLocation(#20014,#20015) #20016=* -exprs(#20016,0,#20014,0,"x") -#20017=@"loc,{#10000},2,3,2,3" -locations_default(#20017,#10000,2,3,2,3) +lines(#20016,#20001,""," +") +#20017=@"loc,{#10000},8,1,8,0" +locations_default(#20017,#10000,8,1,8,0) hasLocation(#20016,#20017) -enclosingStmt(#20016,#20009) -exprContainers(#20016,#20001) -literals("x","x",#20016) #20018=* -#20019=* -exprs(#20019,82,#20014,1,"new.target") -#20020=@"loc,{#10000},2,7,2,16" -locations_default(#20020,#10000,2,7,2,16) -hasLocation(#20019,#20020) -exprContainers(#20019,#20018) -#20021=* -properties(#20021,#20009,3,0,"constructor() {}") -#20022=@"loc,{#10000},1,9,1,8" -locations_default(#20022,#10000,1,9,1,8) -hasLocation(#20021,#20022) -#20023=* -exprs(#20023,0,#20021,0,"constructor") -hasLocation(#20023,#20022) -enclosingStmt(#20023,#20009) -exprContainers(#20023,#20001) -literals("constructor","constructor",#20023) -exprs(#20018,9,#20021,1,"() {}") -hasLocation(#20018,#20022) -enclosingStmt(#20018,#20009) -exprContainers(#20018,#20001) +lines(#20018,#20001,"class C {"," +") +#20019=@"loc,{#10000},9,1,9,9" +locations_default(#20019,#10000,9,1,9,9) +hasLocation(#20018,#20019) +#20020=* +lines(#20020,#20001," async;"," +") +#20021=@"loc,{#10000},10,1,10,8" +locations_default(#20021,#10000,10,1,10,8) +hasLocation(#20020,#20021) +indentation(#10000,10," ",2) +#20022=* +lines(#20022,#20001,"}"," +") +#20023=@"loc,{#10000},11,1,11,1" +locations_default(#20023,#10000,11,1,11,1) +hasLocation(#20022,#20023) +numlines(#20001,11,9,0) #20024=* -scopes(#20024,1) -scopenodes(#20018,#20024) -scopenesting(#20024,#20013) -#20025=@"var;{arguments};{#20024}" -variables(#20025,"arguments",#20024) -isArgumentsObject(#20025) +tokeninfo(#20024,7,#20001,0,"class") +#20025=@"loc,{#10000},1,1,1,5" +locations_default(#20025,#10000,1,1,1,5) +hasLocation(#20024,#20025) #20026=* -stmts(#20026,1,#20018,-2,"{}") -hasLocation(#20026,#20022) -stmtContainers(#20026,#20018) -numlines(#20018,1,0,0) -isMethod(#20021) -#20027=* -stmts(#20027,26,#20001,1,"class B ... er.x;\n}") -#20028=@"loc,{#10000},5,1,7,1" -locations_default(#20028,#10000,5,1,7,1) -hasLocation(#20027,#20028) -stmtContainers(#20027,#20001) -#20029=* -exprs(#20029,78,#20027,0,"B") -#20030=@"loc,{#10000},5,7,5,7" -locations_default(#20030,#10000,5,7,5,7) -hasLocation(#20029,#20030) -enclosingStmt(#20029,#20027) -exprContainers(#20029,#20001) -literals("B","B",#20029) -decl(#20029,#20004) -typedecl(#20029,#20007) -#20031=* -scopes(#20031,10) -scopenodes(#20027,#20031) -scopenesting(#20031,#20000) +tokeninfo(#20026,6,#20001,1,"A") +#20027=@"loc,{#10000},1,7,1,7" +locations_default(#20027,#10000,1,7,1,7) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,2,"{") +#20029=@"loc,{#10000},1,9,1,9" +locations_default(#20029,#10000,1,9,1,9) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,6,#20001,3,"x") +#20031=@"loc,{#10000},2,3,2,3" +locations_default(#20031,#10000,2,3,2,3) +hasLocation(#20030,#20031) #20032=* -exprs(#20032,79,#20027,1,"A") -#20033=@"loc,{#10000},5,17,5,17" -locations_default(#20033,#10000,5,17,5,17) +tokeninfo(#20032,8,#20001,4,"=") +#20033=@"loc,{#10000},2,5,2,5" +locations_default(#20033,#10000,2,5,2,5) hasLocation(#20032,#20033) -enclosingStmt(#20032,#20027) -exprContainers(#20032,#20001) -literals("A","A",#20032) -bind(#20032,#20003) #20034=* -properties(#20034,#20027,2,8,"y = super.x;") -#20035=@"loc,{#10000},6,3,6,14" -locations_default(#20035,#10000,6,3,6,14) +tokeninfo(#20034,7,#20001,5,"new") +#20035=@"loc,{#10000},2,7,2,9" +locations_default(#20035,#10000,2,7,2,9) hasLocation(#20034,#20035) #20036=* -exprs(#20036,0,#20034,0,"y") -#20037=@"loc,{#10000},6,3,6,3" -locations_default(#20037,#10000,6,3,6,3) +tokeninfo(#20036,8,#20001,6,".") +#20037=@"loc,{#10000},2,10,2,10" +locations_default(#20037,#10000,2,10,2,10) hasLocation(#20036,#20037) -enclosingStmt(#20036,#20027) -exprContainers(#20036,#20001) -literals("y","y",#20036) #20038=* -#20039=* -exprs(#20039,14,#20034,1,"super.x") -#20040=@"loc,{#10000},6,7,6,13" -locations_default(#20040,#10000,6,7,6,13) -hasLocation(#20039,#20040) -exprContainers(#20039,#20038) -#20041=* -exprs(#20041,81,#20039,0,"super") -#20042=@"loc,{#10000},6,7,6,11" -locations_default(#20042,#10000,6,7,6,11) -hasLocation(#20041,#20042) -exprContainers(#20041,#20038) +tokeninfo(#20038,6,#20001,7,"target") +#20039=@"loc,{#10000},2,11,2,16" +locations_default(#20039,#10000,2,11,2,16) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,8,";") +#20041=@"loc,{#10000},2,17,2,17" +locations_default(#20041,#10000,2,17,2,17) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,9,"}") +hasLocation(#20042,#20007) #20043=* -exprs(#20043,0,#20039,1,"x") -#20044=@"loc,{#10000},6,13,6,13" -locations_default(#20044,#10000,6,13,6,13) +tokeninfo(#20043,7,#20001,10,"class") +#20044=@"loc,{#10000},5,1,5,5" +locations_default(#20044,#10000,5,1,5,5) hasLocation(#20043,#20044) -exprContainers(#20043,#20038) -literals("x","x",#20043) #20045=* -properties(#20045,#20027,3,0,"constru ... rgs); }") -#20046=@"loc,{#10000},5,19,5,18" -locations_default(#20046,#10000,5,19,5,18) +tokeninfo(#20045,6,#20001,11,"B") +#20046=@"loc,{#10000},5,7,5,7" +locations_default(#20046,#10000,5,7,5,7) hasLocation(#20045,#20046) #20047=* -exprs(#20047,0,#20045,0,"constructor") -hasLocation(#20047,#20046) -enclosingStmt(#20047,#20027) -exprContainers(#20047,#20001) -literals("constructor","constructor",#20047) -exprs(#20038,9,#20045,1,"(...arg ... rgs); }") -hasLocation(#20038,#20046) -enclosingStmt(#20038,#20027) -exprContainers(#20038,#20001) -#20048=* -scopes(#20048,1) -scopenodes(#20038,#20048) -scopenesting(#20048,#20031) -#20049=@"var;{args};{#20048}" -variables(#20049,"args",#20048) -#20050=* -exprs(#20050,78,#20038,0,"args") -hasLocation(#20050,#20046) -exprContainers(#20050,#20038) -literals("args","args",#20050) -decl(#20050,#20049) -#20051=@"var;{arguments};{#20048}" -variables(#20051,"arguments",#20048) -isArgumentsObject(#20051) -hasRestParameter(#20038) -#20052=* -stmts(#20052,1,#20038,-2,"{ super(...args); }") -hasLocation(#20052,#20046) -stmtContainers(#20052,#20038) +tokeninfo(#20047,7,#20001,12,"extends") +#20048=@"loc,{#10000},5,9,5,15" +locations_default(#20048,#10000,5,9,5,15) +hasLocation(#20047,#20048) +#20049=* +tokeninfo(#20049,6,#20001,13,"A") +#20050=@"loc,{#10000},5,17,5,17" +locations_default(#20050,#10000,5,17,5,17) +hasLocation(#20049,#20050) +#20051=* +tokeninfo(#20051,8,#20001,14,"{") +#20052=@"loc,{#10000},5,19,5,19" +locations_default(#20052,#10000,5,19,5,19) +hasLocation(#20051,#20052) #20053=* -stmts(#20053,2,#20052,0,"super(...args);") -hasLocation(#20053,#20046) -stmtContainers(#20053,#20038) -#20054=* -exprs(#20054,13,#20053,0,"super(...args)") -hasLocation(#20054,#20046) -enclosingStmt(#20054,#20053) -exprContainers(#20054,#20038) +tokeninfo(#20053,6,#20001,15,"y") +#20054=@"loc,{#10000},6,3,6,3" +locations_default(#20054,#10000,6,3,6,3) +hasLocation(#20053,#20054) #20055=* -exprs(#20055,81,#20054,-1,"super") -hasLocation(#20055,#20046) -enclosingStmt(#20055,#20053) -exprContainers(#20055,#20038) -#20056=* -exprs(#20056,66,#20054,0,"...args") -hasLocation(#20056,#20046) -enclosingStmt(#20056,#20053) -exprContainers(#20056,#20038) +tokeninfo(#20055,8,#20001,16,"=") +#20056=@"loc,{#10000},6,5,6,5" +locations_default(#20056,#10000,6,5,6,5) +hasLocation(#20055,#20056) #20057=* -exprs(#20057,79,#20056,0,"args") -hasLocation(#20057,#20046) -enclosingStmt(#20057,#20053) -exprContainers(#20057,#20038) -literals("args","args",#20057) -bind(#20057,#20049) -numlines(#20038,1,0,0) -isMethod(#20045) -#20058=* -stmts(#20058,26,#20001,2,"class C {\n async;\n}") -#20059=@"loc,{#10000},9,1,11,1" -locations_default(#20059,#10000,9,1,11,1) -hasLocation(#20058,#20059) -stmtContainers(#20058,#20001) -#20060=* -exprs(#20060,78,#20058,0,"C") -#20061=@"loc,{#10000},9,7,9,7" -locations_default(#20061,#10000,9,7,9,7) -hasLocation(#20060,#20061) -enclosingStmt(#20060,#20058) -exprContainers(#20060,#20001) -literals("C","C",#20060) -decl(#20060,#20005) -typedecl(#20060,#20008) -#20062=* -scopes(#20062,10) -scopenodes(#20058,#20062) -scopenesting(#20062,#20000) +tokeninfo(#20057,7,#20001,17,"super") +#20058=@"loc,{#10000},6,7,6,11" +locations_default(#20058,#10000,6,7,6,11) +hasLocation(#20057,#20058) +#20059=* +tokeninfo(#20059,8,#20001,18,".") +#20060=@"loc,{#10000},6,12,6,12" +locations_default(#20060,#10000,6,12,6,12) +hasLocation(#20059,#20060) +#20061=* +tokeninfo(#20061,6,#20001,19,"x") +#20062=@"loc,{#10000},6,13,6,13" +locations_default(#20062,#10000,6,13,6,13) +hasLocation(#20061,#20062) #20063=* -properties(#20063,#20058,2,8,"async;") -#20064=@"loc,{#10000},10,3,10,8" -locations_default(#20064,#10000,10,3,10,8) +tokeninfo(#20063,8,#20001,20,";") +#20064=@"loc,{#10000},6,14,6,14" +locations_default(#20064,#10000,6,14,6,14) hasLocation(#20063,#20064) #20065=* -exprs(#20065,0,#20063,0,"async") -#20066=@"loc,{#10000},10,3,10,7" -locations_default(#20066,#10000,10,3,10,7) -hasLocation(#20065,#20066) -enclosingStmt(#20065,#20058) -exprContainers(#20065,#20001) -literals("async","async",#20065) -#20067=* +tokeninfo(#20065,8,#20001,21,"}") +hasLocation(#20065,#20015) +#20066=* +tokeninfo(#20066,7,#20001,22,"class") +#20067=@"loc,{#10000},9,1,9,5" +locations_default(#20067,#10000,9,1,9,5) +hasLocation(#20066,#20067) #20068=* -properties(#20068,#20058,3,0,"constructor() {}") -#20069=@"loc,{#10000},9,9,9,8" -locations_default(#20069,#10000,9,9,9,8) +tokeninfo(#20068,6,#20001,23,"C") +#20069=@"loc,{#10000},9,7,9,7" +locations_default(#20069,#10000,9,7,9,7) hasLocation(#20068,#20069) #20070=* -exprs(#20070,0,#20068,0,"constructor") -hasLocation(#20070,#20069) -enclosingStmt(#20070,#20058) -exprContainers(#20070,#20001) -literals("constructor","constructor",#20070) -exprs(#20067,9,#20068,1,"() {}") -hasLocation(#20067,#20069) -enclosingStmt(#20067,#20058) -exprContainers(#20067,#20001) -#20071=* -scopes(#20071,1) -scopenodes(#20067,#20071) -scopenesting(#20071,#20062) -#20072=@"var;{arguments};{#20071}" -variables(#20072,"arguments",#20071) -isArgumentsObject(#20072) -#20073=* -stmts(#20073,1,#20067,-2,"{}") -hasLocation(#20073,#20069) -stmtContainers(#20073,#20067) -numlines(#20067,1,0,0) -isMethod(#20068) +tokeninfo(#20070,8,#20001,24,"{") +#20071=@"loc,{#10000},9,9,9,9" +locations_default(#20071,#10000,9,9,9,9) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,6,#20001,25,"async") +#20073=@"loc,{#10000},10,3,10,7" +locations_default(#20073,#10000,10,3,10,7) +hasLocation(#20072,#20073) #20074=* -lines(#20074,#20001,"class A {"," -") -#20075=@"loc,{#10000},1,1,1,9" -locations_default(#20075,#10000,1,1,1,9) +tokeninfo(#20074,8,#20001,26,";") +#20075=@"loc,{#10000},10,8,10,8" +locations_default(#20075,#10000,10,8,10,8) hasLocation(#20074,#20075) #20076=* -lines(#20076,#20001," x = new.target;"," -") -#20077=@"loc,{#10000},2,1,2,17" -locations_default(#20077,#10000,2,1,2,17) -hasLocation(#20076,#20077) -indentation(#10000,2," ",2) -#20078=* -lines(#20078,#20001,"}"," -") -#20079=@"loc,{#10000},3,1,3,1" -locations_default(#20079,#10000,3,1,3,1) -hasLocation(#20078,#20079) -#20080=* -lines(#20080,#20001,""," -") -#20081=@"loc,{#10000},4,1,4,0" -locations_default(#20081,#10000,4,1,4,0) -hasLocation(#20080,#20081) -#20082=* -lines(#20082,#20001,"class B extends A {"," -") -#20083=@"loc,{#10000},5,1,5,19" -locations_default(#20083,#10000,5,1,5,19) -hasLocation(#20082,#20083) -#20084=* -lines(#20084,#20001," y = super.x;"," -") -#20085=@"loc,{#10000},6,1,6,14" -locations_default(#20085,#10000,6,1,6,14) -hasLocation(#20084,#20085) -indentation(#10000,6," ",2) +tokeninfo(#20076,8,#20001,27,"}") +hasLocation(#20076,#20023) +#20077=* +tokeninfo(#20077,0,#20001,28,"") +#20078=@"loc,{#10000},12,1,12,0" +locations_default(#20078,#10000,12,1,12,0) +hasLocation(#20077,#20078) +toplevels(#20001,0) +#20079=@"loc,{#10000},1,1,12,0" +locations_default(#20079,#10000,1,1,12,0) +hasLocation(#20001,#20079) +#20080=@"var;{A};{#20000}" +variables(#20080,"A",#20000) +#20081=@"var;{B};{#20000}" +variables(#20081,"B",#20000) +#20082=@"var;{C};{#20000}" +variables(#20082,"C",#20000) +#20083=@"local_type_name;{A};{#20000}" +local_type_names(#20083,"A",#20000) +#20084=@"local_type_name;{B};{#20000}" +local_type_names(#20084,"B",#20000) +#20085=@"local_type_name;{C};{#20000}" +local_type_names(#20085,"C",#20000) #20086=* -lines(#20086,#20001,"}"," -") -#20087=@"loc,{#10000},7,1,7,1" -locations_default(#20087,#10000,7,1,7,1) +stmts(#20086,26,#20001,0,"class A ... rget;\n}") +#20087=@"loc,{#10000},1,1,3,1" +locations_default(#20087,#10000,1,1,3,1) hasLocation(#20086,#20087) +stmtContainers(#20086,#20001) #20088=* -lines(#20088,#20001,""," -") -#20089=@"loc,{#10000},8,1,8,0" -locations_default(#20089,#10000,8,1,8,0) -hasLocation(#20088,#20089) +exprs(#20088,78,#20086,0,"A") +hasLocation(#20088,#20027) +enclosingStmt(#20088,#20086) +exprContainers(#20088,#20001) +literals("A","A",#20088) +decl(#20088,#20080) +typedecl(#20088,#20083) +#20089=* +scopes(#20089,10) +scopenodes(#20086,#20089) +scopenesting(#20089,#20000) #20090=* -lines(#20090,#20001,"class C {"," -") -#20091=@"loc,{#10000},9,1,9,9" -locations_default(#20091,#10000,9,1,9,9) +properties(#20090,#20086,2,8,"x = new.target;") +#20091=@"loc,{#10000},2,3,2,17" +locations_default(#20091,#10000,2,3,2,17) hasLocation(#20090,#20091) #20092=* -lines(#20092,#20001," async;"," -") -#20093=@"loc,{#10000},10,1,10,8" -locations_default(#20093,#10000,10,1,10,8) -hasLocation(#20092,#20093) -indentation(#10000,10," ",2) +exprs(#20092,0,#20090,0,"x") +hasLocation(#20092,#20031) +enclosingStmt(#20092,#20086) +exprContainers(#20092,#20001) +literals("x","x",#20092) +#20093=* #20094=* -lines(#20094,#20001,"}"," -") -#20095=@"loc,{#10000},11,1,11,1" -locations_default(#20095,#10000,11,1,11,1) +exprs(#20094,82,#20090,1,"new.target") +#20095=@"loc,{#10000},2,7,2,16" +locations_default(#20095,#10000,2,7,2,16) hasLocation(#20094,#20095) -numlines(#20001,11,9,0) +exprContainers(#20094,#20093) #20096=* -tokeninfo(#20096,7,#20001,0,"class") -#20097=@"loc,{#10000},1,1,1,5" -locations_default(#20097,#10000,1,1,1,5) +properties(#20096,#20086,3,0,"constructor() {}") +#20097=@"loc,{#10000},1,9,1,8" +locations_default(#20097,#10000,1,9,1,8) hasLocation(#20096,#20097) #20098=* -tokeninfo(#20098,6,#20001,1,"A") -hasLocation(#20098,#20012) +exprs(#20098,0,#20096,0,"constructor") +hasLocation(#20098,#20097) +enclosingStmt(#20098,#20086) +exprContainers(#20098,#20001) +literals("constructor","constructor",#20098) +exprs(#20093,9,#20096,1,"() {}") +hasLocation(#20093,#20097) +enclosingStmt(#20093,#20086) +exprContainers(#20093,#20001) #20099=* -tokeninfo(#20099,8,#20001,2,"{") -#20100=@"loc,{#10000},1,9,1,9" -locations_default(#20100,#10000,1,9,1,9) -hasLocation(#20099,#20100) +scopes(#20099,1) +scopenodes(#20093,#20099) +scopenesting(#20099,#20089) +#20100=@"var;{arguments};{#20099}" +variables(#20100,"arguments",#20099) +isArgumentsObject(#20100) #20101=* -tokeninfo(#20101,6,#20001,3,"x") -hasLocation(#20101,#20017) +stmts(#20101,1,#20093,-2,"{}") +hasLocation(#20101,#20097) +stmtContainers(#20101,#20093) +isMethod(#20096) #20102=* -tokeninfo(#20102,8,#20001,4,"=") -#20103=@"loc,{#10000},2,5,2,5" -locations_default(#20103,#10000,2,5,2,5) +stmts(#20102,26,#20001,1,"class B ... er.x;\n}") +#20103=@"loc,{#10000},5,1,7,1" +locations_default(#20103,#10000,5,1,7,1) hasLocation(#20102,#20103) +stmtContainers(#20102,#20001) #20104=* -tokeninfo(#20104,7,#20001,5,"new") -#20105=@"loc,{#10000},2,7,2,9" -locations_default(#20105,#10000,2,7,2,9) -hasLocation(#20104,#20105) +exprs(#20104,78,#20102,0,"B") +hasLocation(#20104,#20046) +enclosingStmt(#20104,#20102) +exprContainers(#20104,#20001) +literals("B","B",#20104) +decl(#20104,#20081) +typedecl(#20104,#20084) +#20105=* +scopes(#20105,10) +scopenodes(#20102,#20105) +scopenesting(#20105,#20000) #20106=* -tokeninfo(#20106,8,#20001,6,".") -#20107=@"loc,{#10000},2,10,2,10" -locations_default(#20107,#10000,2,10,2,10) -hasLocation(#20106,#20107) -#20108=* -tokeninfo(#20108,6,#20001,7,"target") -#20109=@"loc,{#10000},2,11,2,16" -locations_default(#20109,#10000,2,11,2,16) -hasLocation(#20108,#20109) +exprs(#20106,79,#20102,1,"A") +hasLocation(#20106,#20050) +enclosingStmt(#20106,#20102) +exprContainers(#20106,#20001) +literals("A","A",#20106) +bind(#20106,#20080) +#20107=* +properties(#20107,#20102,2,8,"y = super.x;") +#20108=@"loc,{#10000},6,3,6,14" +locations_default(#20108,#10000,6,3,6,14) +hasLocation(#20107,#20108) +#20109=* +exprs(#20109,0,#20107,0,"y") +hasLocation(#20109,#20054) +enclosingStmt(#20109,#20102) +exprContainers(#20109,#20001) +literals("y","y",#20109) #20110=* -tokeninfo(#20110,8,#20001,8,";") -#20111=@"loc,{#10000},2,17,2,17" -locations_default(#20111,#10000,2,17,2,17) -hasLocation(#20110,#20111) -#20112=* -tokeninfo(#20112,8,#20001,9,"}") -hasLocation(#20112,#20079) +#20111=* +exprs(#20111,14,#20107,1,"super.x") +#20112=@"loc,{#10000},6,7,6,13" +locations_default(#20112,#10000,6,7,6,13) +hasLocation(#20111,#20112) +exprContainers(#20111,#20110) #20113=* -tokeninfo(#20113,7,#20001,10,"class") -#20114=@"loc,{#10000},5,1,5,5" -locations_default(#20114,#10000,5,1,5,5) -hasLocation(#20113,#20114) +exprs(#20113,81,#20111,0,"super") +hasLocation(#20113,#20058) +exprContainers(#20113,#20110) +#20114=* +exprs(#20114,0,#20111,1,"x") +hasLocation(#20114,#20062) +exprContainers(#20114,#20110) +literals("x","x",#20114) #20115=* -tokeninfo(#20115,6,#20001,11,"B") -hasLocation(#20115,#20030) -#20116=* -tokeninfo(#20116,7,#20001,12,"extends") -#20117=@"loc,{#10000},5,9,5,15" -locations_default(#20117,#10000,5,9,5,15) -hasLocation(#20116,#20117) +properties(#20115,#20102,3,0,"constru ... rgs); }") +#20116=@"loc,{#10000},5,19,5,18" +locations_default(#20116,#10000,5,19,5,18) +hasLocation(#20115,#20116) +#20117=* +exprs(#20117,0,#20115,0,"constructor") +hasLocation(#20117,#20116) +enclosingStmt(#20117,#20102) +exprContainers(#20117,#20001) +literals("constructor","constructor",#20117) +exprs(#20110,9,#20115,1,"(...arg ... rgs); }") +hasLocation(#20110,#20116) +enclosingStmt(#20110,#20102) +exprContainers(#20110,#20001) #20118=* -tokeninfo(#20118,6,#20001,13,"A") -hasLocation(#20118,#20033) -#20119=* -tokeninfo(#20119,8,#20001,14,"{") -#20120=@"loc,{#10000},5,19,5,19" -locations_default(#20120,#10000,5,19,5,19) -hasLocation(#20119,#20120) -#20121=* -tokeninfo(#20121,6,#20001,15,"y") -hasLocation(#20121,#20037) +scopes(#20118,1) +scopenodes(#20110,#20118) +scopenesting(#20118,#20105) +#20119=@"var;{args};{#20118}" +variables(#20119,"args",#20118) +#20120=* +exprs(#20120,78,#20110,0,"args") +hasLocation(#20120,#20116) +exprContainers(#20120,#20110) +literals("args","args",#20120) +decl(#20120,#20119) +#20121=@"var;{arguments};{#20118}" +variables(#20121,"arguments",#20118) +isArgumentsObject(#20121) +hasRestParameter(#20110) #20122=* -tokeninfo(#20122,8,#20001,16,"=") -#20123=@"loc,{#10000},6,5,6,5" -locations_default(#20123,#10000,6,5,6,5) -hasLocation(#20122,#20123) +stmts(#20122,1,#20110,-2,"{ super(...args); }") +hasLocation(#20122,#20116) +stmtContainers(#20122,#20110) +#20123=* +stmts(#20123,2,#20122,0,"super(...args);") +hasLocation(#20123,#20116) +stmtContainers(#20123,#20110) #20124=* -tokeninfo(#20124,7,#20001,17,"super") -hasLocation(#20124,#20042) +exprs(#20124,13,#20123,0,"super(...args)") +hasLocation(#20124,#20116) +enclosingStmt(#20124,#20123) +exprContainers(#20124,#20110) #20125=* -tokeninfo(#20125,8,#20001,18,".") -#20126=@"loc,{#10000},6,12,6,12" -locations_default(#20126,#10000,6,12,6,12) -hasLocation(#20125,#20126) +exprs(#20125,81,#20124,-1,"super") +hasLocation(#20125,#20116) +enclosingStmt(#20125,#20123) +exprContainers(#20125,#20110) +#20126=* +exprs(#20126,66,#20124,0,"...args") +hasLocation(#20126,#20116) +enclosingStmt(#20126,#20123) +exprContainers(#20126,#20110) #20127=* -tokeninfo(#20127,6,#20001,19,"x") -hasLocation(#20127,#20044) +exprs(#20127,79,#20126,0,"args") +hasLocation(#20127,#20116) +enclosingStmt(#20127,#20123) +exprContainers(#20127,#20110) +literals("args","args",#20127) +bind(#20127,#20119) +isMethod(#20115) #20128=* -tokeninfo(#20128,8,#20001,20,";") -#20129=@"loc,{#10000},6,14,6,14" -locations_default(#20129,#10000,6,14,6,14) +stmts(#20128,26,#20001,2,"class C {\n async;\n}") +#20129=@"loc,{#10000},9,1,11,1" +locations_default(#20129,#10000,9,1,11,1) hasLocation(#20128,#20129) +stmtContainers(#20128,#20001) #20130=* -tokeninfo(#20130,8,#20001,21,"}") -hasLocation(#20130,#20087) +exprs(#20130,78,#20128,0,"C") +hasLocation(#20130,#20069) +enclosingStmt(#20130,#20128) +exprContainers(#20130,#20001) +literals("C","C",#20130) +decl(#20130,#20082) +typedecl(#20130,#20085) #20131=* -tokeninfo(#20131,7,#20001,22,"class") -#20132=@"loc,{#10000},9,1,9,5" -locations_default(#20132,#10000,9,1,9,5) -hasLocation(#20131,#20132) -#20133=* -tokeninfo(#20133,6,#20001,23,"C") -hasLocation(#20133,#20061) +scopes(#20131,10) +scopenodes(#20128,#20131) +scopenesting(#20131,#20000) +#20132=* +properties(#20132,#20128,2,8,"async;") +#20133=@"loc,{#10000},10,3,10,8" +locations_default(#20133,#10000,10,3,10,8) +hasLocation(#20132,#20133) #20134=* -tokeninfo(#20134,8,#20001,24,"{") -#20135=@"loc,{#10000},9,9,9,9" -locations_default(#20135,#10000,9,9,9,9) -hasLocation(#20134,#20135) +exprs(#20134,0,#20132,0,"async") +hasLocation(#20134,#20073) +enclosingStmt(#20134,#20128) +exprContainers(#20134,#20001) +literals("async","async",#20134) +#20135=* #20136=* -tokeninfo(#20136,6,#20001,25,"async") -hasLocation(#20136,#20066) -#20137=* -tokeninfo(#20137,8,#20001,26,";") -#20138=@"loc,{#10000},10,8,10,8" -locations_default(#20138,#10000,10,8,10,8) -hasLocation(#20137,#20138) +properties(#20136,#20128,3,0,"constructor() {}") +#20137=@"loc,{#10000},9,9,9,8" +locations_default(#20137,#10000,9,9,9,8) +hasLocation(#20136,#20137) +#20138=* +exprs(#20138,0,#20136,0,"constructor") +hasLocation(#20138,#20137) +enclosingStmt(#20138,#20128) +exprContainers(#20138,#20001) +literals("constructor","constructor",#20138) +exprs(#20135,9,#20136,1,"() {}") +hasLocation(#20135,#20137) +enclosingStmt(#20135,#20128) +exprContainers(#20135,#20001) #20139=* -tokeninfo(#20139,8,#20001,27,"}") -hasLocation(#20139,#20095) -#20140=* -tokeninfo(#20140,0,#20001,28,"") -#20141=@"loc,{#10000},12,1,12,0" -locations_default(#20141,#10000,12,1,12,0) -hasLocation(#20140,#20141) +scopes(#20139,1) +scopenodes(#20135,#20139) +scopenesting(#20139,#20131) +#20140=@"var;{arguments};{#20139}" +variables(#20140,"arguments",#20139) +isArgumentsObject(#20140) +#20141=* +stmts(#20141,1,#20135,-2,"{}") +hasLocation(#20141,#20137) +stmtContainers(#20141,#20135) +isMethod(#20136) #20142=* entry_cfg_node(#20142,#20001) #20143=@"loc,{#10000},1,1,1,0" @@ -478,63 +475,63 @@ locations_default(#20143,#10000,1,1,1,0) hasLocation(#20142,#20143) #20144=* exit_cfg_node(#20144,#20001) -hasLocation(#20144,#20141) -successor(#20065,#20063) -successor(#20067,#20068) +hasLocation(#20144,#20078) +successor(#20134,#20132) +successor(#20135,#20136) #20145=* -entry_cfg_node(#20145,#20067) -hasLocation(#20145,#20069) -successor(#20063,#20073) +entry_cfg_node(#20145,#20135) +hasLocation(#20145,#20137) +successor(#20132,#20141) #20146=* -exit_cfg_node(#20146,#20067) -hasLocation(#20146,#20069) -successor(#20073,#20146) -successor(#20145,#20065) -successor(#20070,#20067) -successor(#20068,#20058) -successor(#20060,#20070) -successor(#20058,#20144) -successor(#20043,#20039) -successor(#20041,#20043) -successor(#20039,#20034) -successor(#20036,#20041) -successor(#20038,#20045) +exit_cfg_node(#20146,#20135) +hasLocation(#20146,#20137) +successor(#20141,#20146) +successor(#20145,#20134) +successor(#20138,#20135) +successor(#20136,#20128) +successor(#20130,#20138) +successor(#20128,#20144) +successor(#20114,#20111) +successor(#20113,#20114) +successor(#20111,#20107) +successor(#20109,#20113) +successor(#20110,#20115) #20147=* -entry_cfg_node(#20147,#20038) -hasLocation(#20147,#20046) +entry_cfg_node(#20147,#20110) +hasLocation(#20147,#20116) #20148=* -exit_cfg_node(#20148,#20038) -hasLocation(#20148,#20046) -successor(#20052,#20053) -successor(#20053,#20055) -successor(#20057,#20056) -successor(#20056,#20054) -successor(#20055,#20057) -successor(#20034,#20148) -successor(#20054,#20036) -successor(#20050,#20052) -successor(#20147,#20050) -successor(#20047,#20038) -successor(#20045,#20027) -successor(#20032,#20047) -successor(#20029,#20032) -successor(#20027,#20060) -successor(#20019,#20014) -successor(#20016,#20019) -successor(#20018,#20021) +exit_cfg_node(#20148,#20110) +hasLocation(#20148,#20116) +successor(#20122,#20123) +successor(#20123,#20125) +successor(#20127,#20126) +successor(#20126,#20124) +successor(#20125,#20127) +successor(#20107,#20148) +successor(#20124,#20109) +successor(#20120,#20122) +successor(#20147,#20120) +successor(#20117,#20110) +successor(#20115,#20102) +successor(#20106,#20117) +successor(#20104,#20106) +successor(#20102,#20130) +successor(#20094,#20090) +successor(#20092,#20094) +successor(#20093,#20096) #20149=* -entry_cfg_node(#20149,#20018) -hasLocation(#20149,#20022) -successor(#20014,#20026) +entry_cfg_node(#20149,#20093) +hasLocation(#20149,#20097) +successor(#20090,#20101) #20150=* -exit_cfg_node(#20150,#20018) -hasLocation(#20150,#20022) -successor(#20026,#20150) -successor(#20149,#20016) -successor(#20023,#20018) -successor(#20021,#20009) -successor(#20011,#20023) -successor(#20009,#20029) -successor(#20142,#20011) +exit_cfg_node(#20150,#20093) +hasLocation(#20150,#20097) +successor(#20101,#20150) +successor(#20149,#20092) +successor(#20098,#20093) +successor(#20096,#20086) +successor(#20088,#20098) +successor(#20086,#20104) +successor(#20142,#20088) numlines(#10000,11,9,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/esnext/output/trap/nullish-coalescing.js.trap b/javascript/extractor/tests/esnext/output/trap/nullish-coalescing.js.trap index 0d7c8365d84..00fb9b48b7e 100644 --- a/javascript/extractor/tests/esnext/output/trap/nullish-coalescing.js.trap +++ b/javascript/extractor/tests/esnext/output/trap/nullish-coalescing.js.trap @@ -9,406 +9,406 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,7,15" -locations_default(#20002,#10000,1,1,7,15) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"x1 ?? y1;") -#20004=@"loc,{#10000},1,1,1,9" -locations_default(#20004,#10000,1,1,1,9) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,107,#20003,0,"x1 ?? y1") -#20006=@"loc,{#10000},1,1,1,8" -locations_default(#20006,#10000,1,1,1,8) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -#20007=* -exprs(#20007,79,#20005,0,"x1") -#20008=@"loc,{#10000},1,1,1,2" -locations_default(#20008,#10000,1,1,1,2) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20003) -exprContainers(#20007,#20001) -literals("x1","x1",#20007) -#20009=@"var;{x1};{#20000}" -variables(#20009,"x1",#20000) -bind(#20007,#20009) +#20002=* +lines(#20002,#20001,"x1 ?? y1;"," +") +#20003=@"loc,{#10000},1,1,1,9" +locations_default(#20003,#10000,1,1,1,9) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,""," +") +#20005=@"loc,{#10000},2,1,2,0" +locations_default(#20005,#10000,2,1,2,0) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"x2 || y2 ?? z2;"," +") +#20007=@"loc,{#10000},3,1,3,15" +locations_default(#20007,#10000,3,1,3,15) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001,"x3 ?? y3 || z3;"," +") +#20009=@"loc,{#10000},4,1,4,15" +locations_default(#20009,#10000,4,1,4,15) +hasLocation(#20008,#20009) #20010=* -exprs(#20010,79,#20005,1,"y1") -#20011=@"loc,{#10000},1,7,1,8" -locations_default(#20011,#10000,1,7,1,8) +lines(#20010,#20001,""," +") +#20011=@"loc,{#10000},5,1,5,0" +locations_default(#20011,#10000,5,1,5,0) hasLocation(#20010,#20011) -enclosingStmt(#20010,#20003) -exprContainers(#20010,#20001) -literals("y1","y1",#20010) -#20012=@"var;{y1};{#20000}" -variables(#20012,"y1",#20000) -bind(#20010,#20012) -#20013=* -stmts(#20013,2,#20001,1,"x2 || y2 ?? z2;") -#20014=@"loc,{#10000},3,1,3,15" -locations_default(#20014,#10000,3,1,3,15) -hasLocation(#20013,#20014) -stmtContainers(#20013,#20001) -#20015=* -exprs(#20015,107,#20013,0,"x2 || y2 ?? z2") -#20016=@"loc,{#10000},3,1,3,14" -locations_default(#20016,#10000,3,1,3,14) -hasLocation(#20015,#20016) -enclosingStmt(#20015,#20013) -exprContainers(#20015,#20001) -#20017=* -exprs(#20017,45,#20015,0,"x2 || y2") -#20018=@"loc,{#10000},3,1,3,8" -locations_default(#20018,#10000,3,1,3,8) -hasLocation(#20017,#20018) -enclosingStmt(#20017,#20013) -exprContainers(#20017,#20001) -#20019=* -exprs(#20019,79,#20017,0,"x2") -#20020=@"loc,{#10000},3,1,3,2" -locations_default(#20020,#10000,3,1,3,2) -hasLocation(#20019,#20020) -enclosingStmt(#20019,#20013) -exprContainers(#20019,#20001) -literals("x2","x2",#20019) -#20021=@"var;{x2};{#20000}" -variables(#20021,"x2",#20000) -bind(#20019,#20021) +#20012=* +lines(#20012,#20001,"x4 && y4 ?? z4;"," +") +#20013=@"loc,{#10000},6,1,6,15" +locations_default(#20013,#10000,6,1,6,15) +hasLocation(#20012,#20013) +#20014=* +lines(#20014,#20001,"x5 ?? y5 && z5;","") +#20015=@"loc,{#10000},7,1,7,15" +locations_default(#20015,#10000,7,1,7,15) +hasLocation(#20014,#20015) +numlines(#20001,7,5,0) +#20016=* +tokeninfo(#20016,6,#20001,0,"x1") +#20017=@"loc,{#10000},1,1,1,2" +locations_default(#20017,#10000,1,1,1,2) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,1,"??") +#20019=@"loc,{#10000},1,4,1,5" +locations_default(#20019,#10000,1,4,1,5) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,6,#20001,2,"y1") +#20021=@"loc,{#10000},1,7,1,8" +locations_default(#20021,#10000,1,7,1,8) +hasLocation(#20020,#20021) #20022=* -exprs(#20022,79,#20017,1,"y2") -#20023=@"loc,{#10000},3,7,3,8" -locations_default(#20023,#10000,3,7,3,8) +tokeninfo(#20022,8,#20001,3,";") +#20023=@"loc,{#10000},1,9,1,9" +locations_default(#20023,#10000,1,9,1,9) hasLocation(#20022,#20023) -enclosingStmt(#20022,#20013) -exprContainers(#20022,#20001) -literals("y2","y2",#20022) -#20024=@"var;{y2};{#20000}" -variables(#20024,"y2",#20000) -bind(#20022,#20024) -#20025=* -exprs(#20025,79,#20015,1,"z2") -#20026=@"loc,{#10000},3,13,3,14" -locations_default(#20026,#10000,3,13,3,14) -hasLocation(#20025,#20026) -enclosingStmt(#20025,#20013) -exprContainers(#20025,#20001) -literals("z2","z2",#20025) -#20027=@"var;{z2};{#20000}" -variables(#20027,"z2",#20000) -bind(#20025,#20027) +#20024=* +tokeninfo(#20024,6,#20001,4,"x2") +#20025=@"loc,{#10000},3,1,3,2" +locations_default(#20025,#10000,3,1,3,2) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,5,"||") +#20027=@"loc,{#10000},3,4,3,5" +locations_default(#20027,#10000,3,4,3,5) +hasLocation(#20026,#20027) #20028=* -stmts(#20028,2,#20001,2,"x3 ?? y3 || z3;") -#20029=@"loc,{#10000},4,1,4,15" -locations_default(#20029,#10000,4,1,4,15) +tokeninfo(#20028,6,#20001,6,"y2") +#20029=@"loc,{#10000},3,7,3,8" +locations_default(#20029,#10000,3,7,3,8) hasLocation(#20028,#20029) -stmtContainers(#20028,#20001) #20030=* -exprs(#20030,45,#20028,0,"x3 ?? y3 || z3") -#20031=@"loc,{#10000},4,1,4,14" -locations_default(#20031,#10000,4,1,4,14) +tokeninfo(#20030,8,#20001,7,"??") +#20031=@"loc,{#10000},3,10,3,11" +locations_default(#20031,#10000,3,10,3,11) hasLocation(#20030,#20031) -enclosingStmt(#20030,#20028) -exprContainers(#20030,#20001) #20032=* -exprs(#20032,107,#20030,0,"x3 ?? y3") -#20033=@"loc,{#10000},4,1,4,8" -locations_default(#20033,#10000,4,1,4,8) +tokeninfo(#20032,6,#20001,8,"z2") +#20033=@"loc,{#10000},3,13,3,14" +locations_default(#20033,#10000,3,13,3,14) hasLocation(#20032,#20033) -enclosingStmt(#20032,#20028) -exprContainers(#20032,#20001) #20034=* -exprs(#20034,79,#20032,0,"x3") -#20035=@"loc,{#10000},4,1,4,2" -locations_default(#20035,#10000,4,1,4,2) +tokeninfo(#20034,8,#20001,9,";") +#20035=@"loc,{#10000},3,15,3,15" +locations_default(#20035,#10000,3,15,3,15) hasLocation(#20034,#20035) -enclosingStmt(#20034,#20028) -exprContainers(#20034,#20001) -literals("x3","x3",#20034) -#20036=@"var;{x3};{#20000}" -variables(#20036,"x3",#20000) -bind(#20034,#20036) -#20037=* -exprs(#20037,79,#20032,1,"y3") -#20038=@"loc,{#10000},4,7,4,8" -locations_default(#20038,#10000,4,7,4,8) -hasLocation(#20037,#20038) -enclosingStmt(#20037,#20028) -exprContainers(#20037,#20001) -literals("y3","y3",#20037) -#20039=@"var;{y3};{#20000}" -variables(#20039,"y3",#20000) -bind(#20037,#20039) +#20036=* +tokeninfo(#20036,6,#20001,10,"x3") +#20037=@"loc,{#10000},4,1,4,2" +locations_default(#20037,#10000,4,1,4,2) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,8,#20001,11,"??") +#20039=@"loc,{#10000},4,4,4,5" +locations_default(#20039,#10000,4,4,4,5) +hasLocation(#20038,#20039) #20040=* -exprs(#20040,79,#20030,1,"z3") -#20041=@"loc,{#10000},4,13,4,14" -locations_default(#20041,#10000,4,13,4,14) +tokeninfo(#20040,6,#20001,12,"y3") +#20041=@"loc,{#10000},4,7,4,8" +locations_default(#20041,#10000,4,7,4,8) hasLocation(#20040,#20041) -enclosingStmt(#20040,#20028) -exprContainers(#20040,#20001) -literals("z3","z3",#20040) -#20042=@"var;{z3};{#20000}" -variables(#20042,"z3",#20000) -bind(#20040,#20042) -#20043=* -stmts(#20043,2,#20001,3,"x4 && y4 ?? z4;") -#20044=@"loc,{#10000},6,1,6,15" -locations_default(#20044,#10000,6,1,6,15) -hasLocation(#20043,#20044) -stmtContainers(#20043,#20001) -#20045=* -exprs(#20045,107,#20043,0,"x4 && y4 ?? z4") -#20046=@"loc,{#10000},6,1,6,14" -locations_default(#20046,#10000,6,1,6,14) -hasLocation(#20045,#20046) -enclosingStmt(#20045,#20043) -exprContainers(#20045,#20001) -#20047=* -exprs(#20047,44,#20045,0,"x4 && y4") -#20048=@"loc,{#10000},6,1,6,8" -locations_default(#20048,#10000,6,1,6,8) -hasLocation(#20047,#20048) -enclosingStmt(#20047,#20043) -exprContainers(#20047,#20001) -#20049=* -exprs(#20049,79,#20047,0,"x4") -#20050=@"loc,{#10000},6,1,6,2" -locations_default(#20050,#10000,6,1,6,2) -hasLocation(#20049,#20050) -enclosingStmt(#20049,#20043) -exprContainers(#20049,#20001) -literals("x4","x4",#20049) -#20051=@"var;{x4};{#20000}" -variables(#20051,"x4",#20000) -bind(#20049,#20051) +#20042=* +tokeninfo(#20042,8,#20001,13,"||") +#20043=@"loc,{#10000},4,10,4,11" +locations_default(#20043,#10000,4,10,4,11) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,6,#20001,14,"z3") +#20045=@"loc,{#10000},4,13,4,14" +locations_default(#20045,#10000,4,13,4,14) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,15,";") +#20047=@"loc,{#10000},4,15,4,15" +locations_default(#20047,#10000,4,15,4,15) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,6,#20001,16,"x4") +#20049=@"loc,{#10000},6,1,6,2" +locations_default(#20049,#10000,6,1,6,2) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,17,"&&") +#20051=@"loc,{#10000},6,4,6,5" +locations_default(#20051,#10000,6,4,6,5) +hasLocation(#20050,#20051) #20052=* -exprs(#20052,79,#20047,1,"y4") +tokeninfo(#20052,6,#20001,18,"y4") #20053=@"loc,{#10000},6,7,6,8" locations_default(#20053,#10000,6,7,6,8) hasLocation(#20052,#20053) -enclosingStmt(#20052,#20043) -exprContainers(#20052,#20001) -literals("y4","y4",#20052) -#20054=@"var;{y4};{#20000}" -variables(#20054,"y4",#20000) -bind(#20052,#20054) -#20055=* -exprs(#20055,79,#20045,1,"z4") -#20056=@"loc,{#10000},6,13,6,14" -locations_default(#20056,#10000,6,13,6,14) -hasLocation(#20055,#20056) -enclosingStmt(#20055,#20043) -exprContainers(#20055,#20001) -literals("z4","z4",#20055) -#20057=@"var;{z4};{#20000}" -variables(#20057,"z4",#20000) -bind(#20055,#20057) +#20054=* +tokeninfo(#20054,8,#20001,19,"??") +#20055=@"loc,{#10000},6,10,6,11" +locations_default(#20055,#10000,6,10,6,11) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,6,#20001,20,"z4") +#20057=@"loc,{#10000},6,13,6,14" +locations_default(#20057,#10000,6,13,6,14) +hasLocation(#20056,#20057) #20058=* -stmts(#20058,2,#20001,4,"x5 ?? y5 && z5;") -#20059=@"loc,{#10000},7,1,7,15" -locations_default(#20059,#10000,7,1,7,15) +tokeninfo(#20058,8,#20001,21,";") +#20059=@"loc,{#10000},6,15,6,15" +locations_default(#20059,#10000,6,15,6,15) hasLocation(#20058,#20059) -stmtContainers(#20058,#20001) #20060=* -exprs(#20060,107,#20058,0,"x5 ?? y5 && z5") -#20061=@"loc,{#10000},7,1,7,14" -locations_default(#20061,#10000,7,1,7,14) +tokeninfo(#20060,6,#20001,22,"x5") +#20061=@"loc,{#10000},7,1,7,2" +locations_default(#20061,#10000,7,1,7,2) hasLocation(#20060,#20061) -enclosingStmt(#20060,#20058) -exprContainers(#20060,#20001) #20062=* -exprs(#20062,79,#20060,0,"x5") -#20063=@"loc,{#10000},7,1,7,2" -locations_default(#20063,#10000,7,1,7,2) +tokeninfo(#20062,8,#20001,23,"??") +#20063=@"loc,{#10000},7,4,7,5" +locations_default(#20063,#10000,7,4,7,5) hasLocation(#20062,#20063) -enclosingStmt(#20062,#20058) -exprContainers(#20062,#20001) -literals("x5","x5",#20062) -#20064=@"var;{x5};{#20000}" -variables(#20064,"x5",#20000) -bind(#20062,#20064) -#20065=* -exprs(#20065,44,#20060,1,"y5 && z5") -#20066=@"loc,{#10000},7,7,7,14" -locations_default(#20066,#10000,7,7,7,14) -hasLocation(#20065,#20066) -enclosingStmt(#20065,#20058) -exprContainers(#20065,#20001) -#20067=* -exprs(#20067,79,#20065,0,"y5") -#20068=@"loc,{#10000},7,7,7,8" -locations_default(#20068,#10000,7,7,7,8) -hasLocation(#20067,#20068) -enclosingStmt(#20067,#20058) -exprContainers(#20067,#20001) -literals("y5","y5",#20067) -#20069=@"var;{y5};{#20000}" -variables(#20069,"y5",#20000) -bind(#20067,#20069) +#20064=* +tokeninfo(#20064,6,#20001,24,"y5") +#20065=@"loc,{#10000},7,7,7,8" +locations_default(#20065,#10000,7,7,7,8) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,8,#20001,25,"&&") +#20067=@"loc,{#10000},7,10,7,11" +locations_default(#20067,#10000,7,10,7,11) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,6,#20001,26,"z5") +#20069=@"loc,{#10000},7,13,7,14" +locations_default(#20069,#10000,7,13,7,14) +hasLocation(#20068,#20069) #20070=* -exprs(#20070,79,#20065,1,"z5") -#20071=@"loc,{#10000},7,13,7,14" -locations_default(#20071,#10000,7,13,7,14) +tokeninfo(#20070,8,#20001,27,";") +#20071=@"loc,{#10000},7,15,7,15" +locations_default(#20071,#10000,7,15,7,15) hasLocation(#20070,#20071) -enclosingStmt(#20070,#20058) -exprContainers(#20070,#20001) -literals("z5","z5",#20070) -#20072=@"var;{z5};{#20000}" -variables(#20072,"z5",#20000) -bind(#20070,#20072) -#20073=* -lines(#20073,#20001,"x1 ?? y1;"," -") -hasLocation(#20073,#20004) -#20074=* -lines(#20074,#20001,""," -") -#20075=@"loc,{#10000},2,1,2,0" -locations_default(#20075,#10000,2,1,2,0) -hasLocation(#20074,#20075) +#20072=* +tokeninfo(#20072,0,#20001,28,"") +#20073=@"loc,{#10000},7,16,7,15" +locations_default(#20073,#10000,7,16,7,15) +hasLocation(#20072,#20073) +toplevels(#20001,0) +#20074=@"loc,{#10000},1,1,7,15" +locations_default(#20074,#10000,1,1,7,15) +hasLocation(#20001,#20074) +#20075=* +stmts(#20075,2,#20001,0,"x1 ?? y1;") +hasLocation(#20075,#20003) +stmtContainers(#20075,#20001) #20076=* -lines(#20076,#20001,"x2 || y2 ?? z2;"," -") -hasLocation(#20076,#20014) -#20077=* -lines(#20077,#20001,"x3 ?? y3 || z3;"," -") -hasLocation(#20077,#20029) +exprs(#20076,107,#20075,0,"x1 ?? y1") +#20077=@"loc,{#10000},1,1,1,8" +locations_default(#20077,#10000,1,1,1,8) +hasLocation(#20076,#20077) +enclosingStmt(#20076,#20075) +exprContainers(#20076,#20001) #20078=* -lines(#20078,#20001,""," -") -#20079=@"loc,{#10000},5,1,5,0" -locations_default(#20079,#10000,5,1,5,0) -hasLocation(#20078,#20079) +exprs(#20078,79,#20076,0,"x1") +hasLocation(#20078,#20017) +enclosingStmt(#20078,#20075) +exprContainers(#20078,#20001) +literals("x1","x1",#20078) +#20079=@"var;{x1};{#20000}" +variables(#20079,"x1",#20000) +bind(#20078,#20079) #20080=* -lines(#20080,#20001,"x4 && y4 ?? z4;"," -") -hasLocation(#20080,#20044) -#20081=* -lines(#20081,#20001,"x5 ?? y5 && z5;","") -hasLocation(#20081,#20059) -numlines(#20001,7,5,0) +exprs(#20080,79,#20076,1,"y1") +hasLocation(#20080,#20021) +enclosingStmt(#20080,#20075) +exprContainers(#20080,#20001) +literals("y1","y1",#20080) +#20081=@"var;{y1};{#20000}" +variables(#20081,"y1",#20000) +bind(#20080,#20081) #20082=* -tokeninfo(#20082,6,#20001,0,"x1") -hasLocation(#20082,#20008) +stmts(#20082,2,#20001,1,"x2 || y2 ?? z2;") +hasLocation(#20082,#20007) +stmtContainers(#20082,#20001) #20083=* -tokeninfo(#20083,8,#20001,1,"??") -#20084=@"loc,{#10000},1,4,1,5" -locations_default(#20084,#10000,1,4,1,5) +exprs(#20083,107,#20082,0,"x2 || y2 ?? z2") +#20084=@"loc,{#10000},3,1,3,14" +locations_default(#20084,#10000,3,1,3,14) hasLocation(#20083,#20084) +enclosingStmt(#20083,#20082) +exprContainers(#20083,#20001) #20085=* -tokeninfo(#20085,6,#20001,2,"y1") -hasLocation(#20085,#20011) -#20086=* -tokeninfo(#20086,8,#20001,3,";") -#20087=@"loc,{#10000},1,9,1,9" -locations_default(#20087,#10000,1,9,1,9) -hasLocation(#20086,#20087) -#20088=* -tokeninfo(#20088,6,#20001,4,"x2") -hasLocation(#20088,#20020) +exprs(#20085,45,#20083,0,"x2 || y2") +#20086=@"loc,{#10000},3,1,3,8" +locations_default(#20086,#10000,3,1,3,8) +hasLocation(#20085,#20086) +enclosingStmt(#20085,#20082) +exprContainers(#20085,#20001) +#20087=* +exprs(#20087,79,#20085,0,"x2") +hasLocation(#20087,#20025) +enclosingStmt(#20087,#20082) +exprContainers(#20087,#20001) +literals("x2","x2",#20087) +#20088=@"var;{x2};{#20000}" +variables(#20088,"x2",#20000) +bind(#20087,#20088) #20089=* -tokeninfo(#20089,8,#20001,5,"||") -#20090=@"loc,{#10000},3,4,3,5" -locations_default(#20090,#10000,3,4,3,5) -hasLocation(#20089,#20090) +exprs(#20089,79,#20085,1,"y2") +hasLocation(#20089,#20029) +enclosingStmt(#20089,#20082) +exprContainers(#20089,#20001) +literals("y2","y2",#20089) +#20090=@"var;{y2};{#20000}" +variables(#20090,"y2",#20000) +bind(#20089,#20090) #20091=* -tokeninfo(#20091,6,#20001,6,"y2") -hasLocation(#20091,#20023) -#20092=* -tokeninfo(#20092,8,#20001,7,"??") -#20093=@"loc,{#10000},3,10,3,11" -locations_default(#20093,#10000,3,10,3,11) -hasLocation(#20092,#20093) +exprs(#20091,79,#20083,1,"z2") +hasLocation(#20091,#20033) +enclosingStmt(#20091,#20082) +exprContainers(#20091,#20001) +literals("z2","z2",#20091) +#20092=@"var;{z2};{#20000}" +variables(#20092,"z2",#20000) +bind(#20091,#20092) +#20093=* +stmts(#20093,2,#20001,2,"x3 ?? y3 || z3;") +hasLocation(#20093,#20009) +stmtContainers(#20093,#20001) #20094=* -tokeninfo(#20094,6,#20001,8,"z2") -hasLocation(#20094,#20026) -#20095=* -tokeninfo(#20095,8,#20001,9,";") -#20096=@"loc,{#10000},3,15,3,15" -locations_default(#20096,#10000,3,15,3,15) -hasLocation(#20095,#20096) -#20097=* -tokeninfo(#20097,6,#20001,10,"x3") -hasLocation(#20097,#20035) +exprs(#20094,45,#20093,0,"x3 ?? y3 || z3") +#20095=@"loc,{#10000},4,1,4,14" +locations_default(#20095,#10000,4,1,4,14) +hasLocation(#20094,#20095) +enclosingStmt(#20094,#20093) +exprContainers(#20094,#20001) +#20096=* +exprs(#20096,107,#20094,0,"x3 ?? y3") +#20097=@"loc,{#10000},4,1,4,8" +locations_default(#20097,#10000,4,1,4,8) +hasLocation(#20096,#20097) +enclosingStmt(#20096,#20093) +exprContainers(#20096,#20001) #20098=* -tokeninfo(#20098,8,#20001,11,"??") -#20099=@"loc,{#10000},4,4,4,5" -locations_default(#20099,#10000,4,4,4,5) -hasLocation(#20098,#20099) +exprs(#20098,79,#20096,0,"x3") +hasLocation(#20098,#20037) +enclosingStmt(#20098,#20093) +exprContainers(#20098,#20001) +literals("x3","x3",#20098) +#20099=@"var;{x3};{#20000}" +variables(#20099,"x3",#20000) +bind(#20098,#20099) #20100=* -tokeninfo(#20100,6,#20001,12,"y3") -hasLocation(#20100,#20038) -#20101=* -tokeninfo(#20101,8,#20001,13,"||") -#20102=@"loc,{#10000},4,10,4,11" -locations_default(#20102,#10000,4,10,4,11) -hasLocation(#20101,#20102) -#20103=* -tokeninfo(#20103,6,#20001,14,"z3") -hasLocation(#20103,#20041) +exprs(#20100,79,#20096,1,"y3") +hasLocation(#20100,#20041) +enclosingStmt(#20100,#20093) +exprContainers(#20100,#20001) +literals("y3","y3",#20100) +#20101=@"var;{y3};{#20000}" +variables(#20101,"y3",#20000) +bind(#20100,#20101) +#20102=* +exprs(#20102,79,#20094,1,"z3") +hasLocation(#20102,#20045) +enclosingStmt(#20102,#20093) +exprContainers(#20102,#20001) +literals("z3","z3",#20102) +#20103=@"var;{z3};{#20000}" +variables(#20103,"z3",#20000) +bind(#20102,#20103) #20104=* -tokeninfo(#20104,8,#20001,15,";") -#20105=@"loc,{#10000},4,15,4,15" -locations_default(#20105,#10000,4,15,4,15) -hasLocation(#20104,#20105) -#20106=* -tokeninfo(#20106,6,#20001,16,"x4") -hasLocation(#20106,#20050) +stmts(#20104,2,#20001,3,"x4 && y4 ?? z4;") +hasLocation(#20104,#20013) +stmtContainers(#20104,#20001) +#20105=* +exprs(#20105,107,#20104,0,"x4 && y4 ?? z4") +#20106=@"loc,{#10000},6,1,6,14" +locations_default(#20106,#10000,6,1,6,14) +hasLocation(#20105,#20106) +enclosingStmt(#20105,#20104) +exprContainers(#20105,#20001) #20107=* -tokeninfo(#20107,8,#20001,17,"&&") -#20108=@"loc,{#10000},6,4,6,5" -locations_default(#20108,#10000,6,4,6,5) +exprs(#20107,44,#20105,0,"x4 && y4") +#20108=@"loc,{#10000},6,1,6,8" +locations_default(#20108,#10000,6,1,6,8) hasLocation(#20107,#20108) +enclosingStmt(#20107,#20104) +exprContainers(#20107,#20001) #20109=* -tokeninfo(#20109,6,#20001,18,"y4") -hasLocation(#20109,#20053) -#20110=* -tokeninfo(#20110,8,#20001,19,"??") -#20111=@"loc,{#10000},6,10,6,11" -locations_default(#20111,#10000,6,10,6,11) -hasLocation(#20110,#20111) -#20112=* -tokeninfo(#20112,6,#20001,20,"z4") -hasLocation(#20112,#20056) +exprs(#20109,79,#20107,0,"x4") +hasLocation(#20109,#20049) +enclosingStmt(#20109,#20104) +exprContainers(#20109,#20001) +literals("x4","x4",#20109) +#20110=@"var;{x4};{#20000}" +variables(#20110,"x4",#20000) +bind(#20109,#20110) +#20111=* +exprs(#20111,79,#20107,1,"y4") +hasLocation(#20111,#20053) +enclosingStmt(#20111,#20104) +exprContainers(#20111,#20001) +literals("y4","y4",#20111) +#20112=@"var;{y4};{#20000}" +variables(#20112,"y4",#20000) +bind(#20111,#20112) #20113=* -tokeninfo(#20113,8,#20001,21,";") -#20114=@"loc,{#10000},6,15,6,15" -locations_default(#20114,#10000,6,15,6,15) -hasLocation(#20113,#20114) +exprs(#20113,79,#20105,1,"z4") +hasLocation(#20113,#20057) +enclosingStmt(#20113,#20104) +exprContainers(#20113,#20001) +literals("z4","z4",#20113) +#20114=@"var;{z4};{#20000}" +variables(#20114,"z4",#20000) +bind(#20113,#20114) #20115=* -tokeninfo(#20115,6,#20001,22,"x5") -hasLocation(#20115,#20063) +stmts(#20115,2,#20001,4,"x5 ?? y5 && z5;") +hasLocation(#20115,#20015) +stmtContainers(#20115,#20001) #20116=* -tokeninfo(#20116,8,#20001,23,"??") -#20117=@"loc,{#10000},7,4,7,5" -locations_default(#20117,#10000,7,4,7,5) +exprs(#20116,107,#20115,0,"x5 ?? y5 && z5") +#20117=@"loc,{#10000},7,1,7,14" +locations_default(#20117,#10000,7,1,7,14) hasLocation(#20116,#20117) +enclosingStmt(#20116,#20115) +exprContainers(#20116,#20001) #20118=* -tokeninfo(#20118,6,#20001,24,"y5") -hasLocation(#20118,#20068) -#20119=* -tokeninfo(#20119,8,#20001,25,"&&") -#20120=@"loc,{#10000},7,10,7,11" -locations_default(#20120,#10000,7,10,7,11) -hasLocation(#20119,#20120) -#20121=* -tokeninfo(#20121,6,#20001,26,"z5") -hasLocation(#20121,#20071) +exprs(#20118,79,#20116,0,"x5") +hasLocation(#20118,#20061) +enclosingStmt(#20118,#20115) +exprContainers(#20118,#20001) +literals("x5","x5",#20118) +#20119=@"var;{x5};{#20000}" +variables(#20119,"x5",#20000) +bind(#20118,#20119) +#20120=* +exprs(#20120,44,#20116,1,"y5 && z5") +#20121=@"loc,{#10000},7,7,7,14" +locations_default(#20121,#10000,7,7,7,14) +hasLocation(#20120,#20121) +enclosingStmt(#20120,#20115) +exprContainers(#20120,#20001) #20122=* -tokeninfo(#20122,8,#20001,27,";") -#20123=@"loc,{#10000},7,15,7,15" -locations_default(#20123,#10000,7,15,7,15) -hasLocation(#20122,#20123) +exprs(#20122,79,#20120,0,"y5") +hasLocation(#20122,#20065) +enclosingStmt(#20122,#20115) +exprContainers(#20122,#20001) +literals("y5","y5",#20122) +#20123=@"var;{y5};{#20000}" +variables(#20123,"y5",#20000) +bind(#20122,#20123) #20124=* -tokeninfo(#20124,0,#20001,28,"") -#20125=@"loc,{#10000},7,16,7,15" -locations_default(#20125,#10000,7,16,7,15) -hasLocation(#20124,#20125) +exprs(#20124,79,#20120,1,"z5") +hasLocation(#20124,#20069) +enclosingStmt(#20124,#20115) +exprContainers(#20124,#20001) +literals("z5","z5",#20124) +#20125=@"var;{z5};{#20000}" +variables(#20125,"z5",#20000) +bind(#20124,#20125) #20126=* entry_cfg_node(#20126,#20001) #20127=@"loc,{#10000},1,1,1,0" @@ -416,79 +416,79 @@ locations_default(#20127,#10000,1,1,1,0) hasLocation(#20126,#20127) #20128=* exit_cfg_node(#20128,#20001) -hasLocation(#20128,#20125) -successor(#20058,#20060) -successor(#20060,#20062) -successor(#20062,#20065) -successor(#20062,#20128) -successor(#20065,#20067) +hasLocation(#20128,#20073) +successor(#20115,#20116) +successor(#20116,#20118) +successor(#20118,#20120) +successor(#20118,#20128) +successor(#20120,#20122) #20129=* -guard_node(#20129,1,#20067) -hasLocation(#20129,#20068) -successor(#20129,#20070) +guard_node(#20129,1,#20122) +hasLocation(#20129,#20065) +successor(#20129,#20124) #20130=* -guard_node(#20130,0,#20067) -hasLocation(#20130,#20068) +guard_node(#20130,0,#20122) +hasLocation(#20130,#20065) successor(#20130,#20128) -successor(#20067,#20129) -successor(#20067,#20130) -successor(#20070,#20128) -successor(#20043,#20045) -successor(#20045,#20047) -successor(#20047,#20049) +successor(#20122,#20129) +successor(#20122,#20130) +successor(#20124,#20128) +successor(#20104,#20105) +successor(#20105,#20107) +successor(#20107,#20109) #20131=* -guard_node(#20131,1,#20049) -hasLocation(#20131,#20050) -successor(#20131,#20052) +guard_node(#20131,1,#20109) +hasLocation(#20131,#20049) +successor(#20131,#20111) #20132=* -guard_node(#20132,0,#20049) -hasLocation(#20132,#20050) -successor(#20132,#20055) -successor(#20132,#20058) -successor(#20049,#20131) -successor(#20049,#20132) -successor(#20052,#20055) -successor(#20052,#20058) -successor(#20055,#20058) -successor(#20028,#20030) -successor(#20030,#20032) -successor(#20032,#20034) -successor(#20034,#20037) -successor(#20034,#20043) -successor(#20034,#20040) +guard_node(#20132,0,#20109) +hasLocation(#20132,#20049) +successor(#20132,#20113) +successor(#20132,#20115) +successor(#20109,#20131) +successor(#20109,#20132) +successor(#20111,#20113) +successor(#20111,#20115) +successor(#20113,#20115) +successor(#20093,#20094) +successor(#20094,#20096) +successor(#20096,#20098) +successor(#20098,#20100) +successor(#20098,#20104) +successor(#20098,#20102) #20133=* -guard_node(#20133,1,#20037) -hasLocation(#20133,#20038) -successor(#20133,#20043) +guard_node(#20133,1,#20100) +hasLocation(#20133,#20041) +successor(#20133,#20104) #20134=* -guard_node(#20134,0,#20037) -hasLocation(#20134,#20038) -successor(#20134,#20040) -successor(#20037,#20133) -successor(#20037,#20134) -successor(#20040,#20043) -successor(#20013,#20015) -successor(#20015,#20017) -successor(#20017,#20019) +guard_node(#20134,0,#20100) +hasLocation(#20134,#20041) +successor(#20134,#20102) +successor(#20100,#20133) +successor(#20100,#20134) +successor(#20102,#20104) +successor(#20082,#20083) +successor(#20083,#20085) +successor(#20085,#20087) #20135=* -guard_node(#20135,1,#20019) -hasLocation(#20135,#20020) -successor(#20135,#20025) -successor(#20135,#20028) +guard_node(#20135,1,#20087) +hasLocation(#20135,#20025) +successor(#20135,#20091) +successor(#20135,#20093) #20136=* -guard_node(#20136,0,#20019) -hasLocation(#20136,#20020) -successor(#20136,#20022) -successor(#20019,#20135) -successor(#20019,#20136) -successor(#20022,#20025) -successor(#20022,#20028) -successor(#20025,#20028) -successor(#20003,#20005) -successor(#20005,#20007) -successor(#20007,#20010) -successor(#20007,#20013) -successor(#20010,#20013) -successor(#20126,#20003) +guard_node(#20136,0,#20087) +hasLocation(#20136,#20025) +successor(#20136,#20089) +successor(#20087,#20135) +successor(#20087,#20136) +successor(#20089,#20091) +successor(#20089,#20093) +successor(#20091,#20093) +successor(#20075,#20076) +successor(#20076,#20078) +successor(#20078,#20080) +successor(#20078,#20082) +successor(#20080,#20082) +successor(#20126,#20075) numlines(#10000,7,5,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/esnext/output/trap/optional-chaining.js.trap b/javascript/extractor/tests/esnext/output/trap/optional-chaining.js.trap index cc949812b60..fb3a192bd7f 100644 --- a/javascript/extractor/tests/esnext/output/trap/optional-chaining.js.trap +++ b/javascript/extractor/tests/esnext/output/trap/optional-chaining.js.trap @@ -9,585 +9,585 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,13,11" -locations_default(#20002,#10000,1,1,13,11) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"a1?.b1;") -#20004=@"loc,{#10000},1,1,1,7" -locations_default(#20004,#10000,1,1,1,7) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,14,#20003,0,"a1?.b1") -#20006=@"loc,{#10000},1,1,1,6" -locations_default(#20006,#10000,1,1,1,6) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -#20007=* -exprs(#20007,79,#20005,0,"a1") -#20008=@"loc,{#10000},1,1,1,2" -locations_default(#20008,#10000,1,1,1,2) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20003) -exprContainers(#20007,#20001) -literals("a1","a1",#20007) -#20009=@"var;{a1};{#20000}" -variables(#20009,"a1",#20000) -bind(#20007,#20009) +#20002=* +lines(#20002,#20001,"a1?.b1;"," +") +#20003=@"loc,{#10000},1,1,1,7" +locations_default(#20003,#10000,1,1,1,7) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,""," +") +#20005=@"loc,{#10000},2,1,2,0" +locations_default(#20005,#10000,2,1,2,0) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"a2?.[x2];"," +") +#20007=@"loc,{#10000},3,1,3,9" +locations_default(#20007,#10000,3,1,3,9) +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=* -exprs(#20010,0,#20005,1,"b1") -#20011=@"loc,{#10000},1,5,1,6" -locations_default(#20011,#10000,1,5,1,6) +lines(#20010,#20001,"a3?.b3();"," +") +#20011=@"loc,{#10000},5,1,5,9" +locations_default(#20011,#10000,5,1,5,9) hasLocation(#20010,#20011) -enclosingStmt(#20010,#20003) -exprContainers(#20010,#20001) -literals("b1","b1",#20010) -isOptionalChaining(#20005) #20012=* -stmts(#20012,2,#20001,1,"a2?.[x2];") -#20013=@"loc,{#10000},3,1,3,9" -locations_default(#20013,#10000,3,1,3,9) +lines(#20012,#20001,""," +") +#20013=@"loc,{#10000},6,1,6,0" +locations_default(#20013,#10000,6,1,6,0) hasLocation(#20012,#20013) -stmtContainers(#20012,#20001) #20014=* -exprs(#20014,15,#20012,0,"a2?.[x2]") -#20015=@"loc,{#10000},3,1,3,8" -locations_default(#20015,#10000,3,1,3,8) +lines(#20014,#20001,"a4?.();"," +") +#20015=@"loc,{#10000},7,1,7,7" +locations_default(#20015,#10000,7,1,7,7) hasLocation(#20014,#20015) -enclosingStmt(#20014,#20012) -exprContainers(#20014,#20001) #20016=* -exprs(#20016,79,#20014,0,"a2") -#20017=@"loc,{#10000},3,1,3,2" -locations_default(#20017,#10000,3,1,3,2) +lines(#20016,#20001,""," +") +#20017=@"loc,{#10000},8,1,8,0" +locations_default(#20017,#10000,8,1,8,0) hasLocation(#20016,#20017) -enclosingStmt(#20016,#20012) -exprContainers(#20016,#20001) -literals("a2","a2",#20016) -#20018=@"var;{a2};{#20000}" -variables(#20018,"a2",#20000) -bind(#20016,#20018) -#20019=* -exprs(#20019,79,#20014,1,"x2") -#20020=@"loc,{#10000},3,6,3,7" -locations_default(#20020,#10000,3,6,3,7) -hasLocation(#20019,#20020) -enclosingStmt(#20019,#20012) -exprContainers(#20019,#20001) -literals("x2","x2",#20019) -#20021=@"var;{x2};{#20000}" -variables(#20021,"x2",#20000) -bind(#20019,#20021) -isOptionalChaining(#20014) +#20018=* +lines(#20018,#20001,"o5?.3:2;"," +") +#20019=@"loc,{#10000},9,1,9,8" +locations_default(#20019,#10000,9,1,9,8) +hasLocation(#20018,#20019) +#20020=* +lines(#20020,#20001,""," +") +#20021=@"loc,{#10000},10,1,10,0" +locations_default(#20021,#10000,10,1,10,0) +hasLocation(#20020,#20021) #20022=* -stmts(#20022,2,#20001,2,"a3?.b3();") -#20023=@"loc,{#10000},5,1,5,9" -locations_default(#20023,#10000,5,1,5,9) +lines(#20022,#20001,"a6?.b6[x6].c6?.(y6).d6;"," +") +#20023=@"loc,{#10000},11,1,11,23" +locations_default(#20023,#10000,11,1,11,23) hasLocation(#20022,#20023) -stmtContainers(#20022,#20001) #20024=* -exprs(#20024,13,#20022,0,"a3?.b3()") -#20025=@"loc,{#10000},5,1,5,8" -locations_default(#20025,#10000,5,1,5,8) +lines(#20024,#20001,""," +") +#20025=@"loc,{#10000},12,1,12,0" +locations_default(#20025,#10000,12,1,12,0) hasLocation(#20024,#20025) -enclosingStmt(#20024,#20022) -exprContainers(#20024,#20001) #20026=* -exprs(#20026,14,#20024,-1,"a3?.b3") -#20027=@"loc,{#10000},5,1,5,6" -locations_default(#20027,#10000,5,1,5,6) +lines(#20026,#20001,"delete a?.b","") +#20027=@"loc,{#10000},13,1,13,11" +locations_default(#20027,#10000,13,1,13,11) hasLocation(#20026,#20027) -enclosingStmt(#20026,#20022) -exprContainers(#20026,#20001) +numlines(#20001,13,7,0) #20028=* -exprs(#20028,79,#20026,0,"a3") -#20029=@"loc,{#10000},5,1,5,2" -locations_default(#20029,#10000,5,1,5,2) +tokeninfo(#20028,6,#20001,0,"a1") +#20029=@"loc,{#10000},1,1,1,2" +locations_default(#20029,#10000,1,1,1,2) hasLocation(#20028,#20029) -enclosingStmt(#20028,#20022) -exprContainers(#20028,#20001) -literals("a3","a3",#20028) -#20030=@"var;{a3};{#20000}" -variables(#20030,"a3",#20000) -bind(#20028,#20030) -#20031=* -exprs(#20031,0,#20026,1,"b3") -#20032=@"loc,{#10000},5,5,5,6" -locations_default(#20032,#10000,5,5,5,6) -hasLocation(#20031,#20032) -enclosingStmt(#20031,#20022) -exprContainers(#20031,#20001) -literals("b3","b3",#20031) -isOptionalChaining(#20026) -#20033=* -stmts(#20033,2,#20001,3,"a4?.();") -#20034=@"loc,{#10000},7,1,7,7" -locations_default(#20034,#10000,7,1,7,7) -hasLocation(#20033,#20034) -stmtContainers(#20033,#20001) -#20035=* -exprs(#20035,13,#20033,0,"a4?.()") -#20036=@"loc,{#10000},7,1,7,6" -locations_default(#20036,#10000,7,1,7,6) -hasLocation(#20035,#20036) -enclosingStmt(#20035,#20033) -exprContainers(#20035,#20001) -#20037=* -exprs(#20037,79,#20035,-1,"a4") -#20038=@"loc,{#10000},7,1,7,2" -locations_default(#20038,#10000,7,1,7,2) -hasLocation(#20037,#20038) -enclosingStmt(#20037,#20033) -exprContainers(#20037,#20001) -literals("a4","a4",#20037) -#20039=@"var;{a4};{#20000}" -variables(#20039,"a4",#20000) -bind(#20037,#20039) -isOptionalChaining(#20035) +#20030=* +tokeninfo(#20030,8,#20001,1,"?.") +#20031=@"loc,{#10000},1,3,1,4" +locations_default(#20031,#10000,1,3,1,4) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,6,#20001,2,"b1") +#20033=@"loc,{#10000},1,5,1,6" +locations_default(#20033,#10000,1,5,1,6) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,3,";") +#20035=@"loc,{#10000},1,7,1,7" +locations_default(#20035,#10000,1,7,1,7) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,6,#20001,4,"a2") +#20037=@"loc,{#10000},3,1,3,2" +locations_default(#20037,#10000,3,1,3,2) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,8,#20001,5,"?.") +#20039=@"loc,{#10000},3,3,3,4" +locations_default(#20039,#10000,3,3,3,4) +hasLocation(#20038,#20039) #20040=* -stmts(#20040,2,#20001,4,"o5?.3:2;") -#20041=@"loc,{#10000},9,1,9,8" -locations_default(#20041,#10000,9,1,9,8) +tokeninfo(#20040,8,#20001,6,"[") +#20041=@"loc,{#10000},3,5,3,5" +locations_default(#20041,#10000,3,5,3,5) hasLocation(#20040,#20041) -stmtContainers(#20040,#20001) #20042=* -exprs(#20042,11,#20040,0,"o5?.3:2") -#20043=@"loc,{#10000},9,1,9,7" -locations_default(#20043,#10000,9,1,9,7) +tokeninfo(#20042,6,#20001,7,"x2") +#20043=@"loc,{#10000},3,6,3,7" +locations_default(#20043,#10000,3,6,3,7) hasLocation(#20042,#20043) -enclosingStmt(#20042,#20040) -exprContainers(#20042,#20001) #20044=* -exprs(#20044,79,#20042,0,"o5") -#20045=@"loc,{#10000},9,1,9,2" -locations_default(#20045,#10000,9,1,9,2) +tokeninfo(#20044,8,#20001,8,"]") +#20045=@"loc,{#10000},3,8,3,8" +locations_default(#20045,#10000,3,8,3,8) hasLocation(#20044,#20045) -enclosingStmt(#20044,#20040) -exprContainers(#20044,#20001) -literals("o5","o5",#20044) -#20046=@"var;{o5};{#20000}" -variables(#20046,"o5",#20000) -bind(#20044,#20046) -#20047=* -exprs(#20047,3,#20042,1,".3") -#20048=@"loc,{#10000},9,4,9,5" -locations_default(#20048,#10000,9,4,9,5) -hasLocation(#20047,#20048) -enclosingStmt(#20047,#20040) -exprContainers(#20047,#20001) -literals("0.3",".3",#20047) -#20049=* -exprs(#20049,3,#20042,2,"2") -#20050=@"loc,{#10000},9,7,9,7" -locations_default(#20050,#10000,9,7,9,7) -hasLocation(#20049,#20050) -enclosingStmt(#20049,#20040) -exprContainers(#20049,#20001) -literals("2","2",#20049) -#20051=* -stmts(#20051,2,#20001,5,"a6?.b6[ ... y6).d6;") -#20052=@"loc,{#10000},11,1,11,23" -locations_default(#20052,#10000,11,1,11,23) -hasLocation(#20051,#20052) -stmtContainers(#20051,#20001) -#20053=* -exprs(#20053,14,#20051,0,"a6?.b6[ ... (y6).d6") -#20054=@"loc,{#10000},11,1,11,22" -locations_default(#20054,#10000,11,1,11,22) -hasLocation(#20053,#20054) -enclosingStmt(#20053,#20051) -exprContainers(#20053,#20001) -#20055=* -exprs(#20055,13,#20053,0,"a6?.b6[x6].c6?.(y6)") -#20056=@"loc,{#10000},11,1,11,19" -locations_default(#20056,#10000,11,1,11,19) -hasLocation(#20055,#20056) -enclosingStmt(#20055,#20051) -exprContainers(#20055,#20001) -#20057=* -exprs(#20057,14,#20055,-1,"a6?.b6[x6].c6") -#20058=@"loc,{#10000},11,1,11,13" -locations_default(#20058,#10000,11,1,11,13) -hasLocation(#20057,#20058) -enclosingStmt(#20057,#20051) -exprContainers(#20057,#20001) -#20059=* -exprs(#20059,15,#20057,0,"a6?.b6[x6]") -#20060=@"loc,{#10000},11,1,11,10" -locations_default(#20060,#10000,11,1,11,10) -hasLocation(#20059,#20060) -enclosingStmt(#20059,#20051) -exprContainers(#20059,#20001) -#20061=* -exprs(#20061,14,#20059,0,"a6?.b6") -#20062=@"loc,{#10000},11,1,11,6" -locations_default(#20062,#10000,11,1,11,6) -hasLocation(#20061,#20062) -enclosingStmt(#20061,#20051) -exprContainers(#20061,#20001) -#20063=* -exprs(#20063,79,#20061,0,"a6") -#20064=@"loc,{#10000},11,1,11,2" -locations_default(#20064,#10000,11,1,11,2) -hasLocation(#20063,#20064) -enclosingStmt(#20063,#20051) -exprContainers(#20063,#20001) -literals("a6","a6",#20063) -#20065=@"var;{a6};{#20000}" -variables(#20065,"a6",#20000) -bind(#20063,#20065) +#20046=* +tokeninfo(#20046,8,#20001,9,";") +#20047=@"loc,{#10000},3,9,3,9" +locations_default(#20047,#10000,3,9,3,9) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,6,#20001,10,"a3") +#20049=@"loc,{#10000},5,1,5,2" +locations_default(#20049,#10000,5,1,5,2) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,11,"?.") +#20051=@"loc,{#10000},5,3,5,4" +locations_default(#20051,#10000,5,3,5,4) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,6,#20001,12,"b3") +#20053=@"loc,{#10000},5,5,5,6" +locations_default(#20053,#10000,5,5,5,6) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,8,#20001,13,"(") +#20055=@"loc,{#10000},5,7,5,7" +locations_default(#20055,#10000,5,7,5,7) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,8,#20001,14,")") +#20057=@"loc,{#10000},5,8,5,8" +locations_default(#20057,#10000,5,8,5,8) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,8,#20001,15,";") +#20059=@"loc,{#10000},5,9,5,9" +locations_default(#20059,#10000,5,9,5,9) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,6,#20001,16,"a4") +#20061=@"loc,{#10000},7,1,7,2" +locations_default(#20061,#10000,7,1,7,2) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,8,#20001,17,"?.") +#20063=@"loc,{#10000},7,3,7,4" +locations_default(#20063,#10000,7,3,7,4) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,8,#20001,18,"(") +#20065=@"loc,{#10000},7,5,7,5" +locations_default(#20065,#10000,7,5,7,5) +hasLocation(#20064,#20065) #20066=* -exprs(#20066,0,#20061,1,"b6") -#20067=@"loc,{#10000},11,5,11,6" -locations_default(#20067,#10000,11,5,11,6) +tokeninfo(#20066,8,#20001,19,")") +#20067=@"loc,{#10000},7,6,7,6" +locations_default(#20067,#10000,7,6,7,6) hasLocation(#20066,#20067) -enclosingStmt(#20066,#20051) -exprContainers(#20066,#20001) -literals("b6","b6",#20066) -isOptionalChaining(#20061) #20068=* -exprs(#20068,79,#20059,1,"x6") -#20069=@"loc,{#10000},11,8,11,9" -locations_default(#20069,#10000,11,8,11,9) +tokeninfo(#20068,8,#20001,20,";") +#20069=@"loc,{#10000},7,7,7,7" +locations_default(#20069,#10000,7,7,7,7) hasLocation(#20068,#20069) -enclosingStmt(#20068,#20051) -exprContainers(#20068,#20001) -literals("x6","x6",#20068) -#20070=@"var;{x6};{#20000}" -variables(#20070,"x6",#20000) -bind(#20068,#20070) -#20071=* -exprs(#20071,0,#20057,1,"c6") -#20072=@"loc,{#10000},11,12,11,13" -locations_default(#20072,#10000,11,12,11,13) -hasLocation(#20071,#20072) -enclosingStmt(#20071,#20051) -exprContainers(#20071,#20001) -literals("c6","c6",#20071) -#20073=* -exprs(#20073,79,#20055,0,"y6") -#20074=@"loc,{#10000},11,17,11,18" -locations_default(#20074,#10000,11,17,11,18) -hasLocation(#20073,#20074) -enclosingStmt(#20073,#20051) -exprContainers(#20073,#20001) -literals("y6","y6",#20073) -#20075=@"var;{y6};{#20000}" -variables(#20075,"y6",#20000) -bind(#20073,#20075) -isOptionalChaining(#20055) +#20070=* +tokeninfo(#20070,6,#20001,21,"o5") +#20071=@"loc,{#10000},9,1,9,2" +locations_default(#20071,#10000,9,1,9,2) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,8,#20001,22,"?") +#20073=@"loc,{#10000},9,3,9,3" +locations_default(#20073,#10000,9,3,9,3) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,3,#20001,23,".3") +#20075=@"loc,{#10000},9,4,9,5" +locations_default(#20075,#10000,9,4,9,5) +hasLocation(#20074,#20075) #20076=* -exprs(#20076,0,#20053,1,"d6") -#20077=@"loc,{#10000},11,21,11,22" -locations_default(#20077,#10000,11,21,11,22) +tokeninfo(#20076,8,#20001,24,":") +#20077=@"loc,{#10000},9,6,9,6" +locations_default(#20077,#10000,9,6,9,6) hasLocation(#20076,#20077) -enclosingStmt(#20076,#20051) -exprContainers(#20076,#20001) -literals("d6","d6",#20076) #20078=* -stmts(#20078,2,#20001,6,"delete a?.b") -#20079=@"loc,{#10000},13,1,13,11" -locations_default(#20079,#10000,13,1,13,11) +tokeninfo(#20078,3,#20001,25,"2") +#20079=@"loc,{#10000},9,7,9,7" +locations_default(#20079,#10000,9,7,9,7) hasLocation(#20078,#20079) -stmtContainers(#20078,#20001) #20080=* -exprs(#20080,22,#20078,0,"delete a?.b") -hasLocation(#20080,#20079) -enclosingStmt(#20080,#20078) -exprContainers(#20080,#20001) -#20081=* -exprs(#20081,14,#20080,0,"a?.b") -#20082=@"loc,{#10000},13,8,13,11" -locations_default(#20082,#10000,13,8,13,11) -hasLocation(#20081,#20082) -enclosingStmt(#20081,#20078) -exprContainers(#20081,#20001) -#20083=* -exprs(#20083,79,#20081,0,"a") -#20084=@"loc,{#10000},13,8,13,8" -locations_default(#20084,#10000,13,8,13,8) -hasLocation(#20083,#20084) -enclosingStmt(#20083,#20078) -exprContainers(#20083,#20001) -literals("a","a",#20083) -#20085=@"var;{a};{#20000}" -variables(#20085,"a",#20000) -bind(#20083,#20085) +tokeninfo(#20080,8,#20001,26,";") +#20081=@"loc,{#10000},9,8,9,8" +locations_default(#20081,#10000,9,8,9,8) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,6,#20001,27,"a6") +#20083=@"loc,{#10000},11,1,11,2" +locations_default(#20083,#10000,11,1,11,2) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,8,#20001,28,"?.") +#20085=@"loc,{#10000},11,3,11,4" +locations_default(#20085,#10000,11,3,11,4) +hasLocation(#20084,#20085) #20086=* -exprs(#20086,0,#20081,1,"b") -#20087=@"loc,{#10000},13,11,13,11" -locations_default(#20087,#10000,13,11,13,11) +tokeninfo(#20086,6,#20001,29,"b6") +#20087=@"loc,{#10000},11,5,11,6" +locations_default(#20087,#10000,11,5,11,6) hasLocation(#20086,#20087) -enclosingStmt(#20086,#20078) -exprContainers(#20086,#20001) -literals("b","b",#20086) -isOptionalChaining(#20081) #20088=* -lines(#20088,#20001,"a1?.b1;"," -") -hasLocation(#20088,#20004) -#20089=* -lines(#20089,#20001,""," -") -#20090=@"loc,{#10000},2,1,2,0" -locations_default(#20090,#10000,2,1,2,0) -hasLocation(#20089,#20090) -#20091=* -lines(#20091,#20001,"a2?.[x2];"," -") -hasLocation(#20091,#20013) +tokeninfo(#20088,8,#20001,30,"[") +#20089=@"loc,{#10000},11,7,11,7" +locations_default(#20089,#10000,11,7,11,7) +hasLocation(#20088,#20089) +#20090=* +tokeninfo(#20090,6,#20001,31,"x6") +#20091=@"loc,{#10000},11,8,11,9" +locations_default(#20091,#10000,11,8,11,9) +hasLocation(#20090,#20091) #20092=* -lines(#20092,#20001,""," -") -#20093=@"loc,{#10000},4,1,4,0" -locations_default(#20093,#10000,4,1,4,0) +tokeninfo(#20092,8,#20001,32,"]") +#20093=@"loc,{#10000},11,10,11,10" +locations_default(#20093,#10000,11,10,11,10) hasLocation(#20092,#20093) #20094=* -lines(#20094,#20001,"a3?.b3();"," -") -hasLocation(#20094,#20023) -#20095=* -lines(#20095,#20001,""," -") -#20096=@"loc,{#10000},6,1,6,0" -locations_default(#20096,#10000,6,1,6,0) -hasLocation(#20095,#20096) -#20097=* -lines(#20097,#20001,"a4?.();"," -") -hasLocation(#20097,#20034) +tokeninfo(#20094,8,#20001,33,".") +#20095=@"loc,{#10000},11,11,11,11" +locations_default(#20095,#10000,11,11,11,11) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,6,#20001,34,"c6") +#20097=@"loc,{#10000},11,12,11,13" +locations_default(#20097,#10000,11,12,11,13) +hasLocation(#20096,#20097) #20098=* -lines(#20098,#20001,""," -") -#20099=@"loc,{#10000},8,1,8,0" -locations_default(#20099,#10000,8,1,8,0) +tokeninfo(#20098,8,#20001,35,"?.") +#20099=@"loc,{#10000},11,14,11,15" +locations_default(#20099,#10000,11,14,11,15) hasLocation(#20098,#20099) #20100=* -lines(#20100,#20001,"o5?.3:2;"," -") -hasLocation(#20100,#20041) -#20101=* -lines(#20101,#20001,""," -") -#20102=@"loc,{#10000},10,1,10,0" -locations_default(#20102,#10000,10,1,10,0) -hasLocation(#20101,#20102) -#20103=* -lines(#20103,#20001,"a6?.b6[x6].c6?.(y6).d6;"," -") -hasLocation(#20103,#20052) +tokeninfo(#20100,8,#20001,36,"(") +#20101=@"loc,{#10000},11,16,11,16" +locations_default(#20101,#10000,11,16,11,16) +hasLocation(#20100,#20101) +#20102=* +tokeninfo(#20102,6,#20001,37,"y6") +#20103=@"loc,{#10000},11,17,11,18" +locations_default(#20103,#10000,11,17,11,18) +hasLocation(#20102,#20103) #20104=* -lines(#20104,#20001,""," -") -#20105=@"loc,{#10000},12,1,12,0" -locations_default(#20105,#10000,12,1,12,0) +tokeninfo(#20104,8,#20001,38,")") +#20105=@"loc,{#10000},11,19,11,19" +locations_default(#20105,#10000,11,19,11,19) hasLocation(#20104,#20105) #20106=* -lines(#20106,#20001,"delete a?.b","") -hasLocation(#20106,#20079) -numlines(#20001,13,7,0) -#20107=* -tokeninfo(#20107,6,#20001,0,"a1") -hasLocation(#20107,#20008) +tokeninfo(#20106,8,#20001,39,".") +#20107=@"loc,{#10000},11,20,11,20" +locations_default(#20107,#10000,11,20,11,20) +hasLocation(#20106,#20107) #20108=* -tokeninfo(#20108,8,#20001,1,"?.") -#20109=@"loc,{#10000},1,3,1,4" -locations_default(#20109,#10000,1,3,1,4) +tokeninfo(#20108,6,#20001,40,"d6") +#20109=@"loc,{#10000},11,21,11,22" +locations_default(#20109,#10000,11,21,11,22) hasLocation(#20108,#20109) #20110=* -tokeninfo(#20110,6,#20001,2,"b1") -hasLocation(#20110,#20011) -#20111=* -tokeninfo(#20111,8,#20001,3,";") -#20112=@"loc,{#10000},1,7,1,7" -locations_default(#20112,#10000,1,7,1,7) -hasLocation(#20111,#20112) -#20113=* -tokeninfo(#20113,6,#20001,4,"a2") -hasLocation(#20113,#20017) +tokeninfo(#20110,8,#20001,41,";") +#20111=@"loc,{#10000},11,23,11,23" +locations_default(#20111,#10000,11,23,11,23) +hasLocation(#20110,#20111) +#20112=* +tokeninfo(#20112,7,#20001,42,"delete") +#20113=@"loc,{#10000},13,1,13,6" +locations_default(#20113,#10000,13,1,13,6) +hasLocation(#20112,#20113) #20114=* -tokeninfo(#20114,8,#20001,5,"?.") -#20115=@"loc,{#10000},3,3,3,4" -locations_default(#20115,#10000,3,3,3,4) +tokeninfo(#20114,6,#20001,43,"a") +#20115=@"loc,{#10000},13,8,13,8" +locations_default(#20115,#10000,13,8,13,8) hasLocation(#20114,#20115) #20116=* -tokeninfo(#20116,8,#20001,6,"[") -#20117=@"loc,{#10000},3,5,3,5" -locations_default(#20117,#10000,3,5,3,5) +tokeninfo(#20116,8,#20001,44,"?.") +#20117=@"loc,{#10000},13,9,13,10" +locations_default(#20117,#10000,13,9,13,10) hasLocation(#20116,#20117) #20118=* -tokeninfo(#20118,6,#20001,7,"x2") -hasLocation(#20118,#20020) -#20119=* -tokeninfo(#20119,8,#20001,8,"]") -#20120=@"loc,{#10000},3,8,3,8" -locations_default(#20120,#10000,3,8,3,8) -hasLocation(#20119,#20120) -#20121=* -tokeninfo(#20121,8,#20001,9,";") -#20122=@"loc,{#10000},3,9,3,9" -locations_default(#20122,#10000,3,9,3,9) -hasLocation(#20121,#20122) +tokeninfo(#20118,6,#20001,45,"b") +#20119=@"loc,{#10000},13,11,13,11" +locations_default(#20119,#10000,13,11,13,11) +hasLocation(#20118,#20119) +#20120=* +tokeninfo(#20120,0,#20001,46,"") +#20121=@"loc,{#10000},13,12,13,11" +locations_default(#20121,#10000,13,12,13,11) +hasLocation(#20120,#20121) +toplevels(#20001,0) +#20122=@"loc,{#10000},1,1,13,11" +locations_default(#20122,#10000,1,1,13,11) +hasLocation(#20001,#20122) #20123=* -tokeninfo(#20123,6,#20001,10,"a3") -hasLocation(#20123,#20029) +stmts(#20123,2,#20001,0,"a1?.b1;") +hasLocation(#20123,#20003) +stmtContainers(#20123,#20001) #20124=* -tokeninfo(#20124,8,#20001,11,"?.") -#20125=@"loc,{#10000},5,3,5,4" -locations_default(#20125,#10000,5,3,5,4) +exprs(#20124,14,#20123,0,"a1?.b1") +#20125=@"loc,{#10000},1,1,1,6" +locations_default(#20125,#10000,1,1,1,6) hasLocation(#20124,#20125) +enclosingStmt(#20124,#20123) +exprContainers(#20124,#20001) #20126=* -tokeninfo(#20126,6,#20001,12,"b3") -hasLocation(#20126,#20032) -#20127=* -tokeninfo(#20127,8,#20001,13,"(") -#20128=@"loc,{#10000},5,7,5,7" -locations_default(#20128,#10000,5,7,5,7) -hasLocation(#20127,#20128) +exprs(#20126,79,#20124,0,"a1") +hasLocation(#20126,#20029) +enclosingStmt(#20126,#20123) +exprContainers(#20126,#20001) +literals("a1","a1",#20126) +#20127=@"var;{a1};{#20000}" +variables(#20127,"a1",#20000) +bind(#20126,#20127) +#20128=* +exprs(#20128,0,#20124,1,"b1") +hasLocation(#20128,#20033) +enclosingStmt(#20128,#20123) +exprContainers(#20128,#20001) +literals("b1","b1",#20128) +isOptionalChaining(#20124) #20129=* -tokeninfo(#20129,8,#20001,14,")") -#20130=@"loc,{#10000},5,8,5,8" -locations_default(#20130,#10000,5,8,5,8) -hasLocation(#20129,#20130) -#20131=* -tokeninfo(#20131,8,#20001,15,";") -#20132=@"loc,{#10000},5,9,5,9" -locations_default(#20132,#10000,5,9,5,9) -hasLocation(#20131,#20132) -#20133=* -tokeninfo(#20133,6,#20001,16,"a4") -hasLocation(#20133,#20038) +stmts(#20129,2,#20001,1,"a2?.[x2];") +hasLocation(#20129,#20007) +stmtContainers(#20129,#20001) +#20130=* +exprs(#20130,15,#20129,0,"a2?.[x2]") +#20131=@"loc,{#10000},3,1,3,8" +locations_default(#20131,#10000,3,1,3,8) +hasLocation(#20130,#20131) +enclosingStmt(#20130,#20129) +exprContainers(#20130,#20001) +#20132=* +exprs(#20132,79,#20130,0,"a2") +hasLocation(#20132,#20037) +enclosingStmt(#20132,#20129) +exprContainers(#20132,#20001) +literals("a2","a2",#20132) +#20133=@"var;{a2};{#20000}" +variables(#20133,"a2",#20000) +bind(#20132,#20133) #20134=* -tokeninfo(#20134,8,#20001,17,"?.") -#20135=@"loc,{#10000},7,3,7,4" -locations_default(#20135,#10000,7,3,7,4) -hasLocation(#20134,#20135) +exprs(#20134,79,#20130,1,"x2") +hasLocation(#20134,#20043) +enclosingStmt(#20134,#20129) +exprContainers(#20134,#20001) +literals("x2","x2",#20134) +#20135=@"var;{x2};{#20000}" +variables(#20135,"x2",#20000) +bind(#20134,#20135) +isOptionalChaining(#20130) #20136=* -tokeninfo(#20136,8,#20001,18,"(") -#20137=@"loc,{#10000},7,5,7,5" -locations_default(#20137,#10000,7,5,7,5) -hasLocation(#20136,#20137) -#20138=* -tokeninfo(#20138,8,#20001,19,")") -#20139=@"loc,{#10000},7,6,7,6" -locations_default(#20139,#10000,7,6,7,6) -hasLocation(#20138,#20139) -#20140=* -tokeninfo(#20140,8,#20001,20,";") -#20141=@"loc,{#10000},7,7,7,7" -locations_default(#20141,#10000,7,7,7,7) -hasLocation(#20140,#20141) -#20142=* -tokeninfo(#20142,6,#20001,21,"o5") -hasLocation(#20142,#20045) +stmts(#20136,2,#20001,2,"a3?.b3();") +hasLocation(#20136,#20011) +stmtContainers(#20136,#20001) +#20137=* +exprs(#20137,13,#20136,0,"a3?.b3()") +#20138=@"loc,{#10000},5,1,5,8" +locations_default(#20138,#10000,5,1,5,8) +hasLocation(#20137,#20138) +enclosingStmt(#20137,#20136) +exprContainers(#20137,#20001) +#20139=* +exprs(#20139,14,#20137,-1,"a3?.b3") +#20140=@"loc,{#10000},5,1,5,6" +locations_default(#20140,#10000,5,1,5,6) +hasLocation(#20139,#20140) +enclosingStmt(#20139,#20136) +exprContainers(#20139,#20001) +#20141=* +exprs(#20141,79,#20139,0,"a3") +hasLocation(#20141,#20049) +enclosingStmt(#20141,#20136) +exprContainers(#20141,#20001) +literals("a3","a3",#20141) +#20142=@"var;{a3};{#20000}" +variables(#20142,"a3",#20000) +bind(#20141,#20142) #20143=* -tokeninfo(#20143,8,#20001,22,"?") -#20144=@"loc,{#10000},9,3,9,3" -locations_default(#20144,#10000,9,3,9,3) -hasLocation(#20143,#20144) +exprs(#20143,0,#20139,1,"b3") +hasLocation(#20143,#20053) +enclosingStmt(#20143,#20136) +exprContainers(#20143,#20001) +literals("b3","b3",#20143) +isOptionalChaining(#20139) +#20144=* +stmts(#20144,2,#20001,3,"a4?.();") +hasLocation(#20144,#20015) +stmtContainers(#20144,#20001) #20145=* -tokeninfo(#20145,3,#20001,23,".3") -hasLocation(#20145,#20048) -#20146=* -tokeninfo(#20146,8,#20001,24,":") -#20147=@"loc,{#10000},9,6,9,6" -locations_default(#20147,#10000,9,6,9,6) -hasLocation(#20146,#20147) -#20148=* -tokeninfo(#20148,3,#20001,25,"2") -hasLocation(#20148,#20050) +exprs(#20145,13,#20144,0,"a4?.()") +#20146=@"loc,{#10000},7,1,7,6" +locations_default(#20146,#10000,7,1,7,6) +hasLocation(#20145,#20146) +enclosingStmt(#20145,#20144) +exprContainers(#20145,#20001) +#20147=* +exprs(#20147,79,#20145,-1,"a4") +hasLocation(#20147,#20061) +enclosingStmt(#20147,#20144) +exprContainers(#20147,#20001) +literals("a4","a4",#20147) +#20148=@"var;{a4};{#20000}" +variables(#20148,"a4",#20000) +bind(#20147,#20148) +isOptionalChaining(#20145) #20149=* -tokeninfo(#20149,8,#20001,26,";") -#20150=@"loc,{#10000},9,8,9,8" -locations_default(#20150,#10000,9,8,9,8) -hasLocation(#20149,#20150) -#20151=* -tokeninfo(#20151,6,#20001,27,"a6") -hasLocation(#20151,#20064) +stmts(#20149,2,#20001,4,"o5?.3:2;") +hasLocation(#20149,#20019) +stmtContainers(#20149,#20001) +#20150=* +exprs(#20150,11,#20149,0,"o5?.3:2") +#20151=@"loc,{#10000},9,1,9,7" +locations_default(#20151,#10000,9,1,9,7) +hasLocation(#20150,#20151) +enclosingStmt(#20150,#20149) +exprContainers(#20150,#20001) #20152=* -tokeninfo(#20152,8,#20001,28,"?.") -#20153=@"loc,{#10000},11,3,11,4" -locations_default(#20153,#10000,11,3,11,4) -hasLocation(#20152,#20153) +exprs(#20152,79,#20150,0,"o5") +hasLocation(#20152,#20071) +enclosingStmt(#20152,#20149) +exprContainers(#20152,#20001) +literals("o5","o5",#20152) +#20153=@"var;{o5};{#20000}" +variables(#20153,"o5",#20000) +bind(#20152,#20153) #20154=* -tokeninfo(#20154,6,#20001,29,"b6") -hasLocation(#20154,#20067) +exprs(#20154,3,#20150,1,".3") +hasLocation(#20154,#20075) +enclosingStmt(#20154,#20149) +exprContainers(#20154,#20001) +literals("0.3",".3",#20154) #20155=* -tokeninfo(#20155,8,#20001,30,"[") -#20156=@"loc,{#10000},11,7,11,7" -locations_default(#20156,#10000,11,7,11,7) -hasLocation(#20155,#20156) +exprs(#20155,3,#20150,2,"2") +hasLocation(#20155,#20079) +enclosingStmt(#20155,#20149) +exprContainers(#20155,#20001) +literals("2","2",#20155) +#20156=* +stmts(#20156,2,#20001,5,"a6?.b6[ ... y6).d6;") +hasLocation(#20156,#20023) +stmtContainers(#20156,#20001) #20157=* -tokeninfo(#20157,6,#20001,31,"x6") -hasLocation(#20157,#20069) -#20158=* -tokeninfo(#20158,8,#20001,32,"]") -#20159=@"loc,{#10000},11,10,11,10" -locations_default(#20159,#10000,11,10,11,10) -hasLocation(#20158,#20159) -#20160=* -tokeninfo(#20160,8,#20001,33,".") -#20161=@"loc,{#10000},11,11,11,11" -locations_default(#20161,#10000,11,11,11,11) -hasLocation(#20160,#20161) -#20162=* -tokeninfo(#20162,6,#20001,34,"c6") -hasLocation(#20162,#20072) +exprs(#20157,14,#20156,0,"a6?.b6[ ... (y6).d6") +#20158=@"loc,{#10000},11,1,11,22" +locations_default(#20158,#10000,11,1,11,22) +hasLocation(#20157,#20158) +enclosingStmt(#20157,#20156) +exprContainers(#20157,#20001) +#20159=* +exprs(#20159,13,#20157,0,"a6?.b6[x6].c6?.(y6)") +#20160=@"loc,{#10000},11,1,11,19" +locations_default(#20160,#10000,11,1,11,19) +hasLocation(#20159,#20160) +enclosingStmt(#20159,#20156) +exprContainers(#20159,#20001) +#20161=* +exprs(#20161,14,#20159,-1,"a6?.b6[x6].c6") +#20162=@"loc,{#10000},11,1,11,13" +locations_default(#20162,#10000,11,1,11,13) +hasLocation(#20161,#20162) +enclosingStmt(#20161,#20156) +exprContainers(#20161,#20001) #20163=* -tokeninfo(#20163,8,#20001,35,"?.") -#20164=@"loc,{#10000},11,14,11,15" -locations_default(#20164,#10000,11,14,11,15) +exprs(#20163,15,#20161,0,"a6?.b6[x6]") +#20164=@"loc,{#10000},11,1,11,10" +locations_default(#20164,#10000,11,1,11,10) hasLocation(#20163,#20164) +enclosingStmt(#20163,#20156) +exprContainers(#20163,#20001) #20165=* -tokeninfo(#20165,8,#20001,36,"(") -#20166=@"loc,{#10000},11,16,11,16" -locations_default(#20166,#10000,11,16,11,16) +exprs(#20165,14,#20163,0,"a6?.b6") +#20166=@"loc,{#10000},11,1,11,6" +locations_default(#20166,#10000,11,1,11,6) hasLocation(#20165,#20166) +enclosingStmt(#20165,#20156) +exprContainers(#20165,#20001) #20167=* -tokeninfo(#20167,6,#20001,37,"y6") -hasLocation(#20167,#20074) -#20168=* -tokeninfo(#20168,8,#20001,38,")") -#20169=@"loc,{#10000},11,19,11,19" -locations_default(#20169,#10000,11,19,11,19) -hasLocation(#20168,#20169) +exprs(#20167,79,#20165,0,"a6") +hasLocation(#20167,#20083) +enclosingStmt(#20167,#20156) +exprContainers(#20167,#20001) +literals("a6","a6",#20167) +#20168=@"var;{a6};{#20000}" +variables(#20168,"a6",#20000) +bind(#20167,#20168) +#20169=* +exprs(#20169,0,#20165,1,"b6") +hasLocation(#20169,#20087) +enclosingStmt(#20169,#20156) +exprContainers(#20169,#20001) +literals("b6","b6",#20169) +isOptionalChaining(#20165) #20170=* -tokeninfo(#20170,8,#20001,39,".") -#20171=@"loc,{#10000},11,20,11,20" -locations_default(#20171,#10000,11,20,11,20) -hasLocation(#20170,#20171) +exprs(#20170,79,#20163,1,"x6") +hasLocation(#20170,#20091) +enclosingStmt(#20170,#20156) +exprContainers(#20170,#20001) +literals("x6","x6",#20170) +#20171=@"var;{x6};{#20000}" +variables(#20171,"x6",#20000) +bind(#20170,#20171) #20172=* -tokeninfo(#20172,6,#20001,40,"d6") -hasLocation(#20172,#20077) +exprs(#20172,0,#20161,1,"c6") +hasLocation(#20172,#20097) +enclosingStmt(#20172,#20156) +exprContainers(#20172,#20001) +literals("c6","c6",#20172) #20173=* -tokeninfo(#20173,8,#20001,41,";") -#20174=@"loc,{#10000},11,23,11,23" -locations_default(#20174,#10000,11,23,11,23) -hasLocation(#20173,#20174) +exprs(#20173,79,#20159,0,"y6") +hasLocation(#20173,#20103) +enclosingStmt(#20173,#20156) +exprContainers(#20173,#20001) +literals("y6","y6",#20173) +#20174=@"var;{y6};{#20000}" +variables(#20174,"y6",#20000) +bind(#20173,#20174) +isOptionalChaining(#20159) #20175=* -tokeninfo(#20175,7,#20001,42,"delete") -#20176=@"loc,{#10000},13,1,13,6" -locations_default(#20176,#10000,13,1,13,6) -hasLocation(#20175,#20176) +exprs(#20175,0,#20157,1,"d6") +hasLocation(#20175,#20109) +enclosingStmt(#20175,#20156) +exprContainers(#20175,#20001) +literals("d6","d6",#20175) +#20176=* +stmts(#20176,2,#20001,6,"delete a?.b") +hasLocation(#20176,#20027) +stmtContainers(#20176,#20001) #20177=* -tokeninfo(#20177,6,#20001,43,"a") -hasLocation(#20177,#20084) +exprs(#20177,22,#20176,0,"delete a?.b") +hasLocation(#20177,#20027) +enclosingStmt(#20177,#20176) +exprContainers(#20177,#20001) #20178=* -tokeninfo(#20178,8,#20001,44,"?.") -#20179=@"loc,{#10000},13,9,13,10" -locations_default(#20179,#10000,13,9,13,10) +exprs(#20178,14,#20177,0,"a?.b") +#20179=@"loc,{#10000},13,8,13,11" +locations_default(#20179,#10000,13,8,13,11) hasLocation(#20178,#20179) +enclosingStmt(#20178,#20176) +exprContainers(#20178,#20001) #20180=* -tokeninfo(#20180,6,#20001,45,"b") -hasLocation(#20180,#20087) -#20181=* -tokeninfo(#20181,0,#20001,46,"") -#20182=@"loc,{#10000},13,12,13,11" -locations_default(#20182,#10000,13,12,13,11) -hasLocation(#20181,#20182) +exprs(#20180,79,#20178,0,"a") +hasLocation(#20180,#20115) +enclosingStmt(#20180,#20176) +exprContainers(#20180,#20001) +literals("a","a",#20180) +#20181=@"var;{a};{#20000}" +variables(#20181,"a",#20000) +bind(#20180,#20181) +#20182=* +exprs(#20182,0,#20178,1,"b") +hasLocation(#20182,#20119) +enclosingStmt(#20182,#20176) +exprContainers(#20182,#20001) +literals("b","b",#20182) +isOptionalChaining(#20178) #20183=* entry_cfg_node(#20183,#20001) #20184=@"loc,{#10000},1,1,1,0" @@ -595,61 +595,61 @@ locations_default(#20184,#10000,1,1,1,0) hasLocation(#20183,#20184) #20185=* exit_cfg_node(#20185,#20001) -hasLocation(#20185,#20182) -successor(#20078,#20083) -successor(#20086,#20081) -successor(#20083,#20086) -successor(#20081,#20080) -successor(#20083,#20080) -successor(#20080,#20185) -successor(#20051,#20063) -successor(#20076,#20053) -successor(#20073,#20055) -successor(#20071,#20057) -successor(#20068,#20059) -successor(#20066,#20061) -successor(#20063,#20066) -successor(#20061,#20068) -successor(#20063,#20078) -successor(#20059,#20071) -successor(#20057,#20073) -successor(#20055,#20076) -successor(#20057,#20078) -successor(#20053,#20078) -successor(#20040,#20042) -successor(#20042,#20044) +hasLocation(#20185,#20121) +successor(#20176,#20180) +successor(#20182,#20178) +successor(#20180,#20182) +successor(#20178,#20177) +successor(#20180,#20177) +successor(#20177,#20185) +successor(#20156,#20167) +successor(#20175,#20157) +successor(#20173,#20159) +successor(#20172,#20161) +successor(#20170,#20163) +successor(#20169,#20165) +successor(#20167,#20169) +successor(#20165,#20170) +successor(#20167,#20176) +successor(#20163,#20172) +successor(#20161,#20173) +successor(#20159,#20175) +successor(#20161,#20176) +successor(#20157,#20176) +successor(#20149,#20150) +successor(#20150,#20152) #20186=* -guard_node(#20186,1,#20044) -hasLocation(#20186,#20045) -successor(#20186,#20047) +guard_node(#20186,1,#20152) +hasLocation(#20186,#20071) +successor(#20186,#20154) #20187=* -guard_node(#20187,0,#20044) -hasLocation(#20187,#20045) -successor(#20187,#20049) -successor(#20044,#20186) -successor(#20044,#20187) -successor(#20047,#20051) -successor(#20049,#20051) -successor(#20033,#20037) -successor(#20037,#20035) -successor(#20035,#20040) -successor(#20037,#20040) -successor(#20022,#20028) -successor(#20031,#20026) -successor(#20028,#20031) -successor(#20026,#20024) -successor(#20028,#20033) -successor(#20024,#20033) -successor(#20012,#20016) -successor(#20019,#20014) -successor(#20016,#20019) -successor(#20014,#20022) -successor(#20016,#20022) -successor(#20003,#20007) -successor(#20010,#20005) -successor(#20007,#20010) -successor(#20005,#20012) -successor(#20007,#20012) -successor(#20183,#20003) +guard_node(#20187,0,#20152) +hasLocation(#20187,#20071) +successor(#20187,#20155) +successor(#20152,#20186) +successor(#20152,#20187) +successor(#20154,#20156) +successor(#20155,#20156) +successor(#20144,#20147) +successor(#20147,#20145) +successor(#20145,#20149) +successor(#20147,#20149) +successor(#20136,#20141) +successor(#20143,#20139) +successor(#20141,#20143) +successor(#20139,#20137) +successor(#20141,#20144) +successor(#20137,#20144) +successor(#20129,#20132) +successor(#20134,#20130) +successor(#20132,#20134) +successor(#20130,#20136) +successor(#20132,#20136) +successor(#20123,#20126) +successor(#20128,#20124) +successor(#20126,#20128) +successor(#20124,#20129) +successor(#20126,#20129) +successor(#20183,#20123) numlines(#10000,13,7,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/esnext/output/trap/optional-chaining_short-circuiting.js.trap b/javascript/extractor/tests/esnext/output/trap/optional-chaining_short-circuiting.js.trap index e39ceb7acd5..43bbc927901 100644 --- a/javascript/extractor/tests/esnext/output/trap/optional-chaining_short-circuiting.js.trap +++ b/javascript/extractor/tests/esnext/output/trap/optional-chaining_short-circuiting.js.trap @@ -9,1536 +9,1536 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,30,0" -locations_default(#20002,#10000,1,1,30,0) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"a?.b.c(++x).d;") -#20004=@"loc,{#10000},1,1,1,14" -locations_default(#20004,#10000,1,1,1,14) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,14,#20003,0,"a?.b.c(++x).d") -#20006=@"loc,{#10000},1,1,1,13" -locations_default(#20006,#10000,1,1,1,13) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -#20007=* -exprs(#20007,13,#20005,0,"a?.b.c(++x)") -#20008=@"loc,{#10000},1,1,1,11" -locations_default(#20008,#10000,1,1,1,11) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20003) -exprContainers(#20007,#20001) -#20009=* -exprs(#20009,14,#20007,-1,"a?.b.c") -#20010=@"loc,{#10000},1,1,1,6" -locations_default(#20010,#10000,1,1,1,6) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20003) -exprContainers(#20009,#20001) -#20011=* -exprs(#20011,14,#20009,0,"a?.b") -#20012=@"loc,{#10000},1,1,1,4" -locations_default(#20012,#10000,1,1,1,4) -hasLocation(#20011,#20012) -enclosingStmt(#20011,#20003) -exprContainers(#20011,#20001) -#20013=* -exprs(#20013,79,#20011,0,"a") -#20014=@"loc,{#10000},1,1,1,1" -locations_default(#20014,#10000,1,1,1,1) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20003) -exprContainers(#20013,#20001) -literals("a","a",#20013) -#20015=@"var;{a};{#20000}" -variables(#20015,"a",#20000) -bind(#20013,#20015) +#20002=* +lines(#20002,#20001,"a?.b.c(++x).d;"," +") +#20003=@"loc,{#10000},1,1,1,14" +locations_default(#20003,#10000,1,1,1,14) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,""," +") +#20005=@"loc,{#10000},2,1,2,0" +locations_default(#20005,#10000,2,1,2,0) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"a?.b[3].c?.(x).d;"," +") +#20007=@"loc,{#10000},3,1,3,17" +locations_default(#20007,#10000,3,1,3,17) +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,"(a?.b).c;"," +") +#20011=@"loc,{#10000},5,1,5,9" +locations_default(#20011,#10000,5,1,5,9) +hasLocation(#20010,#20011) +#20012=* +lines(#20012,#20001,""," +") +#20013=@"loc,{#10000},6,1,6,0" +locations_default(#20013,#10000,6,1,6,0) +hasLocation(#20012,#20013) +#20014=* +lines(#20014,#20001,"(a?.b.c).d;"," +") +#20015=@"loc,{#10000},7,1,7,11" +locations_default(#20015,#10000,7,1,7,11) +hasLocation(#20014,#20015) #20016=* -exprs(#20016,0,#20011,1,"b") -#20017=@"loc,{#10000},1,4,1,4" -locations_default(#20017,#10000,1,4,1,4) +lines(#20016,#20001,""," +") +#20017=@"loc,{#10000},8,1,8,0" +locations_default(#20017,#10000,8,1,8,0) hasLocation(#20016,#20017) -enclosingStmt(#20016,#20003) -exprContainers(#20016,#20001) -literals("b","b",#20016) -isOptionalChaining(#20011) #20018=* -exprs(#20018,0,#20009,1,"c") -#20019=@"loc,{#10000},1,6,1,6" -locations_default(#20019,#10000,1,6,1,6) +lines(#20018,#20001,"a?.[b?.c?.d].e?.f;"," +") +#20019=@"loc,{#10000},9,1,9,18" +locations_default(#20019,#10000,9,1,9,18) hasLocation(#20018,#20019) -enclosingStmt(#20018,#20003) -exprContainers(#20018,#20001) -literals("c","c",#20018) #20020=* -exprs(#20020,59,#20007,0,"++x") -#20021=@"loc,{#10000},1,8,1,10" -locations_default(#20021,#10000,1,8,1,10) +lines(#20020,#20001,""," +") +#20021=@"loc,{#10000},10,1,10,0" +locations_default(#20021,#10000,10,1,10,0) hasLocation(#20020,#20021) -enclosingStmt(#20020,#20003) -exprContainers(#20020,#20001) #20022=* -exprs(#20022,79,#20020,0,"x") -#20023=@"loc,{#10000},1,10,1,10" -locations_default(#20023,#10000,1,10,1,10) +lines(#20022,#20001,"a?.()[b?.().c?.().d].e?.().f;"," +") +#20023=@"loc,{#10000},11,1,11,29" +locations_default(#20023,#10000,11,1,11,29) hasLocation(#20022,#20023) -enclosingStmt(#20022,#20003) -exprContainers(#20022,#20001) -literals("x","x",#20022) -#20024=@"var;{x};{#20000}" -variables(#20024,"x",#20000) -bind(#20022,#20024) -#20025=* -exprs(#20025,0,#20005,1,"d") -#20026=@"loc,{#10000},1,13,1,13" -locations_default(#20026,#10000,1,13,1,13) -hasLocation(#20025,#20026) -enclosingStmt(#20025,#20003) -exprContainers(#20025,#20001) -literals("d","d",#20025) -#20027=* -stmts(#20027,2,#20001,1,"a?.b[3].c?.(x).d;") -#20028=@"loc,{#10000},3,1,3,17" -locations_default(#20028,#10000,3,1,3,17) -hasLocation(#20027,#20028) -stmtContainers(#20027,#20001) -#20029=* -exprs(#20029,14,#20027,0,"a?.b[3].c?.(x).d") -#20030=@"loc,{#10000},3,1,3,16" -locations_default(#20030,#10000,3,1,3,16) -hasLocation(#20029,#20030) -enclosingStmt(#20029,#20027) -exprContainers(#20029,#20001) -#20031=* -exprs(#20031,13,#20029,0,"a?.b[3].c?.(x)") -#20032=@"loc,{#10000},3,1,3,14" -locations_default(#20032,#10000,3,1,3,14) -hasLocation(#20031,#20032) -enclosingStmt(#20031,#20027) -exprContainers(#20031,#20001) -#20033=* -exprs(#20033,14,#20031,-1,"a?.b[3].c") -#20034=@"loc,{#10000},3,1,3,9" -locations_default(#20034,#10000,3,1,3,9) -hasLocation(#20033,#20034) -enclosingStmt(#20033,#20027) -exprContainers(#20033,#20001) -#20035=* -exprs(#20035,15,#20033,0,"a?.b[3]") -#20036=@"loc,{#10000},3,1,3,7" -locations_default(#20036,#10000,3,1,3,7) -hasLocation(#20035,#20036) -enclosingStmt(#20035,#20027) -exprContainers(#20035,#20001) -#20037=* -exprs(#20037,14,#20035,0,"a?.b") -#20038=@"loc,{#10000},3,1,3,4" -locations_default(#20038,#10000,3,1,3,4) -hasLocation(#20037,#20038) -enclosingStmt(#20037,#20027) -exprContainers(#20037,#20001) -#20039=* -exprs(#20039,79,#20037,0,"a") -#20040=@"loc,{#10000},3,1,3,1" -locations_default(#20040,#10000,3,1,3,1) -hasLocation(#20039,#20040) -enclosingStmt(#20039,#20027) -exprContainers(#20039,#20001) -literals("a","a",#20039) -bind(#20039,#20015) -#20041=* -exprs(#20041,0,#20037,1,"b") -#20042=@"loc,{#10000},3,4,3,4" -locations_default(#20042,#10000,3,4,3,4) -hasLocation(#20041,#20042) -enclosingStmt(#20041,#20027) -exprContainers(#20041,#20001) -literals("b","b",#20041) -isOptionalChaining(#20037) -#20043=* -exprs(#20043,3,#20035,1,"3") -#20044=@"loc,{#10000},3,6,3,6" -locations_default(#20044,#10000,3,6,3,6) -hasLocation(#20043,#20044) -enclosingStmt(#20043,#20027) -exprContainers(#20043,#20001) -literals("3","3",#20043) -#20045=* -exprs(#20045,0,#20033,1,"c") -#20046=@"loc,{#10000},3,9,3,9" -locations_default(#20046,#10000,3,9,3,9) -hasLocation(#20045,#20046) -enclosingStmt(#20045,#20027) -exprContainers(#20045,#20001) -literals("c","c",#20045) -#20047=* -exprs(#20047,79,#20031,0,"x") -#20048=@"loc,{#10000},3,13,3,13" -locations_default(#20048,#10000,3,13,3,13) -hasLocation(#20047,#20048) -enclosingStmt(#20047,#20027) -exprContainers(#20047,#20001) -literals("x","x",#20047) -bind(#20047,#20024) -isOptionalChaining(#20031) -#20049=* -exprs(#20049,0,#20029,1,"d") -#20050=@"loc,{#10000},3,16,3,16" -locations_default(#20050,#10000,3,16,3,16) -hasLocation(#20049,#20050) -enclosingStmt(#20049,#20027) -exprContainers(#20049,#20001) -literals("d","d",#20049) -#20051=* -stmts(#20051,2,#20001,2,"(a?.b).c;") -#20052=@"loc,{#10000},5,1,5,9" -locations_default(#20052,#10000,5,1,5,9) -hasLocation(#20051,#20052) -stmtContainers(#20051,#20001) -#20053=* -exprs(#20053,14,#20051,0,"(a?.b).c") -#20054=@"loc,{#10000},5,1,5,8" -locations_default(#20054,#10000,5,1,5,8) -hasLocation(#20053,#20054) -enclosingStmt(#20053,#20051) -exprContainers(#20053,#20001) -#20055=* -exprs(#20055,63,#20053,0,"(a?.b)") -#20056=@"loc,{#10000},5,1,5,6" -locations_default(#20056,#10000,5,1,5,6) -hasLocation(#20055,#20056) -enclosingStmt(#20055,#20051) -exprContainers(#20055,#20001) -#20057=* -exprs(#20057,14,#20055,0,"a?.b") -#20058=@"loc,{#10000},5,2,5,5" -locations_default(#20058,#10000,5,2,5,5) -hasLocation(#20057,#20058) -enclosingStmt(#20057,#20051) -exprContainers(#20057,#20001) -#20059=* -exprs(#20059,79,#20057,0,"a") -#20060=@"loc,{#10000},5,2,5,2" -locations_default(#20060,#10000,5,2,5,2) -hasLocation(#20059,#20060) -enclosingStmt(#20059,#20051) -exprContainers(#20059,#20001) -literals("a","a",#20059) -bind(#20059,#20015) -#20061=* -exprs(#20061,0,#20057,1,"b") -#20062=@"loc,{#10000},5,5,5,5" -locations_default(#20062,#10000,5,5,5,5) -hasLocation(#20061,#20062) -enclosingStmt(#20061,#20051) -exprContainers(#20061,#20001) -literals("b","b",#20061) -isOptionalChaining(#20057) -#20063=* -exprs(#20063,0,#20053,1,"c") -#20064=@"loc,{#10000},5,8,5,8" -locations_default(#20064,#10000,5,8,5,8) -hasLocation(#20063,#20064) -enclosingStmt(#20063,#20051) -exprContainers(#20063,#20001) -literals("c","c",#20063) -#20065=* -stmts(#20065,2,#20001,3,"(a?.b.c).d;") -#20066=@"loc,{#10000},7,1,7,11" -locations_default(#20066,#10000,7,1,7,11) -hasLocation(#20065,#20066) -stmtContainers(#20065,#20001) -#20067=* -exprs(#20067,14,#20065,0,"(a?.b.c).d") -#20068=@"loc,{#10000},7,1,7,10" -locations_default(#20068,#10000,7,1,7,10) -hasLocation(#20067,#20068) -enclosingStmt(#20067,#20065) -exprContainers(#20067,#20001) -#20069=* -exprs(#20069,63,#20067,0,"(a?.b.c)") -#20070=@"loc,{#10000},7,1,7,8" -locations_default(#20070,#10000,7,1,7,8) -hasLocation(#20069,#20070) -enclosingStmt(#20069,#20065) -exprContainers(#20069,#20001) -#20071=* -exprs(#20071,14,#20069,0,"a?.b.c") -#20072=@"loc,{#10000},7,2,7,7" -locations_default(#20072,#10000,7,2,7,7) -hasLocation(#20071,#20072) -enclosingStmt(#20071,#20065) -exprContainers(#20071,#20001) -#20073=* -exprs(#20073,14,#20071,0,"a?.b") -#20074=@"loc,{#10000},7,2,7,5" -locations_default(#20074,#10000,7,2,7,5) -hasLocation(#20073,#20074) -enclosingStmt(#20073,#20065) -exprContainers(#20073,#20001) -#20075=* -exprs(#20075,79,#20073,0,"a") -#20076=@"loc,{#10000},7,2,7,2" -locations_default(#20076,#10000,7,2,7,2) -hasLocation(#20075,#20076) -enclosingStmt(#20075,#20065) -exprContainers(#20075,#20001) -literals("a","a",#20075) -bind(#20075,#20015) -#20077=* -exprs(#20077,0,#20073,1,"b") -#20078=@"loc,{#10000},7,5,7,5" -locations_default(#20078,#10000,7,5,7,5) -hasLocation(#20077,#20078) -enclosingStmt(#20077,#20065) -exprContainers(#20077,#20001) -literals("b","b",#20077) -isOptionalChaining(#20073) -#20079=* -exprs(#20079,0,#20071,1,"c") -#20080=@"loc,{#10000},7,7,7,7" -locations_default(#20080,#10000,7,7,7,7) -hasLocation(#20079,#20080) -enclosingStmt(#20079,#20065) -exprContainers(#20079,#20001) -literals("c","c",#20079) -#20081=* -exprs(#20081,0,#20067,1,"d") -#20082=@"loc,{#10000},7,10,7,10" -locations_default(#20082,#10000,7,10,7,10) -hasLocation(#20081,#20082) -enclosingStmt(#20081,#20065) -exprContainers(#20081,#20001) -literals("d","d",#20081) -#20083=* -stmts(#20083,2,#20001,4,"a?.[b?.c?.d].e?.f;") -#20084=@"loc,{#10000},9,1,9,18" -locations_default(#20084,#10000,9,1,9,18) -hasLocation(#20083,#20084) -stmtContainers(#20083,#20001) -#20085=* -exprs(#20085,14,#20083,0,"a?.[b?.c?.d].e?.f") -#20086=@"loc,{#10000},9,1,9,17" -locations_default(#20086,#10000,9,1,9,17) -hasLocation(#20085,#20086) -enclosingStmt(#20085,#20083) -exprContainers(#20085,#20001) -#20087=* -exprs(#20087,14,#20085,0,"a?.[b?.c?.d].e") -#20088=@"loc,{#10000},9,1,9,14" -locations_default(#20088,#10000,9,1,9,14) -hasLocation(#20087,#20088) -enclosingStmt(#20087,#20083) -exprContainers(#20087,#20001) -#20089=* -exprs(#20089,15,#20087,0,"a?.[b?.c?.d]") -#20090=@"loc,{#10000},9,1,9,12" -locations_default(#20090,#10000,9,1,9,12) -hasLocation(#20089,#20090) -enclosingStmt(#20089,#20083) -exprContainers(#20089,#20001) -#20091=* -exprs(#20091,79,#20089,0,"a") -#20092=@"loc,{#10000},9,1,9,1" -locations_default(#20092,#10000,9,1,9,1) -hasLocation(#20091,#20092) -enclosingStmt(#20091,#20083) -exprContainers(#20091,#20001) -literals("a","a",#20091) -bind(#20091,#20015) -#20093=* -exprs(#20093,14,#20089,1,"b?.c?.d") -#20094=@"loc,{#10000},9,5,9,11" -locations_default(#20094,#10000,9,5,9,11) -hasLocation(#20093,#20094) -enclosingStmt(#20093,#20083) -exprContainers(#20093,#20001) -#20095=* -exprs(#20095,14,#20093,0,"b?.c") -#20096=@"loc,{#10000},9,5,9,8" -locations_default(#20096,#10000,9,5,9,8) -hasLocation(#20095,#20096) -enclosingStmt(#20095,#20083) -exprContainers(#20095,#20001) -#20097=* -exprs(#20097,79,#20095,0,"b") -#20098=@"loc,{#10000},9,5,9,5" -locations_default(#20098,#10000,9,5,9,5) -hasLocation(#20097,#20098) -enclosingStmt(#20097,#20083) -exprContainers(#20097,#20001) -literals("b","b",#20097) -#20099=@"var;{b};{#20000}" -variables(#20099,"b",#20000) -bind(#20097,#20099) +#20024=* +lines(#20024,#20001,""," +") +#20025=@"loc,{#10000},12,1,12,0" +locations_default(#20025,#10000,12,1,12,0) +hasLocation(#20024,#20025) +#20026=* +lines(#20026,#20001,"if (a?.b) {"," +") +#20027=@"loc,{#10000},13,1,13,11" +locations_default(#20027,#10000,13,1,13,11) +hasLocation(#20026,#20027) +#20028=* +lines(#20028,#20001," true;"," +") +#20029=@"loc,{#10000},14,1,14,9" +locations_default(#20029,#10000,14,1,14,9) +hasLocation(#20028,#20029) +indentation(#10000,14," ",4) +#20030=* +lines(#20030,#20001,"} else {"," +") +#20031=@"loc,{#10000},15,1,15,8" +locations_default(#20031,#10000,15,1,15,8) +hasLocation(#20030,#20031) +#20032=* +lines(#20032,#20001," false;"," +") +#20033=@"loc,{#10000},16,1,16,10" +locations_default(#20033,#10000,16,1,16,10) +hasLocation(#20032,#20033) +indentation(#10000,16," ",4) +#20034=* +lines(#20034,#20001,"}"," +") +#20035=@"loc,{#10000},17,1,17,1" +locations_default(#20035,#10000,17,1,17,1) +hasLocation(#20034,#20035) +#20036=* +lines(#20036,#20001,""," +") +#20037=@"loc,{#10000},18,1,18,0" +locations_default(#20037,#10000,18,1,18,0) +hasLocation(#20036,#20037) +#20038=* +lines(#20038,#20001,"if (!a?.b) {"," +") +#20039=@"loc,{#10000},19,1,19,12" +locations_default(#20039,#10000,19,1,19,12) +hasLocation(#20038,#20039) +#20040=* +lines(#20040,#20001," true;"," +") +#20041=@"loc,{#10000},20,1,20,9" +locations_default(#20041,#10000,20,1,20,9) +hasLocation(#20040,#20041) +indentation(#10000,20," ",4) +#20042=* +lines(#20042,#20001,"} else {"," +") +#20043=@"loc,{#10000},21,1,21,8" +locations_default(#20043,#10000,21,1,21,8) +hasLocation(#20042,#20043) +#20044=* +lines(#20044,#20001," false;"," +") +#20045=@"loc,{#10000},22,1,22,10" +locations_default(#20045,#10000,22,1,22,10) +hasLocation(#20044,#20045) +indentation(#10000,22," ",4) +#20046=* +lines(#20046,#20001,"}"," +") +#20047=@"loc,{#10000},23,1,23,1" +locations_default(#20047,#10000,23,1,23,1) +hasLocation(#20046,#20047) +#20048=* +lines(#20048,#20001,""," +") +#20049=@"loc,{#10000},24,1,24,0" +locations_default(#20049,#10000,24,1,24,0) +hasLocation(#20048,#20049) +#20050=* +lines(#20050,#20001,"if (a?.b && c?.d) {"," +") +#20051=@"loc,{#10000},25,1,25,19" +locations_default(#20051,#10000,25,1,25,19) +hasLocation(#20050,#20051) +#20052=* +lines(#20052,#20001," true;"," +") +#20053=@"loc,{#10000},26,1,26,9" +locations_default(#20053,#10000,26,1,26,9) +hasLocation(#20052,#20053) +indentation(#10000,26," ",4) +#20054=* +lines(#20054,#20001,"} else {"," +") +#20055=@"loc,{#10000},27,1,27,8" +locations_default(#20055,#10000,27,1,27,8) +hasLocation(#20054,#20055) +#20056=* +lines(#20056,#20001," false;"," +") +#20057=@"loc,{#10000},28,1,28,10" +locations_default(#20057,#10000,28,1,28,10) +hasLocation(#20056,#20057) +indentation(#10000,28," ",4) +#20058=* +lines(#20058,#20001,"}"," +") +#20059=@"loc,{#10000},29,1,29,1" +locations_default(#20059,#10000,29,1,29,1) +hasLocation(#20058,#20059) +numlines(#20001,29,21,0) +#20060=* +tokeninfo(#20060,6,#20001,0,"a") +#20061=@"loc,{#10000},1,1,1,1" +locations_default(#20061,#10000,1,1,1,1) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,8,#20001,1,"?.") +#20063=@"loc,{#10000},1,2,1,3" +locations_default(#20063,#10000,1,2,1,3) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,6,#20001,2,"b") +#20065=@"loc,{#10000},1,4,1,4" +locations_default(#20065,#10000,1,4,1,4) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,8,#20001,3,".") +#20067=@"loc,{#10000},1,5,1,5" +locations_default(#20067,#10000,1,5,1,5) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,6,#20001,4,"c") +#20069=@"loc,{#10000},1,6,1,6" +locations_default(#20069,#10000,1,6,1,6) +hasLocation(#20068,#20069) +#20070=* +tokeninfo(#20070,8,#20001,5,"(") +#20071=@"loc,{#10000},1,7,1,7" +locations_default(#20071,#10000,1,7,1,7) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,8,#20001,6,"++") +#20073=@"loc,{#10000},1,8,1,9" +locations_default(#20073,#10000,1,8,1,9) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,6,#20001,7,"x") +#20075=@"loc,{#10000},1,10,1,10" +locations_default(#20075,#10000,1,10,1,10) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,8,#20001,8,")") +#20077=@"loc,{#10000},1,11,1,11" +locations_default(#20077,#10000,1,11,1,11) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,8,#20001,9,".") +#20079=@"loc,{#10000},1,12,1,12" +locations_default(#20079,#10000,1,12,1,12) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,6,#20001,10,"d") +#20081=@"loc,{#10000},1,13,1,13" +locations_default(#20081,#10000,1,13,1,13) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,8,#20001,11,";") +#20083=@"loc,{#10000},1,14,1,14" +locations_default(#20083,#10000,1,14,1,14) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,6,#20001,12,"a") +#20085=@"loc,{#10000},3,1,3,1" +locations_default(#20085,#10000,3,1,3,1) +hasLocation(#20084,#20085) +#20086=* +tokeninfo(#20086,8,#20001,13,"?.") +#20087=@"loc,{#10000},3,2,3,3" +locations_default(#20087,#10000,3,2,3,3) +hasLocation(#20086,#20087) +#20088=* +tokeninfo(#20088,6,#20001,14,"b") +#20089=@"loc,{#10000},3,4,3,4" +locations_default(#20089,#10000,3,4,3,4) +hasLocation(#20088,#20089) +#20090=* +tokeninfo(#20090,8,#20001,15,"[") +#20091=@"loc,{#10000},3,5,3,5" +locations_default(#20091,#10000,3,5,3,5) +hasLocation(#20090,#20091) +#20092=* +tokeninfo(#20092,3,#20001,16,"3") +#20093=@"loc,{#10000},3,6,3,6" +locations_default(#20093,#10000,3,6,3,6) +hasLocation(#20092,#20093) +#20094=* +tokeninfo(#20094,8,#20001,17,"]") +#20095=@"loc,{#10000},3,7,3,7" +locations_default(#20095,#10000,3,7,3,7) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,8,#20001,18,".") +#20097=@"loc,{#10000},3,8,3,8" +locations_default(#20097,#10000,3,8,3,8) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,6,#20001,19,"c") +#20099=@"loc,{#10000},3,9,3,9" +locations_default(#20099,#10000,3,9,3,9) +hasLocation(#20098,#20099) #20100=* -exprs(#20100,0,#20095,1,"c") -#20101=@"loc,{#10000},9,8,9,8" -locations_default(#20101,#10000,9,8,9,8) +tokeninfo(#20100,8,#20001,20,"?.") +#20101=@"loc,{#10000},3,10,3,11" +locations_default(#20101,#10000,3,10,3,11) hasLocation(#20100,#20101) -enclosingStmt(#20100,#20083) -exprContainers(#20100,#20001) -literals("c","c",#20100) -isOptionalChaining(#20095) #20102=* -exprs(#20102,0,#20093,1,"d") -#20103=@"loc,{#10000},9,11,9,11" -locations_default(#20103,#10000,9,11,9,11) +tokeninfo(#20102,8,#20001,21,"(") +#20103=@"loc,{#10000},3,12,3,12" +locations_default(#20103,#10000,3,12,3,12) hasLocation(#20102,#20103) -enclosingStmt(#20102,#20083) -exprContainers(#20102,#20001) -literals("d","d",#20102) -isOptionalChaining(#20093) -isOptionalChaining(#20089) #20104=* -exprs(#20104,0,#20087,1,"e") -#20105=@"loc,{#10000},9,14,9,14" -locations_default(#20105,#10000,9,14,9,14) +tokeninfo(#20104,6,#20001,22,"x") +#20105=@"loc,{#10000},3,13,3,13" +locations_default(#20105,#10000,3,13,3,13) hasLocation(#20104,#20105) -enclosingStmt(#20104,#20083) -exprContainers(#20104,#20001) -literals("e","e",#20104) #20106=* -exprs(#20106,0,#20085,1,"f") -#20107=@"loc,{#10000},9,17,9,17" -locations_default(#20107,#10000,9,17,9,17) +tokeninfo(#20106,8,#20001,23,")") +#20107=@"loc,{#10000},3,14,3,14" +locations_default(#20107,#10000,3,14,3,14) hasLocation(#20106,#20107) -enclosingStmt(#20106,#20083) -exprContainers(#20106,#20001) -literals("f","f",#20106) -isOptionalChaining(#20085) #20108=* -stmts(#20108,2,#20001,5,"a?.()[b ... ?.().f;") -#20109=@"loc,{#10000},11,1,11,29" -locations_default(#20109,#10000,11,1,11,29) +tokeninfo(#20108,8,#20001,24,".") +#20109=@"loc,{#10000},3,15,3,15" +locations_default(#20109,#10000,3,15,3,15) hasLocation(#20108,#20109) -stmtContainers(#20108,#20001) #20110=* -exprs(#20110,14,#20108,0,"a?.()[b ... e?.().f") -#20111=@"loc,{#10000},11,1,11,28" -locations_default(#20111,#10000,11,1,11,28) +tokeninfo(#20110,6,#20001,25,"d") +#20111=@"loc,{#10000},3,16,3,16" +locations_default(#20111,#10000,3,16,3,16) hasLocation(#20110,#20111) -enclosingStmt(#20110,#20108) -exprContainers(#20110,#20001) #20112=* -exprs(#20112,13,#20110,0,"a?.()[b ... ].e?.()") -#20113=@"loc,{#10000},11,1,11,26" -locations_default(#20113,#10000,11,1,11,26) +tokeninfo(#20112,8,#20001,26,";") +#20113=@"loc,{#10000},3,17,3,17" +locations_default(#20113,#10000,3,17,3,17) hasLocation(#20112,#20113) -enclosingStmt(#20112,#20108) -exprContainers(#20112,#20001) #20114=* -exprs(#20114,14,#20112,-1,"a?.()[b ... ().d].e") -#20115=@"loc,{#10000},11,1,11,22" -locations_default(#20115,#10000,11,1,11,22) +tokeninfo(#20114,8,#20001,27,"(") +#20115=@"loc,{#10000},5,1,5,1" +locations_default(#20115,#10000,5,1,5,1) hasLocation(#20114,#20115) -enclosingStmt(#20114,#20108) -exprContainers(#20114,#20001) #20116=* -exprs(#20116,15,#20114,0,"a?.()[b?.().c?.().d]") -#20117=@"loc,{#10000},11,1,11,20" -locations_default(#20117,#10000,11,1,11,20) +tokeninfo(#20116,6,#20001,28,"a") +#20117=@"loc,{#10000},5,2,5,2" +locations_default(#20117,#10000,5,2,5,2) hasLocation(#20116,#20117) -enclosingStmt(#20116,#20108) -exprContainers(#20116,#20001) #20118=* -exprs(#20118,13,#20116,0,"a?.()") -#20119=@"loc,{#10000},11,1,11,5" -locations_default(#20119,#10000,11,1,11,5) +tokeninfo(#20118,8,#20001,29,"?.") +#20119=@"loc,{#10000},5,3,5,4" +locations_default(#20119,#10000,5,3,5,4) hasLocation(#20118,#20119) -enclosingStmt(#20118,#20108) -exprContainers(#20118,#20001) #20120=* -exprs(#20120,79,#20118,-1,"a") -#20121=@"loc,{#10000},11,1,11,1" -locations_default(#20121,#10000,11,1,11,1) +tokeninfo(#20120,6,#20001,30,"b") +#20121=@"loc,{#10000},5,5,5,5" +locations_default(#20121,#10000,5,5,5,5) hasLocation(#20120,#20121) -enclosingStmt(#20120,#20108) -exprContainers(#20120,#20001) -literals("a","a",#20120) -bind(#20120,#20015) -isOptionalChaining(#20118) #20122=* -exprs(#20122,14,#20116,1,"b?.().c?.().d") -#20123=@"loc,{#10000},11,7,11,19" -locations_default(#20123,#10000,11,7,11,19) +tokeninfo(#20122,8,#20001,31,")") +#20123=@"loc,{#10000},5,6,5,6" +locations_default(#20123,#10000,5,6,5,6) hasLocation(#20122,#20123) -enclosingStmt(#20122,#20108) -exprContainers(#20122,#20001) #20124=* -exprs(#20124,13,#20122,0,"b?.().c?.()") -#20125=@"loc,{#10000},11,7,11,17" -locations_default(#20125,#10000,11,7,11,17) +tokeninfo(#20124,8,#20001,32,".") +#20125=@"loc,{#10000},5,7,5,7" +locations_default(#20125,#10000,5,7,5,7) hasLocation(#20124,#20125) -enclosingStmt(#20124,#20108) -exprContainers(#20124,#20001) #20126=* -exprs(#20126,14,#20124,-1,"b?.().c") -#20127=@"loc,{#10000},11,7,11,13" -locations_default(#20127,#10000,11,7,11,13) +tokeninfo(#20126,6,#20001,33,"c") +#20127=@"loc,{#10000},5,8,5,8" +locations_default(#20127,#10000,5,8,5,8) hasLocation(#20126,#20127) -enclosingStmt(#20126,#20108) -exprContainers(#20126,#20001) #20128=* -exprs(#20128,13,#20126,0,"b?.()") -#20129=@"loc,{#10000},11,7,11,11" -locations_default(#20129,#10000,11,7,11,11) +tokeninfo(#20128,8,#20001,34,";") +#20129=@"loc,{#10000},5,9,5,9" +locations_default(#20129,#10000,5,9,5,9) hasLocation(#20128,#20129) -enclosingStmt(#20128,#20108) -exprContainers(#20128,#20001) #20130=* -exprs(#20130,79,#20128,-1,"b") -#20131=@"loc,{#10000},11,7,11,7" -locations_default(#20131,#10000,11,7,11,7) +tokeninfo(#20130,8,#20001,35,"(") +#20131=@"loc,{#10000},7,1,7,1" +locations_default(#20131,#10000,7,1,7,1) hasLocation(#20130,#20131) -enclosingStmt(#20130,#20108) -exprContainers(#20130,#20001) -literals("b","b",#20130) -bind(#20130,#20099) -isOptionalChaining(#20128) #20132=* -exprs(#20132,0,#20126,1,"c") -#20133=@"loc,{#10000},11,13,11,13" -locations_default(#20133,#10000,11,13,11,13) +tokeninfo(#20132,6,#20001,36,"a") +#20133=@"loc,{#10000},7,2,7,2" +locations_default(#20133,#10000,7,2,7,2) hasLocation(#20132,#20133) -enclosingStmt(#20132,#20108) -exprContainers(#20132,#20001) -literals("c","c",#20132) -isOptionalChaining(#20124) #20134=* -exprs(#20134,0,#20122,1,"d") -#20135=@"loc,{#10000},11,19,11,19" -locations_default(#20135,#10000,11,19,11,19) +tokeninfo(#20134,8,#20001,37,"?.") +#20135=@"loc,{#10000},7,3,7,4" +locations_default(#20135,#10000,7,3,7,4) hasLocation(#20134,#20135) -enclosingStmt(#20134,#20108) -exprContainers(#20134,#20001) -literals("d","d",#20134) #20136=* -exprs(#20136,0,#20114,1,"e") -#20137=@"loc,{#10000},11,22,11,22" -locations_default(#20137,#10000,11,22,11,22) +tokeninfo(#20136,6,#20001,38,"b") +#20137=@"loc,{#10000},7,5,7,5" +locations_default(#20137,#10000,7,5,7,5) hasLocation(#20136,#20137) -enclosingStmt(#20136,#20108) -exprContainers(#20136,#20001) -literals("e","e",#20136) -isOptionalChaining(#20112) #20138=* -exprs(#20138,0,#20110,1,"f") -#20139=@"loc,{#10000},11,28,11,28" -locations_default(#20139,#10000,11,28,11,28) +tokeninfo(#20138,8,#20001,39,".") +#20139=@"loc,{#10000},7,6,7,6" +locations_default(#20139,#10000,7,6,7,6) hasLocation(#20138,#20139) -enclosingStmt(#20138,#20108) -exprContainers(#20138,#20001) -literals("f","f",#20138) #20140=* -stmts(#20140,3,#20001,6,"if (a?. ... alse;\n}") -#20141=@"loc,{#10000},13,1,17,1" -locations_default(#20141,#10000,13,1,17,1) +tokeninfo(#20140,6,#20001,40,"c") +#20141=@"loc,{#10000},7,7,7,7" +locations_default(#20141,#10000,7,7,7,7) hasLocation(#20140,#20141) -stmtContainers(#20140,#20001) #20142=* -exprs(#20142,14,#20140,0,"a?.b") -#20143=@"loc,{#10000},13,5,13,8" -locations_default(#20143,#10000,13,5,13,8) +tokeninfo(#20142,8,#20001,41,")") +#20143=@"loc,{#10000},7,8,7,8" +locations_default(#20143,#10000,7,8,7,8) hasLocation(#20142,#20143) -enclosingStmt(#20142,#20140) -exprContainers(#20142,#20001) #20144=* -exprs(#20144,79,#20142,0,"a") -#20145=@"loc,{#10000},13,5,13,5" -locations_default(#20145,#10000,13,5,13,5) +tokeninfo(#20144,8,#20001,42,".") +#20145=@"loc,{#10000},7,9,7,9" +locations_default(#20145,#10000,7,9,7,9) hasLocation(#20144,#20145) -enclosingStmt(#20144,#20140) -exprContainers(#20144,#20001) -literals("a","a",#20144) -bind(#20144,#20015) #20146=* -exprs(#20146,0,#20142,1,"b") -#20147=@"loc,{#10000},13,8,13,8" -locations_default(#20147,#10000,13,8,13,8) +tokeninfo(#20146,6,#20001,43,"d") +#20147=@"loc,{#10000},7,10,7,10" +locations_default(#20147,#10000,7,10,7,10) hasLocation(#20146,#20147) -enclosingStmt(#20146,#20140) -exprContainers(#20146,#20001) -literals("b","b",#20146) -isOptionalChaining(#20142) #20148=* -stmts(#20148,1,#20140,1,"{\n true;\n}") -#20149=@"loc,{#10000},13,11,15,1" -locations_default(#20149,#10000,13,11,15,1) +tokeninfo(#20148,8,#20001,44,";") +#20149=@"loc,{#10000},7,11,7,11" +locations_default(#20149,#10000,7,11,7,11) hasLocation(#20148,#20149) -stmtContainers(#20148,#20001) #20150=* -stmts(#20150,2,#20148,0,"true;") -#20151=@"loc,{#10000},14,5,14,9" -locations_default(#20151,#10000,14,5,14,9) +tokeninfo(#20150,6,#20001,45,"a") +#20151=@"loc,{#10000},9,1,9,1" +locations_default(#20151,#10000,9,1,9,1) hasLocation(#20150,#20151) -stmtContainers(#20150,#20001) #20152=* -exprs(#20152,2,#20150,0,"true") -#20153=@"loc,{#10000},14,5,14,8" -locations_default(#20153,#10000,14,5,14,8) +tokeninfo(#20152,8,#20001,46,"?.") +#20153=@"loc,{#10000},9,2,9,3" +locations_default(#20153,#10000,9,2,9,3) hasLocation(#20152,#20153) -enclosingStmt(#20152,#20150) -exprContainers(#20152,#20001) -literals("true","true",#20152) #20154=* -stmts(#20154,1,#20140,2,"{\n false;\n}") -#20155=@"loc,{#10000},15,8,17,1" -locations_default(#20155,#10000,15,8,17,1) +tokeninfo(#20154,8,#20001,47,"[") +#20155=@"loc,{#10000},9,4,9,4" +locations_default(#20155,#10000,9,4,9,4) hasLocation(#20154,#20155) -stmtContainers(#20154,#20001) #20156=* -stmts(#20156,2,#20154,0,"false;") -#20157=@"loc,{#10000},16,5,16,10" -locations_default(#20157,#10000,16,5,16,10) +tokeninfo(#20156,6,#20001,48,"b") +#20157=@"loc,{#10000},9,5,9,5" +locations_default(#20157,#10000,9,5,9,5) hasLocation(#20156,#20157) -stmtContainers(#20156,#20001) #20158=* -exprs(#20158,2,#20156,0,"false") -#20159=@"loc,{#10000},16,5,16,9" -locations_default(#20159,#10000,16,5,16,9) +tokeninfo(#20158,8,#20001,49,"?.") +#20159=@"loc,{#10000},9,6,9,7" +locations_default(#20159,#10000,9,6,9,7) hasLocation(#20158,#20159) -enclosingStmt(#20158,#20156) -exprContainers(#20158,#20001) -literals("false","false",#20158) #20160=* -stmts(#20160,3,#20001,7,"if (!a? ... alse;\n}") -#20161=@"loc,{#10000},19,1,23,1" -locations_default(#20161,#10000,19,1,23,1) +tokeninfo(#20160,6,#20001,50,"c") +#20161=@"loc,{#10000},9,8,9,8" +locations_default(#20161,#10000,9,8,9,8) hasLocation(#20160,#20161) -stmtContainers(#20160,#20001) #20162=* -exprs(#20162,18,#20160,0,"!a?.b") -#20163=@"loc,{#10000},19,5,19,9" -locations_default(#20163,#10000,19,5,19,9) +tokeninfo(#20162,8,#20001,51,"?.") +#20163=@"loc,{#10000},9,9,9,10" +locations_default(#20163,#10000,9,9,9,10) hasLocation(#20162,#20163) -enclosingStmt(#20162,#20160) -exprContainers(#20162,#20001) #20164=* -exprs(#20164,14,#20162,0,"a?.b") -#20165=@"loc,{#10000},19,6,19,9" -locations_default(#20165,#10000,19,6,19,9) +tokeninfo(#20164,6,#20001,52,"d") +#20165=@"loc,{#10000},9,11,9,11" +locations_default(#20165,#10000,9,11,9,11) hasLocation(#20164,#20165) -enclosingStmt(#20164,#20160) -exprContainers(#20164,#20001) #20166=* -exprs(#20166,79,#20164,0,"a") -#20167=@"loc,{#10000},19,6,19,6" -locations_default(#20167,#10000,19,6,19,6) +tokeninfo(#20166,8,#20001,53,"]") +#20167=@"loc,{#10000},9,12,9,12" +locations_default(#20167,#10000,9,12,9,12) hasLocation(#20166,#20167) -enclosingStmt(#20166,#20160) -exprContainers(#20166,#20001) -literals("a","a",#20166) -bind(#20166,#20015) #20168=* -exprs(#20168,0,#20164,1,"b") -#20169=@"loc,{#10000},19,9,19,9" -locations_default(#20169,#10000,19,9,19,9) +tokeninfo(#20168,8,#20001,54,".") +#20169=@"loc,{#10000},9,13,9,13" +locations_default(#20169,#10000,9,13,9,13) hasLocation(#20168,#20169) -enclosingStmt(#20168,#20160) -exprContainers(#20168,#20001) -literals("b","b",#20168) -isOptionalChaining(#20164) #20170=* -stmts(#20170,1,#20160,1,"{\n true;\n}") -#20171=@"loc,{#10000},19,12,21,1" -locations_default(#20171,#10000,19,12,21,1) +tokeninfo(#20170,6,#20001,55,"e") +#20171=@"loc,{#10000},9,14,9,14" +locations_default(#20171,#10000,9,14,9,14) hasLocation(#20170,#20171) -stmtContainers(#20170,#20001) #20172=* -stmts(#20172,2,#20170,0,"true;") -#20173=@"loc,{#10000},20,5,20,9" -locations_default(#20173,#10000,20,5,20,9) +tokeninfo(#20172,8,#20001,56,"?.") +#20173=@"loc,{#10000},9,15,9,16" +locations_default(#20173,#10000,9,15,9,16) hasLocation(#20172,#20173) -stmtContainers(#20172,#20001) #20174=* -exprs(#20174,2,#20172,0,"true") -#20175=@"loc,{#10000},20,5,20,8" -locations_default(#20175,#10000,20,5,20,8) +tokeninfo(#20174,6,#20001,57,"f") +#20175=@"loc,{#10000},9,17,9,17" +locations_default(#20175,#10000,9,17,9,17) hasLocation(#20174,#20175) -enclosingStmt(#20174,#20172) -exprContainers(#20174,#20001) -literals("true","true",#20174) #20176=* -stmts(#20176,1,#20160,2,"{\n false;\n}") -#20177=@"loc,{#10000},21,8,23,1" -locations_default(#20177,#10000,21,8,23,1) +tokeninfo(#20176,8,#20001,58,";") +#20177=@"loc,{#10000},9,18,9,18" +locations_default(#20177,#10000,9,18,9,18) hasLocation(#20176,#20177) -stmtContainers(#20176,#20001) #20178=* -stmts(#20178,2,#20176,0,"false;") -#20179=@"loc,{#10000},22,5,22,10" -locations_default(#20179,#10000,22,5,22,10) +tokeninfo(#20178,6,#20001,59,"a") +#20179=@"loc,{#10000},11,1,11,1" +locations_default(#20179,#10000,11,1,11,1) hasLocation(#20178,#20179) -stmtContainers(#20178,#20001) #20180=* -exprs(#20180,2,#20178,0,"false") -#20181=@"loc,{#10000},22,5,22,9" -locations_default(#20181,#10000,22,5,22,9) +tokeninfo(#20180,8,#20001,60,"?.") +#20181=@"loc,{#10000},11,2,11,3" +locations_default(#20181,#10000,11,2,11,3) hasLocation(#20180,#20181) -enclosingStmt(#20180,#20178) -exprContainers(#20180,#20001) -literals("false","false",#20180) #20182=* -stmts(#20182,3,#20001,8,"if (a?. ... alse;\n}") -#20183=@"loc,{#10000},25,1,29,1" -locations_default(#20183,#10000,25,1,29,1) +tokeninfo(#20182,8,#20001,61,"(") +#20183=@"loc,{#10000},11,4,11,4" +locations_default(#20183,#10000,11,4,11,4) hasLocation(#20182,#20183) -stmtContainers(#20182,#20001) #20184=* -exprs(#20184,44,#20182,0,"a?.b && c?.d") -#20185=@"loc,{#10000},25,5,25,16" -locations_default(#20185,#10000,25,5,25,16) +tokeninfo(#20184,8,#20001,62,")") +#20185=@"loc,{#10000},11,5,11,5" +locations_default(#20185,#10000,11,5,11,5) hasLocation(#20184,#20185) -enclosingStmt(#20184,#20182) -exprContainers(#20184,#20001) #20186=* -exprs(#20186,14,#20184,0,"a?.b") -#20187=@"loc,{#10000},25,5,25,8" -locations_default(#20187,#10000,25,5,25,8) +tokeninfo(#20186,8,#20001,63,"[") +#20187=@"loc,{#10000},11,6,11,6" +locations_default(#20187,#10000,11,6,11,6) hasLocation(#20186,#20187) -enclosingStmt(#20186,#20182) -exprContainers(#20186,#20001) #20188=* -exprs(#20188,79,#20186,0,"a") -#20189=@"loc,{#10000},25,5,25,5" -locations_default(#20189,#10000,25,5,25,5) +tokeninfo(#20188,6,#20001,64,"b") +#20189=@"loc,{#10000},11,7,11,7" +locations_default(#20189,#10000,11,7,11,7) hasLocation(#20188,#20189) -enclosingStmt(#20188,#20182) -exprContainers(#20188,#20001) -literals("a","a",#20188) -bind(#20188,#20015) #20190=* -exprs(#20190,0,#20186,1,"b") -#20191=@"loc,{#10000},25,8,25,8" -locations_default(#20191,#10000,25,8,25,8) +tokeninfo(#20190,8,#20001,65,"?.") +#20191=@"loc,{#10000},11,8,11,9" +locations_default(#20191,#10000,11,8,11,9) hasLocation(#20190,#20191) -enclosingStmt(#20190,#20182) -exprContainers(#20190,#20001) -literals("b","b",#20190) -isOptionalChaining(#20186) #20192=* -exprs(#20192,14,#20184,1,"c?.d") -#20193=@"loc,{#10000},25,13,25,16" -locations_default(#20193,#10000,25,13,25,16) +tokeninfo(#20192,8,#20001,66,"(") +#20193=@"loc,{#10000},11,10,11,10" +locations_default(#20193,#10000,11,10,11,10) hasLocation(#20192,#20193) -enclosingStmt(#20192,#20182) -exprContainers(#20192,#20001) #20194=* -exprs(#20194,79,#20192,0,"c") -#20195=@"loc,{#10000},25,13,25,13" -locations_default(#20195,#10000,25,13,25,13) +tokeninfo(#20194,8,#20001,67,")") +#20195=@"loc,{#10000},11,11,11,11" +locations_default(#20195,#10000,11,11,11,11) hasLocation(#20194,#20195) -enclosingStmt(#20194,#20182) -exprContainers(#20194,#20001) -literals("c","c",#20194) -#20196=@"var;{c};{#20000}" -variables(#20196,"c",#20000) -bind(#20194,#20196) -#20197=* -exprs(#20197,0,#20192,1,"d") -#20198=@"loc,{#10000},25,16,25,16" -locations_default(#20198,#10000,25,16,25,16) -hasLocation(#20197,#20198) -enclosingStmt(#20197,#20182) -exprContainers(#20197,#20001) -literals("d","d",#20197) -isOptionalChaining(#20192) -#20199=* -stmts(#20199,1,#20182,1,"{\n true;\n}") -#20200=@"loc,{#10000},25,19,27,1" -locations_default(#20200,#10000,25,19,27,1) -hasLocation(#20199,#20200) -stmtContainers(#20199,#20001) -#20201=* -stmts(#20201,2,#20199,0,"true;") -#20202=@"loc,{#10000},26,5,26,9" -locations_default(#20202,#10000,26,5,26,9) -hasLocation(#20201,#20202) -stmtContainers(#20201,#20001) -#20203=* -exprs(#20203,2,#20201,0,"true") -#20204=@"loc,{#10000},26,5,26,8" -locations_default(#20204,#10000,26,5,26,8) -hasLocation(#20203,#20204) -enclosingStmt(#20203,#20201) -exprContainers(#20203,#20001) -literals("true","true",#20203) -#20205=* -stmts(#20205,1,#20182,2,"{\n false;\n}") -#20206=@"loc,{#10000},27,8,29,1" -locations_default(#20206,#10000,27,8,29,1) -hasLocation(#20205,#20206) -stmtContainers(#20205,#20001) -#20207=* -stmts(#20207,2,#20205,0,"false;") -#20208=@"loc,{#10000},28,5,28,10" -locations_default(#20208,#10000,28,5,28,10) -hasLocation(#20207,#20208) -stmtContainers(#20207,#20001) -#20209=* -exprs(#20209,2,#20207,0,"false") -#20210=@"loc,{#10000},28,5,28,9" -locations_default(#20210,#10000,28,5,28,9) -hasLocation(#20209,#20210) -enclosingStmt(#20209,#20207) -exprContainers(#20209,#20001) -literals("false","false",#20209) -#20211=* -lines(#20211,#20001,"a?.b.c(++x).d;"," -") -hasLocation(#20211,#20004) +#20196=* +tokeninfo(#20196,8,#20001,68,".") +#20197=@"loc,{#10000},11,12,11,12" +locations_default(#20197,#10000,11,12,11,12) +hasLocation(#20196,#20197) +#20198=* +tokeninfo(#20198,6,#20001,69,"c") +#20199=@"loc,{#10000},11,13,11,13" +locations_default(#20199,#10000,11,13,11,13) +hasLocation(#20198,#20199) +#20200=* +tokeninfo(#20200,8,#20001,70,"?.") +#20201=@"loc,{#10000},11,14,11,15" +locations_default(#20201,#10000,11,14,11,15) +hasLocation(#20200,#20201) +#20202=* +tokeninfo(#20202,8,#20001,71,"(") +#20203=@"loc,{#10000},11,16,11,16" +locations_default(#20203,#10000,11,16,11,16) +hasLocation(#20202,#20203) +#20204=* +tokeninfo(#20204,8,#20001,72,")") +#20205=@"loc,{#10000},11,17,11,17" +locations_default(#20205,#10000,11,17,11,17) +hasLocation(#20204,#20205) +#20206=* +tokeninfo(#20206,8,#20001,73,".") +#20207=@"loc,{#10000},11,18,11,18" +locations_default(#20207,#10000,11,18,11,18) +hasLocation(#20206,#20207) +#20208=* +tokeninfo(#20208,6,#20001,74,"d") +#20209=@"loc,{#10000},11,19,11,19" +locations_default(#20209,#10000,11,19,11,19) +hasLocation(#20208,#20209) +#20210=* +tokeninfo(#20210,8,#20001,75,"]") +#20211=@"loc,{#10000},11,20,11,20" +locations_default(#20211,#10000,11,20,11,20) +hasLocation(#20210,#20211) #20212=* -lines(#20212,#20001,""," -") -#20213=@"loc,{#10000},2,1,2,0" -locations_default(#20213,#10000,2,1,2,0) +tokeninfo(#20212,8,#20001,76,".") +#20213=@"loc,{#10000},11,21,11,21" +locations_default(#20213,#10000,11,21,11,21) hasLocation(#20212,#20213) #20214=* -lines(#20214,#20001,"a?.b[3].c?.(x).d;"," -") -hasLocation(#20214,#20028) -#20215=* -lines(#20215,#20001,""," -") -#20216=@"loc,{#10000},4,1,4,0" -locations_default(#20216,#10000,4,1,4,0) -hasLocation(#20215,#20216) -#20217=* -lines(#20217,#20001,"(a?.b).c;"," -") -hasLocation(#20217,#20052) +tokeninfo(#20214,6,#20001,77,"e") +#20215=@"loc,{#10000},11,22,11,22" +locations_default(#20215,#10000,11,22,11,22) +hasLocation(#20214,#20215) +#20216=* +tokeninfo(#20216,8,#20001,78,"?.") +#20217=@"loc,{#10000},11,23,11,24" +locations_default(#20217,#10000,11,23,11,24) +hasLocation(#20216,#20217) #20218=* -lines(#20218,#20001,""," -") -#20219=@"loc,{#10000},6,1,6,0" -locations_default(#20219,#10000,6,1,6,0) +tokeninfo(#20218,8,#20001,79,"(") +#20219=@"loc,{#10000},11,25,11,25" +locations_default(#20219,#10000,11,25,11,25) hasLocation(#20218,#20219) #20220=* -lines(#20220,#20001,"(a?.b.c).d;"," -") -hasLocation(#20220,#20066) -#20221=* -lines(#20221,#20001,""," -") -#20222=@"loc,{#10000},8,1,8,0" -locations_default(#20222,#10000,8,1,8,0) -hasLocation(#20221,#20222) -#20223=* -lines(#20223,#20001,"a?.[b?.c?.d].e?.f;"," -") -hasLocation(#20223,#20084) +tokeninfo(#20220,8,#20001,80,")") +#20221=@"loc,{#10000},11,26,11,26" +locations_default(#20221,#10000,11,26,11,26) +hasLocation(#20220,#20221) +#20222=* +tokeninfo(#20222,8,#20001,81,".") +#20223=@"loc,{#10000},11,27,11,27" +locations_default(#20223,#10000,11,27,11,27) +hasLocation(#20222,#20223) #20224=* -lines(#20224,#20001,""," -") -#20225=@"loc,{#10000},10,1,10,0" -locations_default(#20225,#10000,10,1,10,0) +tokeninfo(#20224,6,#20001,82,"f") +#20225=@"loc,{#10000},11,28,11,28" +locations_default(#20225,#10000,11,28,11,28) hasLocation(#20224,#20225) #20226=* -lines(#20226,#20001,"a?.()[b?.().c?.().d].e?.().f;"," -") -hasLocation(#20226,#20109) -#20227=* -lines(#20227,#20001,""," -") -#20228=@"loc,{#10000},12,1,12,0" -locations_default(#20228,#10000,12,1,12,0) -hasLocation(#20227,#20228) -#20229=* -lines(#20229,#20001,"if (a?.b) {"," -") -#20230=@"loc,{#10000},13,1,13,11" -locations_default(#20230,#10000,13,1,13,11) -hasLocation(#20229,#20230) -#20231=* -lines(#20231,#20001," true;"," -") -#20232=@"loc,{#10000},14,1,14,9" -locations_default(#20232,#10000,14,1,14,9) -hasLocation(#20231,#20232) -indentation(#10000,14," ",4) -#20233=* -lines(#20233,#20001,"} else {"," -") -#20234=@"loc,{#10000},15,1,15,8" -locations_default(#20234,#10000,15,1,15,8) -hasLocation(#20233,#20234) -#20235=* -lines(#20235,#20001," false;"," -") -#20236=@"loc,{#10000},16,1,16,10" -locations_default(#20236,#10000,16,1,16,10) -hasLocation(#20235,#20236) -indentation(#10000,16," ",4) -#20237=* -lines(#20237,#20001,"}"," -") -#20238=@"loc,{#10000},17,1,17,1" -locations_default(#20238,#10000,17,1,17,1) -hasLocation(#20237,#20238) -#20239=* -lines(#20239,#20001,""," -") -#20240=@"loc,{#10000},18,1,18,0" -locations_default(#20240,#10000,18,1,18,0) -hasLocation(#20239,#20240) -#20241=* -lines(#20241,#20001,"if (!a?.b) {"," -") -#20242=@"loc,{#10000},19,1,19,12" -locations_default(#20242,#10000,19,1,19,12) -hasLocation(#20241,#20242) -#20243=* -lines(#20243,#20001," true;"," -") -#20244=@"loc,{#10000},20,1,20,9" -locations_default(#20244,#10000,20,1,20,9) -hasLocation(#20243,#20244) -indentation(#10000,20," ",4) -#20245=* -lines(#20245,#20001,"} else {"," -") -#20246=@"loc,{#10000},21,1,21,8" -locations_default(#20246,#10000,21,1,21,8) -hasLocation(#20245,#20246) -#20247=* -lines(#20247,#20001," false;"," -") -#20248=@"loc,{#10000},22,1,22,10" -locations_default(#20248,#10000,22,1,22,10) -hasLocation(#20247,#20248) -indentation(#10000,22," ",4) -#20249=* -lines(#20249,#20001,"}"," -") -#20250=@"loc,{#10000},23,1,23,1" -locations_default(#20250,#10000,23,1,23,1) -hasLocation(#20249,#20250) -#20251=* -lines(#20251,#20001,""," -") -#20252=@"loc,{#10000},24,1,24,0" -locations_default(#20252,#10000,24,1,24,0) -hasLocation(#20251,#20252) -#20253=* -lines(#20253,#20001,"if (a?.b && c?.d) {"," -") -#20254=@"loc,{#10000},25,1,25,19" -locations_default(#20254,#10000,25,1,25,19) -hasLocation(#20253,#20254) -#20255=* -lines(#20255,#20001," true;"," -") -#20256=@"loc,{#10000},26,1,26,9" -locations_default(#20256,#10000,26,1,26,9) -hasLocation(#20255,#20256) -indentation(#10000,26," ",4) +tokeninfo(#20226,8,#20001,83,";") +#20227=@"loc,{#10000},11,29,11,29" +locations_default(#20227,#10000,11,29,11,29) +hasLocation(#20226,#20227) +#20228=* +tokeninfo(#20228,7,#20001,84,"if") +#20229=@"loc,{#10000},13,1,13,2" +locations_default(#20229,#10000,13,1,13,2) +hasLocation(#20228,#20229) +#20230=* +tokeninfo(#20230,8,#20001,85,"(") +#20231=@"loc,{#10000},13,4,13,4" +locations_default(#20231,#10000,13,4,13,4) +hasLocation(#20230,#20231) +#20232=* +tokeninfo(#20232,6,#20001,86,"a") +#20233=@"loc,{#10000},13,5,13,5" +locations_default(#20233,#10000,13,5,13,5) +hasLocation(#20232,#20233) +#20234=* +tokeninfo(#20234,8,#20001,87,"?.") +#20235=@"loc,{#10000},13,6,13,7" +locations_default(#20235,#10000,13,6,13,7) +hasLocation(#20234,#20235) +#20236=* +tokeninfo(#20236,6,#20001,88,"b") +#20237=@"loc,{#10000},13,8,13,8" +locations_default(#20237,#10000,13,8,13,8) +hasLocation(#20236,#20237) +#20238=* +tokeninfo(#20238,8,#20001,89,")") +#20239=@"loc,{#10000},13,9,13,9" +locations_default(#20239,#10000,13,9,13,9) +hasLocation(#20238,#20239) +#20240=* +tokeninfo(#20240,8,#20001,90,"{") +#20241=@"loc,{#10000},13,11,13,11" +locations_default(#20241,#10000,13,11,13,11) +hasLocation(#20240,#20241) +#20242=* +tokeninfo(#20242,2,#20001,91,"true") +#20243=@"loc,{#10000},14,5,14,8" +locations_default(#20243,#10000,14,5,14,8) +hasLocation(#20242,#20243) +#20244=* +tokeninfo(#20244,8,#20001,92,";") +#20245=@"loc,{#10000},14,9,14,9" +locations_default(#20245,#10000,14,9,14,9) +hasLocation(#20244,#20245) +#20246=* +tokeninfo(#20246,8,#20001,93,"}") +#20247=@"loc,{#10000},15,1,15,1" +locations_default(#20247,#10000,15,1,15,1) +hasLocation(#20246,#20247) +#20248=* +tokeninfo(#20248,7,#20001,94,"else") +#20249=@"loc,{#10000},15,3,15,6" +locations_default(#20249,#10000,15,3,15,6) +hasLocation(#20248,#20249) +#20250=* +tokeninfo(#20250,8,#20001,95,"{") +#20251=@"loc,{#10000},15,8,15,8" +locations_default(#20251,#10000,15,8,15,8) +hasLocation(#20250,#20251) +#20252=* +tokeninfo(#20252,2,#20001,96,"false") +#20253=@"loc,{#10000},16,5,16,9" +locations_default(#20253,#10000,16,5,16,9) +hasLocation(#20252,#20253) +#20254=* +tokeninfo(#20254,8,#20001,97,";") +#20255=@"loc,{#10000},16,10,16,10" +locations_default(#20255,#10000,16,10,16,10) +hasLocation(#20254,#20255) +#20256=* +tokeninfo(#20256,8,#20001,98,"}") +hasLocation(#20256,#20035) #20257=* -lines(#20257,#20001,"} else {"," -") -#20258=@"loc,{#10000},27,1,27,8" -locations_default(#20258,#10000,27,1,27,8) +tokeninfo(#20257,7,#20001,99,"if") +#20258=@"loc,{#10000},19,1,19,2" +locations_default(#20258,#10000,19,1,19,2) hasLocation(#20257,#20258) #20259=* -lines(#20259,#20001," false;"," -") -#20260=@"loc,{#10000},28,1,28,10" -locations_default(#20260,#10000,28,1,28,10) +tokeninfo(#20259,8,#20001,100,"(") +#20260=@"loc,{#10000},19,4,19,4" +locations_default(#20260,#10000,19,4,19,4) hasLocation(#20259,#20260) -indentation(#10000,28," ",4) #20261=* -lines(#20261,#20001,"}"," -") -#20262=@"loc,{#10000},29,1,29,1" -locations_default(#20262,#10000,29,1,29,1) +tokeninfo(#20261,8,#20001,101,"!") +#20262=@"loc,{#10000},19,5,19,5" +locations_default(#20262,#10000,19,5,19,5) hasLocation(#20261,#20262) -numlines(#20001,29,21,0) #20263=* -tokeninfo(#20263,6,#20001,0,"a") -hasLocation(#20263,#20014) -#20264=* -tokeninfo(#20264,8,#20001,1,"?.") -#20265=@"loc,{#10000},1,2,1,3" -locations_default(#20265,#10000,1,2,1,3) -hasLocation(#20264,#20265) -#20266=* -tokeninfo(#20266,6,#20001,2,"b") -hasLocation(#20266,#20017) +tokeninfo(#20263,6,#20001,102,"a") +#20264=@"loc,{#10000},19,6,19,6" +locations_default(#20264,#10000,19,6,19,6) +hasLocation(#20263,#20264) +#20265=* +tokeninfo(#20265,8,#20001,103,"?.") +#20266=@"loc,{#10000},19,7,19,8" +locations_default(#20266,#10000,19,7,19,8) +hasLocation(#20265,#20266) #20267=* -tokeninfo(#20267,8,#20001,3,".") -#20268=@"loc,{#10000},1,5,1,5" -locations_default(#20268,#10000,1,5,1,5) +tokeninfo(#20267,6,#20001,104,"b") +#20268=@"loc,{#10000},19,9,19,9" +locations_default(#20268,#10000,19,9,19,9) hasLocation(#20267,#20268) #20269=* -tokeninfo(#20269,6,#20001,4,"c") -hasLocation(#20269,#20019) -#20270=* -tokeninfo(#20270,8,#20001,5,"(") -#20271=@"loc,{#10000},1,7,1,7" -locations_default(#20271,#10000,1,7,1,7) -hasLocation(#20270,#20271) -#20272=* -tokeninfo(#20272,8,#20001,6,"++") -#20273=@"loc,{#10000},1,8,1,9" -locations_default(#20273,#10000,1,8,1,9) -hasLocation(#20272,#20273) -#20274=* -tokeninfo(#20274,6,#20001,7,"x") -hasLocation(#20274,#20023) +tokeninfo(#20269,8,#20001,105,")") +#20270=@"loc,{#10000},19,10,19,10" +locations_default(#20270,#10000,19,10,19,10) +hasLocation(#20269,#20270) +#20271=* +tokeninfo(#20271,8,#20001,106,"{") +#20272=@"loc,{#10000},19,12,19,12" +locations_default(#20272,#10000,19,12,19,12) +hasLocation(#20271,#20272) +#20273=* +tokeninfo(#20273,2,#20001,107,"true") +#20274=@"loc,{#10000},20,5,20,8" +locations_default(#20274,#10000,20,5,20,8) +hasLocation(#20273,#20274) #20275=* -tokeninfo(#20275,8,#20001,8,")") -#20276=@"loc,{#10000},1,11,1,11" -locations_default(#20276,#10000,1,11,1,11) +tokeninfo(#20275,8,#20001,108,";") +#20276=@"loc,{#10000},20,9,20,9" +locations_default(#20276,#10000,20,9,20,9) hasLocation(#20275,#20276) #20277=* -tokeninfo(#20277,8,#20001,9,".") -#20278=@"loc,{#10000},1,12,1,12" -locations_default(#20278,#10000,1,12,1,12) +tokeninfo(#20277,8,#20001,109,"}") +#20278=@"loc,{#10000},21,1,21,1" +locations_default(#20278,#10000,21,1,21,1) hasLocation(#20277,#20278) #20279=* -tokeninfo(#20279,6,#20001,10,"d") -hasLocation(#20279,#20026) -#20280=* -tokeninfo(#20280,8,#20001,11,";") -#20281=@"loc,{#10000},1,14,1,14" -locations_default(#20281,#10000,1,14,1,14) -hasLocation(#20280,#20281) -#20282=* -tokeninfo(#20282,6,#20001,12,"a") -hasLocation(#20282,#20040) +tokeninfo(#20279,7,#20001,110,"else") +#20280=@"loc,{#10000},21,3,21,6" +locations_default(#20280,#10000,21,3,21,6) +hasLocation(#20279,#20280) +#20281=* +tokeninfo(#20281,8,#20001,111,"{") +#20282=@"loc,{#10000},21,8,21,8" +locations_default(#20282,#10000,21,8,21,8) +hasLocation(#20281,#20282) #20283=* -tokeninfo(#20283,8,#20001,13,"?.") -#20284=@"loc,{#10000},3,2,3,3" -locations_default(#20284,#10000,3,2,3,3) +tokeninfo(#20283,2,#20001,112,"false") +#20284=@"loc,{#10000},22,5,22,9" +locations_default(#20284,#10000,22,5,22,9) hasLocation(#20283,#20284) #20285=* -tokeninfo(#20285,6,#20001,14,"b") -hasLocation(#20285,#20042) -#20286=* -tokeninfo(#20286,8,#20001,15,"[") -#20287=@"loc,{#10000},3,5,3,5" -locations_default(#20287,#10000,3,5,3,5) -hasLocation(#20286,#20287) +tokeninfo(#20285,8,#20001,113,";") +#20286=@"loc,{#10000},22,10,22,10" +locations_default(#20286,#10000,22,10,22,10) +hasLocation(#20285,#20286) +#20287=* +tokeninfo(#20287,8,#20001,114,"}") +hasLocation(#20287,#20047) #20288=* -tokeninfo(#20288,3,#20001,16,"3") -hasLocation(#20288,#20044) -#20289=* -tokeninfo(#20289,8,#20001,17,"]") -#20290=@"loc,{#10000},3,7,3,7" -locations_default(#20290,#10000,3,7,3,7) -hasLocation(#20289,#20290) -#20291=* -tokeninfo(#20291,8,#20001,18,".") -#20292=@"loc,{#10000},3,8,3,8" -locations_default(#20292,#10000,3,8,3,8) -hasLocation(#20291,#20292) -#20293=* -tokeninfo(#20293,6,#20001,19,"c") -hasLocation(#20293,#20046) +tokeninfo(#20288,7,#20001,115,"if") +#20289=@"loc,{#10000},25,1,25,2" +locations_default(#20289,#10000,25,1,25,2) +hasLocation(#20288,#20289) +#20290=* +tokeninfo(#20290,8,#20001,116,"(") +#20291=@"loc,{#10000},25,4,25,4" +locations_default(#20291,#10000,25,4,25,4) +hasLocation(#20290,#20291) +#20292=* +tokeninfo(#20292,6,#20001,117,"a") +#20293=@"loc,{#10000},25,5,25,5" +locations_default(#20293,#10000,25,5,25,5) +hasLocation(#20292,#20293) #20294=* -tokeninfo(#20294,8,#20001,20,"?.") -#20295=@"loc,{#10000},3,10,3,11" -locations_default(#20295,#10000,3,10,3,11) +tokeninfo(#20294,8,#20001,118,"?.") +#20295=@"loc,{#10000},25,6,25,7" +locations_default(#20295,#10000,25,6,25,7) hasLocation(#20294,#20295) #20296=* -tokeninfo(#20296,8,#20001,21,"(") -#20297=@"loc,{#10000},3,12,3,12" -locations_default(#20297,#10000,3,12,3,12) +tokeninfo(#20296,6,#20001,119,"b") +#20297=@"loc,{#10000},25,8,25,8" +locations_default(#20297,#10000,25,8,25,8) hasLocation(#20296,#20297) #20298=* -tokeninfo(#20298,6,#20001,22,"x") -hasLocation(#20298,#20048) -#20299=* -tokeninfo(#20299,8,#20001,23,")") -#20300=@"loc,{#10000},3,14,3,14" -locations_default(#20300,#10000,3,14,3,14) -hasLocation(#20299,#20300) -#20301=* -tokeninfo(#20301,8,#20001,24,".") -#20302=@"loc,{#10000},3,15,3,15" -locations_default(#20302,#10000,3,15,3,15) -hasLocation(#20301,#20302) -#20303=* -tokeninfo(#20303,6,#20001,25,"d") -hasLocation(#20303,#20050) +tokeninfo(#20298,8,#20001,120,"&&") +#20299=@"loc,{#10000},25,10,25,11" +locations_default(#20299,#10000,25,10,25,11) +hasLocation(#20298,#20299) +#20300=* +tokeninfo(#20300,6,#20001,121,"c") +#20301=@"loc,{#10000},25,13,25,13" +locations_default(#20301,#10000,25,13,25,13) +hasLocation(#20300,#20301) +#20302=* +tokeninfo(#20302,8,#20001,122,"?.") +#20303=@"loc,{#10000},25,14,25,15" +locations_default(#20303,#10000,25,14,25,15) +hasLocation(#20302,#20303) #20304=* -tokeninfo(#20304,8,#20001,26,";") -#20305=@"loc,{#10000},3,17,3,17" -locations_default(#20305,#10000,3,17,3,17) +tokeninfo(#20304,6,#20001,123,"d") +#20305=@"loc,{#10000},25,16,25,16" +locations_default(#20305,#10000,25,16,25,16) hasLocation(#20304,#20305) #20306=* -tokeninfo(#20306,8,#20001,27,"(") -#20307=@"loc,{#10000},5,1,5,1" -locations_default(#20307,#10000,5,1,5,1) +tokeninfo(#20306,8,#20001,124,")") +#20307=@"loc,{#10000},25,17,25,17" +locations_default(#20307,#10000,25,17,25,17) hasLocation(#20306,#20307) #20308=* -tokeninfo(#20308,6,#20001,28,"a") -hasLocation(#20308,#20060) -#20309=* -tokeninfo(#20309,8,#20001,29,"?.") -#20310=@"loc,{#10000},5,3,5,4" -locations_default(#20310,#10000,5,3,5,4) -hasLocation(#20309,#20310) -#20311=* -tokeninfo(#20311,6,#20001,30,"b") -hasLocation(#20311,#20062) +tokeninfo(#20308,8,#20001,125,"{") +#20309=@"loc,{#10000},25,19,25,19" +locations_default(#20309,#10000,25,19,25,19) +hasLocation(#20308,#20309) +#20310=* +tokeninfo(#20310,2,#20001,126,"true") +#20311=@"loc,{#10000},26,5,26,8" +locations_default(#20311,#10000,26,5,26,8) +hasLocation(#20310,#20311) #20312=* -tokeninfo(#20312,8,#20001,31,")") -#20313=@"loc,{#10000},5,6,5,6" -locations_default(#20313,#10000,5,6,5,6) +tokeninfo(#20312,8,#20001,127,";") +#20313=@"loc,{#10000},26,9,26,9" +locations_default(#20313,#10000,26,9,26,9) hasLocation(#20312,#20313) #20314=* -tokeninfo(#20314,8,#20001,32,".") -#20315=@"loc,{#10000},5,7,5,7" -locations_default(#20315,#10000,5,7,5,7) +tokeninfo(#20314,8,#20001,128,"}") +#20315=@"loc,{#10000},27,1,27,1" +locations_default(#20315,#10000,27,1,27,1) hasLocation(#20314,#20315) #20316=* -tokeninfo(#20316,6,#20001,33,"c") -hasLocation(#20316,#20064) -#20317=* -tokeninfo(#20317,8,#20001,34,";") -#20318=@"loc,{#10000},5,9,5,9" -locations_default(#20318,#10000,5,9,5,9) -hasLocation(#20317,#20318) -#20319=* -tokeninfo(#20319,8,#20001,35,"(") -#20320=@"loc,{#10000},7,1,7,1" -locations_default(#20320,#10000,7,1,7,1) -hasLocation(#20319,#20320) -#20321=* -tokeninfo(#20321,6,#20001,36,"a") -hasLocation(#20321,#20076) +tokeninfo(#20316,7,#20001,129,"else") +#20317=@"loc,{#10000},27,3,27,6" +locations_default(#20317,#10000,27,3,27,6) +hasLocation(#20316,#20317) +#20318=* +tokeninfo(#20318,8,#20001,130,"{") +#20319=@"loc,{#10000},27,8,27,8" +locations_default(#20319,#10000,27,8,27,8) +hasLocation(#20318,#20319) +#20320=* +tokeninfo(#20320,2,#20001,131,"false") +#20321=@"loc,{#10000},28,5,28,9" +locations_default(#20321,#10000,28,5,28,9) +hasLocation(#20320,#20321) #20322=* -tokeninfo(#20322,8,#20001,37,"?.") -#20323=@"loc,{#10000},7,3,7,4" -locations_default(#20323,#10000,7,3,7,4) +tokeninfo(#20322,8,#20001,132,";") +#20323=@"loc,{#10000},28,10,28,10" +locations_default(#20323,#10000,28,10,28,10) hasLocation(#20322,#20323) #20324=* -tokeninfo(#20324,6,#20001,38,"b") -hasLocation(#20324,#20078) +tokeninfo(#20324,8,#20001,133,"}") +hasLocation(#20324,#20059) #20325=* -tokeninfo(#20325,8,#20001,39,".") -#20326=@"loc,{#10000},7,6,7,6" -locations_default(#20326,#10000,7,6,7,6) +tokeninfo(#20325,0,#20001,134,"") +#20326=@"loc,{#10000},30,1,30,0" +locations_default(#20326,#10000,30,1,30,0) hasLocation(#20325,#20326) -#20327=* -tokeninfo(#20327,6,#20001,40,"c") -hasLocation(#20327,#20080) +toplevels(#20001,0) +#20327=@"loc,{#10000},1,1,30,0" +locations_default(#20327,#10000,1,1,30,0) +hasLocation(#20001,#20327) #20328=* -tokeninfo(#20328,8,#20001,41,")") -#20329=@"loc,{#10000},7,8,7,8" -locations_default(#20329,#10000,7,8,7,8) -hasLocation(#20328,#20329) -#20330=* -tokeninfo(#20330,8,#20001,42,".") -#20331=@"loc,{#10000},7,9,7,9" -locations_default(#20331,#10000,7,9,7,9) -hasLocation(#20330,#20331) -#20332=* -tokeninfo(#20332,6,#20001,43,"d") -hasLocation(#20332,#20082) +stmts(#20328,2,#20001,0,"a?.b.c(++x).d;") +hasLocation(#20328,#20003) +stmtContainers(#20328,#20001) +#20329=* +exprs(#20329,14,#20328,0,"a?.b.c(++x).d") +#20330=@"loc,{#10000},1,1,1,13" +locations_default(#20330,#10000,1,1,1,13) +hasLocation(#20329,#20330) +enclosingStmt(#20329,#20328) +exprContainers(#20329,#20001) +#20331=* +exprs(#20331,13,#20329,0,"a?.b.c(++x)") +#20332=@"loc,{#10000},1,1,1,11" +locations_default(#20332,#10000,1,1,1,11) +hasLocation(#20331,#20332) +enclosingStmt(#20331,#20328) +exprContainers(#20331,#20001) #20333=* -tokeninfo(#20333,8,#20001,44,";") -#20334=@"loc,{#10000},7,11,7,11" -locations_default(#20334,#10000,7,11,7,11) +exprs(#20333,14,#20331,-1,"a?.b.c") +#20334=@"loc,{#10000},1,1,1,6" +locations_default(#20334,#10000,1,1,1,6) hasLocation(#20333,#20334) +enclosingStmt(#20333,#20328) +exprContainers(#20333,#20001) #20335=* -tokeninfo(#20335,6,#20001,45,"a") -hasLocation(#20335,#20092) -#20336=* -tokeninfo(#20336,8,#20001,46,"?.") -#20337=@"loc,{#10000},9,2,9,3" -locations_default(#20337,#10000,9,2,9,3) -hasLocation(#20336,#20337) -#20338=* -tokeninfo(#20338,8,#20001,47,"[") -#20339=@"loc,{#10000},9,4,9,4" -locations_default(#20339,#10000,9,4,9,4) -hasLocation(#20338,#20339) +exprs(#20335,14,#20333,0,"a?.b") +#20336=@"loc,{#10000},1,1,1,4" +locations_default(#20336,#10000,1,1,1,4) +hasLocation(#20335,#20336) +enclosingStmt(#20335,#20328) +exprContainers(#20335,#20001) +#20337=* +exprs(#20337,79,#20335,0,"a") +hasLocation(#20337,#20061) +enclosingStmt(#20337,#20328) +exprContainers(#20337,#20001) +literals("a","a",#20337) +#20338=@"var;{a};{#20000}" +variables(#20338,"a",#20000) +bind(#20337,#20338) +#20339=* +exprs(#20339,0,#20335,1,"b") +hasLocation(#20339,#20065) +enclosingStmt(#20339,#20328) +exprContainers(#20339,#20001) +literals("b","b",#20339) +isOptionalChaining(#20335) #20340=* -tokeninfo(#20340,6,#20001,48,"b") -hasLocation(#20340,#20098) +exprs(#20340,0,#20333,1,"c") +hasLocation(#20340,#20069) +enclosingStmt(#20340,#20328) +exprContainers(#20340,#20001) +literals("c","c",#20340) #20341=* -tokeninfo(#20341,8,#20001,49,"?.") -#20342=@"loc,{#10000},9,6,9,7" -locations_default(#20342,#10000,9,6,9,7) +exprs(#20341,59,#20331,0,"++x") +#20342=@"loc,{#10000},1,8,1,10" +locations_default(#20342,#10000,1,8,1,10) hasLocation(#20341,#20342) +enclosingStmt(#20341,#20328) +exprContainers(#20341,#20001) #20343=* -tokeninfo(#20343,6,#20001,50,"c") -hasLocation(#20343,#20101) -#20344=* -tokeninfo(#20344,8,#20001,51,"?.") -#20345=@"loc,{#10000},9,9,9,10" -locations_default(#20345,#10000,9,9,9,10) -hasLocation(#20344,#20345) +exprs(#20343,79,#20341,0,"x") +hasLocation(#20343,#20075) +enclosingStmt(#20343,#20328) +exprContainers(#20343,#20001) +literals("x","x",#20343) +#20344=@"var;{x};{#20000}" +variables(#20344,"x",#20000) +bind(#20343,#20344) +#20345=* +exprs(#20345,0,#20329,1,"d") +hasLocation(#20345,#20081) +enclosingStmt(#20345,#20328) +exprContainers(#20345,#20001) +literals("d","d",#20345) #20346=* -tokeninfo(#20346,6,#20001,52,"d") -hasLocation(#20346,#20103) +stmts(#20346,2,#20001,1,"a?.b[3].c?.(x).d;") +hasLocation(#20346,#20007) +stmtContainers(#20346,#20001) #20347=* -tokeninfo(#20347,8,#20001,53,"]") -#20348=@"loc,{#10000},9,12,9,12" -locations_default(#20348,#10000,9,12,9,12) +exprs(#20347,14,#20346,0,"a?.b[3].c?.(x).d") +#20348=@"loc,{#10000},3,1,3,16" +locations_default(#20348,#10000,3,1,3,16) hasLocation(#20347,#20348) +enclosingStmt(#20347,#20346) +exprContainers(#20347,#20001) #20349=* -tokeninfo(#20349,8,#20001,54,".") -#20350=@"loc,{#10000},9,13,9,13" -locations_default(#20350,#10000,9,13,9,13) +exprs(#20349,13,#20347,0,"a?.b[3].c?.(x)") +#20350=@"loc,{#10000},3,1,3,14" +locations_default(#20350,#10000,3,1,3,14) hasLocation(#20349,#20350) +enclosingStmt(#20349,#20346) +exprContainers(#20349,#20001) #20351=* -tokeninfo(#20351,6,#20001,55,"e") -hasLocation(#20351,#20105) -#20352=* -tokeninfo(#20352,8,#20001,56,"?.") -#20353=@"loc,{#10000},9,15,9,16" -locations_default(#20353,#10000,9,15,9,16) -hasLocation(#20352,#20353) -#20354=* -tokeninfo(#20354,6,#20001,57,"f") -hasLocation(#20354,#20107) +exprs(#20351,14,#20349,-1,"a?.b[3].c") +#20352=@"loc,{#10000},3,1,3,9" +locations_default(#20352,#10000,3,1,3,9) +hasLocation(#20351,#20352) +enclosingStmt(#20351,#20346) +exprContainers(#20351,#20001) +#20353=* +exprs(#20353,15,#20351,0,"a?.b[3]") +#20354=@"loc,{#10000},3,1,3,7" +locations_default(#20354,#10000,3,1,3,7) +hasLocation(#20353,#20354) +enclosingStmt(#20353,#20346) +exprContainers(#20353,#20001) #20355=* -tokeninfo(#20355,8,#20001,58,";") -#20356=@"loc,{#10000},9,18,9,18" -locations_default(#20356,#10000,9,18,9,18) +exprs(#20355,14,#20353,0,"a?.b") +#20356=@"loc,{#10000},3,1,3,4" +locations_default(#20356,#10000,3,1,3,4) hasLocation(#20355,#20356) +enclosingStmt(#20355,#20346) +exprContainers(#20355,#20001) #20357=* -tokeninfo(#20357,6,#20001,59,"a") -hasLocation(#20357,#20121) +exprs(#20357,79,#20355,0,"a") +hasLocation(#20357,#20085) +enclosingStmt(#20357,#20346) +exprContainers(#20357,#20001) +literals("a","a",#20357) +bind(#20357,#20338) #20358=* -tokeninfo(#20358,8,#20001,60,"?.") -#20359=@"loc,{#10000},11,2,11,3" -locations_default(#20359,#10000,11,2,11,3) -hasLocation(#20358,#20359) +exprs(#20358,0,#20355,1,"b") +hasLocation(#20358,#20089) +enclosingStmt(#20358,#20346) +exprContainers(#20358,#20001) +literals("b","b",#20358) +isOptionalChaining(#20355) +#20359=* +exprs(#20359,3,#20353,1,"3") +hasLocation(#20359,#20093) +enclosingStmt(#20359,#20346) +exprContainers(#20359,#20001) +literals("3","3",#20359) #20360=* -tokeninfo(#20360,8,#20001,61,"(") -#20361=@"loc,{#10000},11,4,11,4" -locations_default(#20361,#10000,11,4,11,4) -hasLocation(#20360,#20361) +exprs(#20360,0,#20351,1,"c") +hasLocation(#20360,#20099) +enclosingStmt(#20360,#20346) +exprContainers(#20360,#20001) +literals("c","c",#20360) +#20361=* +exprs(#20361,79,#20349,0,"x") +hasLocation(#20361,#20105) +enclosingStmt(#20361,#20346) +exprContainers(#20361,#20001) +literals("x","x",#20361) +bind(#20361,#20344) +isOptionalChaining(#20349) #20362=* -tokeninfo(#20362,8,#20001,62,")") -#20363=@"loc,{#10000},11,5,11,5" -locations_default(#20363,#10000,11,5,11,5) -hasLocation(#20362,#20363) +exprs(#20362,0,#20347,1,"d") +hasLocation(#20362,#20111) +enclosingStmt(#20362,#20346) +exprContainers(#20362,#20001) +literals("d","d",#20362) +#20363=* +stmts(#20363,2,#20001,2,"(a?.b).c;") +hasLocation(#20363,#20011) +stmtContainers(#20363,#20001) #20364=* -tokeninfo(#20364,8,#20001,63,"[") -#20365=@"loc,{#10000},11,6,11,6" -locations_default(#20365,#10000,11,6,11,6) +exprs(#20364,14,#20363,0,"(a?.b).c") +#20365=@"loc,{#10000},5,1,5,8" +locations_default(#20365,#10000,5,1,5,8) hasLocation(#20364,#20365) +enclosingStmt(#20364,#20363) +exprContainers(#20364,#20001) #20366=* -tokeninfo(#20366,6,#20001,64,"b") -hasLocation(#20366,#20131) -#20367=* -tokeninfo(#20367,8,#20001,65,"?.") -#20368=@"loc,{#10000},11,8,11,9" -locations_default(#20368,#10000,11,8,11,9) -hasLocation(#20367,#20368) -#20369=* -tokeninfo(#20369,8,#20001,66,"(") -#20370=@"loc,{#10000},11,10,11,10" -locations_default(#20370,#10000,11,10,11,10) -hasLocation(#20369,#20370) +exprs(#20366,63,#20364,0,"(a?.b)") +#20367=@"loc,{#10000},5,1,5,6" +locations_default(#20367,#10000,5,1,5,6) +hasLocation(#20366,#20367) +enclosingStmt(#20366,#20363) +exprContainers(#20366,#20001) +#20368=* +exprs(#20368,14,#20366,0,"a?.b") +#20369=@"loc,{#10000},5,2,5,5" +locations_default(#20369,#10000,5,2,5,5) +hasLocation(#20368,#20369) +enclosingStmt(#20368,#20363) +exprContainers(#20368,#20001) +#20370=* +exprs(#20370,79,#20368,0,"a") +hasLocation(#20370,#20117) +enclosingStmt(#20370,#20363) +exprContainers(#20370,#20001) +literals("a","a",#20370) +bind(#20370,#20338) #20371=* -tokeninfo(#20371,8,#20001,67,")") -#20372=@"loc,{#10000},11,11,11,11" -locations_default(#20372,#10000,11,11,11,11) -hasLocation(#20371,#20372) +exprs(#20371,0,#20368,1,"b") +hasLocation(#20371,#20121) +enclosingStmt(#20371,#20363) +exprContainers(#20371,#20001) +literals("b","b",#20371) +isOptionalChaining(#20368) +#20372=* +exprs(#20372,0,#20364,1,"c") +hasLocation(#20372,#20127) +enclosingStmt(#20372,#20363) +exprContainers(#20372,#20001) +literals("c","c",#20372) #20373=* -tokeninfo(#20373,8,#20001,68,".") -#20374=@"loc,{#10000},11,12,11,12" -locations_default(#20374,#10000,11,12,11,12) -hasLocation(#20373,#20374) -#20375=* -tokeninfo(#20375,6,#20001,69,"c") -hasLocation(#20375,#20133) +stmts(#20373,2,#20001,3,"(a?.b.c).d;") +hasLocation(#20373,#20015) +stmtContainers(#20373,#20001) +#20374=* +exprs(#20374,14,#20373,0,"(a?.b.c).d") +#20375=@"loc,{#10000},7,1,7,10" +locations_default(#20375,#10000,7,1,7,10) +hasLocation(#20374,#20375) +enclosingStmt(#20374,#20373) +exprContainers(#20374,#20001) #20376=* -tokeninfo(#20376,8,#20001,70,"?.") -#20377=@"loc,{#10000},11,14,11,15" -locations_default(#20377,#10000,11,14,11,15) +exprs(#20376,63,#20374,0,"(a?.b.c)") +#20377=@"loc,{#10000},7,1,7,8" +locations_default(#20377,#10000,7,1,7,8) hasLocation(#20376,#20377) +enclosingStmt(#20376,#20373) +exprContainers(#20376,#20001) #20378=* -tokeninfo(#20378,8,#20001,71,"(") -#20379=@"loc,{#10000},11,16,11,16" -locations_default(#20379,#10000,11,16,11,16) +exprs(#20378,14,#20376,0,"a?.b.c") +#20379=@"loc,{#10000},7,2,7,7" +locations_default(#20379,#10000,7,2,7,7) hasLocation(#20378,#20379) +enclosingStmt(#20378,#20373) +exprContainers(#20378,#20001) #20380=* -tokeninfo(#20380,8,#20001,72,")") -#20381=@"loc,{#10000},11,17,11,17" -locations_default(#20381,#10000,11,17,11,17) +exprs(#20380,14,#20378,0,"a?.b") +#20381=@"loc,{#10000},7,2,7,5" +locations_default(#20381,#10000,7,2,7,5) hasLocation(#20380,#20381) +enclosingStmt(#20380,#20373) +exprContainers(#20380,#20001) #20382=* -tokeninfo(#20382,8,#20001,73,".") -#20383=@"loc,{#10000},11,18,11,18" -locations_default(#20383,#10000,11,18,11,18) -hasLocation(#20382,#20383) +exprs(#20382,79,#20380,0,"a") +hasLocation(#20382,#20133) +enclosingStmt(#20382,#20373) +exprContainers(#20382,#20001) +literals("a","a",#20382) +bind(#20382,#20338) +#20383=* +exprs(#20383,0,#20380,1,"b") +hasLocation(#20383,#20137) +enclosingStmt(#20383,#20373) +exprContainers(#20383,#20001) +literals("b","b",#20383) +isOptionalChaining(#20380) #20384=* -tokeninfo(#20384,6,#20001,74,"d") -hasLocation(#20384,#20135) +exprs(#20384,0,#20378,1,"c") +hasLocation(#20384,#20141) +enclosingStmt(#20384,#20373) +exprContainers(#20384,#20001) +literals("c","c",#20384) #20385=* -tokeninfo(#20385,8,#20001,75,"]") -#20386=@"loc,{#10000},11,20,11,20" -locations_default(#20386,#10000,11,20,11,20) -hasLocation(#20385,#20386) +exprs(#20385,0,#20374,1,"d") +hasLocation(#20385,#20147) +enclosingStmt(#20385,#20373) +exprContainers(#20385,#20001) +literals("d","d",#20385) +#20386=* +stmts(#20386,2,#20001,4,"a?.[b?.c?.d].e?.f;") +hasLocation(#20386,#20019) +stmtContainers(#20386,#20001) #20387=* -tokeninfo(#20387,8,#20001,76,".") -#20388=@"loc,{#10000},11,21,11,21" -locations_default(#20388,#10000,11,21,11,21) +exprs(#20387,14,#20386,0,"a?.[b?.c?.d].e?.f") +#20388=@"loc,{#10000},9,1,9,17" +locations_default(#20388,#10000,9,1,9,17) hasLocation(#20387,#20388) +enclosingStmt(#20387,#20386) +exprContainers(#20387,#20001) #20389=* -tokeninfo(#20389,6,#20001,77,"e") -hasLocation(#20389,#20137) -#20390=* -tokeninfo(#20390,8,#20001,78,"?.") -#20391=@"loc,{#10000},11,23,11,24" -locations_default(#20391,#10000,11,23,11,24) -hasLocation(#20390,#20391) -#20392=* -tokeninfo(#20392,8,#20001,79,"(") -#20393=@"loc,{#10000},11,25,11,25" -locations_default(#20393,#10000,11,25,11,25) -hasLocation(#20392,#20393) +exprs(#20389,14,#20387,0,"a?.[b?.c?.d].e") +#20390=@"loc,{#10000},9,1,9,14" +locations_default(#20390,#10000,9,1,9,14) +hasLocation(#20389,#20390) +enclosingStmt(#20389,#20386) +exprContainers(#20389,#20001) +#20391=* +exprs(#20391,15,#20389,0,"a?.[b?.c?.d]") +#20392=@"loc,{#10000},9,1,9,12" +locations_default(#20392,#10000,9,1,9,12) +hasLocation(#20391,#20392) +enclosingStmt(#20391,#20386) +exprContainers(#20391,#20001) +#20393=* +exprs(#20393,79,#20391,0,"a") +hasLocation(#20393,#20151) +enclosingStmt(#20393,#20386) +exprContainers(#20393,#20001) +literals("a","a",#20393) +bind(#20393,#20338) #20394=* -tokeninfo(#20394,8,#20001,80,")") -#20395=@"loc,{#10000},11,26,11,26" -locations_default(#20395,#10000,11,26,11,26) +exprs(#20394,14,#20391,1,"b?.c?.d") +#20395=@"loc,{#10000},9,5,9,11" +locations_default(#20395,#10000,9,5,9,11) hasLocation(#20394,#20395) +enclosingStmt(#20394,#20386) +exprContainers(#20394,#20001) #20396=* -tokeninfo(#20396,8,#20001,81,".") -#20397=@"loc,{#10000},11,27,11,27" -locations_default(#20397,#10000,11,27,11,27) +exprs(#20396,14,#20394,0,"b?.c") +#20397=@"loc,{#10000},9,5,9,8" +locations_default(#20397,#10000,9,5,9,8) hasLocation(#20396,#20397) +enclosingStmt(#20396,#20386) +exprContainers(#20396,#20001) #20398=* -tokeninfo(#20398,6,#20001,82,"f") -hasLocation(#20398,#20139) -#20399=* -tokeninfo(#20399,8,#20001,83,";") -#20400=@"loc,{#10000},11,29,11,29" -locations_default(#20400,#10000,11,29,11,29) -hasLocation(#20399,#20400) +exprs(#20398,79,#20396,0,"b") +hasLocation(#20398,#20157) +enclosingStmt(#20398,#20386) +exprContainers(#20398,#20001) +literals("b","b",#20398) +#20399=@"var;{b};{#20000}" +variables(#20399,"b",#20000) +bind(#20398,#20399) +#20400=* +exprs(#20400,0,#20396,1,"c") +hasLocation(#20400,#20161) +enclosingStmt(#20400,#20386) +exprContainers(#20400,#20001) +literals("c","c",#20400) +isOptionalChaining(#20396) #20401=* -tokeninfo(#20401,7,#20001,84,"if") -#20402=@"loc,{#10000},13,1,13,2" -locations_default(#20402,#10000,13,1,13,2) -hasLocation(#20401,#20402) +exprs(#20401,0,#20394,1,"d") +hasLocation(#20401,#20165) +enclosingStmt(#20401,#20386) +exprContainers(#20401,#20001) +literals("d","d",#20401) +isOptionalChaining(#20394) +isOptionalChaining(#20391) +#20402=* +exprs(#20402,0,#20389,1,"e") +hasLocation(#20402,#20171) +enclosingStmt(#20402,#20386) +exprContainers(#20402,#20001) +literals("e","e",#20402) #20403=* -tokeninfo(#20403,8,#20001,85,"(") -#20404=@"loc,{#10000},13,4,13,4" -locations_default(#20404,#10000,13,4,13,4) -hasLocation(#20403,#20404) +exprs(#20403,0,#20387,1,"f") +hasLocation(#20403,#20175) +enclosingStmt(#20403,#20386) +exprContainers(#20403,#20001) +literals("f","f",#20403) +isOptionalChaining(#20387) +#20404=* +stmts(#20404,2,#20001,5,"a?.()[b ... ?.().f;") +hasLocation(#20404,#20023) +stmtContainers(#20404,#20001) #20405=* -tokeninfo(#20405,6,#20001,86,"a") -hasLocation(#20405,#20145) -#20406=* -tokeninfo(#20406,8,#20001,87,"?.") -#20407=@"loc,{#10000},13,6,13,7" -locations_default(#20407,#10000,13,6,13,7) -hasLocation(#20406,#20407) -#20408=* -tokeninfo(#20408,6,#20001,88,"b") -hasLocation(#20408,#20147) +exprs(#20405,14,#20404,0,"a?.()[b ... e?.().f") +#20406=@"loc,{#10000},11,1,11,28" +locations_default(#20406,#10000,11,1,11,28) +hasLocation(#20405,#20406) +enclosingStmt(#20405,#20404) +exprContainers(#20405,#20001) +#20407=* +exprs(#20407,13,#20405,0,"a?.()[b ... ].e?.()") +#20408=@"loc,{#10000},11,1,11,26" +locations_default(#20408,#10000,11,1,11,26) +hasLocation(#20407,#20408) +enclosingStmt(#20407,#20404) +exprContainers(#20407,#20001) #20409=* -tokeninfo(#20409,8,#20001,89,")") -#20410=@"loc,{#10000},13,9,13,9" -locations_default(#20410,#10000,13,9,13,9) +exprs(#20409,14,#20407,-1,"a?.()[b ... ().d].e") +#20410=@"loc,{#10000},11,1,11,22" +locations_default(#20410,#10000,11,1,11,22) hasLocation(#20409,#20410) +enclosingStmt(#20409,#20404) +exprContainers(#20409,#20001) #20411=* -tokeninfo(#20411,8,#20001,90,"{") -#20412=@"loc,{#10000},13,11,13,11" -locations_default(#20412,#10000,13,11,13,11) +exprs(#20411,15,#20409,0,"a?.()[b?.().c?.().d]") +#20412=@"loc,{#10000},11,1,11,20" +locations_default(#20412,#10000,11,1,11,20) hasLocation(#20411,#20412) +enclosingStmt(#20411,#20404) +exprContainers(#20411,#20001) #20413=* -tokeninfo(#20413,2,#20001,91,"true") -hasLocation(#20413,#20153) -#20414=* -tokeninfo(#20414,8,#20001,92,";") -#20415=@"loc,{#10000},14,9,14,9" -locations_default(#20415,#10000,14,9,14,9) -hasLocation(#20414,#20415) +exprs(#20413,13,#20411,0,"a?.()") +#20414=@"loc,{#10000},11,1,11,5" +locations_default(#20414,#10000,11,1,11,5) +hasLocation(#20413,#20414) +enclosingStmt(#20413,#20404) +exprContainers(#20413,#20001) +#20415=* +exprs(#20415,79,#20413,-1,"a") +hasLocation(#20415,#20179) +enclosingStmt(#20415,#20404) +exprContainers(#20415,#20001) +literals("a","a",#20415) +bind(#20415,#20338) +isOptionalChaining(#20413) #20416=* -tokeninfo(#20416,8,#20001,93,"}") -#20417=@"loc,{#10000},15,1,15,1" -locations_default(#20417,#10000,15,1,15,1) +exprs(#20416,14,#20411,1,"b?.().c?.().d") +#20417=@"loc,{#10000},11,7,11,19" +locations_default(#20417,#10000,11,7,11,19) hasLocation(#20416,#20417) +enclosingStmt(#20416,#20404) +exprContainers(#20416,#20001) #20418=* -tokeninfo(#20418,7,#20001,94,"else") -#20419=@"loc,{#10000},15,3,15,6" -locations_default(#20419,#10000,15,3,15,6) +exprs(#20418,13,#20416,0,"b?.().c?.()") +#20419=@"loc,{#10000},11,7,11,17" +locations_default(#20419,#10000,11,7,11,17) hasLocation(#20418,#20419) +enclosingStmt(#20418,#20404) +exprContainers(#20418,#20001) #20420=* -tokeninfo(#20420,8,#20001,95,"{") -#20421=@"loc,{#10000},15,8,15,8" -locations_default(#20421,#10000,15,8,15,8) +exprs(#20420,14,#20418,-1,"b?.().c") +#20421=@"loc,{#10000},11,7,11,13" +locations_default(#20421,#10000,11,7,11,13) hasLocation(#20420,#20421) +enclosingStmt(#20420,#20404) +exprContainers(#20420,#20001) #20422=* -tokeninfo(#20422,2,#20001,96,"false") -hasLocation(#20422,#20159) -#20423=* -tokeninfo(#20423,8,#20001,97,";") -#20424=@"loc,{#10000},16,10,16,10" -locations_default(#20424,#10000,16,10,16,10) -hasLocation(#20423,#20424) +exprs(#20422,13,#20420,0,"b?.()") +#20423=@"loc,{#10000},11,7,11,11" +locations_default(#20423,#10000,11,7,11,11) +hasLocation(#20422,#20423) +enclosingStmt(#20422,#20404) +exprContainers(#20422,#20001) +#20424=* +exprs(#20424,79,#20422,-1,"b") +hasLocation(#20424,#20189) +enclosingStmt(#20424,#20404) +exprContainers(#20424,#20001) +literals("b","b",#20424) +bind(#20424,#20399) +isOptionalChaining(#20422) #20425=* -tokeninfo(#20425,8,#20001,98,"}") -hasLocation(#20425,#20238) +exprs(#20425,0,#20420,1,"c") +hasLocation(#20425,#20199) +enclosingStmt(#20425,#20404) +exprContainers(#20425,#20001) +literals("c","c",#20425) +isOptionalChaining(#20418) #20426=* -tokeninfo(#20426,7,#20001,99,"if") -#20427=@"loc,{#10000},19,1,19,2" -locations_default(#20427,#10000,19,1,19,2) -hasLocation(#20426,#20427) +exprs(#20426,0,#20416,1,"d") +hasLocation(#20426,#20209) +enclosingStmt(#20426,#20404) +exprContainers(#20426,#20001) +literals("d","d",#20426) +#20427=* +exprs(#20427,0,#20409,1,"e") +hasLocation(#20427,#20215) +enclosingStmt(#20427,#20404) +exprContainers(#20427,#20001) +literals("e","e",#20427) +isOptionalChaining(#20407) #20428=* -tokeninfo(#20428,8,#20001,100,"(") -#20429=@"loc,{#10000},19,4,19,4" -locations_default(#20429,#10000,19,4,19,4) -hasLocation(#20428,#20429) -#20430=* -tokeninfo(#20430,8,#20001,101,"!") -#20431=@"loc,{#10000},19,5,19,5" -locations_default(#20431,#10000,19,5,19,5) -hasLocation(#20430,#20431) -#20432=* -tokeninfo(#20432,6,#20001,102,"a") -hasLocation(#20432,#20167) +exprs(#20428,0,#20405,1,"f") +hasLocation(#20428,#20225) +enclosingStmt(#20428,#20404) +exprContainers(#20428,#20001) +literals("f","f",#20428) +#20429=* +stmts(#20429,3,#20001,6,"if (a?. ... alse;\n}") +#20430=@"loc,{#10000},13,1,17,1" +locations_default(#20430,#10000,13,1,17,1) +hasLocation(#20429,#20430) +stmtContainers(#20429,#20001) +#20431=* +exprs(#20431,14,#20429,0,"a?.b") +#20432=@"loc,{#10000},13,5,13,8" +locations_default(#20432,#10000,13,5,13,8) +hasLocation(#20431,#20432) +enclosingStmt(#20431,#20429) +exprContainers(#20431,#20001) #20433=* -tokeninfo(#20433,8,#20001,103,"?.") -#20434=@"loc,{#10000},19,7,19,8" -locations_default(#20434,#10000,19,7,19,8) -hasLocation(#20433,#20434) +exprs(#20433,79,#20431,0,"a") +hasLocation(#20433,#20233) +enclosingStmt(#20433,#20429) +exprContainers(#20433,#20001) +literals("a","a",#20433) +bind(#20433,#20338) +#20434=* +exprs(#20434,0,#20431,1,"b") +hasLocation(#20434,#20237) +enclosingStmt(#20434,#20429) +exprContainers(#20434,#20001) +literals("b","b",#20434) +isOptionalChaining(#20431) #20435=* -tokeninfo(#20435,6,#20001,104,"b") -hasLocation(#20435,#20169) -#20436=* -tokeninfo(#20436,8,#20001,105,")") -#20437=@"loc,{#10000},19,10,19,10" -locations_default(#20437,#10000,19,10,19,10) -hasLocation(#20436,#20437) -#20438=* -tokeninfo(#20438,8,#20001,106,"{") -#20439=@"loc,{#10000},19,12,19,12" -locations_default(#20439,#10000,19,12,19,12) -hasLocation(#20438,#20439) +stmts(#20435,1,#20429,1,"{\n true;\n}") +#20436=@"loc,{#10000},13,11,15,1" +locations_default(#20436,#10000,13,11,15,1) +hasLocation(#20435,#20436) +stmtContainers(#20435,#20001) +#20437=* +stmts(#20437,2,#20435,0,"true;") +#20438=@"loc,{#10000},14,5,14,9" +locations_default(#20438,#10000,14,5,14,9) +hasLocation(#20437,#20438) +stmtContainers(#20437,#20001) +#20439=* +exprs(#20439,2,#20437,0,"true") +hasLocation(#20439,#20243) +enclosingStmt(#20439,#20437) +exprContainers(#20439,#20001) +literals("true","true",#20439) #20440=* -tokeninfo(#20440,2,#20001,107,"true") -hasLocation(#20440,#20175) -#20441=* -tokeninfo(#20441,8,#20001,108,";") -#20442=@"loc,{#10000},20,9,20,9" -locations_default(#20442,#10000,20,9,20,9) -hasLocation(#20441,#20442) -#20443=* -tokeninfo(#20443,8,#20001,109,"}") -#20444=@"loc,{#10000},21,1,21,1" -locations_default(#20444,#10000,21,1,21,1) -hasLocation(#20443,#20444) +stmts(#20440,1,#20429,2,"{\n false;\n}") +#20441=@"loc,{#10000},15,8,17,1" +locations_default(#20441,#10000,15,8,17,1) +hasLocation(#20440,#20441) +stmtContainers(#20440,#20001) +#20442=* +stmts(#20442,2,#20440,0,"false;") +#20443=@"loc,{#10000},16,5,16,10" +locations_default(#20443,#10000,16,5,16,10) +hasLocation(#20442,#20443) +stmtContainers(#20442,#20001) +#20444=* +exprs(#20444,2,#20442,0,"false") +hasLocation(#20444,#20253) +enclosingStmt(#20444,#20442) +exprContainers(#20444,#20001) +literals("false","false",#20444) #20445=* -tokeninfo(#20445,7,#20001,110,"else") -#20446=@"loc,{#10000},21,3,21,6" -locations_default(#20446,#10000,21,3,21,6) +stmts(#20445,3,#20001,7,"if (!a? ... alse;\n}") +#20446=@"loc,{#10000},19,1,23,1" +locations_default(#20446,#10000,19,1,23,1) hasLocation(#20445,#20446) +stmtContainers(#20445,#20001) #20447=* -tokeninfo(#20447,8,#20001,111,"{") -#20448=@"loc,{#10000},21,8,21,8" -locations_default(#20448,#10000,21,8,21,8) +exprs(#20447,18,#20445,0,"!a?.b") +#20448=@"loc,{#10000},19,5,19,9" +locations_default(#20448,#10000,19,5,19,9) hasLocation(#20447,#20448) +enclosingStmt(#20447,#20445) +exprContainers(#20447,#20001) #20449=* -tokeninfo(#20449,2,#20001,112,"false") -hasLocation(#20449,#20181) -#20450=* -tokeninfo(#20450,8,#20001,113,";") -#20451=@"loc,{#10000},22,10,22,10" -locations_default(#20451,#10000,22,10,22,10) -hasLocation(#20450,#20451) +exprs(#20449,14,#20447,0,"a?.b") +#20450=@"loc,{#10000},19,6,19,9" +locations_default(#20450,#10000,19,6,19,9) +hasLocation(#20449,#20450) +enclosingStmt(#20449,#20445) +exprContainers(#20449,#20001) +#20451=* +exprs(#20451,79,#20449,0,"a") +hasLocation(#20451,#20264) +enclosingStmt(#20451,#20445) +exprContainers(#20451,#20001) +literals("a","a",#20451) +bind(#20451,#20338) #20452=* -tokeninfo(#20452,8,#20001,114,"}") -hasLocation(#20452,#20250) +exprs(#20452,0,#20449,1,"b") +hasLocation(#20452,#20268) +enclosingStmt(#20452,#20445) +exprContainers(#20452,#20001) +literals("b","b",#20452) +isOptionalChaining(#20449) #20453=* -tokeninfo(#20453,7,#20001,115,"if") -#20454=@"loc,{#10000},25,1,25,2" -locations_default(#20454,#10000,25,1,25,2) +stmts(#20453,1,#20445,1,"{\n true;\n}") +#20454=@"loc,{#10000},19,12,21,1" +locations_default(#20454,#10000,19,12,21,1) hasLocation(#20453,#20454) +stmtContainers(#20453,#20001) #20455=* -tokeninfo(#20455,8,#20001,116,"(") -#20456=@"loc,{#10000},25,4,25,4" -locations_default(#20456,#10000,25,4,25,4) +stmts(#20455,2,#20453,0,"true;") +#20456=@"loc,{#10000},20,5,20,9" +locations_default(#20456,#10000,20,5,20,9) hasLocation(#20455,#20456) +stmtContainers(#20455,#20001) #20457=* -tokeninfo(#20457,6,#20001,117,"a") -hasLocation(#20457,#20189) +exprs(#20457,2,#20455,0,"true") +hasLocation(#20457,#20274) +enclosingStmt(#20457,#20455) +exprContainers(#20457,#20001) +literals("true","true",#20457) #20458=* -tokeninfo(#20458,8,#20001,118,"?.") -#20459=@"loc,{#10000},25,6,25,7" -locations_default(#20459,#10000,25,6,25,7) +stmts(#20458,1,#20445,2,"{\n false;\n}") +#20459=@"loc,{#10000},21,8,23,1" +locations_default(#20459,#10000,21,8,23,1) hasLocation(#20458,#20459) +stmtContainers(#20458,#20001) #20460=* -tokeninfo(#20460,6,#20001,119,"b") -hasLocation(#20460,#20191) -#20461=* -tokeninfo(#20461,8,#20001,120,"&&") -#20462=@"loc,{#10000},25,10,25,11" -locations_default(#20462,#10000,25,10,25,11) -hasLocation(#20461,#20462) +stmts(#20460,2,#20458,0,"false;") +#20461=@"loc,{#10000},22,5,22,10" +locations_default(#20461,#10000,22,5,22,10) +hasLocation(#20460,#20461) +stmtContainers(#20460,#20001) +#20462=* +exprs(#20462,2,#20460,0,"false") +hasLocation(#20462,#20284) +enclosingStmt(#20462,#20460) +exprContainers(#20462,#20001) +literals("false","false",#20462) #20463=* -tokeninfo(#20463,6,#20001,121,"c") -hasLocation(#20463,#20195) -#20464=* -tokeninfo(#20464,8,#20001,122,"?.") -#20465=@"loc,{#10000},25,14,25,15" -locations_default(#20465,#10000,25,14,25,15) -hasLocation(#20464,#20465) -#20466=* -tokeninfo(#20466,6,#20001,123,"d") -hasLocation(#20466,#20198) +stmts(#20463,3,#20001,8,"if (a?. ... alse;\n}") +#20464=@"loc,{#10000},25,1,29,1" +locations_default(#20464,#10000,25,1,29,1) +hasLocation(#20463,#20464) +stmtContainers(#20463,#20001) +#20465=* +exprs(#20465,44,#20463,0,"a?.b && c?.d") +#20466=@"loc,{#10000},25,5,25,16" +locations_default(#20466,#10000,25,5,25,16) +hasLocation(#20465,#20466) +enclosingStmt(#20465,#20463) +exprContainers(#20465,#20001) #20467=* -tokeninfo(#20467,8,#20001,124,")") -#20468=@"loc,{#10000},25,17,25,17" -locations_default(#20468,#10000,25,17,25,17) +exprs(#20467,14,#20465,0,"a?.b") +#20468=@"loc,{#10000},25,5,25,8" +locations_default(#20468,#10000,25,5,25,8) hasLocation(#20467,#20468) +enclosingStmt(#20467,#20463) +exprContainers(#20467,#20001) #20469=* -tokeninfo(#20469,8,#20001,125,"{") -#20470=@"loc,{#10000},25,19,25,19" -locations_default(#20470,#10000,25,19,25,19) -hasLocation(#20469,#20470) +exprs(#20469,79,#20467,0,"a") +hasLocation(#20469,#20293) +enclosingStmt(#20469,#20463) +exprContainers(#20469,#20001) +literals("a","a",#20469) +bind(#20469,#20338) +#20470=* +exprs(#20470,0,#20467,1,"b") +hasLocation(#20470,#20297) +enclosingStmt(#20470,#20463) +exprContainers(#20470,#20001) +literals("b","b",#20470) +isOptionalChaining(#20467) #20471=* -tokeninfo(#20471,2,#20001,126,"true") -hasLocation(#20471,#20204) -#20472=* -tokeninfo(#20472,8,#20001,127,";") -#20473=@"loc,{#10000},26,9,26,9" -locations_default(#20473,#10000,26,9,26,9) -hasLocation(#20472,#20473) -#20474=* -tokeninfo(#20474,8,#20001,128,"}") -#20475=@"loc,{#10000},27,1,27,1" -locations_default(#20475,#10000,27,1,27,1) -hasLocation(#20474,#20475) +exprs(#20471,14,#20465,1,"c?.d") +#20472=@"loc,{#10000},25,13,25,16" +locations_default(#20472,#10000,25,13,25,16) +hasLocation(#20471,#20472) +enclosingStmt(#20471,#20463) +exprContainers(#20471,#20001) +#20473=* +exprs(#20473,79,#20471,0,"c") +hasLocation(#20473,#20301) +enclosingStmt(#20473,#20463) +exprContainers(#20473,#20001) +literals("c","c",#20473) +#20474=@"var;{c};{#20000}" +variables(#20474,"c",#20000) +bind(#20473,#20474) +#20475=* +exprs(#20475,0,#20471,1,"d") +hasLocation(#20475,#20305) +enclosingStmt(#20475,#20463) +exprContainers(#20475,#20001) +literals("d","d",#20475) +isOptionalChaining(#20471) #20476=* -tokeninfo(#20476,7,#20001,129,"else") -#20477=@"loc,{#10000},27,3,27,6" -locations_default(#20477,#10000,27,3,27,6) +stmts(#20476,1,#20463,1,"{\n true;\n}") +#20477=@"loc,{#10000},25,19,27,1" +locations_default(#20477,#10000,25,19,27,1) hasLocation(#20476,#20477) +stmtContainers(#20476,#20001) #20478=* -tokeninfo(#20478,8,#20001,130,"{") -#20479=@"loc,{#10000},27,8,27,8" -locations_default(#20479,#10000,27,8,27,8) +stmts(#20478,2,#20476,0,"true;") +#20479=@"loc,{#10000},26,5,26,9" +locations_default(#20479,#10000,26,5,26,9) hasLocation(#20478,#20479) +stmtContainers(#20478,#20001) #20480=* -tokeninfo(#20480,2,#20001,131,"false") -hasLocation(#20480,#20210) +exprs(#20480,2,#20478,0,"true") +hasLocation(#20480,#20311) +enclosingStmt(#20480,#20478) +exprContainers(#20480,#20001) +literals("true","true",#20480) #20481=* -tokeninfo(#20481,8,#20001,132,";") -#20482=@"loc,{#10000},28,10,28,10" -locations_default(#20482,#10000,28,10,28,10) +stmts(#20481,1,#20463,2,"{\n false;\n}") +#20482=@"loc,{#10000},27,8,29,1" +locations_default(#20482,#10000,27,8,29,1) hasLocation(#20481,#20482) +stmtContainers(#20481,#20001) #20483=* -tokeninfo(#20483,8,#20001,133,"}") -hasLocation(#20483,#20262) -#20484=* -tokeninfo(#20484,0,#20001,134,"") -#20485=@"loc,{#10000},30,1,30,0" -locations_default(#20485,#10000,30,1,30,0) -hasLocation(#20484,#20485) +stmts(#20483,2,#20481,0,"false;") +#20484=@"loc,{#10000},28,5,28,10" +locations_default(#20484,#10000,28,5,28,10) +hasLocation(#20483,#20484) +stmtContainers(#20483,#20001) +#20485=* +exprs(#20485,2,#20483,0,"false") +hasLocation(#20485,#20321) +enclosingStmt(#20485,#20483) +exprContainers(#20485,#20001) +literals("false","false",#20485) #20486=* entry_cfg_node(#20486,#20001) #20487=@"loc,{#10000},1,1,1,0" @@ -1546,162 +1546,162 @@ locations_default(#20487,#10000,1,1,1,0) hasLocation(#20486,#20487) #20488=* exit_cfg_node(#20488,#20001) -hasLocation(#20488,#20485) -successor(#20182,#20184) -successor(#20184,#20188) -successor(#20190,#20186) -successor(#20188,#20190) +hasLocation(#20488,#20326) +successor(#20463,#20465) +successor(#20465,#20469) +successor(#20470,#20467) +successor(#20469,#20470) #20489=* -guard_node(#20489,1,#20186) -hasLocation(#20489,#20187) -successor(#20489,#20194) +guard_node(#20489,1,#20467) +hasLocation(#20489,#20468) +successor(#20489,#20473) #20490=* -guard_node(#20490,0,#20186) -hasLocation(#20490,#20187) -successor(#20490,#20205) -successor(#20186,#20489) -successor(#20186,#20490) -successor(#20188,#20205) -successor(#20197,#20192) -successor(#20194,#20197) +guard_node(#20490,0,#20467) +hasLocation(#20490,#20468) +successor(#20490,#20481) +successor(#20467,#20489) +successor(#20467,#20490) +successor(#20469,#20481) +successor(#20475,#20471) +successor(#20473,#20475) #20491=* -guard_node(#20491,1,#20192) -hasLocation(#20491,#20193) -successor(#20491,#20199) +guard_node(#20491,1,#20471) +hasLocation(#20491,#20472) +successor(#20491,#20476) #20492=* -guard_node(#20492,0,#20192) -hasLocation(#20492,#20193) -successor(#20492,#20205) -successor(#20192,#20491) -successor(#20192,#20492) -successor(#20194,#20205) -successor(#20199,#20201) -successor(#20201,#20203) -successor(#20203,#20488) -successor(#20205,#20207) -successor(#20207,#20209) -successor(#20209,#20488) -successor(#20160,#20166) -successor(#20168,#20164) -successor(#20166,#20168) -successor(#20164,#20162) -successor(#20166,#20162) +guard_node(#20492,0,#20471) +hasLocation(#20492,#20472) +successor(#20492,#20481) +successor(#20471,#20491) +successor(#20471,#20492) +successor(#20473,#20481) +successor(#20476,#20478) +successor(#20478,#20480) +successor(#20480,#20488) +successor(#20481,#20483) +successor(#20483,#20485) +successor(#20485,#20488) +successor(#20445,#20451) +successor(#20452,#20449) +successor(#20451,#20452) +successor(#20449,#20447) +successor(#20451,#20447) #20493=* -guard_node(#20493,0,#20164) -hasLocation(#20493,#20165) -successor(#20493,#20170) +guard_node(#20493,0,#20449) +hasLocation(#20493,#20450) +successor(#20493,#20453) #20494=* -guard_node(#20494,1,#20164) -hasLocation(#20494,#20165) -successor(#20494,#20176) -successor(#20162,#20493) -successor(#20162,#20494) -successor(#20170,#20172) -successor(#20172,#20174) -successor(#20174,#20182) -successor(#20176,#20178) -successor(#20178,#20180) -successor(#20180,#20182) -successor(#20140,#20144) -successor(#20146,#20142) -successor(#20144,#20146) +guard_node(#20494,1,#20449) +hasLocation(#20494,#20450) +successor(#20494,#20458) +successor(#20447,#20493) +successor(#20447,#20494) +successor(#20453,#20455) +successor(#20455,#20457) +successor(#20457,#20463) +successor(#20458,#20460) +successor(#20460,#20462) +successor(#20462,#20463) +successor(#20429,#20433) +successor(#20434,#20431) +successor(#20433,#20434) #20495=* -guard_node(#20495,1,#20142) -hasLocation(#20495,#20143) -successor(#20495,#20148) +guard_node(#20495,1,#20431) +hasLocation(#20495,#20432) +successor(#20495,#20435) #20496=* -guard_node(#20496,0,#20142) -hasLocation(#20496,#20143) -successor(#20496,#20154) -successor(#20142,#20495) -successor(#20142,#20496) -successor(#20144,#20154) -successor(#20148,#20150) -successor(#20150,#20152) -successor(#20152,#20160) -successor(#20154,#20156) -successor(#20156,#20158) -successor(#20158,#20160) -successor(#20108,#20120) -successor(#20138,#20110) -successor(#20136,#20114) -successor(#20134,#20122) -successor(#20132,#20126) -successor(#20130,#20128) -successor(#20128,#20132) -successor(#20130,#20116) -successor(#20126,#20124) -successor(#20124,#20134) -successor(#20126,#20116) -successor(#20122,#20116) -successor(#20120,#20118) -successor(#20118,#20130) -successor(#20120,#20140) -successor(#20116,#20136) -successor(#20114,#20112) -successor(#20112,#20138) -successor(#20114,#20140) -successor(#20110,#20140) -successor(#20083,#20091) -successor(#20106,#20085) -successor(#20104,#20087) -successor(#20102,#20093) -successor(#20100,#20095) -successor(#20097,#20100) -successor(#20095,#20102) -successor(#20097,#20089) -successor(#20093,#20089) -successor(#20095,#20089) -successor(#20091,#20097) -successor(#20089,#20104) -successor(#20091,#20108) -successor(#20087,#20106) -successor(#20085,#20108) -successor(#20087,#20108) -successor(#20065,#20069) -successor(#20081,#20067) -successor(#20069,#20075) -successor(#20079,#20071) -successor(#20077,#20073) -successor(#20075,#20077) -successor(#20073,#20079) -successor(#20075,#20081) -successor(#20071,#20081) -successor(#20067,#20083) -successor(#20051,#20055) -successor(#20063,#20053) -successor(#20055,#20059) -successor(#20061,#20057) -successor(#20059,#20061) -successor(#20057,#20063) -successor(#20059,#20063) -successor(#20053,#20065) -successor(#20027,#20039) -successor(#20049,#20029) -successor(#20047,#20031) -successor(#20045,#20033) -successor(#20043,#20035) -successor(#20041,#20037) -successor(#20039,#20041) -successor(#20037,#20043) -successor(#20039,#20051) -successor(#20035,#20045) -successor(#20033,#20047) -successor(#20031,#20049) -successor(#20033,#20051) -successor(#20029,#20051) -successor(#20003,#20013) -successor(#20025,#20005) -successor(#20022,#20020) -successor(#20020,#20007) -successor(#20018,#20009) -successor(#20016,#20011) -successor(#20013,#20016) -successor(#20011,#20018) -successor(#20013,#20027) -successor(#20009,#20022) -successor(#20007,#20025) -successor(#20005,#20027) -successor(#20486,#20003) +guard_node(#20496,0,#20431) +hasLocation(#20496,#20432) +successor(#20496,#20440) +successor(#20431,#20495) +successor(#20431,#20496) +successor(#20433,#20440) +successor(#20435,#20437) +successor(#20437,#20439) +successor(#20439,#20445) +successor(#20440,#20442) +successor(#20442,#20444) +successor(#20444,#20445) +successor(#20404,#20415) +successor(#20428,#20405) +successor(#20427,#20409) +successor(#20426,#20416) +successor(#20425,#20420) +successor(#20424,#20422) +successor(#20422,#20425) +successor(#20424,#20411) +successor(#20420,#20418) +successor(#20418,#20426) +successor(#20420,#20411) +successor(#20416,#20411) +successor(#20415,#20413) +successor(#20413,#20424) +successor(#20415,#20429) +successor(#20411,#20427) +successor(#20409,#20407) +successor(#20407,#20428) +successor(#20409,#20429) +successor(#20405,#20429) +successor(#20386,#20393) +successor(#20403,#20387) +successor(#20402,#20389) +successor(#20401,#20394) +successor(#20400,#20396) +successor(#20398,#20400) +successor(#20396,#20401) +successor(#20398,#20391) +successor(#20394,#20391) +successor(#20396,#20391) +successor(#20393,#20398) +successor(#20391,#20402) +successor(#20393,#20404) +successor(#20389,#20403) +successor(#20387,#20404) +successor(#20389,#20404) +successor(#20373,#20376) +successor(#20385,#20374) +successor(#20376,#20382) +successor(#20384,#20378) +successor(#20383,#20380) +successor(#20382,#20383) +successor(#20380,#20384) +successor(#20382,#20385) +successor(#20378,#20385) +successor(#20374,#20386) +successor(#20363,#20366) +successor(#20372,#20364) +successor(#20366,#20370) +successor(#20371,#20368) +successor(#20370,#20371) +successor(#20368,#20372) +successor(#20370,#20372) +successor(#20364,#20373) +successor(#20346,#20357) +successor(#20362,#20347) +successor(#20361,#20349) +successor(#20360,#20351) +successor(#20359,#20353) +successor(#20358,#20355) +successor(#20357,#20358) +successor(#20355,#20359) +successor(#20357,#20363) +successor(#20353,#20360) +successor(#20351,#20361) +successor(#20349,#20362) +successor(#20351,#20363) +successor(#20347,#20363) +successor(#20328,#20337) +successor(#20345,#20329) +successor(#20343,#20341) +successor(#20341,#20331) +successor(#20340,#20333) +successor(#20339,#20335) +successor(#20337,#20339) +successor(#20335,#20340) +successor(#20337,#20346) +successor(#20333,#20343) +successor(#20331,#20345) +successor(#20329,#20346) +successor(#20486,#20328) numlines(#10000,29,21,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/excludes/output/trap/a.js.trap b/javascript/extractor/tests/excludes/output/trap/a.js.trap index 3584a025695..45aafe9620b 100644 --- a/javascript/extractor/tests/excludes/output/trap/a.js.trap +++ b/javascript/extractor/tests/excludes/output/trap/a.js.trap @@ -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,2" -locations_default(#20002,#10000,1,1,1,2) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"42") -hasLocation(#20003,#20002) -stmtContainers(#20003,#20001) -#20004=* -exprs(#20004,3,#20003,0,"42") -hasLocation(#20004,#20002) -enclosingStmt(#20004,#20003) -exprContainers(#20004,#20001) -literals("42","42",#20004) -#20005=* -lines(#20005,#20001,"42","") -hasLocation(#20005,#20002) +#20002=* +lines(#20002,#20001,"42","") +#20003=@"loc,{#10000},1,1,1,2" +locations_default(#20003,#10000,1,1,1,2) +hasLocation(#20002,#20003) numlines(#20001,1,1,0) -#20006=* -tokeninfo(#20006,3,#20001,0,"42") -hasLocation(#20006,#20002) +#20004=* +tokeninfo(#20004,3,#20001,0,"42") +hasLocation(#20004,#20003) +#20005=* +tokeninfo(#20005,0,#20001,1,"") +#20006=@"loc,{#10000},1,3,1,2" +locations_default(#20006,#10000,1,3,1,2) +hasLocation(#20005,#20006) +toplevels(#20001,0) +hasLocation(#20001,#20003) #20007=* -tokeninfo(#20007,0,#20001,1,"") -#20008=@"loc,{#10000},1,3,1,2" -locations_default(#20008,#10000,1,3,1,2) -hasLocation(#20007,#20008) +stmts(#20007,2,#20001,0,"42") +hasLocation(#20007,#20003) +stmtContainers(#20007,#20001) +#20008=* +exprs(#20008,3,#20007,0,"42") +hasLocation(#20008,#20003) +enclosingStmt(#20008,#20007) +exprContainers(#20008,#20001) +literals("42","42",#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") diff --git a/javascript/extractor/tests/exprs/output/trap/assignment.js.trap b/javascript/extractor/tests/exprs/output/trap/assignment.js.trap index d191864dadc..024ccacc3ca 100644 --- a/javascript/extractor/tests/exprs/output/trap/assignment.js.trap +++ b/javascript/extractor/tests/exprs/output/trap/assignment.js.trap @@ -9,620 +9,620 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,12,7" -locations_default(#20002,#10000,1,1,12,7) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"a = 23;") -#20004=@"loc,{#10000},1,1,1,7" -locations_default(#20004,#10000,1,1,1,7) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,47,#20003,0,"a = 23") -#20006=@"loc,{#10000},1,1,1,6" -locations_default(#20006,#10000,1,1,1,6) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -#20007=* -exprs(#20007,79,#20005,0,"a") -#20008=@"loc,{#10000},1,1,1,1" -locations_default(#20008,#10000,1,1,1,1) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20003) -exprContainers(#20007,#20001) -literals("a","a",#20007) -#20009=@"var;{a};{#20000}" -variables(#20009,"a",#20000) -bind(#20007,#20009) +#20002=* +lines(#20002,#20001,"a = 23;"," +") +#20003=@"loc,{#10000},1,1,1,7" +locations_default(#20003,#10000,1,1,1,7) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"a += 19;"," +") +#20005=@"loc,{#10000},2,1,2,8" +locations_default(#20005,#10000,2,1,2,8) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"a -= 9;"," +") +#20007=@"loc,{#10000},3,1,3,7" +locations_default(#20007,#10000,3,1,3,7) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001,"a *= b;"," +") +#20009=@"loc,{#10000},4,1,4,7" +locations_default(#20009,#10000,4,1,4,7) +hasLocation(#20008,#20009) #20010=* -exprs(#20010,3,#20005,1,"23") -#20011=@"loc,{#10000},1,5,1,6" -locations_default(#20011,#10000,1,5,1,6) +lines(#20010,#20001,"a /= 2;"," +") +#20011=@"loc,{#10000},5,1,5,7" +locations_default(#20011,#10000,5,1,5,7) hasLocation(#20010,#20011) -enclosingStmt(#20010,#20003) -exprContainers(#20010,#20001) -literals("23","23",#20010) #20012=* -stmts(#20012,2,#20001,1,"a += 19;") -#20013=@"loc,{#10000},2,1,2,8" -locations_default(#20013,#10000,2,1,2,8) +lines(#20012,#20001,"a %= 2;"," +") +#20013=@"loc,{#10000},6,1,6,7" +locations_default(#20013,#10000,6,1,6,7) hasLocation(#20012,#20013) -stmtContainers(#20012,#20001) #20014=* -exprs(#20014,48,#20012,0,"a += 19") -#20015=@"loc,{#10000},2,1,2,7" -locations_default(#20015,#10000,2,1,2,7) +lines(#20014,#20001,"a <<= 8;"," +") +#20015=@"loc,{#10000},7,1,7,8" +locations_default(#20015,#10000,7,1,7,8) hasLocation(#20014,#20015) -enclosingStmt(#20014,#20012) -exprContainers(#20014,#20001) #20016=* -exprs(#20016,79,#20014,0,"a") -#20017=@"loc,{#10000},2,1,2,1" -locations_default(#20017,#10000,2,1,2,1) +lines(#20016,#20001,"a >>= 7;"," +") +#20017=@"loc,{#10000},8,1,8,8" +locations_default(#20017,#10000,8,1,8,8) hasLocation(#20016,#20017) -enclosingStmt(#20016,#20012) -exprContainers(#20016,#20001) -literals("a","a",#20016) -bind(#20016,#20009) #20018=* -exprs(#20018,3,#20014,1,"19") -#20019=@"loc,{#10000},2,6,2,7" -locations_default(#20019,#10000,2,6,2,7) +lines(#20018,#20001,"a >>>= 2;"," +") +#20019=@"loc,{#10000},9,1,9,9" +locations_default(#20019,#10000,9,1,9,9) hasLocation(#20018,#20019) -enclosingStmt(#20018,#20012) -exprContainers(#20018,#20001) -literals("19","19",#20018) #20020=* -stmts(#20020,2,#20001,2,"a -= 9;") -#20021=@"loc,{#10000},3,1,3,7" -locations_default(#20021,#10000,3,1,3,7) +lines(#20020,#20001,"a |= 2;"," +") +#20021=@"loc,{#10000},10,1,10,7" +locations_default(#20021,#10000,10,1,10,7) hasLocation(#20020,#20021) -stmtContainers(#20020,#20001) #20022=* -exprs(#20022,49,#20020,0,"a -= 9") -#20023=@"loc,{#10000},3,1,3,6" -locations_default(#20023,#10000,3,1,3,6) +lines(#20022,#20001,"a ^= 1;"," +") +#20023=@"loc,{#10000},11,1,11,7" +locations_default(#20023,#10000,11,1,11,7) hasLocation(#20022,#20023) -enclosingStmt(#20022,#20020) -exprContainers(#20022,#20001) #20024=* -exprs(#20024,79,#20022,0,"a") -#20025=@"loc,{#10000},3,1,3,1" -locations_default(#20025,#10000,3,1,3,1) +lines(#20024,#20001,"a &= 3;","") +#20025=@"loc,{#10000},12,1,12,7" +locations_default(#20025,#10000,12,1,12,7) hasLocation(#20024,#20025) -enclosingStmt(#20024,#20020) -exprContainers(#20024,#20001) -literals("a","a",#20024) -bind(#20024,#20009) -#20026=* -exprs(#20026,3,#20022,1,"9") -#20027=@"loc,{#10000},3,6,3,6" -locations_default(#20027,#10000,3,6,3,6) -hasLocation(#20026,#20027) -enclosingStmt(#20026,#20020) -exprContainers(#20026,#20001) -literals("9","9",#20026) -#20028=* -stmts(#20028,2,#20001,3,"a *= b;") -#20029=@"loc,{#10000},4,1,4,7" -locations_default(#20029,#10000,4,1,4,7) -hasLocation(#20028,#20029) -stmtContainers(#20028,#20001) -#20030=* -exprs(#20030,50,#20028,0,"a *= b") -#20031=@"loc,{#10000},4,1,4,6" -locations_default(#20031,#10000,4,1,4,6) -hasLocation(#20030,#20031) -enclosingStmt(#20030,#20028) -exprContainers(#20030,#20001) -#20032=* -exprs(#20032,79,#20030,0,"a") -#20033=@"loc,{#10000},4,1,4,1" -locations_default(#20033,#10000,4,1,4,1) -hasLocation(#20032,#20033) -enclosingStmt(#20032,#20028) -exprContainers(#20032,#20001) -literals("a","a",#20032) -bind(#20032,#20009) -#20034=* -exprs(#20034,79,#20030,1,"b") -#20035=@"loc,{#10000},4,6,4,6" -locations_default(#20035,#10000,4,6,4,6) -hasLocation(#20034,#20035) -enclosingStmt(#20034,#20028) -exprContainers(#20034,#20001) -literals("b","b",#20034) -#20036=@"var;{b};{#20000}" -variables(#20036,"b",#20000) -bind(#20034,#20036) -#20037=* -stmts(#20037,2,#20001,4,"a /= 2;") -#20038=@"loc,{#10000},5,1,5,7" -locations_default(#20038,#10000,5,1,5,7) -hasLocation(#20037,#20038) -stmtContainers(#20037,#20001) -#20039=* -exprs(#20039,51,#20037,0,"a /= 2") -#20040=@"loc,{#10000},5,1,5,6" -locations_default(#20040,#10000,5,1,5,6) -hasLocation(#20039,#20040) -enclosingStmt(#20039,#20037) -exprContainers(#20039,#20001) -#20041=* -exprs(#20041,79,#20039,0,"a") -#20042=@"loc,{#10000},5,1,5,1" -locations_default(#20042,#10000,5,1,5,1) -hasLocation(#20041,#20042) -enclosingStmt(#20041,#20037) -exprContainers(#20041,#20001) -literals("a","a",#20041) -bind(#20041,#20009) -#20043=* -exprs(#20043,3,#20039,1,"2") -#20044=@"loc,{#10000},5,6,5,6" -locations_default(#20044,#10000,5,6,5,6) -hasLocation(#20043,#20044) -enclosingStmt(#20043,#20037) -exprContainers(#20043,#20001) -literals("2","2",#20043) -#20045=* -stmts(#20045,2,#20001,5,"a %= 2;") -#20046=@"loc,{#10000},6,1,6,7" -locations_default(#20046,#10000,6,1,6,7) -hasLocation(#20045,#20046) -stmtContainers(#20045,#20001) -#20047=* -exprs(#20047,52,#20045,0,"a %= 2") -#20048=@"loc,{#10000},6,1,6,6" -locations_default(#20048,#10000,6,1,6,6) -hasLocation(#20047,#20048) -enclosingStmt(#20047,#20045) -exprContainers(#20047,#20001) -#20049=* -exprs(#20049,79,#20047,0,"a") -#20050=@"loc,{#10000},6,1,6,1" -locations_default(#20050,#10000,6,1,6,1) -hasLocation(#20049,#20050) -enclosingStmt(#20049,#20045) -exprContainers(#20049,#20001) -literals("a","a",#20049) -bind(#20049,#20009) -#20051=* -exprs(#20051,3,#20047,1,"2") -#20052=@"loc,{#10000},6,6,6,6" -locations_default(#20052,#10000,6,6,6,6) -hasLocation(#20051,#20052) -enclosingStmt(#20051,#20045) -exprContainers(#20051,#20001) -literals("2","2",#20051) -#20053=* -stmts(#20053,2,#20001,6,"a <<= 8;") -#20054=@"loc,{#10000},7,1,7,8" -locations_default(#20054,#10000,7,1,7,8) -hasLocation(#20053,#20054) -stmtContainers(#20053,#20001) -#20055=* -exprs(#20055,53,#20053,0,"a <<= 8") -#20056=@"loc,{#10000},7,1,7,7" -locations_default(#20056,#10000,7,1,7,7) -hasLocation(#20055,#20056) -enclosingStmt(#20055,#20053) -exprContainers(#20055,#20001) -#20057=* -exprs(#20057,79,#20055,0,"a") -#20058=@"loc,{#10000},7,1,7,1" -locations_default(#20058,#10000,7,1,7,1) -hasLocation(#20057,#20058) -enclosingStmt(#20057,#20053) -exprContainers(#20057,#20001) -literals("a","a",#20057) -bind(#20057,#20009) -#20059=* -exprs(#20059,3,#20055,1,"8") -#20060=@"loc,{#10000},7,7,7,7" -locations_default(#20060,#10000,7,7,7,7) -hasLocation(#20059,#20060) -enclosingStmt(#20059,#20053) -exprContainers(#20059,#20001) -literals("8","8",#20059) -#20061=* -stmts(#20061,2,#20001,7,"a >>= 7;") -#20062=@"loc,{#10000},8,1,8,8" -locations_default(#20062,#10000,8,1,8,8) -hasLocation(#20061,#20062) -stmtContainers(#20061,#20001) -#20063=* -exprs(#20063,54,#20061,0,"a >>= 7") -#20064=@"loc,{#10000},8,1,8,7" -locations_default(#20064,#10000,8,1,8,7) -hasLocation(#20063,#20064) -enclosingStmt(#20063,#20061) -exprContainers(#20063,#20001) -#20065=* -exprs(#20065,79,#20063,0,"a") -#20066=@"loc,{#10000},8,1,8,1" -locations_default(#20066,#10000,8,1,8,1) -hasLocation(#20065,#20066) -enclosingStmt(#20065,#20061) -exprContainers(#20065,#20001) -literals("a","a",#20065) -bind(#20065,#20009) -#20067=* -exprs(#20067,3,#20063,1,"7") -#20068=@"loc,{#10000},8,7,8,7" -locations_default(#20068,#10000,8,7,8,7) -hasLocation(#20067,#20068) -enclosingStmt(#20067,#20061) -exprContainers(#20067,#20001) -literals("7","7",#20067) -#20069=* -stmts(#20069,2,#20001,8,"a >>>= 2;") -#20070=@"loc,{#10000},9,1,9,9" -locations_default(#20070,#10000,9,1,9,9) -hasLocation(#20069,#20070) -stmtContainers(#20069,#20001) -#20071=* -exprs(#20071,55,#20069,0,"a >>>= 2") -#20072=@"loc,{#10000},9,1,9,8" -locations_default(#20072,#10000,9,1,9,8) -hasLocation(#20071,#20072) -enclosingStmt(#20071,#20069) -exprContainers(#20071,#20001) -#20073=* -exprs(#20073,79,#20071,0,"a") -#20074=@"loc,{#10000},9,1,9,1" -locations_default(#20074,#10000,9,1,9,1) -hasLocation(#20073,#20074) -enclosingStmt(#20073,#20069) -exprContainers(#20073,#20001) -literals("a","a",#20073) -bind(#20073,#20009) -#20075=* -exprs(#20075,3,#20071,1,"2") -#20076=@"loc,{#10000},9,8,9,8" -locations_default(#20076,#10000,9,8,9,8) -hasLocation(#20075,#20076) -enclosingStmt(#20075,#20069) -exprContainers(#20075,#20001) -literals("2","2",#20075) -#20077=* -stmts(#20077,2,#20001,9,"a |= 2;") -#20078=@"loc,{#10000},10,1,10,7" -locations_default(#20078,#10000,10,1,10,7) -hasLocation(#20077,#20078) -stmtContainers(#20077,#20001) -#20079=* -exprs(#20079,56,#20077,0,"a |= 2") -#20080=@"loc,{#10000},10,1,10,6" -locations_default(#20080,#10000,10,1,10,6) -hasLocation(#20079,#20080) -enclosingStmt(#20079,#20077) -exprContainers(#20079,#20001) -#20081=* -exprs(#20081,79,#20079,0,"a") -#20082=@"loc,{#10000},10,1,10,1" -locations_default(#20082,#10000,10,1,10,1) -hasLocation(#20081,#20082) -enclosingStmt(#20081,#20077) -exprContainers(#20081,#20001) -literals("a","a",#20081) -bind(#20081,#20009) -#20083=* -exprs(#20083,3,#20079,1,"2") -#20084=@"loc,{#10000},10,6,10,6" -locations_default(#20084,#10000,10,6,10,6) -hasLocation(#20083,#20084) -enclosingStmt(#20083,#20077) -exprContainers(#20083,#20001) -literals("2","2",#20083) -#20085=* -stmts(#20085,2,#20001,10,"a ^= 1;") -#20086=@"loc,{#10000},11,1,11,7" -locations_default(#20086,#10000,11,1,11,7) -hasLocation(#20085,#20086) -stmtContainers(#20085,#20001) -#20087=* -exprs(#20087,57,#20085,0,"a ^= 1") -#20088=@"loc,{#10000},11,1,11,6" -locations_default(#20088,#10000,11,1,11,6) -hasLocation(#20087,#20088) -enclosingStmt(#20087,#20085) -exprContainers(#20087,#20001) -#20089=* -exprs(#20089,79,#20087,0,"a") -#20090=@"loc,{#10000},11,1,11,1" -locations_default(#20090,#10000,11,1,11,1) -hasLocation(#20089,#20090) -enclosingStmt(#20089,#20085) -exprContainers(#20089,#20001) -literals("a","a",#20089) -bind(#20089,#20009) -#20091=* -exprs(#20091,3,#20087,1,"1") -#20092=@"loc,{#10000},11,6,11,6" -locations_default(#20092,#10000,11,6,11,6) -hasLocation(#20091,#20092) -enclosingStmt(#20091,#20085) -exprContainers(#20091,#20001) -literals("1","1",#20091) -#20093=* -stmts(#20093,2,#20001,11,"a &= 3;") -#20094=@"loc,{#10000},12,1,12,7" -locations_default(#20094,#10000,12,1,12,7) -hasLocation(#20093,#20094) -stmtContainers(#20093,#20001) -#20095=* -exprs(#20095,58,#20093,0,"a &= 3") -#20096=@"loc,{#10000},12,1,12,6" -locations_default(#20096,#10000,12,1,12,6) -hasLocation(#20095,#20096) -enclosingStmt(#20095,#20093) -exprContainers(#20095,#20001) -#20097=* -exprs(#20097,79,#20095,0,"a") -#20098=@"loc,{#10000},12,1,12,1" -locations_default(#20098,#10000,12,1,12,1) -hasLocation(#20097,#20098) -enclosingStmt(#20097,#20093) -exprContainers(#20097,#20001) -literals("a","a",#20097) -bind(#20097,#20009) -#20099=* -exprs(#20099,3,#20095,1,"3") -#20100=@"loc,{#10000},12,6,12,6" -locations_default(#20100,#10000,12,6,12,6) -hasLocation(#20099,#20100) -enclosingStmt(#20099,#20093) -exprContainers(#20099,#20001) -literals("3","3",#20099) -#20101=* -lines(#20101,#20001,"a = 23;"," -") -hasLocation(#20101,#20004) -#20102=* -lines(#20102,#20001,"a += 19;"," -") -hasLocation(#20102,#20013) -#20103=* -lines(#20103,#20001,"a -= 9;"," -") -hasLocation(#20103,#20021) -#20104=* -lines(#20104,#20001,"a *= b;"," -") -hasLocation(#20104,#20029) -#20105=* -lines(#20105,#20001,"a /= 2;"," -") -hasLocation(#20105,#20038) -#20106=* -lines(#20106,#20001,"a %= 2;"," -") -hasLocation(#20106,#20046) -#20107=* -lines(#20107,#20001,"a <<= 8;"," -") -hasLocation(#20107,#20054) -#20108=* -lines(#20108,#20001,"a >>= 7;"," -") -hasLocation(#20108,#20062) -#20109=* -lines(#20109,#20001,"a >>>= 2;"," -") -hasLocation(#20109,#20070) -#20110=* -lines(#20110,#20001,"a |= 2;"," -") -hasLocation(#20110,#20078) -#20111=* -lines(#20111,#20001,"a ^= 1;"," -") -hasLocation(#20111,#20086) -#20112=* -lines(#20112,#20001,"a &= 3;","") -hasLocation(#20112,#20094) numlines(#20001,12,12,0) -#20113=* -tokeninfo(#20113,6,#20001,0,"a") -hasLocation(#20113,#20008) +#20026=* +tokeninfo(#20026,6,#20001,0,"a") +#20027=@"loc,{#10000},1,1,1,1" +locations_default(#20027,#10000,1,1,1,1) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,1,"=") +#20029=@"loc,{#10000},1,3,1,3" +locations_default(#20029,#10000,1,3,1,3) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,3,#20001,2,"23") +#20031=@"loc,{#10000},1,5,1,6" +locations_default(#20031,#10000,1,5,1,6) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,3,";") +#20033=@"loc,{#10000},1,7,1,7" +locations_default(#20033,#10000,1,7,1,7) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,6,#20001,4,"a") +#20035=@"loc,{#10000},2,1,2,1" +locations_default(#20035,#10000,2,1,2,1) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,5,"+=") +#20037=@"loc,{#10000},2,3,2,4" +locations_default(#20037,#10000,2,3,2,4) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,3,#20001,6,"19") +#20039=@"loc,{#10000},2,6,2,7" +locations_default(#20039,#10000,2,6,2,7) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,7,";") +#20041=@"loc,{#10000},2,8,2,8" +locations_default(#20041,#10000,2,8,2,8) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,6,#20001,8,"a") +#20043=@"loc,{#10000},3,1,3,1" +locations_default(#20043,#10000,3,1,3,1) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,9,"-=") +#20045=@"loc,{#10000},3,3,3,4" +locations_default(#20045,#10000,3,3,3,4) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,3,#20001,10,"9") +#20047=@"loc,{#10000},3,6,3,6" +locations_default(#20047,#10000,3,6,3,6) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,8,#20001,11,";") +#20049=@"loc,{#10000},3,7,3,7" +locations_default(#20049,#10000,3,7,3,7) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,6,#20001,12,"a") +#20051=@"loc,{#10000},4,1,4,1" +locations_default(#20051,#10000,4,1,4,1) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,8,#20001,13,"*=") +#20053=@"loc,{#10000},4,3,4,4" +locations_default(#20053,#10000,4,3,4,4) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,6,#20001,14,"b") +#20055=@"loc,{#10000},4,6,4,6" +locations_default(#20055,#10000,4,6,4,6) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,8,#20001,15,";") +#20057=@"loc,{#10000},4,7,4,7" +locations_default(#20057,#10000,4,7,4,7) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,6,#20001,16,"a") +#20059=@"loc,{#10000},5,1,5,1" +locations_default(#20059,#10000,5,1,5,1) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,8,#20001,17,"/=") +#20061=@"loc,{#10000},5,3,5,4" +locations_default(#20061,#10000,5,3,5,4) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,3,#20001,18,"2") +#20063=@"loc,{#10000},5,6,5,6" +locations_default(#20063,#10000,5,6,5,6) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,8,#20001,19,";") +#20065=@"loc,{#10000},5,7,5,7" +locations_default(#20065,#10000,5,7,5,7) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,6,#20001,20,"a") +#20067=@"loc,{#10000},6,1,6,1" +locations_default(#20067,#10000,6,1,6,1) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,8,#20001,21,"%=") +#20069=@"loc,{#10000},6,3,6,4" +locations_default(#20069,#10000,6,3,6,4) +hasLocation(#20068,#20069) +#20070=* +tokeninfo(#20070,3,#20001,22,"2") +#20071=@"loc,{#10000},6,6,6,6" +locations_default(#20071,#10000,6,6,6,6) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,8,#20001,23,";") +#20073=@"loc,{#10000},6,7,6,7" +locations_default(#20073,#10000,6,7,6,7) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,6,#20001,24,"a") +#20075=@"loc,{#10000},7,1,7,1" +locations_default(#20075,#10000,7,1,7,1) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,8,#20001,25,"<<=") +#20077=@"loc,{#10000},7,3,7,5" +locations_default(#20077,#10000,7,3,7,5) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,3,#20001,26,"8") +#20079=@"loc,{#10000},7,7,7,7" +locations_default(#20079,#10000,7,7,7,7) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,8,#20001,27,";") +#20081=@"loc,{#10000},7,8,7,8" +locations_default(#20081,#10000,7,8,7,8) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,6,#20001,28,"a") +#20083=@"loc,{#10000},8,1,8,1" +locations_default(#20083,#10000,8,1,8,1) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,8,#20001,29,">>=") +#20085=@"loc,{#10000},8,3,8,5" +locations_default(#20085,#10000,8,3,8,5) +hasLocation(#20084,#20085) +#20086=* +tokeninfo(#20086,3,#20001,30,"7") +#20087=@"loc,{#10000},8,7,8,7" +locations_default(#20087,#10000,8,7,8,7) +hasLocation(#20086,#20087) +#20088=* +tokeninfo(#20088,8,#20001,31,";") +#20089=@"loc,{#10000},8,8,8,8" +locations_default(#20089,#10000,8,8,8,8) +hasLocation(#20088,#20089) +#20090=* +tokeninfo(#20090,6,#20001,32,"a") +#20091=@"loc,{#10000},9,1,9,1" +locations_default(#20091,#10000,9,1,9,1) +hasLocation(#20090,#20091) +#20092=* +tokeninfo(#20092,8,#20001,33,">>>=") +#20093=@"loc,{#10000},9,3,9,6" +locations_default(#20093,#10000,9,3,9,6) +hasLocation(#20092,#20093) +#20094=* +tokeninfo(#20094,3,#20001,34,"2") +#20095=@"loc,{#10000},9,8,9,8" +locations_default(#20095,#10000,9,8,9,8) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,8,#20001,35,";") +#20097=@"loc,{#10000},9,9,9,9" +locations_default(#20097,#10000,9,9,9,9) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,6,#20001,36,"a") +#20099=@"loc,{#10000},10,1,10,1" +locations_default(#20099,#10000,10,1,10,1) +hasLocation(#20098,#20099) +#20100=* +tokeninfo(#20100,8,#20001,37,"|=") +#20101=@"loc,{#10000},10,3,10,4" +locations_default(#20101,#10000,10,3,10,4) +hasLocation(#20100,#20101) +#20102=* +tokeninfo(#20102,3,#20001,38,"2") +#20103=@"loc,{#10000},10,6,10,6" +locations_default(#20103,#10000,10,6,10,6) +hasLocation(#20102,#20103) +#20104=* +tokeninfo(#20104,8,#20001,39,";") +#20105=@"loc,{#10000},10,7,10,7" +locations_default(#20105,#10000,10,7,10,7) +hasLocation(#20104,#20105) +#20106=* +tokeninfo(#20106,6,#20001,40,"a") +#20107=@"loc,{#10000},11,1,11,1" +locations_default(#20107,#10000,11,1,11,1) +hasLocation(#20106,#20107) +#20108=* +tokeninfo(#20108,8,#20001,41,"^=") +#20109=@"loc,{#10000},11,3,11,4" +locations_default(#20109,#10000,11,3,11,4) +hasLocation(#20108,#20109) +#20110=* +tokeninfo(#20110,3,#20001,42,"1") +#20111=@"loc,{#10000},11,6,11,6" +locations_default(#20111,#10000,11,6,11,6) +hasLocation(#20110,#20111) +#20112=* +tokeninfo(#20112,8,#20001,43,";") +#20113=@"loc,{#10000},11,7,11,7" +locations_default(#20113,#10000,11,7,11,7) +hasLocation(#20112,#20113) #20114=* -tokeninfo(#20114,8,#20001,1,"=") -#20115=@"loc,{#10000},1,3,1,3" -locations_default(#20115,#10000,1,3,1,3) +tokeninfo(#20114,6,#20001,44,"a") +#20115=@"loc,{#10000},12,1,12,1" +locations_default(#20115,#10000,12,1,12,1) hasLocation(#20114,#20115) #20116=* -tokeninfo(#20116,3,#20001,2,"23") -hasLocation(#20116,#20011) -#20117=* -tokeninfo(#20117,8,#20001,3,";") -#20118=@"loc,{#10000},1,7,1,7" -locations_default(#20118,#10000,1,7,1,7) -hasLocation(#20117,#20118) -#20119=* -tokeninfo(#20119,6,#20001,4,"a") -hasLocation(#20119,#20017) +tokeninfo(#20116,8,#20001,45,"&=") +#20117=@"loc,{#10000},12,3,12,4" +locations_default(#20117,#10000,12,3,12,4) +hasLocation(#20116,#20117) +#20118=* +tokeninfo(#20118,3,#20001,46,"3") +#20119=@"loc,{#10000},12,6,12,6" +locations_default(#20119,#10000,12,6,12,6) +hasLocation(#20118,#20119) #20120=* -tokeninfo(#20120,8,#20001,5,"+=") -#20121=@"loc,{#10000},2,3,2,4" -locations_default(#20121,#10000,2,3,2,4) +tokeninfo(#20120,8,#20001,47,";") +#20121=@"loc,{#10000},12,7,12,7" +locations_default(#20121,#10000,12,7,12,7) hasLocation(#20120,#20121) #20122=* -tokeninfo(#20122,3,#20001,6,"19") -hasLocation(#20122,#20019) -#20123=* -tokeninfo(#20123,8,#20001,7,";") -#20124=@"loc,{#10000},2,8,2,8" -locations_default(#20124,#10000,2,8,2,8) -hasLocation(#20123,#20124) +tokeninfo(#20122,0,#20001,48,"") +#20123=@"loc,{#10000},12,8,12,7" +locations_default(#20123,#10000,12,8,12,7) +hasLocation(#20122,#20123) +toplevels(#20001,0) +#20124=@"loc,{#10000},1,1,12,7" +locations_default(#20124,#10000,1,1,12,7) +hasLocation(#20001,#20124) #20125=* -tokeninfo(#20125,6,#20001,8,"a") -hasLocation(#20125,#20025) +stmts(#20125,2,#20001,0,"a = 23;") +hasLocation(#20125,#20003) +stmtContainers(#20125,#20001) #20126=* -tokeninfo(#20126,8,#20001,9,"-=") -#20127=@"loc,{#10000},3,3,3,4" -locations_default(#20127,#10000,3,3,3,4) +exprs(#20126,47,#20125,0,"a = 23") +#20127=@"loc,{#10000},1,1,1,6" +locations_default(#20127,#10000,1,1,1,6) hasLocation(#20126,#20127) +enclosingStmt(#20126,#20125) +exprContainers(#20126,#20001) #20128=* -tokeninfo(#20128,3,#20001,10,"9") +exprs(#20128,79,#20126,0,"a") hasLocation(#20128,#20027) -#20129=* -tokeninfo(#20129,8,#20001,11,";") -#20130=@"loc,{#10000},3,7,3,7" -locations_default(#20130,#10000,3,7,3,7) -hasLocation(#20129,#20130) +enclosingStmt(#20128,#20125) +exprContainers(#20128,#20001) +literals("a","a",#20128) +#20129=@"var;{a};{#20000}" +variables(#20129,"a",#20000) +bind(#20128,#20129) +#20130=* +exprs(#20130,3,#20126,1,"23") +hasLocation(#20130,#20031) +enclosingStmt(#20130,#20125) +exprContainers(#20130,#20001) +literals("23","23",#20130) #20131=* -tokeninfo(#20131,6,#20001,12,"a") -hasLocation(#20131,#20033) +stmts(#20131,2,#20001,1,"a += 19;") +hasLocation(#20131,#20005) +stmtContainers(#20131,#20001) #20132=* -tokeninfo(#20132,8,#20001,13,"*=") -#20133=@"loc,{#10000},4,3,4,4" -locations_default(#20133,#10000,4,3,4,4) +exprs(#20132,48,#20131,0,"a += 19") +#20133=@"loc,{#10000},2,1,2,7" +locations_default(#20133,#10000,2,1,2,7) hasLocation(#20132,#20133) +enclosingStmt(#20132,#20131) +exprContainers(#20132,#20001) #20134=* -tokeninfo(#20134,6,#20001,14,"b") +exprs(#20134,79,#20132,0,"a") hasLocation(#20134,#20035) +enclosingStmt(#20134,#20131) +exprContainers(#20134,#20001) +literals("a","a",#20134) +bind(#20134,#20129) #20135=* -tokeninfo(#20135,8,#20001,15,";") -#20136=@"loc,{#10000},4,7,4,7" -locations_default(#20136,#10000,4,7,4,7) -hasLocation(#20135,#20136) +exprs(#20135,3,#20132,1,"19") +hasLocation(#20135,#20039) +enclosingStmt(#20135,#20131) +exprContainers(#20135,#20001) +literals("19","19",#20135) +#20136=* +stmts(#20136,2,#20001,2,"a -= 9;") +hasLocation(#20136,#20007) +stmtContainers(#20136,#20001) #20137=* -tokeninfo(#20137,6,#20001,16,"a") -hasLocation(#20137,#20042) -#20138=* -tokeninfo(#20138,8,#20001,17,"/=") -#20139=@"loc,{#10000},5,3,5,4" -locations_default(#20139,#10000,5,3,5,4) -hasLocation(#20138,#20139) +exprs(#20137,49,#20136,0,"a -= 9") +#20138=@"loc,{#10000},3,1,3,6" +locations_default(#20138,#10000,3,1,3,6) +hasLocation(#20137,#20138) +enclosingStmt(#20137,#20136) +exprContainers(#20137,#20001) +#20139=* +exprs(#20139,79,#20137,0,"a") +hasLocation(#20139,#20043) +enclosingStmt(#20139,#20136) +exprContainers(#20139,#20001) +literals("a","a",#20139) +bind(#20139,#20129) #20140=* -tokeninfo(#20140,3,#20001,18,"2") -hasLocation(#20140,#20044) +exprs(#20140,3,#20137,1,"9") +hasLocation(#20140,#20047) +enclosingStmt(#20140,#20136) +exprContainers(#20140,#20001) +literals("9","9",#20140) #20141=* -tokeninfo(#20141,8,#20001,19,";") -#20142=@"loc,{#10000},5,7,5,7" -locations_default(#20142,#10000,5,7,5,7) -hasLocation(#20141,#20142) -#20143=* -tokeninfo(#20143,6,#20001,20,"a") -hasLocation(#20143,#20050) +stmts(#20141,2,#20001,3,"a *= b;") +hasLocation(#20141,#20009) +stmtContainers(#20141,#20001) +#20142=* +exprs(#20142,50,#20141,0,"a *= b") +#20143=@"loc,{#10000},4,1,4,6" +locations_default(#20143,#10000,4,1,4,6) +hasLocation(#20142,#20143) +enclosingStmt(#20142,#20141) +exprContainers(#20142,#20001) #20144=* -tokeninfo(#20144,8,#20001,21,"%=") -#20145=@"loc,{#10000},6,3,6,4" -locations_default(#20145,#10000,6,3,6,4) -hasLocation(#20144,#20145) -#20146=* -tokeninfo(#20146,3,#20001,22,"2") -hasLocation(#20146,#20052) +exprs(#20144,79,#20142,0,"a") +hasLocation(#20144,#20051) +enclosingStmt(#20144,#20141) +exprContainers(#20144,#20001) +literals("a","a",#20144) +bind(#20144,#20129) +#20145=* +exprs(#20145,79,#20142,1,"b") +hasLocation(#20145,#20055) +enclosingStmt(#20145,#20141) +exprContainers(#20145,#20001) +literals("b","b",#20145) +#20146=@"var;{b};{#20000}" +variables(#20146,"b",#20000) +bind(#20145,#20146) #20147=* -tokeninfo(#20147,8,#20001,23,";") -#20148=@"loc,{#10000},6,7,6,7" -locations_default(#20148,#10000,6,7,6,7) -hasLocation(#20147,#20148) -#20149=* -tokeninfo(#20149,6,#20001,24,"a") -hasLocation(#20149,#20058) +stmts(#20147,2,#20001,4,"a /= 2;") +hasLocation(#20147,#20011) +stmtContainers(#20147,#20001) +#20148=* +exprs(#20148,51,#20147,0,"a /= 2") +#20149=@"loc,{#10000},5,1,5,6" +locations_default(#20149,#10000,5,1,5,6) +hasLocation(#20148,#20149) +enclosingStmt(#20148,#20147) +exprContainers(#20148,#20001) #20150=* -tokeninfo(#20150,8,#20001,25,"<<=") -#20151=@"loc,{#10000},7,3,7,5" -locations_default(#20151,#10000,7,3,7,5) -hasLocation(#20150,#20151) +exprs(#20150,79,#20148,0,"a") +hasLocation(#20150,#20059) +enclosingStmt(#20150,#20147) +exprContainers(#20150,#20001) +literals("a","a",#20150) +bind(#20150,#20129) +#20151=* +exprs(#20151,3,#20148,1,"2") +hasLocation(#20151,#20063) +enclosingStmt(#20151,#20147) +exprContainers(#20151,#20001) +literals("2","2",#20151) #20152=* -tokeninfo(#20152,3,#20001,26,"8") -hasLocation(#20152,#20060) +stmts(#20152,2,#20001,5,"a %= 2;") +hasLocation(#20152,#20013) +stmtContainers(#20152,#20001) #20153=* -tokeninfo(#20153,8,#20001,27,";") -#20154=@"loc,{#10000},7,8,7,8" -locations_default(#20154,#10000,7,8,7,8) +exprs(#20153,52,#20152,0,"a %= 2") +#20154=@"loc,{#10000},6,1,6,6" +locations_default(#20154,#10000,6,1,6,6) hasLocation(#20153,#20154) +enclosingStmt(#20153,#20152) +exprContainers(#20153,#20001) #20155=* -tokeninfo(#20155,6,#20001,28,"a") -hasLocation(#20155,#20066) +exprs(#20155,79,#20153,0,"a") +hasLocation(#20155,#20067) +enclosingStmt(#20155,#20152) +exprContainers(#20155,#20001) +literals("a","a",#20155) +bind(#20155,#20129) #20156=* -tokeninfo(#20156,8,#20001,29,">>=") -#20157=@"loc,{#10000},8,3,8,5" -locations_default(#20157,#10000,8,3,8,5) -hasLocation(#20156,#20157) +exprs(#20156,3,#20153,1,"2") +hasLocation(#20156,#20071) +enclosingStmt(#20156,#20152) +exprContainers(#20156,#20001) +literals("2","2",#20156) +#20157=* +stmts(#20157,2,#20001,6,"a <<= 8;") +hasLocation(#20157,#20015) +stmtContainers(#20157,#20001) #20158=* -tokeninfo(#20158,3,#20001,30,"7") -hasLocation(#20158,#20068) -#20159=* -tokeninfo(#20159,8,#20001,31,";") -#20160=@"loc,{#10000},8,8,8,8" -locations_default(#20160,#10000,8,8,8,8) -hasLocation(#20159,#20160) +exprs(#20158,53,#20157,0,"a <<= 8") +#20159=@"loc,{#10000},7,1,7,7" +locations_default(#20159,#10000,7,1,7,7) +hasLocation(#20158,#20159) +enclosingStmt(#20158,#20157) +exprContainers(#20158,#20001) +#20160=* +exprs(#20160,79,#20158,0,"a") +hasLocation(#20160,#20075) +enclosingStmt(#20160,#20157) +exprContainers(#20160,#20001) +literals("a","a",#20160) +bind(#20160,#20129) #20161=* -tokeninfo(#20161,6,#20001,32,"a") -hasLocation(#20161,#20074) +exprs(#20161,3,#20158,1,"8") +hasLocation(#20161,#20079) +enclosingStmt(#20161,#20157) +exprContainers(#20161,#20001) +literals("8","8",#20161) #20162=* -tokeninfo(#20162,8,#20001,33,">>>=") -#20163=@"loc,{#10000},9,3,9,6" -locations_default(#20163,#10000,9,3,9,6) -hasLocation(#20162,#20163) -#20164=* -tokeninfo(#20164,3,#20001,34,"2") -hasLocation(#20164,#20076) +stmts(#20162,2,#20001,7,"a >>= 7;") +hasLocation(#20162,#20017) +stmtContainers(#20162,#20001) +#20163=* +exprs(#20163,54,#20162,0,"a >>= 7") +#20164=@"loc,{#10000},8,1,8,7" +locations_default(#20164,#10000,8,1,8,7) +hasLocation(#20163,#20164) +enclosingStmt(#20163,#20162) +exprContainers(#20163,#20001) #20165=* -tokeninfo(#20165,8,#20001,35,";") -#20166=@"loc,{#10000},9,9,9,9" -locations_default(#20166,#10000,9,9,9,9) -hasLocation(#20165,#20166) +exprs(#20165,79,#20163,0,"a") +hasLocation(#20165,#20083) +enclosingStmt(#20165,#20162) +exprContainers(#20165,#20001) +literals("a","a",#20165) +bind(#20165,#20129) +#20166=* +exprs(#20166,3,#20163,1,"7") +hasLocation(#20166,#20087) +enclosingStmt(#20166,#20162) +exprContainers(#20166,#20001) +literals("7","7",#20166) #20167=* -tokeninfo(#20167,6,#20001,36,"a") -hasLocation(#20167,#20082) +stmts(#20167,2,#20001,8,"a >>>= 2;") +hasLocation(#20167,#20019) +stmtContainers(#20167,#20001) #20168=* -tokeninfo(#20168,8,#20001,37,"|=") -#20169=@"loc,{#10000},10,3,10,4" -locations_default(#20169,#10000,10,3,10,4) +exprs(#20168,55,#20167,0,"a >>>= 2") +#20169=@"loc,{#10000},9,1,9,8" +locations_default(#20169,#10000,9,1,9,8) hasLocation(#20168,#20169) +enclosingStmt(#20168,#20167) +exprContainers(#20168,#20001) #20170=* -tokeninfo(#20170,3,#20001,38,"2") -hasLocation(#20170,#20084) +exprs(#20170,79,#20168,0,"a") +hasLocation(#20170,#20091) +enclosingStmt(#20170,#20167) +exprContainers(#20170,#20001) +literals("a","a",#20170) +bind(#20170,#20129) #20171=* -tokeninfo(#20171,8,#20001,39,";") -#20172=@"loc,{#10000},10,7,10,7" -locations_default(#20172,#10000,10,7,10,7) -hasLocation(#20171,#20172) +exprs(#20171,3,#20168,1,"2") +hasLocation(#20171,#20095) +enclosingStmt(#20171,#20167) +exprContainers(#20171,#20001) +literals("2","2",#20171) +#20172=* +stmts(#20172,2,#20001,9,"a |= 2;") +hasLocation(#20172,#20021) +stmtContainers(#20172,#20001) #20173=* -tokeninfo(#20173,6,#20001,40,"a") -hasLocation(#20173,#20090) -#20174=* -tokeninfo(#20174,8,#20001,41,"^=") -#20175=@"loc,{#10000},11,3,11,4" -locations_default(#20175,#10000,11,3,11,4) -hasLocation(#20174,#20175) +exprs(#20173,56,#20172,0,"a |= 2") +#20174=@"loc,{#10000},10,1,10,6" +locations_default(#20174,#10000,10,1,10,6) +hasLocation(#20173,#20174) +enclosingStmt(#20173,#20172) +exprContainers(#20173,#20001) +#20175=* +exprs(#20175,79,#20173,0,"a") +hasLocation(#20175,#20099) +enclosingStmt(#20175,#20172) +exprContainers(#20175,#20001) +literals("a","a",#20175) +bind(#20175,#20129) #20176=* -tokeninfo(#20176,3,#20001,42,"1") -hasLocation(#20176,#20092) +exprs(#20176,3,#20173,1,"2") +hasLocation(#20176,#20103) +enclosingStmt(#20176,#20172) +exprContainers(#20176,#20001) +literals("2","2",#20176) #20177=* -tokeninfo(#20177,8,#20001,43,";") -#20178=@"loc,{#10000},11,7,11,7" -locations_default(#20178,#10000,11,7,11,7) -hasLocation(#20177,#20178) -#20179=* -tokeninfo(#20179,6,#20001,44,"a") -hasLocation(#20179,#20098) +stmts(#20177,2,#20001,10,"a ^= 1;") +hasLocation(#20177,#20023) +stmtContainers(#20177,#20001) +#20178=* +exprs(#20178,57,#20177,0,"a ^= 1") +#20179=@"loc,{#10000},11,1,11,6" +locations_default(#20179,#10000,11,1,11,6) +hasLocation(#20178,#20179) +enclosingStmt(#20178,#20177) +exprContainers(#20178,#20001) #20180=* -tokeninfo(#20180,8,#20001,45,"&=") -#20181=@"loc,{#10000},12,3,12,4" -locations_default(#20181,#10000,12,3,12,4) -hasLocation(#20180,#20181) +exprs(#20180,79,#20178,0,"a") +hasLocation(#20180,#20107) +enclosingStmt(#20180,#20177) +exprContainers(#20180,#20001) +literals("a","a",#20180) +bind(#20180,#20129) +#20181=* +exprs(#20181,3,#20178,1,"1") +hasLocation(#20181,#20111) +enclosingStmt(#20181,#20177) +exprContainers(#20181,#20001) +literals("1","1",#20181) #20182=* -tokeninfo(#20182,3,#20001,46,"3") -hasLocation(#20182,#20100) +stmts(#20182,2,#20001,11,"a &= 3;") +hasLocation(#20182,#20025) +stmtContainers(#20182,#20001) #20183=* -tokeninfo(#20183,8,#20001,47,";") -#20184=@"loc,{#10000},12,7,12,7" -locations_default(#20184,#10000,12,7,12,7) +exprs(#20183,58,#20182,0,"a &= 3") +#20184=@"loc,{#10000},12,1,12,6" +locations_default(#20184,#10000,12,1,12,6) hasLocation(#20183,#20184) +enclosingStmt(#20183,#20182) +exprContainers(#20183,#20001) #20185=* -tokeninfo(#20185,0,#20001,48,"") -#20186=@"loc,{#10000},12,8,12,7" -locations_default(#20186,#10000,12,8,12,7) -hasLocation(#20185,#20186) +exprs(#20185,79,#20183,0,"a") +hasLocation(#20185,#20115) +enclosingStmt(#20185,#20182) +exprContainers(#20185,#20001) +literals("a","a",#20185) +bind(#20185,#20129) +#20186=* +exprs(#20186,3,#20183,1,"3") +hasLocation(#20186,#20119) +enclosingStmt(#20186,#20182) +exprContainers(#20186,#20001) +literals("3","3",#20186) #20187=* entry_cfg_node(#20187,#20001) #20188=@"loc,{#10000},1,1,1,0" @@ -630,55 +630,55 @@ locations_default(#20188,#10000,1,1,1,0) hasLocation(#20187,#20188) #20189=* exit_cfg_node(#20189,#20001) -hasLocation(#20189,#20186) -successor(#20093,#20097) -successor(#20099,#20095) -successor(#20097,#20099) -successor(#20095,#20189) -successor(#20085,#20089) -successor(#20091,#20087) -successor(#20089,#20091) -successor(#20087,#20093) -successor(#20077,#20081) -successor(#20083,#20079) -successor(#20081,#20083) -successor(#20079,#20085) -successor(#20069,#20073) -successor(#20075,#20071) -successor(#20073,#20075) -successor(#20071,#20077) -successor(#20061,#20065) -successor(#20067,#20063) -successor(#20065,#20067) -successor(#20063,#20069) -successor(#20053,#20057) -successor(#20059,#20055) -successor(#20057,#20059) -successor(#20055,#20061) -successor(#20045,#20049) -successor(#20051,#20047) -successor(#20049,#20051) -successor(#20047,#20053) -successor(#20037,#20041) -successor(#20043,#20039) -successor(#20041,#20043) -successor(#20039,#20045) -successor(#20028,#20032) -successor(#20034,#20030) -successor(#20032,#20034) -successor(#20030,#20037) -successor(#20020,#20024) -successor(#20026,#20022) -successor(#20024,#20026) -successor(#20022,#20028) -successor(#20012,#20016) -successor(#20018,#20014) -successor(#20016,#20018) -successor(#20014,#20020) -successor(#20003,#20007) -successor(#20010,#20005) -successor(#20007,#20010) -successor(#20005,#20012) -successor(#20187,#20003) +hasLocation(#20189,#20123) +successor(#20182,#20185) +successor(#20186,#20183) +successor(#20185,#20186) +successor(#20183,#20189) +successor(#20177,#20180) +successor(#20181,#20178) +successor(#20180,#20181) +successor(#20178,#20182) +successor(#20172,#20175) +successor(#20176,#20173) +successor(#20175,#20176) +successor(#20173,#20177) +successor(#20167,#20170) +successor(#20171,#20168) +successor(#20170,#20171) +successor(#20168,#20172) +successor(#20162,#20165) +successor(#20166,#20163) +successor(#20165,#20166) +successor(#20163,#20167) +successor(#20157,#20160) +successor(#20161,#20158) +successor(#20160,#20161) +successor(#20158,#20162) +successor(#20152,#20155) +successor(#20156,#20153) +successor(#20155,#20156) +successor(#20153,#20157) +successor(#20147,#20150) +successor(#20151,#20148) +successor(#20150,#20151) +successor(#20148,#20152) +successor(#20141,#20144) +successor(#20145,#20142) +successor(#20144,#20145) +successor(#20142,#20147) +successor(#20136,#20139) +successor(#20140,#20137) +successor(#20139,#20140) +successor(#20137,#20141) +successor(#20131,#20134) +successor(#20135,#20132) +successor(#20134,#20135) +successor(#20132,#20136) +successor(#20125,#20128) +successor(#20130,#20126) +successor(#20128,#20130) +successor(#20126,#20131) +successor(#20187,#20125) numlines(#10000,12,12,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/exprs/output/trap/binary.js.trap b/javascript/extractor/tests/exprs/output/trap/binary.js.trap index 1136313bf1d..462804a3694 100644 --- a/javascript/extractor/tests/exprs/output/trap/binary.js.trap +++ b/javascript/extractor/tests/exprs/output/trap/binary.js.trap @@ -9,764 +9,764 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,16,0" -locations_default(#20002,#10000,1,1,16,0) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"1 << 2;") -#20004=@"loc,{#10000},1,1,1,7" -locations_default(#20004,#10000,1,1,1,7) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,31,#20003,0,"1 << 2") -#20006=@"loc,{#10000},1,1,1,6" -locations_default(#20006,#10000,1,1,1,6) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -#20007=* -exprs(#20007,3,#20005,0,"1") -#20008=@"loc,{#10000},1,1,1,1" -locations_default(#20008,#10000,1,1,1,1) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20003) -exprContainers(#20007,#20001) -literals("1","1",#20007) -#20009=* -exprs(#20009,3,#20005,1,"2") -#20010=@"loc,{#10000},1,6,1,6" -locations_default(#20010,#10000,1,6,1,6) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20003) -exprContainers(#20009,#20001) -literals("2","2",#20009) -#20011=* -stmts(#20011,2,#20001,1,"2 >> 1;") -#20012=@"loc,{#10000},2,1,2,7" -locations_default(#20012,#10000,2,1,2,7) -hasLocation(#20011,#20012) -stmtContainers(#20011,#20001) -#20013=* -exprs(#20013,32,#20011,0,"2 >> 1") -#20014=@"loc,{#10000},2,1,2,6" -locations_default(#20014,#10000,2,1,2,6) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20011) -exprContainers(#20013,#20001) -#20015=* -exprs(#20015,3,#20013,0,"2") -#20016=@"loc,{#10000},2,1,2,1" -locations_default(#20016,#10000,2,1,2,1) -hasLocation(#20015,#20016) -enclosingStmt(#20015,#20011) -exprContainers(#20015,#20001) -literals("2","2",#20015) -#20017=* -exprs(#20017,3,#20013,1,"1") -#20018=@"loc,{#10000},2,6,2,6" -locations_default(#20018,#10000,2,6,2,6) -hasLocation(#20017,#20018) -enclosingStmt(#20017,#20011) -exprContainers(#20017,#20001) -literals("1","1",#20017) -#20019=* -stmts(#20019,2,#20001,2,"2 >>> 1;") -#20020=@"loc,{#10000},3,1,3,8" -locations_default(#20020,#10000,3,1,3,8) -hasLocation(#20019,#20020) -stmtContainers(#20019,#20001) -#20021=* -exprs(#20021,33,#20019,0,"2 >>> 1") -#20022=@"loc,{#10000},3,1,3,7" -locations_default(#20022,#10000,3,1,3,7) -hasLocation(#20021,#20022) -enclosingStmt(#20021,#20019) -exprContainers(#20021,#20001) -#20023=* -exprs(#20023,3,#20021,0,"2") -#20024=@"loc,{#10000},3,1,3,1" -locations_default(#20024,#10000,3,1,3,1) -hasLocation(#20023,#20024) -enclosingStmt(#20023,#20019) -exprContainers(#20023,#20001) -literals("2","2",#20023) -#20025=* -exprs(#20025,3,#20021,1,"1") -#20026=@"loc,{#10000},3,7,3,7" -locations_default(#20026,#10000,3,7,3,7) -hasLocation(#20025,#20026) -enclosingStmt(#20025,#20019) -exprContainers(#20025,#20001) -literals("1","1",#20025) -#20027=* -stmts(#20027,2,#20001,3,"23 + 19;") -#20028=@"loc,{#10000},4,1,4,8" -locations_default(#20028,#10000,4,1,4,8) -hasLocation(#20027,#20028) -stmtContainers(#20027,#20001) -#20029=* -exprs(#20029,34,#20027,0,"23 + 19") -#20030=@"loc,{#10000},4,1,4,7" -locations_default(#20030,#10000,4,1,4,7) -hasLocation(#20029,#20030) -enclosingStmt(#20029,#20027) -exprContainers(#20029,#20001) -#20031=* -exprs(#20031,3,#20029,0,"23") -#20032=@"loc,{#10000},4,1,4,2" -locations_default(#20032,#10000,4,1,4,2) -hasLocation(#20031,#20032) -enclosingStmt(#20031,#20027) -exprContainers(#20031,#20001) -literals("23","23",#20031) -#20033=* -exprs(#20033,3,#20029,1,"19") -#20034=@"loc,{#10000},4,6,4,7" -locations_default(#20034,#10000,4,6,4,7) -hasLocation(#20033,#20034) -enclosingStmt(#20033,#20027) -exprContainers(#20033,#20001) -literals("19","19",#20033) -#20035=* -stmts(#20035,2,#20001,4,"42 - 19;") -#20036=@"loc,{#10000},5,1,5,8" -locations_default(#20036,#10000,5,1,5,8) -hasLocation(#20035,#20036) -stmtContainers(#20035,#20001) -#20037=* -exprs(#20037,35,#20035,0,"42 - 19") -#20038=@"loc,{#10000},5,1,5,7" -locations_default(#20038,#10000,5,1,5,7) -hasLocation(#20037,#20038) -enclosingStmt(#20037,#20035) -exprContainers(#20037,#20001) -#20039=* -exprs(#20039,3,#20037,0,"42") -#20040=@"loc,{#10000},5,1,5,2" -locations_default(#20040,#10000,5,1,5,2) -hasLocation(#20039,#20040) -enclosingStmt(#20039,#20035) -exprContainers(#20039,#20001) -literals("42","42",#20039) -#20041=* -exprs(#20041,3,#20037,1,"19") -#20042=@"loc,{#10000},5,6,5,7" -locations_default(#20042,#10000,5,6,5,7) -hasLocation(#20041,#20042) -enclosingStmt(#20041,#20035) -exprContainers(#20041,#20001) -literals("19","19",#20041) -#20043=* -stmts(#20043,2,#20001,5,"2 * 3;") -#20044=@"loc,{#10000},6,1,6,6" -locations_default(#20044,#10000,6,1,6,6) -hasLocation(#20043,#20044) -stmtContainers(#20043,#20001) -#20045=* -exprs(#20045,36,#20043,0,"2 * 3") -#20046=@"loc,{#10000},6,1,6,5" -locations_default(#20046,#10000,6,1,6,5) -hasLocation(#20045,#20046) -enclosingStmt(#20045,#20043) -exprContainers(#20045,#20001) -#20047=* -exprs(#20047,3,#20045,0,"2") -#20048=@"loc,{#10000},6,1,6,1" -locations_default(#20048,#10000,6,1,6,1) -hasLocation(#20047,#20048) -enclosingStmt(#20047,#20043) -exprContainers(#20047,#20001) -literals("2","2",#20047) -#20049=* -exprs(#20049,3,#20045,1,"3") -#20050=@"loc,{#10000},6,5,6,5" -locations_default(#20050,#10000,6,5,6,5) -hasLocation(#20049,#20050) -enclosingStmt(#20049,#20043) -exprContainers(#20049,#20001) -literals("3","3",#20049) -#20051=* -stmts(#20051,2,#20001,6,"8 / 5;") -#20052=@"loc,{#10000},7,1,7,6" -locations_default(#20052,#10000,7,1,7,6) -hasLocation(#20051,#20052) -stmtContainers(#20051,#20001) -#20053=* -exprs(#20053,37,#20051,0,"8 / 5") -#20054=@"loc,{#10000},7,1,7,5" -locations_default(#20054,#10000,7,1,7,5) -hasLocation(#20053,#20054) -enclosingStmt(#20053,#20051) -exprContainers(#20053,#20001) -#20055=* -exprs(#20055,3,#20053,0,"8") -#20056=@"loc,{#10000},7,1,7,1" -locations_default(#20056,#10000,7,1,7,1) -hasLocation(#20055,#20056) -enclosingStmt(#20055,#20051) -exprContainers(#20055,#20001) -literals("8","8",#20055) -#20057=* -exprs(#20057,3,#20053,1,"5") -#20058=@"loc,{#10000},7,5,7,5" -locations_default(#20058,#10000,7,5,7,5) -hasLocation(#20057,#20058) -enclosingStmt(#20057,#20051) -exprContainers(#20057,#20001) -literals("5","5",#20057) -#20059=* -stmts(#20059,2,#20001,7,"2 % 1;") -#20060=@"loc,{#10000},8,1,8,6" -locations_default(#20060,#10000,8,1,8,6) -hasLocation(#20059,#20060) -stmtContainers(#20059,#20001) -#20061=* -exprs(#20061,38,#20059,0,"2 % 1") -#20062=@"loc,{#10000},8,1,8,5" -locations_default(#20062,#10000,8,1,8,5) -hasLocation(#20061,#20062) -enclosingStmt(#20061,#20059) -exprContainers(#20061,#20001) -#20063=* -exprs(#20063,3,#20061,0,"2") -#20064=@"loc,{#10000},8,1,8,1" -locations_default(#20064,#10000,8,1,8,1) -hasLocation(#20063,#20064) -enclosingStmt(#20063,#20059) -exprContainers(#20063,#20001) -literals("2","2",#20063) -#20065=* -exprs(#20065,3,#20061,1,"1") -#20066=@"loc,{#10000},8,5,8,5" -locations_default(#20066,#10000,8,5,8,5) -hasLocation(#20065,#20066) -enclosingStmt(#20065,#20059) -exprContainers(#20065,#20001) -literals("1","1",#20065) -#20067=* -stmts(#20067,2,#20001,8,"2 | 3;") -#20068=@"loc,{#10000},9,1,9,6" -locations_default(#20068,#10000,9,1,9,6) -hasLocation(#20067,#20068) -stmtContainers(#20067,#20001) -#20069=* -exprs(#20069,39,#20067,0,"2 | 3") -#20070=@"loc,{#10000},9,1,9,5" -locations_default(#20070,#10000,9,1,9,5) -hasLocation(#20069,#20070) -enclosingStmt(#20069,#20067) -exprContainers(#20069,#20001) -#20071=* -exprs(#20071,3,#20069,0,"2") -#20072=@"loc,{#10000},9,1,9,1" -locations_default(#20072,#10000,9,1,9,1) -hasLocation(#20071,#20072) -enclosingStmt(#20071,#20067) -exprContainers(#20071,#20001) -literals("2","2",#20071) -#20073=* -exprs(#20073,3,#20069,1,"3") -#20074=@"loc,{#10000},9,5,9,5" -locations_default(#20074,#10000,9,5,9,5) -hasLocation(#20073,#20074) -enclosingStmt(#20073,#20067) -exprContainers(#20073,#20001) -literals("3","3",#20073) -#20075=* -stmts(#20075,2,#20001,9,"2 ^ 3;") -#20076=@"loc,{#10000},10,1,10,6" -locations_default(#20076,#10000,10,1,10,6) -hasLocation(#20075,#20076) -stmtContainers(#20075,#20001) -#20077=* -exprs(#20077,40,#20075,0,"2 ^ 3") -#20078=@"loc,{#10000},10,1,10,5" -locations_default(#20078,#10000,10,1,10,5) -hasLocation(#20077,#20078) -enclosingStmt(#20077,#20075) -exprContainers(#20077,#20001) -#20079=* -exprs(#20079,3,#20077,0,"2") -#20080=@"loc,{#10000},10,1,10,1" -locations_default(#20080,#10000,10,1,10,1) -hasLocation(#20079,#20080) -enclosingStmt(#20079,#20075) -exprContainers(#20079,#20001) -literals("2","2",#20079) -#20081=* -exprs(#20081,3,#20077,1,"3") -#20082=@"loc,{#10000},10,5,10,5" -locations_default(#20082,#10000,10,5,10,5) -hasLocation(#20081,#20082) -enclosingStmt(#20081,#20075) -exprContainers(#20081,#20001) -literals("3","3",#20081) -#20083=* -stmts(#20083,2,#20001,10,"2 & 3;") -#20084=@"loc,{#10000},11,1,11,6" -locations_default(#20084,#10000,11,1,11,6) -hasLocation(#20083,#20084) -stmtContainers(#20083,#20001) -#20085=* -exprs(#20085,41,#20083,0,"2 & 3") -#20086=@"loc,{#10000},11,1,11,5" -locations_default(#20086,#10000,11,1,11,5) -hasLocation(#20085,#20086) -enclosingStmt(#20085,#20083) -exprContainers(#20085,#20001) -#20087=* -exprs(#20087,3,#20085,0,"2") -#20088=@"loc,{#10000},11,1,11,1" -locations_default(#20088,#10000,11,1,11,1) -hasLocation(#20087,#20088) -enclosingStmt(#20087,#20083) -exprContainers(#20087,#20001) -literals("2","2",#20087) -#20089=* -exprs(#20089,3,#20085,1,"3") -#20090=@"loc,{#10000},11,5,11,5" -locations_default(#20090,#10000,11,5,11,5) -hasLocation(#20089,#20090) -enclosingStmt(#20089,#20083) -exprContainers(#20089,#20001) -literals("3","3",#20089) -#20091=* -stmts(#20091,2,#20001,11,"'protot ... Object;") -#20092=@"loc,{#10000},12,1,12,22" -locations_default(#20092,#10000,12,1,12,22) -hasLocation(#20091,#20092) -stmtContainers(#20091,#20001) -#20093=* -exprs(#20093,42,#20091,0,"'protot ... Object") -#20094=@"loc,{#10000},12,1,12,21" -locations_default(#20094,#10000,12,1,12,21) -hasLocation(#20093,#20094) -enclosingStmt(#20093,#20091) -exprContainers(#20093,#20001) -#20095=* -exprs(#20095,4,#20093,0,"'prototype'") -#20096=@"loc,{#10000},12,1,12,11" -locations_default(#20096,#10000,12,1,12,11) -hasLocation(#20095,#20096) -enclosingStmt(#20095,#20091) -exprContainers(#20095,#20001) -literals("prototype","'prototype'",#20095) -#20097=* -exprs(#20097,79,#20093,1,"Object") -#20098=@"loc,{#10000},12,16,12,21" -locations_default(#20098,#10000,12,16,12,21) -hasLocation(#20097,#20098) -enclosingStmt(#20097,#20091) -exprContainers(#20097,#20001) -literals("Object","Object",#20097) -#20099=@"var;{Object};{#20000}" -variables(#20099,"Object",#20000) -bind(#20097,#20099) -#20100=* -stmts(#20100,2,#20001,12,"[] instanceof Array;") -#20101=@"loc,{#10000},13,1,13,20" -locations_default(#20101,#10000,13,1,13,20) -hasLocation(#20100,#20101) -stmtContainers(#20100,#20001) -#20102=* -exprs(#20102,43,#20100,0,"[] instanceof Array") -#20103=@"loc,{#10000},13,1,13,19" -locations_default(#20103,#10000,13,1,13,19) -hasLocation(#20102,#20103) -enclosingStmt(#20102,#20100) -exprContainers(#20102,#20001) -#20104=* -exprs(#20104,7,#20102,0,"[]") -#20105=@"loc,{#10000},13,1,13,2" -locations_default(#20105,#10000,13,1,13,2) -hasLocation(#20104,#20105) -enclosingStmt(#20104,#20100) -exprContainers(#20104,#20001) -arraySize(#20104,0) -#20106=* -exprs(#20106,79,#20102,1,"Array") -#20107=@"loc,{#10000},13,15,13,19" -locations_default(#20107,#10000,13,15,13,19) -hasLocation(#20106,#20107) -enclosingStmt(#20106,#20100) -exprContainers(#20106,#20001) -literals("Array","Array",#20106) -#20108=@"var;{Array};{#20000}" -variables(#20108,"Array",#20000) -bind(#20106,#20108) -#20109=* -stmts(#20109,2,#20001,13,"1 && 2;") -#20110=@"loc,{#10000},14,1,14,7" -locations_default(#20110,#10000,14,1,14,7) -hasLocation(#20109,#20110) -stmtContainers(#20109,#20001) -#20111=* -exprs(#20111,44,#20109,0,"1 && 2") -#20112=@"loc,{#10000},14,1,14,6" -locations_default(#20112,#10000,14,1,14,6) -hasLocation(#20111,#20112) -enclosingStmt(#20111,#20109) -exprContainers(#20111,#20001) -#20113=* -exprs(#20113,3,#20111,0,"1") -#20114=@"loc,{#10000},14,1,14,1" -locations_default(#20114,#10000,14,1,14,1) -hasLocation(#20113,#20114) -enclosingStmt(#20113,#20109) -exprContainers(#20113,#20001) -literals("1","1",#20113) -#20115=* -exprs(#20115,3,#20111,1,"2") -#20116=@"loc,{#10000},14,6,14,6" -locations_default(#20116,#10000,14,6,14,6) -hasLocation(#20115,#20116) -enclosingStmt(#20115,#20109) -exprContainers(#20115,#20001) -literals("2","2",#20115) -#20117=* -stmts(#20117,2,#20001,14,"1 || 2;") -#20118=@"loc,{#10000},15,1,15,7" -locations_default(#20118,#10000,15,1,15,7) -hasLocation(#20117,#20118) -stmtContainers(#20117,#20001) -#20119=* -exprs(#20119,45,#20117,0,"1 || 2") -#20120=@"loc,{#10000},15,1,15,6" -locations_default(#20120,#10000,15,1,15,6) -hasLocation(#20119,#20120) -enclosingStmt(#20119,#20117) -exprContainers(#20119,#20001) -#20121=* -exprs(#20121,3,#20119,0,"1") -#20122=@"loc,{#10000},15,1,15,1" -locations_default(#20122,#10000,15,1,15,1) -hasLocation(#20121,#20122) -enclosingStmt(#20121,#20117) -exprContainers(#20121,#20001) -literals("1","1",#20121) -#20123=* -exprs(#20123,3,#20119,1,"2") -#20124=@"loc,{#10000},15,6,15,6" -locations_default(#20124,#10000,15,6,15,6) -hasLocation(#20123,#20124) -enclosingStmt(#20123,#20117) -exprContainers(#20123,#20001) -literals("2","2",#20123) -#20125=* -lines(#20125,#20001,"1 << 2;"," +#20002=* +lines(#20002,#20001,"1 << 2;"," ") -hasLocation(#20125,#20004) -#20126=* -lines(#20126,#20001,"2 >> 1;"," +#20003=@"loc,{#10000},1,1,1,7" +locations_default(#20003,#10000,1,1,1,7) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"2 >> 1;"," ") -hasLocation(#20126,#20012) -#20127=* -lines(#20127,#20001,"2 >>> 1;"," +#20005=@"loc,{#10000},2,1,2,7" +locations_default(#20005,#10000,2,1,2,7) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"2 >>> 1;"," ") -hasLocation(#20127,#20020) -#20128=* -lines(#20128,#20001,"23 + 19;"," +#20007=@"loc,{#10000},3,1,3,8" +locations_default(#20007,#10000,3,1,3,8) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001,"23 + 19;"," ") -hasLocation(#20128,#20028) -#20129=* -lines(#20129,#20001,"42 - 19;"," +#20009=@"loc,{#10000},4,1,4,8" +locations_default(#20009,#10000,4,1,4,8) +hasLocation(#20008,#20009) +#20010=* +lines(#20010,#20001,"42 - 19;"," ") -hasLocation(#20129,#20036) -#20130=* -lines(#20130,#20001,"2 * 3;"," +#20011=@"loc,{#10000},5,1,5,8" +locations_default(#20011,#10000,5,1,5,8) +hasLocation(#20010,#20011) +#20012=* +lines(#20012,#20001,"2 * 3;"," ") -hasLocation(#20130,#20044) -#20131=* -lines(#20131,#20001,"8 / 5;"," +#20013=@"loc,{#10000},6,1,6,6" +locations_default(#20013,#10000,6,1,6,6) +hasLocation(#20012,#20013) +#20014=* +lines(#20014,#20001,"8 / 5;"," ") -hasLocation(#20131,#20052) -#20132=* -lines(#20132,#20001,"2 % 1;"," +#20015=@"loc,{#10000},7,1,7,6" +locations_default(#20015,#10000,7,1,7,6) +hasLocation(#20014,#20015) +#20016=* +lines(#20016,#20001,"2 % 1;"," ") -hasLocation(#20132,#20060) -#20133=* -lines(#20133,#20001,"2 | 3;"," +#20017=@"loc,{#10000},8,1,8,6" +locations_default(#20017,#10000,8,1,8,6) +hasLocation(#20016,#20017) +#20018=* +lines(#20018,#20001,"2 | 3;"," ") -hasLocation(#20133,#20068) -#20134=* -lines(#20134,#20001,"2 ^ 3;"," +#20019=@"loc,{#10000},9,1,9,6" +locations_default(#20019,#10000,9,1,9,6) +hasLocation(#20018,#20019) +#20020=* +lines(#20020,#20001,"2 ^ 3;"," ") -hasLocation(#20134,#20076) -#20135=* -lines(#20135,#20001,"2 & 3;"," +#20021=@"loc,{#10000},10,1,10,6" +locations_default(#20021,#10000,10,1,10,6) +hasLocation(#20020,#20021) +#20022=* +lines(#20022,#20001,"2 & 3;"," ") -hasLocation(#20135,#20084) -#20136=* -lines(#20136,#20001,"'prototype' in Object;"," +#20023=@"loc,{#10000},11,1,11,6" +locations_default(#20023,#10000,11,1,11,6) +hasLocation(#20022,#20023) +#20024=* +lines(#20024,#20001,"'prototype' in Object;"," ") -hasLocation(#20136,#20092) -#20137=* -lines(#20137,#20001,"[] instanceof Array;"," +#20025=@"loc,{#10000},12,1,12,22" +locations_default(#20025,#10000,12,1,12,22) +hasLocation(#20024,#20025) +#20026=* +lines(#20026,#20001,"[] instanceof Array;"," ") -hasLocation(#20137,#20101) -#20138=* -lines(#20138,#20001,"1 && 2;"," +#20027=@"loc,{#10000},13,1,13,20" +locations_default(#20027,#10000,13,1,13,20) +hasLocation(#20026,#20027) +#20028=* +lines(#20028,#20001,"1 && 2;"," ") -hasLocation(#20138,#20110) -#20139=* -lines(#20139,#20001,"1 || 2;"," +#20029=@"loc,{#10000},14,1,14,7" +locations_default(#20029,#10000,14,1,14,7) +hasLocation(#20028,#20029) +#20030=* +lines(#20030,#20001,"1 || 2;"," ") -hasLocation(#20139,#20118) +#20031=@"loc,{#10000},15,1,15,7" +locations_default(#20031,#10000,15,1,15,7) +hasLocation(#20030,#20031) numlines(#20001,15,15,0) +#20032=* +tokeninfo(#20032,3,#20001,0,"1") +#20033=@"loc,{#10000},1,1,1,1" +locations_default(#20033,#10000,1,1,1,1) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,1,"<<") +#20035=@"loc,{#10000},1,3,1,4" +locations_default(#20035,#10000,1,3,1,4) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,3,#20001,2,"2") +#20037=@"loc,{#10000},1,6,1,6" +locations_default(#20037,#10000,1,6,1,6) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,8,#20001,3,";") +#20039=@"loc,{#10000},1,7,1,7" +locations_default(#20039,#10000,1,7,1,7) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,3,#20001,4,"2") +#20041=@"loc,{#10000},2,1,2,1" +locations_default(#20041,#10000,2,1,2,1) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,5,">>") +#20043=@"loc,{#10000},2,3,2,4" +locations_default(#20043,#10000,2,3,2,4) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,3,#20001,6,"1") +#20045=@"loc,{#10000},2,6,2,6" +locations_default(#20045,#10000,2,6,2,6) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,7,";") +#20047=@"loc,{#10000},2,7,2,7" +locations_default(#20047,#10000,2,7,2,7) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,3,#20001,8,"2") +#20049=@"loc,{#10000},3,1,3,1" +locations_default(#20049,#10000,3,1,3,1) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,9,">>>") +#20051=@"loc,{#10000},3,3,3,5" +locations_default(#20051,#10000,3,3,3,5) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,3,#20001,10,"1") +#20053=@"loc,{#10000},3,7,3,7" +locations_default(#20053,#10000,3,7,3,7) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,8,#20001,11,";") +#20055=@"loc,{#10000},3,8,3,8" +locations_default(#20055,#10000,3,8,3,8) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,3,#20001,12,"23") +#20057=@"loc,{#10000},4,1,4,2" +locations_default(#20057,#10000,4,1,4,2) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,8,#20001,13,"+") +#20059=@"loc,{#10000},4,4,4,4" +locations_default(#20059,#10000,4,4,4,4) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,3,#20001,14,"19") +#20061=@"loc,{#10000},4,6,4,7" +locations_default(#20061,#10000,4,6,4,7) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,8,#20001,15,";") +#20063=@"loc,{#10000},4,8,4,8" +locations_default(#20063,#10000,4,8,4,8) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,3,#20001,16,"42") +#20065=@"loc,{#10000},5,1,5,2" +locations_default(#20065,#10000,5,1,5,2) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,8,#20001,17,"-") +#20067=@"loc,{#10000},5,4,5,4" +locations_default(#20067,#10000,5,4,5,4) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,3,#20001,18,"19") +#20069=@"loc,{#10000},5,6,5,7" +locations_default(#20069,#10000,5,6,5,7) +hasLocation(#20068,#20069) +#20070=* +tokeninfo(#20070,8,#20001,19,";") +#20071=@"loc,{#10000},5,8,5,8" +locations_default(#20071,#10000,5,8,5,8) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,3,#20001,20,"2") +#20073=@"loc,{#10000},6,1,6,1" +locations_default(#20073,#10000,6,1,6,1) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,8,#20001,21,"*") +#20075=@"loc,{#10000},6,3,6,3" +locations_default(#20075,#10000,6,3,6,3) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,3,#20001,22,"3") +#20077=@"loc,{#10000},6,5,6,5" +locations_default(#20077,#10000,6,5,6,5) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,8,#20001,23,";") +#20079=@"loc,{#10000},6,6,6,6" +locations_default(#20079,#10000,6,6,6,6) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,3,#20001,24,"8") +#20081=@"loc,{#10000},7,1,7,1" +locations_default(#20081,#10000,7,1,7,1) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,8,#20001,25,"/") +#20083=@"loc,{#10000},7,3,7,3" +locations_default(#20083,#10000,7,3,7,3) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,3,#20001,26,"5") +#20085=@"loc,{#10000},7,5,7,5" +locations_default(#20085,#10000,7,5,7,5) +hasLocation(#20084,#20085) +#20086=* +tokeninfo(#20086,8,#20001,27,";") +#20087=@"loc,{#10000},7,6,7,6" +locations_default(#20087,#10000,7,6,7,6) +hasLocation(#20086,#20087) +#20088=* +tokeninfo(#20088,3,#20001,28,"2") +#20089=@"loc,{#10000},8,1,8,1" +locations_default(#20089,#10000,8,1,8,1) +hasLocation(#20088,#20089) +#20090=* +tokeninfo(#20090,8,#20001,29,"%") +#20091=@"loc,{#10000},8,3,8,3" +locations_default(#20091,#10000,8,3,8,3) +hasLocation(#20090,#20091) +#20092=* +tokeninfo(#20092,3,#20001,30,"1") +#20093=@"loc,{#10000},8,5,8,5" +locations_default(#20093,#10000,8,5,8,5) +hasLocation(#20092,#20093) +#20094=* +tokeninfo(#20094,8,#20001,31,";") +#20095=@"loc,{#10000},8,6,8,6" +locations_default(#20095,#10000,8,6,8,6) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,3,#20001,32,"2") +#20097=@"loc,{#10000},9,1,9,1" +locations_default(#20097,#10000,9,1,9,1) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,8,#20001,33,"|") +#20099=@"loc,{#10000},9,3,9,3" +locations_default(#20099,#10000,9,3,9,3) +hasLocation(#20098,#20099) +#20100=* +tokeninfo(#20100,3,#20001,34,"3") +#20101=@"loc,{#10000},9,5,9,5" +locations_default(#20101,#10000,9,5,9,5) +hasLocation(#20100,#20101) +#20102=* +tokeninfo(#20102,8,#20001,35,";") +#20103=@"loc,{#10000},9,6,9,6" +locations_default(#20103,#10000,9,6,9,6) +hasLocation(#20102,#20103) +#20104=* +tokeninfo(#20104,3,#20001,36,"2") +#20105=@"loc,{#10000},10,1,10,1" +locations_default(#20105,#10000,10,1,10,1) +hasLocation(#20104,#20105) +#20106=* +tokeninfo(#20106,8,#20001,37,"^") +#20107=@"loc,{#10000},10,3,10,3" +locations_default(#20107,#10000,10,3,10,3) +hasLocation(#20106,#20107) +#20108=* +tokeninfo(#20108,3,#20001,38,"3") +#20109=@"loc,{#10000},10,5,10,5" +locations_default(#20109,#10000,10,5,10,5) +hasLocation(#20108,#20109) +#20110=* +tokeninfo(#20110,8,#20001,39,";") +#20111=@"loc,{#10000},10,6,10,6" +locations_default(#20111,#10000,10,6,10,6) +hasLocation(#20110,#20111) +#20112=* +tokeninfo(#20112,3,#20001,40,"2") +#20113=@"loc,{#10000},11,1,11,1" +locations_default(#20113,#10000,11,1,11,1) +hasLocation(#20112,#20113) +#20114=* +tokeninfo(#20114,8,#20001,41,"&") +#20115=@"loc,{#10000},11,3,11,3" +locations_default(#20115,#10000,11,3,11,3) +hasLocation(#20114,#20115) +#20116=* +tokeninfo(#20116,3,#20001,42,"3") +#20117=@"loc,{#10000},11,5,11,5" +locations_default(#20117,#10000,11,5,11,5) +hasLocation(#20116,#20117) +#20118=* +tokeninfo(#20118,8,#20001,43,";") +#20119=@"loc,{#10000},11,6,11,6" +locations_default(#20119,#10000,11,6,11,6) +hasLocation(#20118,#20119) +#20120=* +tokeninfo(#20120,4,#20001,44,"'prototype'") +#20121=@"loc,{#10000},12,1,12,11" +locations_default(#20121,#10000,12,1,12,11) +hasLocation(#20120,#20121) +#20122=* +tokeninfo(#20122,7,#20001,45,"in") +#20123=@"loc,{#10000},12,13,12,14" +locations_default(#20123,#10000,12,13,12,14) +hasLocation(#20122,#20123) +#20124=* +tokeninfo(#20124,6,#20001,46,"Object") +#20125=@"loc,{#10000},12,16,12,21" +locations_default(#20125,#10000,12,16,12,21) +hasLocation(#20124,#20125) +#20126=* +tokeninfo(#20126,8,#20001,47,";") +#20127=@"loc,{#10000},12,22,12,22" +locations_default(#20127,#10000,12,22,12,22) +hasLocation(#20126,#20127) +#20128=* +tokeninfo(#20128,8,#20001,48,"[") +#20129=@"loc,{#10000},13,1,13,1" +locations_default(#20129,#10000,13,1,13,1) +hasLocation(#20128,#20129) +#20130=* +tokeninfo(#20130,8,#20001,49,"]") +#20131=@"loc,{#10000},13,2,13,2" +locations_default(#20131,#10000,13,2,13,2) +hasLocation(#20130,#20131) +#20132=* +tokeninfo(#20132,7,#20001,50,"instanceof") +#20133=@"loc,{#10000},13,4,13,13" +locations_default(#20133,#10000,13,4,13,13) +hasLocation(#20132,#20133) +#20134=* +tokeninfo(#20134,6,#20001,51,"Array") +#20135=@"loc,{#10000},13,15,13,19" +locations_default(#20135,#10000,13,15,13,19) +hasLocation(#20134,#20135) +#20136=* +tokeninfo(#20136,8,#20001,52,";") +#20137=@"loc,{#10000},13,20,13,20" +locations_default(#20137,#10000,13,20,13,20) +hasLocation(#20136,#20137) +#20138=* +tokeninfo(#20138,3,#20001,53,"1") +#20139=@"loc,{#10000},14,1,14,1" +locations_default(#20139,#10000,14,1,14,1) +hasLocation(#20138,#20139) #20140=* -tokeninfo(#20140,3,#20001,0,"1") -hasLocation(#20140,#20008) -#20141=* -tokeninfo(#20141,8,#20001,1,"<<") -#20142=@"loc,{#10000},1,3,1,4" -locations_default(#20142,#10000,1,3,1,4) -hasLocation(#20141,#20142) -#20143=* -tokeninfo(#20143,3,#20001,2,"2") -hasLocation(#20143,#20010) +tokeninfo(#20140,8,#20001,54,"&&") +#20141=@"loc,{#10000},14,3,14,4" +locations_default(#20141,#10000,14,3,14,4) +hasLocation(#20140,#20141) +#20142=* +tokeninfo(#20142,3,#20001,55,"2") +#20143=@"loc,{#10000},14,6,14,6" +locations_default(#20143,#10000,14,6,14,6) +hasLocation(#20142,#20143) #20144=* -tokeninfo(#20144,8,#20001,3,";") -#20145=@"loc,{#10000},1,7,1,7" -locations_default(#20145,#10000,1,7,1,7) +tokeninfo(#20144,8,#20001,56,";") +#20145=@"loc,{#10000},14,7,14,7" +locations_default(#20145,#10000,14,7,14,7) hasLocation(#20144,#20145) #20146=* -tokeninfo(#20146,3,#20001,4,"2") -hasLocation(#20146,#20016) -#20147=* -tokeninfo(#20147,8,#20001,5,">>") -#20148=@"loc,{#10000},2,3,2,4" -locations_default(#20148,#10000,2,3,2,4) -hasLocation(#20147,#20148) -#20149=* -tokeninfo(#20149,3,#20001,6,"1") -hasLocation(#20149,#20018) +tokeninfo(#20146,3,#20001,57,"1") +#20147=@"loc,{#10000},15,1,15,1" +locations_default(#20147,#10000,15,1,15,1) +hasLocation(#20146,#20147) +#20148=* +tokeninfo(#20148,8,#20001,58,"||") +#20149=@"loc,{#10000},15,3,15,4" +locations_default(#20149,#10000,15,3,15,4) +hasLocation(#20148,#20149) #20150=* -tokeninfo(#20150,8,#20001,7,";") -#20151=@"loc,{#10000},2,7,2,7" -locations_default(#20151,#10000,2,7,2,7) +tokeninfo(#20150,3,#20001,59,"2") +#20151=@"loc,{#10000},15,6,15,6" +locations_default(#20151,#10000,15,6,15,6) hasLocation(#20150,#20151) #20152=* -tokeninfo(#20152,3,#20001,8,"2") -hasLocation(#20152,#20024) -#20153=* -tokeninfo(#20153,8,#20001,9,">>>") -#20154=@"loc,{#10000},3,3,3,5" -locations_default(#20154,#10000,3,3,3,5) -hasLocation(#20153,#20154) -#20155=* -tokeninfo(#20155,3,#20001,10,"1") -hasLocation(#20155,#20026) -#20156=* -tokeninfo(#20156,8,#20001,11,";") -#20157=@"loc,{#10000},3,8,3,8" -locations_default(#20157,#10000,3,8,3,8) -hasLocation(#20156,#20157) +tokeninfo(#20152,8,#20001,60,";") +#20153=@"loc,{#10000},15,7,15,7" +locations_default(#20153,#10000,15,7,15,7) +hasLocation(#20152,#20153) +#20154=* +tokeninfo(#20154,0,#20001,61,"") +#20155=@"loc,{#10000},16,1,16,0" +locations_default(#20155,#10000,16,1,16,0) +hasLocation(#20154,#20155) +toplevels(#20001,0) +#20156=@"loc,{#10000},1,1,16,0" +locations_default(#20156,#10000,1,1,16,0) +hasLocation(#20001,#20156) +#20157=* +stmts(#20157,2,#20001,0,"1 << 2;") +hasLocation(#20157,#20003) +stmtContainers(#20157,#20001) #20158=* -tokeninfo(#20158,3,#20001,12,"23") -hasLocation(#20158,#20032) -#20159=* -tokeninfo(#20159,8,#20001,13,"+") -#20160=@"loc,{#10000},4,4,4,4" -locations_default(#20160,#10000,4,4,4,4) -hasLocation(#20159,#20160) +exprs(#20158,31,#20157,0,"1 << 2") +#20159=@"loc,{#10000},1,1,1,6" +locations_default(#20159,#10000,1,1,1,6) +hasLocation(#20158,#20159) +enclosingStmt(#20158,#20157) +exprContainers(#20158,#20001) +#20160=* +exprs(#20160,3,#20158,0,"1") +hasLocation(#20160,#20033) +enclosingStmt(#20160,#20157) +exprContainers(#20160,#20001) +literals("1","1",#20160) #20161=* -tokeninfo(#20161,3,#20001,14,"19") -hasLocation(#20161,#20034) +exprs(#20161,3,#20158,1,"2") +hasLocation(#20161,#20037) +enclosingStmt(#20161,#20157) +exprContainers(#20161,#20001) +literals("2","2",#20161) #20162=* -tokeninfo(#20162,8,#20001,15,";") -#20163=@"loc,{#10000},4,8,4,8" -locations_default(#20163,#10000,4,8,4,8) -hasLocation(#20162,#20163) -#20164=* -tokeninfo(#20164,3,#20001,16,"42") -hasLocation(#20164,#20040) +stmts(#20162,2,#20001,1,"2 >> 1;") +hasLocation(#20162,#20005) +stmtContainers(#20162,#20001) +#20163=* +exprs(#20163,32,#20162,0,"2 >> 1") +#20164=@"loc,{#10000},2,1,2,6" +locations_default(#20164,#10000,2,1,2,6) +hasLocation(#20163,#20164) +enclosingStmt(#20163,#20162) +exprContainers(#20163,#20001) #20165=* -tokeninfo(#20165,8,#20001,17,"-") -#20166=@"loc,{#10000},5,4,5,4" -locations_default(#20166,#10000,5,4,5,4) -hasLocation(#20165,#20166) +exprs(#20165,3,#20163,0,"2") +hasLocation(#20165,#20041) +enclosingStmt(#20165,#20162) +exprContainers(#20165,#20001) +literals("2","2",#20165) +#20166=* +exprs(#20166,3,#20163,1,"1") +hasLocation(#20166,#20045) +enclosingStmt(#20166,#20162) +exprContainers(#20166,#20001) +literals("1","1",#20166) #20167=* -tokeninfo(#20167,3,#20001,18,"19") -hasLocation(#20167,#20042) +stmts(#20167,2,#20001,2,"2 >>> 1;") +hasLocation(#20167,#20007) +stmtContainers(#20167,#20001) #20168=* -tokeninfo(#20168,8,#20001,19,";") -#20169=@"loc,{#10000},5,8,5,8" -locations_default(#20169,#10000,5,8,5,8) +exprs(#20168,33,#20167,0,"2 >>> 1") +#20169=@"loc,{#10000},3,1,3,7" +locations_default(#20169,#10000,3,1,3,7) hasLocation(#20168,#20169) +enclosingStmt(#20168,#20167) +exprContainers(#20168,#20001) #20170=* -tokeninfo(#20170,3,#20001,20,"2") -hasLocation(#20170,#20048) +exprs(#20170,3,#20168,0,"2") +hasLocation(#20170,#20049) +enclosingStmt(#20170,#20167) +exprContainers(#20170,#20001) +literals("2","2",#20170) #20171=* -tokeninfo(#20171,8,#20001,21,"*") -#20172=@"loc,{#10000},6,3,6,3" -locations_default(#20172,#10000,6,3,6,3) -hasLocation(#20171,#20172) +exprs(#20171,3,#20168,1,"1") +hasLocation(#20171,#20053) +enclosingStmt(#20171,#20167) +exprContainers(#20171,#20001) +literals("1","1",#20171) +#20172=* +stmts(#20172,2,#20001,3,"23 + 19;") +hasLocation(#20172,#20009) +stmtContainers(#20172,#20001) #20173=* -tokeninfo(#20173,3,#20001,22,"3") -hasLocation(#20173,#20050) -#20174=* -tokeninfo(#20174,8,#20001,23,";") -#20175=@"loc,{#10000},6,6,6,6" -locations_default(#20175,#10000,6,6,6,6) -hasLocation(#20174,#20175) +exprs(#20173,34,#20172,0,"23 + 19") +#20174=@"loc,{#10000},4,1,4,7" +locations_default(#20174,#10000,4,1,4,7) +hasLocation(#20173,#20174) +enclosingStmt(#20173,#20172) +exprContainers(#20173,#20001) +#20175=* +exprs(#20175,3,#20173,0,"23") +hasLocation(#20175,#20057) +enclosingStmt(#20175,#20172) +exprContainers(#20175,#20001) +literals("23","23",#20175) #20176=* -tokeninfo(#20176,3,#20001,24,"8") -hasLocation(#20176,#20056) +exprs(#20176,3,#20173,1,"19") +hasLocation(#20176,#20061) +enclosingStmt(#20176,#20172) +exprContainers(#20176,#20001) +literals("19","19",#20176) #20177=* -tokeninfo(#20177,8,#20001,25,"/") -#20178=@"loc,{#10000},7,3,7,3" -locations_default(#20178,#10000,7,3,7,3) -hasLocation(#20177,#20178) -#20179=* -tokeninfo(#20179,3,#20001,26,"5") -hasLocation(#20179,#20058) +stmts(#20177,2,#20001,4,"42 - 19;") +hasLocation(#20177,#20011) +stmtContainers(#20177,#20001) +#20178=* +exprs(#20178,35,#20177,0,"42 - 19") +#20179=@"loc,{#10000},5,1,5,7" +locations_default(#20179,#10000,5,1,5,7) +hasLocation(#20178,#20179) +enclosingStmt(#20178,#20177) +exprContainers(#20178,#20001) #20180=* -tokeninfo(#20180,8,#20001,27,";") -#20181=@"loc,{#10000},7,6,7,6" -locations_default(#20181,#10000,7,6,7,6) -hasLocation(#20180,#20181) +exprs(#20180,3,#20178,0,"42") +hasLocation(#20180,#20065) +enclosingStmt(#20180,#20177) +exprContainers(#20180,#20001) +literals("42","42",#20180) +#20181=* +exprs(#20181,3,#20178,1,"19") +hasLocation(#20181,#20069) +enclosingStmt(#20181,#20177) +exprContainers(#20181,#20001) +literals("19","19",#20181) #20182=* -tokeninfo(#20182,3,#20001,28,"2") -hasLocation(#20182,#20064) +stmts(#20182,2,#20001,5,"2 * 3;") +hasLocation(#20182,#20013) +stmtContainers(#20182,#20001) #20183=* -tokeninfo(#20183,8,#20001,29,"%") -#20184=@"loc,{#10000},8,3,8,3" -locations_default(#20184,#10000,8,3,8,3) +exprs(#20183,36,#20182,0,"2 * 3") +#20184=@"loc,{#10000},6,1,6,5" +locations_default(#20184,#10000,6,1,6,5) hasLocation(#20183,#20184) +enclosingStmt(#20183,#20182) +exprContainers(#20183,#20001) #20185=* -tokeninfo(#20185,3,#20001,30,"1") -hasLocation(#20185,#20066) +exprs(#20185,3,#20183,0,"2") +hasLocation(#20185,#20073) +enclosingStmt(#20185,#20182) +exprContainers(#20185,#20001) +literals("2","2",#20185) #20186=* -tokeninfo(#20186,8,#20001,31,";") -#20187=@"loc,{#10000},8,6,8,6" -locations_default(#20187,#10000,8,6,8,6) -hasLocation(#20186,#20187) +exprs(#20186,3,#20183,1,"3") +hasLocation(#20186,#20077) +enclosingStmt(#20186,#20182) +exprContainers(#20186,#20001) +literals("3","3",#20186) +#20187=* +stmts(#20187,2,#20001,6,"8 / 5;") +hasLocation(#20187,#20015) +stmtContainers(#20187,#20001) #20188=* -tokeninfo(#20188,3,#20001,32,"2") -hasLocation(#20188,#20072) -#20189=* -tokeninfo(#20189,8,#20001,33,"|") -#20190=@"loc,{#10000},9,3,9,3" -locations_default(#20190,#10000,9,3,9,3) -hasLocation(#20189,#20190) +exprs(#20188,37,#20187,0,"8 / 5") +#20189=@"loc,{#10000},7,1,7,5" +locations_default(#20189,#10000,7,1,7,5) +hasLocation(#20188,#20189) +enclosingStmt(#20188,#20187) +exprContainers(#20188,#20001) +#20190=* +exprs(#20190,3,#20188,0,"8") +hasLocation(#20190,#20081) +enclosingStmt(#20190,#20187) +exprContainers(#20190,#20001) +literals("8","8",#20190) #20191=* -tokeninfo(#20191,3,#20001,34,"3") -hasLocation(#20191,#20074) +exprs(#20191,3,#20188,1,"5") +hasLocation(#20191,#20085) +enclosingStmt(#20191,#20187) +exprContainers(#20191,#20001) +literals("5","5",#20191) #20192=* -tokeninfo(#20192,8,#20001,35,";") -#20193=@"loc,{#10000},9,6,9,6" -locations_default(#20193,#10000,9,6,9,6) -hasLocation(#20192,#20193) -#20194=* -tokeninfo(#20194,3,#20001,36,"2") -hasLocation(#20194,#20080) +stmts(#20192,2,#20001,7,"2 % 1;") +hasLocation(#20192,#20017) +stmtContainers(#20192,#20001) +#20193=* +exprs(#20193,38,#20192,0,"2 % 1") +#20194=@"loc,{#10000},8,1,8,5" +locations_default(#20194,#10000,8,1,8,5) +hasLocation(#20193,#20194) +enclosingStmt(#20193,#20192) +exprContainers(#20193,#20001) #20195=* -tokeninfo(#20195,8,#20001,37,"^") -#20196=@"loc,{#10000},10,3,10,3" -locations_default(#20196,#10000,10,3,10,3) -hasLocation(#20195,#20196) +exprs(#20195,3,#20193,0,"2") +hasLocation(#20195,#20089) +enclosingStmt(#20195,#20192) +exprContainers(#20195,#20001) +literals("2","2",#20195) +#20196=* +exprs(#20196,3,#20193,1,"1") +hasLocation(#20196,#20093) +enclosingStmt(#20196,#20192) +exprContainers(#20196,#20001) +literals("1","1",#20196) #20197=* -tokeninfo(#20197,3,#20001,38,"3") -hasLocation(#20197,#20082) +stmts(#20197,2,#20001,8,"2 | 3;") +hasLocation(#20197,#20019) +stmtContainers(#20197,#20001) #20198=* -tokeninfo(#20198,8,#20001,39,";") -#20199=@"loc,{#10000},10,6,10,6" -locations_default(#20199,#10000,10,6,10,6) +exprs(#20198,39,#20197,0,"2 | 3") +#20199=@"loc,{#10000},9,1,9,5" +locations_default(#20199,#10000,9,1,9,5) hasLocation(#20198,#20199) +enclosingStmt(#20198,#20197) +exprContainers(#20198,#20001) #20200=* -tokeninfo(#20200,3,#20001,40,"2") -hasLocation(#20200,#20088) +exprs(#20200,3,#20198,0,"2") +hasLocation(#20200,#20097) +enclosingStmt(#20200,#20197) +exprContainers(#20200,#20001) +literals("2","2",#20200) #20201=* -tokeninfo(#20201,8,#20001,41,"&") -#20202=@"loc,{#10000},11,3,11,3" -locations_default(#20202,#10000,11,3,11,3) -hasLocation(#20201,#20202) +exprs(#20201,3,#20198,1,"3") +hasLocation(#20201,#20101) +enclosingStmt(#20201,#20197) +exprContainers(#20201,#20001) +literals("3","3",#20201) +#20202=* +stmts(#20202,2,#20001,9,"2 ^ 3;") +hasLocation(#20202,#20021) +stmtContainers(#20202,#20001) #20203=* -tokeninfo(#20203,3,#20001,42,"3") -hasLocation(#20203,#20090) -#20204=* -tokeninfo(#20204,8,#20001,43,";") -#20205=@"loc,{#10000},11,6,11,6" -locations_default(#20205,#10000,11,6,11,6) -hasLocation(#20204,#20205) +exprs(#20203,40,#20202,0,"2 ^ 3") +#20204=@"loc,{#10000},10,1,10,5" +locations_default(#20204,#10000,10,1,10,5) +hasLocation(#20203,#20204) +enclosingStmt(#20203,#20202) +exprContainers(#20203,#20001) +#20205=* +exprs(#20205,3,#20203,0,"2") +hasLocation(#20205,#20105) +enclosingStmt(#20205,#20202) +exprContainers(#20205,#20001) +literals("2","2",#20205) #20206=* -tokeninfo(#20206,4,#20001,44,"'prototype'") -hasLocation(#20206,#20096) +exprs(#20206,3,#20203,1,"3") +hasLocation(#20206,#20109) +enclosingStmt(#20206,#20202) +exprContainers(#20206,#20001) +literals("3","3",#20206) #20207=* -tokeninfo(#20207,7,#20001,45,"in") -#20208=@"loc,{#10000},12,13,12,14" -locations_default(#20208,#10000,12,13,12,14) -hasLocation(#20207,#20208) -#20209=* -tokeninfo(#20209,6,#20001,46,"Object") -hasLocation(#20209,#20098) +stmts(#20207,2,#20001,10,"2 & 3;") +hasLocation(#20207,#20023) +stmtContainers(#20207,#20001) +#20208=* +exprs(#20208,41,#20207,0,"2 & 3") +#20209=@"loc,{#10000},11,1,11,5" +locations_default(#20209,#10000,11,1,11,5) +hasLocation(#20208,#20209) +enclosingStmt(#20208,#20207) +exprContainers(#20208,#20001) #20210=* -tokeninfo(#20210,8,#20001,47,";") -#20211=@"loc,{#10000},12,22,12,22" -locations_default(#20211,#10000,12,22,12,22) -hasLocation(#20210,#20211) +exprs(#20210,3,#20208,0,"2") +hasLocation(#20210,#20113) +enclosingStmt(#20210,#20207) +exprContainers(#20210,#20001) +literals("2","2",#20210) +#20211=* +exprs(#20211,3,#20208,1,"3") +hasLocation(#20211,#20117) +enclosingStmt(#20211,#20207) +exprContainers(#20211,#20001) +literals("3","3",#20211) #20212=* -tokeninfo(#20212,8,#20001,48,"[") -#20213=@"loc,{#10000},13,1,13,1" -locations_default(#20213,#10000,13,1,13,1) -hasLocation(#20212,#20213) -#20214=* -tokeninfo(#20214,8,#20001,49,"]") -#20215=@"loc,{#10000},13,2,13,2" -locations_default(#20215,#10000,13,2,13,2) -hasLocation(#20214,#20215) +stmts(#20212,2,#20001,11,"'protot ... Object;") +hasLocation(#20212,#20025) +stmtContainers(#20212,#20001) +#20213=* +exprs(#20213,42,#20212,0,"'protot ... Object") +#20214=@"loc,{#10000},12,1,12,21" +locations_default(#20214,#10000,12,1,12,21) +hasLocation(#20213,#20214) +enclosingStmt(#20213,#20212) +exprContainers(#20213,#20001) +#20215=* +exprs(#20215,4,#20213,0,"'prototype'") +hasLocation(#20215,#20121) +enclosingStmt(#20215,#20212) +exprContainers(#20215,#20001) +literals("prototype","'prototype'",#20215) #20216=* -tokeninfo(#20216,7,#20001,50,"instanceof") -#20217=@"loc,{#10000},13,4,13,13" -locations_default(#20217,#10000,13,4,13,13) -hasLocation(#20216,#20217) +exprs(#20216,79,#20213,1,"Object") +hasLocation(#20216,#20125) +enclosingStmt(#20216,#20212) +exprContainers(#20216,#20001) +literals("Object","Object",#20216) +#20217=@"var;{Object};{#20000}" +variables(#20217,"Object",#20000) +bind(#20216,#20217) #20218=* -tokeninfo(#20218,6,#20001,51,"Array") -hasLocation(#20218,#20107) +stmts(#20218,2,#20001,12,"[] instanceof Array;") +hasLocation(#20218,#20027) +stmtContainers(#20218,#20001) #20219=* -tokeninfo(#20219,8,#20001,52,";") -#20220=@"loc,{#10000},13,20,13,20" -locations_default(#20220,#10000,13,20,13,20) +exprs(#20219,43,#20218,0,"[] instanceof Array") +#20220=@"loc,{#10000},13,1,13,19" +locations_default(#20220,#10000,13,1,13,19) hasLocation(#20219,#20220) +enclosingStmt(#20219,#20218) +exprContainers(#20219,#20001) #20221=* -tokeninfo(#20221,3,#20001,53,"1") -hasLocation(#20221,#20114) -#20222=* -tokeninfo(#20222,8,#20001,54,"&&") -#20223=@"loc,{#10000},14,3,14,4" -locations_default(#20223,#10000,14,3,14,4) -hasLocation(#20222,#20223) -#20224=* -tokeninfo(#20224,3,#20001,55,"2") -hasLocation(#20224,#20116) +exprs(#20221,7,#20219,0,"[]") +#20222=@"loc,{#10000},13,1,13,2" +locations_default(#20222,#10000,13,1,13,2) +hasLocation(#20221,#20222) +enclosingStmt(#20221,#20218) +exprContainers(#20221,#20001) +arraySize(#20221,0) +#20223=* +exprs(#20223,79,#20219,1,"Array") +hasLocation(#20223,#20135) +enclosingStmt(#20223,#20218) +exprContainers(#20223,#20001) +literals("Array","Array",#20223) +#20224=@"var;{Array};{#20000}" +variables(#20224,"Array",#20000) +bind(#20223,#20224) #20225=* -tokeninfo(#20225,8,#20001,56,";") -#20226=@"loc,{#10000},14,7,14,7" -locations_default(#20226,#10000,14,7,14,7) -hasLocation(#20225,#20226) -#20227=* -tokeninfo(#20227,3,#20001,57,"1") -hasLocation(#20227,#20122) +stmts(#20225,2,#20001,13,"1 && 2;") +hasLocation(#20225,#20029) +stmtContainers(#20225,#20001) +#20226=* +exprs(#20226,44,#20225,0,"1 && 2") +#20227=@"loc,{#10000},14,1,14,6" +locations_default(#20227,#10000,14,1,14,6) +hasLocation(#20226,#20227) +enclosingStmt(#20226,#20225) +exprContainers(#20226,#20001) #20228=* -tokeninfo(#20228,8,#20001,58,"||") -#20229=@"loc,{#10000},15,3,15,4" -locations_default(#20229,#10000,15,3,15,4) -hasLocation(#20228,#20229) +exprs(#20228,3,#20226,0,"1") +hasLocation(#20228,#20139) +enclosingStmt(#20228,#20225) +exprContainers(#20228,#20001) +literals("1","1",#20228) +#20229=* +exprs(#20229,3,#20226,1,"2") +hasLocation(#20229,#20143) +enclosingStmt(#20229,#20225) +exprContainers(#20229,#20001) +literals("2","2",#20229) #20230=* -tokeninfo(#20230,3,#20001,59,"2") -hasLocation(#20230,#20124) +stmts(#20230,2,#20001,14,"1 || 2;") +hasLocation(#20230,#20031) +stmtContainers(#20230,#20001) #20231=* -tokeninfo(#20231,8,#20001,60,";") -#20232=@"loc,{#10000},15,7,15,7" -locations_default(#20232,#10000,15,7,15,7) +exprs(#20231,45,#20230,0,"1 || 2") +#20232=@"loc,{#10000},15,1,15,6" +locations_default(#20232,#10000,15,1,15,6) hasLocation(#20231,#20232) +enclosingStmt(#20231,#20230) +exprContainers(#20231,#20001) #20233=* -tokeninfo(#20233,0,#20001,61,"") -#20234=@"loc,{#10000},16,1,16,0" -locations_default(#20234,#10000,16,1,16,0) -hasLocation(#20233,#20234) +exprs(#20233,3,#20231,0,"1") +hasLocation(#20233,#20147) +enclosingStmt(#20233,#20230) +exprContainers(#20233,#20001) +literals("1","1",#20233) +#20234=* +exprs(#20234,3,#20231,1,"2") +hasLocation(#20234,#20151) +enclosingStmt(#20234,#20230) +exprContainers(#20234,#20001) +literals("2","2",#20234) #20235=* entry_cfg_node(#20235,#20001) #20236=@"loc,{#10000},1,1,1,0" @@ -774,67 +774,67 @@ locations_default(#20236,#10000,1,1,1,0) hasLocation(#20235,#20236) #20237=* exit_cfg_node(#20237,#20001) -hasLocation(#20237,#20234) -successor(#20117,#20119) -successor(#20119,#20121) -successor(#20121,#20237) -successor(#20123,#20237) -successor(#20109,#20111) -successor(#20111,#20113) -successor(#20113,#20115) -successor(#20115,#20117) -successor(#20100,#20104) -successor(#20106,#20102) -successor(#20104,#20106) -successor(#20102,#20109) -successor(#20091,#20095) -successor(#20097,#20093) -successor(#20095,#20097) -successor(#20093,#20100) -successor(#20083,#20087) -successor(#20089,#20085) -successor(#20087,#20089) -successor(#20085,#20091) -successor(#20075,#20079) -successor(#20081,#20077) -successor(#20079,#20081) -successor(#20077,#20083) -successor(#20067,#20071) -successor(#20073,#20069) -successor(#20071,#20073) -successor(#20069,#20075) -successor(#20059,#20063) -successor(#20065,#20061) -successor(#20063,#20065) -successor(#20061,#20067) -successor(#20051,#20055) -successor(#20057,#20053) -successor(#20055,#20057) -successor(#20053,#20059) -successor(#20043,#20047) -successor(#20049,#20045) -successor(#20047,#20049) -successor(#20045,#20051) -successor(#20035,#20039) -successor(#20041,#20037) -successor(#20039,#20041) -successor(#20037,#20043) -successor(#20027,#20031) -successor(#20033,#20029) -successor(#20031,#20033) -successor(#20029,#20035) -successor(#20019,#20023) -successor(#20025,#20021) -successor(#20023,#20025) -successor(#20021,#20027) -successor(#20011,#20015) -successor(#20017,#20013) -successor(#20015,#20017) -successor(#20013,#20019) -successor(#20003,#20007) -successor(#20009,#20005) -successor(#20007,#20009) -successor(#20005,#20011) -successor(#20235,#20003) +hasLocation(#20237,#20155) +successor(#20230,#20231) +successor(#20231,#20233) +successor(#20233,#20237) +successor(#20234,#20237) +successor(#20225,#20226) +successor(#20226,#20228) +successor(#20228,#20229) +successor(#20229,#20230) +successor(#20218,#20221) +successor(#20223,#20219) +successor(#20221,#20223) +successor(#20219,#20225) +successor(#20212,#20215) +successor(#20216,#20213) +successor(#20215,#20216) +successor(#20213,#20218) +successor(#20207,#20210) +successor(#20211,#20208) +successor(#20210,#20211) +successor(#20208,#20212) +successor(#20202,#20205) +successor(#20206,#20203) +successor(#20205,#20206) +successor(#20203,#20207) +successor(#20197,#20200) +successor(#20201,#20198) +successor(#20200,#20201) +successor(#20198,#20202) +successor(#20192,#20195) +successor(#20196,#20193) +successor(#20195,#20196) +successor(#20193,#20197) +successor(#20187,#20190) +successor(#20191,#20188) +successor(#20190,#20191) +successor(#20188,#20192) +successor(#20182,#20185) +successor(#20186,#20183) +successor(#20185,#20186) +successor(#20183,#20187) +successor(#20177,#20180) +successor(#20181,#20178) +successor(#20180,#20181) +successor(#20178,#20182) +successor(#20172,#20175) +successor(#20176,#20173) +successor(#20175,#20176) +successor(#20173,#20177) +successor(#20167,#20170) +successor(#20171,#20168) +successor(#20170,#20171) +successor(#20168,#20172) +successor(#20162,#20165) +successor(#20166,#20163) +successor(#20165,#20166) +successor(#20163,#20167) +successor(#20157,#20160) +successor(#20161,#20158) +successor(#20160,#20161) +successor(#20158,#20162) +successor(#20235,#20157) numlines(#10000,15,15,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/exprs/output/trap/comparison.js.trap b/javascript/extractor/tests/exprs/output/trap/comparison.js.trap index efa30966aa3..6eb20593145 100644 --- a/javascript/extractor/tests/exprs/output/trap/comparison.js.trap +++ b/javascript/extractor/tests/exprs/output/trap/comparison.js.trap @@ -9,408 +9,408 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,9,0" -locations_default(#20002,#10000,1,1,9,0) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"1 == 1;") -#20004=@"loc,{#10000},1,1,1,7" -locations_default(#20004,#10000,1,1,1,7) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,23,#20003,0,"1 == 1") -#20006=@"loc,{#10000},1,1,1,6" -locations_default(#20006,#10000,1,1,1,6) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -#20007=* -exprs(#20007,3,#20005,0,"1") -#20008=@"loc,{#10000},1,1,1,1" -locations_default(#20008,#10000,1,1,1,1) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20003) -exprContainers(#20007,#20001) -literals("1","1",#20007) -#20009=* -exprs(#20009,3,#20005,1,"1") -#20010=@"loc,{#10000},1,6,1,6" -locations_default(#20010,#10000,1,6,1,6) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20003) -exprContainers(#20009,#20001) -literals("1","1",#20009) -#20011=* -stmts(#20011,2,#20001,1,"1 != 2;") -#20012=@"loc,{#10000},2,1,2,7" -locations_default(#20012,#10000,2,1,2,7) -hasLocation(#20011,#20012) -stmtContainers(#20011,#20001) -#20013=* -exprs(#20013,24,#20011,0,"1 != 2") -#20014=@"loc,{#10000},2,1,2,6" -locations_default(#20014,#10000,2,1,2,6) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20011) -exprContainers(#20013,#20001) -#20015=* -exprs(#20015,3,#20013,0,"1") -#20016=@"loc,{#10000},2,1,2,1" -locations_default(#20016,#10000,2,1,2,1) -hasLocation(#20015,#20016) -enclosingStmt(#20015,#20011) -exprContainers(#20015,#20001) -literals("1","1",#20015) -#20017=* -exprs(#20017,3,#20013,1,"2") -#20018=@"loc,{#10000},2,6,2,6" -locations_default(#20018,#10000,2,6,2,6) -hasLocation(#20017,#20018) -enclosingStmt(#20017,#20011) -exprContainers(#20017,#20001) -literals("2","2",#20017) -#20019=* -stmts(#20019,2,#20001,2,"1 === 1;") -#20020=@"loc,{#10000},3,1,3,8" -locations_default(#20020,#10000,3,1,3,8) -hasLocation(#20019,#20020) -stmtContainers(#20019,#20001) -#20021=* -exprs(#20021,25,#20019,0,"1 === 1") -#20022=@"loc,{#10000},3,1,3,7" -locations_default(#20022,#10000,3,1,3,7) -hasLocation(#20021,#20022) -enclosingStmt(#20021,#20019) -exprContainers(#20021,#20001) -#20023=* -exprs(#20023,3,#20021,0,"1") -#20024=@"loc,{#10000},3,1,3,1" -locations_default(#20024,#10000,3,1,3,1) -hasLocation(#20023,#20024) -enclosingStmt(#20023,#20019) -exprContainers(#20023,#20001) -literals("1","1",#20023) -#20025=* -exprs(#20025,3,#20021,1,"1") -#20026=@"loc,{#10000},3,7,3,7" -locations_default(#20026,#10000,3,7,3,7) -hasLocation(#20025,#20026) -enclosingStmt(#20025,#20019) -exprContainers(#20025,#20001) -literals("1","1",#20025) -#20027=* -stmts(#20027,2,#20001,3,"1 !== 2;") -#20028=@"loc,{#10000},4,1,4,8" -locations_default(#20028,#10000,4,1,4,8) -hasLocation(#20027,#20028) -stmtContainers(#20027,#20001) -#20029=* -exprs(#20029,26,#20027,0,"1 !== 2") -#20030=@"loc,{#10000},4,1,4,7" -locations_default(#20030,#10000,4,1,4,7) -hasLocation(#20029,#20030) -enclosingStmt(#20029,#20027) -exprContainers(#20029,#20001) -#20031=* -exprs(#20031,3,#20029,0,"1") -#20032=@"loc,{#10000},4,1,4,1" -locations_default(#20032,#10000,4,1,4,1) -hasLocation(#20031,#20032) -enclosingStmt(#20031,#20027) -exprContainers(#20031,#20001) -literals("1","1",#20031) -#20033=* -exprs(#20033,3,#20029,1,"2") -#20034=@"loc,{#10000},4,7,4,7" -locations_default(#20034,#10000,4,7,4,7) -hasLocation(#20033,#20034) -enclosingStmt(#20033,#20027) -exprContainers(#20033,#20001) -literals("2","2",#20033) -#20035=* -stmts(#20035,2,#20001,4,"1 < 2;") -#20036=@"loc,{#10000},5,1,5,6" -locations_default(#20036,#10000,5,1,5,6) -hasLocation(#20035,#20036) -stmtContainers(#20035,#20001) -#20037=* -exprs(#20037,27,#20035,0,"1 < 2") -#20038=@"loc,{#10000},5,1,5,5" -locations_default(#20038,#10000,5,1,5,5) -hasLocation(#20037,#20038) -enclosingStmt(#20037,#20035) -exprContainers(#20037,#20001) -#20039=* -exprs(#20039,3,#20037,0,"1") -#20040=@"loc,{#10000},5,1,5,1" -locations_default(#20040,#10000,5,1,5,1) -hasLocation(#20039,#20040) -enclosingStmt(#20039,#20035) -exprContainers(#20039,#20001) -literals("1","1",#20039) -#20041=* -exprs(#20041,3,#20037,1,"2") -#20042=@"loc,{#10000},5,5,5,5" -locations_default(#20042,#10000,5,5,5,5) -hasLocation(#20041,#20042) -enclosingStmt(#20041,#20035) -exprContainers(#20041,#20001) -literals("2","2",#20041) -#20043=* -stmts(#20043,2,#20001,5,"1 <= 2;") -#20044=@"loc,{#10000},6,1,6,7" -locations_default(#20044,#10000,6,1,6,7) -hasLocation(#20043,#20044) -stmtContainers(#20043,#20001) -#20045=* -exprs(#20045,28,#20043,0,"1 <= 2") -#20046=@"loc,{#10000},6,1,6,6" -locations_default(#20046,#10000,6,1,6,6) -hasLocation(#20045,#20046) -enclosingStmt(#20045,#20043) -exprContainers(#20045,#20001) -#20047=* -exprs(#20047,3,#20045,0,"1") -#20048=@"loc,{#10000},6,1,6,1" -locations_default(#20048,#10000,6,1,6,1) -hasLocation(#20047,#20048) -enclosingStmt(#20047,#20043) -exprContainers(#20047,#20001) -literals("1","1",#20047) -#20049=* -exprs(#20049,3,#20045,1,"2") -#20050=@"loc,{#10000},6,6,6,6" -locations_default(#20050,#10000,6,6,6,6) -hasLocation(#20049,#20050) -enclosingStmt(#20049,#20043) -exprContainers(#20049,#20001) -literals("2","2",#20049) -#20051=* -stmts(#20051,2,#20001,6,"2 > 1;") -#20052=@"loc,{#10000},7,1,7,6" -locations_default(#20052,#10000,7,1,7,6) -hasLocation(#20051,#20052) -stmtContainers(#20051,#20001) -#20053=* -exprs(#20053,29,#20051,0,"2 > 1") -#20054=@"loc,{#10000},7,1,7,5" -locations_default(#20054,#10000,7,1,7,5) -hasLocation(#20053,#20054) -enclosingStmt(#20053,#20051) -exprContainers(#20053,#20001) -#20055=* -exprs(#20055,3,#20053,0,"2") -#20056=@"loc,{#10000},7,1,7,1" -locations_default(#20056,#10000,7,1,7,1) -hasLocation(#20055,#20056) -enclosingStmt(#20055,#20051) -exprContainers(#20055,#20001) -literals("2","2",#20055) -#20057=* -exprs(#20057,3,#20053,1,"1") -#20058=@"loc,{#10000},7,5,7,5" -locations_default(#20058,#10000,7,5,7,5) -hasLocation(#20057,#20058) -enclosingStmt(#20057,#20051) -exprContainers(#20057,#20001) -literals("1","1",#20057) -#20059=* -stmts(#20059,2,#20001,7,"2 >= 1;") -#20060=@"loc,{#10000},8,1,8,7" -locations_default(#20060,#10000,8,1,8,7) -hasLocation(#20059,#20060) -stmtContainers(#20059,#20001) -#20061=* -exprs(#20061,30,#20059,0,"2 >= 1") -#20062=@"loc,{#10000},8,1,8,6" -locations_default(#20062,#10000,8,1,8,6) -hasLocation(#20061,#20062) -enclosingStmt(#20061,#20059) -exprContainers(#20061,#20001) -#20063=* -exprs(#20063,3,#20061,0,"2") -#20064=@"loc,{#10000},8,1,8,1" -locations_default(#20064,#10000,8,1,8,1) -hasLocation(#20063,#20064) -enclosingStmt(#20063,#20059) -exprContainers(#20063,#20001) -literals("2","2",#20063) -#20065=* -exprs(#20065,3,#20061,1,"1") -#20066=@"loc,{#10000},8,6,8,6" -locations_default(#20066,#10000,8,6,8,6) -hasLocation(#20065,#20066) -enclosingStmt(#20065,#20059) -exprContainers(#20065,#20001) -literals("1","1",#20065) -#20067=* -lines(#20067,#20001,"1 == 1;"," +#20002=* +lines(#20002,#20001,"1 == 1;"," ") -hasLocation(#20067,#20004) -#20068=* -lines(#20068,#20001,"1 != 2;"," +#20003=@"loc,{#10000},1,1,1,7" +locations_default(#20003,#10000,1,1,1,7) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"1 != 2;"," ") -hasLocation(#20068,#20012) -#20069=* -lines(#20069,#20001,"1 === 1;"," +#20005=@"loc,{#10000},2,1,2,7" +locations_default(#20005,#10000,2,1,2,7) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"1 === 1;"," ") -hasLocation(#20069,#20020) -#20070=* -lines(#20070,#20001,"1 !== 2;"," +#20007=@"loc,{#10000},3,1,3,8" +locations_default(#20007,#10000,3,1,3,8) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001,"1 !== 2;"," ") -hasLocation(#20070,#20028) -#20071=* -lines(#20071,#20001,"1 < 2;"," +#20009=@"loc,{#10000},4,1,4,8" +locations_default(#20009,#10000,4,1,4,8) +hasLocation(#20008,#20009) +#20010=* +lines(#20010,#20001,"1 < 2;"," ") -hasLocation(#20071,#20036) -#20072=* -lines(#20072,#20001,"1 <= 2;"," +#20011=@"loc,{#10000},5,1,5,6" +locations_default(#20011,#10000,5,1,5,6) +hasLocation(#20010,#20011) +#20012=* +lines(#20012,#20001,"1 <= 2;"," ") -hasLocation(#20072,#20044) -#20073=* -lines(#20073,#20001,"2 > 1;"," +#20013=@"loc,{#10000},6,1,6,7" +locations_default(#20013,#10000,6,1,6,7) +hasLocation(#20012,#20013) +#20014=* +lines(#20014,#20001,"2 > 1;"," ") -hasLocation(#20073,#20052) -#20074=* -lines(#20074,#20001,"2 >= 1;"," +#20015=@"loc,{#10000},7,1,7,6" +locations_default(#20015,#10000,7,1,7,6) +hasLocation(#20014,#20015) +#20016=* +lines(#20016,#20001,"2 >= 1;"," ") -hasLocation(#20074,#20060) +#20017=@"loc,{#10000},8,1,8,7" +locations_default(#20017,#10000,8,1,8,7) +hasLocation(#20016,#20017) numlines(#20001,8,8,0) -#20075=* -tokeninfo(#20075,3,#20001,0,"1") -hasLocation(#20075,#20008) +#20018=* +tokeninfo(#20018,3,#20001,0,"1") +#20019=@"loc,{#10000},1,1,1,1" +locations_default(#20019,#10000,1,1,1,1) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,1,"==") +#20021=@"loc,{#10000},1,3,1,4" +locations_default(#20021,#10000,1,3,1,4) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,3,#20001,2,"1") +#20023=@"loc,{#10000},1,6,1,6" +locations_default(#20023,#10000,1,6,1,6) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,3,";") +#20025=@"loc,{#10000},1,7,1,7" +locations_default(#20025,#10000,1,7,1,7) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,3,#20001,4,"1") +#20027=@"loc,{#10000},2,1,2,1" +locations_default(#20027,#10000,2,1,2,1) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,5,"!=") +#20029=@"loc,{#10000},2,3,2,4" +locations_default(#20029,#10000,2,3,2,4) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,3,#20001,6,"2") +#20031=@"loc,{#10000},2,6,2,6" +locations_default(#20031,#10000,2,6,2,6) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,7,";") +#20033=@"loc,{#10000},2,7,2,7" +locations_default(#20033,#10000,2,7,2,7) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,3,#20001,8,"1") +#20035=@"loc,{#10000},3,1,3,1" +locations_default(#20035,#10000,3,1,3,1) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,9,"===") +#20037=@"loc,{#10000},3,3,3,5" +locations_default(#20037,#10000,3,3,3,5) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,3,#20001,10,"1") +#20039=@"loc,{#10000},3,7,3,7" +locations_default(#20039,#10000,3,7,3,7) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,11,";") +#20041=@"loc,{#10000},3,8,3,8" +locations_default(#20041,#10000,3,8,3,8) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,3,#20001,12,"1") +#20043=@"loc,{#10000},4,1,4,1" +locations_default(#20043,#10000,4,1,4,1) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,13,"!==") +#20045=@"loc,{#10000},4,3,4,5" +locations_default(#20045,#10000,4,3,4,5) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,3,#20001,14,"2") +#20047=@"loc,{#10000},4,7,4,7" +locations_default(#20047,#10000,4,7,4,7) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,8,#20001,15,";") +#20049=@"loc,{#10000},4,8,4,8" +locations_default(#20049,#10000,4,8,4,8) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,3,#20001,16,"1") +#20051=@"loc,{#10000},5,1,5,1" +locations_default(#20051,#10000,5,1,5,1) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,8,#20001,17,"<") +#20053=@"loc,{#10000},5,3,5,3" +locations_default(#20053,#10000,5,3,5,3) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,3,#20001,18,"2") +#20055=@"loc,{#10000},5,5,5,5" +locations_default(#20055,#10000,5,5,5,5) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,8,#20001,19,";") +#20057=@"loc,{#10000},5,6,5,6" +locations_default(#20057,#10000,5,6,5,6) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,3,#20001,20,"1") +#20059=@"loc,{#10000},6,1,6,1" +locations_default(#20059,#10000,6,1,6,1) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,8,#20001,21,"<=") +#20061=@"loc,{#10000},6,3,6,4" +locations_default(#20061,#10000,6,3,6,4) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,3,#20001,22,"2") +#20063=@"loc,{#10000},6,6,6,6" +locations_default(#20063,#10000,6,6,6,6) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,8,#20001,23,";") +#20065=@"loc,{#10000},6,7,6,7" +locations_default(#20065,#10000,6,7,6,7) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,3,#20001,24,"2") +#20067=@"loc,{#10000},7,1,7,1" +locations_default(#20067,#10000,7,1,7,1) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,8,#20001,25,">") +#20069=@"loc,{#10000},7,3,7,3" +locations_default(#20069,#10000,7,3,7,3) +hasLocation(#20068,#20069) +#20070=* +tokeninfo(#20070,3,#20001,26,"1") +#20071=@"loc,{#10000},7,5,7,5" +locations_default(#20071,#10000,7,5,7,5) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,8,#20001,27,";") +#20073=@"loc,{#10000},7,6,7,6" +locations_default(#20073,#10000,7,6,7,6) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,3,#20001,28,"2") +#20075=@"loc,{#10000},8,1,8,1" +locations_default(#20075,#10000,8,1,8,1) +hasLocation(#20074,#20075) #20076=* -tokeninfo(#20076,8,#20001,1,"==") -#20077=@"loc,{#10000},1,3,1,4" -locations_default(#20077,#10000,1,3,1,4) +tokeninfo(#20076,8,#20001,29,">=") +#20077=@"loc,{#10000},8,3,8,4" +locations_default(#20077,#10000,8,3,8,4) hasLocation(#20076,#20077) #20078=* -tokeninfo(#20078,3,#20001,2,"1") -hasLocation(#20078,#20010) -#20079=* -tokeninfo(#20079,8,#20001,3,";") -#20080=@"loc,{#10000},1,7,1,7" -locations_default(#20080,#10000,1,7,1,7) -hasLocation(#20079,#20080) -#20081=* -tokeninfo(#20081,3,#20001,4,"1") -hasLocation(#20081,#20016) +tokeninfo(#20078,3,#20001,30,"1") +#20079=@"loc,{#10000},8,6,8,6" +locations_default(#20079,#10000,8,6,8,6) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,8,#20001,31,";") +#20081=@"loc,{#10000},8,7,8,7" +locations_default(#20081,#10000,8,7,8,7) +hasLocation(#20080,#20081) #20082=* -tokeninfo(#20082,8,#20001,5,"!=") -#20083=@"loc,{#10000},2,3,2,4" -locations_default(#20083,#10000,2,3,2,4) +tokeninfo(#20082,0,#20001,32,"") +#20083=@"loc,{#10000},9,1,9,0" +locations_default(#20083,#10000,9,1,9,0) hasLocation(#20082,#20083) -#20084=* -tokeninfo(#20084,3,#20001,6,"2") -hasLocation(#20084,#20018) +toplevels(#20001,0) +#20084=@"loc,{#10000},1,1,9,0" +locations_default(#20084,#10000,1,1,9,0) +hasLocation(#20001,#20084) #20085=* -tokeninfo(#20085,8,#20001,7,";") -#20086=@"loc,{#10000},2,7,2,7" -locations_default(#20086,#10000,2,7,2,7) -hasLocation(#20085,#20086) -#20087=* -tokeninfo(#20087,3,#20001,8,"1") -hasLocation(#20087,#20024) +stmts(#20085,2,#20001,0,"1 == 1;") +hasLocation(#20085,#20003) +stmtContainers(#20085,#20001) +#20086=* +exprs(#20086,23,#20085,0,"1 == 1") +#20087=@"loc,{#10000},1,1,1,6" +locations_default(#20087,#10000,1,1,1,6) +hasLocation(#20086,#20087) +enclosingStmt(#20086,#20085) +exprContainers(#20086,#20001) #20088=* -tokeninfo(#20088,8,#20001,9,"===") -#20089=@"loc,{#10000},3,3,3,5" -locations_default(#20089,#10000,3,3,3,5) -hasLocation(#20088,#20089) +exprs(#20088,3,#20086,0,"1") +hasLocation(#20088,#20019) +enclosingStmt(#20088,#20085) +exprContainers(#20088,#20001) +literals("1","1",#20088) +#20089=* +exprs(#20089,3,#20086,1,"1") +hasLocation(#20089,#20023) +enclosingStmt(#20089,#20085) +exprContainers(#20089,#20001) +literals("1","1",#20089) #20090=* -tokeninfo(#20090,3,#20001,10,"1") -hasLocation(#20090,#20026) +stmts(#20090,2,#20001,1,"1 != 2;") +hasLocation(#20090,#20005) +stmtContainers(#20090,#20001) #20091=* -tokeninfo(#20091,8,#20001,11,";") -#20092=@"loc,{#10000},3,8,3,8" -locations_default(#20092,#10000,3,8,3,8) +exprs(#20091,24,#20090,0,"1 != 2") +#20092=@"loc,{#10000},2,1,2,6" +locations_default(#20092,#10000,2,1,2,6) hasLocation(#20091,#20092) +enclosingStmt(#20091,#20090) +exprContainers(#20091,#20001) #20093=* -tokeninfo(#20093,3,#20001,12,"1") -hasLocation(#20093,#20032) +exprs(#20093,3,#20091,0,"1") +hasLocation(#20093,#20027) +enclosingStmt(#20093,#20090) +exprContainers(#20093,#20001) +literals("1","1",#20093) #20094=* -tokeninfo(#20094,8,#20001,13,"!==") -#20095=@"loc,{#10000},4,3,4,5" -locations_default(#20095,#10000,4,3,4,5) -hasLocation(#20094,#20095) +exprs(#20094,3,#20091,1,"2") +hasLocation(#20094,#20031) +enclosingStmt(#20094,#20090) +exprContainers(#20094,#20001) +literals("2","2",#20094) +#20095=* +stmts(#20095,2,#20001,2,"1 === 1;") +hasLocation(#20095,#20007) +stmtContainers(#20095,#20001) #20096=* -tokeninfo(#20096,3,#20001,14,"2") -hasLocation(#20096,#20034) -#20097=* -tokeninfo(#20097,8,#20001,15,";") -#20098=@"loc,{#10000},4,8,4,8" -locations_default(#20098,#10000,4,8,4,8) -hasLocation(#20097,#20098) +exprs(#20096,25,#20095,0,"1 === 1") +#20097=@"loc,{#10000},3,1,3,7" +locations_default(#20097,#10000,3,1,3,7) +hasLocation(#20096,#20097) +enclosingStmt(#20096,#20095) +exprContainers(#20096,#20001) +#20098=* +exprs(#20098,3,#20096,0,"1") +hasLocation(#20098,#20035) +enclosingStmt(#20098,#20095) +exprContainers(#20098,#20001) +literals("1","1",#20098) #20099=* -tokeninfo(#20099,3,#20001,16,"1") -hasLocation(#20099,#20040) +exprs(#20099,3,#20096,1,"1") +hasLocation(#20099,#20039) +enclosingStmt(#20099,#20095) +exprContainers(#20099,#20001) +literals("1","1",#20099) #20100=* -tokeninfo(#20100,8,#20001,17,"<") -#20101=@"loc,{#10000},5,3,5,3" -locations_default(#20101,#10000,5,3,5,3) -hasLocation(#20100,#20101) -#20102=* -tokeninfo(#20102,3,#20001,18,"2") -hasLocation(#20102,#20042) +stmts(#20100,2,#20001,3,"1 !== 2;") +hasLocation(#20100,#20009) +stmtContainers(#20100,#20001) +#20101=* +exprs(#20101,26,#20100,0,"1 !== 2") +#20102=@"loc,{#10000},4,1,4,7" +locations_default(#20102,#10000,4,1,4,7) +hasLocation(#20101,#20102) +enclosingStmt(#20101,#20100) +exprContainers(#20101,#20001) #20103=* -tokeninfo(#20103,8,#20001,19,";") -#20104=@"loc,{#10000},5,6,5,6" -locations_default(#20104,#10000,5,6,5,6) -hasLocation(#20103,#20104) +exprs(#20103,3,#20101,0,"1") +hasLocation(#20103,#20043) +enclosingStmt(#20103,#20100) +exprContainers(#20103,#20001) +literals("1","1",#20103) +#20104=* +exprs(#20104,3,#20101,1,"2") +hasLocation(#20104,#20047) +enclosingStmt(#20104,#20100) +exprContainers(#20104,#20001) +literals("2","2",#20104) #20105=* -tokeninfo(#20105,3,#20001,20,"1") -hasLocation(#20105,#20048) +stmts(#20105,2,#20001,4,"1 < 2;") +hasLocation(#20105,#20011) +stmtContainers(#20105,#20001) #20106=* -tokeninfo(#20106,8,#20001,21,"<=") -#20107=@"loc,{#10000},6,3,6,4" -locations_default(#20107,#10000,6,3,6,4) +exprs(#20106,27,#20105,0,"1 < 2") +#20107=@"loc,{#10000},5,1,5,5" +locations_default(#20107,#10000,5,1,5,5) hasLocation(#20106,#20107) +enclosingStmt(#20106,#20105) +exprContainers(#20106,#20001) #20108=* -tokeninfo(#20108,3,#20001,22,"2") -hasLocation(#20108,#20050) +exprs(#20108,3,#20106,0,"1") +hasLocation(#20108,#20051) +enclosingStmt(#20108,#20105) +exprContainers(#20108,#20001) +literals("1","1",#20108) #20109=* -tokeninfo(#20109,8,#20001,23,";") -#20110=@"loc,{#10000},6,7,6,7" -locations_default(#20110,#10000,6,7,6,7) -hasLocation(#20109,#20110) +exprs(#20109,3,#20106,1,"2") +hasLocation(#20109,#20055) +enclosingStmt(#20109,#20105) +exprContainers(#20109,#20001) +literals("2","2",#20109) +#20110=* +stmts(#20110,2,#20001,5,"1 <= 2;") +hasLocation(#20110,#20013) +stmtContainers(#20110,#20001) #20111=* -tokeninfo(#20111,3,#20001,24,"2") -hasLocation(#20111,#20056) -#20112=* -tokeninfo(#20112,8,#20001,25,">") -#20113=@"loc,{#10000},7,3,7,3" -locations_default(#20113,#10000,7,3,7,3) -hasLocation(#20112,#20113) +exprs(#20111,28,#20110,0,"1 <= 2") +#20112=@"loc,{#10000},6,1,6,6" +locations_default(#20112,#10000,6,1,6,6) +hasLocation(#20111,#20112) +enclosingStmt(#20111,#20110) +exprContainers(#20111,#20001) +#20113=* +exprs(#20113,3,#20111,0,"1") +hasLocation(#20113,#20059) +enclosingStmt(#20113,#20110) +exprContainers(#20113,#20001) +literals("1","1",#20113) #20114=* -tokeninfo(#20114,3,#20001,26,"1") -hasLocation(#20114,#20058) +exprs(#20114,3,#20111,1,"2") +hasLocation(#20114,#20063) +enclosingStmt(#20114,#20110) +exprContainers(#20114,#20001) +literals("2","2",#20114) #20115=* -tokeninfo(#20115,8,#20001,27,";") -#20116=@"loc,{#10000},7,6,7,6" -locations_default(#20116,#10000,7,6,7,6) -hasLocation(#20115,#20116) -#20117=* -tokeninfo(#20117,3,#20001,28,"2") -hasLocation(#20117,#20064) +stmts(#20115,2,#20001,6,"2 > 1;") +hasLocation(#20115,#20015) +stmtContainers(#20115,#20001) +#20116=* +exprs(#20116,29,#20115,0,"2 > 1") +#20117=@"loc,{#10000},7,1,7,5" +locations_default(#20117,#10000,7,1,7,5) +hasLocation(#20116,#20117) +enclosingStmt(#20116,#20115) +exprContainers(#20116,#20001) #20118=* -tokeninfo(#20118,8,#20001,29,">=") -#20119=@"loc,{#10000},8,3,8,4" -locations_default(#20119,#10000,8,3,8,4) -hasLocation(#20118,#20119) +exprs(#20118,3,#20116,0,"2") +hasLocation(#20118,#20067) +enclosingStmt(#20118,#20115) +exprContainers(#20118,#20001) +literals("2","2",#20118) +#20119=* +exprs(#20119,3,#20116,1,"1") +hasLocation(#20119,#20071) +enclosingStmt(#20119,#20115) +exprContainers(#20119,#20001) +literals("1","1",#20119) #20120=* -tokeninfo(#20120,3,#20001,30,"1") -hasLocation(#20120,#20066) +stmts(#20120,2,#20001,7,"2 >= 1;") +hasLocation(#20120,#20017) +stmtContainers(#20120,#20001) #20121=* -tokeninfo(#20121,8,#20001,31,";") -#20122=@"loc,{#10000},8,7,8,7" -locations_default(#20122,#10000,8,7,8,7) +exprs(#20121,30,#20120,0,"2 >= 1") +#20122=@"loc,{#10000},8,1,8,6" +locations_default(#20122,#10000,8,1,8,6) hasLocation(#20121,#20122) +enclosingStmt(#20121,#20120) +exprContainers(#20121,#20001) #20123=* -tokeninfo(#20123,0,#20001,32,"") -#20124=@"loc,{#10000},9,1,9,0" -locations_default(#20124,#10000,9,1,9,0) -hasLocation(#20123,#20124) +exprs(#20123,3,#20121,0,"2") +hasLocation(#20123,#20075) +enclosingStmt(#20123,#20120) +exprContainers(#20123,#20001) +literals("2","2",#20123) +#20124=* +exprs(#20124,3,#20121,1,"1") +hasLocation(#20124,#20079) +enclosingStmt(#20124,#20120) +exprContainers(#20124,#20001) +literals("1","1",#20124) #20125=* entry_cfg_node(#20125,#20001) #20126=@"loc,{#10000},1,1,1,0" @@ -418,39 +418,39 @@ locations_default(#20126,#10000,1,1,1,0) hasLocation(#20125,#20126) #20127=* exit_cfg_node(#20127,#20001) -hasLocation(#20127,#20124) -successor(#20059,#20063) -successor(#20065,#20061) -successor(#20063,#20065) -successor(#20061,#20127) -successor(#20051,#20055) -successor(#20057,#20053) -successor(#20055,#20057) -successor(#20053,#20059) -successor(#20043,#20047) -successor(#20049,#20045) -successor(#20047,#20049) -successor(#20045,#20051) -successor(#20035,#20039) -successor(#20041,#20037) -successor(#20039,#20041) -successor(#20037,#20043) -successor(#20027,#20031) -successor(#20033,#20029) -successor(#20031,#20033) -successor(#20029,#20035) -successor(#20019,#20023) -successor(#20025,#20021) -successor(#20023,#20025) -successor(#20021,#20027) -successor(#20011,#20015) -successor(#20017,#20013) -successor(#20015,#20017) -successor(#20013,#20019) -successor(#20003,#20007) -successor(#20009,#20005) -successor(#20007,#20009) -successor(#20005,#20011) -successor(#20125,#20003) +hasLocation(#20127,#20083) +successor(#20120,#20123) +successor(#20124,#20121) +successor(#20123,#20124) +successor(#20121,#20127) +successor(#20115,#20118) +successor(#20119,#20116) +successor(#20118,#20119) +successor(#20116,#20120) +successor(#20110,#20113) +successor(#20114,#20111) +successor(#20113,#20114) +successor(#20111,#20115) +successor(#20105,#20108) +successor(#20109,#20106) +successor(#20108,#20109) +successor(#20106,#20110) +successor(#20100,#20103) +successor(#20104,#20101) +successor(#20103,#20104) +successor(#20101,#20105) +successor(#20095,#20098) +successor(#20099,#20096) +successor(#20098,#20099) +successor(#20096,#20100) +successor(#20090,#20093) +successor(#20094,#20091) +successor(#20093,#20094) +successor(#20091,#20095) +successor(#20085,#20088) +successor(#20089,#20086) +successor(#20088,#20089) +successor(#20086,#20090) +successor(#20125,#20085) numlines(#10000,8,8,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/exprs/output/trap/fnnesting.js.trap b/javascript/extractor/tests/exprs/output/trap/fnnesting.js.trap index e38676531c2..5f08bfd8314 100644 --- a/javascript/extractor/tests/exprs/output/trap/fnnesting.js.trap +++ b/javascript/extractor/tests/exprs/output/trap/fnnesting.js.trap @@ -9,121 +9,120 @@ 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,"f(function(){}, 23);") -hasLocation(#20003,#20002) -stmtContainers(#20003,#20001) -#20004=* -exprs(#20004,13,#20003,0,"f(function(){}, 23)") -#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,79,#20004,-1,"f") -#20007=@"loc,{#10000},1,1,1,1" -locations_default(#20007,#10000,1,1,1,1) -hasLocation(#20006,#20007) -enclosingStmt(#20006,#20003) -exprContainers(#20006,#20001) -literals("f","f",#20006) -#20008=@"var;{f};{#20000}" -variables(#20008,"f",#20000) -bind(#20006,#20008) -#20009=* -exprs(#20009,9,#20004,0,"function(){}") -#20010=@"loc,{#10000},1,3,1,14" -locations_default(#20010,#10000,1,3,1,14) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20003) -exprContainers(#20009,#20001) -#20011=* -scopes(#20011,1) -scopenodes(#20009,#20011) -scopenesting(#20011,#20000) -#20012=@"var;{arguments};{#20011}" -variables(#20012,"arguments",#20011) -isArgumentsObject(#20012) -#20013=* -stmts(#20013,1,#20009,-2,"{}") -#20014=@"loc,{#10000},1,13,1,14" -locations_default(#20014,#10000,1,13,1,14) -hasLocation(#20013,#20014) -stmtContainers(#20013,#20009) -numlines(#20009,1,1,0) -#20015=* -exprs(#20015,3,#20004,1,"23") -#20016=@"loc,{#10000},1,17,1,18" -locations_default(#20016,#10000,1,17,1,18) -hasLocation(#20015,#20016) -enclosingStmt(#20015,#20003) -exprContainers(#20015,#20001) -literals("23","23",#20015) -#20017=* -lines(#20017,#20001,"f(function(){}, 23);","") -hasLocation(#20017,#20002) +#20002=* +lines(#20002,#20001,"f(function(){}, 23);","") +#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,6,#20001,0,"f") +#20005=@"loc,{#10000},1,1,1,1" +locations_default(#20005,#10000,1,1,1,1) +hasLocation(#20004,#20005) +#20006=* +tokeninfo(#20006,8,#20001,1,"(") +#20007=@"loc,{#10000},1,2,1,2" +locations_default(#20007,#10000,1,2,1,2) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,7,#20001,2,"function") +#20009=@"loc,{#10000},1,3,1,10" +locations_default(#20009,#10000,1,3,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,8,#20001,4,")") +#20013=@"loc,{#10000},1,12,1,12" +locations_default(#20013,#10000,1,12,1,12) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,5,"{") +#20015=@"loc,{#10000},1,13,1,13" +locations_default(#20015,#10000,1,13,1,13) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,6,"}") +#20017=@"loc,{#10000},1,14,1,14" +locations_default(#20017,#10000,1,14,1,14) +hasLocation(#20016,#20017) #20018=* -tokeninfo(#20018,6,#20001,0,"f") -hasLocation(#20018,#20007) -#20019=* -tokeninfo(#20019,8,#20001,1,"(") -#20020=@"loc,{#10000},1,2,1,2" -locations_default(#20020,#10000,1,2,1,2) -hasLocation(#20019,#20020) -#20021=* -tokeninfo(#20021,7,#20001,2,"function") -#20022=@"loc,{#10000},1,3,1,10" -locations_default(#20022,#10000,1,3,1,10) -hasLocation(#20021,#20022) -#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,8,#20001,4,")") -#20026=@"loc,{#10000},1,12,1,12" -locations_default(#20026,#10000,1,12,1,12) -hasLocation(#20025,#20026) -#20027=* -tokeninfo(#20027,8,#20001,5,"{") -#20028=@"loc,{#10000},1,13,1,13" -locations_default(#20028,#10000,1,13,1,13) -hasLocation(#20027,#20028) +tokeninfo(#20018,8,#20001,7,",") +#20019=@"loc,{#10000},1,15,1,15" +locations_default(#20019,#10000,1,15,1,15) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,3,#20001,8,"23") +#20021=@"loc,{#10000},1,17,1,18" +locations_default(#20021,#10000,1,17,1,18) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,9,")") +#20023=@"loc,{#10000},1,19,1,19" +locations_default(#20023,#10000,1,19,1,19) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,10,";") +#20025=@"loc,{#10000},1,20,1,20" +locations_default(#20025,#10000,1,20,1,20) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,0,#20001,11,"") +#20027=@"loc,{#10000},1,21,1,20" +locations_default(#20027,#10000,1,21,1,20) +hasLocation(#20026,#20027) +toplevels(#20001,0) +hasLocation(#20001,#20003) +#20028=* +stmts(#20028,2,#20001,0,"f(function(){}, 23);") +hasLocation(#20028,#20003) +stmtContainers(#20028,#20001) #20029=* -tokeninfo(#20029,8,#20001,6,"}") -#20030=@"loc,{#10000},1,14,1,14" -locations_default(#20030,#10000,1,14,1,14) +exprs(#20029,13,#20028,0,"f(function(){}, 23)") +#20030=@"loc,{#10000},1,1,1,19" +locations_default(#20030,#10000,1,1,1,19) hasLocation(#20029,#20030) +enclosingStmt(#20029,#20028) +exprContainers(#20029,#20001) #20031=* -tokeninfo(#20031,8,#20001,7,",") -#20032=@"loc,{#10000},1,15,1,15" -locations_default(#20032,#10000,1,15,1,15) -hasLocation(#20031,#20032) +exprs(#20031,79,#20029,-1,"f") +hasLocation(#20031,#20005) +enclosingStmt(#20031,#20028) +exprContainers(#20031,#20001) +literals("f","f",#20031) +#20032=@"var;{f};{#20000}" +variables(#20032,"f",#20000) +bind(#20031,#20032) #20033=* -tokeninfo(#20033,3,#20001,8,"23") -hasLocation(#20033,#20016) -#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,8,#20001,10,";") -#20037=@"loc,{#10000},1,20,1,20" -locations_default(#20037,#10000,1,20,1,20) -hasLocation(#20036,#20037) -#20038=* -tokeninfo(#20038,0,#20001,11,"") -#20039=@"loc,{#10000},1,21,1,20" -locations_default(#20039,#10000,1,21,1,20) -hasLocation(#20038,#20039) +exprs(#20033,9,#20029,0,"function(){}") +#20034=@"loc,{#10000},1,3,1,14" +locations_default(#20034,#10000,1,3,1,14) +hasLocation(#20033,#20034) +enclosingStmt(#20033,#20028) +exprContainers(#20033,#20001) +#20035=* +scopes(#20035,1) +scopenodes(#20033,#20035) +scopenesting(#20035,#20000) +#20036=@"var;{arguments};{#20035}" +variables(#20036,"arguments",#20035) +isArgumentsObject(#20036) +#20037=* +stmts(#20037,1,#20033,-2,"{}") +#20038=@"loc,{#10000},1,13,1,14" +locations_default(#20038,#10000,1,13,1,14) +hasLocation(#20037,#20038) +stmtContainers(#20037,#20033) +#20039=* +exprs(#20039,3,#20029,1,"23") +hasLocation(#20039,#20021) +enclosingStmt(#20039,#20028) +exprContainers(#20039,#20001) +literals("23","23",#20039) #20040=* entry_cfg_node(#20040,#20001) #20041=@"loc,{#10000},1,1,1,0" @@ -131,24 +130,24 @@ locations_default(#20041,#10000,1,1,1,0) hasLocation(#20040,#20041) #20042=* exit_cfg_node(#20042,#20001) -hasLocation(#20042,#20039) -successor(#20003,#20006) -successor(#20015,#20004) -successor(#20009,#20015) +hasLocation(#20042,#20027) +successor(#20028,#20031) +successor(#20039,#20029) +successor(#20033,#20039) #20043=* -entry_cfg_node(#20043,#20009) +entry_cfg_node(#20043,#20033) #20044=@"loc,{#10000},1,3,1,2" locations_default(#20044,#10000,1,3,1,2) hasLocation(#20043,#20044) #20045=* -exit_cfg_node(#20045,#20009) +exit_cfg_node(#20045,#20033) #20046=@"loc,{#10000},1,15,1,14" locations_default(#20046,#10000,1,15,1,14) hasLocation(#20045,#20046) -successor(#20013,#20045) -successor(#20043,#20013) -successor(#20006,#20009) -successor(#20004,#20042) -successor(#20040,#20003) +successor(#20037,#20045) +successor(#20043,#20037) +successor(#20031,#20033) +successor(#20029,#20042) +successor(#20040,#20028) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/exprs/output/trap/others.js.trap b/javascript/extractor/tests/exprs/output/trap/others.js.trap index 632e7594828..281b54d3d68 100644 --- a/javascript/extractor/tests/exprs/output/trap/others.js.trap +++ b/javascript/extractor/tests/exprs/output/trap/others.js.trap @@ -9,195 +9,195 @@ 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=* -stmts(#20003,2,#20001,0,"23, 42;") -#20004=@"loc,{#10000},1,1,1,7" -locations_default(#20004,#10000,1,1,1,7) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,10,#20003,0,"23, 42") -#20006=@"loc,{#10000},1,1,1,6" -locations_default(#20006,#10000,1,1,1,6) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -#20007=* -exprs(#20007,3,#20005,0,"23") -#20008=@"loc,{#10000},1,1,1,2" -locations_default(#20008,#10000,1,1,1,2) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20003) -exprContainers(#20007,#20001) -literals("23","23",#20007) -#20009=* -exprs(#20009,3,#20005,1,"42") -#20010=@"loc,{#10000},1,5,1,6" -locations_default(#20010,#10000,1,5,1,6) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20003) -exprContainers(#20009,#20001) -literals("42","42",#20009) -#20011=* -stmts(#20011,2,#20001,1,"23, 42, 56;") -#20012=@"loc,{#10000},2,1,2,11" -locations_default(#20012,#10000,2,1,2,11) -hasLocation(#20011,#20012) -stmtContainers(#20011,#20001) -#20013=* -exprs(#20013,10,#20011,0,"23, 42, 56") -#20014=@"loc,{#10000},2,1,2,10" -locations_default(#20014,#10000,2,1,2,10) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20011) -exprContainers(#20013,#20001) -#20015=* -exprs(#20015,3,#20013,0,"23") -#20016=@"loc,{#10000},2,1,2,2" -locations_default(#20016,#10000,2,1,2,2) -hasLocation(#20015,#20016) -enclosingStmt(#20015,#20011) -exprContainers(#20015,#20001) -literals("23","23",#20015) -#20017=* -exprs(#20017,3,#20013,1,"42") -#20018=@"loc,{#10000},2,5,2,6" -locations_default(#20018,#10000,2,5,2,6) -hasLocation(#20017,#20018) -enclosingStmt(#20017,#20011) -exprContainers(#20017,#20001) -literals("42","42",#20017) -#20019=* -exprs(#20019,3,#20013,2,"56") -#20020=@"loc,{#10000},2,9,2,10" -locations_default(#20020,#10000,2,9,2,10) -hasLocation(#20019,#20020) -enclosingStmt(#20019,#20011) -exprContainers(#20019,#20001) -literals("56","56",#20019) -#20021=* -stmts(#20021,2,#20001,2,"true ? 0 : 1;") -#20022=@"loc,{#10000},3,1,3,13" -locations_default(#20022,#10000,3,1,3,13) -hasLocation(#20021,#20022) -stmtContainers(#20021,#20001) -#20023=* -exprs(#20023,11,#20021,0,"true ? 0 : 1") -#20024=@"loc,{#10000},3,1,3,12" -locations_default(#20024,#10000,3,1,3,12) -hasLocation(#20023,#20024) -enclosingStmt(#20023,#20021) -exprContainers(#20023,#20001) -#20025=* -exprs(#20025,2,#20023,0,"true") -#20026=@"loc,{#10000},3,1,3,4" -locations_default(#20026,#10000,3,1,3,4) -hasLocation(#20025,#20026) -enclosingStmt(#20025,#20021) -exprContainers(#20025,#20001) -literals("true","true",#20025) -#20027=* -exprs(#20027,3,#20023,1,"0") -#20028=@"loc,{#10000},3,8,3,8" -locations_default(#20028,#10000,3,8,3,8) -hasLocation(#20027,#20028) -enclosingStmt(#20027,#20021) -exprContainers(#20027,#20001) -literals("0","0",#20027) -#20029=* -exprs(#20029,3,#20023,2,"1") -#20030=@"loc,{#10000},3,12,3,12" -locations_default(#20030,#10000,3,12,3,12) -hasLocation(#20029,#20030) -enclosingStmt(#20029,#20021) -exprContainers(#20029,#20001) -literals("1","1",#20029) -#20031=* -lines(#20031,#20001,"23, 42;"," +#20002=* +lines(#20002,#20001,"23, 42;"," ") -hasLocation(#20031,#20004) -#20032=* -lines(#20032,#20001,"23, 42, 56;"," +#20003=@"loc,{#10000},1,1,1,7" +locations_default(#20003,#10000,1,1,1,7) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"23, 42, 56;"," ") -hasLocation(#20032,#20012) -#20033=* -lines(#20033,#20001,"true ? 0 : 1;"," +#20005=@"loc,{#10000},2,1,2,11" +locations_default(#20005,#10000,2,1,2,11) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"true ? 0 : 1;"," ") -hasLocation(#20033,#20022) +#20007=@"loc,{#10000},3,1,3,13" +locations_default(#20007,#10000,3,1,3,13) +hasLocation(#20006,#20007) numlines(#20001,3,3,0) +#20008=* +tokeninfo(#20008,3,#20001,0,"23") +#20009=@"loc,{#10000},1,1,1,2" +locations_default(#20009,#10000,1,1,1,2) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,1,",") +#20011=@"loc,{#10000},1,3,1,3" +locations_default(#20011,#10000,1,3,1,3) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,3,#20001,2,"42") +#20013=@"loc,{#10000},1,5,1,6" +locations_default(#20013,#10000,1,5,1,6) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,3,";") +#20015=@"loc,{#10000},1,7,1,7" +locations_default(#20015,#10000,1,7,1,7) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,3,#20001,4,"23") +#20017=@"loc,{#10000},2,1,2,2" +locations_default(#20017,#10000,2,1,2,2) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,5,",") +#20019=@"loc,{#10000},2,3,2,3" +locations_default(#20019,#10000,2,3,2,3) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,3,#20001,6,"42") +#20021=@"loc,{#10000},2,5,2,6" +locations_default(#20021,#10000,2,5,2,6) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,7,",") +#20023=@"loc,{#10000},2,7,2,7" +locations_default(#20023,#10000,2,7,2,7) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,3,#20001,8,"56") +#20025=@"loc,{#10000},2,9,2,10" +locations_default(#20025,#10000,2,9,2,10) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,9,";") +#20027=@"loc,{#10000},2,11,2,11" +locations_default(#20027,#10000,2,11,2,11) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,2,#20001,10,"true") +#20029=@"loc,{#10000},3,1,3,4" +locations_default(#20029,#10000,3,1,3,4) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,11,"?") +#20031=@"loc,{#10000},3,6,3,6" +locations_default(#20031,#10000,3,6,3,6) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,3,#20001,12,"0") +#20033=@"loc,{#10000},3,8,3,8" +locations_default(#20033,#10000,3,8,3,8) +hasLocation(#20032,#20033) #20034=* -tokeninfo(#20034,3,#20001,0,"23") -hasLocation(#20034,#20008) -#20035=* -tokeninfo(#20035,8,#20001,1,",") -#20036=@"loc,{#10000},1,3,1,3" -locations_default(#20036,#10000,1,3,1,3) -hasLocation(#20035,#20036) -#20037=* -tokeninfo(#20037,3,#20001,2,"42") -hasLocation(#20037,#20010) +tokeninfo(#20034,8,#20001,13,":") +#20035=@"loc,{#10000},3,10,3,10" +locations_default(#20035,#10000,3,10,3,10) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,3,#20001,14,"1") +#20037=@"loc,{#10000},3,12,3,12" +locations_default(#20037,#10000,3,12,3,12) +hasLocation(#20036,#20037) #20038=* -tokeninfo(#20038,8,#20001,3,";") -#20039=@"loc,{#10000},1,7,1,7" -locations_default(#20039,#10000,1,7,1,7) +tokeninfo(#20038,8,#20001,15,";") +#20039=@"loc,{#10000},3,13,3,13" +locations_default(#20039,#10000,3,13,3,13) hasLocation(#20038,#20039) #20040=* -tokeninfo(#20040,3,#20001,4,"23") -hasLocation(#20040,#20016) -#20041=* -tokeninfo(#20041,8,#20001,5,",") -#20042=@"loc,{#10000},2,3,2,3" -locations_default(#20042,#10000,2,3,2,3) -hasLocation(#20041,#20042) +tokeninfo(#20040,0,#20001,16,"") +#20041=@"loc,{#10000},4,1,4,0" +locations_default(#20041,#10000,4,1,4,0) +hasLocation(#20040,#20041) +toplevels(#20001,0) +#20042=@"loc,{#10000},1,1,4,0" +locations_default(#20042,#10000,1,1,4,0) +hasLocation(#20001,#20042) #20043=* -tokeninfo(#20043,3,#20001,6,"42") -hasLocation(#20043,#20018) +stmts(#20043,2,#20001,0,"23, 42;") +hasLocation(#20043,#20003) +stmtContainers(#20043,#20001) #20044=* -tokeninfo(#20044,8,#20001,7,",") -#20045=@"loc,{#10000},2,7,2,7" -locations_default(#20045,#10000,2,7,2,7) +exprs(#20044,10,#20043,0,"23, 42") +#20045=@"loc,{#10000},1,1,1,6" +locations_default(#20045,#10000,1,1,1,6) hasLocation(#20044,#20045) +enclosingStmt(#20044,#20043) +exprContainers(#20044,#20001) #20046=* -tokeninfo(#20046,3,#20001,8,"56") -hasLocation(#20046,#20020) +exprs(#20046,3,#20044,0,"23") +hasLocation(#20046,#20009) +enclosingStmt(#20046,#20043) +exprContainers(#20046,#20001) +literals("23","23",#20046) #20047=* -tokeninfo(#20047,8,#20001,9,";") -#20048=@"loc,{#10000},2,11,2,11" -locations_default(#20048,#10000,2,11,2,11) -hasLocation(#20047,#20048) +exprs(#20047,3,#20044,1,"42") +hasLocation(#20047,#20013) +enclosingStmt(#20047,#20043) +exprContainers(#20047,#20001) +literals("42","42",#20047) +#20048=* +stmts(#20048,2,#20001,1,"23, 42, 56;") +hasLocation(#20048,#20005) +stmtContainers(#20048,#20001) #20049=* -tokeninfo(#20049,2,#20001,10,"true") -hasLocation(#20049,#20026) -#20050=* -tokeninfo(#20050,8,#20001,11,"?") -#20051=@"loc,{#10000},3,6,3,6" -locations_default(#20051,#10000,3,6,3,6) -hasLocation(#20050,#20051) +exprs(#20049,10,#20048,0,"23, 42, 56") +#20050=@"loc,{#10000},2,1,2,10" +locations_default(#20050,#10000,2,1,2,10) +hasLocation(#20049,#20050) +enclosingStmt(#20049,#20048) +exprContainers(#20049,#20001) +#20051=* +exprs(#20051,3,#20049,0,"23") +hasLocation(#20051,#20017) +enclosingStmt(#20051,#20048) +exprContainers(#20051,#20001) +literals("23","23",#20051) #20052=* -tokeninfo(#20052,3,#20001,12,"0") -hasLocation(#20052,#20028) +exprs(#20052,3,#20049,1,"42") +hasLocation(#20052,#20021) +enclosingStmt(#20052,#20048) +exprContainers(#20052,#20001) +literals("42","42",#20052) #20053=* -tokeninfo(#20053,8,#20001,13,":") -#20054=@"loc,{#10000},3,10,3,10" -locations_default(#20054,#10000,3,10,3,10) -hasLocation(#20053,#20054) +exprs(#20053,3,#20049,2,"56") +hasLocation(#20053,#20025) +enclosingStmt(#20053,#20048) +exprContainers(#20053,#20001) +literals("56","56",#20053) +#20054=* +stmts(#20054,2,#20001,2,"true ? 0 : 1;") +hasLocation(#20054,#20007) +stmtContainers(#20054,#20001) #20055=* -tokeninfo(#20055,3,#20001,14,"1") -hasLocation(#20055,#20030) -#20056=* -tokeninfo(#20056,8,#20001,15,";") -#20057=@"loc,{#10000},3,13,3,13" -locations_default(#20057,#10000,3,13,3,13) -hasLocation(#20056,#20057) +exprs(#20055,11,#20054,0,"true ? 0 : 1") +#20056=@"loc,{#10000},3,1,3,12" +locations_default(#20056,#10000,3,1,3,12) +hasLocation(#20055,#20056) +enclosingStmt(#20055,#20054) +exprContainers(#20055,#20001) +#20057=* +exprs(#20057,2,#20055,0,"true") +hasLocation(#20057,#20029) +enclosingStmt(#20057,#20054) +exprContainers(#20057,#20001) +literals("true","true",#20057) #20058=* -tokeninfo(#20058,0,#20001,16,"") -#20059=@"loc,{#10000},4,1,4,0" -locations_default(#20059,#10000,4,1,4,0) -hasLocation(#20058,#20059) +exprs(#20058,3,#20055,1,"0") +hasLocation(#20058,#20033) +enclosingStmt(#20058,#20054) +exprContainers(#20058,#20001) +literals("0","0",#20058) +#20059=* +exprs(#20059,3,#20055,2,"1") +hasLocation(#20059,#20037) +enclosingStmt(#20059,#20054) +exprContainers(#20059,#20001) +literals("1","1",#20059) #20060=* entry_cfg_node(#20060,#20001) #20061=@"loc,{#10000},1,1,1,0" @@ -205,21 +205,21 @@ locations_default(#20061,#10000,1,1,1,0) hasLocation(#20060,#20061) #20062=* exit_cfg_node(#20062,#20001) -hasLocation(#20062,#20059) -successor(#20021,#20023) -successor(#20023,#20025) -successor(#20025,#20027) -successor(#20027,#20062) -successor(#20029,#20062) -successor(#20011,#20013) -successor(#20013,#20015) -successor(#20019,#20021) -successor(#20017,#20019) -successor(#20015,#20017) -successor(#20003,#20005) -successor(#20005,#20007) -successor(#20009,#20011) -successor(#20007,#20009) -successor(#20060,#20003) +hasLocation(#20062,#20041) +successor(#20054,#20055) +successor(#20055,#20057) +successor(#20057,#20058) +successor(#20058,#20062) +successor(#20059,#20062) +successor(#20048,#20049) +successor(#20049,#20051) +successor(#20053,#20054) +successor(#20052,#20053) +successor(#20051,#20052) +successor(#20043,#20044) +successor(#20044,#20046) +successor(#20047,#20048) +successor(#20046,#20047) +successor(#20060,#20043) numlines(#10000,3,3,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/exprs/output/trap/parens.js.trap b/javascript/extractor/tests/exprs/output/trap/parens.js.trap index 6257a3fa929..95a4572f13e 100644 --- a/javascript/extractor/tests/exprs/output/trap/parens.js.trap +++ b/javascript/extractor/tests/exprs/output/trap/parens.js.trap @@ -9,71 +9,71 @@ 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,"--(NaN);") -hasLocation(#20003,#20002) -stmtContainers(#20003,#20001) +#20002=* +lines(#20002,#20001,"--(NaN);","") +#20003=@"loc,{#10000},1,1,1,8" +locations_default(#20003,#10000,1,1,1,8) +hasLocation(#20002,#20003) +numlines(#20001,1,1,0) #20004=* -exprs(#20004,61,#20003,0,"--(NaN)") -#20005=@"loc,{#10000},1,1,1,7" -locations_default(#20005,#10000,1,1,1,7) +tokeninfo(#20004,8,#20001,0,"--") +#20005=@"loc,{#10000},1,1,1,2" +locations_default(#20005,#10000,1,1,1,2) hasLocation(#20004,#20005) -enclosingStmt(#20004,#20003) -exprContainers(#20004,#20001) #20006=* -exprs(#20006,63,#20004,0,"(NaN)") -#20007=@"loc,{#10000},1,3,1,7" -locations_default(#20007,#10000,1,3,1,7) +tokeninfo(#20006,8,#20001,1,"(") +#20007=@"loc,{#10000},1,3,1,3" +locations_default(#20007,#10000,1,3,1,3) hasLocation(#20006,#20007) -enclosingStmt(#20006,#20003) -exprContainers(#20006,#20001) #20008=* -exprs(#20008,79,#20006,0,"NaN") +tokeninfo(#20008,6,#20001,2,"NaN") #20009=@"loc,{#10000},1,4,1,6" locations_default(#20009,#10000,1,4,1,6) hasLocation(#20008,#20009) -enclosingStmt(#20008,#20003) -exprContainers(#20008,#20001) -literals("NaN","NaN",#20008) -#20010=@"var;{NaN};{#20000}" -variables(#20010,"NaN",#20000) -bind(#20008,#20010) -#20011=* -lines(#20011,#20001,"--(NaN);","") -hasLocation(#20011,#20002) -numlines(#20001,1,1,0) +#20010=* +tokeninfo(#20010,8,#20001,3,")") +#20011=@"loc,{#10000},1,7,1,7" +locations_default(#20011,#10000,1,7,1,7) +hasLocation(#20010,#20011) #20012=* -tokeninfo(#20012,8,#20001,0,"--") -#20013=@"loc,{#10000},1,1,1,2" -locations_default(#20013,#10000,1,1,1,2) +tokeninfo(#20012,8,#20001,4,";") +#20013=@"loc,{#10000},1,8,1,8" +locations_default(#20013,#10000,1,8,1,8) hasLocation(#20012,#20013) #20014=* -tokeninfo(#20014,8,#20001,1,"(") -#20015=@"loc,{#10000},1,3,1,3" -locations_default(#20015,#10000,1,3,1,3) +tokeninfo(#20014,0,#20001,5,"") +#20015=@"loc,{#10000},1,9,1,8" +locations_default(#20015,#10000,1,9,1,8) hasLocation(#20014,#20015) +toplevels(#20001,0) +hasLocation(#20001,#20003) #20016=* -tokeninfo(#20016,6,#20001,2,"NaN") -hasLocation(#20016,#20009) +stmts(#20016,2,#20001,0,"--(NaN);") +hasLocation(#20016,#20003) +stmtContainers(#20016,#20001) #20017=* -tokeninfo(#20017,8,#20001,3,")") -#20018=@"loc,{#10000},1,7,1,7" -locations_default(#20018,#10000,1,7,1,7) +exprs(#20017,61,#20016,0,"--(NaN)") +#20018=@"loc,{#10000},1,1,1,7" +locations_default(#20018,#10000,1,1,1,7) hasLocation(#20017,#20018) +enclosingStmt(#20017,#20016) +exprContainers(#20017,#20001) #20019=* -tokeninfo(#20019,8,#20001,4,";") -#20020=@"loc,{#10000},1,8,1,8" -locations_default(#20020,#10000,1,8,1,8) +exprs(#20019,63,#20017,0,"(NaN)") +#20020=@"loc,{#10000},1,3,1,7" +locations_default(#20020,#10000,1,3,1,7) hasLocation(#20019,#20020) +enclosingStmt(#20019,#20016) +exprContainers(#20019,#20001) #20021=* -tokeninfo(#20021,0,#20001,5,"") -#20022=@"loc,{#10000},1,9,1,8" -locations_default(#20022,#10000,1,9,1,8) -hasLocation(#20021,#20022) +exprs(#20021,79,#20019,0,"NaN") +hasLocation(#20021,#20009) +enclosingStmt(#20021,#20016) +exprContainers(#20021,#20001) +literals("NaN","NaN",#20021) +#20022=@"var;{NaN};{#20000}" +variables(#20022,"NaN",#20000) +bind(#20021,#20022) #20023=* entry_cfg_node(#20023,#20001) #20024=@"loc,{#10000},1,1,1,0" @@ -81,11 +81,11 @@ locations_default(#20024,#10000,1,1,1,0) hasLocation(#20023,#20024) #20025=* exit_cfg_node(#20025,#20001) -hasLocation(#20025,#20022) -successor(#20003,#20006) -successor(#20006,#20008) -successor(#20008,#20004) -successor(#20004,#20025) -successor(#20023,#20003) +hasLocation(#20025,#20015) +successor(#20016,#20019) +successor(#20019,#20021) +successor(#20021,#20017) +successor(#20017,#20025) +successor(#20023,#20016) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/exprs/output/trap/primaries.js.trap b/javascript/extractor/tests/exprs/output/trap/primaries.js.trap index 564dc2dd641..9910e725840 100644 --- a/javascript/extractor/tests/exprs/output/trap/primaries.js.trap +++ b/javascript/extractor/tests/exprs/output/trap/primaries.js.trap @@ -9,1501 +9,1498 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,30,13" -locations_default(#20002,#10000,1,1,30,13) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"null;") -#20004=@"loc,{#10000},1,1,1,5" -locations_default(#20004,#10000,1,1,1,5) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,1,#20003,0,"null") -#20006=@"loc,{#10000},1,1,1,4" -locations_default(#20006,#10000,1,1,1,4) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -literals("null","null",#20005) -#20007=* -stmts(#20007,2,#20001,1,"true;") -#20008=@"loc,{#10000},2,1,2,5" -locations_default(#20008,#10000,2,1,2,5) -hasLocation(#20007,#20008) -stmtContainers(#20007,#20001) -#20009=* -exprs(#20009,2,#20007,0,"true") -#20010=@"loc,{#10000},2,1,2,4" -locations_default(#20010,#10000,2,1,2,4) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20007) -exprContainers(#20009,#20001) -literals("true","true",#20009) -#20011=* -stmts(#20011,2,#20001,2,"false;") -#20012=@"loc,{#10000},3,1,3,6" -locations_default(#20012,#10000,3,1,3,6) -hasLocation(#20011,#20012) -stmtContainers(#20011,#20001) -#20013=* -exprs(#20013,2,#20011,0,"false") -#20014=@"loc,{#10000},3,1,3,5" -locations_default(#20014,#10000,3,1,3,5) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20011) -exprContainers(#20013,#20001) -literals("false","false",#20013) -#20015=* -stmts(#20015,2,#20001,3,"23;") -#20016=@"loc,{#10000},4,1,4,3" -locations_default(#20016,#10000,4,1,4,3) -hasLocation(#20015,#20016) -stmtContainers(#20015,#20001) -#20017=* -exprs(#20017,3,#20015,0,"23") -#20018=@"loc,{#10000},4,1,4,2" -locations_default(#20018,#10000,4,1,4,2) -hasLocation(#20017,#20018) -enclosingStmt(#20017,#20015) -exprContainers(#20017,#20001) -literals("23","23",#20017) -#20019=* -stmts(#20019,2,#20001,4,"2.3;") -#20020=@"loc,{#10000},5,1,5,4" -locations_default(#20020,#10000,5,1,5,4) -hasLocation(#20019,#20020) -stmtContainers(#20019,#20001) -#20021=* -exprs(#20021,3,#20019,0,"2.3") -#20022=@"loc,{#10000},5,1,5,3" -locations_default(#20022,#10000,5,1,5,3) -hasLocation(#20021,#20022) -enclosingStmt(#20021,#20019) -exprContainers(#20021,#20001) -literals("2.3","2.3",#20021) -#20023=* -stmts(#20023,2,#20001,5,".42;") -#20024=@"loc,{#10000},6,1,6,4" -locations_default(#20024,#10000,6,1,6,4) -hasLocation(#20023,#20024) -stmtContainers(#20023,#20001) -#20025=* -exprs(#20025,3,#20023,0,".42") -#20026=@"loc,{#10000},6,1,6,3" -locations_default(#20026,#10000,6,1,6,3) -hasLocation(#20025,#20026) -enclosingStmt(#20025,#20023) -exprContainers(#20025,#20001) -literals("0.42",".42",#20025) -#20027=* -stmts(#20027,2,#20001,6,"7.6e23;") -#20028=@"loc,{#10000},7,1,7,7" -locations_default(#20028,#10000,7,1,7,7) -hasLocation(#20027,#20028) -stmtContainers(#20027,#20001) -#20029=* -exprs(#20029,3,#20027,0,"7.6e23") -#20030=@"loc,{#10000},7,1,7,6" -locations_default(#20030,#10000,7,1,7,6) -hasLocation(#20029,#20030) -enclosingStmt(#20029,#20027) -exprContainers(#20029,#20001) -literals("7.6E23","7.6e23",#20029) -#20031=* -stmts(#20031,2,#20001,7,"1E-42;") -#20032=@"loc,{#10000},8,1,8,6" -locations_default(#20032,#10000,8,1,8,6) -hasLocation(#20031,#20032) -stmtContainers(#20031,#20001) -#20033=* -exprs(#20033,3,#20031,0,"1E-42") -#20034=@"loc,{#10000},8,1,8,5" -locations_default(#20034,#10000,8,1,8,5) -hasLocation(#20033,#20034) -enclosingStmt(#20033,#20031) -exprContainers(#20033,#20001) -literals("1.0E-42","1E-42",#20033) -#20035=* -stmts(#20035,2,#20001,8,"0xdeadbeef;") -#20036=@"loc,{#10000},9,1,9,11" -locations_default(#20036,#10000,9,1,9,11) -hasLocation(#20035,#20036) -stmtContainers(#20035,#20001) -#20037=* -exprs(#20037,3,#20035,0,"0xdeadbeef") -#20038=@"loc,{#10000},9,1,9,10" -locations_default(#20038,#10000,9,1,9,10) -hasLocation(#20037,#20038) -enclosingStmt(#20037,#20035) -exprContainers(#20037,#20001) -literals("3735928559","0xdeadbeef",#20037) -#20039=* -stmts(#20039,2,#20001,9,"""Hello"";") -#20040=@"loc,{#10000},10,1,10,8" -locations_default(#20040,#10000,10,1,10,8) -hasLocation(#20039,#20040) -stmtContainers(#20039,#20001) -#20041=* -exprs(#20041,4,#20039,0,"""Hello""") -#20042=@"loc,{#10000},10,1,10,7" -locations_default(#20042,#10000,10,1,10,7) -hasLocation(#20041,#20042) -enclosingStmt(#20041,#20039) -exprContainers(#20041,#20001) -literals("Hello","""Hello""",#20041) -#20043=* -stmts(#20043,2,#20001,10,"'world';") -#20044=@"loc,{#10000},11,1,11,8" -locations_default(#20044,#10000,11,1,11,8) -hasLocation(#20043,#20044) -stmtContainers(#20043,#20001) -#20045=* -exprs(#20045,4,#20043,0,"'world'") -#20046=@"loc,{#10000},11,1,11,7" -locations_default(#20046,#10000,11,1,11,7) -hasLocation(#20045,#20046) -enclosingStmt(#20045,#20043) -exprContainers(#20045,#20001) -literals("world","'world'",#20045) -#20047=* -stmts(#20047,2,#20001,11,"""'what?'\x0a"";") -#20048=@"loc,{#10000},12,1,12,14" -locations_default(#20048,#10000,12,1,12,14) -hasLocation(#20047,#20048) -stmtContainers(#20047,#20001) -#20049=* -exprs(#20049,4,#20047,0,"""'what?'\x0a""") -#20050=@"loc,{#10000},12,1,12,13" -locations_default(#20050,#10000,12,1,12,13) -hasLocation(#20049,#20050) -enclosingStmt(#20049,#20047) -exprContainers(#20049,#20001) -literals("'what?' -","""'what?'\x0a""",#20049) -#20051=* -stmts(#20051,2,#20001,12,"'""why?""\n';") -#20052=@"loc,{#10000},13,1,13,11" -locations_default(#20052,#10000,13,1,13,11) -hasLocation(#20051,#20052) -stmtContainers(#20051,#20001) -#20053=* -exprs(#20053,4,#20051,0,"'""why?""\n'") -#20054=@"loc,{#10000},13,1,13,10" -locations_default(#20054,#10000,13,1,13,10) -hasLocation(#20053,#20054) -enclosingStmt(#20053,#20051) -exprContainers(#20053,#20001) -literals("""why?"" -","'""why?""\n'",#20053) -#20055=* -stmts(#20055,2,#20001,13,"/^(need?le)+/gi;") -#20056=@"loc,{#10000},14,1,14,16" -locations_default(#20056,#10000,14,1,14,16) -hasLocation(#20055,#20056) -stmtContainers(#20055,#20001) -#20057=* -exprs(#20057,5,#20055,0,"/^(need?le)+/gi") -#20058=@"loc,{#10000},14,1,14,15" -locations_default(#20058,#10000,14,1,14,15) -hasLocation(#20057,#20058) -enclosingStmt(#20057,#20055) -exprContainers(#20057,#20001) -literals("/^(need?le)+/gi","/^(need?le)+/gi",#20057) -#20059=* -regexpterm(#20059,1,#20057,0,"^(need?le)+") -#20060=@"loc,{#10000},14,2,14,12" -locations_default(#20060,#10000,14,2,14,12) -hasLocation(#20059,#20060) -#20061=* -regexpterm(#20061,2,#20059,0,"^") -#20062=@"loc,{#10000},14,2,14,2" -locations_default(#20062,#10000,14,2,14,2) -hasLocation(#20061,#20062) -#20063=* -regexpterm(#20063,9,#20059,1,"(need?le)+") -#20064=@"loc,{#10000},14,3,14,12" -locations_default(#20064,#10000,14,3,14,12) -hasLocation(#20063,#20064) -isGreedy(#20063) -#20065=* -regexpterm(#20065,13,#20063,0,"(need?le)") -#20066=@"loc,{#10000},14,3,14,11" -locations_default(#20066,#10000,14,3,14,11) -hasLocation(#20065,#20066) -isCapture(#20065,1) -#20067=* -regexpterm(#20067,1,#20065,0,"need?le") -#20068=@"loc,{#10000},14,4,14,10" -locations_default(#20068,#10000,14,4,14,10) -hasLocation(#20067,#20068) -#20069=* -regexpterm(#20069,14,#20067,0,"n") -#20070=@"loc,{#10000},14,4,14,4" -locations_default(#20070,#10000,14,4,14,4) -hasLocation(#20069,#20070) -regexpConstValue(#20069,"n") -#20071=* -regexpterm(#20071,14,#20067,1,"e") -#20072=@"loc,{#10000},14,5,14,5" -locations_default(#20072,#10000,14,5,14,5) -hasLocation(#20071,#20072) -regexpConstValue(#20071,"e") -#20073=* -regexpterm(#20073,14,#20067,2,"e") -#20074=@"loc,{#10000},14,6,14,6" -locations_default(#20074,#10000,14,6,14,6) -hasLocation(#20073,#20074) -regexpConstValue(#20073,"e") -#20075=* -regexpterm(#20075,10,#20067,3,"d?") -#20076=@"loc,{#10000},14,7,14,8" -locations_default(#20076,#10000,14,7,14,8) -hasLocation(#20075,#20076) -isGreedy(#20075) -#20077=* -regexpterm(#20077,14,#20075,0,"d") -#20078=@"loc,{#10000},14,7,14,7" -locations_default(#20078,#10000,14,7,14,7) -hasLocation(#20077,#20078) -regexpConstValue(#20077,"d") -#20079=* -regexpterm(#20079,14,#20067,4,"l") -#20080=@"loc,{#10000},14,9,14,9" -locations_default(#20080,#10000,14,9,14,9) -hasLocation(#20079,#20080) -regexpConstValue(#20079,"l") -#20081=* -regexpterm(#20081,14,#20067,5,"e") -#20082=@"loc,{#10000},14,10,14,10" -locations_default(#20082,#10000,14,10,14,10) -hasLocation(#20081,#20082) -regexpConstValue(#20081,"e") -#20083=* -stmts(#20083,2,#20001,14,"(23);") -#20084=@"loc,{#10000},15,1,15,5" -locations_default(#20084,#10000,15,1,15,5) -hasLocation(#20083,#20084) -stmtContainers(#20083,#20001) -#20085=* -exprs(#20085,63,#20083,0,"(23)") -#20086=@"loc,{#10000},15,1,15,4" -locations_default(#20086,#10000,15,1,15,4) -hasLocation(#20085,#20086) -enclosingStmt(#20085,#20083) -exprContainers(#20085,#20001) -#20087=* -exprs(#20087,3,#20085,0,"23") -#20088=@"loc,{#10000},15,2,15,3" -locations_default(#20088,#10000,15,2,15,3) -hasLocation(#20087,#20088) -enclosingStmt(#20087,#20083) -exprContainers(#20087,#20001) -literals("23","23",#20087) -#20089=* -stmts(#20089,2,#20001,15,"[23, 42, , ""hi"" ];") -#20090=@"loc,{#10000},16,1,16,18" -locations_default(#20090,#10000,16,1,16,18) -hasLocation(#20089,#20090) -stmtContainers(#20089,#20001) -#20091=* -exprs(#20091,7,#20089,0,"[23, 42, , ""hi"" ]") -#20092=@"loc,{#10000},16,1,16,17" -locations_default(#20092,#10000,16,1,16,17) -hasLocation(#20091,#20092) -enclosingStmt(#20091,#20089) -exprContainers(#20091,#20001) -#20093=* -exprs(#20093,3,#20091,0,"23") -#20094=@"loc,{#10000},16,2,16,3" -locations_default(#20094,#10000,16,2,16,3) -hasLocation(#20093,#20094) -enclosingStmt(#20093,#20089) -exprContainers(#20093,#20001) -literals("23","23",#20093) -#20095=* -exprs(#20095,3,#20091,1,"42") -#20096=@"loc,{#10000},16,6,16,7" -locations_default(#20096,#10000,16,6,16,7) -hasLocation(#20095,#20096) -enclosingStmt(#20095,#20089) -exprContainers(#20095,#20001) -literals("42","42",#20095) -#20097=* -exprs(#20097,4,#20091,3,"""hi""") -#20098=@"loc,{#10000},16,12,16,15" -locations_default(#20098,#10000,16,12,16,15) -hasLocation(#20097,#20098) -enclosingStmt(#20097,#20089) -exprContainers(#20097,#20001) -literals("hi","""hi""",#20097) -arraySize(#20091,4) -#20099=* -stmts(#20099,2,#20001,16,"({ x: 2 ... ) {}});") -#20100=@"loc,{#10000},17,1,21,17" -locations_default(#20100,#10000,17,1,21,17) -hasLocation(#20099,#20100) -stmtContainers(#20099,#20001) -#20101=* -exprs(#20101,63,#20099,0,"({ x: 2 ... v) {}})") -#20102=@"loc,{#10000},17,1,21,16" -locations_default(#20102,#10000,17,1,21,16) -hasLocation(#20101,#20102) -enclosingStmt(#20101,#20099) -exprContainers(#20101,#20001) -#20103=* -exprs(#20103,8,#20101,0,"{ x: 23 ... (v) {}}") -#20104=@"loc,{#10000},17,2,21,15" -locations_default(#20104,#10000,17,2,21,15) -hasLocation(#20103,#20104) -enclosingStmt(#20103,#20099) -exprContainers(#20103,#20001) -#20105=* -properties(#20105,#20103,0,0,"x: 23") -#20106=@"loc,{#10000},17,4,17,8" -locations_default(#20106,#10000,17,4,17,8) -hasLocation(#20105,#20106) -#20107=* -exprs(#20107,0,#20105,0,"x") -#20108=@"loc,{#10000},17,4,17,4" -locations_default(#20108,#10000,17,4,17,4) -hasLocation(#20107,#20108) -enclosingStmt(#20107,#20099) -exprContainers(#20107,#20001) -literals("x","x",#20107) -#20109=* -exprs(#20109,3,#20105,1,"23") -#20110=@"loc,{#10000},17,7,17,8" -locations_default(#20110,#10000,17,7,17,8) -hasLocation(#20109,#20110) -enclosingStmt(#20109,#20099) -exprContainers(#20109,#20001) -literals("23","23",#20109) -#20111=* -properties(#20111,#20103,1,0,"y: this") -#20112=@"loc,{#10000},18,4,18,10" -locations_default(#20112,#10000,18,4,18,10) -hasLocation(#20111,#20112) -#20113=* -exprs(#20113,0,#20111,0,"y") -#20114=@"loc,{#10000},18,4,18,4" -locations_default(#20114,#10000,18,4,18,4) -hasLocation(#20113,#20114) -enclosingStmt(#20113,#20099) -exprContainers(#20113,#20001) -literals("y","y",#20113) -#20115=* -exprs(#20115,6,#20111,1,"this") -#20116=@"loc,{#10000},18,7,18,10" -locations_default(#20116,#10000,18,7,18,10) -hasLocation(#20115,#20116) -enclosingStmt(#20115,#20099) -exprContainers(#20115,#20001) -#20117=* -properties(#20117,#20103,2,1,"get o() {}") -#20118=@"loc,{#10000},19,4,19,13" -locations_default(#20118,#10000,19,4,19,13) -hasLocation(#20117,#20118) -#20119=* -exprs(#20119,0,#20117,0,"o") -#20120=@"loc,{#10000},19,8,19,8" -locations_default(#20120,#10000,19,8,19,8) -hasLocation(#20119,#20120) -enclosingStmt(#20119,#20099) -exprContainers(#20119,#20001) -literals("o","o",#20119) -#20121=* -exprs(#20121,9,#20117,1,"() {}") -#20122=@"loc,{#10000},19,9,19,13" -locations_default(#20122,#10000,19,9,19,13) -hasLocation(#20121,#20122) -enclosingStmt(#20121,#20099) -exprContainers(#20121,#20001) -#20123=* -scopes(#20123,1) -scopenodes(#20121,#20123) -scopenesting(#20123,#20000) -#20124=@"var;{arguments};{#20123}" -variables(#20124,"arguments",#20123) -isArgumentsObject(#20124) -#20125=* -stmts(#20125,1,#20121,-2,"{}") -#20126=@"loc,{#10000},19,12,19,13" -locations_default(#20126,#10000,19,12,19,13) -hasLocation(#20125,#20126) -stmtContainers(#20125,#20121) -numlines(#20121,1,1,0) -#20127=* -properties(#20127,#20103,3,1,"get p() {}") -#20128=@"loc,{#10000},20,4,20,13" -locations_default(#20128,#10000,20,4,20,13) -hasLocation(#20127,#20128) -#20129=* -exprs(#20129,0,#20127,0,"p") -#20130=@"loc,{#10000},20,8,20,8" -locations_default(#20130,#10000,20,8,20,8) -hasLocation(#20129,#20130) -enclosingStmt(#20129,#20099) -exprContainers(#20129,#20001) -literals("p","p",#20129) -#20131=* -exprs(#20131,9,#20127,1,"() {}") -#20132=@"loc,{#10000},20,9,20,13" -locations_default(#20132,#10000,20,9,20,13) -hasLocation(#20131,#20132) -enclosingStmt(#20131,#20099) -exprContainers(#20131,#20001) -#20133=* -scopes(#20133,1) -scopenodes(#20131,#20133) -scopenesting(#20133,#20000) -#20134=@"var;{arguments};{#20133}" -variables(#20134,"arguments",#20133) -isArgumentsObject(#20134) -#20135=* -stmts(#20135,1,#20131,-2,"{}") -#20136=@"loc,{#10000},20,12,20,13" -locations_default(#20136,#10000,20,12,20,13) -hasLocation(#20135,#20136) -stmtContainers(#20135,#20131) -numlines(#20131,1,1,0) -#20137=* -properties(#20137,#20103,4,2,"set p(v) {}") -#20138=@"loc,{#10000},21,4,21,14" -locations_default(#20138,#10000,21,4,21,14) -hasLocation(#20137,#20138) -#20139=* -exprs(#20139,0,#20137,0,"p") -#20140=@"loc,{#10000},21,8,21,8" -locations_default(#20140,#10000,21,8,21,8) -hasLocation(#20139,#20140) -enclosingStmt(#20139,#20099) -exprContainers(#20139,#20001) -literals("p","p",#20139) -#20141=* -exprs(#20141,9,#20137,1,"(v) {}") -#20142=@"loc,{#10000},21,9,21,14" -locations_default(#20142,#10000,21,9,21,14) -hasLocation(#20141,#20142) -enclosingStmt(#20141,#20099) -exprContainers(#20141,#20001) -#20143=* -scopes(#20143,1) -scopenodes(#20141,#20143) -scopenesting(#20143,#20000) -#20144=@"var;{v};{#20143}" -variables(#20144,"v",#20143) -#20145=* -exprs(#20145,78,#20141,0,"v") -#20146=@"loc,{#10000},21,10,21,10" -locations_default(#20146,#10000,21,10,21,10) -hasLocation(#20145,#20146) -exprContainers(#20145,#20141) -literals("v","v",#20145) -decl(#20145,#20144) -#20147=@"var;{arguments};{#20143}" -variables(#20147,"arguments",#20143) -isArgumentsObject(#20147) -#20148=* -stmts(#20148,1,#20141,-2,"{}") -#20149=@"loc,{#10000},21,13,21,14" -locations_default(#20149,#10000,21,13,21,14) -hasLocation(#20148,#20149) -stmtContainers(#20148,#20141) -numlines(#20141,1,1,0) -#20150=* -stmts(#20150,2,#20001,17,"new Array;") -#20151=@"loc,{#10000},22,1,22,10" -locations_default(#20151,#10000,22,1,22,10) -hasLocation(#20150,#20151) -stmtContainers(#20150,#20001) -#20152=* -exprs(#20152,12,#20150,0,"new Array") -#20153=@"loc,{#10000},22,1,22,9" -locations_default(#20153,#10000,22,1,22,9) -hasLocation(#20152,#20153) -enclosingStmt(#20152,#20150) -exprContainers(#20152,#20001) -#20154=* -exprs(#20154,79,#20152,-1,"Array") -#20155=@"loc,{#10000},22,5,22,9" -locations_default(#20155,#10000,22,5,22,9) -hasLocation(#20154,#20155) -enclosingStmt(#20154,#20150) -exprContainers(#20154,#20001) -literals("Array","Array",#20154) -#20156=@"var;{Array};{#20000}" -variables(#20156,"Array",#20000) -bind(#20154,#20156) -#20157=* -stmts(#20157,2,#20001,18,"new Object();") -#20158=@"loc,{#10000},23,1,23,13" -locations_default(#20158,#10000,23,1,23,13) -hasLocation(#20157,#20158) -stmtContainers(#20157,#20001) -#20159=* -exprs(#20159,12,#20157,0,"new Object()") -#20160=@"loc,{#10000},23,1,23,12" -locations_default(#20160,#10000,23,1,23,12) -hasLocation(#20159,#20160) -enclosingStmt(#20159,#20157) -exprContainers(#20159,#20001) -#20161=* -exprs(#20161,79,#20159,-1,"Object") -#20162=@"loc,{#10000},23,5,23,10" -locations_default(#20162,#10000,23,5,23,10) -hasLocation(#20161,#20162) -enclosingStmt(#20161,#20157) -exprContainers(#20161,#20001) -literals("Object","Object",#20161) -#20163=@"var;{Object};{#20000}" -variables(#20163,"Object",#20000) -bind(#20161,#20163) -#20164=* -stmts(#20164,2,#20001,19,"new String(""hi"");") -#20165=@"loc,{#10000},24,1,24,17" -locations_default(#20165,#10000,24,1,24,17) -hasLocation(#20164,#20165) -stmtContainers(#20164,#20001) -#20166=* -exprs(#20166,12,#20164,0,"new String(""hi"")") -#20167=@"loc,{#10000},24,1,24,16" -locations_default(#20167,#10000,24,1,24,16) -hasLocation(#20166,#20167) -enclosingStmt(#20166,#20164) -exprContainers(#20166,#20001) -#20168=* -exprs(#20168,79,#20166,-1,"String") -#20169=@"loc,{#10000},24,5,24,10" -locations_default(#20169,#10000,24,5,24,10) -hasLocation(#20168,#20169) -enclosingStmt(#20168,#20164) -exprContainers(#20168,#20001) -literals("String","String",#20168) -#20170=@"var;{String};{#20000}" -variables(#20170,"String",#20000) -bind(#20168,#20170) -#20171=* -exprs(#20171,4,#20166,0,"""hi""") -#20172=@"loc,{#10000},24,12,24,15" -locations_default(#20172,#10000,24,12,24,15) -hasLocation(#20171,#20172) -enclosingStmt(#20171,#20164) -exprContainers(#20171,#20001) -literals("hi","""hi""",#20171) -#20173=* -stmts(#20173,2,#20001,20,"String("""");") -#20174=@"loc,{#10000},25,1,25,11" -locations_default(#20174,#10000,25,1,25,11) -hasLocation(#20173,#20174) -stmtContainers(#20173,#20001) -#20175=* -exprs(#20175,13,#20173,0,"String("""")") -#20176=@"loc,{#10000},25,1,25,10" -locations_default(#20176,#10000,25,1,25,10) -hasLocation(#20175,#20176) -enclosingStmt(#20175,#20173) -exprContainers(#20175,#20001) -#20177=* -exprs(#20177,79,#20175,-1,"String") -#20178=@"loc,{#10000},25,1,25,6" -locations_default(#20178,#10000,25,1,25,6) -hasLocation(#20177,#20178) -enclosingStmt(#20177,#20173) -exprContainers(#20177,#20001) -literals("String","String",#20177) -bind(#20177,#20170) -#20179=* -exprs(#20179,4,#20175,0,"""""") -#20180=@"loc,{#10000},25,8,25,9" -locations_default(#20180,#10000,25,8,25,9) -hasLocation(#20179,#20180) -enclosingStmt(#20179,#20173) -exprContainers(#20179,#20001) -literals("","""""",#20179) -#20181=* -stmts(#20181,2,#20001,21,"Object.create({});") -#20182=@"loc,{#10000},26,1,26,18" -locations_default(#20182,#10000,26,1,26,18) -hasLocation(#20181,#20182) -stmtContainers(#20181,#20001) -#20183=* -exprs(#20183,13,#20181,0,"Object.create({})") -#20184=@"loc,{#10000},26,1,26,17" -locations_default(#20184,#10000,26,1,26,17) -hasLocation(#20183,#20184) -enclosingStmt(#20183,#20181) -exprContainers(#20183,#20001) -#20185=* -exprs(#20185,14,#20183,-1,"Object.create") -#20186=@"loc,{#10000},26,1,26,13" -locations_default(#20186,#10000,26,1,26,13) -hasLocation(#20185,#20186) -enclosingStmt(#20185,#20181) -exprContainers(#20185,#20001) -#20187=* -exprs(#20187,79,#20185,0,"Object") -#20188=@"loc,{#10000},26,1,26,6" -locations_default(#20188,#10000,26,1,26,6) -hasLocation(#20187,#20188) -enclosingStmt(#20187,#20181) -exprContainers(#20187,#20001) -literals("Object","Object",#20187) -bind(#20187,#20163) -#20189=* -exprs(#20189,0,#20185,1,"create") -#20190=@"loc,{#10000},26,8,26,13" -locations_default(#20190,#10000,26,8,26,13) -hasLocation(#20189,#20190) -enclosingStmt(#20189,#20181) -exprContainers(#20189,#20001) -literals("create","create",#20189) -#20191=* -exprs(#20191,8,#20183,0,"{}") -#20192=@"loc,{#10000},26,15,26,16" -locations_default(#20192,#10000,26,15,26,16) -hasLocation(#20191,#20192) -enclosingStmt(#20191,#20181) -exprContainers(#20191,#20001) -#20193=* -stmts(#20193,2,#20001,22,"String[ ... rse()];") -#20194=@"loc,{#10000},27,1,27,30" -locations_default(#20194,#10000,27,1,27,30) -hasLocation(#20193,#20194) -stmtContainers(#20193,#20001) -#20195=* -exprs(#20195,15,#20193,0,"String[ ... erse()]") -#20196=@"loc,{#10000},27,1,27,29" -locations_default(#20196,#10000,27,1,27,29) -hasLocation(#20195,#20196) -enclosingStmt(#20195,#20193) -exprContainers(#20195,#20001) -#20197=* -exprs(#20197,79,#20195,0,"String") -#20198=@"loc,{#10000},27,1,27,6" -locations_default(#20198,#10000,27,1,27,6) -hasLocation(#20197,#20198) -enclosingStmt(#20197,#20193) -exprContainers(#20197,#20001) -literals("String","String",#20197) -bind(#20197,#20170) -#20199=* -exprs(#20199,13,#20195,1,"'epytot ... verse()") -#20200=@"loc,{#10000},27,8,27,28" -locations_default(#20200,#10000,27,8,27,28) -hasLocation(#20199,#20200) -enclosingStmt(#20199,#20193) -exprContainers(#20199,#20001) -#20201=* -exprs(#20201,14,#20199,-1,"'epytotorp'.reverse") -#20202=@"loc,{#10000},27,8,27,26" -locations_default(#20202,#10000,27,8,27,26) -hasLocation(#20201,#20202) -enclosingStmt(#20201,#20193) -exprContainers(#20201,#20001) -#20203=* -exprs(#20203,4,#20201,0,"'epytotorp'") -#20204=@"loc,{#10000},27,8,27,18" -locations_default(#20204,#10000,27,8,27,18) -hasLocation(#20203,#20204) -enclosingStmt(#20203,#20193) -exprContainers(#20203,#20001) -literals("epytotorp","'epytotorp'",#20203) -#20205=* -exprs(#20205,0,#20201,1,"reverse") -#20206=@"loc,{#10000},27,20,27,26" -locations_default(#20206,#10000,27,20,27,26) -hasLocation(#20205,#20206) -enclosingStmt(#20205,#20193) -exprContainers(#20205,#20001) -literals("reverse","reverse",#20205) -#20207=* -stmts(#20207,2,#20001,23,"[,,];") -#20208=@"loc,{#10000},28,1,28,5" -locations_default(#20208,#10000,28,1,28,5) -hasLocation(#20207,#20208) -stmtContainers(#20207,#20001) -#20209=* -exprs(#20209,7,#20207,0,"[,,]") -#20210=@"loc,{#10000},28,1,28,4" -locations_default(#20210,#10000,28,1,28,4) -hasLocation(#20209,#20210) -enclosingStmt(#20209,#20207) -exprContainers(#20209,#20001) -arraySize(#20209,2) -#20211=* -stmts(#20211,2,#20001,24,"[1,];") -#20212=@"loc,{#10000},29,1,29,5" -locations_default(#20212,#10000,29,1,29,5) -hasLocation(#20211,#20212) -stmtContainers(#20211,#20001) -#20213=* -exprs(#20213,7,#20211,0,"[1,]") -#20214=@"loc,{#10000},29,1,29,4" -locations_default(#20214,#10000,29,1,29,4) -hasLocation(#20213,#20214) -enclosingStmt(#20213,#20211) -exprContainers(#20213,#20001) -#20215=* -exprs(#20215,3,#20213,0,"1") -#20216=@"loc,{#10000},29,2,29,2" -locations_default(#20216,#10000,29,2,29,2) -hasLocation(#20215,#20216) -enclosingStmt(#20215,#20211) -exprContainers(#20215,#20001) -literals("1","1",#20215) -arraySize(#20213,1) -#20217=* -stmts(#20217,2,#20001,25,"({ z: 56, });") -#20218=@"loc,{#10000},30,1,30,13" -locations_default(#20218,#10000,30,1,30,13) -hasLocation(#20217,#20218) -stmtContainers(#20217,#20001) -#20219=* -exprs(#20219,63,#20217,0,"({ z: 56, })") -#20220=@"loc,{#10000},30,1,30,12" -locations_default(#20220,#10000,30,1,30,12) -hasLocation(#20219,#20220) -enclosingStmt(#20219,#20217) -exprContainers(#20219,#20001) -#20221=* -exprs(#20221,8,#20219,0,"{ z: 56, }") -#20222=@"loc,{#10000},30,2,30,11" -locations_default(#20222,#10000,30,2,30,11) -hasLocation(#20221,#20222) -enclosingStmt(#20221,#20217) -exprContainers(#20221,#20001) -#20223=* -properties(#20223,#20221,0,0,"z: 56") -#20224=@"loc,{#10000},30,4,30,8" -locations_default(#20224,#10000,30,4,30,8) -hasLocation(#20223,#20224) -#20225=* -exprs(#20225,0,#20223,0,"z") -#20226=@"loc,{#10000},30,4,30,4" -locations_default(#20226,#10000,30,4,30,4) -hasLocation(#20225,#20226) -enclosingStmt(#20225,#20217) -exprContainers(#20225,#20001) -literals("z","z",#20225) -#20227=* -exprs(#20227,3,#20223,1,"56") -#20228=@"loc,{#10000},30,7,30,8" -locations_default(#20228,#10000,30,7,30,8) -hasLocation(#20227,#20228) -enclosingStmt(#20227,#20217) -exprContainers(#20227,#20001) -literals("56","56",#20227) -#20229=* -lines(#20229,#20001,"null;"," +#20002=* +lines(#20002,#20001,"null;"," ") -hasLocation(#20229,#20004) -#20230=* -lines(#20230,#20001,"true;"," +#20003=@"loc,{#10000},1,1,1,5" +locations_default(#20003,#10000,1,1,1,5) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"true;"," ") -hasLocation(#20230,#20008) -#20231=* -lines(#20231,#20001,"false;"," +#20005=@"loc,{#10000},2,1,2,5" +locations_default(#20005,#10000,2,1,2,5) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"false;"," ") -hasLocation(#20231,#20012) -#20232=* -lines(#20232,#20001,"23;"," +#20007=@"loc,{#10000},3,1,3,6" +locations_default(#20007,#10000,3,1,3,6) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001,"23;"," ") -hasLocation(#20232,#20016) -#20233=* -lines(#20233,#20001,"2.3;"," +#20009=@"loc,{#10000},4,1,4,3" +locations_default(#20009,#10000,4,1,4,3) +hasLocation(#20008,#20009) +#20010=* +lines(#20010,#20001,"2.3;"," ") -hasLocation(#20233,#20020) -#20234=* -lines(#20234,#20001,".42;"," +#20011=@"loc,{#10000},5,1,5,4" +locations_default(#20011,#10000,5,1,5,4) +hasLocation(#20010,#20011) +#20012=* +lines(#20012,#20001,".42;"," ") -hasLocation(#20234,#20024) -#20235=* -lines(#20235,#20001,"7.6e23;"," +#20013=@"loc,{#10000},6,1,6,4" +locations_default(#20013,#10000,6,1,6,4) +hasLocation(#20012,#20013) +#20014=* +lines(#20014,#20001,"7.6e23;"," ") -hasLocation(#20235,#20028) -#20236=* -lines(#20236,#20001,"1E-42;"," +#20015=@"loc,{#10000},7,1,7,7" +locations_default(#20015,#10000,7,1,7,7) +hasLocation(#20014,#20015) +#20016=* +lines(#20016,#20001,"1E-42;"," ") -hasLocation(#20236,#20032) -#20237=* -lines(#20237,#20001,"0xdeadbeef;"," +#20017=@"loc,{#10000},8,1,8,6" +locations_default(#20017,#10000,8,1,8,6) +hasLocation(#20016,#20017) +#20018=* +lines(#20018,#20001,"0xdeadbeef;"," ") -hasLocation(#20237,#20036) -#20238=* -lines(#20238,#20001,"""Hello"";"," +#20019=@"loc,{#10000},9,1,9,11" +locations_default(#20019,#10000,9,1,9,11) +hasLocation(#20018,#20019) +#20020=* +lines(#20020,#20001,"""Hello"";"," ") -hasLocation(#20238,#20040) -#20239=* -lines(#20239,#20001,"'world';"," +#20021=@"loc,{#10000},10,1,10,8" +locations_default(#20021,#10000,10,1,10,8) +hasLocation(#20020,#20021) +#20022=* +lines(#20022,#20001,"'world';"," ") -hasLocation(#20239,#20044) -#20240=* -lines(#20240,#20001,"""'what?'\x0a"";"," +#20023=@"loc,{#10000},11,1,11,8" +locations_default(#20023,#10000,11,1,11,8) +hasLocation(#20022,#20023) +#20024=* +lines(#20024,#20001,"""'what?'\x0a"";"," ") -hasLocation(#20240,#20048) -#20241=* -lines(#20241,#20001,"'""why?""\n';"," +#20025=@"loc,{#10000},12,1,12,14" +locations_default(#20025,#10000,12,1,12,14) +hasLocation(#20024,#20025) +#20026=* +lines(#20026,#20001,"'""why?""\n';"," ") -hasLocation(#20241,#20052) -#20242=* -lines(#20242,#20001,"/^(need?le)+/gi;"," +#20027=@"loc,{#10000},13,1,13,11" +locations_default(#20027,#10000,13,1,13,11) +hasLocation(#20026,#20027) +#20028=* +lines(#20028,#20001,"/^(need?le)+/gi;"," ") -hasLocation(#20242,#20056) -#20243=* -lines(#20243,#20001,"(23);"," +#20029=@"loc,{#10000},14,1,14,16" +locations_default(#20029,#10000,14,1,14,16) +hasLocation(#20028,#20029) +#20030=* +lines(#20030,#20001,"(23);"," ") -hasLocation(#20243,#20084) -#20244=* -lines(#20244,#20001,"[23, 42, , ""hi"" ];"," +#20031=@"loc,{#10000},15,1,15,5" +locations_default(#20031,#10000,15,1,15,5) +hasLocation(#20030,#20031) +#20032=* +lines(#20032,#20001,"[23, 42, , ""hi"" ];"," ") -hasLocation(#20244,#20090) -#20245=* -lines(#20245,#20001,"({ x: 23,"," +#20033=@"loc,{#10000},16,1,16,18" +locations_default(#20033,#10000,16,1,16,18) +hasLocation(#20032,#20033) +#20034=* +lines(#20034,#20001,"({ x: 23,"," ") -#20246=@"loc,{#10000},17,1,17,9" -locations_default(#20246,#10000,17,1,17,9) -hasLocation(#20245,#20246) -#20247=* -lines(#20247,#20001," y: this,"," +#20035=@"loc,{#10000},17,1,17,9" +locations_default(#20035,#10000,17,1,17,9) +hasLocation(#20034,#20035) +#20036=* +lines(#20036,#20001," y: this,"," ") -#20248=@"loc,{#10000},18,1,18,11" -locations_default(#20248,#10000,18,1,18,11) -hasLocation(#20247,#20248) +#20037=@"loc,{#10000},18,1,18,11" +locations_default(#20037,#10000,18,1,18,11) +hasLocation(#20036,#20037) indentation(#10000,18," ",3) -#20249=* -lines(#20249,#20001," get o() {},"," +#20038=* +lines(#20038,#20001," get o() {},"," ") -#20250=@"loc,{#10000},19,1,19,14" -locations_default(#20250,#10000,19,1,19,14) -hasLocation(#20249,#20250) +#20039=@"loc,{#10000},19,1,19,14" +locations_default(#20039,#10000,19,1,19,14) +hasLocation(#20038,#20039) indentation(#10000,19," ",3) -#20251=* -lines(#20251,#20001," get p() {},"," +#20040=* +lines(#20040,#20001," get p() {},"," ") -#20252=@"loc,{#10000},20,1,20,14" -locations_default(#20252,#10000,20,1,20,14) -hasLocation(#20251,#20252) +#20041=@"loc,{#10000},20,1,20,14" +locations_default(#20041,#10000,20,1,20,14) +hasLocation(#20040,#20041) indentation(#10000,20," ",3) -#20253=* -lines(#20253,#20001," set p(v) {}});"," +#20042=* +lines(#20042,#20001," set p(v) {}});"," ") -#20254=@"loc,{#10000},21,1,21,17" -locations_default(#20254,#10000,21,1,21,17) -hasLocation(#20253,#20254) +#20043=@"loc,{#10000},21,1,21,17" +locations_default(#20043,#10000,21,1,21,17) +hasLocation(#20042,#20043) indentation(#10000,21," ",3) -#20255=* -lines(#20255,#20001,"new Array;"," +#20044=* +lines(#20044,#20001,"new Array;"," ") -hasLocation(#20255,#20151) -#20256=* -lines(#20256,#20001,"new Object();"," +#20045=@"loc,{#10000},22,1,22,10" +locations_default(#20045,#10000,22,1,22,10) +hasLocation(#20044,#20045) +#20046=* +lines(#20046,#20001,"new Object();"," ") -hasLocation(#20256,#20158) -#20257=* -lines(#20257,#20001,"new String(""hi"");"," +#20047=@"loc,{#10000},23,1,23,13" +locations_default(#20047,#10000,23,1,23,13) +hasLocation(#20046,#20047) +#20048=* +lines(#20048,#20001,"new String(""hi"");"," ") -hasLocation(#20257,#20165) -#20258=* -lines(#20258,#20001,"String("""");"," +#20049=@"loc,{#10000},24,1,24,17" +locations_default(#20049,#10000,24,1,24,17) +hasLocation(#20048,#20049) +#20050=* +lines(#20050,#20001,"String("""");"," ") -hasLocation(#20258,#20174) -#20259=* -lines(#20259,#20001,"Object.create({});"," +#20051=@"loc,{#10000},25,1,25,11" +locations_default(#20051,#10000,25,1,25,11) +hasLocation(#20050,#20051) +#20052=* +lines(#20052,#20001,"Object.create({});"," ") -hasLocation(#20259,#20182) -#20260=* -lines(#20260,#20001,"String['epytotorp'.reverse()];"," +#20053=@"loc,{#10000},26,1,26,18" +locations_default(#20053,#10000,26,1,26,18) +hasLocation(#20052,#20053) +#20054=* +lines(#20054,#20001,"String['epytotorp'.reverse()];"," ") -hasLocation(#20260,#20194) -#20261=* -lines(#20261,#20001,"[,,];"," +#20055=@"loc,{#10000},27,1,27,30" +locations_default(#20055,#10000,27,1,27,30) +hasLocation(#20054,#20055) +#20056=* +lines(#20056,#20001,"[,,];"," ") -hasLocation(#20261,#20208) -#20262=* -lines(#20262,#20001,"[1,];"," +#20057=@"loc,{#10000},28,1,28,5" +locations_default(#20057,#10000,28,1,28,5) +hasLocation(#20056,#20057) +#20058=* +lines(#20058,#20001,"[1,];"," ") -hasLocation(#20262,#20212) -#20263=* -lines(#20263,#20001,"({ z: 56, });","") -hasLocation(#20263,#20218) +#20059=@"loc,{#10000},29,1,29,5" +locations_default(#20059,#10000,29,1,29,5) +hasLocation(#20058,#20059) +#20060=* +lines(#20060,#20001,"({ z: 56, });","") +#20061=@"loc,{#10000},30,1,30,13" +locations_default(#20061,#10000,30,1,30,13) +hasLocation(#20060,#20061) numlines(#20001,30,30,0) +#20062=* +tokeninfo(#20062,1,#20001,0,"null") +#20063=@"loc,{#10000},1,1,1,4" +locations_default(#20063,#10000,1,1,1,4) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,8,#20001,1,";") +#20065=@"loc,{#10000},1,5,1,5" +locations_default(#20065,#10000,1,5,1,5) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,2,#20001,2,"true") +#20067=@"loc,{#10000},2,1,2,4" +locations_default(#20067,#10000,2,1,2,4) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,8,#20001,3,";") +#20069=@"loc,{#10000},2,5,2,5" +locations_default(#20069,#10000,2,5,2,5) +hasLocation(#20068,#20069) +#20070=* +tokeninfo(#20070,2,#20001,4,"false") +#20071=@"loc,{#10000},3,1,3,5" +locations_default(#20071,#10000,3,1,3,5) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,8,#20001,5,";") +#20073=@"loc,{#10000},3,6,3,6" +locations_default(#20073,#10000,3,6,3,6) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,3,#20001,6,"23") +#20075=@"loc,{#10000},4,1,4,2" +locations_default(#20075,#10000,4,1,4,2) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,8,#20001,7,";") +#20077=@"loc,{#10000},4,3,4,3" +locations_default(#20077,#10000,4,3,4,3) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,3,#20001,8,"2.3") +#20079=@"loc,{#10000},5,1,5,3" +locations_default(#20079,#10000,5,1,5,3) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,8,#20001,9,";") +#20081=@"loc,{#10000},5,4,5,4" +locations_default(#20081,#10000,5,4,5,4) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,3,#20001,10,".42") +#20083=@"loc,{#10000},6,1,6,3" +locations_default(#20083,#10000,6,1,6,3) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,8,#20001,11,";") +#20085=@"loc,{#10000},6,4,6,4" +locations_default(#20085,#10000,6,4,6,4) +hasLocation(#20084,#20085) +#20086=* +tokeninfo(#20086,3,#20001,12,"7.6e23") +#20087=@"loc,{#10000},7,1,7,6" +locations_default(#20087,#10000,7,1,7,6) +hasLocation(#20086,#20087) +#20088=* +tokeninfo(#20088,8,#20001,13,";") +#20089=@"loc,{#10000},7,7,7,7" +locations_default(#20089,#10000,7,7,7,7) +hasLocation(#20088,#20089) +#20090=* +tokeninfo(#20090,3,#20001,14,"1E-42") +#20091=@"loc,{#10000},8,1,8,5" +locations_default(#20091,#10000,8,1,8,5) +hasLocation(#20090,#20091) +#20092=* +tokeninfo(#20092,8,#20001,15,";") +#20093=@"loc,{#10000},8,6,8,6" +locations_default(#20093,#10000,8,6,8,6) +hasLocation(#20092,#20093) +#20094=* +tokeninfo(#20094,3,#20001,16,"0xdeadbeef") +#20095=@"loc,{#10000},9,1,9,10" +locations_default(#20095,#10000,9,1,9,10) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,8,#20001,17,";") +#20097=@"loc,{#10000},9,11,9,11" +locations_default(#20097,#10000,9,11,9,11) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,4,#20001,18,"""Hello""") +#20099=@"loc,{#10000},10,1,10,7" +locations_default(#20099,#10000,10,1,10,7) +hasLocation(#20098,#20099) +#20100=* +tokeninfo(#20100,8,#20001,19,";") +#20101=@"loc,{#10000},10,8,10,8" +locations_default(#20101,#10000,10,8,10,8) +hasLocation(#20100,#20101) +#20102=* +tokeninfo(#20102,4,#20001,20,"'world'") +#20103=@"loc,{#10000},11,1,11,7" +locations_default(#20103,#10000,11,1,11,7) +hasLocation(#20102,#20103) +#20104=* +tokeninfo(#20104,8,#20001,21,";") +#20105=@"loc,{#10000},11,8,11,8" +locations_default(#20105,#10000,11,8,11,8) +hasLocation(#20104,#20105) +#20106=* +tokeninfo(#20106,4,#20001,22,"""'what?'\x0a""") +#20107=@"loc,{#10000},12,1,12,13" +locations_default(#20107,#10000,12,1,12,13) +hasLocation(#20106,#20107) +#20108=* +tokeninfo(#20108,8,#20001,23,";") +#20109=@"loc,{#10000},12,14,12,14" +locations_default(#20109,#10000,12,14,12,14) +hasLocation(#20108,#20109) +#20110=* +tokeninfo(#20110,4,#20001,24,"'""why?""\n'") +#20111=@"loc,{#10000},13,1,13,10" +locations_default(#20111,#10000,13,1,13,10) +hasLocation(#20110,#20111) +#20112=* +tokeninfo(#20112,8,#20001,25,";") +#20113=@"loc,{#10000},13,11,13,11" +locations_default(#20113,#10000,13,11,13,11) +hasLocation(#20112,#20113) +#20114=* +tokeninfo(#20114,5,#20001,26,"/^(need?le)+/gi") +#20115=@"loc,{#10000},14,1,14,15" +locations_default(#20115,#10000,14,1,14,15) +hasLocation(#20114,#20115) +#20116=* +tokeninfo(#20116,8,#20001,27,";") +#20117=@"loc,{#10000},14,16,14,16" +locations_default(#20117,#10000,14,16,14,16) +hasLocation(#20116,#20117) +#20118=* +tokeninfo(#20118,8,#20001,28,"(") +#20119=@"loc,{#10000},15,1,15,1" +locations_default(#20119,#10000,15,1,15,1) +hasLocation(#20118,#20119) +#20120=* +tokeninfo(#20120,3,#20001,29,"23") +#20121=@"loc,{#10000},15,2,15,3" +locations_default(#20121,#10000,15,2,15,3) +hasLocation(#20120,#20121) +#20122=* +tokeninfo(#20122,8,#20001,30,")") +#20123=@"loc,{#10000},15,4,15,4" +locations_default(#20123,#10000,15,4,15,4) +hasLocation(#20122,#20123) +#20124=* +tokeninfo(#20124,8,#20001,31,";") +#20125=@"loc,{#10000},15,5,15,5" +locations_default(#20125,#10000,15,5,15,5) +hasLocation(#20124,#20125) +#20126=* +tokeninfo(#20126,8,#20001,32,"[") +#20127=@"loc,{#10000},16,1,16,1" +locations_default(#20127,#10000,16,1,16,1) +hasLocation(#20126,#20127) +#20128=* +tokeninfo(#20128,3,#20001,33,"23") +#20129=@"loc,{#10000},16,2,16,3" +locations_default(#20129,#10000,16,2,16,3) +hasLocation(#20128,#20129) +#20130=* +tokeninfo(#20130,8,#20001,34,",") +#20131=@"loc,{#10000},16,4,16,4" +locations_default(#20131,#10000,16,4,16,4) +hasLocation(#20130,#20131) +#20132=* +tokeninfo(#20132,3,#20001,35,"42") +#20133=@"loc,{#10000},16,6,16,7" +locations_default(#20133,#10000,16,6,16,7) +hasLocation(#20132,#20133) +#20134=* +tokeninfo(#20134,8,#20001,36,",") +#20135=@"loc,{#10000},16,8,16,8" +locations_default(#20135,#10000,16,8,16,8) +hasLocation(#20134,#20135) +#20136=* +tokeninfo(#20136,8,#20001,37,",") +#20137=@"loc,{#10000},16,10,16,10" +locations_default(#20137,#10000,16,10,16,10) +hasLocation(#20136,#20137) +#20138=* +tokeninfo(#20138,4,#20001,38,"""hi""") +#20139=@"loc,{#10000},16,12,16,15" +locations_default(#20139,#10000,16,12,16,15) +hasLocation(#20138,#20139) +#20140=* +tokeninfo(#20140,8,#20001,39,"]") +#20141=@"loc,{#10000},16,17,16,17" +locations_default(#20141,#10000,16,17,16,17) +hasLocation(#20140,#20141) +#20142=* +tokeninfo(#20142,8,#20001,40,";") +#20143=@"loc,{#10000},16,18,16,18" +locations_default(#20143,#10000,16,18,16,18) +hasLocation(#20142,#20143) +#20144=* +tokeninfo(#20144,8,#20001,41,"(") +#20145=@"loc,{#10000},17,1,17,1" +locations_default(#20145,#10000,17,1,17,1) +hasLocation(#20144,#20145) +#20146=* +tokeninfo(#20146,8,#20001,42,"{") +#20147=@"loc,{#10000},17,2,17,2" +locations_default(#20147,#10000,17,2,17,2) +hasLocation(#20146,#20147) +#20148=* +tokeninfo(#20148,6,#20001,43,"x") +#20149=@"loc,{#10000},17,4,17,4" +locations_default(#20149,#10000,17,4,17,4) +hasLocation(#20148,#20149) +#20150=* +tokeninfo(#20150,8,#20001,44,":") +#20151=@"loc,{#10000},17,5,17,5" +locations_default(#20151,#10000,17,5,17,5) +hasLocation(#20150,#20151) +#20152=* +tokeninfo(#20152,3,#20001,45,"23") +#20153=@"loc,{#10000},17,7,17,8" +locations_default(#20153,#10000,17,7,17,8) +hasLocation(#20152,#20153) +#20154=* +tokeninfo(#20154,8,#20001,46,",") +#20155=@"loc,{#10000},17,9,17,9" +locations_default(#20155,#10000,17,9,17,9) +hasLocation(#20154,#20155) +#20156=* +tokeninfo(#20156,6,#20001,47,"y") +#20157=@"loc,{#10000},18,4,18,4" +locations_default(#20157,#10000,18,4,18,4) +hasLocation(#20156,#20157) +#20158=* +tokeninfo(#20158,8,#20001,48,":") +#20159=@"loc,{#10000},18,5,18,5" +locations_default(#20159,#10000,18,5,18,5) +hasLocation(#20158,#20159) +#20160=* +tokeninfo(#20160,7,#20001,49,"this") +#20161=@"loc,{#10000},18,7,18,10" +locations_default(#20161,#10000,18,7,18,10) +hasLocation(#20160,#20161) +#20162=* +tokeninfo(#20162,8,#20001,50,",") +#20163=@"loc,{#10000},18,11,18,11" +locations_default(#20163,#10000,18,11,18,11) +hasLocation(#20162,#20163) +#20164=* +tokeninfo(#20164,6,#20001,51,"get") +#20165=@"loc,{#10000},19,4,19,6" +locations_default(#20165,#10000,19,4,19,6) +hasLocation(#20164,#20165) +#20166=* +tokeninfo(#20166,6,#20001,52,"o") +#20167=@"loc,{#10000},19,8,19,8" +locations_default(#20167,#10000,19,8,19,8) +hasLocation(#20166,#20167) +#20168=* +tokeninfo(#20168,8,#20001,53,"(") +#20169=@"loc,{#10000},19,9,19,9" +locations_default(#20169,#10000,19,9,19,9) +hasLocation(#20168,#20169) +#20170=* +tokeninfo(#20170,8,#20001,54,")") +#20171=@"loc,{#10000},19,10,19,10" +locations_default(#20171,#10000,19,10,19,10) +hasLocation(#20170,#20171) +#20172=* +tokeninfo(#20172,8,#20001,55,"{") +#20173=@"loc,{#10000},19,12,19,12" +locations_default(#20173,#10000,19,12,19,12) +hasLocation(#20172,#20173) +#20174=* +tokeninfo(#20174,8,#20001,56,"}") +#20175=@"loc,{#10000},19,13,19,13" +locations_default(#20175,#10000,19,13,19,13) +hasLocation(#20174,#20175) +#20176=* +tokeninfo(#20176,8,#20001,57,",") +#20177=@"loc,{#10000},19,14,19,14" +locations_default(#20177,#10000,19,14,19,14) +hasLocation(#20176,#20177) +#20178=* +tokeninfo(#20178,6,#20001,58,"get") +#20179=@"loc,{#10000},20,4,20,6" +locations_default(#20179,#10000,20,4,20,6) +hasLocation(#20178,#20179) +#20180=* +tokeninfo(#20180,6,#20001,59,"p") +#20181=@"loc,{#10000},20,8,20,8" +locations_default(#20181,#10000,20,8,20,8) +hasLocation(#20180,#20181) +#20182=* +tokeninfo(#20182,8,#20001,60,"(") +#20183=@"loc,{#10000},20,9,20,9" +locations_default(#20183,#10000,20,9,20,9) +hasLocation(#20182,#20183) +#20184=* +tokeninfo(#20184,8,#20001,61,")") +#20185=@"loc,{#10000},20,10,20,10" +locations_default(#20185,#10000,20,10,20,10) +hasLocation(#20184,#20185) +#20186=* +tokeninfo(#20186,8,#20001,62,"{") +#20187=@"loc,{#10000},20,12,20,12" +locations_default(#20187,#10000,20,12,20,12) +hasLocation(#20186,#20187) +#20188=* +tokeninfo(#20188,8,#20001,63,"}") +#20189=@"loc,{#10000},20,13,20,13" +locations_default(#20189,#10000,20,13,20,13) +hasLocation(#20188,#20189) +#20190=* +tokeninfo(#20190,8,#20001,64,",") +#20191=@"loc,{#10000},20,14,20,14" +locations_default(#20191,#10000,20,14,20,14) +hasLocation(#20190,#20191) +#20192=* +tokeninfo(#20192,6,#20001,65,"set") +#20193=@"loc,{#10000},21,4,21,6" +locations_default(#20193,#10000,21,4,21,6) +hasLocation(#20192,#20193) +#20194=* +tokeninfo(#20194,6,#20001,66,"p") +#20195=@"loc,{#10000},21,8,21,8" +locations_default(#20195,#10000,21,8,21,8) +hasLocation(#20194,#20195) +#20196=* +tokeninfo(#20196,8,#20001,67,"(") +#20197=@"loc,{#10000},21,9,21,9" +locations_default(#20197,#10000,21,9,21,9) +hasLocation(#20196,#20197) +#20198=* +tokeninfo(#20198,6,#20001,68,"v") +#20199=@"loc,{#10000},21,10,21,10" +locations_default(#20199,#10000,21,10,21,10) +hasLocation(#20198,#20199) +#20200=* +tokeninfo(#20200,8,#20001,69,")") +#20201=@"loc,{#10000},21,11,21,11" +locations_default(#20201,#10000,21,11,21,11) +hasLocation(#20200,#20201) +#20202=* +tokeninfo(#20202,8,#20001,70,"{") +#20203=@"loc,{#10000},21,13,21,13" +locations_default(#20203,#10000,21,13,21,13) +hasLocation(#20202,#20203) +#20204=* +tokeninfo(#20204,8,#20001,71,"}") +#20205=@"loc,{#10000},21,14,21,14" +locations_default(#20205,#10000,21,14,21,14) +hasLocation(#20204,#20205) +#20206=* +tokeninfo(#20206,8,#20001,72,"}") +#20207=@"loc,{#10000},21,15,21,15" +locations_default(#20207,#10000,21,15,21,15) +hasLocation(#20206,#20207) +#20208=* +tokeninfo(#20208,8,#20001,73,")") +#20209=@"loc,{#10000},21,16,21,16" +locations_default(#20209,#10000,21,16,21,16) +hasLocation(#20208,#20209) +#20210=* +tokeninfo(#20210,8,#20001,74,";") +#20211=@"loc,{#10000},21,17,21,17" +locations_default(#20211,#10000,21,17,21,17) +hasLocation(#20210,#20211) +#20212=* +tokeninfo(#20212,7,#20001,75,"new") +#20213=@"loc,{#10000},22,1,22,3" +locations_default(#20213,#10000,22,1,22,3) +hasLocation(#20212,#20213) +#20214=* +tokeninfo(#20214,6,#20001,76,"Array") +#20215=@"loc,{#10000},22,5,22,9" +locations_default(#20215,#10000,22,5,22,9) +hasLocation(#20214,#20215) +#20216=* +tokeninfo(#20216,8,#20001,77,";") +#20217=@"loc,{#10000},22,10,22,10" +locations_default(#20217,#10000,22,10,22,10) +hasLocation(#20216,#20217) +#20218=* +tokeninfo(#20218,7,#20001,78,"new") +#20219=@"loc,{#10000},23,1,23,3" +locations_default(#20219,#10000,23,1,23,3) +hasLocation(#20218,#20219) +#20220=* +tokeninfo(#20220,6,#20001,79,"Object") +#20221=@"loc,{#10000},23,5,23,10" +locations_default(#20221,#10000,23,5,23,10) +hasLocation(#20220,#20221) +#20222=* +tokeninfo(#20222,8,#20001,80,"(") +#20223=@"loc,{#10000},23,11,23,11" +locations_default(#20223,#10000,23,11,23,11) +hasLocation(#20222,#20223) +#20224=* +tokeninfo(#20224,8,#20001,81,")") +#20225=@"loc,{#10000},23,12,23,12" +locations_default(#20225,#10000,23,12,23,12) +hasLocation(#20224,#20225) +#20226=* +tokeninfo(#20226,8,#20001,82,";") +#20227=@"loc,{#10000},23,13,23,13" +locations_default(#20227,#10000,23,13,23,13) +hasLocation(#20226,#20227) +#20228=* +tokeninfo(#20228,7,#20001,83,"new") +#20229=@"loc,{#10000},24,1,24,3" +locations_default(#20229,#10000,24,1,24,3) +hasLocation(#20228,#20229) +#20230=* +tokeninfo(#20230,6,#20001,84,"String") +#20231=@"loc,{#10000},24,5,24,10" +locations_default(#20231,#10000,24,5,24,10) +hasLocation(#20230,#20231) +#20232=* +tokeninfo(#20232,8,#20001,85,"(") +#20233=@"loc,{#10000},24,11,24,11" +locations_default(#20233,#10000,24,11,24,11) +hasLocation(#20232,#20233) +#20234=* +tokeninfo(#20234,4,#20001,86,"""hi""") +#20235=@"loc,{#10000},24,12,24,15" +locations_default(#20235,#10000,24,12,24,15) +hasLocation(#20234,#20235) +#20236=* +tokeninfo(#20236,8,#20001,87,")") +#20237=@"loc,{#10000},24,16,24,16" +locations_default(#20237,#10000,24,16,24,16) +hasLocation(#20236,#20237) +#20238=* +tokeninfo(#20238,8,#20001,88,";") +#20239=@"loc,{#10000},24,17,24,17" +locations_default(#20239,#10000,24,17,24,17) +hasLocation(#20238,#20239) +#20240=* +tokeninfo(#20240,6,#20001,89,"String") +#20241=@"loc,{#10000},25,1,25,6" +locations_default(#20241,#10000,25,1,25,6) +hasLocation(#20240,#20241) +#20242=* +tokeninfo(#20242,8,#20001,90,"(") +#20243=@"loc,{#10000},25,7,25,7" +locations_default(#20243,#10000,25,7,25,7) +hasLocation(#20242,#20243) +#20244=* +tokeninfo(#20244,4,#20001,91,"""""") +#20245=@"loc,{#10000},25,8,25,9" +locations_default(#20245,#10000,25,8,25,9) +hasLocation(#20244,#20245) +#20246=* +tokeninfo(#20246,8,#20001,92,")") +#20247=@"loc,{#10000},25,10,25,10" +locations_default(#20247,#10000,25,10,25,10) +hasLocation(#20246,#20247) +#20248=* +tokeninfo(#20248,8,#20001,93,";") +#20249=@"loc,{#10000},25,11,25,11" +locations_default(#20249,#10000,25,11,25,11) +hasLocation(#20248,#20249) +#20250=* +tokeninfo(#20250,6,#20001,94,"Object") +#20251=@"loc,{#10000},26,1,26,6" +locations_default(#20251,#10000,26,1,26,6) +hasLocation(#20250,#20251) +#20252=* +tokeninfo(#20252,8,#20001,95,".") +#20253=@"loc,{#10000},26,7,26,7" +locations_default(#20253,#10000,26,7,26,7) +hasLocation(#20252,#20253) +#20254=* +tokeninfo(#20254,6,#20001,96,"create") +#20255=@"loc,{#10000},26,8,26,13" +locations_default(#20255,#10000,26,8,26,13) +hasLocation(#20254,#20255) +#20256=* +tokeninfo(#20256,8,#20001,97,"(") +#20257=@"loc,{#10000},26,14,26,14" +locations_default(#20257,#10000,26,14,26,14) +hasLocation(#20256,#20257) +#20258=* +tokeninfo(#20258,8,#20001,98,"{") +#20259=@"loc,{#10000},26,15,26,15" +locations_default(#20259,#10000,26,15,26,15) +hasLocation(#20258,#20259) +#20260=* +tokeninfo(#20260,8,#20001,99,"}") +#20261=@"loc,{#10000},26,16,26,16" +locations_default(#20261,#10000,26,16,26,16) +hasLocation(#20260,#20261) +#20262=* +tokeninfo(#20262,8,#20001,100,")") +#20263=@"loc,{#10000},26,17,26,17" +locations_default(#20263,#10000,26,17,26,17) +hasLocation(#20262,#20263) #20264=* -tokeninfo(#20264,1,#20001,0,"null") -hasLocation(#20264,#20006) -#20265=* -tokeninfo(#20265,8,#20001,1,";") -#20266=@"loc,{#10000},1,5,1,5" -locations_default(#20266,#10000,1,5,1,5) -hasLocation(#20265,#20266) -#20267=* -tokeninfo(#20267,2,#20001,2,"true") -hasLocation(#20267,#20010) +tokeninfo(#20264,8,#20001,101,";") +#20265=@"loc,{#10000},26,18,26,18" +locations_default(#20265,#10000,26,18,26,18) +hasLocation(#20264,#20265) +#20266=* +tokeninfo(#20266,6,#20001,102,"String") +#20267=@"loc,{#10000},27,1,27,6" +locations_default(#20267,#10000,27,1,27,6) +hasLocation(#20266,#20267) #20268=* -tokeninfo(#20268,8,#20001,3,";") -#20269=@"loc,{#10000},2,5,2,5" -locations_default(#20269,#10000,2,5,2,5) +tokeninfo(#20268,8,#20001,103,"[") +#20269=@"loc,{#10000},27,7,27,7" +locations_default(#20269,#10000,27,7,27,7) hasLocation(#20268,#20269) #20270=* -tokeninfo(#20270,2,#20001,4,"false") -hasLocation(#20270,#20014) -#20271=* -tokeninfo(#20271,8,#20001,5,";") -#20272=@"loc,{#10000},3,6,3,6" -locations_default(#20272,#10000,3,6,3,6) -hasLocation(#20271,#20272) -#20273=* -tokeninfo(#20273,3,#20001,6,"23") -hasLocation(#20273,#20018) +tokeninfo(#20270,4,#20001,104,"'epytotorp'") +#20271=@"loc,{#10000},27,8,27,18" +locations_default(#20271,#10000,27,8,27,18) +hasLocation(#20270,#20271) +#20272=* +tokeninfo(#20272,8,#20001,105,".") +#20273=@"loc,{#10000},27,19,27,19" +locations_default(#20273,#10000,27,19,27,19) +hasLocation(#20272,#20273) #20274=* -tokeninfo(#20274,8,#20001,7,";") -#20275=@"loc,{#10000},4,3,4,3" -locations_default(#20275,#10000,4,3,4,3) +tokeninfo(#20274,6,#20001,106,"reverse") +#20275=@"loc,{#10000},27,20,27,26" +locations_default(#20275,#10000,27,20,27,26) hasLocation(#20274,#20275) #20276=* -tokeninfo(#20276,3,#20001,8,"2.3") -hasLocation(#20276,#20022) -#20277=* -tokeninfo(#20277,8,#20001,9,";") -#20278=@"loc,{#10000},5,4,5,4" -locations_default(#20278,#10000,5,4,5,4) -hasLocation(#20277,#20278) -#20279=* -tokeninfo(#20279,3,#20001,10,".42") -hasLocation(#20279,#20026) +tokeninfo(#20276,8,#20001,107,"(") +#20277=@"loc,{#10000},27,27,27,27" +locations_default(#20277,#10000,27,27,27,27) +hasLocation(#20276,#20277) +#20278=* +tokeninfo(#20278,8,#20001,108,")") +#20279=@"loc,{#10000},27,28,27,28" +locations_default(#20279,#10000,27,28,27,28) +hasLocation(#20278,#20279) #20280=* -tokeninfo(#20280,8,#20001,11,";") -#20281=@"loc,{#10000},6,4,6,4" -locations_default(#20281,#10000,6,4,6,4) +tokeninfo(#20280,8,#20001,109,"]") +#20281=@"loc,{#10000},27,29,27,29" +locations_default(#20281,#10000,27,29,27,29) hasLocation(#20280,#20281) #20282=* -tokeninfo(#20282,3,#20001,12,"7.6e23") -hasLocation(#20282,#20030) -#20283=* -tokeninfo(#20283,8,#20001,13,";") -#20284=@"loc,{#10000},7,7,7,7" -locations_default(#20284,#10000,7,7,7,7) -hasLocation(#20283,#20284) -#20285=* -tokeninfo(#20285,3,#20001,14,"1E-42") -hasLocation(#20285,#20034) +tokeninfo(#20282,8,#20001,110,";") +#20283=@"loc,{#10000},27,30,27,30" +locations_default(#20283,#10000,27,30,27,30) +hasLocation(#20282,#20283) +#20284=* +tokeninfo(#20284,8,#20001,111,"[") +#20285=@"loc,{#10000},28,1,28,1" +locations_default(#20285,#10000,28,1,28,1) +hasLocation(#20284,#20285) #20286=* -tokeninfo(#20286,8,#20001,15,";") -#20287=@"loc,{#10000},8,6,8,6" -locations_default(#20287,#10000,8,6,8,6) +tokeninfo(#20286,8,#20001,112,",") +#20287=@"loc,{#10000},28,2,28,2" +locations_default(#20287,#10000,28,2,28,2) hasLocation(#20286,#20287) #20288=* -tokeninfo(#20288,3,#20001,16,"0xdeadbeef") -hasLocation(#20288,#20038) -#20289=* -tokeninfo(#20289,8,#20001,17,";") -#20290=@"loc,{#10000},9,11,9,11" -locations_default(#20290,#10000,9,11,9,11) -hasLocation(#20289,#20290) -#20291=* -tokeninfo(#20291,4,#20001,18,"""Hello""") -hasLocation(#20291,#20042) +tokeninfo(#20288,8,#20001,113,",") +#20289=@"loc,{#10000},28,3,28,3" +locations_default(#20289,#10000,28,3,28,3) +hasLocation(#20288,#20289) +#20290=* +tokeninfo(#20290,8,#20001,114,"]") +#20291=@"loc,{#10000},28,4,28,4" +locations_default(#20291,#10000,28,4,28,4) +hasLocation(#20290,#20291) #20292=* -tokeninfo(#20292,8,#20001,19,";") -#20293=@"loc,{#10000},10,8,10,8" -locations_default(#20293,#10000,10,8,10,8) +tokeninfo(#20292,8,#20001,115,";") +#20293=@"loc,{#10000},28,5,28,5" +locations_default(#20293,#10000,28,5,28,5) hasLocation(#20292,#20293) #20294=* -tokeninfo(#20294,4,#20001,20,"'world'") -hasLocation(#20294,#20046) -#20295=* -tokeninfo(#20295,8,#20001,21,";") -#20296=@"loc,{#10000},11,8,11,8" -locations_default(#20296,#10000,11,8,11,8) -hasLocation(#20295,#20296) -#20297=* -tokeninfo(#20297,4,#20001,22,"""'what?'\x0a""") -hasLocation(#20297,#20050) +tokeninfo(#20294,8,#20001,116,"[") +#20295=@"loc,{#10000},29,1,29,1" +locations_default(#20295,#10000,29,1,29,1) +hasLocation(#20294,#20295) +#20296=* +tokeninfo(#20296,3,#20001,117,"1") +#20297=@"loc,{#10000},29,2,29,2" +locations_default(#20297,#10000,29,2,29,2) +hasLocation(#20296,#20297) #20298=* -tokeninfo(#20298,8,#20001,23,";") -#20299=@"loc,{#10000},12,14,12,14" -locations_default(#20299,#10000,12,14,12,14) +tokeninfo(#20298,8,#20001,118,",") +#20299=@"loc,{#10000},29,3,29,3" +locations_default(#20299,#10000,29,3,29,3) hasLocation(#20298,#20299) #20300=* -tokeninfo(#20300,4,#20001,24,"'""why?""\n'") -hasLocation(#20300,#20054) -#20301=* -tokeninfo(#20301,8,#20001,25,";") -#20302=@"loc,{#10000},13,11,13,11" -locations_default(#20302,#10000,13,11,13,11) -hasLocation(#20301,#20302) -#20303=* -tokeninfo(#20303,5,#20001,26,"/^(need?le)+/gi") -hasLocation(#20303,#20058) +tokeninfo(#20300,8,#20001,119,"]") +#20301=@"loc,{#10000},29,4,29,4" +locations_default(#20301,#10000,29,4,29,4) +hasLocation(#20300,#20301) +#20302=* +tokeninfo(#20302,8,#20001,120,";") +#20303=@"loc,{#10000},29,5,29,5" +locations_default(#20303,#10000,29,5,29,5) +hasLocation(#20302,#20303) #20304=* -tokeninfo(#20304,8,#20001,27,";") -#20305=@"loc,{#10000},14,16,14,16" -locations_default(#20305,#10000,14,16,14,16) +tokeninfo(#20304,8,#20001,121,"(") +#20305=@"loc,{#10000},30,1,30,1" +locations_default(#20305,#10000,30,1,30,1) hasLocation(#20304,#20305) #20306=* -tokeninfo(#20306,8,#20001,28,"(") -#20307=@"loc,{#10000},15,1,15,1" -locations_default(#20307,#10000,15,1,15,1) +tokeninfo(#20306,8,#20001,122,"{") +#20307=@"loc,{#10000},30,2,30,2" +locations_default(#20307,#10000,30,2,30,2) hasLocation(#20306,#20307) #20308=* -tokeninfo(#20308,3,#20001,29,"23") -hasLocation(#20308,#20088) -#20309=* -tokeninfo(#20309,8,#20001,30,")") -#20310=@"loc,{#10000},15,4,15,4" -locations_default(#20310,#10000,15,4,15,4) -hasLocation(#20309,#20310) -#20311=* -tokeninfo(#20311,8,#20001,31,";") -#20312=@"loc,{#10000},15,5,15,5" -locations_default(#20312,#10000,15,5,15,5) -hasLocation(#20311,#20312) -#20313=* -tokeninfo(#20313,8,#20001,32,"[") -#20314=@"loc,{#10000},16,1,16,1" -locations_default(#20314,#10000,16,1,16,1) -hasLocation(#20313,#20314) -#20315=* -tokeninfo(#20315,3,#20001,33,"23") -hasLocation(#20315,#20094) +tokeninfo(#20308,6,#20001,123,"z") +#20309=@"loc,{#10000},30,4,30,4" +locations_default(#20309,#10000,30,4,30,4) +hasLocation(#20308,#20309) +#20310=* +tokeninfo(#20310,8,#20001,124,":") +#20311=@"loc,{#10000},30,5,30,5" +locations_default(#20311,#10000,30,5,30,5) +hasLocation(#20310,#20311) +#20312=* +tokeninfo(#20312,3,#20001,125,"56") +#20313=@"loc,{#10000},30,7,30,8" +locations_default(#20313,#10000,30,7,30,8) +hasLocation(#20312,#20313) +#20314=* +tokeninfo(#20314,8,#20001,126,",") +#20315=@"loc,{#10000},30,9,30,9" +locations_default(#20315,#10000,30,9,30,9) +hasLocation(#20314,#20315) #20316=* -tokeninfo(#20316,8,#20001,34,",") -#20317=@"loc,{#10000},16,4,16,4" -locations_default(#20317,#10000,16,4,16,4) +tokeninfo(#20316,8,#20001,127,"}") +#20317=@"loc,{#10000},30,11,30,11" +locations_default(#20317,#10000,30,11,30,11) hasLocation(#20316,#20317) #20318=* -tokeninfo(#20318,3,#20001,35,"42") -hasLocation(#20318,#20096) -#20319=* -tokeninfo(#20319,8,#20001,36,",") -#20320=@"loc,{#10000},16,8,16,8" -locations_default(#20320,#10000,16,8,16,8) -hasLocation(#20319,#20320) -#20321=* -tokeninfo(#20321,8,#20001,37,",") -#20322=@"loc,{#10000},16,10,16,10" -locations_default(#20322,#10000,16,10,16,10) -hasLocation(#20321,#20322) -#20323=* -tokeninfo(#20323,4,#20001,38,"""hi""") -hasLocation(#20323,#20098) -#20324=* -tokeninfo(#20324,8,#20001,39,"]") -#20325=@"loc,{#10000},16,17,16,17" -locations_default(#20325,#10000,16,17,16,17) -hasLocation(#20324,#20325) +tokeninfo(#20318,8,#20001,128,")") +#20319=@"loc,{#10000},30,12,30,12" +locations_default(#20319,#10000,30,12,30,12) +hasLocation(#20318,#20319) +#20320=* +tokeninfo(#20320,8,#20001,129,";") +#20321=@"loc,{#10000},30,13,30,13" +locations_default(#20321,#10000,30,13,30,13) +hasLocation(#20320,#20321) +#20322=* +tokeninfo(#20322,0,#20001,130,"") +#20323=@"loc,{#10000},30,14,30,13" +locations_default(#20323,#10000,30,14,30,13) +hasLocation(#20322,#20323) +toplevels(#20001,0) +#20324=@"loc,{#10000},1,1,30,13" +locations_default(#20324,#10000,1,1,30,13) +hasLocation(#20001,#20324) +#20325=* +stmts(#20325,2,#20001,0,"null;") +hasLocation(#20325,#20003) +stmtContainers(#20325,#20001) #20326=* -tokeninfo(#20326,8,#20001,40,";") -#20327=@"loc,{#10000},16,18,16,18" -locations_default(#20327,#10000,16,18,16,18) -hasLocation(#20326,#20327) +exprs(#20326,1,#20325,0,"null") +hasLocation(#20326,#20063) +enclosingStmt(#20326,#20325) +exprContainers(#20326,#20001) +literals("null","null",#20326) +#20327=* +stmts(#20327,2,#20001,1,"true;") +hasLocation(#20327,#20005) +stmtContainers(#20327,#20001) #20328=* -tokeninfo(#20328,8,#20001,41,"(") -#20329=@"loc,{#10000},17,1,17,1" -locations_default(#20329,#10000,17,1,17,1) -hasLocation(#20328,#20329) +exprs(#20328,2,#20327,0,"true") +hasLocation(#20328,#20067) +enclosingStmt(#20328,#20327) +exprContainers(#20328,#20001) +literals("true","true",#20328) +#20329=* +stmts(#20329,2,#20001,2,"false;") +hasLocation(#20329,#20007) +stmtContainers(#20329,#20001) #20330=* -tokeninfo(#20330,8,#20001,42,"{") -#20331=@"loc,{#10000},17,2,17,2" -locations_default(#20331,#10000,17,2,17,2) -hasLocation(#20330,#20331) +exprs(#20330,2,#20329,0,"false") +hasLocation(#20330,#20071) +enclosingStmt(#20330,#20329) +exprContainers(#20330,#20001) +literals("false","false",#20330) +#20331=* +stmts(#20331,2,#20001,3,"23;") +hasLocation(#20331,#20009) +stmtContainers(#20331,#20001) #20332=* -tokeninfo(#20332,6,#20001,43,"x") -hasLocation(#20332,#20108) +exprs(#20332,3,#20331,0,"23") +hasLocation(#20332,#20075) +enclosingStmt(#20332,#20331) +exprContainers(#20332,#20001) +literals("23","23",#20332) #20333=* -tokeninfo(#20333,8,#20001,44,":") -#20334=@"loc,{#10000},17,5,17,5" -locations_default(#20334,#10000,17,5,17,5) -hasLocation(#20333,#20334) +stmts(#20333,2,#20001,4,"2.3;") +hasLocation(#20333,#20011) +stmtContainers(#20333,#20001) +#20334=* +exprs(#20334,3,#20333,0,"2.3") +hasLocation(#20334,#20079) +enclosingStmt(#20334,#20333) +exprContainers(#20334,#20001) +literals("2.3","2.3",#20334) #20335=* -tokeninfo(#20335,3,#20001,45,"23") -hasLocation(#20335,#20110) +stmts(#20335,2,#20001,5,".42;") +hasLocation(#20335,#20013) +stmtContainers(#20335,#20001) #20336=* -tokeninfo(#20336,8,#20001,46,",") -#20337=@"loc,{#10000},17,9,17,9" -locations_default(#20337,#10000,17,9,17,9) -hasLocation(#20336,#20337) +exprs(#20336,3,#20335,0,".42") +hasLocation(#20336,#20083) +enclosingStmt(#20336,#20335) +exprContainers(#20336,#20001) +literals("0.42",".42",#20336) +#20337=* +stmts(#20337,2,#20001,6,"7.6e23;") +hasLocation(#20337,#20015) +stmtContainers(#20337,#20001) #20338=* -tokeninfo(#20338,6,#20001,47,"y") -hasLocation(#20338,#20114) +exprs(#20338,3,#20337,0,"7.6e23") +hasLocation(#20338,#20087) +enclosingStmt(#20338,#20337) +exprContainers(#20338,#20001) +literals("7.6E23","7.6e23",#20338) #20339=* -tokeninfo(#20339,8,#20001,48,":") -#20340=@"loc,{#10000},18,5,18,5" -locations_default(#20340,#10000,18,5,18,5) -hasLocation(#20339,#20340) +stmts(#20339,2,#20001,7,"1E-42;") +hasLocation(#20339,#20017) +stmtContainers(#20339,#20001) +#20340=* +exprs(#20340,3,#20339,0,"1E-42") +hasLocation(#20340,#20091) +enclosingStmt(#20340,#20339) +exprContainers(#20340,#20001) +literals("1.0E-42","1E-42",#20340) #20341=* -tokeninfo(#20341,7,#20001,49,"this") -hasLocation(#20341,#20116) +stmts(#20341,2,#20001,8,"0xdeadbeef;") +hasLocation(#20341,#20019) +stmtContainers(#20341,#20001) #20342=* -tokeninfo(#20342,8,#20001,50,",") -#20343=@"loc,{#10000},18,11,18,11" -locations_default(#20343,#10000,18,11,18,11) -hasLocation(#20342,#20343) +exprs(#20342,3,#20341,0,"0xdeadbeef") +hasLocation(#20342,#20095) +enclosingStmt(#20342,#20341) +exprContainers(#20342,#20001) +literals("3735928559","0xdeadbeef",#20342) +#20343=* +stmts(#20343,2,#20001,9,"""Hello"";") +hasLocation(#20343,#20021) +stmtContainers(#20343,#20001) #20344=* -tokeninfo(#20344,6,#20001,51,"get") -#20345=@"loc,{#10000},19,4,19,6" -locations_default(#20345,#10000,19,4,19,6) -hasLocation(#20344,#20345) +exprs(#20344,4,#20343,0,"""Hello""") +hasLocation(#20344,#20099) +enclosingStmt(#20344,#20343) +exprContainers(#20344,#20001) +literals("Hello","""Hello""",#20344) +#20345=* +stmts(#20345,2,#20001,10,"'world';") +hasLocation(#20345,#20023) +stmtContainers(#20345,#20001) #20346=* -tokeninfo(#20346,6,#20001,52,"o") -hasLocation(#20346,#20120) +exprs(#20346,4,#20345,0,"'world'") +hasLocation(#20346,#20103) +enclosingStmt(#20346,#20345) +exprContainers(#20346,#20001) +literals("world","'world'",#20346) #20347=* -tokeninfo(#20347,8,#20001,53,"(") -#20348=@"loc,{#10000},19,9,19,9" -locations_default(#20348,#10000,19,9,19,9) -hasLocation(#20347,#20348) +stmts(#20347,2,#20001,11,"""'what?'\x0a"";") +hasLocation(#20347,#20025) +stmtContainers(#20347,#20001) +#20348=* +exprs(#20348,4,#20347,0,"""'what?'\x0a""") +hasLocation(#20348,#20107) +enclosingStmt(#20348,#20347) +exprContainers(#20348,#20001) +literals("'what?' +","""'what?'\x0a""",#20348) #20349=* -tokeninfo(#20349,8,#20001,54,")") -#20350=@"loc,{#10000},19,10,19,10" -locations_default(#20350,#10000,19,10,19,10) -hasLocation(#20349,#20350) +stmts(#20349,2,#20001,12,"'""why?""\n';") +hasLocation(#20349,#20027) +stmtContainers(#20349,#20001) +#20350=* +exprs(#20350,4,#20349,0,"'""why?""\n'") +hasLocation(#20350,#20111) +enclosingStmt(#20350,#20349) +exprContainers(#20350,#20001) +literals("""why?"" +","'""why?""\n'",#20350) #20351=* -tokeninfo(#20351,8,#20001,55,"{") -#20352=@"loc,{#10000},19,12,19,12" -locations_default(#20352,#10000,19,12,19,12) -hasLocation(#20351,#20352) +stmts(#20351,2,#20001,13,"/^(need?le)+/gi;") +hasLocation(#20351,#20029) +stmtContainers(#20351,#20001) +#20352=* +exprs(#20352,5,#20351,0,"/^(need?le)+/gi") +hasLocation(#20352,#20115) +enclosingStmt(#20352,#20351) +exprContainers(#20352,#20001) +literals("/^(need?le)+/gi","/^(need?le)+/gi",#20352) #20353=* -tokeninfo(#20353,8,#20001,56,"}") -#20354=@"loc,{#10000},19,13,19,13" -locations_default(#20354,#10000,19,13,19,13) +regexpterm(#20353,1,#20352,0,"^(need?le)+") +#20354=@"loc,{#10000},14,2,14,12" +locations_default(#20354,#10000,14,2,14,12) hasLocation(#20353,#20354) #20355=* -tokeninfo(#20355,8,#20001,57,",") -#20356=@"loc,{#10000},19,14,19,14" -locations_default(#20356,#10000,19,14,19,14) +regexpterm(#20355,2,#20353,0,"^") +#20356=@"loc,{#10000},14,2,14,2" +locations_default(#20356,#10000,14,2,14,2) hasLocation(#20355,#20356) #20357=* -tokeninfo(#20357,6,#20001,58,"get") -#20358=@"loc,{#10000},20,4,20,6" -locations_default(#20358,#10000,20,4,20,6) +regexpterm(#20357,9,#20353,1,"(need?le)+") +#20358=@"loc,{#10000},14,3,14,12" +locations_default(#20358,#10000,14,3,14,12) hasLocation(#20357,#20358) +isGreedy(#20357) #20359=* -tokeninfo(#20359,6,#20001,59,"p") -hasLocation(#20359,#20130) -#20360=* -tokeninfo(#20360,8,#20001,60,"(") -#20361=@"loc,{#10000},20,9,20,9" -locations_default(#20361,#10000,20,9,20,9) -hasLocation(#20360,#20361) -#20362=* -tokeninfo(#20362,8,#20001,61,")") -#20363=@"loc,{#10000},20,10,20,10" -locations_default(#20363,#10000,20,10,20,10) -hasLocation(#20362,#20363) -#20364=* -tokeninfo(#20364,8,#20001,62,"{") -#20365=@"loc,{#10000},20,12,20,12" -locations_default(#20365,#10000,20,12,20,12) -hasLocation(#20364,#20365) -#20366=* -tokeninfo(#20366,8,#20001,63,"}") -#20367=@"loc,{#10000},20,13,20,13" -locations_default(#20367,#10000,20,13,20,13) -hasLocation(#20366,#20367) -#20368=* -tokeninfo(#20368,8,#20001,64,",") -#20369=@"loc,{#10000},20,14,20,14" -locations_default(#20369,#10000,20,14,20,14) -hasLocation(#20368,#20369) -#20370=* -tokeninfo(#20370,6,#20001,65,"set") -#20371=@"loc,{#10000},21,4,21,6" -locations_default(#20371,#10000,21,4,21,6) -hasLocation(#20370,#20371) -#20372=* -tokeninfo(#20372,6,#20001,66,"p") -hasLocation(#20372,#20140) +regexpterm(#20359,13,#20357,0,"(need?le)") +#20360=@"loc,{#10000},14,3,14,11" +locations_default(#20360,#10000,14,3,14,11) +hasLocation(#20359,#20360) +isCapture(#20359,1) +#20361=* +regexpterm(#20361,1,#20359,0,"need?le") +#20362=@"loc,{#10000},14,4,14,10" +locations_default(#20362,#10000,14,4,14,10) +hasLocation(#20361,#20362) +#20363=* +regexpterm(#20363,14,#20361,0,"n") +#20364=@"loc,{#10000},14,4,14,4" +locations_default(#20364,#10000,14,4,14,4) +hasLocation(#20363,#20364) +regexpConstValue(#20363,"n") +#20365=* +regexpterm(#20365,14,#20361,1,"e") +#20366=@"loc,{#10000},14,5,14,5" +locations_default(#20366,#10000,14,5,14,5) +hasLocation(#20365,#20366) +regexpConstValue(#20365,"e") +#20367=* +regexpterm(#20367,14,#20361,2,"e") +#20368=@"loc,{#10000},14,6,14,6" +locations_default(#20368,#10000,14,6,14,6) +hasLocation(#20367,#20368) +regexpConstValue(#20367,"e") +#20369=* +regexpterm(#20369,10,#20361,3,"d?") +#20370=@"loc,{#10000},14,7,14,8" +locations_default(#20370,#10000,14,7,14,8) +hasLocation(#20369,#20370) +isGreedy(#20369) +#20371=* +regexpterm(#20371,14,#20369,0,"d") +#20372=@"loc,{#10000},14,7,14,7" +locations_default(#20372,#10000,14,7,14,7) +hasLocation(#20371,#20372) +regexpConstValue(#20371,"d") #20373=* -tokeninfo(#20373,8,#20001,67,"(") -#20374=@"loc,{#10000},21,9,21,9" -locations_default(#20374,#10000,21,9,21,9) +regexpterm(#20373,14,#20361,4,"l") +#20374=@"loc,{#10000},14,9,14,9" +locations_default(#20374,#10000,14,9,14,9) hasLocation(#20373,#20374) +regexpConstValue(#20373,"l") #20375=* -tokeninfo(#20375,6,#20001,68,"v") -hasLocation(#20375,#20146) -#20376=* -tokeninfo(#20376,8,#20001,69,")") -#20377=@"loc,{#10000},21,11,21,11" -locations_default(#20377,#10000,21,11,21,11) -hasLocation(#20376,#20377) +regexpterm(#20375,14,#20361,5,"e") +#20376=@"loc,{#10000},14,10,14,10" +locations_default(#20376,#10000,14,10,14,10) +hasLocation(#20375,#20376) +regexpConstValue(#20375,"e") +#20377=* +stmts(#20377,2,#20001,14,"(23);") +hasLocation(#20377,#20031) +stmtContainers(#20377,#20001) #20378=* -tokeninfo(#20378,8,#20001,70,"{") -#20379=@"loc,{#10000},21,13,21,13" -locations_default(#20379,#10000,21,13,21,13) +exprs(#20378,63,#20377,0,"(23)") +#20379=@"loc,{#10000},15,1,15,4" +locations_default(#20379,#10000,15,1,15,4) hasLocation(#20378,#20379) +enclosingStmt(#20378,#20377) +exprContainers(#20378,#20001) #20380=* -tokeninfo(#20380,8,#20001,71,"}") -#20381=@"loc,{#10000},21,14,21,14" -locations_default(#20381,#10000,21,14,21,14) -hasLocation(#20380,#20381) +exprs(#20380,3,#20378,0,"23") +hasLocation(#20380,#20121) +enclosingStmt(#20380,#20377) +exprContainers(#20380,#20001) +literals("23","23",#20380) +#20381=* +stmts(#20381,2,#20001,15,"[23, 42, , ""hi"" ];") +hasLocation(#20381,#20033) +stmtContainers(#20381,#20001) #20382=* -tokeninfo(#20382,8,#20001,72,"}") -#20383=@"loc,{#10000},21,15,21,15" -locations_default(#20383,#10000,21,15,21,15) +exprs(#20382,7,#20381,0,"[23, 42, , ""hi"" ]") +#20383=@"loc,{#10000},16,1,16,17" +locations_default(#20383,#10000,16,1,16,17) hasLocation(#20382,#20383) +enclosingStmt(#20382,#20381) +exprContainers(#20382,#20001) #20384=* -tokeninfo(#20384,8,#20001,73,")") -#20385=@"loc,{#10000},21,16,21,16" -locations_default(#20385,#10000,21,16,21,16) -hasLocation(#20384,#20385) +exprs(#20384,3,#20382,0,"23") +hasLocation(#20384,#20129) +enclosingStmt(#20384,#20381) +exprContainers(#20384,#20001) +literals("23","23",#20384) +#20385=* +exprs(#20385,3,#20382,1,"42") +hasLocation(#20385,#20133) +enclosingStmt(#20385,#20381) +exprContainers(#20385,#20001) +literals("42","42",#20385) #20386=* -tokeninfo(#20386,8,#20001,74,";") -#20387=@"loc,{#10000},21,17,21,17" -locations_default(#20387,#10000,21,17,21,17) -hasLocation(#20386,#20387) -#20388=* -tokeninfo(#20388,7,#20001,75,"new") -#20389=@"loc,{#10000},22,1,22,3" -locations_default(#20389,#10000,22,1,22,3) -hasLocation(#20388,#20389) -#20390=* -tokeninfo(#20390,6,#20001,76,"Array") -hasLocation(#20390,#20155) +exprs(#20386,4,#20382,3,"""hi""") +hasLocation(#20386,#20139) +enclosingStmt(#20386,#20381) +exprContainers(#20386,#20001) +literals("hi","""hi""",#20386) +arraySize(#20382,4) +#20387=* +stmts(#20387,2,#20001,16,"({ x: 2 ... ) {}});") +#20388=@"loc,{#10000},17,1,21,17" +locations_default(#20388,#10000,17,1,21,17) +hasLocation(#20387,#20388) +stmtContainers(#20387,#20001) +#20389=* +exprs(#20389,63,#20387,0,"({ x: 2 ... v) {}})") +#20390=@"loc,{#10000},17,1,21,16" +locations_default(#20390,#10000,17,1,21,16) +hasLocation(#20389,#20390) +enclosingStmt(#20389,#20387) +exprContainers(#20389,#20001) #20391=* -tokeninfo(#20391,8,#20001,77,";") -#20392=@"loc,{#10000},22,10,22,10" -locations_default(#20392,#10000,22,10,22,10) +exprs(#20391,8,#20389,0,"{ x: 23 ... (v) {}}") +#20392=@"loc,{#10000},17,2,21,15" +locations_default(#20392,#10000,17,2,21,15) hasLocation(#20391,#20392) +enclosingStmt(#20391,#20387) +exprContainers(#20391,#20001) #20393=* -tokeninfo(#20393,7,#20001,78,"new") -#20394=@"loc,{#10000},23,1,23,3" -locations_default(#20394,#10000,23,1,23,3) +properties(#20393,#20391,0,0,"x: 23") +#20394=@"loc,{#10000},17,4,17,8" +locations_default(#20394,#10000,17,4,17,8) hasLocation(#20393,#20394) #20395=* -tokeninfo(#20395,6,#20001,79,"Object") -hasLocation(#20395,#20162) +exprs(#20395,0,#20393,0,"x") +hasLocation(#20395,#20149) +enclosingStmt(#20395,#20387) +exprContainers(#20395,#20001) +literals("x","x",#20395) #20396=* -tokeninfo(#20396,8,#20001,80,"(") -#20397=@"loc,{#10000},23,11,23,11" -locations_default(#20397,#10000,23,11,23,11) -hasLocation(#20396,#20397) -#20398=* -tokeninfo(#20398,8,#20001,81,")") -#20399=@"loc,{#10000},23,12,23,12" -locations_default(#20399,#10000,23,12,23,12) -hasLocation(#20398,#20399) +exprs(#20396,3,#20393,1,"23") +hasLocation(#20396,#20153) +enclosingStmt(#20396,#20387) +exprContainers(#20396,#20001) +literals("23","23",#20396) +#20397=* +properties(#20397,#20391,1,0,"y: this") +#20398=@"loc,{#10000},18,4,18,10" +locations_default(#20398,#10000,18,4,18,10) +hasLocation(#20397,#20398) +#20399=* +exprs(#20399,0,#20397,0,"y") +hasLocation(#20399,#20157) +enclosingStmt(#20399,#20387) +exprContainers(#20399,#20001) +literals("y","y",#20399) #20400=* -tokeninfo(#20400,8,#20001,82,";") -#20401=@"loc,{#10000},23,13,23,13" -locations_default(#20401,#10000,23,13,23,13) -hasLocation(#20400,#20401) -#20402=* -tokeninfo(#20402,7,#20001,83,"new") -#20403=@"loc,{#10000},24,1,24,3" -locations_default(#20403,#10000,24,1,24,3) -hasLocation(#20402,#20403) +exprs(#20400,6,#20397,1,"this") +hasLocation(#20400,#20161) +enclosingStmt(#20400,#20387) +exprContainers(#20400,#20001) +#20401=* +properties(#20401,#20391,2,1,"get o() {}") +#20402=@"loc,{#10000},19,4,19,13" +locations_default(#20402,#10000,19,4,19,13) +hasLocation(#20401,#20402) +#20403=* +exprs(#20403,0,#20401,0,"o") +hasLocation(#20403,#20167) +enclosingStmt(#20403,#20387) +exprContainers(#20403,#20001) +literals("o","o",#20403) #20404=* -tokeninfo(#20404,6,#20001,84,"String") -hasLocation(#20404,#20169) -#20405=* -tokeninfo(#20405,8,#20001,85,"(") -#20406=@"loc,{#10000},24,11,24,11" -locations_default(#20406,#10000,24,11,24,11) -hasLocation(#20405,#20406) -#20407=* -tokeninfo(#20407,4,#20001,86,"""hi""") -hasLocation(#20407,#20172) +exprs(#20404,9,#20401,1,"() {}") +#20405=@"loc,{#10000},19,9,19,13" +locations_default(#20405,#10000,19,9,19,13) +hasLocation(#20404,#20405) +enclosingStmt(#20404,#20387) +exprContainers(#20404,#20001) +#20406=* +scopes(#20406,1) +scopenodes(#20404,#20406) +scopenesting(#20406,#20000) +#20407=@"var;{arguments};{#20406}" +variables(#20407,"arguments",#20406) +isArgumentsObject(#20407) #20408=* -tokeninfo(#20408,8,#20001,87,")") -#20409=@"loc,{#10000},24,16,24,16" -locations_default(#20409,#10000,24,16,24,16) +stmts(#20408,1,#20404,-2,"{}") +#20409=@"loc,{#10000},19,12,19,13" +locations_default(#20409,#10000,19,12,19,13) hasLocation(#20408,#20409) +stmtContainers(#20408,#20404) #20410=* -tokeninfo(#20410,8,#20001,88,";") -#20411=@"loc,{#10000},24,17,24,17" -locations_default(#20411,#10000,24,17,24,17) +properties(#20410,#20391,3,1,"get p() {}") +#20411=@"loc,{#10000},20,4,20,13" +locations_default(#20411,#10000,20,4,20,13) hasLocation(#20410,#20411) #20412=* -tokeninfo(#20412,6,#20001,89,"String") -hasLocation(#20412,#20178) +exprs(#20412,0,#20410,0,"p") +hasLocation(#20412,#20181) +enclosingStmt(#20412,#20387) +exprContainers(#20412,#20001) +literals("p","p",#20412) #20413=* -tokeninfo(#20413,8,#20001,90,"(") -#20414=@"loc,{#10000},25,7,25,7" -locations_default(#20414,#10000,25,7,25,7) +exprs(#20413,9,#20410,1,"() {}") +#20414=@"loc,{#10000},20,9,20,13" +locations_default(#20414,#10000,20,9,20,13) hasLocation(#20413,#20414) +enclosingStmt(#20413,#20387) +exprContainers(#20413,#20001) #20415=* -tokeninfo(#20415,4,#20001,91,"""""") -hasLocation(#20415,#20180) -#20416=* -tokeninfo(#20416,8,#20001,92,")") -#20417=@"loc,{#10000},25,10,25,10" -locations_default(#20417,#10000,25,10,25,10) -hasLocation(#20416,#20417) -#20418=* -tokeninfo(#20418,8,#20001,93,";") -#20419=@"loc,{#10000},25,11,25,11" -locations_default(#20419,#10000,25,11,25,11) -hasLocation(#20418,#20419) -#20420=* -tokeninfo(#20420,6,#20001,94,"Object") -hasLocation(#20420,#20188) +scopes(#20415,1) +scopenodes(#20413,#20415) +scopenesting(#20415,#20000) +#20416=@"var;{arguments};{#20415}" +variables(#20416,"arguments",#20415) +isArgumentsObject(#20416) +#20417=* +stmts(#20417,1,#20413,-2,"{}") +#20418=@"loc,{#10000},20,12,20,13" +locations_default(#20418,#10000,20,12,20,13) +hasLocation(#20417,#20418) +stmtContainers(#20417,#20413) +#20419=* +properties(#20419,#20391,4,2,"set p(v) {}") +#20420=@"loc,{#10000},21,4,21,14" +locations_default(#20420,#10000,21,4,21,14) +hasLocation(#20419,#20420) #20421=* -tokeninfo(#20421,8,#20001,95,".") -#20422=@"loc,{#10000},26,7,26,7" -locations_default(#20422,#10000,26,7,26,7) -hasLocation(#20421,#20422) -#20423=* -tokeninfo(#20423,6,#20001,96,"create") -hasLocation(#20423,#20190) +exprs(#20421,0,#20419,0,"p") +hasLocation(#20421,#20195) +enclosingStmt(#20421,#20387) +exprContainers(#20421,#20001) +literals("p","p",#20421) +#20422=* +exprs(#20422,9,#20419,1,"(v) {}") +#20423=@"loc,{#10000},21,9,21,14" +locations_default(#20423,#10000,21,9,21,14) +hasLocation(#20422,#20423) +enclosingStmt(#20422,#20387) +exprContainers(#20422,#20001) #20424=* -tokeninfo(#20424,8,#20001,97,"(") -#20425=@"loc,{#10000},26,14,26,14" -locations_default(#20425,#10000,26,14,26,14) -hasLocation(#20424,#20425) +scopes(#20424,1) +scopenodes(#20422,#20424) +scopenesting(#20424,#20000) +#20425=@"var;{v};{#20424}" +variables(#20425,"v",#20424) #20426=* -tokeninfo(#20426,8,#20001,98,"{") -#20427=@"loc,{#10000},26,15,26,15" -locations_default(#20427,#10000,26,15,26,15) -hasLocation(#20426,#20427) +exprs(#20426,78,#20422,0,"v") +hasLocation(#20426,#20199) +exprContainers(#20426,#20422) +literals("v","v",#20426) +decl(#20426,#20425) +#20427=@"var;{arguments};{#20424}" +variables(#20427,"arguments",#20424) +isArgumentsObject(#20427) #20428=* -tokeninfo(#20428,8,#20001,99,"}") -#20429=@"loc,{#10000},26,16,26,16" -locations_default(#20429,#10000,26,16,26,16) +stmts(#20428,1,#20422,-2,"{}") +#20429=@"loc,{#10000},21,13,21,14" +locations_default(#20429,#10000,21,13,21,14) hasLocation(#20428,#20429) +stmtContainers(#20428,#20422) #20430=* -tokeninfo(#20430,8,#20001,100,")") -#20431=@"loc,{#10000},26,17,26,17" -locations_default(#20431,#10000,26,17,26,17) -hasLocation(#20430,#20431) -#20432=* -tokeninfo(#20432,8,#20001,101,";") -#20433=@"loc,{#10000},26,18,26,18" -locations_default(#20433,#10000,26,18,26,18) -hasLocation(#20432,#20433) -#20434=* -tokeninfo(#20434,6,#20001,102,"String") -hasLocation(#20434,#20198) +stmts(#20430,2,#20001,17,"new Array;") +hasLocation(#20430,#20045) +stmtContainers(#20430,#20001) +#20431=* +exprs(#20431,12,#20430,0,"new Array") +#20432=@"loc,{#10000},22,1,22,9" +locations_default(#20432,#10000,22,1,22,9) +hasLocation(#20431,#20432) +enclosingStmt(#20431,#20430) +exprContainers(#20431,#20001) +#20433=* +exprs(#20433,79,#20431,-1,"Array") +hasLocation(#20433,#20215) +enclosingStmt(#20433,#20430) +exprContainers(#20433,#20001) +literals("Array","Array",#20433) +#20434=@"var;{Array};{#20000}" +variables(#20434,"Array",#20000) +bind(#20433,#20434) #20435=* -tokeninfo(#20435,8,#20001,103,"[") -#20436=@"loc,{#10000},27,7,27,7" -locations_default(#20436,#10000,27,7,27,7) -hasLocation(#20435,#20436) -#20437=* -tokeninfo(#20437,4,#20001,104,"'epytotorp'") -hasLocation(#20437,#20204) +stmts(#20435,2,#20001,18,"new Object();") +hasLocation(#20435,#20047) +stmtContainers(#20435,#20001) +#20436=* +exprs(#20436,12,#20435,0,"new Object()") +#20437=@"loc,{#10000},23,1,23,12" +locations_default(#20437,#10000,23,1,23,12) +hasLocation(#20436,#20437) +enclosingStmt(#20436,#20435) +exprContainers(#20436,#20001) #20438=* -tokeninfo(#20438,8,#20001,105,".") -#20439=@"loc,{#10000},27,19,27,19" -locations_default(#20439,#10000,27,19,27,19) -hasLocation(#20438,#20439) +exprs(#20438,79,#20436,-1,"Object") +hasLocation(#20438,#20221) +enclosingStmt(#20438,#20435) +exprContainers(#20438,#20001) +literals("Object","Object",#20438) +#20439=@"var;{Object};{#20000}" +variables(#20439,"Object",#20000) +bind(#20438,#20439) #20440=* -tokeninfo(#20440,6,#20001,106,"reverse") -hasLocation(#20440,#20206) +stmts(#20440,2,#20001,19,"new String(""hi"");") +hasLocation(#20440,#20049) +stmtContainers(#20440,#20001) #20441=* -tokeninfo(#20441,8,#20001,107,"(") -#20442=@"loc,{#10000},27,27,27,27" -locations_default(#20442,#10000,27,27,27,27) +exprs(#20441,12,#20440,0,"new String(""hi"")") +#20442=@"loc,{#10000},24,1,24,16" +locations_default(#20442,#10000,24,1,24,16) hasLocation(#20441,#20442) +enclosingStmt(#20441,#20440) +exprContainers(#20441,#20001) #20443=* -tokeninfo(#20443,8,#20001,108,")") -#20444=@"loc,{#10000},27,28,27,28" -locations_default(#20444,#10000,27,28,27,28) -hasLocation(#20443,#20444) +exprs(#20443,79,#20441,-1,"String") +hasLocation(#20443,#20231) +enclosingStmt(#20443,#20440) +exprContainers(#20443,#20001) +literals("String","String",#20443) +#20444=@"var;{String};{#20000}" +variables(#20444,"String",#20000) +bind(#20443,#20444) #20445=* -tokeninfo(#20445,8,#20001,109,"]") -#20446=@"loc,{#10000},27,29,27,29" -locations_default(#20446,#10000,27,29,27,29) -hasLocation(#20445,#20446) +exprs(#20445,4,#20441,0,"""hi""") +hasLocation(#20445,#20235) +enclosingStmt(#20445,#20440) +exprContainers(#20445,#20001) +literals("hi","""hi""",#20445) +#20446=* +stmts(#20446,2,#20001,20,"String("""");") +hasLocation(#20446,#20051) +stmtContainers(#20446,#20001) #20447=* -tokeninfo(#20447,8,#20001,110,";") -#20448=@"loc,{#10000},27,30,27,30" -locations_default(#20448,#10000,27,30,27,30) +exprs(#20447,13,#20446,0,"String("""")") +#20448=@"loc,{#10000},25,1,25,10" +locations_default(#20448,#10000,25,1,25,10) hasLocation(#20447,#20448) +enclosingStmt(#20447,#20446) +exprContainers(#20447,#20001) #20449=* -tokeninfo(#20449,8,#20001,111,"[") -#20450=@"loc,{#10000},28,1,28,1" -locations_default(#20450,#10000,28,1,28,1) -hasLocation(#20449,#20450) +exprs(#20449,79,#20447,-1,"String") +hasLocation(#20449,#20241) +enclosingStmt(#20449,#20446) +exprContainers(#20449,#20001) +literals("String","String",#20449) +bind(#20449,#20444) +#20450=* +exprs(#20450,4,#20447,0,"""""") +hasLocation(#20450,#20245) +enclosingStmt(#20450,#20446) +exprContainers(#20450,#20001) +literals("","""""",#20450) #20451=* -tokeninfo(#20451,8,#20001,112,",") -#20452=@"loc,{#10000},28,2,28,2" -locations_default(#20452,#10000,28,2,28,2) -hasLocation(#20451,#20452) -#20453=* -tokeninfo(#20453,8,#20001,113,",") -#20454=@"loc,{#10000},28,3,28,3" -locations_default(#20454,#10000,28,3,28,3) -hasLocation(#20453,#20454) -#20455=* -tokeninfo(#20455,8,#20001,114,"]") -#20456=@"loc,{#10000},28,4,28,4" -locations_default(#20456,#10000,28,4,28,4) -hasLocation(#20455,#20456) +stmts(#20451,2,#20001,21,"Object.create({});") +hasLocation(#20451,#20053) +stmtContainers(#20451,#20001) +#20452=* +exprs(#20452,13,#20451,0,"Object.create({})") +#20453=@"loc,{#10000},26,1,26,17" +locations_default(#20453,#10000,26,1,26,17) +hasLocation(#20452,#20453) +enclosingStmt(#20452,#20451) +exprContainers(#20452,#20001) +#20454=* +exprs(#20454,14,#20452,-1,"Object.create") +#20455=@"loc,{#10000},26,1,26,13" +locations_default(#20455,#10000,26,1,26,13) +hasLocation(#20454,#20455) +enclosingStmt(#20454,#20451) +exprContainers(#20454,#20001) +#20456=* +exprs(#20456,79,#20454,0,"Object") +hasLocation(#20456,#20251) +enclosingStmt(#20456,#20451) +exprContainers(#20456,#20001) +literals("Object","Object",#20456) +bind(#20456,#20439) #20457=* -tokeninfo(#20457,8,#20001,115,";") -#20458=@"loc,{#10000},28,5,28,5" -locations_default(#20458,#10000,28,5,28,5) -hasLocation(#20457,#20458) -#20459=* -tokeninfo(#20459,8,#20001,116,"[") -#20460=@"loc,{#10000},29,1,29,1" -locations_default(#20460,#10000,29,1,29,1) -hasLocation(#20459,#20460) +exprs(#20457,0,#20454,1,"create") +hasLocation(#20457,#20255) +enclosingStmt(#20457,#20451) +exprContainers(#20457,#20001) +literals("create","create",#20457) +#20458=* +exprs(#20458,8,#20452,0,"{}") +#20459=@"loc,{#10000},26,15,26,16" +locations_default(#20459,#10000,26,15,26,16) +hasLocation(#20458,#20459) +enclosingStmt(#20458,#20451) +exprContainers(#20458,#20001) +#20460=* +stmts(#20460,2,#20001,22,"String[ ... rse()];") +hasLocation(#20460,#20055) +stmtContainers(#20460,#20001) #20461=* -tokeninfo(#20461,3,#20001,117,"1") -hasLocation(#20461,#20216) -#20462=* -tokeninfo(#20462,8,#20001,118,",") -#20463=@"loc,{#10000},29,3,29,3" -locations_default(#20463,#10000,29,3,29,3) -hasLocation(#20462,#20463) +exprs(#20461,15,#20460,0,"String[ ... erse()]") +#20462=@"loc,{#10000},27,1,27,29" +locations_default(#20462,#10000,27,1,27,29) +hasLocation(#20461,#20462) +enclosingStmt(#20461,#20460) +exprContainers(#20461,#20001) +#20463=* +exprs(#20463,79,#20461,0,"String") +hasLocation(#20463,#20267) +enclosingStmt(#20463,#20460) +exprContainers(#20463,#20001) +literals("String","String",#20463) +bind(#20463,#20444) #20464=* -tokeninfo(#20464,8,#20001,119,"]") -#20465=@"loc,{#10000},29,4,29,4" -locations_default(#20465,#10000,29,4,29,4) +exprs(#20464,13,#20461,1,"'epytot ... verse()") +#20465=@"loc,{#10000},27,8,27,28" +locations_default(#20465,#10000,27,8,27,28) hasLocation(#20464,#20465) +enclosingStmt(#20464,#20460) +exprContainers(#20464,#20001) #20466=* -tokeninfo(#20466,8,#20001,120,";") -#20467=@"loc,{#10000},29,5,29,5" -locations_default(#20467,#10000,29,5,29,5) +exprs(#20466,14,#20464,-1,"'epytotorp'.reverse") +#20467=@"loc,{#10000},27,8,27,26" +locations_default(#20467,#10000,27,8,27,26) hasLocation(#20466,#20467) +enclosingStmt(#20466,#20460) +exprContainers(#20466,#20001) #20468=* -tokeninfo(#20468,8,#20001,121,"(") -#20469=@"loc,{#10000},30,1,30,1" -locations_default(#20469,#10000,30,1,30,1) -hasLocation(#20468,#20469) +exprs(#20468,4,#20466,0,"'epytotorp'") +hasLocation(#20468,#20271) +enclosingStmt(#20468,#20460) +exprContainers(#20468,#20001) +literals("epytotorp","'epytotorp'",#20468) +#20469=* +exprs(#20469,0,#20466,1,"reverse") +hasLocation(#20469,#20275) +enclosingStmt(#20469,#20460) +exprContainers(#20469,#20001) +literals("reverse","reverse",#20469) #20470=* -tokeninfo(#20470,8,#20001,122,"{") -#20471=@"loc,{#10000},30,2,30,2" -locations_default(#20471,#10000,30,2,30,2) -hasLocation(#20470,#20471) -#20472=* -tokeninfo(#20472,6,#20001,123,"z") -hasLocation(#20472,#20226) +stmts(#20470,2,#20001,23,"[,,];") +hasLocation(#20470,#20057) +stmtContainers(#20470,#20001) +#20471=* +exprs(#20471,7,#20470,0,"[,,]") +#20472=@"loc,{#10000},28,1,28,4" +locations_default(#20472,#10000,28,1,28,4) +hasLocation(#20471,#20472) +enclosingStmt(#20471,#20470) +exprContainers(#20471,#20001) +arraySize(#20471,2) #20473=* -tokeninfo(#20473,8,#20001,124,":") -#20474=@"loc,{#10000},30,5,30,5" -locations_default(#20474,#10000,30,5,30,5) -hasLocation(#20473,#20474) -#20475=* -tokeninfo(#20475,3,#20001,125,"56") -hasLocation(#20475,#20228) +stmts(#20473,2,#20001,24,"[1,];") +hasLocation(#20473,#20059) +stmtContainers(#20473,#20001) +#20474=* +exprs(#20474,7,#20473,0,"[1,]") +#20475=@"loc,{#10000},29,1,29,4" +locations_default(#20475,#10000,29,1,29,4) +hasLocation(#20474,#20475) +enclosingStmt(#20474,#20473) +exprContainers(#20474,#20001) #20476=* -tokeninfo(#20476,8,#20001,126,",") -#20477=@"loc,{#10000},30,9,30,9" -locations_default(#20477,#10000,30,9,30,9) -hasLocation(#20476,#20477) +exprs(#20476,3,#20474,0,"1") +hasLocation(#20476,#20297) +enclosingStmt(#20476,#20473) +exprContainers(#20476,#20001) +literals("1","1",#20476) +arraySize(#20474,1) +#20477=* +stmts(#20477,2,#20001,25,"({ z: 56, });") +hasLocation(#20477,#20061) +stmtContainers(#20477,#20001) #20478=* -tokeninfo(#20478,8,#20001,127,"}") -#20479=@"loc,{#10000},30,11,30,11" -locations_default(#20479,#10000,30,11,30,11) +exprs(#20478,63,#20477,0,"({ z: 56, })") +#20479=@"loc,{#10000},30,1,30,12" +locations_default(#20479,#10000,30,1,30,12) hasLocation(#20478,#20479) +enclosingStmt(#20478,#20477) +exprContainers(#20478,#20001) #20480=* -tokeninfo(#20480,8,#20001,128,")") -#20481=@"loc,{#10000},30,12,30,12" -locations_default(#20481,#10000,30,12,30,12) +exprs(#20480,8,#20478,0,"{ z: 56, }") +#20481=@"loc,{#10000},30,2,30,11" +locations_default(#20481,#10000,30,2,30,11) hasLocation(#20480,#20481) +enclosingStmt(#20480,#20477) +exprContainers(#20480,#20001) #20482=* -tokeninfo(#20482,8,#20001,129,";") -#20483=@"loc,{#10000},30,13,30,13" -locations_default(#20483,#10000,30,13,30,13) +properties(#20482,#20480,0,0,"z: 56") +#20483=@"loc,{#10000},30,4,30,8" +locations_default(#20483,#10000,30,4,30,8) hasLocation(#20482,#20483) #20484=* -tokeninfo(#20484,0,#20001,130,"") -#20485=@"loc,{#10000},30,14,30,13" -locations_default(#20485,#10000,30,14,30,13) -hasLocation(#20484,#20485) +exprs(#20484,0,#20482,0,"z") +hasLocation(#20484,#20309) +enclosingStmt(#20484,#20477) +exprContainers(#20484,#20001) +literals("z","z",#20484) +#20485=* +exprs(#20485,3,#20482,1,"56") +hasLocation(#20485,#20313) +enclosingStmt(#20485,#20477) +exprContainers(#20485,#20001) +literals("56","56",#20485) #20486=* entry_cfg_node(#20486,#20001) #20487=@"loc,{#10000},1,1,1,0" @@ -1511,136 +1508,136 @@ locations_default(#20487,#10000,1,1,1,0) hasLocation(#20486,#20487) #20488=* exit_cfg_node(#20488,#20001) -hasLocation(#20488,#20485) -successor(#20217,#20219) -successor(#20219,#20221) -successor(#20221,#20225) -successor(#20227,#20223) -successor(#20225,#20227) -successor(#20223,#20488) -successor(#20211,#20213) -successor(#20213,#20215) -successor(#20215,#20217) -successor(#20207,#20209) -successor(#20209,#20211) -successor(#20193,#20197) -successor(#20205,#20201) -successor(#20203,#20205) -successor(#20201,#20199) -successor(#20199,#20195) -successor(#20197,#20203) -successor(#20195,#20207) -successor(#20181,#20187) -successor(#20191,#20183) -successor(#20189,#20185) -successor(#20187,#20189) -successor(#20185,#20191) -successor(#20183,#20193) -successor(#20173,#20177) -successor(#20179,#20175) -successor(#20177,#20179) -successor(#20175,#20181) -successor(#20164,#20168) -successor(#20171,#20166) -successor(#20168,#20171) -successor(#20166,#20173) -successor(#20157,#20161) -successor(#20161,#20159) -successor(#20159,#20164) -successor(#20150,#20154) -successor(#20154,#20152) -successor(#20152,#20157) -successor(#20099,#20101) -successor(#20101,#20103) -successor(#20103,#20107) -successor(#20141,#20137) +hasLocation(#20488,#20323) +successor(#20477,#20478) +successor(#20478,#20480) +successor(#20480,#20484) +successor(#20485,#20482) +successor(#20484,#20485) +successor(#20482,#20488) +successor(#20473,#20474) +successor(#20474,#20476) +successor(#20476,#20477) +successor(#20470,#20471) +successor(#20471,#20473) +successor(#20460,#20463) +successor(#20469,#20466) +successor(#20468,#20469) +successor(#20466,#20464) +successor(#20464,#20461) +successor(#20463,#20468) +successor(#20461,#20470) +successor(#20451,#20456) +successor(#20458,#20452) +successor(#20457,#20454) +successor(#20456,#20457) +successor(#20454,#20458) +successor(#20452,#20460) +successor(#20446,#20449) +successor(#20450,#20447) +successor(#20449,#20450) +successor(#20447,#20451) +successor(#20440,#20443) +successor(#20445,#20441) +successor(#20443,#20445) +successor(#20441,#20446) +successor(#20435,#20438) +successor(#20438,#20436) +successor(#20436,#20440) +successor(#20430,#20433) +successor(#20433,#20431) +successor(#20431,#20435) +successor(#20387,#20389) +successor(#20389,#20391) +successor(#20391,#20395) +successor(#20422,#20419) #20489=* -entry_cfg_node(#20489,#20141) +entry_cfg_node(#20489,#20422) #20490=@"loc,{#10000},21,9,21,8" locations_default(#20490,#10000,21,9,21,8) hasLocation(#20489,#20490) #20491=* -exit_cfg_node(#20491,#20141) +exit_cfg_node(#20491,#20422) #20492=@"loc,{#10000},21,15,21,14" locations_default(#20492,#10000,21,15,21,14) hasLocation(#20491,#20492) -successor(#20148,#20491) -successor(#20145,#20148) -successor(#20489,#20145) -successor(#20139,#20141) -successor(#20137,#20150) -successor(#20131,#20127) +successor(#20428,#20491) +successor(#20426,#20428) +successor(#20489,#20426) +successor(#20421,#20422) +successor(#20419,#20430) +successor(#20413,#20410) #20493=* -entry_cfg_node(#20493,#20131) +entry_cfg_node(#20493,#20413) #20494=@"loc,{#10000},20,9,20,8" locations_default(#20494,#10000,20,9,20,8) hasLocation(#20493,#20494) #20495=* -exit_cfg_node(#20495,#20131) +exit_cfg_node(#20495,#20413) #20496=@"loc,{#10000},20,14,20,13" locations_default(#20496,#10000,20,14,20,13) hasLocation(#20495,#20496) -successor(#20135,#20495) -successor(#20493,#20135) -successor(#20129,#20131) -successor(#20127,#20139) -successor(#20121,#20117) +successor(#20417,#20495) +successor(#20493,#20417) +successor(#20412,#20413) +successor(#20410,#20421) +successor(#20404,#20401) #20497=* -entry_cfg_node(#20497,#20121) +entry_cfg_node(#20497,#20404) #20498=@"loc,{#10000},19,9,19,8" locations_default(#20498,#10000,19,9,19,8) hasLocation(#20497,#20498) #20499=* -exit_cfg_node(#20499,#20121) +exit_cfg_node(#20499,#20404) #20500=@"loc,{#10000},19,14,19,13" locations_default(#20500,#10000,19,14,19,13) hasLocation(#20499,#20500) -successor(#20125,#20499) -successor(#20497,#20125) -successor(#20119,#20121) -successor(#20117,#20129) -successor(#20115,#20111) -successor(#20113,#20115) -successor(#20111,#20119) -successor(#20109,#20105) -successor(#20107,#20109) -successor(#20105,#20113) -successor(#20089,#20091) -successor(#20091,#20093) -successor(#20097,#20099) -successor(#20095,#20097) -successor(#20093,#20095) -successor(#20083,#20085) -successor(#20085,#20087) -successor(#20087,#20089) -successor(#20055,#20057) -successor(#20057,#20083) -successor(#20051,#20053) -successor(#20053,#20055) -successor(#20047,#20049) -successor(#20049,#20051) -successor(#20043,#20045) -successor(#20045,#20047) -successor(#20039,#20041) -successor(#20041,#20043) -successor(#20035,#20037) -successor(#20037,#20039) -successor(#20031,#20033) -successor(#20033,#20035) -successor(#20027,#20029) -successor(#20029,#20031) -successor(#20023,#20025) -successor(#20025,#20027) -successor(#20019,#20021) -successor(#20021,#20023) -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(#20486,#20003) +successor(#20408,#20499) +successor(#20497,#20408) +successor(#20403,#20404) +successor(#20401,#20412) +successor(#20400,#20397) +successor(#20399,#20400) +successor(#20397,#20403) +successor(#20396,#20393) +successor(#20395,#20396) +successor(#20393,#20399) +successor(#20381,#20382) +successor(#20382,#20384) +successor(#20386,#20387) +successor(#20385,#20386) +successor(#20384,#20385) +successor(#20377,#20378) +successor(#20378,#20380) +successor(#20380,#20381) +successor(#20351,#20352) +successor(#20352,#20377) +successor(#20349,#20350) +successor(#20350,#20351) +successor(#20347,#20348) +successor(#20348,#20349) +successor(#20345,#20346) +successor(#20346,#20347) +successor(#20343,#20344) +successor(#20344,#20345) +successor(#20341,#20342) +successor(#20342,#20343) +successor(#20339,#20340) +successor(#20340,#20341) +successor(#20337,#20338) +successor(#20338,#20339) +successor(#20335,#20336) +successor(#20336,#20337) +successor(#20333,#20334) +successor(#20334,#20335) +successor(#20331,#20332) +successor(#20332,#20333) +successor(#20329,#20330) +successor(#20330,#20331) +successor(#20327,#20328) +successor(#20328,#20329) +successor(#20325,#20326) +successor(#20326,#20327) +successor(#20486,#20325) numlines(#10000,30,30,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/exprs/output/trap/regexp.js.trap b/javascript/extractor/tests/exprs/output/trap/regexp.js.trap index b255ddbb8a3..7d05ea535a2 100644 --- a/javascript/extractor/tests/exprs/output/trap/regexp.js.trap +++ b/javascript/extractor/tests/exprs/output/trap/regexp.js.trap @@ -9,2149 +9,2149 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,44,60" -locations_default(#20002,#10000,1,1,44,60) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"/t/;") -#20004=@"loc,{#10000},1,1,1,4" -locations_default(#20004,#10000,1,1,1,4) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,5,#20003,0,"/t/") -#20006=@"loc,{#10000},1,1,1,3" -locations_default(#20006,#10000,1,1,1,3) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -literals("/t/","/t/",#20005) -#20007=* -regexpterm(#20007,14,#20005,0,"t") -#20008=@"loc,{#10000},1,2,1,2" -locations_default(#20008,#10000,1,2,1,2) -hasLocation(#20007,#20008) -regexpConstValue(#20007,"t") -#20009=* -stmts(#20009,2,#20001,1,"/foo|bar/;") -#20010=@"loc,{#10000},2,1,2,10" -locations_default(#20010,#10000,2,1,2,10) -hasLocation(#20009,#20010) -stmtContainers(#20009,#20001) -#20011=* -exprs(#20011,5,#20009,0,"/foo|bar/") -#20012=@"loc,{#10000},2,1,2,9" -locations_default(#20012,#10000,2,1,2,9) -hasLocation(#20011,#20012) -enclosingStmt(#20011,#20009) -exprContainers(#20011,#20001) -literals("/foo|bar/","/foo|bar/",#20011) -#20013=* -regexpterm(#20013,0,#20011,0,"foo|bar") -#20014=@"loc,{#10000},2,2,2,8" -locations_default(#20014,#10000,2,2,2,8) -hasLocation(#20013,#20014) -#20015=* -regexpterm(#20015,1,#20013,0,"foo") -#20016=@"loc,{#10000},2,2,2,4" -locations_default(#20016,#10000,2,2,2,4) -hasLocation(#20015,#20016) -#20017=* -regexpterm(#20017,14,#20015,0,"f") -#20018=@"loc,{#10000},2,2,2,2" -locations_default(#20018,#10000,2,2,2,2) -hasLocation(#20017,#20018) -regexpConstValue(#20017,"f") -#20019=* -regexpterm(#20019,14,#20015,1,"o") -#20020=@"loc,{#10000},2,3,2,3" -locations_default(#20020,#10000,2,3,2,3) -hasLocation(#20019,#20020) -regexpConstValue(#20019,"o") -#20021=* -regexpterm(#20021,14,#20015,2,"o") -#20022=@"loc,{#10000},2,4,2,4" -locations_default(#20022,#10000,2,4,2,4) -hasLocation(#20021,#20022) -regexpConstValue(#20021,"o") -#20023=* -regexpterm(#20023,1,#20013,1,"bar") -#20024=@"loc,{#10000},2,6,2,8" -locations_default(#20024,#10000,2,6,2,8) -hasLocation(#20023,#20024) -#20025=* -regexpterm(#20025,14,#20023,0,"b") -#20026=@"loc,{#10000},2,6,2,6" -locations_default(#20026,#10000,2,6,2,6) -hasLocation(#20025,#20026) -regexpConstValue(#20025,"b") -#20027=* -regexpterm(#20027,14,#20023,1,"a") -#20028=@"loc,{#10000},2,7,2,7" -locations_default(#20028,#10000,2,7,2,7) -hasLocation(#20027,#20028) -regexpConstValue(#20027,"a") -#20029=* -regexpterm(#20029,14,#20023,2,"r") -#20030=@"loc,{#10000},2,8,2,8" -locations_default(#20030,#10000,2,8,2,8) -hasLocation(#20029,#20030) -regexpConstValue(#20029,"r") -#20031=* -stmts(#20031,2,#20001,2,"/(?:)/;") -#20032=@"loc,{#10000},3,1,3,7" -locations_default(#20032,#10000,3,1,3,7) -hasLocation(#20031,#20032) -stmtContainers(#20031,#20001) -#20033=* -exprs(#20033,5,#20031,0,"/(?:)/") -#20034=@"loc,{#10000},3,1,3,6" -locations_default(#20034,#10000,3,1,3,6) -hasLocation(#20033,#20034) -enclosingStmt(#20033,#20031) -exprContainers(#20033,#20001) -literals("/(?:)/","/(?:)/",#20033) -#20035=* -regexpterm(#20035,13,#20033,0,"(?:)") -#20036=@"loc,{#10000},3,2,3,5" -locations_default(#20036,#10000,3,2,3,5) -hasLocation(#20035,#20036) -#20037=* -regexpterm(#20037,1,#20035,0,"") -#20038=@"loc,{#10000},3,5,3,4" -locations_default(#20038,#10000,3,5,3,4) -hasLocation(#20037,#20038) -#20039=* -stmts(#20039,2,#20001,3,"/^abc$/;") -#20040=@"loc,{#10000},4,1,4,8" -locations_default(#20040,#10000,4,1,4,8) -hasLocation(#20039,#20040) -stmtContainers(#20039,#20001) -#20041=* -exprs(#20041,5,#20039,0,"/^abc$/") -#20042=@"loc,{#10000},4,1,4,7" -locations_default(#20042,#10000,4,1,4,7) -hasLocation(#20041,#20042) -enclosingStmt(#20041,#20039) -exprContainers(#20041,#20001) -literals("/^abc$/","/^abc$/",#20041) -#20043=* -regexpterm(#20043,1,#20041,0,"^abc$") -#20044=@"loc,{#10000},4,2,4,6" -locations_default(#20044,#10000,4,2,4,6) -hasLocation(#20043,#20044) -#20045=* -regexpterm(#20045,2,#20043,0,"^") -#20046=@"loc,{#10000},4,2,4,2" -locations_default(#20046,#10000,4,2,4,2) -hasLocation(#20045,#20046) -#20047=* -regexpterm(#20047,14,#20043,1,"a") -#20048=@"loc,{#10000},4,3,4,3" -locations_default(#20048,#10000,4,3,4,3) -hasLocation(#20047,#20048) -regexpConstValue(#20047,"a") -#20049=* -regexpterm(#20049,14,#20043,2,"b") -#20050=@"loc,{#10000},4,4,4,4" -locations_default(#20050,#10000,4,4,4,4) -hasLocation(#20049,#20050) -regexpConstValue(#20049,"b") -#20051=* -regexpterm(#20051,14,#20043,3,"c") -#20052=@"loc,{#10000},4,5,4,5" -locations_default(#20052,#10000,4,5,4,5) -hasLocation(#20051,#20052) -regexpConstValue(#20051,"c") -#20053=* -regexpterm(#20053,3,#20043,4,"$") -#20054=@"loc,{#10000},4,6,4,6" -locations_default(#20054,#10000,4,6,4,6) -hasLocation(#20053,#20054) -#20055=* -stmts(#20055,2,#20001,4,"/\bx\b/;") -#20056=@"loc,{#10000},5,1,5,8" -locations_default(#20056,#10000,5,1,5,8) -hasLocation(#20055,#20056) -stmtContainers(#20055,#20001) -#20057=* -exprs(#20057,5,#20055,0,"/\bx\b/") -#20058=@"loc,{#10000},5,1,5,7" -locations_default(#20058,#10000,5,1,5,7) -hasLocation(#20057,#20058) -enclosingStmt(#20057,#20055) -exprContainers(#20057,#20001) -literals("/\bx\b/","/\bx\b/",#20057) -#20059=* -regexpterm(#20059,1,#20057,0,"\bx\b") -#20060=@"loc,{#10000},5,2,5,6" -locations_default(#20060,#10000,5,2,5,6) -hasLocation(#20059,#20060) -#20061=* -regexpterm(#20061,4,#20059,0,"\b") -#20062=@"loc,{#10000},5,2,5,3" -locations_default(#20062,#10000,5,2,5,3) -hasLocation(#20061,#20062) -#20063=* -regexpterm(#20063,14,#20059,1,"x") -#20064=@"loc,{#10000},5,4,5,4" -locations_default(#20064,#10000,5,4,5,4) -hasLocation(#20063,#20064) -regexpConstValue(#20063,"x") -#20065=* -regexpterm(#20065,4,#20059,2,"\b") -#20066=@"loc,{#10000},5,5,5,6" -locations_default(#20066,#10000,5,5,5,6) -hasLocation(#20065,#20066) -#20067=* -stmts(#20067,2,#20001,5,"/\bx\B/;") -#20068=@"loc,{#10000},6,1,6,8" -locations_default(#20068,#10000,6,1,6,8) -hasLocation(#20067,#20068) -stmtContainers(#20067,#20001) -#20069=* -exprs(#20069,5,#20067,0,"/\bx\B/") -#20070=@"loc,{#10000},6,1,6,7" -locations_default(#20070,#10000,6,1,6,7) -hasLocation(#20069,#20070) -enclosingStmt(#20069,#20067) -exprContainers(#20069,#20001) -literals("/\bx\B/","/\bx\B/",#20069) -#20071=* -regexpterm(#20071,1,#20069,0,"\bx\B") -#20072=@"loc,{#10000},6,2,6,6" -locations_default(#20072,#10000,6,2,6,6) -hasLocation(#20071,#20072) -#20073=* -regexpterm(#20073,4,#20071,0,"\b") -#20074=@"loc,{#10000},6,2,6,3" -locations_default(#20074,#10000,6,2,6,3) -hasLocation(#20073,#20074) -#20075=* -regexpterm(#20075,14,#20071,1,"x") -#20076=@"loc,{#10000},6,4,6,4" -locations_default(#20076,#10000,6,4,6,4) -hasLocation(#20075,#20076) -regexpConstValue(#20075,"x") -#20077=* -regexpterm(#20077,5,#20071,2,"\B") -#20078=@"loc,{#10000},6,5,6,6" -locations_default(#20078,#10000,6,5,6,6) -hasLocation(#20077,#20078) -#20079=* -stmts(#20079,2,#20001,6,"/x(?=y)/;") -#20080=@"loc,{#10000},7,1,7,9" -locations_default(#20080,#10000,7,1,7,9) -hasLocation(#20079,#20080) -stmtContainers(#20079,#20001) -#20081=* -exprs(#20081,5,#20079,0,"/x(?=y)/") -#20082=@"loc,{#10000},7,1,7,8" -locations_default(#20082,#10000,7,1,7,8) -hasLocation(#20081,#20082) -enclosingStmt(#20081,#20079) -exprContainers(#20081,#20001) -literals("/x(?=y)/","/x(?=y)/",#20081) -#20083=* -regexpterm(#20083,1,#20081,0,"x(?=y)") -#20084=@"loc,{#10000},7,2,7,7" -locations_default(#20084,#10000,7,2,7,7) -hasLocation(#20083,#20084) -#20085=* -regexpterm(#20085,14,#20083,0,"x") -#20086=@"loc,{#10000},7,2,7,2" -locations_default(#20086,#10000,7,2,7,2) -hasLocation(#20085,#20086) -regexpConstValue(#20085,"x") -#20087=* -regexpterm(#20087,6,#20083,1,"(?=y)") -#20088=@"loc,{#10000},7,3,7,7" -locations_default(#20088,#10000,7,3,7,7) -hasLocation(#20087,#20088) -#20089=* -regexpterm(#20089,14,#20087,0,"y") -#20090=@"loc,{#10000},7,6,7,6" -locations_default(#20090,#10000,7,6,7,6) -hasLocation(#20089,#20090) -regexpConstValue(#20089,"y") -#20091=* -stmts(#20091,2,#20001,7,"/x(?!z)/;") -#20092=@"loc,{#10000},8,1,8,9" -locations_default(#20092,#10000,8,1,8,9) -hasLocation(#20091,#20092) -stmtContainers(#20091,#20001) -#20093=* -exprs(#20093,5,#20091,0,"/x(?!z)/") -#20094=@"loc,{#10000},8,1,8,8" -locations_default(#20094,#10000,8,1,8,8) -hasLocation(#20093,#20094) -enclosingStmt(#20093,#20091) -exprContainers(#20093,#20001) -literals("/x(?!z)/","/x(?!z)/",#20093) -#20095=* -regexpterm(#20095,1,#20093,0,"x(?!z)") -#20096=@"loc,{#10000},8,2,8,7" -locations_default(#20096,#10000,8,2,8,7) -hasLocation(#20095,#20096) -#20097=* -regexpterm(#20097,14,#20095,0,"x") -#20098=@"loc,{#10000},8,2,8,2" -locations_default(#20098,#10000,8,2,8,2) -hasLocation(#20097,#20098) -regexpConstValue(#20097,"x") -#20099=* -regexpterm(#20099,7,#20095,1,"(?!z)") -#20100=@"loc,{#10000},8,3,8,7" -locations_default(#20100,#10000,8,3,8,7) -hasLocation(#20099,#20100) -#20101=* -regexpterm(#20101,14,#20099,0,"z") -#20102=@"loc,{#10000},8,6,8,6" -locations_default(#20102,#10000,8,6,8,6) -hasLocation(#20101,#20102) -regexpConstValue(#20101,"z") -#20103=* -stmts(#20103,2,#20001,8,"/a*/;") -#20104=@"loc,{#10000},9,1,9,5" -locations_default(#20104,#10000,9,1,9,5) -hasLocation(#20103,#20104) -stmtContainers(#20103,#20001) -#20105=* -exprs(#20105,5,#20103,0,"/a*/") -#20106=@"loc,{#10000},9,1,9,4" -locations_default(#20106,#10000,9,1,9,4) -hasLocation(#20105,#20106) -enclosingStmt(#20105,#20103) -exprContainers(#20105,#20001) -literals("/a*/","/a*/",#20105) -#20107=* -regexpterm(#20107,8,#20105,0,"a*") -#20108=@"loc,{#10000},9,2,9,3" -locations_default(#20108,#10000,9,2,9,3) -hasLocation(#20107,#20108) -isGreedy(#20107) -#20109=* -regexpterm(#20109,14,#20107,0,"a") -#20110=@"loc,{#10000},9,2,9,2" -locations_default(#20110,#10000,9,2,9,2) -hasLocation(#20109,#20110) -regexpConstValue(#20109,"a") -#20111=* -stmts(#20111,2,#20001,9,"/a*?/;") -#20112=@"loc,{#10000},10,1,10,6" -locations_default(#20112,#10000,10,1,10,6) -hasLocation(#20111,#20112) -stmtContainers(#20111,#20001) -#20113=* -exprs(#20113,5,#20111,0,"/a*?/") -#20114=@"loc,{#10000},10,1,10,5" -locations_default(#20114,#10000,10,1,10,5) -hasLocation(#20113,#20114) -enclosingStmt(#20113,#20111) -exprContainers(#20113,#20001) -literals("/a*?/","/a*?/",#20113) -#20115=* -regexpterm(#20115,8,#20113,0,"a*?") -#20116=@"loc,{#10000},10,2,10,4" -locations_default(#20116,#10000,10,2,10,4) -hasLocation(#20115,#20116) -#20117=* -regexpterm(#20117,14,#20115,0,"a") -#20118=@"loc,{#10000},10,2,10,2" -locations_default(#20118,#10000,10,2,10,2) -hasLocation(#20117,#20118) -regexpConstValue(#20117,"a") -#20119=* -stmts(#20119,2,#20001,10,"/a+/;") -#20120=@"loc,{#10000},11,1,11,5" -locations_default(#20120,#10000,11,1,11,5) -hasLocation(#20119,#20120) -stmtContainers(#20119,#20001) -#20121=* -exprs(#20121,5,#20119,0,"/a+/") -#20122=@"loc,{#10000},11,1,11,4" -locations_default(#20122,#10000,11,1,11,4) -hasLocation(#20121,#20122) -enclosingStmt(#20121,#20119) -exprContainers(#20121,#20001) -literals("/a+/","/a+/",#20121) -#20123=* -regexpterm(#20123,9,#20121,0,"a+") -#20124=@"loc,{#10000},11,2,11,3" -locations_default(#20124,#10000,11,2,11,3) -hasLocation(#20123,#20124) -isGreedy(#20123) -#20125=* -regexpterm(#20125,14,#20123,0,"a") -#20126=@"loc,{#10000},11,2,11,2" -locations_default(#20126,#10000,11,2,11,2) -hasLocation(#20125,#20126) -regexpConstValue(#20125,"a") -#20127=* -stmts(#20127,2,#20001,11,"/a+?/;") -#20128=@"loc,{#10000},12,1,12,6" -locations_default(#20128,#10000,12,1,12,6) -hasLocation(#20127,#20128) -stmtContainers(#20127,#20001) -#20129=* -exprs(#20129,5,#20127,0,"/a+?/") -#20130=@"loc,{#10000},12,1,12,5" -locations_default(#20130,#10000,12,1,12,5) -hasLocation(#20129,#20130) -enclosingStmt(#20129,#20127) -exprContainers(#20129,#20001) -literals("/a+?/","/a+?/",#20129) -#20131=* -regexpterm(#20131,9,#20129,0,"a+?") -#20132=@"loc,{#10000},12,2,12,4" -locations_default(#20132,#10000,12,2,12,4) -hasLocation(#20131,#20132) -#20133=* -regexpterm(#20133,14,#20131,0,"a") -#20134=@"loc,{#10000},12,2,12,2" -locations_default(#20134,#10000,12,2,12,2) -hasLocation(#20133,#20134) -regexpConstValue(#20133,"a") -#20135=* -stmts(#20135,2,#20001,12,"/a?/;") -#20136=@"loc,{#10000},13,1,13,5" -locations_default(#20136,#10000,13,1,13,5) -hasLocation(#20135,#20136) -stmtContainers(#20135,#20001) -#20137=* -exprs(#20137,5,#20135,0,"/a?/") -#20138=@"loc,{#10000},13,1,13,4" -locations_default(#20138,#10000,13,1,13,4) -hasLocation(#20137,#20138) -enclosingStmt(#20137,#20135) -exprContainers(#20137,#20001) -literals("/a?/","/a?/",#20137) -#20139=* -regexpterm(#20139,10,#20137,0,"a?") -#20140=@"loc,{#10000},13,2,13,3" -locations_default(#20140,#10000,13,2,13,3) -hasLocation(#20139,#20140) -isGreedy(#20139) -#20141=* -regexpterm(#20141,14,#20139,0,"a") -#20142=@"loc,{#10000},13,2,13,2" -locations_default(#20142,#10000,13,2,13,2) -hasLocation(#20141,#20142) -regexpConstValue(#20141,"a") -#20143=* -stmts(#20143,2,#20001,13,"/a??/;") -#20144=@"loc,{#10000},14,1,14,6" -locations_default(#20144,#10000,14,1,14,6) -hasLocation(#20143,#20144) -stmtContainers(#20143,#20001) -#20145=* -exprs(#20145,5,#20143,0,"/a??/") -#20146=@"loc,{#10000},14,1,14,5" -locations_default(#20146,#10000,14,1,14,5) -hasLocation(#20145,#20146) -enclosingStmt(#20145,#20143) -exprContainers(#20145,#20001) -literals("/a??/","/a??/",#20145) -#20147=* -regexpterm(#20147,10,#20145,0,"a??") -#20148=@"loc,{#10000},14,2,14,4" -locations_default(#20148,#10000,14,2,14,4) -hasLocation(#20147,#20148) -#20149=* -regexpterm(#20149,14,#20147,0,"a") -#20150=@"loc,{#10000},14,2,14,2" -locations_default(#20150,#10000,14,2,14,2) -hasLocation(#20149,#20150) -regexpConstValue(#20149,"a") -#20151=* -stmts(#20151,2,#20001,14,"/a{1}/;") -#20152=@"loc,{#10000},15,1,15,7" -locations_default(#20152,#10000,15,1,15,7) -hasLocation(#20151,#20152) -stmtContainers(#20151,#20001) -#20153=* -exprs(#20153,5,#20151,0,"/a{1}/") -#20154=@"loc,{#10000},15,1,15,6" -locations_default(#20154,#10000,15,1,15,6) -hasLocation(#20153,#20154) -enclosingStmt(#20153,#20151) -exprContainers(#20153,#20001) -literals("/a{1}/","/a{1}/",#20153) -#20155=* -regexpterm(#20155,11,#20153,0,"a{1}") -#20156=@"loc,{#10000},15,2,15,5" -locations_default(#20156,#10000,15,2,15,5) -hasLocation(#20155,#20156) -isGreedy(#20155) -rangeQuantifierLowerBound(#20155,1) -#20157=* -regexpterm(#20157,14,#20155,0,"a") -#20158=@"loc,{#10000},15,2,15,2" -locations_default(#20158,#10000,15,2,15,2) -hasLocation(#20157,#20158) -regexpConstValue(#20157,"a") -#20159=* -stmts(#20159,2,#20001,15,"/a{1,}/;") -#20160=@"loc,{#10000},16,1,16,8" -locations_default(#20160,#10000,16,1,16,8) -hasLocation(#20159,#20160) -stmtContainers(#20159,#20001) -#20161=* -exprs(#20161,5,#20159,0,"/a{1,}/") -#20162=@"loc,{#10000},16,1,16,7" -locations_default(#20162,#10000,16,1,16,7) -hasLocation(#20161,#20162) -enclosingStmt(#20161,#20159) -exprContainers(#20161,#20001) -literals("/a{1,}/","/a{1,}/",#20161) -#20163=* -regexpterm(#20163,11,#20161,0,"a{1,}") -#20164=@"loc,{#10000},16,2,16,6" -locations_default(#20164,#10000,16,2,16,6) -hasLocation(#20163,#20164) -isGreedy(#20163) -rangeQuantifierLowerBound(#20163,1) -#20165=* -regexpterm(#20165,14,#20163,0,"a") -#20166=@"loc,{#10000},16,2,16,2" -locations_default(#20166,#10000,16,2,16,2) -hasLocation(#20165,#20166) -regexpConstValue(#20165,"a") -#20167=* -stmts(#20167,2,#20001,16,"/a{1,2}/;") -#20168=@"loc,{#10000},17,1,17,9" -locations_default(#20168,#10000,17,1,17,9) -hasLocation(#20167,#20168) -stmtContainers(#20167,#20001) -#20169=* -exprs(#20169,5,#20167,0,"/a{1,2}/") -#20170=@"loc,{#10000},17,1,17,8" -locations_default(#20170,#10000,17,1,17,8) -hasLocation(#20169,#20170) -enclosingStmt(#20169,#20167) -exprContainers(#20169,#20001) -literals("/a{1,2}/","/a{1,2}/",#20169) -#20171=* -regexpterm(#20171,11,#20169,0,"a{1,2}") -#20172=@"loc,{#10000},17,2,17,7" -locations_default(#20172,#10000,17,2,17,7) -hasLocation(#20171,#20172) -isGreedy(#20171) -rangeQuantifierLowerBound(#20171,1) -rangeQuantifierUpperBound(#20171,2) -#20173=* -regexpterm(#20173,14,#20171,0,"a") -#20174=@"loc,{#10000},17,2,17,2" -locations_default(#20174,#10000,17,2,17,2) -hasLocation(#20173,#20174) -regexpConstValue(#20173,"a") -#20175=* -stmts(#20175,2,#20001,17,"/a{1}?/;") -#20176=@"loc,{#10000},18,1,18,8" -locations_default(#20176,#10000,18,1,18,8) -hasLocation(#20175,#20176) -stmtContainers(#20175,#20001) -#20177=* -exprs(#20177,5,#20175,0,"/a{1}?/") -#20178=@"loc,{#10000},18,1,18,7" -locations_default(#20178,#10000,18,1,18,7) -hasLocation(#20177,#20178) -enclosingStmt(#20177,#20175) -exprContainers(#20177,#20001) -literals("/a{1}?/","/a{1}?/",#20177) -#20179=* -regexpterm(#20179,11,#20177,0,"a{1}?") -#20180=@"loc,{#10000},18,2,18,6" -locations_default(#20180,#10000,18,2,18,6) -hasLocation(#20179,#20180) -rangeQuantifierLowerBound(#20179,1) -#20181=* -regexpterm(#20181,14,#20179,0,"a") -#20182=@"loc,{#10000},18,2,18,2" -locations_default(#20182,#10000,18,2,18,2) -hasLocation(#20181,#20182) -regexpConstValue(#20181,"a") -#20183=* -stmts(#20183,2,#20001,18,"/a{1,}?/;") -#20184=@"loc,{#10000},19,1,19,9" -locations_default(#20184,#10000,19,1,19,9) -hasLocation(#20183,#20184) -stmtContainers(#20183,#20001) -#20185=* -exprs(#20185,5,#20183,0,"/a{1,}?/") -#20186=@"loc,{#10000},19,1,19,8" -locations_default(#20186,#10000,19,1,19,8) -hasLocation(#20185,#20186) -enclosingStmt(#20185,#20183) -exprContainers(#20185,#20001) -literals("/a{1,}?/","/a{1,}?/",#20185) -#20187=* -regexpterm(#20187,11,#20185,0,"a{1,}?") -#20188=@"loc,{#10000},19,2,19,7" -locations_default(#20188,#10000,19,2,19,7) -hasLocation(#20187,#20188) -rangeQuantifierLowerBound(#20187,1) -#20189=* -regexpterm(#20189,14,#20187,0,"a") -#20190=@"loc,{#10000},19,2,19,2" -locations_default(#20190,#10000,19,2,19,2) -hasLocation(#20189,#20190) -regexpConstValue(#20189,"a") -#20191=* -stmts(#20191,2,#20001,19,"/a{1,2}?/;") -#20192=@"loc,{#10000},20,1,20,10" -locations_default(#20192,#10000,20,1,20,10) -hasLocation(#20191,#20192) -stmtContainers(#20191,#20001) -#20193=* -exprs(#20193,5,#20191,0,"/a{1,2}?/") -#20194=@"loc,{#10000},20,1,20,9" -locations_default(#20194,#10000,20,1,20,9) -hasLocation(#20193,#20194) -enclosingStmt(#20193,#20191) -exprContainers(#20193,#20001) -literals("/a{1,2}?/","/a{1,2}?/",#20193) -#20195=* -regexpterm(#20195,11,#20193,0,"a{1,2}?") -#20196=@"loc,{#10000},20,2,20,8" -locations_default(#20196,#10000,20,2,20,8) -hasLocation(#20195,#20196) -rangeQuantifierLowerBound(#20195,1) -rangeQuantifierUpperBound(#20195,2) -#20197=* -regexpterm(#20197,14,#20195,0,"a") -#20198=@"loc,{#10000},20,2,20,2" -locations_default(#20198,#10000,20,2,20,2) -hasLocation(#20197,#20198) -regexpConstValue(#20197,"a") -#20199=* -stmts(#20199,2,#20001,20,"/./;") -#20200=@"loc,{#10000},21,1,21,4" -locations_default(#20200,#10000,21,1,21,4) -hasLocation(#20199,#20200) -stmtContainers(#20199,#20001) -#20201=* -exprs(#20201,5,#20199,0,"/./") -#20202=@"loc,{#10000},21,1,21,3" -locations_default(#20202,#10000,21,1,21,3) -hasLocation(#20201,#20202) -enclosingStmt(#20201,#20199) -exprContainers(#20201,#20001) -literals("/./","/./",#20201) -#20203=* -regexpterm(#20203,12,#20201,0,".") -#20204=@"loc,{#10000},21,2,21,2" -locations_default(#20204,#10000,21,2,21,2) -hasLocation(#20203,#20204) -#20205=* -stmts(#20205,2,#20001,21,"/(abc)/;") -#20206=@"loc,{#10000},22,1,22,8" -locations_default(#20206,#10000,22,1,22,8) -hasLocation(#20205,#20206) -stmtContainers(#20205,#20001) -#20207=* -exprs(#20207,5,#20205,0,"/(abc)/") -#20208=@"loc,{#10000},22,1,22,7" -locations_default(#20208,#10000,22,1,22,7) -hasLocation(#20207,#20208) -enclosingStmt(#20207,#20205) -exprContainers(#20207,#20001) -literals("/(abc)/","/(abc)/",#20207) -#20209=* -regexpterm(#20209,13,#20207,0,"(abc)") -#20210=@"loc,{#10000},22,2,22,6" -locations_default(#20210,#10000,22,2,22,6) -hasLocation(#20209,#20210) -isCapture(#20209,1) -#20211=* -regexpterm(#20211,1,#20209,0,"abc") -#20212=@"loc,{#10000},22,3,22,5" -locations_default(#20212,#10000,22,3,22,5) -hasLocation(#20211,#20212) -#20213=* -regexpterm(#20213,14,#20211,0,"a") -#20214=@"loc,{#10000},22,3,22,3" -locations_default(#20214,#10000,22,3,22,3) -hasLocation(#20213,#20214) -regexpConstValue(#20213,"a") -#20215=* -regexpterm(#20215,14,#20211,1,"b") -#20216=@"loc,{#10000},22,4,22,4" -locations_default(#20216,#10000,22,4,22,4) -hasLocation(#20215,#20216) -regexpConstValue(#20215,"b") -#20217=* -regexpterm(#20217,14,#20211,2,"c") -#20218=@"loc,{#10000},22,5,22,5" -locations_default(#20218,#10000,22,5,22,5) -hasLocation(#20217,#20218) -regexpConstValue(#20217,"c") -#20219=* -stmts(#20219,2,#20001,22,"/(?:abc)/;") -#20220=@"loc,{#10000},23,1,23,10" -locations_default(#20220,#10000,23,1,23,10) -hasLocation(#20219,#20220) -stmtContainers(#20219,#20001) -#20221=* -exprs(#20221,5,#20219,0,"/(?:abc)/") -#20222=@"loc,{#10000},23,1,23,9" -locations_default(#20222,#10000,23,1,23,9) -hasLocation(#20221,#20222) -enclosingStmt(#20221,#20219) -exprContainers(#20221,#20001) -literals("/(?:abc)/","/(?:abc)/",#20221) -#20223=* -regexpterm(#20223,13,#20221,0,"(?:abc)") -#20224=@"loc,{#10000},23,2,23,8" -locations_default(#20224,#10000,23,2,23,8) -hasLocation(#20223,#20224) -#20225=* -regexpterm(#20225,1,#20223,0,"abc") -#20226=@"loc,{#10000},23,5,23,7" -locations_default(#20226,#10000,23,5,23,7) -hasLocation(#20225,#20226) -#20227=* -regexpterm(#20227,14,#20225,0,"a") -#20228=@"loc,{#10000},23,5,23,5" -locations_default(#20228,#10000,23,5,23,5) -hasLocation(#20227,#20228) -regexpConstValue(#20227,"a") -#20229=* -regexpterm(#20229,14,#20225,1,"b") -#20230=@"loc,{#10000},23,6,23,6" -locations_default(#20230,#10000,23,6,23,6) -hasLocation(#20229,#20230) -regexpConstValue(#20229,"b") -#20231=* -regexpterm(#20231,14,#20225,2,"c") -#20232=@"loc,{#10000},23,7,23,7" -locations_default(#20232,#10000,23,7,23,7) -hasLocation(#20231,#20232) -regexpConstValue(#20231,"c") -#20233=* -stmts(#20233,2,#20001,23,"/\x0a/;") -#20234=@"loc,{#10000},24,1,24,7" -locations_default(#20234,#10000,24,1,24,7) -hasLocation(#20233,#20234) -stmtContainers(#20233,#20001) -#20235=* -exprs(#20235,5,#20233,0,"/\x0a/") -#20236=@"loc,{#10000},24,1,24,6" -locations_default(#20236,#10000,24,1,24,6) -hasLocation(#20235,#20236) -enclosingStmt(#20235,#20233) -exprContainers(#20235,#20001) -literals("/\x0a/","/\x0a/",#20235) -#20237=* -regexpterm(#20237,15,#20235,0,"\x0a") -#20238=@"loc,{#10000},24,2,24,5" -locations_default(#20238,#10000,24,2,24,5) -hasLocation(#20237,#20238) -regexpConstValue(#20237," +#20002=* +lines(#20002,#20001,"/t/;"," ") -#20239=* -stmts(#20239,2,#20001,24,"/\u000a/;") -#20240=@"loc,{#10000},25,1,25,9" -locations_default(#20240,#10000,25,1,25,9) -hasLocation(#20239,#20240) -stmtContainers(#20239,#20001) -#20241=* -exprs(#20241,5,#20239,0,"/\u000a/") -#20242=@"loc,{#10000},25,1,25,8" -locations_default(#20242,#10000,25,1,25,8) -hasLocation(#20241,#20242) -enclosingStmt(#20241,#20239) -exprContainers(#20241,#20001) -literals("/\u000a/","/\u000a/",#20241) -#20243=* -regexpterm(#20243,16,#20241,0,"\u000a") -#20244=@"loc,{#10000},25,2,25,7" -locations_default(#20244,#10000,25,2,25,7) -hasLocation(#20243,#20244) -regexpConstValue(#20243," +#20003=@"loc,{#10000},1,1,1,4" +locations_default(#20003,#10000,1,1,1,4) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"/foo|bar/;"," ") -#20245=* -stmts(#20245,2,#20001,25,"/\10/;") -#20246=@"loc,{#10000},26,1,26,6" -locations_default(#20246,#10000,26,1,26,6) -hasLocation(#20245,#20246) -stmtContainers(#20245,#20001) -#20247=* -exprs(#20247,5,#20245,0,"/\10/") -#20248=@"loc,{#10000},26,1,26,5" -locations_default(#20248,#10000,26,1,26,5) -hasLocation(#20247,#20248) -enclosingStmt(#20247,#20245) -exprContainers(#20247,#20001) -literals("/\10/","/\10/",#20247) -#20249=* -regexpterm(#20249,22,#20247,0,"\10") -#20250=@"loc,{#10000},26,2,26,4" -locations_default(#20250,#10000,26,2,26,4) -hasLocation(#20249,#20250) -backref(#20249,10) -#20251=* -regexpParseErrors(#20251,#20249,"invalid back reference") -hasLocation(#20251,#20250) +#20005=@"loc,{#10000},2,1,2,10" +locations_default(#20005,#10000,2,1,2,10) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"/(?:)/;"," +") +#20007=@"loc,{#10000},3,1,3,7" +locations_default(#20007,#10000,3,1,3,7) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001,"/^abc$/;"," +") +#20009=@"loc,{#10000},4,1,4,8" +locations_default(#20009,#10000,4,1,4,8) +hasLocation(#20008,#20009) +#20010=* +lines(#20010,#20001,"/\bx\b/;"," +") +#20011=@"loc,{#10000},5,1,5,8" +locations_default(#20011,#10000,5,1,5,8) +hasLocation(#20010,#20011) +#20012=* +lines(#20012,#20001,"/\bx\B/;"," +") +#20013=@"loc,{#10000},6,1,6,8" +locations_default(#20013,#10000,6,1,6,8) +hasLocation(#20012,#20013) +#20014=* +lines(#20014,#20001,"/x(?=y)/;"," +") +#20015=@"loc,{#10000},7,1,7,9" +locations_default(#20015,#10000,7,1,7,9) +hasLocation(#20014,#20015) +#20016=* +lines(#20016,#20001,"/x(?!z)/;"," +") +#20017=@"loc,{#10000},8,1,8,9" +locations_default(#20017,#10000,8,1,8,9) +hasLocation(#20016,#20017) +#20018=* +lines(#20018,#20001,"/a*/;"," +") +#20019=@"loc,{#10000},9,1,9,5" +locations_default(#20019,#10000,9,1,9,5) +hasLocation(#20018,#20019) +#20020=* +lines(#20020,#20001,"/a*?/;"," +") +#20021=@"loc,{#10000},10,1,10,6" +locations_default(#20021,#10000,10,1,10,6) +hasLocation(#20020,#20021) +#20022=* +lines(#20022,#20001,"/a+/;"," +") +#20023=@"loc,{#10000},11,1,11,5" +locations_default(#20023,#10000,11,1,11,5) +hasLocation(#20022,#20023) +#20024=* +lines(#20024,#20001,"/a+?/;"," +") +#20025=@"loc,{#10000},12,1,12,6" +locations_default(#20025,#10000,12,1,12,6) +hasLocation(#20024,#20025) +#20026=* +lines(#20026,#20001,"/a?/;"," +") +#20027=@"loc,{#10000},13,1,13,5" +locations_default(#20027,#10000,13,1,13,5) +hasLocation(#20026,#20027) +#20028=* +lines(#20028,#20001,"/a??/;"," +") +#20029=@"loc,{#10000},14,1,14,6" +locations_default(#20029,#10000,14,1,14,6) +hasLocation(#20028,#20029) +#20030=* +lines(#20030,#20001,"/a{1}/;"," +") +#20031=@"loc,{#10000},15,1,15,7" +locations_default(#20031,#10000,15,1,15,7) +hasLocation(#20030,#20031) +#20032=* +lines(#20032,#20001,"/a{1,}/;"," +") +#20033=@"loc,{#10000},16,1,16,8" +locations_default(#20033,#10000,16,1,16,8) +hasLocation(#20032,#20033) +#20034=* +lines(#20034,#20001,"/a{1,2}/;"," +") +#20035=@"loc,{#10000},17,1,17,9" +locations_default(#20035,#10000,17,1,17,9) +hasLocation(#20034,#20035) +#20036=* +lines(#20036,#20001,"/a{1}?/;"," +") +#20037=@"loc,{#10000},18,1,18,8" +locations_default(#20037,#10000,18,1,18,8) +hasLocation(#20036,#20037) +#20038=* +lines(#20038,#20001,"/a{1,}?/;"," +") +#20039=@"loc,{#10000},19,1,19,9" +locations_default(#20039,#10000,19,1,19,9) +hasLocation(#20038,#20039) +#20040=* +lines(#20040,#20001,"/a{1,2}?/;"," +") +#20041=@"loc,{#10000},20,1,20,10" +locations_default(#20041,#10000,20,1,20,10) +hasLocation(#20040,#20041) +#20042=* +lines(#20042,#20001,"/./;"," +") +#20043=@"loc,{#10000},21,1,21,4" +locations_default(#20043,#10000,21,1,21,4) +hasLocation(#20042,#20043) +#20044=* +lines(#20044,#20001,"/(abc)/;"," +") +#20045=@"loc,{#10000},22,1,22,8" +locations_default(#20045,#10000,22,1,22,8) +hasLocation(#20044,#20045) +#20046=* +lines(#20046,#20001,"/(?:abc)/;"," +") +#20047=@"loc,{#10000},23,1,23,10" +locations_default(#20047,#10000,23,1,23,10) +hasLocation(#20046,#20047) +#20048=* +lines(#20048,#20001,"/\x0a/;"," +") +#20049=@"loc,{#10000},24,1,24,7" +locations_default(#20049,#10000,24,1,24,7) +hasLocation(#20048,#20049) +#20050=* +lines(#20050,#20001,"/\u000a/;"," +") +#20051=@"loc,{#10000},25,1,25,9" +locations_default(#20051,#10000,25,1,25,9) +hasLocation(#20050,#20051) +#20052=* +lines(#20052,#20001,"/\10/;"," +") +#20053=@"loc,{#10000},26,1,26,6" +locations_default(#20053,#10000,26,1,26,6) +hasLocation(#20052,#20053) +#20054=* +lines(#20054,#20001,"/\t\n\r\f\v/;"," +") +#20055=@"loc,{#10000},27,1,27,13" +locations_default(#20055,#10000,27,1,27,13) +hasLocation(#20054,#20055) +#20056=* +lines(#20056,#20001,"/\ca\cN/;"," +") +#20057=@"loc,{#10000},28,1,28,9" +locations_default(#20057,#10000,28,1,28,9) +hasLocation(#20056,#20057) +#20058=* +lines(#20058,#20001,"/\w\S/;"," +") +#20059=@"loc,{#10000},29,1,29,7" +locations_default(#20059,#10000,29,1,29,7) +hasLocation(#20058,#20059) +#20060=* +lines(#20060,#20001,"/\\/;"," +") +#20061=@"loc,{#10000},30,1,30,5" +locations_default(#20061,#10000,30,1,30,5) +hasLocation(#20060,#20061) +#20062=* +lines(#20062,#20001,"/[abc]/;"," +") +#20063=@"loc,{#10000},31,1,31,8" +locations_default(#20063,#10000,31,1,31,8) +hasLocation(#20062,#20063) +#20064=* +lines(#20064,#20001,"/[a-z]/;"," +") +#20065=@"loc,{#10000},32,1,32,8" +locations_default(#20065,#10000,32,1,32,8) +hasLocation(#20064,#20065) +#20066=* +lines(#20066,#20001,"/[a-zA-Z]/;"," +") +#20067=@"loc,{#10000},33,1,33,11" +locations_default(#20067,#10000,33,1,33,11) +hasLocation(#20066,#20067) +#20068=* +lines(#20068,#20001,"/[-a-z]/;"," +") +#20069=@"loc,{#10000},34,1,34,9" +locations_default(#20069,#10000,34,1,34,9) +hasLocation(#20068,#20069) +#20070=* +lines(#20070,#20001,"/[^a-z]/;"," +") +#20071=@"loc,{#10000},35,1,35,9" +locations_default(#20071,#10000,35,1,35,9) +hasLocation(#20070,#20071) +#20072=* +lines(#20072,#20001,"/[a\b\x0c]/;"," +") +#20073=@"loc,{#10000},36,1,36,12" +locations_default(#20073,#10000,36,1,36,12) +hasLocation(#20072,#20073) +#20074=* +lines(#20074,#20001,"/a{/;"," +") +#20075=@"loc,{#10000},37,1,37,5" +locations_default(#20075,#10000,37,1,37,5) +hasLocation(#20074,#20075) +#20076=* +lines(#20076,#20001,"/a{b}/;"," +") +#20077=@"loc,{#10000},38,1,38,7" +locations_default(#20077,#10000,38,1,38,7) +hasLocation(#20076,#20077) +#20078=* +lines(#20078,#20001,"/a{2/;"," +") +#20079=@"loc,{#10000},39,1,39,6" +locations_default(#20079,#10000,39,1,39,6) +hasLocation(#20078,#20079) +#20080=* +lines(#20080,#20001,"/\xa/;"," +") +#20081=@"loc,{#10000},40,1,40,6" +locations_default(#20081,#10000,40,1,40,6) +hasLocation(#20080,#20081) +#20082=* +lines(#20082,#20001,"/\c0/;"," +") +#20083=@"loc,{#10000},41,1,41,6" +locations_default(#20083,#10000,41,1,41,6) +hasLocation(#20082,#20083) +#20084=* +lines(#20084,#20001,"/[]/;"," +") +#20085=@"loc,{#10000},42,1,42,5" +locations_default(#20085,#10000,42,1,42,5) +hasLocation(#20084,#20085) +#20086=* +lines(#20086,#20001,"/[^]/;"," +") +#20087=@"loc,{#10000},43,1,43,6" +locations_default(#20087,#10000,43,1,43,6) +hasLocation(#20086,#20087) +#20088=* +lines(#20088,#20001,"/]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/;","") +#20089=@"loc,{#10000},44,1,44,60" +locations_default(#20089,#10000,44,1,44,60) +hasLocation(#20088,#20089) +numlines(#20001,44,44,0) +#20090=* +tokeninfo(#20090,5,#20001,0,"/t/") +#20091=@"loc,{#10000},1,1,1,3" +locations_default(#20091,#10000,1,1,1,3) +hasLocation(#20090,#20091) +#20092=* +tokeninfo(#20092,8,#20001,1,";") +#20093=@"loc,{#10000},1,4,1,4" +locations_default(#20093,#10000,1,4,1,4) +hasLocation(#20092,#20093) +#20094=* +tokeninfo(#20094,5,#20001,2,"/foo|bar/") +#20095=@"loc,{#10000},2,1,2,9" +locations_default(#20095,#10000,2,1,2,9) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,8,#20001,3,";") +#20097=@"loc,{#10000},2,10,2,10" +locations_default(#20097,#10000,2,10,2,10) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,5,#20001,4,"/(?:)/") +#20099=@"loc,{#10000},3,1,3,6" +locations_default(#20099,#10000,3,1,3,6) +hasLocation(#20098,#20099) +#20100=* +tokeninfo(#20100,8,#20001,5,";") +#20101=@"loc,{#10000},3,7,3,7" +locations_default(#20101,#10000,3,7,3,7) +hasLocation(#20100,#20101) +#20102=* +tokeninfo(#20102,5,#20001,6,"/^abc$/") +#20103=@"loc,{#10000},4,1,4,7" +locations_default(#20103,#10000,4,1,4,7) +hasLocation(#20102,#20103) +#20104=* +tokeninfo(#20104,8,#20001,7,";") +#20105=@"loc,{#10000},4,8,4,8" +locations_default(#20105,#10000,4,8,4,8) +hasLocation(#20104,#20105) +#20106=* +tokeninfo(#20106,5,#20001,8,"/\bx\b/") +#20107=@"loc,{#10000},5,1,5,7" +locations_default(#20107,#10000,5,1,5,7) +hasLocation(#20106,#20107) +#20108=* +tokeninfo(#20108,8,#20001,9,";") +#20109=@"loc,{#10000},5,8,5,8" +locations_default(#20109,#10000,5,8,5,8) +hasLocation(#20108,#20109) +#20110=* +tokeninfo(#20110,5,#20001,10,"/\bx\B/") +#20111=@"loc,{#10000},6,1,6,7" +locations_default(#20111,#10000,6,1,6,7) +hasLocation(#20110,#20111) +#20112=* +tokeninfo(#20112,8,#20001,11,";") +#20113=@"loc,{#10000},6,8,6,8" +locations_default(#20113,#10000,6,8,6,8) +hasLocation(#20112,#20113) +#20114=* +tokeninfo(#20114,5,#20001,12,"/x(?=y)/") +#20115=@"loc,{#10000},7,1,7,8" +locations_default(#20115,#10000,7,1,7,8) +hasLocation(#20114,#20115) +#20116=* +tokeninfo(#20116,8,#20001,13,";") +#20117=@"loc,{#10000},7,9,7,9" +locations_default(#20117,#10000,7,9,7,9) +hasLocation(#20116,#20117) +#20118=* +tokeninfo(#20118,5,#20001,14,"/x(?!z)/") +#20119=@"loc,{#10000},8,1,8,8" +locations_default(#20119,#10000,8,1,8,8) +hasLocation(#20118,#20119) +#20120=* +tokeninfo(#20120,8,#20001,15,";") +#20121=@"loc,{#10000},8,9,8,9" +locations_default(#20121,#10000,8,9,8,9) +hasLocation(#20120,#20121) +#20122=* +tokeninfo(#20122,5,#20001,16,"/a*/") +#20123=@"loc,{#10000},9,1,9,4" +locations_default(#20123,#10000,9,1,9,4) +hasLocation(#20122,#20123) +#20124=* +tokeninfo(#20124,8,#20001,17,";") +#20125=@"loc,{#10000},9,5,9,5" +locations_default(#20125,#10000,9,5,9,5) +hasLocation(#20124,#20125) +#20126=* +tokeninfo(#20126,5,#20001,18,"/a*?/") +#20127=@"loc,{#10000},10,1,10,5" +locations_default(#20127,#10000,10,1,10,5) +hasLocation(#20126,#20127) +#20128=* +tokeninfo(#20128,8,#20001,19,";") +#20129=@"loc,{#10000},10,6,10,6" +locations_default(#20129,#10000,10,6,10,6) +hasLocation(#20128,#20129) +#20130=* +tokeninfo(#20130,5,#20001,20,"/a+/") +#20131=@"loc,{#10000},11,1,11,4" +locations_default(#20131,#10000,11,1,11,4) +hasLocation(#20130,#20131) +#20132=* +tokeninfo(#20132,8,#20001,21,";") +#20133=@"loc,{#10000},11,5,11,5" +locations_default(#20133,#10000,11,5,11,5) +hasLocation(#20132,#20133) +#20134=* +tokeninfo(#20134,5,#20001,22,"/a+?/") +#20135=@"loc,{#10000},12,1,12,5" +locations_default(#20135,#10000,12,1,12,5) +hasLocation(#20134,#20135) +#20136=* +tokeninfo(#20136,8,#20001,23,";") +#20137=@"loc,{#10000},12,6,12,6" +locations_default(#20137,#10000,12,6,12,6) +hasLocation(#20136,#20137) +#20138=* +tokeninfo(#20138,5,#20001,24,"/a?/") +#20139=@"loc,{#10000},13,1,13,4" +locations_default(#20139,#10000,13,1,13,4) +hasLocation(#20138,#20139) +#20140=* +tokeninfo(#20140,8,#20001,25,";") +#20141=@"loc,{#10000},13,5,13,5" +locations_default(#20141,#10000,13,5,13,5) +hasLocation(#20140,#20141) +#20142=* +tokeninfo(#20142,5,#20001,26,"/a??/") +#20143=@"loc,{#10000},14,1,14,5" +locations_default(#20143,#10000,14,1,14,5) +hasLocation(#20142,#20143) +#20144=* +tokeninfo(#20144,8,#20001,27,";") +#20145=@"loc,{#10000},14,6,14,6" +locations_default(#20145,#10000,14,6,14,6) +hasLocation(#20144,#20145) +#20146=* +tokeninfo(#20146,5,#20001,28,"/a{1}/") +#20147=@"loc,{#10000},15,1,15,6" +locations_default(#20147,#10000,15,1,15,6) +hasLocation(#20146,#20147) +#20148=* +tokeninfo(#20148,8,#20001,29,";") +#20149=@"loc,{#10000},15,7,15,7" +locations_default(#20149,#10000,15,7,15,7) +hasLocation(#20148,#20149) +#20150=* +tokeninfo(#20150,5,#20001,30,"/a{1,}/") +#20151=@"loc,{#10000},16,1,16,7" +locations_default(#20151,#10000,16,1,16,7) +hasLocation(#20150,#20151) +#20152=* +tokeninfo(#20152,8,#20001,31,";") +#20153=@"loc,{#10000},16,8,16,8" +locations_default(#20153,#10000,16,8,16,8) +hasLocation(#20152,#20153) +#20154=* +tokeninfo(#20154,5,#20001,32,"/a{1,2}/") +#20155=@"loc,{#10000},17,1,17,8" +locations_default(#20155,#10000,17,1,17,8) +hasLocation(#20154,#20155) +#20156=* +tokeninfo(#20156,8,#20001,33,";") +#20157=@"loc,{#10000},17,9,17,9" +locations_default(#20157,#10000,17,9,17,9) +hasLocation(#20156,#20157) +#20158=* +tokeninfo(#20158,5,#20001,34,"/a{1}?/") +#20159=@"loc,{#10000},18,1,18,7" +locations_default(#20159,#10000,18,1,18,7) +hasLocation(#20158,#20159) +#20160=* +tokeninfo(#20160,8,#20001,35,";") +#20161=@"loc,{#10000},18,8,18,8" +locations_default(#20161,#10000,18,8,18,8) +hasLocation(#20160,#20161) +#20162=* +tokeninfo(#20162,5,#20001,36,"/a{1,}?/") +#20163=@"loc,{#10000},19,1,19,8" +locations_default(#20163,#10000,19,1,19,8) +hasLocation(#20162,#20163) +#20164=* +tokeninfo(#20164,8,#20001,37,";") +#20165=@"loc,{#10000},19,9,19,9" +locations_default(#20165,#10000,19,9,19,9) +hasLocation(#20164,#20165) +#20166=* +tokeninfo(#20166,5,#20001,38,"/a{1,2}?/") +#20167=@"loc,{#10000},20,1,20,9" +locations_default(#20167,#10000,20,1,20,9) +hasLocation(#20166,#20167) +#20168=* +tokeninfo(#20168,8,#20001,39,";") +#20169=@"loc,{#10000},20,10,20,10" +locations_default(#20169,#10000,20,10,20,10) +hasLocation(#20168,#20169) +#20170=* +tokeninfo(#20170,5,#20001,40,"/./") +#20171=@"loc,{#10000},21,1,21,3" +locations_default(#20171,#10000,21,1,21,3) +hasLocation(#20170,#20171) +#20172=* +tokeninfo(#20172,8,#20001,41,";") +#20173=@"loc,{#10000},21,4,21,4" +locations_default(#20173,#10000,21,4,21,4) +hasLocation(#20172,#20173) +#20174=* +tokeninfo(#20174,5,#20001,42,"/(abc)/") +#20175=@"loc,{#10000},22,1,22,7" +locations_default(#20175,#10000,22,1,22,7) +hasLocation(#20174,#20175) +#20176=* +tokeninfo(#20176,8,#20001,43,";") +#20177=@"loc,{#10000},22,8,22,8" +locations_default(#20177,#10000,22,8,22,8) +hasLocation(#20176,#20177) +#20178=* +tokeninfo(#20178,5,#20001,44,"/(?:abc)/") +#20179=@"loc,{#10000},23,1,23,9" +locations_default(#20179,#10000,23,1,23,9) +hasLocation(#20178,#20179) +#20180=* +tokeninfo(#20180,8,#20001,45,";") +#20181=@"loc,{#10000},23,10,23,10" +locations_default(#20181,#10000,23,10,23,10) +hasLocation(#20180,#20181) +#20182=* +tokeninfo(#20182,5,#20001,46,"/\x0a/") +#20183=@"loc,{#10000},24,1,24,6" +locations_default(#20183,#10000,24,1,24,6) +hasLocation(#20182,#20183) +#20184=* +tokeninfo(#20184,8,#20001,47,";") +#20185=@"loc,{#10000},24,7,24,7" +locations_default(#20185,#10000,24,7,24,7) +hasLocation(#20184,#20185) +#20186=* +tokeninfo(#20186,5,#20001,48,"/\u000a/") +#20187=@"loc,{#10000},25,1,25,8" +locations_default(#20187,#10000,25,1,25,8) +hasLocation(#20186,#20187) +#20188=* +tokeninfo(#20188,8,#20001,49,";") +#20189=@"loc,{#10000},25,9,25,9" +locations_default(#20189,#10000,25,9,25,9) +hasLocation(#20188,#20189) +#20190=* +tokeninfo(#20190,5,#20001,50,"/\10/") +#20191=@"loc,{#10000},26,1,26,5" +locations_default(#20191,#10000,26,1,26,5) +hasLocation(#20190,#20191) +#20192=* +tokeninfo(#20192,8,#20001,51,";") +#20193=@"loc,{#10000},26,6,26,6" +locations_default(#20193,#10000,26,6,26,6) +hasLocation(#20192,#20193) +#20194=* +tokeninfo(#20194,5,#20001,52,"/\t\n\r\f\v/") +#20195=@"loc,{#10000},27,1,27,12" +locations_default(#20195,#10000,27,1,27,12) +hasLocation(#20194,#20195) +#20196=* +tokeninfo(#20196,8,#20001,53,";") +#20197=@"loc,{#10000},27,13,27,13" +locations_default(#20197,#10000,27,13,27,13) +hasLocation(#20196,#20197) +#20198=* +tokeninfo(#20198,5,#20001,54,"/\ca\cN/") +#20199=@"loc,{#10000},28,1,28,8" +locations_default(#20199,#10000,28,1,28,8) +hasLocation(#20198,#20199) +#20200=* +tokeninfo(#20200,8,#20001,55,";") +#20201=@"loc,{#10000},28,9,28,9" +locations_default(#20201,#10000,28,9,28,9) +hasLocation(#20200,#20201) +#20202=* +tokeninfo(#20202,5,#20001,56,"/\w\S/") +#20203=@"loc,{#10000},29,1,29,6" +locations_default(#20203,#10000,29,1,29,6) +hasLocation(#20202,#20203) +#20204=* +tokeninfo(#20204,8,#20001,57,";") +#20205=@"loc,{#10000},29,7,29,7" +locations_default(#20205,#10000,29,7,29,7) +hasLocation(#20204,#20205) +#20206=* +tokeninfo(#20206,5,#20001,58,"/\\/") +#20207=@"loc,{#10000},30,1,30,4" +locations_default(#20207,#10000,30,1,30,4) +hasLocation(#20206,#20207) +#20208=* +tokeninfo(#20208,8,#20001,59,";") +#20209=@"loc,{#10000},30,5,30,5" +locations_default(#20209,#10000,30,5,30,5) +hasLocation(#20208,#20209) +#20210=* +tokeninfo(#20210,5,#20001,60,"/[abc]/") +#20211=@"loc,{#10000},31,1,31,7" +locations_default(#20211,#10000,31,1,31,7) +hasLocation(#20210,#20211) +#20212=* +tokeninfo(#20212,8,#20001,61,";") +#20213=@"loc,{#10000},31,8,31,8" +locations_default(#20213,#10000,31,8,31,8) +hasLocation(#20212,#20213) +#20214=* +tokeninfo(#20214,5,#20001,62,"/[a-z]/") +#20215=@"loc,{#10000},32,1,32,7" +locations_default(#20215,#10000,32,1,32,7) +hasLocation(#20214,#20215) +#20216=* +tokeninfo(#20216,8,#20001,63,";") +#20217=@"loc,{#10000},32,8,32,8" +locations_default(#20217,#10000,32,8,32,8) +hasLocation(#20216,#20217) +#20218=* +tokeninfo(#20218,5,#20001,64,"/[a-zA-Z]/") +#20219=@"loc,{#10000},33,1,33,10" +locations_default(#20219,#10000,33,1,33,10) +hasLocation(#20218,#20219) +#20220=* +tokeninfo(#20220,8,#20001,65,";") +#20221=@"loc,{#10000},33,11,33,11" +locations_default(#20221,#10000,33,11,33,11) +hasLocation(#20220,#20221) +#20222=* +tokeninfo(#20222,5,#20001,66,"/[-a-z]/") +#20223=@"loc,{#10000},34,1,34,8" +locations_default(#20223,#10000,34,1,34,8) +hasLocation(#20222,#20223) +#20224=* +tokeninfo(#20224,8,#20001,67,";") +#20225=@"loc,{#10000},34,9,34,9" +locations_default(#20225,#10000,34,9,34,9) +hasLocation(#20224,#20225) +#20226=* +tokeninfo(#20226,5,#20001,68,"/[^a-z]/") +#20227=@"loc,{#10000},35,1,35,8" +locations_default(#20227,#10000,35,1,35,8) +hasLocation(#20226,#20227) +#20228=* +tokeninfo(#20228,8,#20001,69,";") +#20229=@"loc,{#10000},35,9,35,9" +locations_default(#20229,#10000,35,9,35,9) +hasLocation(#20228,#20229) +#20230=* +tokeninfo(#20230,5,#20001,70,"/[a\b\x0c]/") +#20231=@"loc,{#10000},36,1,36,11" +locations_default(#20231,#10000,36,1,36,11) +hasLocation(#20230,#20231) +#20232=* +tokeninfo(#20232,8,#20001,71,";") +#20233=@"loc,{#10000},36,12,36,12" +locations_default(#20233,#10000,36,12,36,12) +hasLocation(#20232,#20233) +#20234=* +tokeninfo(#20234,5,#20001,72,"/a{/") +#20235=@"loc,{#10000},37,1,37,4" +locations_default(#20235,#10000,37,1,37,4) +hasLocation(#20234,#20235) +#20236=* +tokeninfo(#20236,8,#20001,73,";") +#20237=@"loc,{#10000},37,5,37,5" +locations_default(#20237,#10000,37,5,37,5) +hasLocation(#20236,#20237) +#20238=* +tokeninfo(#20238,5,#20001,74,"/a{b}/") +#20239=@"loc,{#10000},38,1,38,6" +locations_default(#20239,#10000,38,1,38,6) +hasLocation(#20238,#20239) +#20240=* +tokeninfo(#20240,8,#20001,75,";") +#20241=@"loc,{#10000},38,7,38,7" +locations_default(#20241,#10000,38,7,38,7) +hasLocation(#20240,#20241) +#20242=* +tokeninfo(#20242,5,#20001,76,"/a{2/") +#20243=@"loc,{#10000},39,1,39,5" +locations_default(#20243,#10000,39,1,39,5) +hasLocation(#20242,#20243) +#20244=* +tokeninfo(#20244,8,#20001,77,";") +#20245=@"loc,{#10000},39,6,39,6" +locations_default(#20245,#10000,39,6,39,6) +hasLocation(#20244,#20245) +#20246=* +tokeninfo(#20246,5,#20001,78,"/\xa/") +#20247=@"loc,{#10000},40,1,40,5" +locations_default(#20247,#10000,40,1,40,5) +hasLocation(#20246,#20247) +#20248=* +tokeninfo(#20248,8,#20001,79,";") +#20249=@"loc,{#10000},40,6,40,6" +locations_default(#20249,#10000,40,6,40,6) +hasLocation(#20248,#20249) +#20250=* +tokeninfo(#20250,5,#20001,80,"/\c0/") +#20251=@"loc,{#10000},41,1,41,5" +locations_default(#20251,#10000,41,1,41,5) +hasLocation(#20250,#20251) #20252=* -stmts(#20252,2,#20001,26,"/\t\n\r\f\v/;") -#20253=@"loc,{#10000},27,1,27,13" -locations_default(#20253,#10000,27,1,27,13) +tokeninfo(#20252,8,#20001,81,";") +#20253=@"loc,{#10000},41,6,41,6" +locations_default(#20253,#10000,41,6,41,6) hasLocation(#20252,#20253) -stmtContainers(#20252,#20001) #20254=* -exprs(#20254,5,#20252,0,"/\t\n\r\f\v/") -#20255=@"loc,{#10000},27,1,27,12" -locations_default(#20255,#10000,27,1,27,12) +tokeninfo(#20254,5,#20001,82,"/[]/") +#20255=@"loc,{#10000},42,1,42,4" +locations_default(#20255,#10000,42,1,42,4) hasLocation(#20254,#20255) -enclosingStmt(#20254,#20252) -exprContainers(#20254,#20001) -literals("/\t\n\r\f\v/","/\t\n\r\f\v/",#20254) #20256=* -regexpterm(#20256,1,#20254,0,"\t\n\r\f\v") -#20257=@"loc,{#10000},27,2,27,11" -locations_default(#20257,#10000,27,2,27,11) +tokeninfo(#20256,8,#20001,83,";") +#20257=@"loc,{#10000},42,5,42,5" +locations_default(#20257,#10000,42,5,42,5) hasLocation(#20256,#20257) #20258=* -regexpterm(#20258,19,#20256,0,"\t") -#20259=@"loc,{#10000},27,2,27,3" -locations_default(#20259,#10000,27,2,27,3) +tokeninfo(#20258,5,#20001,84,"/[^]/") +#20259=@"loc,{#10000},43,1,43,5" +locations_default(#20259,#10000,43,1,43,5) hasLocation(#20258,#20259) -regexpConstValue(#20258," ") #20260=* -regexpterm(#20260,19,#20256,1,"\n") -#20261=@"loc,{#10000},27,4,27,5" -locations_default(#20261,#10000,27,4,27,5) +tokeninfo(#20260,8,#20001,85,";") +#20261=@"loc,{#10000},43,6,43,6" +locations_default(#20261,#10000,43,6,43,6) hasLocation(#20260,#20261) -regexpConstValue(#20260," -") #20262=* -regexpterm(#20262,19,#20256,2,"\r") -#20263=@"loc,{#10000},27,6,27,7" -locations_default(#20263,#10000,27,6,27,7) +tokeninfo(#20262,5,#20001,86,"/]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/") +#20263=@"loc,{#10000},44,1,44,59" +locations_default(#20263,#10000,44,1,44,59) hasLocation(#20262,#20263) -regexpConstValue(#20262," ") #20264=* -regexpterm(#20264,19,#20256,3,"\f") -#20265=@"loc,{#10000},27,8,27,9" -locations_default(#20265,#10000,27,8,27,9) +tokeninfo(#20264,8,#20001,87,";") +#20265=@"loc,{#10000},44,60,44,60" +locations_default(#20265,#10000,44,60,44,60) hasLocation(#20264,#20265) -regexpConstValue(#20264," ") #20266=* -regexpterm(#20266,19,#20256,4,"\v") -#20267=@"loc,{#10000},27,10,27,11" -locations_default(#20267,#10000,27,10,27,11) +tokeninfo(#20266,0,#20001,88,"") +#20267=@"loc,{#10000},44,61,44,60" +locations_default(#20267,#10000,44,61,44,60) hasLocation(#20266,#20267) -regexpConstValue(#20266," ") -#20268=* -stmts(#20268,2,#20001,27,"/\ca\cN/;") -#20269=@"loc,{#10000},28,1,28,9" -locations_default(#20269,#10000,28,1,28,9) -hasLocation(#20268,#20269) -stmtContainers(#20268,#20001) +toplevels(#20001,0) +#20268=@"loc,{#10000},1,1,44,60" +locations_default(#20268,#10000,1,1,44,60) +hasLocation(#20001,#20268) +#20269=* +stmts(#20269,2,#20001,0,"/t/;") +hasLocation(#20269,#20003) +stmtContainers(#20269,#20001) #20270=* -exprs(#20270,5,#20268,0,"/\ca\cN/") -#20271=@"loc,{#10000},28,1,28,8" -locations_default(#20271,#10000,28,1,28,8) -hasLocation(#20270,#20271) -enclosingStmt(#20270,#20268) +exprs(#20270,5,#20269,0,"/t/") +hasLocation(#20270,#20091) +enclosingStmt(#20270,#20269) exprContainers(#20270,#20001) -literals("/\ca\cN/","/\ca\cN/",#20270) -#20272=* -regexpterm(#20272,1,#20270,0,"\ca\cN") -#20273=@"loc,{#10000},28,2,28,7" -locations_default(#20273,#10000,28,2,28,7) -hasLocation(#20272,#20273) +literals("/t/","/t/",#20270) +#20271=* +regexpterm(#20271,14,#20270,0,"t") +#20272=@"loc,{#10000},1,2,1,2" +locations_default(#20272,#10000,1,2,1,2) +hasLocation(#20271,#20272) +regexpConstValue(#20271,"t") +#20273=* +stmts(#20273,2,#20001,1,"/foo|bar/;") +hasLocation(#20273,#20005) +stmtContainers(#20273,#20001) #20274=* -regexpterm(#20274,19,#20272,0,"\ca") -#20275=@"loc,{#10000},28,2,28,4" -locations_default(#20275,#10000,28,2,28,4) -hasLocation(#20274,#20275) -regexpConstValue(#20274,"") -#20276=* -regexpterm(#20276,19,#20272,1,"\cN") -#20277=@"loc,{#10000},28,5,28,7" -locations_default(#20277,#10000,28,5,28,7) -hasLocation(#20276,#20277) -regexpConstValue(#20276,"") -#20278=* -stmts(#20278,2,#20001,28,"/\w\S/;") -#20279=@"loc,{#10000},29,1,29,7" -locations_default(#20279,#10000,29,1,29,7) -hasLocation(#20278,#20279) -stmtContainers(#20278,#20001) -#20280=* -exprs(#20280,5,#20278,0,"/\w\S/") -#20281=@"loc,{#10000},29,1,29,6" -locations_default(#20281,#10000,29,1,29,6) -hasLocation(#20280,#20281) -enclosingStmt(#20280,#20278) -exprContainers(#20280,#20001) -literals("/\w\S/","/\w\S/",#20280) -#20282=* -regexpterm(#20282,1,#20280,0,"\w\S") -#20283=@"loc,{#10000},29,2,29,5" -locations_default(#20283,#10000,29,2,29,5) -hasLocation(#20282,#20283) -#20284=* -regexpterm(#20284,20,#20282,0,"\w") -#20285=@"loc,{#10000},29,2,29,3" -locations_default(#20285,#10000,29,2,29,3) -hasLocation(#20284,#20285) -charClassEscape(#20284,"w") -#20286=* -regexpterm(#20286,20,#20282,1,"\S") -#20287=@"loc,{#10000},29,4,29,5" -locations_default(#20287,#10000,29,4,29,5) -hasLocation(#20286,#20287) -charClassEscape(#20286,"S") -#20288=* -stmts(#20288,2,#20001,29,"/\\/;") -#20289=@"loc,{#10000},30,1,30,5" -locations_default(#20289,#10000,30,1,30,5) -hasLocation(#20288,#20289) -stmtContainers(#20288,#20001) -#20290=* -exprs(#20290,5,#20288,0,"/\\/") -#20291=@"loc,{#10000},30,1,30,4" -locations_default(#20291,#10000,30,1,30,4) -hasLocation(#20290,#20291) -enclosingStmt(#20290,#20288) -exprContainers(#20290,#20001) -literals("/\\/","/\\/",#20290) -#20292=* -regexpterm(#20292,21,#20290,0,"\\") -#20293=@"loc,{#10000},30,2,30,3" -locations_default(#20293,#10000,30,2,30,3) -hasLocation(#20292,#20293) -regexpConstValue(#20292,"\") +exprs(#20274,5,#20273,0,"/foo|bar/") +hasLocation(#20274,#20095) +enclosingStmt(#20274,#20273) +exprContainers(#20274,#20001) +literals("/foo|bar/","/foo|bar/",#20274) +#20275=* +regexpterm(#20275,0,#20274,0,"foo|bar") +#20276=@"loc,{#10000},2,2,2,8" +locations_default(#20276,#10000,2,2,2,8) +hasLocation(#20275,#20276) +#20277=* +regexpterm(#20277,1,#20275,0,"foo") +#20278=@"loc,{#10000},2,2,2,4" +locations_default(#20278,#10000,2,2,2,4) +hasLocation(#20277,#20278) +#20279=* +regexpterm(#20279,14,#20277,0,"f") +#20280=@"loc,{#10000},2,2,2,2" +locations_default(#20280,#10000,2,2,2,2) +hasLocation(#20279,#20280) +regexpConstValue(#20279,"f") +#20281=* +regexpterm(#20281,14,#20277,1,"o") +#20282=@"loc,{#10000},2,3,2,3" +locations_default(#20282,#10000,2,3,2,3) +hasLocation(#20281,#20282) +regexpConstValue(#20281,"o") +#20283=* +regexpterm(#20283,14,#20277,2,"o") +#20284=@"loc,{#10000},2,4,2,4" +locations_default(#20284,#10000,2,4,2,4) +hasLocation(#20283,#20284) +regexpConstValue(#20283,"o") +#20285=* +regexpterm(#20285,1,#20275,1,"bar") +#20286=@"loc,{#10000},2,6,2,8" +locations_default(#20286,#10000,2,6,2,8) +hasLocation(#20285,#20286) +#20287=* +regexpterm(#20287,14,#20285,0,"b") +#20288=@"loc,{#10000},2,6,2,6" +locations_default(#20288,#10000,2,6,2,6) +hasLocation(#20287,#20288) +regexpConstValue(#20287,"b") +#20289=* +regexpterm(#20289,14,#20285,1,"a") +#20290=@"loc,{#10000},2,7,2,7" +locations_default(#20290,#10000,2,7,2,7) +hasLocation(#20289,#20290) +regexpConstValue(#20289,"a") +#20291=* +regexpterm(#20291,14,#20285,2,"r") +#20292=@"loc,{#10000},2,8,2,8" +locations_default(#20292,#10000,2,8,2,8) +hasLocation(#20291,#20292) +regexpConstValue(#20291,"r") +#20293=* +stmts(#20293,2,#20001,2,"/(?:)/;") +hasLocation(#20293,#20007) +stmtContainers(#20293,#20001) #20294=* -stmts(#20294,2,#20001,30,"/[abc]/;") -#20295=@"loc,{#10000},31,1,31,8" -locations_default(#20295,#10000,31,1,31,8) -hasLocation(#20294,#20295) -stmtContainers(#20294,#20001) -#20296=* -exprs(#20296,5,#20294,0,"/[abc]/") -#20297=@"loc,{#10000},31,1,31,7" -locations_default(#20297,#10000,31,1,31,7) -hasLocation(#20296,#20297) -enclosingStmt(#20296,#20294) -exprContainers(#20296,#20001) -literals("/[abc]/","/[abc]/",#20296) -#20298=* -regexpterm(#20298,23,#20296,0,"[abc]") -#20299=@"loc,{#10000},31,2,31,6" -locations_default(#20299,#10000,31,2,31,6) -hasLocation(#20298,#20299) +exprs(#20294,5,#20293,0,"/(?:)/") +hasLocation(#20294,#20099) +enclosingStmt(#20294,#20293) +exprContainers(#20294,#20001) +literals("/(?:)/","/(?:)/",#20294) +#20295=* +regexpterm(#20295,13,#20294,0,"(?:)") +#20296=@"loc,{#10000},3,2,3,5" +locations_default(#20296,#10000,3,2,3,5) +hasLocation(#20295,#20296) +#20297=* +regexpterm(#20297,1,#20295,0,"") +#20298=@"loc,{#10000},3,5,3,4" +locations_default(#20298,#10000,3,5,3,4) +hasLocation(#20297,#20298) +#20299=* +stmts(#20299,2,#20001,3,"/^abc$/;") +hasLocation(#20299,#20009) +stmtContainers(#20299,#20001) #20300=* -regexpterm(#20300,14,#20298,0,"a") -#20301=@"loc,{#10000},31,3,31,3" -locations_default(#20301,#10000,31,3,31,3) -hasLocation(#20300,#20301) -regexpConstValue(#20300,"a") -#20302=* -regexpterm(#20302,14,#20298,1,"b") -#20303=@"loc,{#10000},31,4,31,4" -locations_default(#20303,#10000,31,4,31,4) -hasLocation(#20302,#20303) -regexpConstValue(#20302,"b") -#20304=* -regexpterm(#20304,14,#20298,2,"c") -#20305=@"loc,{#10000},31,5,31,5" -locations_default(#20305,#10000,31,5,31,5) -hasLocation(#20304,#20305) -regexpConstValue(#20304,"c") -#20306=* -stmts(#20306,2,#20001,31,"/[a-z]/;") -#20307=@"loc,{#10000},32,1,32,8" -locations_default(#20307,#10000,32,1,32,8) -hasLocation(#20306,#20307) -stmtContainers(#20306,#20001) -#20308=* -exprs(#20308,5,#20306,0,"/[a-z]/") -#20309=@"loc,{#10000},32,1,32,7" -locations_default(#20309,#10000,32,1,32,7) -hasLocation(#20308,#20309) -enclosingStmt(#20308,#20306) -exprContainers(#20308,#20001) -literals("/[a-z]/","/[a-z]/",#20308) -#20310=* -regexpterm(#20310,23,#20308,0,"[a-z]") -#20311=@"loc,{#10000},32,2,32,6" -locations_default(#20311,#10000,32,2,32,6) -hasLocation(#20310,#20311) -#20312=* -regexpterm(#20312,24,#20310,0,"a-z") -#20313=@"loc,{#10000},32,3,32,5" -locations_default(#20313,#10000,32,3,32,5) -hasLocation(#20312,#20313) +exprs(#20300,5,#20299,0,"/^abc$/") +hasLocation(#20300,#20103) +enclosingStmt(#20300,#20299) +exprContainers(#20300,#20001) +literals("/^abc$/","/^abc$/",#20300) +#20301=* +regexpterm(#20301,1,#20300,0,"^abc$") +#20302=@"loc,{#10000},4,2,4,6" +locations_default(#20302,#10000,4,2,4,6) +hasLocation(#20301,#20302) +#20303=* +regexpterm(#20303,2,#20301,0,"^") +#20304=@"loc,{#10000},4,2,4,2" +locations_default(#20304,#10000,4,2,4,2) +hasLocation(#20303,#20304) +#20305=* +regexpterm(#20305,14,#20301,1,"a") +#20306=@"loc,{#10000},4,3,4,3" +locations_default(#20306,#10000,4,3,4,3) +hasLocation(#20305,#20306) +regexpConstValue(#20305,"a") +#20307=* +regexpterm(#20307,14,#20301,2,"b") +#20308=@"loc,{#10000},4,4,4,4" +locations_default(#20308,#10000,4,4,4,4) +hasLocation(#20307,#20308) +regexpConstValue(#20307,"b") +#20309=* +regexpterm(#20309,14,#20301,3,"c") +#20310=@"loc,{#10000},4,5,4,5" +locations_default(#20310,#10000,4,5,4,5) +hasLocation(#20309,#20310) +regexpConstValue(#20309,"c") +#20311=* +regexpterm(#20311,3,#20301,4,"$") +#20312=@"loc,{#10000},4,6,4,6" +locations_default(#20312,#10000,4,6,4,6) +hasLocation(#20311,#20312) +#20313=* +stmts(#20313,2,#20001,4,"/\bx\b/;") +hasLocation(#20313,#20011) +stmtContainers(#20313,#20001) #20314=* -regexpterm(#20314,14,#20312,0,"a") -#20315=@"loc,{#10000},32,3,32,3" -locations_default(#20315,#10000,32,3,32,3) -hasLocation(#20314,#20315) -regexpConstValue(#20314,"a") -#20316=* -regexpterm(#20316,14,#20312,1,"z") -#20317=@"loc,{#10000},32,5,32,5" -locations_default(#20317,#10000,32,5,32,5) -hasLocation(#20316,#20317) -regexpConstValue(#20316,"z") -#20318=* -stmts(#20318,2,#20001,32,"/[a-zA-Z]/;") -#20319=@"loc,{#10000},33,1,33,11" -locations_default(#20319,#10000,33,1,33,11) -hasLocation(#20318,#20319) -stmtContainers(#20318,#20001) -#20320=* -exprs(#20320,5,#20318,0,"/[a-zA-Z]/") -#20321=@"loc,{#10000},33,1,33,10" -locations_default(#20321,#10000,33,1,33,10) -hasLocation(#20320,#20321) -enclosingStmt(#20320,#20318) -exprContainers(#20320,#20001) -literals("/[a-zA-Z]/","/[a-zA-Z]/",#20320) -#20322=* -regexpterm(#20322,23,#20320,0,"[a-zA-Z]") -#20323=@"loc,{#10000},33,2,33,9" -locations_default(#20323,#10000,33,2,33,9) -hasLocation(#20322,#20323) +exprs(#20314,5,#20313,0,"/\bx\b/") +hasLocation(#20314,#20107) +enclosingStmt(#20314,#20313) +exprContainers(#20314,#20001) +literals("/\bx\b/","/\bx\b/",#20314) +#20315=* +regexpterm(#20315,1,#20314,0,"\bx\b") +#20316=@"loc,{#10000},5,2,5,6" +locations_default(#20316,#10000,5,2,5,6) +hasLocation(#20315,#20316) +#20317=* +regexpterm(#20317,4,#20315,0,"\b") +#20318=@"loc,{#10000},5,2,5,3" +locations_default(#20318,#10000,5,2,5,3) +hasLocation(#20317,#20318) +#20319=* +regexpterm(#20319,14,#20315,1,"x") +#20320=@"loc,{#10000},5,4,5,4" +locations_default(#20320,#10000,5,4,5,4) +hasLocation(#20319,#20320) +regexpConstValue(#20319,"x") +#20321=* +regexpterm(#20321,4,#20315,2,"\b") +#20322=@"loc,{#10000},5,5,5,6" +locations_default(#20322,#10000,5,5,5,6) +hasLocation(#20321,#20322) +#20323=* +stmts(#20323,2,#20001,5,"/\bx\B/;") +hasLocation(#20323,#20013) +stmtContainers(#20323,#20001) #20324=* -regexpterm(#20324,24,#20322,0,"a-z") -#20325=@"loc,{#10000},33,3,33,5" -locations_default(#20325,#10000,33,3,33,5) -hasLocation(#20324,#20325) -#20326=* -regexpterm(#20326,14,#20324,0,"a") -#20327=@"loc,{#10000},33,3,33,3" -locations_default(#20327,#10000,33,3,33,3) -hasLocation(#20326,#20327) -regexpConstValue(#20326,"a") -#20328=* -regexpterm(#20328,14,#20324,1,"z") -#20329=@"loc,{#10000},33,5,33,5" -locations_default(#20329,#10000,33,5,33,5) -hasLocation(#20328,#20329) -regexpConstValue(#20328,"z") -#20330=* -regexpterm(#20330,24,#20322,1,"A-Z") -#20331=@"loc,{#10000},33,6,33,8" -locations_default(#20331,#10000,33,6,33,8) -hasLocation(#20330,#20331) -#20332=* -regexpterm(#20332,14,#20330,0,"A") -#20333=@"loc,{#10000},33,6,33,6" -locations_default(#20333,#10000,33,6,33,6) -hasLocation(#20332,#20333) -regexpConstValue(#20332,"A") +exprs(#20324,5,#20323,0,"/\bx\B/") +hasLocation(#20324,#20111) +enclosingStmt(#20324,#20323) +exprContainers(#20324,#20001) +literals("/\bx\B/","/\bx\B/",#20324) +#20325=* +regexpterm(#20325,1,#20324,0,"\bx\B") +#20326=@"loc,{#10000},6,2,6,6" +locations_default(#20326,#10000,6,2,6,6) +hasLocation(#20325,#20326) +#20327=* +regexpterm(#20327,4,#20325,0,"\b") +#20328=@"loc,{#10000},6,2,6,3" +locations_default(#20328,#10000,6,2,6,3) +hasLocation(#20327,#20328) +#20329=* +regexpterm(#20329,14,#20325,1,"x") +#20330=@"loc,{#10000},6,4,6,4" +locations_default(#20330,#10000,6,4,6,4) +hasLocation(#20329,#20330) +regexpConstValue(#20329,"x") +#20331=* +regexpterm(#20331,5,#20325,2,"\B") +#20332=@"loc,{#10000},6,5,6,6" +locations_default(#20332,#10000,6,5,6,6) +hasLocation(#20331,#20332) +#20333=* +stmts(#20333,2,#20001,6,"/x(?=y)/;") +hasLocation(#20333,#20015) +stmtContainers(#20333,#20001) #20334=* -regexpterm(#20334,14,#20330,1,"Z") -#20335=@"loc,{#10000},33,8,33,8" -locations_default(#20335,#10000,33,8,33,8) -hasLocation(#20334,#20335) -regexpConstValue(#20334,"Z") -#20336=* -stmts(#20336,2,#20001,33,"/[-a-z]/;") -#20337=@"loc,{#10000},34,1,34,9" -locations_default(#20337,#10000,34,1,34,9) -hasLocation(#20336,#20337) -stmtContainers(#20336,#20001) -#20338=* -exprs(#20338,5,#20336,0,"/[-a-z]/") -#20339=@"loc,{#10000},34,1,34,8" -locations_default(#20339,#10000,34,1,34,8) -hasLocation(#20338,#20339) -enclosingStmt(#20338,#20336) -exprContainers(#20338,#20001) -literals("/[-a-z]/","/[-a-z]/",#20338) -#20340=* -regexpterm(#20340,23,#20338,0,"[-a-z]") -#20341=@"loc,{#10000},34,2,34,7" -locations_default(#20341,#10000,34,2,34,7) -hasLocation(#20340,#20341) -#20342=* -regexpterm(#20342,14,#20340,0,"-") -#20343=@"loc,{#10000},34,3,34,3" -locations_default(#20343,#10000,34,3,34,3) -hasLocation(#20342,#20343) -regexpConstValue(#20342,"-") +exprs(#20334,5,#20333,0,"/x(?=y)/") +hasLocation(#20334,#20115) +enclosingStmt(#20334,#20333) +exprContainers(#20334,#20001) +literals("/x(?=y)/","/x(?=y)/",#20334) +#20335=* +regexpterm(#20335,1,#20334,0,"x(?=y)") +#20336=@"loc,{#10000},7,2,7,7" +locations_default(#20336,#10000,7,2,7,7) +hasLocation(#20335,#20336) +#20337=* +regexpterm(#20337,14,#20335,0,"x") +#20338=@"loc,{#10000},7,2,7,2" +locations_default(#20338,#10000,7,2,7,2) +hasLocation(#20337,#20338) +regexpConstValue(#20337,"x") +#20339=* +regexpterm(#20339,6,#20335,1,"(?=y)") +#20340=@"loc,{#10000},7,3,7,7" +locations_default(#20340,#10000,7,3,7,7) +hasLocation(#20339,#20340) +#20341=* +regexpterm(#20341,14,#20339,0,"y") +#20342=@"loc,{#10000},7,6,7,6" +locations_default(#20342,#10000,7,6,7,6) +hasLocation(#20341,#20342) +regexpConstValue(#20341,"y") +#20343=* +stmts(#20343,2,#20001,7,"/x(?!z)/;") +hasLocation(#20343,#20017) +stmtContainers(#20343,#20001) #20344=* -regexpterm(#20344,24,#20340,1,"a-z") -#20345=@"loc,{#10000},34,4,34,6" -locations_default(#20345,#10000,34,4,34,6) -hasLocation(#20344,#20345) -#20346=* -regexpterm(#20346,14,#20344,0,"a") -#20347=@"loc,{#10000},34,4,34,4" -locations_default(#20347,#10000,34,4,34,4) -hasLocation(#20346,#20347) -regexpConstValue(#20346,"a") -#20348=* -regexpterm(#20348,14,#20344,1,"z") -#20349=@"loc,{#10000},34,6,34,6" -locations_default(#20349,#10000,34,6,34,6) -hasLocation(#20348,#20349) -regexpConstValue(#20348,"z") -#20350=* -stmts(#20350,2,#20001,34,"/[^a-z]/;") -#20351=@"loc,{#10000},35,1,35,9" -locations_default(#20351,#10000,35,1,35,9) -hasLocation(#20350,#20351) -stmtContainers(#20350,#20001) -#20352=* -exprs(#20352,5,#20350,0,"/[^a-z]/") -#20353=@"loc,{#10000},35,1,35,8" -locations_default(#20353,#10000,35,1,35,8) -hasLocation(#20352,#20353) -enclosingStmt(#20352,#20350) -exprContainers(#20352,#20001) -literals("/[^a-z]/","/[^a-z]/",#20352) +exprs(#20344,5,#20343,0,"/x(?!z)/") +hasLocation(#20344,#20119) +enclosingStmt(#20344,#20343) +exprContainers(#20344,#20001) +literals("/x(?!z)/","/x(?!z)/",#20344) +#20345=* +regexpterm(#20345,1,#20344,0,"x(?!z)") +#20346=@"loc,{#10000},8,2,8,7" +locations_default(#20346,#10000,8,2,8,7) +hasLocation(#20345,#20346) +#20347=* +regexpterm(#20347,14,#20345,0,"x") +#20348=@"loc,{#10000},8,2,8,2" +locations_default(#20348,#10000,8,2,8,2) +hasLocation(#20347,#20348) +regexpConstValue(#20347,"x") +#20349=* +regexpterm(#20349,7,#20345,1,"(?!z)") +#20350=@"loc,{#10000},8,3,8,7" +locations_default(#20350,#10000,8,3,8,7) +hasLocation(#20349,#20350) +#20351=* +regexpterm(#20351,14,#20349,0,"z") +#20352=@"loc,{#10000},8,6,8,6" +locations_default(#20352,#10000,8,6,8,6) +hasLocation(#20351,#20352) +regexpConstValue(#20351,"z") +#20353=* +stmts(#20353,2,#20001,8,"/a*/;") +hasLocation(#20353,#20019) +stmtContainers(#20353,#20001) #20354=* -regexpterm(#20354,23,#20352,0,"[^a-z]") -#20355=@"loc,{#10000},35,2,35,7" -locations_default(#20355,#10000,35,2,35,7) -hasLocation(#20354,#20355) -isInverted(#20354) -#20356=* -regexpterm(#20356,24,#20354,0,"a-z") -#20357=@"loc,{#10000},35,4,35,6" -locations_default(#20357,#10000,35,4,35,6) -hasLocation(#20356,#20357) -#20358=* -regexpterm(#20358,14,#20356,0,"a") -#20359=@"loc,{#10000},35,4,35,4" -locations_default(#20359,#10000,35,4,35,4) -hasLocation(#20358,#20359) -regexpConstValue(#20358,"a") +exprs(#20354,5,#20353,0,"/a*/") +hasLocation(#20354,#20123) +enclosingStmt(#20354,#20353) +exprContainers(#20354,#20001) +literals("/a*/","/a*/",#20354) +#20355=* +regexpterm(#20355,8,#20354,0,"a*") +#20356=@"loc,{#10000},9,2,9,3" +locations_default(#20356,#10000,9,2,9,3) +hasLocation(#20355,#20356) +isGreedy(#20355) +#20357=* +regexpterm(#20357,14,#20355,0,"a") +#20358=@"loc,{#10000},9,2,9,2" +locations_default(#20358,#10000,9,2,9,2) +hasLocation(#20357,#20358) +regexpConstValue(#20357,"a") +#20359=* +stmts(#20359,2,#20001,9,"/a*?/;") +hasLocation(#20359,#20021) +stmtContainers(#20359,#20001) #20360=* -regexpterm(#20360,14,#20356,1,"z") -#20361=@"loc,{#10000},35,6,35,6" -locations_default(#20361,#10000,35,6,35,6) -hasLocation(#20360,#20361) -regexpConstValue(#20360,"z") -#20362=* -stmts(#20362,2,#20001,35,"/[a\b\x0c]/;") -#20363=@"loc,{#10000},36,1,36,12" -locations_default(#20363,#10000,36,1,36,12) -hasLocation(#20362,#20363) -stmtContainers(#20362,#20001) -#20364=* -exprs(#20364,5,#20362,0,"/[a\b\x0c]/") -#20365=@"loc,{#10000},36,1,36,11" -locations_default(#20365,#10000,36,1,36,11) -hasLocation(#20364,#20365) -enclosingStmt(#20364,#20362) -exprContainers(#20364,#20001) -literals("/[a\b\x0c]/","/[a\b\x0c]/",#20364) +exprs(#20360,5,#20359,0,"/a*?/") +hasLocation(#20360,#20127) +enclosingStmt(#20360,#20359) +exprContainers(#20360,#20001) +literals("/a*?/","/a*?/",#20360) +#20361=* +regexpterm(#20361,8,#20360,0,"a*?") +#20362=@"loc,{#10000},10,2,10,4" +locations_default(#20362,#10000,10,2,10,4) +hasLocation(#20361,#20362) +#20363=* +regexpterm(#20363,14,#20361,0,"a") +#20364=@"loc,{#10000},10,2,10,2" +locations_default(#20364,#10000,10,2,10,2) +hasLocation(#20363,#20364) +regexpConstValue(#20363,"a") +#20365=* +stmts(#20365,2,#20001,10,"/a+/;") +hasLocation(#20365,#20023) +stmtContainers(#20365,#20001) #20366=* -regexpterm(#20366,23,#20364,0,"[a\b\x0c]") -#20367=@"loc,{#10000},36,2,36,10" -locations_default(#20367,#10000,36,2,36,10) -hasLocation(#20366,#20367) -#20368=* -regexpterm(#20368,14,#20366,0,"a") -#20369=@"loc,{#10000},36,3,36,3" -locations_default(#20369,#10000,36,3,36,3) -hasLocation(#20368,#20369) -regexpConstValue(#20368,"a") -#20370=* -regexpterm(#20370,19,#20366,1,"\b") -#20371=@"loc,{#10000},36,4,36,5" -locations_default(#20371,#10000,36,4,36,5) -hasLocation(#20370,#20371) -regexpConstValue(#20370,"") +exprs(#20366,5,#20365,0,"/a+/") +hasLocation(#20366,#20131) +enclosingStmt(#20366,#20365) +exprContainers(#20366,#20001) +literals("/a+/","/a+/",#20366) +#20367=* +regexpterm(#20367,9,#20366,0,"a+") +#20368=@"loc,{#10000},11,2,11,3" +locations_default(#20368,#10000,11,2,11,3) +hasLocation(#20367,#20368) +isGreedy(#20367) +#20369=* +regexpterm(#20369,14,#20367,0,"a") +#20370=@"loc,{#10000},11,2,11,2" +locations_default(#20370,#10000,11,2,11,2) +hasLocation(#20369,#20370) +regexpConstValue(#20369,"a") +#20371=* +stmts(#20371,2,#20001,11,"/a+?/;") +hasLocation(#20371,#20025) +stmtContainers(#20371,#20001) #20372=* -regexpterm(#20372,15,#20366,2,"\x0c") -#20373=@"loc,{#10000},36,6,36,9" -locations_default(#20373,#10000,36,6,36,9) -hasLocation(#20372,#20373) -regexpConstValue(#20372," ") -#20374=* -stmts(#20374,2,#20001,36,"/a{/;") -#20375=@"loc,{#10000},37,1,37,5" -locations_default(#20375,#10000,37,1,37,5) -hasLocation(#20374,#20375) -stmtContainers(#20374,#20001) -#20376=* -exprs(#20376,5,#20374,0,"/a{/") -#20377=@"loc,{#10000},37,1,37,4" -locations_default(#20377,#10000,37,1,37,4) -hasLocation(#20376,#20377) -enclosingStmt(#20376,#20374) -exprContainers(#20376,#20001) -literals("/a{/","/a{/",#20376) +exprs(#20372,5,#20371,0,"/a+?/") +hasLocation(#20372,#20135) +enclosingStmt(#20372,#20371) +exprContainers(#20372,#20001) +literals("/a+?/","/a+?/",#20372) +#20373=* +regexpterm(#20373,9,#20372,0,"a+?") +#20374=@"loc,{#10000},12,2,12,4" +locations_default(#20374,#10000,12,2,12,4) +hasLocation(#20373,#20374) +#20375=* +regexpterm(#20375,14,#20373,0,"a") +#20376=@"loc,{#10000},12,2,12,2" +locations_default(#20376,#10000,12,2,12,2) +hasLocation(#20375,#20376) +regexpConstValue(#20375,"a") +#20377=* +stmts(#20377,2,#20001,12,"/a?/;") +hasLocation(#20377,#20027) +stmtContainers(#20377,#20001) #20378=* -regexpterm(#20378,11,#20376,0,"a{") -#20379=@"loc,{#10000},37,2,37,3" -locations_default(#20379,#10000,37,2,37,3) -hasLocation(#20378,#20379) -isGreedy(#20378) -rangeQuantifierLowerBound(#20378,0) -#20380=* -regexpterm(#20380,14,#20378,0,"a") -#20381=@"loc,{#10000},37,2,37,2" -locations_default(#20381,#10000,37,2,37,2) -hasLocation(#20380,#20381) -regexpConstValue(#20380,"a") -#20382=* -regexpParseErrors(#20382,#20378,"expected digit") -#20383=@"loc,{#10000},37,4,37,4" -locations_default(#20383,#10000,37,4,37,4) -hasLocation(#20382,#20383) +exprs(#20378,5,#20377,0,"/a?/") +hasLocation(#20378,#20139) +enclosingStmt(#20378,#20377) +exprContainers(#20378,#20001) +literals("/a?/","/a?/",#20378) +#20379=* +regexpterm(#20379,10,#20378,0,"a?") +#20380=@"loc,{#10000},13,2,13,3" +locations_default(#20380,#10000,13,2,13,3) +hasLocation(#20379,#20380) +isGreedy(#20379) +#20381=* +regexpterm(#20381,14,#20379,0,"a") +#20382=@"loc,{#10000},13,2,13,2" +locations_default(#20382,#10000,13,2,13,2) +hasLocation(#20381,#20382) +regexpConstValue(#20381,"a") +#20383=* +stmts(#20383,2,#20001,13,"/a??/;") +hasLocation(#20383,#20029) +stmtContainers(#20383,#20001) #20384=* -regexpParseErrors(#20384,#20378,"expected '}'") -#20385=@"loc,{#10000},37,3,37,3" -locations_default(#20385,#10000,37,3,37,3) -hasLocation(#20384,#20385) -#20386=* -stmts(#20386,2,#20001,37,"/a{b}/;") -#20387=@"loc,{#10000},38,1,38,7" -locations_default(#20387,#10000,38,1,38,7) -hasLocation(#20386,#20387) -stmtContainers(#20386,#20001) -#20388=* -exprs(#20388,5,#20386,0,"/a{b}/") -#20389=@"loc,{#10000},38,1,38,6" -locations_default(#20389,#10000,38,1,38,6) -hasLocation(#20388,#20389) -enclosingStmt(#20388,#20386) -exprContainers(#20388,#20001) -literals("/a{b}/","/a{b}/",#20388) +exprs(#20384,5,#20383,0,"/a??/") +hasLocation(#20384,#20143) +enclosingStmt(#20384,#20383) +exprContainers(#20384,#20001) +literals("/a??/","/a??/",#20384) +#20385=* +regexpterm(#20385,10,#20384,0,"a??") +#20386=@"loc,{#10000},14,2,14,4" +locations_default(#20386,#10000,14,2,14,4) +hasLocation(#20385,#20386) +#20387=* +regexpterm(#20387,14,#20385,0,"a") +#20388=@"loc,{#10000},14,2,14,2" +locations_default(#20388,#10000,14,2,14,2) +hasLocation(#20387,#20388) +regexpConstValue(#20387,"a") +#20389=* +stmts(#20389,2,#20001,14,"/a{1}/;") +hasLocation(#20389,#20031) +stmtContainers(#20389,#20001) #20390=* -regexpterm(#20390,1,#20388,0,"a{b}") -#20391=@"loc,{#10000},38,2,38,5" -locations_default(#20391,#10000,38,2,38,5) -hasLocation(#20390,#20391) -#20392=* -regexpterm(#20392,11,#20390,0,"a{") -#20393=@"loc,{#10000},38,2,38,3" -locations_default(#20393,#10000,38,2,38,3) -hasLocation(#20392,#20393) -isGreedy(#20392) -rangeQuantifierLowerBound(#20392,0) -#20394=* -regexpterm(#20394,14,#20392,0,"a") -#20395=@"loc,{#10000},38,2,38,2" -locations_default(#20395,#10000,38,2,38,2) -hasLocation(#20394,#20395) -regexpConstValue(#20394,"a") +exprs(#20390,5,#20389,0,"/a{1}/") +hasLocation(#20390,#20147) +enclosingStmt(#20390,#20389) +exprContainers(#20390,#20001) +literals("/a{1}/","/a{1}/",#20390) +#20391=* +regexpterm(#20391,11,#20390,0,"a{1}") +#20392=@"loc,{#10000},15,2,15,5" +locations_default(#20392,#10000,15,2,15,5) +hasLocation(#20391,#20392) +isGreedy(#20391) +rangeQuantifierLowerBound(#20391,1) +#20393=* +regexpterm(#20393,14,#20391,0,"a") +#20394=@"loc,{#10000},15,2,15,2" +locations_default(#20394,#10000,15,2,15,2) +hasLocation(#20393,#20394) +regexpConstValue(#20393,"a") +#20395=* +stmts(#20395,2,#20001,15,"/a{1,}/;") +hasLocation(#20395,#20033) +stmtContainers(#20395,#20001) #20396=* -regexpterm(#20396,14,#20390,1,"b") -#20397=@"loc,{#10000},38,4,38,4" -locations_default(#20397,#10000,38,4,38,4) -hasLocation(#20396,#20397) -regexpConstValue(#20396,"b") -#20398=* -regexpterm(#20398,14,#20390,2,"}") -#20399=@"loc,{#10000},38,5,38,5" -locations_default(#20399,#10000,38,5,38,5) -hasLocation(#20398,#20399) -regexpConstValue(#20398,"}") -#20400=* -regexpParseErrors(#20400,#20390,"expected digit") -hasLocation(#20400,#20397) +exprs(#20396,5,#20395,0,"/a{1,}/") +hasLocation(#20396,#20151) +enclosingStmt(#20396,#20395) +exprContainers(#20396,#20001) +literals("/a{1,}/","/a{1,}/",#20396) +#20397=* +regexpterm(#20397,11,#20396,0,"a{1,}") +#20398=@"loc,{#10000},16,2,16,6" +locations_default(#20398,#10000,16,2,16,6) +hasLocation(#20397,#20398) +isGreedy(#20397) +rangeQuantifierLowerBound(#20397,1) +#20399=* +regexpterm(#20399,14,#20397,0,"a") +#20400=@"loc,{#10000},16,2,16,2" +locations_default(#20400,#10000,16,2,16,2) +hasLocation(#20399,#20400) +regexpConstValue(#20399,"a") #20401=* -regexpParseErrors(#20401,#20390,"expected '}'") -#20402=@"loc,{#10000},38,3,38,3" -locations_default(#20402,#10000,38,3,38,3) -hasLocation(#20401,#20402) +stmts(#20401,2,#20001,16,"/a{1,2}/;") +hasLocation(#20401,#20035) +stmtContainers(#20401,#20001) +#20402=* +exprs(#20402,5,#20401,0,"/a{1,2}/") +hasLocation(#20402,#20155) +enclosingStmt(#20402,#20401) +exprContainers(#20402,#20001) +literals("/a{1,2}/","/a{1,2}/",#20402) #20403=* -regexpParseErrors(#20403,#20390,"unexpected character") -hasLocation(#20403,#20399) -#20404=* -stmts(#20404,2,#20001,38,"/a{2/;") -#20405=@"loc,{#10000},39,1,39,6" -locations_default(#20405,#10000,39,1,39,6) -hasLocation(#20404,#20405) -stmtContainers(#20404,#20001) -#20406=* -exprs(#20406,5,#20404,0,"/a{2/") -#20407=@"loc,{#10000},39,1,39,5" -locations_default(#20407,#10000,39,1,39,5) -hasLocation(#20406,#20407) -enclosingStmt(#20406,#20404) -exprContainers(#20406,#20001) -literals("/a{2/","/a{2/",#20406) +regexpterm(#20403,11,#20402,0,"a{1,2}") +#20404=@"loc,{#10000},17,2,17,7" +locations_default(#20404,#10000,17,2,17,7) +hasLocation(#20403,#20404) +isGreedy(#20403) +rangeQuantifierLowerBound(#20403,1) +rangeQuantifierUpperBound(#20403,2) +#20405=* +regexpterm(#20405,14,#20403,0,"a") +#20406=@"loc,{#10000},17,2,17,2" +locations_default(#20406,#10000,17,2,17,2) +hasLocation(#20405,#20406) +regexpConstValue(#20405,"a") +#20407=* +stmts(#20407,2,#20001,17,"/a{1}?/;") +hasLocation(#20407,#20037) +stmtContainers(#20407,#20001) #20408=* -regexpterm(#20408,11,#20406,0,"a{2") -#20409=@"loc,{#10000},39,2,39,4" -locations_default(#20409,#10000,39,2,39,4) -hasLocation(#20408,#20409) -isGreedy(#20408) -rangeQuantifierLowerBound(#20408,2) -#20410=* -regexpterm(#20410,14,#20408,0,"a") -#20411=@"loc,{#10000},39,2,39,2" -locations_default(#20411,#10000,39,2,39,2) -hasLocation(#20410,#20411) -regexpConstValue(#20410,"a") -#20412=* -regexpParseErrors(#20412,#20408,"expected '}'") -#20413=@"loc,{#10000},39,4,39,4" -locations_default(#20413,#10000,39,4,39,4) -hasLocation(#20412,#20413) +exprs(#20408,5,#20407,0,"/a{1}?/") +hasLocation(#20408,#20159) +enclosingStmt(#20408,#20407) +exprContainers(#20408,#20001) +literals("/a{1}?/","/a{1}?/",#20408) +#20409=* +regexpterm(#20409,11,#20408,0,"a{1}?") +#20410=@"loc,{#10000},18,2,18,6" +locations_default(#20410,#10000,18,2,18,6) +hasLocation(#20409,#20410) +rangeQuantifierLowerBound(#20409,1) +#20411=* +regexpterm(#20411,14,#20409,0,"a") +#20412=@"loc,{#10000},18,2,18,2" +locations_default(#20412,#10000,18,2,18,2) +hasLocation(#20411,#20412) +regexpConstValue(#20411,"a") +#20413=* +stmts(#20413,2,#20001,18,"/a{1,}?/;") +hasLocation(#20413,#20039) +stmtContainers(#20413,#20001) #20414=* -stmts(#20414,2,#20001,39,"/\xa/;") -#20415=@"loc,{#10000},40,1,40,6" -locations_default(#20415,#10000,40,1,40,6) -hasLocation(#20414,#20415) -stmtContainers(#20414,#20001) -#20416=* -exprs(#20416,5,#20414,0,"/\xa/") -#20417=@"loc,{#10000},40,1,40,5" -locations_default(#20417,#10000,40,1,40,5) -hasLocation(#20416,#20417) -enclosingStmt(#20416,#20414) -exprContainers(#20416,#20001) -literals("/\xa/","/\xa/",#20416) -#20418=* -regexpterm(#20418,15,#20416,0,"\xa") -#20419=@"loc,{#10000},40,2,40,4" -locations_default(#20419,#10000,40,2,40,4) -hasLocation(#20418,#20419) -regexpConstValue(#20418," -") +exprs(#20414,5,#20413,0,"/a{1,}?/") +hasLocation(#20414,#20163) +enclosingStmt(#20414,#20413) +exprContainers(#20414,#20001) +literals("/a{1,}?/","/a{1,}?/",#20414) +#20415=* +regexpterm(#20415,11,#20414,0,"a{1,}?") +#20416=@"loc,{#10000},19,2,19,7" +locations_default(#20416,#10000,19,2,19,7) +hasLocation(#20415,#20416) +rangeQuantifierLowerBound(#20415,1) +#20417=* +regexpterm(#20417,14,#20415,0,"a") +#20418=@"loc,{#10000},19,2,19,2" +locations_default(#20418,#10000,19,2,19,2) +hasLocation(#20417,#20418) +regexpConstValue(#20417,"a") +#20419=* +stmts(#20419,2,#20001,19,"/a{1,2}?/;") +hasLocation(#20419,#20041) +stmtContainers(#20419,#20001) #20420=* -regexpParseErrors(#20420,#20418,"unexpected end of regular expression") -#20421=@"loc,{#10000},40,5,40,5" -locations_default(#20421,#10000,40,5,40,5) -hasLocation(#20420,#20421) -#20422=* -stmts(#20422,2,#20001,40,"/\c0/;") -#20423=@"loc,{#10000},41,1,41,6" -locations_default(#20423,#10000,41,1,41,6) -hasLocation(#20422,#20423) -stmtContainers(#20422,#20001) -#20424=* -exprs(#20424,5,#20422,0,"/\c0/") -#20425=@"loc,{#10000},41,1,41,5" -locations_default(#20425,#10000,41,1,41,5) -hasLocation(#20424,#20425) -enclosingStmt(#20424,#20422) -exprContainers(#20424,#20001) -literals("/\c0/","/\c0/",#20424) +exprs(#20420,5,#20419,0,"/a{1,2}?/") +hasLocation(#20420,#20167) +enclosingStmt(#20420,#20419) +exprContainers(#20420,#20001) +literals("/a{1,2}?/","/a{1,2}?/",#20420) +#20421=* +regexpterm(#20421,11,#20420,0,"a{1,2}?") +#20422=@"loc,{#10000},20,2,20,8" +locations_default(#20422,#10000,20,2,20,8) +hasLocation(#20421,#20422) +rangeQuantifierLowerBound(#20421,1) +rangeQuantifierUpperBound(#20421,2) +#20423=* +regexpterm(#20423,14,#20421,0,"a") +#20424=@"loc,{#10000},20,2,20,2" +locations_default(#20424,#10000,20,2,20,2) +hasLocation(#20423,#20424) +regexpConstValue(#20423,"a") +#20425=* +stmts(#20425,2,#20001,20,"/./;") +hasLocation(#20425,#20043) +stmtContainers(#20425,#20001) #20426=* -regexpterm(#20426,19,#20424,0,"\c0") -#20427=@"loc,{#10000},41,2,41,4" -locations_default(#20427,#10000,41,2,41,4) -hasLocation(#20426,#20427) -regexpConstValue(#20426,"") -#20428=* -regexpParseErrors(#20428,#20426,"expected control letter") -#20429=@"loc,{#10000},41,4,41,4" -locations_default(#20429,#10000,41,4,41,4) -hasLocation(#20428,#20429) +exprs(#20426,5,#20425,0,"/./") +hasLocation(#20426,#20171) +enclosingStmt(#20426,#20425) +exprContainers(#20426,#20001) +literals("/./","/./",#20426) +#20427=* +regexpterm(#20427,12,#20426,0,".") +#20428=@"loc,{#10000},21,2,21,2" +locations_default(#20428,#10000,21,2,21,2) +hasLocation(#20427,#20428) +#20429=* +stmts(#20429,2,#20001,21,"/(abc)/;") +hasLocation(#20429,#20045) +stmtContainers(#20429,#20001) #20430=* -stmts(#20430,2,#20001,41,"/[]/;") -#20431=@"loc,{#10000},42,1,42,5" -locations_default(#20431,#10000,42,1,42,5) -hasLocation(#20430,#20431) -stmtContainers(#20430,#20001) -#20432=* -exprs(#20432,5,#20430,0,"/[]/") -#20433=@"loc,{#10000},42,1,42,4" -locations_default(#20433,#10000,42,1,42,4) -hasLocation(#20432,#20433) -enclosingStmt(#20432,#20430) -exprContainers(#20432,#20001) -literals("/[]/","/[]/",#20432) -#20434=* -regexpterm(#20434,23,#20432,0,"[]") -#20435=@"loc,{#10000},42,2,42,3" -locations_default(#20435,#10000,42,2,42,3) -hasLocation(#20434,#20435) -#20436=* -stmts(#20436,2,#20001,42,"/[^]/;") -#20437=@"loc,{#10000},43,1,43,6" -locations_default(#20437,#10000,43,1,43,6) -hasLocation(#20436,#20437) -stmtContainers(#20436,#20001) -#20438=* -exprs(#20438,5,#20436,0,"/[^]/") -#20439=@"loc,{#10000},43,1,43,5" -locations_default(#20439,#10000,43,1,43,5) -hasLocation(#20438,#20439) -enclosingStmt(#20438,#20436) -exprContainers(#20438,#20001) -literals("/[^]/","/[^]/",#20438) -#20440=* -regexpterm(#20440,23,#20438,0,"[^]") -#20441=@"loc,{#10000},43,2,43,4" -locations_default(#20441,#10000,43,2,43,4) -hasLocation(#20440,#20441) -isInverted(#20440) +exprs(#20430,5,#20429,0,"/(abc)/") +hasLocation(#20430,#20175) +enclosingStmt(#20430,#20429) +exprContainers(#20430,#20001) +literals("/(abc)/","/(abc)/",#20430) +#20431=* +regexpterm(#20431,13,#20430,0,"(abc)") +#20432=@"loc,{#10000},22,2,22,6" +locations_default(#20432,#10000,22,2,22,6) +hasLocation(#20431,#20432) +isCapture(#20431,1) +#20433=* +regexpterm(#20433,1,#20431,0,"abc") +#20434=@"loc,{#10000},22,3,22,5" +locations_default(#20434,#10000,22,3,22,5) +hasLocation(#20433,#20434) +#20435=* +regexpterm(#20435,14,#20433,0,"a") +#20436=@"loc,{#10000},22,3,22,3" +locations_default(#20436,#10000,22,3,22,3) +hasLocation(#20435,#20436) +regexpConstValue(#20435,"a") +#20437=* +regexpterm(#20437,14,#20433,1,"b") +#20438=@"loc,{#10000},22,4,22,4" +locations_default(#20438,#10000,22,4,22,4) +hasLocation(#20437,#20438) +regexpConstValue(#20437,"b") +#20439=* +regexpterm(#20439,14,#20433,2,"c") +#20440=@"loc,{#10000},22,5,22,5" +locations_default(#20440,#10000,22,5,22,5) +hasLocation(#20439,#20440) +regexpConstValue(#20439,"c") +#20441=* +stmts(#20441,2,#20001,22,"/(?:abc)/;") +hasLocation(#20441,#20047) +stmtContainers(#20441,#20001) #20442=* -stmts(#20442,2,#20001,43,"//;") -#20443=@"loc,{#10000},44,1,44,60" -locations_default(#20443,#10000,44,1,44,60) -hasLocation(#20442,#20443) -stmtContainers(#20442,#20001) -#20444=* -exprs(#20444,5,#20442,0,"//") -#20445=@"loc,{#10000},44,1,44,59" -locations_default(#20445,#10000,44,1,44,59) -hasLocation(#20444,#20445) -enclosingStmt(#20444,#20442) -exprContainers(#20444,#20001) -literals("/]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/","/]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/",#20444) -#20446=* -regexpterm(#20446,1,#20444,0,"]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>") -#20447=@"loc,{#10000},44,2,44,58" -locations_default(#20447,#10000,44,2,44,58) -hasLocation(#20446,#20447) -#20448=* -regexpterm(#20448,14,#20446,0,"<") -#20449=@"loc,{#10000},44,2,44,2" -locations_default(#20449,#10000,44,2,44,2) -hasLocation(#20448,#20449) -regexpConstValue(#20448,"<") -#20450=* -regexpterm(#20450,14,#20446,1,"t") -#20451=@"loc,{#10000},44,3,44,3" -locations_default(#20451,#10000,44,3,44,3) -hasLocation(#20450,#20451) -regexpConstValue(#20450,"t") -#20452=* -regexpterm(#20452,14,#20446,2,"p") -#20453=@"loc,{#10000},44,4,44,4" -locations_default(#20453,#10000,44,4,44,4) -hasLocation(#20452,#20453) -regexpConstValue(#20452,"p") +exprs(#20442,5,#20441,0,"/(?:abc)/") +hasLocation(#20442,#20179) +enclosingStmt(#20442,#20441) +exprContainers(#20442,#20001) +literals("/(?:abc)/","/(?:abc)/",#20442) +#20443=* +regexpterm(#20443,13,#20442,0,"(?:abc)") +#20444=@"loc,{#10000},23,2,23,8" +locations_default(#20444,#10000,23,2,23,8) +hasLocation(#20443,#20444) +#20445=* +regexpterm(#20445,1,#20443,0,"abc") +#20446=@"loc,{#10000},23,5,23,7" +locations_default(#20446,#10000,23,5,23,7) +hasLocation(#20445,#20446) +#20447=* +regexpterm(#20447,14,#20445,0,"a") +#20448=@"loc,{#10000},23,5,23,5" +locations_default(#20448,#10000,23,5,23,5) +hasLocation(#20447,#20448) +regexpConstValue(#20447,"a") +#20449=* +regexpterm(#20449,14,#20445,1,"b") +#20450=@"loc,{#10000},23,6,23,6" +locations_default(#20450,#10000,23,6,23,6) +hasLocation(#20449,#20450) +regexpConstValue(#20449,"b") +#20451=* +regexpterm(#20451,14,#20445,2,"c") +#20452=@"loc,{#10000},23,7,23,7" +locations_default(#20452,#10000,23,7,23,7) +hasLocation(#20451,#20452) +regexpConstValue(#20451,"c") +#20453=* +stmts(#20453,2,#20001,23,"/\x0a/;") +hasLocation(#20453,#20049) +stmtContainers(#20453,#20001) #20454=* -regexpterm(#20454,14,#20446,3,"l") -#20455=@"loc,{#10000},44,5,44,5" -locations_default(#20455,#10000,44,5,44,5) -hasLocation(#20454,#20455) -regexpConstValue(#20454,"l") -#20456=* -regexpterm(#20456,4,#20446,4,"\b") -#20457=@"loc,{#10000},44,6,44,7" -locations_default(#20457,#10000,44,6,44,7) -hasLocation(#20456,#20457) +exprs(#20454,5,#20453,0,"/\x0a/") +hasLocation(#20454,#20183) +enclosingStmt(#20454,#20453) +exprContainers(#20454,#20001) +literals("/\x0a/","/\x0a/",#20454) +#20455=* +regexpterm(#20455,15,#20454,0,"\x0a") +#20456=@"loc,{#10000},24,2,24,5" +locations_default(#20456,#10000,24,2,24,5) +hasLocation(#20455,#20456) +regexpConstValue(#20455," +") +#20457=* +stmts(#20457,2,#20001,24,"/\u000a/;") +hasLocation(#20457,#20051) +stmtContainers(#20457,#20001) #20458=* -regexpterm(#20458,8,#20446,5,"[^>]*") -#20459=@"loc,{#10000},44,8,44,12" -locations_default(#20459,#10000,44,8,44,12) -hasLocation(#20458,#20459) -isGreedy(#20458) -#20460=* -regexpterm(#20460,23,#20458,0,"[^>]") -#20461=@"loc,{#10000},44,8,44,11" -locations_default(#20461,#10000,44,8,44,11) -hasLocation(#20460,#20461) -isInverted(#20460) +exprs(#20458,5,#20457,0,"/\u000a/") +hasLocation(#20458,#20187) +enclosingStmt(#20458,#20457) +exprContainers(#20458,#20001) +literals("/\u000a/","/\u000a/",#20458) +#20459=* +regexpterm(#20459,16,#20458,0,"\u000a") +#20460=@"loc,{#10000},25,2,25,7" +locations_default(#20460,#10000,25,2,25,7) +hasLocation(#20459,#20460) +regexpConstValue(#20459," +") +#20461=* +stmts(#20461,2,#20001,25,"/\10/;") +hasLocation(#20461,#20053) +stmtContainers(#20461,#20001) #20462=* -regexpterm(#20462,14,#20460,0,">") -#20463=@"loc,{#10000},44,10,44,10" -locations_default(#20463,#10000,44,10,44,10) -hasLocation(#20462,#20463) -regexpConstValue(#20462,">") -#20464=* -regexpterm(#20464,14,#20446,6,">") -#20465=@"loc,{#10000},44,13,44,13" -locations_default(#20465,#10000,44,13,44,13) -hasLocation(#20464,#20465) -regexpConstValue(#20464,">") +exprs(#20462,5,#20461,0,"/\10/") +hasLocation(#20462,#20191) +enclosingStmt(#20462,#20461) +exprContainers(#20462,#20001) +literals("/\10/","/\10/",#20462) +#20463=* +regexpterm(#20463,22,#20462,0,"\10") +#20464=@"loc,{#10000},26,2,26,4" +locations_default(#20464,#10000,26,2,26,4) +hasLocation(#20463,#20464) +backref(#20463,10) +#20465=* +regexpParseErrors(#20465,#20463,"invalid back reference") +hasLocation(#20465,#20464) #20466=* -regexpterm(#20466,13,#20446,7,"((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)") -#20467=@"loc,{#10000},44,14,44,51" -locations_default(#20467,#10000,44,14,44,51) -hasLocation(#20466,#20467) -isCapture(#20466,1) +stmts(#20466,2,#20001,26,"/\t\n\r\f\v/;") +hasLocation(#20466,#20055) +stmtContainers(#20466,#20001) +#20467=* +exprs(#20467,5,#20466,0,"/\t\n\r\f\v/") +hasLocation(#20467,#20195) +enclosingStmt(#20467,#20466) +exprContainers(#20467,#20001) +literals("/\t\n\r\f\v/","/\t\n\r\f\v/",#20467) #20468=* -regexpterm(#20468,8,#20466,0,"(?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?") -#20469=@"loc,{#10000},44,15,44,50" -locations_default(#20469,#10000,44,15,44,50) +regexpterm(#20468,1,#20467,0,"\t\n\r\f\v") +#20469=@"loc,{#10000},27,2,27,11" +locations_default(#20469,#10000,27,2,27,11) hasLocation(#20468,#20469) #20470=* -regexpterm(#20470,13,#20468,0,"(?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))") -#20471=@"loc,{#10000},44,15,44,48" -locations_default(#20471,#10000,44,15,44,48) +regexpterm(#20470,19,#20468,0,"\t") +#20471=@"loc,{#10000},27,2,27,3" +locations_default(#20471,#10000,27,2,27,3) hasLocation(#20470,#20471) +regexpConstValue(#20470," ") #20472=* -regexpterm(#20472,0,#20470,0,"(?=([^<]+))\2|<(?!tpl\b[^>]*>)") -#20473=@"loc,{#10000},44,18,44,47" -locations_default(#20473,#10000,44,18,44,47) +regexpterm(#20472,19,#20468,1,"\n") +#20473=@"loc,{#10000},27,4,27,5" +locations_default(#20473,#10000,27,4,27,5) hasLocation(#20472,#20473) +regexpConstValue(#20472," +") #20474=* -regexpterm(#20474,1,#20472,0,"(?=([^<]+))\2") -#20475=@"loc,{#10000},44,18,44,30" -locations_default(#20475,#10000,44,18,44,30) +regexpterm(#20474,19,#20468,2,"\r") +#20475=@"loc,{#10000},27,6,27,7" +locations_default(#20475,#10000,27,6,27,7) hasLocation(#20474,#20475) +regexpConstValue(#20474," ") #20476=* -regexpterm(#20476,6,#20474,0,"(?=([^<]+))") -#20477=@"loc,{#10000},44,18,44,28" -locations_default(#20477,#10000,44,18,44,28) +regexpterm(#20476,19,#20468,3,"\f") +#20477=@"loc,{#10000},27,8,27,9" +locations_default(#20477,#10000,27,8,27,9) hasLocation(#20476,#20477) +regexpConstValue(#20476," ") #20478=* -regexpterm(#20478,13,#20476,0,"([^<]+)") -#20479=@"loc,{#10000},44,21,44,27" -locations_default(#20479,#10000,44,21,44,27) +regexpterm(#20478,19,#20468,4,"\v") +#20479=@"loc,{#10000},27,10,27,11" +locations_default(#20479,#10000,27,10,27,11) hasLocation(#20478,#20479) -isCapture(#20478,2) +regexpConstValue(#20478," ") #20480=* -regexpterm(#20480,9,#20478,0,"[^<]+") -#20481=@"loc,{#10000},44,22,44,26" -locations_default(#20481,#10000,44,22,44,26) -hasLocation(#20480,#20481) -isGreedy(#20480) +stmts(#20480,2,#20001,27,"/\ca\cN/;") +hasLocation(#20480,#20057) +stmtContainers(#20480,#20001) +#20481=* +exprs(#20481,5,#20480,0,"/\ca\cN/") +hasLocation(#20481,#20199) +enclosingStmt(#20481,#20480) +exprContainers(#20481,#20001) +literals("/\ca\cN/","/\ca\cN/",#20481) #20482=* -regexpterm(#20482,23,#20480,0,"[^<]") -#20483=@"loc,{#10000},44,22,44,25" -locations_default(#20483,#10000,44,22,44,25) +regexpterm(#20482,1,#20481,0,"\ca\cN") +#20483=@"loc,{#10000},28,2,28,7" +locations_default(#20483,#10000,28,2,28,7) hasLocation(#20482,#20483) -isInverted(#20482) #20484=* -regexpterm(#20484,14,#20482,0,"<") -#20485=@"loc,{#10000},44,24,44,24" -locations_default(#20485,#10000,44,24,44,24) +regexpterm(#20484,19,#20482,0,"\ca") +#20485=@"loc,{#10000},28,2,28,4" +locations_default(#20485,#10000,28,2,28,4) hasLocation(#20484,#20485) -regexpConstValue(#20484,"<") +regexpConstValue(#20484,"") #20486=* -regexpterm(#20486,22,#20474,1,"\2") -#20487=@"loc,{#10000},44,29,44,30" -locations_default(#20487,#10000,44,29,44,30) +regexpterm(#20486,19,#20482,1,"\cN") +#20487=@"loc,{#10000},28,5,28,7" +locations_default(#20487,#10000,28,5,28,7) hasLocation(#20486,#20487) -backref(#20486,2) +regexpConstValue(#20486,"") #20488=* -regexpterm(#20488,1,#20472,1,"<(?!tpl\b[^>]*>)") -#20489=@"loc,{#10000},44,32,44,47" -locations_default(#20489,#10000,44,32,44,47) -hasLocation(#20488,#20489) +stmts(#20488,2,#20001,28,"/\w\S/;") +hasLocation(#20488,#20059) +stmtContainers(#20488,#20001) +#20489=* +exprs(#20489,5,#20488,0,"/\w\S/") +hasLocation(#20489,#20203) +enclosingStmt(#20489,#20488) +exprContainers(#20489,#20001) +literals("/\w\S/","/\w\S/",#20489) #20490=* -regexpterm(#20490,14,#20488,0,"<") -#20491=@"loc,{#10000},44,32,44,32" -locations_default(#20491,#10000,44,32,44,32) +regexpterm(#20490,1,#20489,0,"\w\S") +#20491=@"loc,{#10000},29,2,29,5" +locations_default(#20491,#10000,29,2,29,5) hasLocation(#20490,#20491) -regexpConstValue(#20490,"<") #20492=* -regexpterm(#20492,7,#20488,1,"(?!tpl\b[^>]*>)") -#20493=@"loc,{#10000},44,33,44,47" -locations_default(#20493,#10000,44,33,44,47) +regexpterm(#20492,20,#20490,0,"\w") +#20493=@"loc,{#10000},29,2,29,3" +locations_default(#20493,#10000,29,2,29,3) hasLocation(#20492,#20493) +charClassEscape(#20492,"w") #20494=* -regexpterm(#20494,1,#20492,0,"tpl\b[^>]*>") -#20495=@"loc,{#10000},44,36,44,46" -locations_default(#20495,#10000,44,36,44,46) +regexpterm(#20494,20,#20490,1,"\S") +#20495=@"loc,{#10000},29,4,29,5" +locations_default(#20495,#10000,29,4,29,5) hasLocation(#20494,#20495) +charClassEscape(#20494,"S") #20496=* -regexpterm(#20496,14,#20494,0,"t") -#20497=@"loc,{#10000},44,36,44,36" -locations_default(#20497,#10000,44,36,44,36) -hasLocation(#20496,#20497) -regexpConstValue(#20496,"t") +stmts(#20496,2,#20001,29,"/\\/;") +hasLocation(#20496,#20061) +stmtContainers(#20496,#20001) +#20497=* +exprs(#20497,5,#20496,0,"/\\/") +hasLocation(#20497,#20207) +enclosingStmt(#20497,#20496) +exprContainers(#20497,#20001) +literals("/\\/","/\\/",#20497) #20498=* -regexpterm(#20498,14,#20494,1,"p") -#20499=@"loc,{#10000},44,37,44,37" -locations_default(#20499,#10000,44,37,44,37) +regexpterm(#20498,21,#20497,0,"\\") +#20499=@"loc,{#10000},30,2,30,3" +locations_default(#20499,#10000,30,2,30,3) hasLocation(#20498,#20499) -regexpConstValue(#20498,"p") +regexpConstValue(#20498,"\") #20500=* -regexpterm(#20500,14,#20494,2,"l") -#20501=@"loc,{#10000},44,38,44,38" -locations_default(#20501,#10000,44,38,44,38) -hasLocation(#20500,#20501) -regexpConstValue(#20500,"l") +stmts(#20500,2,#20001,30,"/[abc]/;") +hasLocation(#20500,#20063) +stmtContainers(#20500,#20001) +#20501=* +exprs(#20501,5,#20500,0,"/[abc]/") +hasLocation(#20501,#20211) +enclosingStmt(#20501,#20500) +exprContainers(#20501,#20001) +literals("/[abc]/","/[abc]/",#20501) #20502=* -regexpterm(#20502,4,#20494,3,"\b") -#20503=@"loc,{#10000},44,39,44,40" -locations_default(#20503,#10000,44,39,44,40) +regexpterm(#20502,23,#20501,0,"[abc]") +#20503=@"loc,{#10000},31,2,31,6" +locations_default(#20503,#10000,31,2,31,6) hasLocation(#20502,#20503) #20504=* -regexpterm(#20504,8,#20494,4,"[^>]*") -#20505=@"loc,{#10000},44,41,44,45" -locations_default(#20505,#10000,44,41,44,45) +regexpterm(#20504,14,#20502,0,"a") +#20505=@"loc,{#10000},31,3,31,3" +locations_default(#20505,#10000,31,3,31,3) hasLocation(#20504,#20505) -isGreedy(#20504) +regexpConstValue(#20504,"a") #20506=* -regexpterm(#20506,23,#20504,0,"[^>]") -#20507=@"loc,{#10000},44,41,44,44" -locations_default(#20507,#10000,44,41,44,44) +regexpterm(#20506,14,#20502,1,"b") +#20507=@"loc,{#10000},31,4,31,4" +locations_default(#20507,#10000,31,4,31,4) hasLocation(#20506,#20507) -isInverted(#20506) +regexpConstValue(#20506,"b") #20508=* -regexpterm(#20508,14,#20506,0,">") -#20509=@"loc,{#10000},44,43,44,43" -locations_default(#20509,#10000,44,43,44,43) +regexpterm(#20508,14,#20502,2,"c") +#20509=@"loc,{#10000},31,5,31,5" +locations_default(#20509,#10000,31,5,31,5) hasLocation(#20508,#20509) -regexpConstValue(#20508,">") +regexpConstValue(#20508,"c") #20510=* -regexpterm(#20510,14,#20494,5,">") -#20511=@"loc,{#10000},44,46,44,46" -locations_default(#20511,#10000,44,46,44,46) -hasLocation(#20510,#20511) -regexpConstValue(#20510,">") +stmts(#20510,2,#20001,31,"/[a-z]/;") +hasLocation(#20510,#20065) +stmtContainers(#20510,#20001) +#20511=* +exprs(#20511,5,#20510,0,"/[a-z]/") +hasLocation(#20511,#20215) +enclosingStmt(#20511,#20510) +exprContainers(#20511,#20001) +literals("/[a-z]/","/[a-z]/",#20511) #20512=* -regexpterm(#20512,14,#20446,8,"<") -#20513=@"loc,{#10000},44,52,44,52" -locations_default(#20513,#10000,44,52,44,52) +regexpterm(#20512,23,#20511,0,"[a-z]") +#20513=@"loc,{#10000},32,2,32,6" +locations_default(#20513,#10000,32,2,32,6) hasLocation(#20512,#20513) -regexpConstValue(#20512,"<") #20514=* -regexpterm(#20514,21,#20446,9,"\/") -#20515=@"loc,{#10000},44,53,44,54" -locations_default(#20515,#10000,44,53,44,54) +regexpterm(#20514,24,#20512,0,"a-z") +#20515=@"loc,{#10000},32,3,32,5" +locations_default(#20515,#10000,32,3,32,5) hasLocation(#20514,#20515) -regexpConstValue(#20514,"/") #20516=* -regexpterm(#20516,14,#20446,10,"t") -#20517=@"loc,{#10000},44,55,44,55" -locations_default(#20517,#10000,44,55,44,55) +regexpterm(#20516,14,#20514,0,"a") +#20517=@"loc,{#10000},32,3,32,3" +locations_default(#20517,#10000,32,3,32,3) hasLocation(#20516,#20517) -regexpConstValue(#20516,"t") +regexpConstValue(#20516,"a") #20518=* -regexpterm(#20518,14,#20446,11,"p") -#20519=@"loc,{#10000},44,56,44,56" -locations_default(#20519,#10000,44,56,44,56) +regexpterm(#20518,14,#20514,1,"z") +#20519=@"loc,{#10000},32,5,32,5" +locations_default(#20519,#10000,32,5,32,5) hasLocation(#20518,#20519) -regexpConstValue(#20518,"p") +regexpConstValue(#20518,"z") #20520=* -regexpterm(#20520,14,#20446,12,"l") -#20521=@"loc,{#10000},44,57,44,57" -locations_default(#20521,#10000,44,57,44,57) -hasLocation(#20520,#20521) -regexpConstValue(#20520,"l") +stmts(#20520,2,#20001,32,"/[a-zA-Z]/;") +hasLocation(#20520,#20067) +stmtContainers(#20520,#20001) +#20521=* +exprs(#20521,5,#20520,0,"/[a-zA-Z]/") +hasLocation(#20521,#20219) +enclosingStmt(#20521,#20520) +exprContainers(#20521,#20001) +literals("/[a-zA-Z]/","/[a-zA-Z]/",#20521) #20522=* -regexpterm(#20522,14,#20446,13,">") -#20523=@"loc,{#10000},44,58,44,58" -locations_default(#20523,#10000,44,58,44,58) +regexpterm(#20522,23,#20521,0,"[a-zA-Z]") +#20523=@"loc,{#10000},33,2,33,9" +locations_default(#20523,#10000,33,2,33,9) hasLocation(#20522,#20523) -regexpConstValue(#20522,">") #20524=* -lines(#20524,#20001,"/t/;"," -") -hasLocation(#20524,#20004) -#20525=* -lines(#20525,#20001,"/foo|bar/;"," -") -hasLocation(#20525,#20010) +regexpterm(#20524,24,#20522,0,"a-z") +#20525=@"loc,{#10000},33,3,33,5" +locations_default(#20525,#10000,33,3,33,5) +hasLocation(#20524,#20525) #20526=* -lines(#20526,#20001,"/(?:)/;"," -") -hasLocation(#20526,#20032) -#20527=* -lines(#20527,#20001,"/^abc$/;"," -") -hasLocation(#20527,#20040) +regexpterm(#20526,14,#20524,0,"a") +#20527=@"loc,{#10000},33,3,33,3" +locations_default(#20527,#10000,33,3,33,3) +hasLocation(#20526,#20527) +regexpConstValue(#20526,"a") #20528=* -lines(#20528,#20001,"/\bx\b/;"," -") -hasLocation(#20528,#20056) -#20529=* -lines(#20529,#20001,"/\bx\B/;"," -") -hasLocation(#20529,#20068) +regexpterm(#20528,14,#20524,1,"z") +#20529=@"loc,{#10000},33,5,33,5" +locations_default(#20529,#10000,33,5,33,5) +hasLocation(#20528,#20529) +regexpConstValue(#20528,"z") #20530=* -lines(#20530,#20001,"/x(?=y)/;"," -") -hasLocation(#20530,#20080) -#20531=* -lines(#20531,#20001,"/x(?!z)/;"," -") -hasLocation(#20531,#20092) +regexpterm(#20530,24,#20522,1,"A-Z") +#20531=@"loc,{#10000},33,6,33,8" +locations_default(#20531,#10000,33,6,33,8) +hasLocation(#20530,#20531) #20532=* -lines(#20532,#20001,"/a*/;"," -") -hasLocation(#20532,#20104) -#20533=* -lines(#20533,#20001,"/a*?/;"," -") -hasLocation(#20533,#20112) +regexpterm(#20532,14,#20530,0,"A") +#20533=@"loc,{#10000},33,6,33,6" +locations_default(#20533,#10000,33,6,33,6) +hasLocation(#20532,#20533) +regexpConstValue(#20532,"A") #20534=* -lines(#20534,#20001,"/a+/;"," -") -hasLocation(#20534,#20120) -#20535=* -lines(#20535,#20001,"/a+?/;"," -") -hasLocation(#20535,#20128) +regexpterm(#20534,14,#20530,1,"Z") +#20535=@"loc,{#10000},33,8,33,8" +locations_default(#20535,#10000,33,8,33,8) +hasLocation(#20534,#20535) +regexpConstValue(#20534,"Z") #20536=* -lines(#20536,#20001,"/a?/;"," -") -hasLocation(#20536,#20136) +stmts(#20536,2,#20001,33,"/[-a-z]/;") +hasLocation(#20536,#20069) +stmtContainers(#20536,#20001) #20537=* -lines(#20537,#20001,"/a??/;"," -") -hasLocation(#20537,#20144) +exprs(#20537,5,#20536,0,"/[-a-z]/") +hasLocation(#20537,#20223) +enclosingStmt(#20537,#20536) +exprContainers(#20537,#20001) +literals("/[-a-z]/","/[-a-z]/",#20537) #20538=* -lines(#20538,#20001,"/a{1}/;"," -") -hasLocation(#20538,#20152) -#20539=* -lines(#20539,#20001,"/a{1,}/;"," -") -hasLocation(#20539,#20160) +regexpterm(#20538,23,#20537,0,"[-a-z]") +#20539=@"loc,{#10000},34,2,34,7" +locations_default(#20539,#10000,34,2,34,7) +hasLocation(#20538,#20539) #20540=* -lines(#20540,#20001,"/a{1,2}/;"," -") -hasLocation(#20540,#20168) -#20541=* -lines(#20541,#20001,"/a{1}?/;"," -") -hasLocation(#20541,#20176) +regexpterm(#20540,14,#20538,0,"-") +#20541=@"loc,{#10000},34,3,34,3" +locations_default(#20541,#10000,34,3,34,3) +hasLocation(#20540,#20541) +regexpConstValue(#20540,"-") #20542=* -lines(#20542,#20001,"/a{1,}?/;"," -") -hasLocation(#20542,#20184) -#20543=* -lines(#20543,#20001,"/a{1,2}?/;"," -") -hasLocation(#20543,#20192) +regexpterm(#20542,24,#20538,1,"a-z") +#20543=@"loc,{#10000},34,4,34,6" +locations_default(#20543,#10000,34,4,34,6) +hasLocation(#20542,#20543) #20544=* -lines(#20544,#20001,"/./;"," -") -hasLocation(#20544,#20200) -#20545=* -lines(#20545,#20001,"/(abc)/;"," -") -hasLocation(#20545,#20206) +regexpterm(#20544,14,#20542,0,"a") +#20545=@"loc,{#10000},34,4,34,4" +locations_default(#20545,#10000,34,4,34,4) +hasLocation(#20544,#20545) +regexpConstValue(#20544,"a") #20546=* -lines(#20546,#20001,"/(?:abc)/;"," -") -hasLocation(#20546,#20220) -#20547=* -lines(#20547,#20001,"/\x0a/;"," -") -hasLocation(#20547,#20234) +regexpterm(#20546,14,#20542,1,"z") +#20547=@"loc,{#10000},34,6,34,6" +locations_default(#20547,#10000,34,6,34,6) +hasLocation(#20546,#20547) +regexpConstValue(#20546,"z") #20548=* -lines(#20548,#20001,"/\u000a/;"," -") -hasLocation(#20548,#20240) +stmts(#20548,2,#20001,34,"/[^a-z]/;") +hasLocation(#20548,#20071) +stmtContainers(#20548,#20001) #20549=* -lines(#20549,#20001,"/\10/;"," -") -hasLocation(#20549,#20246) +exprs(#20549,5,#20548,0,"/[^a-z]/") +hasLocation(#20549,#20227) +enclosingStmt(#20549,#20548) +exprContainers(#20549,#20001) +literals("/[^a-z]/","/[^a-z]/",#20549) #20550=* -lines(#20550,#20001,"/\t\n\r\f\v/;"," -") -hasLocation(#20550,#20253) -#20551=* -lines(#20551,#20001,"/\ca\cN/;"," -") -hasLocation(#20551,#20269) +regexpterm(#20550,23,#20549,0,"[^a-z]") +#20551=@"loc,{#10000},35,2,35,7" +locations_default(#20551,#10000,35,2,35,7) +hasLocation(#20550,#20551) +isInverted(#20550) #20552=* -lines(#20552,#20001,"/\w\S/;"," -") -hasLocation(#20552,#20279) -#20553=* -lines(#20553,#20001,"/\\/;"," -") -hasLocation(#20553,#20289) +regexpterm(#20552,24,#20550,0,"a-z") +#20553=@"loc,{#10000},35,4,35,6" +locations_default(#20553,#10000,35,4,35,6) +hasLocation(#20552,#20553) #20554=* -lines(#20554,#20001,"/[abc]/;"," -") -hasLocation(#20554,#20295) -#20555=* -lines(#20555,#20001,"/[a-z]/;"," -") -hasLocation(#20555,#20307) +regexpterm(#20554,14,#20552,0,"a") +#20555=@"loc,{#10000},35,4,35,4" +locations_default(#20555,#10000,35,4,35,4) +hasLocation(#20554,#20555) +regexpConstValue(#20554,"a") #20556=* -lines(#20556,#20001,"/[a-zA-Z]/;"," -") -hasLocation(#20556,#20319) -#20557=* -lines(#20557,#20001,"/[-a-z]/;"," -") -hasLocation(#20557,#20337) +regexpterm(#20556,14,#20552,1,"z") +#20557=@"loc,{#10000},35,6,35,6" +locations_default(#20557,#10000,35,6,35,6) +hasLocation(#20556,#20557) +regexpConstValue(#20556,"z") #20558=* -lines(#20558,#20001,"/[^a-z]/;"," -") -hasLocation(#20558,#20351) +stmts(#20558,2,#20001,35,"/[a\b\x0c]/;") +hasLocation(#20558,#20073) +stmtContainers(#20558,#20001) #20559=* -lines(#20559,#20001,"/[a\b\x0c]/;"," -") -hasLocation(#20559,#20363) +exprs(#20559,5,#20558,0,"/[a\b\x0c]/") +hasLocation(#20559,#20231) +enclosingStmt(#20559,#20558) +exprContainers(#20559,#20001) +literals("/[a\b\x0c]/","/[a\b\x0c]/",#20559) #20560=* -lines(#20560,#20001,"/a{/;"," -") -hasLocation(#20560,#20375) -#20561=* -lines(#20561,#20001,"/a{b}/;"," -") -hasLocation(#20561,#20387) +regexpterm(#20560,23,#20559,0,"[a\b\x0c]") +#20561=@"loc,{#10000},36,2,36,10" +locations_default(#20561,#10000,36,2,36,10) +hasLocation(#20560,#20561) #20562=* -lines(#20562,#20001,"/a{2/;"," -") -hasLocation(#20562,#20405) -#20563=* -lines(#20563,#20001,"/\xa/;"," -") -hasLocation(#20563,#20415) +regexpterm(#20562,14,#20560,0,"a") +#20563=@"loc,{#10000},36,3,36,3" +locations_default(#20563,#10000,36,3,36,3) +hasLocation(#20562,#20563) +regexpConstValue(#20562,"a") #20564=* -lines(#20564,#20001,"/\c0/;"," -") -hasLocation(#20564,#20423) -#20565=* -lines(#20565,#20001,"/[]/;"," -") -hasLocation(#20565,#20431) +regexpterm(#20564,19,#20560,1,"\b") +#20565=@"loc,{#10000},36,4,36,5" +locations_default(#20565,#10000,36,4,36,5) +hasLocation(#20564,#20565) +regexpConstValue(#20564,"") #20566=* -lines(#20566,#20001,"/[^]/;"," -") -hasLocation(#20566,#20437) -#20567=* -lines(#20567,#20001,"/]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/;","") -hasLocation(#20567,#20443) -numlines(#20001,44,44,0) +regexpterm(#20566,15,#20560,2,"\x0c") +#20567=@"loc,{#10000},36,6,36,9" +locations_default(#20567,#10000,36,6,36,9) +hasLocation(#20566,#20567) +regexpConstValue(#20566," ") #20568=* -tokeninfo(#20568,5,#20001,0,"/t/") -hasLocation(#20568,#20006) +stmts(#20568,2,#20001,36,"/a{/;") +hasLocation(#20568,#20075) +stmtContainers(#20568,#20001) #20569=* -tokeninfo(#20569,8,#20001,1,";") -#20570=@"loc,{#10000},1,4,1,4" -locations_default(#20570,#10000,1,4,1,4) -hasLocation(#20569,#20570) -#20571=* -tokeninfo(#20571,5,#20001,2,"/foo|bar/") -hasLocation(#20571,#20012) +exprs(#20569,5,#20568,0,"/a{/") +hasLocation(#20569,#20235) +enclosingStmt(#20569,#20568) +exprContainers(#20569,#20001) +literals("/a{/","/a{/",#20569) +#20570=* +regexpterm(#20570,11,#20569,0,"a{") +#20571=@"loc,{#10000},37,2,37,3" +locations_default(#20571,#10000,37,2,37,3) +hasLocation(#20570,#20571) +isGreedy(#20570) +rangeQuantifierLowerBound(#20570,0) #20572=* -tokeninfo(#20572,8,#20001,3,";") -#20573=@"loc,{#10000},2,10,2,10" -locations_default(#20573,#10000,2,10,2,10) +regexpterm(#20572,14,#20570,0,"a") +#20573=@"loc,{#10000},37,2,37,2" +locations_default(#20573,#10000,37,2,37,2) hasLocation(#20572,#20573) +regexpConstValue(#20572,"a") #20574=* -tokeninfo(#20574,5,#20001,4,"/(?:)/") -hasLocation(#20574,#20034) -#20575=* -tokeninfo(#20575,8,#20001,5,";") -#20576=@"loc,{#10000},3,7,3,7" -locations_default(#20576,#10000,3,7,3,7) -hasLocation(#20575,#20576) -#20577=* -tokeninfo(#20577,5,#20001,6,"/^abc$/") -hasLocation(#20577,#20042) +regexpParseErrors(#20574,#20570,"expected digit") +#20575=@"loc,{#10000},37,4,37,4" +locations_default(#20575,#10000,37,4,37,4) +hasLocation(#20574,#20575) +#20576=* +regexpParseErrors(#20576,#20570,"expected '}'") +#20577=@"loc,{#10000},37,3,37,3" +locations_default(#20577,#10000,37,3,37,3) +hasLocation(#20576,#20577) #20578=* -tokeninfo(#20578,8,#20001,7,";") -#20579=@"loc,{#10000},4,8,4,8" -locations_default(#20579,#10000,4,8,4,8) -hasLocation(#20578,#20579) +stmts(#20578,2,#20001,37,"/a{b}/;") +hasLocation(#20578,#20077) +stmtContainers(#20578,#20001) +#20579=* +exprs(#20579,5,#20578,0,"/a{b}/") +hasLocation(#20579,#20239) +enclosingStmt(#20579,#20578) +exprContainers(#20579,#20001) +literals("/a{b}/","/a{b}/",#20579) #20580=* -tokeninfo(#20580,5,#20001,8,"/\bx\b/") -hasLocation(#20580,#20058) -#20581=* -tokeninfo(#20581,8,#20001,9,";") -#20582=@"loc,{#10000},5,8,5,8" -locations_default(#20582,#10000,5,8,5,8) -hasLocation(#20581,#20582) -#20583=* -tokeninfo(#20583,5,#20001,10,"/\bx\B/") -hasLocation(#20583,#20070) +regexpterm(#20580,1,#20579,0,"a{b}") +#20581=@"loc,{#10000},38,2,38,5" +locations_default(#20581,#10000,38,2,38,5) +hasLocation(#20580,#20581) +#20582=* +regexpterm(#20582,11,#20580,0,"a{") +#20583=@"loc,{#10000},38,2,38,3" +locations_default(#20583,#10000,38,2,38,3) +hasLocation(#20582,#20583) +isGreedy(#20582) +rangeQuantifierLowerBound(#20582,0) #20584=* -tokeninfo(#20584,8,#20001,11,";") -#20585=@"loc,{#10000},6,8,6,8" -locations_default(#20585,#10000,6,8,6,8) +regexpterm(#20584,14,#20582,0,"a") +#20585=@"loc,{#10000},38,2,38,2" +locations_default(#20585,#10000,38,2,38,2) hasLocation(#20584,#20585) +regexpConstValue(#20584,"a") #20586=* -tokeninfo(#20586,5,#20001,12,"/x(?=y)/") -hasLocation(#20586,#20082) -#20587=* -tokeninfo(#20587,8,#20001,13,";") -#20588=@"loc,{#10000},7,9,7,9" -locations_default(#20588,#10000,7,9,7,9) -hasLocation(#20587,#20588) -#20589=* -tokeninfo(#20589,5,#20001,14,"/x(?!z)/") -hasLocation(#20589,#20094) +regexpterm(#20586,14,#20580,1,"b") +#20587=@"loc,{#10000},38,4,38,4" +locations_default(#20587,#10000,38,4,38,4) +hasLocation(#20586,#20587) +regexpConstValue(#20586,"b") +#20588=* +regexpterm(#20588,14,#20580,2,"}") +#20589=@"loc,{#10000},38,5,38,5" +locations_default(#20589,#10000,38,5,38,5) +hasLocation(#20588,#20589) +regexpConstValue(#20588,"}") #20590=* -tokeninfo(#20590,8,#20001,15,";") -#20591=@"loc,{#10000},8,9,8,9" -locations_default(#20591,#10000,8,9,8,9) -hasLocation(#20590,#20591) -#20592=* -tokeninfo(#20592,5,#20001,16,"/a*/") -hasLocation(#20592,#20106) +regexpParseErrors(#20590,#20580,"expected digit") +hasLocation(#20590,#20587) +#20591=* +regexpParseErrors(#20591,#20580,"expected '}'") +#20592=@"loc,{#10000},38,3,38,3" +locations_default(#20592,#10000,38,3,38,3) +hasLocation(#20591,#20592) #20593=* -tokeninfo(#20593,8,#20001,17,";") -#20594=@"loc,{#10000},9,5,9,5" -locations_default(#20594,#10000,9,5,9,5) -hasLocation(#20593,#20594) +regexpParseErrors(#20593,#20580,"unexpected character") +hasLocation(#20593,#20589) +#20594=* +stmts(#20594,2,#20001,38,"/a{2/;") +hasLocation(#20594,#20079) +stmtContainers(#20594,#20001) #20595=* -tokeninfo(#20595,5,#20001,18,"/a*?/") -hasLocation(#20595,#20114) +exprs(#20595,5,#20594,0,"/a{2/") +hasLocation(#20595,#20243) +enclosingStmt(#20595,#20594) +exprContainers(#20595,#20001) +literals("/a{2/","/a{2/",#20595) #20596=* -tokeninfo(#20596,8,#20001,19,";") -#20597=@"loc,{#10000},10,6,10,6" -locations_default(#20597,#10000,10,6,10,6) +regexpterm(#20596,11,#20595,0,"a{2") +#20597=@"loc,{#10000},39,2,39,4" +locations_default(#20597,#10000,39,2,39,4) hasLocation(#20596,#20597) +isGreedy(#20596) +rangeQuantifierLowerBound(#20596,2) #20598=* -tokeninfo(#20598,5,#20001,20,"/a+/") -hasLocation(#20598,#20122) -#20599=* -tokeninfo(#20599,8,#20001,21,";") -#20600=@"loc,{#10000},11,5,11,5" -locations_default(#20600,#10000,11,5,11,5) -hasLocation(#20599,#20600) -#20601=* -tokeninfo(#20601,5,#20001,22,"/a+?/") -hasLocation(#20601,#20130) +regexpterm(#20598,14,#20596,0,"a") +#20599=@"loc,{#10000},39,2,39,2" +locations_default(#20599,#10000,39,2,39,2) +hasLocation(#20598,#20599) +regexpConstValue(#20598,"a") +#20600=* +regexpParseErrors(#20600,#20596,"expected '}'") +#20601=@"loc,{#10000},39,4,39,4" +locations_default(#20601,#10000,39,4,39,4) +hasLocation(#20600,#20601) #20602=* -tokeninfo(#20602,8,#20001,23,";") -#20603=@"loc,{#10000},12,6,12,6" -locations_default(#20603,#10000,12,6,12,6) -hasLocation(#20602,#20603) +stmts(#20602,2,#20001,39,"/\xa/;") +hasLocation(#20602,#20081) +stmtContainers(#20602,#20001) +#20603=* +exprs(#20603,5,#20602,0,"/\xa/") +hasLocation(#20603,#20247) +enclosingStmt(#20603,#20602) +exprContainers(#20603,#20001) +literals("/\xa/","/\xa/",#20603) #20604=* -tokeninfo(#20604,5,#20001,24,"/a?/") -hasLocation(#20604,#20138) -#20605=* -tokeninfo(#20605,8,#20001,25,";") -#20606=@"loc,{#10000},13,5,13,5" -locations_default(#20606,#10000,13,5,13,5) -hasLocation(#20605,#20606) -#20607=* -tokeninfo(#20607,5,#20001,26,"/a??/") -hasLocation(#20607,#20146) +regexpterm(#20604,15,#20603,0,"\xa") +#20605=@"loc,{#10000},40,2,40,4" +locations_default(#20605,#10000,40,2,40,4) +hasLocation(#20604,#20605) +regexpConstValue(#20604," +") +#20606=* +regexpParseErrors(#20606,#20604,"unexpected end of regular expression") +#20607=@"loc,{#10000},40,5,40,5" +locations_default(#20607,#10000,40,5,40,5) +hasLocation(#20606,#20607) #20608=* -tokeninfo(#20608,8,#20001,27,";") -#20609=@"loc,{#10000},14,6,14,6" -locations_default(#20609,#10000,14,6,14,6) -hasLocation(#20608,#20609) +stmts(#20608,2,#20001,40,"/\c0/;") +hasLocation(#20608,#20083) +stmtContainers(#20608,#20001) +#20609=* +exprs(#20609,5,#20608,0,"/\c0/") +hasLocation(#20609,#20251) +enclosingStmt(#20609,#20608) +exprContainers(#20609,#20001) +literals("/\c0/","/\c0/",#20609) #20610=* -tokeninfo(#20610,5,#20001,28,"/a{1}/") -hasLocation(#20610,#20154) -#20611=* -tokeninfo(#20611,8,#20001,29,";") -#20612=@"loc,{#10000},15,7,15,7" -locations_default(#20612,#10000,15,7,15,7) -hasLocation(#20611,#20612) -#20613=* -tokeninfo(#20613,5,#20001,30,"/a{1,}/") -hasLocation(#20613,#20162) +regexpterm(#20610,19,#20609,0,"\c0") +#20611=@"loc,{#10000},41,2,41,4" +locations_default(#20611,#10000,41,2,41,4) +hasLocation(#20610,#20611) +regexpConstValue(#20610,"") +#20612=* +regexpParseErrors(#20612,#20610,"expected control letter") +#20613=@"loc,{#10000},41,4,41,4" +locations_default(#20613,#10000,41,4,41,4) +hasLocation(#20612,#20613) #20614=* -tokeninfo(#20614,8,#20001,31,";") -#20615=@"loc,{#10000},16,8,16,8" -locations_default(#20615,#10000,16,8,16,8) -hasLocation(#20614,#20615) +stmts(#20614,2,#20001,41,"/[]/;") +hasLocation(#20614,#20085) +stmtContainers(#20614,#20001) +#20615=* +exprs(#20615,5,#20614,0,"/[]/") +hasLocation(#20615,#20255) +enclosingStmt(#20615,#20614) +exprContainers(#20615,#20001) +literals("/[]/","/[]/",#20615) #20616=* -tokeninfo(#20616,5,#20001,32,"/a{1,2}/") -hasLocation(#20616,#20170) -#20617=* -tokeninfo(#20617,8,#20001,33,";") -#20618=@"loc,{#10000},17,9,17,9" -locations_default(#20618,#10000,17,9,17,9) -hasLocation(#20617,#20618) +regexpterm(#20616,23,#20615,0,"[]") +#20617=@"loc,{#10000},42,2,42,3" +locations_default(#20617,#10000,42,2,42,3) +hasLocation(#20616,#20617) +#20618=* +stmts(#20618,2,#20001,42,"/[^]/;") +hasLocation(#20618,#20087) +stmtContainers(#20618,#20001) #20619=* -tokeninfo(#20619,5,#20001,34,"/a{1}?/") -hasLocation(#20619,#20178) +exprs(#20619,5,#20618,0,"/[^]/") +hasLocation(#20619,#20259) +enclosingStmt(#20619,#20618) +exprContainers(#20619,#20001) +literals("/[^]/","/[^]/",#20619) #20620=* -tokeninfo(#20620,8,#20001,35,";") -#20621=@"loc,{#10000},18,8,18,8" -locations_default(#20621,#10000,18,8,18,8) +regexpterm(#20620,23,#20619,0,"[^]") +#20621=@"loc,{#10000},43,2,43,4" +locations_default(#20621,#10000,43,2,43,4) hasLocation(#20620,#20621) +isInverted(#20620) #20622=* -tokeninfo(#20622,5,#20001,36,"/a{1,}?/") -hasLocation(#20622,#20186) +stmts(#20622,2,#20001,43,"//;") +hasLocation(#20622,#20089) +stmtContainers(#20622,#20001) #20623=* -tokeninfo(#20623,8,#20001,37,";") -#20624=@"loc,{#10000},19,9,19,9" -locations_default(#20624,#10000,19,9,19,9) -hasLocation(#20623,#20624) -#20625=* -tokeninfo(#20625,5,#20001,38,"/a{1,2}?/") -hasLocation(#20625,#20194) +exprs(#20623,5,#20622,0,"//") +hasLocation(#20623,#20263) +enclosingStmt(#20623,#20622) +exprContainers(#20623,#20001) +literals("/]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/","/]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/",#20623) +#20624=* +regexpterm(#20624,1,#20623,0,"]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>") +#20625=@"loc,{#10000},44,2,44,58" +locations_default(#20625,#10000,44,2,44,58) +hasLocation(#20624,#20625) #20626=* -tokeninfo(#20626,8,#20001,39,";") -#20627=@"loc,{#10000},20,10,20,10" -locations_default(#20627,#10000,20,10,20,10) +regexpterm(#20626,14,#20624,0,"<") +#20627=@"loc,{#10000},44,2,44,2" +locations_default(#20627,#10000,44,2,44,2) hasLocation(#20626,#20627) +regexpConstValue(#20626,"<") #20628=* -tokeninfo(#20628,5,#20001,40,"/./") -hasLocation(#20628,#20202) -#20629=* -tokeninfo(#20629,8,#20001,41,";") -#20630=@"loc,{#10000},21,4,21,4" -locations_default(#20630,#10000,21,4,21,4) -hasLocation(#20629,#20630) -#20631=* -tokeninfo(#20631,5,#20001,42,"/(abc)/") -hasLocation(#20631,#20208) +regexpterm(#20628,14,#20624,1,"t") +#20629=@"loc,{#10000},44,3,44,3" +locations_default(#20629,#10000,44,3,44,3) +hasLocation(#20628,#20629) +regexpConstValue(#20628,"t") +#20630=* +regexpterm(#20630,14,#20624,2,"p") +#20631=@"loc,{#10000},44,4,44,4" +locations_default(#20631,#10000,44,4,44,4) +hasLocation(#20630,#20631) +regexpConstValue(#20630,"p") #20632=* -tokeninfo(#20632,8,#20001,43,";") -#20633=@"loc,{#10000},22,8,22,8" -locations_default(#20633,#10000,22,8,22,8) +regexpterm(#20632,14,#20624,3,"l") +#20633=@"loc,{#10000},44,5,44,5" +locations_default(#20633,#10000,44,5,44,5) hasLocation(#20632,#20633) +regexpConstValue(#20632,"l") #20634=* -tokeninfo(#20634,5,#20001,44,"/(?:abc)/") -hasLocation(#20634,#20222) -#20635=* -tokeninfo(#20635,8,#20001,45,";") -#20636=@"loc,{#10000},23,10,23,10" -locations_default(#20636,#10000,23,10,23,10) -hasLocation(#20635,#20636) -#20637=* -tokeninfo(#20637,5,#20001,46,"/\x0a/") -hasLocation(#20637,#20236) +regexpterm(#20634,4,#20624,4,"\b") +#20635=@"loc,{#10000},44,6,44,7" +locations_default(#20635,#10000,44,6,44,7) +hasLocation(#20634,#20635) +#20636=* +regexpterm(#20636,8,#20624,5,"[^>]*") +#20637=@"loc,{#10000},44,8,44,12" +locations_default(#20637,#10000,44,8,44,12) +hasLocation(#20636,#20637) +isGreedy(#20636) #20638=* -tokeninfo(#20638,8,#20001,47,";") -#20639=@"loc,{#10000},24,7,24,7" -locations_default(#20639,#10000,24,7,24,7) +regexpterm(#20638,23,#20636,0,"[^>]") +#20639=@"loc,{#10000},44,8,44,11" +locations_default(#20639,#10000,44,8,44,11) hasLocation(#20638,#20639) +isInverted(#20638) #20640=* -tokeninfo(#20640,5,#20001,48,"/\u000a/") -hasLocation(#20640,#20242) -#20641=* -tokeninfo(#20641,8,#20001,49,";") -#20642=@"loc,{#10000},25,9,25,9" -locations_default(#20642,#10000,25,9,25,9) -hasLocation(#20641,#20642) -#20643=* -tokeninfo(#20643,5,#20001,50,"/\10/") -hasLocation(#20643,#20248) +regexpterm(#20640,14,#20638,0,">") +#20641=@"loc,{#10000},44,10,44,10" +locations_default(#20641,#10000,44,10,44,10) +hasLocation(#20640,#20641) +regexpConstValue(#20640,">") +#20642=* +regexpterm(#20642,14,#20624,6,">") +#20643=@"loc,{#10000},44,13,44,13" +locations_default(#20643,#10000,44,13,44,13) +hasLocation(#20642,#20643) +regexpConstValue(#20642,">") #20644=* -tokeninfo(#20644,8,#20001,51,";") -#20645=@"loc,{#10000},26,6,26,6" -locations_default(#20645,#10000,26,6,26,6) +regexpterm(#20644,13,#20624,7,"((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)") +#20645=@"loc,{#10000},44,14,44,51" +locations_default(#20645,#10000,44,14,44,51) hasLocation(#20644,#20645) +isCapture(#20644,1) #20646=* -tokeninfo(#20646,5,#20001,52,"/\t\n\r\f\v/") -hasLocation(#20646,#20255) -#20647=* -tokeninfo(#20647,8,#20001,53,";") -#20648=@"loc,{#10000},27,13,27,13" -locations_default(#20648,#10000,27,13,27,13) -hasLocation(#20647,#20648) -#20649=* -tokeninfo(#20649,5,#20001,54,"/\ca\cN/") -hasLocation(#20649,#20271) +regexpterm(#20646,8,#20644,0,"(?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?") +#20647=@"loc,{#10000},44,15,44,50" +locations_default(#20647,#10000,44,15,44,50) +hasLocation(#20646,#20647) +#20648=* +regexpterm(#20648,13,#20646,0,"(?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))") +#20649=@"loc,{#10000},44,15,44,48" +locations_default(#20649,#10000,44,15,44,48) +hasLocation(#20648,#20649) #20650=* -tokeninfo(#20650,8,#20001,55,";") -#20651=@"loc,{#10000},28,9,28,9" -locations_default(#20651,#10000,28,9,28,9) +regexpterm(#20650,0,#20648,0,"(?=([^<]+))\2|<(?!tpl\b[^>]*>)") +#20651=@"loc,{#10000},44,18,44,47" +locations_default(#20651,#10000,44,18,44,47) hasLocation(#20650,#20651) #20652=* -tokeninfo(#20652,5,#20001,56,"/\w\S/") -hasLocation(#20652,#20281) -#20653=* -tokeninfo(#20653,8,#20001,57,";") -#20654=@"loc,{#10000},29,7,29,7" -locations_default(#20654,#10000,29,7,29,7) -hasLocation(#20653,#20654) -#20655=* -tokeninfo(#20655,5,#20001,58,"/\\/") -hasLocation(#20655,#20291) +regexpterm(#20652,1,#20650,0,"(?=([^<]+))\2") +#20653=@"loc,{#10000},44,18,44,30" +locations_default(#20653,#10000,44,18,44,30) +hasLocation(#20652,#20653) +#20654=* +regexpterm(#20654,6,#20652,0,"(?=([^<]+))") +#20655=@"loc,{#10000},44,18,44,28" +locations_default(#20655,#10000,44,18,44,28) +hasLocation(#20654,#20655) #20656=* -tokeninfo(#20656,8,#20001,59,";") -#20657=@"loc,{#10000},30,5,30,5" -locations_default(#20657,#10000,30,5,30,5) +regexpterm(#20656,13,#20654,0,"([^<]+)") +#20657=@"loc,{#10000},44,21,44,27" +locations_default(#20657,#10000,44,21,44,27) hasLocation(#20656,#20657) +isCapture(#20656,2) #20658=* -tokeninfo(#20658,5,#20001,60,"/[abc]/") -hasLocation(#20658,#20297) -#20659=* -tokeninfo(#20659,8,#20001,61,";") -#20660=@"loc,{#10000},31,8,31,8" -locations_default(#20660,#10000,31,8,31,8) -hasLocation(#20659,#20660) -#20661=* -tokeninfo(#20661,5,#20001,62,"/[a-z]/") -hasLocation(#20661,#20309) +regexpterm(#20658,9,#20656,0,"[^<]+") +#20659=@"loc,{#10000},44,22,44,26" +locations_default(#20659,#10000,44,22,44,26) +hasLocation(#20658,#20659) +isGreedy(#20658) +#20660=* +regexpterm(#20660,23,#20658,0,"[^<]") +#20661=@"loc,{#10000},44,22,44,25" +locations_default(#20661,#10000,44,22,44,25) +hasLocation(#20660,#20661) +isInverted(#20660) #20662=* -tokeninfo(#20662,8,#20001,63,";") -#20663=@"loc,{#10000},32,8,32,8" -locations_default(#20663,#10000,32,8,32,8) +regexpterm(#20662,14,#20660,0,"<") +#20663=@"loc,{#10000},44,24,44,24" +locations_default(#20663,#10000,44,24,44,24) hasLocation(#20662,#20663) +regexpConstValue(#20662,"<") #20664=* -tokeninfo(#20664,5,#20001,64,"/[a-zA-Z]/") -hasLocation(#20664,#20321) -#20665=* -tokeninfo(#20665,8,#20001,65,";") -#20666=@"loc,{#10000},33,11,33,11" -locations_default(#20666,#10000,33,11,33,11) -hasLocation(#20665,#20666) -#20667=* -tokeninfo(#20667,5,#20001,66,"/[-a-z]/") -hasLocation(#20667,#20339) +regexpterm(#20664,22,#20652,1,"\2") +#20665=@"loc,{#10000},44,29,44,30" +locations_default(#20665,#10000,44,29,44,30) +hasLocation(#20664,#20665) +backref(#20664,2) +#20666=* +regexpterm(#20666,1,#20650,1,"<(?!tpl\b[^>]*>)") +#20667=@"loc,{#10000},44,32,44,47" +locations_default(#20667,#10000,44,32,44,47) +hasLocation(#20666,#20667) #20668=* -tokeninfo(#20668,8,#20001,67,";") -#20669=@"loc,{#10000},34,9,34,9" -locations_default(#20669,#10000,34,9,34,9) +regexpterm(#20668,14,#20666,0,"<") +#20669=@"loc,{#10000},44,32,44,32" +locations_default(#20669,#10000,44,32,44,32) hasLocation(#20668,#20669) +regexpConstValue(#20668,"<") #20670=* -tokeninfo(#20670,5,#20001,68,"/[^a-z]/") -hasLocation(#20670,#20353) -#20671=* -tokeninfo(#20671,8,#20001,69,";") -#20672=@"loc,{#10000},35,9,35,9" -locations_default(#20672,#10000,35,9,35,9) -hasLocation(#20671,#20672) -#20673=* -tokeninfo(#20673,5,#20001,70,"/[a\b\x0c]/") -hasLocation(#20673,#20365) +regexpterm(#20670,7,#20666,1,"(?!tpl\b[^>]*>)") +#20671=@"loc,{#10000},44,33,44,47" +locations_default(#20671,#10000,44,33,44,47) +hasLocation(#20670,#20671) +#20672=* +regexpterm(#20672,1,#20670,0,"tpl\b[^>]*>") +#20673=@"loc,{#10000},44,36,44,46" +locations_default(#20673,#10000,44,36,44,46) +hasLocation(#20672,#20673) #20674=* -tokeninfo(#20674,8,#20001,71,";") -#20675=@"loc,{#10000},36,12,36,12" -locations_default(#20675,#10000,36,12,36,12) +regexpterm(#20674,14,#20672,0,"t") +#20675=@"loc,{#10000},44,36,44,36" +locations_default(#20675,#10000,44,36,44,36) hasLocation(#20674,#20675) +regexpConstValue(#20674,"t") #20676=* -tokeninfo(#20676,5,#20001,72,"/a{/") -hasLocation(#20676,#20377) -#20677=* -tokeninfo(#20677,8,#20001,73,";") -#20678=@"loc,{#10000},37,5,37,5" -locations_default(#20678,#10000,37,5,37,5) -hasLocation(#20677,#20678) -#20679=* -tokeninfo(#20679,5,#20001,74,"/a{b}/") -hasLocation(#20679,#20389) +regexpterm(#20676,14,#20672,1,"p") +#20677=@"loc,{#10000},44,37,44,37" +locations_default(#20677,#10000,44,37,44,37) +hasLocation(#20676,#20677) +regexpConstValue(#20676,"p") +#20678=* +regexpterm(#20678,14,#20672,2,"l") +#20679=@"loc,{#10000},44,38,44,38" +locations_default(#20679,#10000,44,38,44,38) +hasLocation(#20678,#20679) +regexpConstValue(#20678,"l") #20680=* -tokeninfo(#20680,8,#20001,75,";") -#20681=@"loc,{#10000},38,7,38,7" -locations_default(#20681,#10000,38,7,38,7) +regexpterm(#20680,4,#20672,3,"\b") +#20681=@"loc,{#10000},44,39,44,40" +locations_default(#20681,#10000,44,39,44,40) hasLocation(#20680,#20681) #20682=* -tokeninfo(#20682,5,#20001,76,"/a{2/") -hasLocation(#20682,#20407) -#20683=* -tokeninfo(#20683,8,#20001,77,";") -#20684=@"loc,{#10000},39,6,39,6" -locations_default(#20684,#10000,39,6,39,6) -hasLocation(#20683,#20684) -#20685=* -tokeninfo(#20685,5,#20001,78,"/\xa/") -hasLocation(#20685,#20417) +regexpterm(#20682,8,#20672,4,"[^>]*") +#20683=@"loc,{#10000},44,41,44,45" +locations_default(#20683,#10000,44,41,44,45) +hasLocation(#20682,#20683) +isGreedy(#20682) +#20684=* +regexpterm(#20684,23,#20682,0,"[^>]") +#20685=@"loc,{#10000},44,41,44,44" +locations_default(#20685,#10000,44,41,44,44) +hasLocation(#20684,#20685) +isInverted(#20684) #20686=* -tokeninfo(#20686,8,#20001,79,";") -#20687=@"loc,{#10000},40,6,40,6" -locations_default(#20687,#10000,40,6,40,6) +regexpterm(#20686,14,#20684,0,">") +#20687=@"loc,{#10000},44,43,44,43" +locations_default(#20687,#10000,44,43,44,43) hasLocation(#20686,#20687) +regexpConstValue(#20686,">") #20688=* -tokeninfo(#20688,5,#20001,80,"/\c0/") -hasLocation(#20688,#20425) -#20689=* -tokeninfo(#20689,8,#20001,81,";") -#20690=@"loc,{#10000},41,6,41,6" -locations_default(#20690,#10000,41,6,41,6) -hasLocation(#20689,#20690) -#20691=* -tokeninfo(#20691,5,#20001,82,"/[]/") -hasLocation(#20691,#20433) +regexpterm(#20688,14,#20672,5,">") +#20689=@"loc,{#10000},44,46,44,46" +locations_default(#20689,#10000,44,46,44,46) +hasLocation(#20688,#20689) +regexpConstValue(#20688,">") +#20690=* +regexpterm(#20690,14,#20624,8,"<") +#20691=@"loc,{#10000},44,52,44,52" +locations_default(#20691,#10000,44,52,44,52) +hasLocation(#20690,#20691) +regexpConstValue(#20690,"<") #20692=* -tokeninfo(#20692,8,#20001,83,";") -#20693=@"loc,{#10000},42,5,42,5" -locations_default(#20693,#10000,42,5,42,5) +regexpterm(#20692,21,#20624,9,"\/") +#20693=@"loc,{#10000},44,53,44,54" +locations_default(#20693,#10000,44,53,44,54) hasLocation(#20692,#20693) +regexpConstValue(#20692,"/") #20694=* -tokeninfo(#20694,5,#20001,84,"/[^]/") -hasLocation(#20694,#20439) -#20695=* -tokeninfo(#20695,8,#20001,85,";") -#20696=@"loc,{#10000},43,6,43,6" -locations_default(#20696,#10000,43,6,43,6) -hasLocation(#20695,#20696) -#20697=* -tokeninfo(#20697,5,#20001,86,"/]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/") -hasLocation(#20697,#20445) +regexpterm(#20694,14,#20624,10,"t") +#20695=@"loc,{#10000},44,55,44,55" +locations_default(#20695,#10000,44,55,44,55) +hasLocation(#20694,#20695) +regexpConstValue(#20694,"t") +#20696=* +regexpterm(#20696,14,#20624,11,"p") +#20697=@"loc,{#10000},44,56,44,56" +locations_default(#20697,#10000,44,56,44,56) +hasLocation(#20696,#20697) +regexpConstValue(#20696,"p") #20698=* -tokeninfo(#20698,8,#20001,87,";") -#20699=@"loc,{#10000},44,60,44,60" -locations_default(#20699,#10000,44,60,44,60) +regexpterm(#20698,14,#20624,12,"l") +#20699=@"loc,{#10000},44,57,44,57" +locations_default(#20699,#10000,44,57,44,57) hasLocation(#20698,#20699) +regexpConstValue(#20698,"l") #20700=* -tokeninfo(#20700,0,#20001,88,"") -#20701=@"loc,{#10000},44,61,44,60" -locations_default(#20701,#10000,44,61,44,60) +regexpterm(#20700,14,#20624,13,">") +#20701=@"loc,{#10000},44,58,44,58" +locations_default(#20701,#10000,44,58,44,58) hasLocation(#20700,#20701) +regexpConstValue(#20700,">") #20702=* entry_cfg_node(#20702,#20001) #20703=@"loc,{#10000},1,1,1,0" @@ -2159,95 +2159,95 @@ locations_default(#20703,#10000,1,1,1,0) hasLocation(#20702,#20703) #20704=* exit_cfg_node(#20704,#20001) -hasLocation(#20704,#20701) -successor(#20442,#20444) -successor(#20444,#20704) -successor(#20436,#20438) -successor(#20438,#20442) -successor(#20430,#20432) -successor(#20432,#20436) -successor(#20422,#20424) -successor(#20424,#20430) -successor(#20414,#20416) -successor(#20416,#20422) -successor(#20404,#20406) -successor(#20406,#20414) -successor(#20386,#20388) -successor(#20388,#20404) -successor(#20374,#20376) -successor(#20376,#20386) -successor(#20362,#20364) -successor(#20364,#20374) -successor(#20350,#20352) -successor(#20352,#20362) -successor(#20336,#20338) -successor(#20338,#20350) -successor(#20318,#20320) -successor(#20320,#20336) -successor(#20306,#20308) -successor(#20308,#20318) -successor(#20294,#20296) -successor(#20296,#20306) -successor(#20288,#20290) -successor(#20290,#20294) -successor(#20278,#20280) -successor(#20280,#20288) -successor(#20268,#20270) -successor(#20270,#20278) -successor(#20252,#20254) -successor(#20254,#20268) -successor(#20245,#20247) -successor(#20247,#20252) -successor(#20239,#20241) -successor(#20241,#20245) -successor(#20233,#20235) -successor(#20235,#20239) -successor(#20219,#20221) -successor(#20221,#20233) -successor(#20205,#20207) -successor(#20207,#20219) -successor(#20199,#20201) -successor(#20201,#20205) -successor(#20191,#20193) -successor(#20193,#20199) -successor(#20183,#20185) -successor(#20185,#20191) -successor(#20175,#20177) -successor(#20177,#20183) -successor(#20167,#20169) -successor(#20169,#20175) -successor(#20159,#20161) -successor(#20161,#20167) -successor(#20151,#20153) -successor(#20153,#20159) -successor(#20143,#20145) -successor(#20145,#20151) -successor(#20135,#20137) -successor(#20137,#20143) -successor(#20127,#20129) -successor(#20129,#20135) -successor(#20119,#20121) -successor(#20121,#20127) -successor(#20111,#20113) -successor(#20113,#20119) -successor(#20103,#20105) -successor(#20105,#20111) -successor(#20091,#20093) -successor(#20093,#20103) -successor(#20079,#20081) -successor(#20081,#20091) -successor(#20067,#20069) -successor(#20069,#20079) -successor(#20055,#20057) -successor(#20057,#20067) -successor(#20039,#20041) -successor(#20041,#20055) -successor(#20031,#20033) -successor(#20033,#20039) -successor(#20009,#20011) -successor(#20011,#20031) -successor(#20003,#20005) -successor(#20005,#20009) -successor(#20702,#20003) +hasLocation(#20704,#20267) +successor(#20622,#20623) +successor(#20623,#20704) +successor(#20618,#20619) +successor(#20619,#20622) +successor(#20614,#20615) +successor(#20615,#20618) +successor(#20608,#20609) +successor(#20609,#20614) +successor(#20602,#20603) +successor(#20603,#20608) +successor(#20594,#20595) +successor(#20595,#20602) +successor(#20578,#20579) +successor(#20579,#20594) +successor(#20568,#20569) +successor(#20569,#20578) +successor(#20558,#20559) +successor(#20559,#20568) +successor(#20548,#20549) +successor(#20549,#20558) +successor(#20536,#20537) +successor(#20537,#20548) +successor(#20520,#20521) +successor(#20521,#20536) +successor(#20510,#20511) +successor(#20511,#20520) +successor(#20500,#20501) +successor(#20501,#20510) +successor(#20496,#20497) +successor(#20497,#20500) +successor(#20488,#20489) +successor(#20489,#20496) +successor(#20480,#20481) +successor(#20481,#20488) +successor(#20466,#20467) +successor(#20467,#20480) +successor(#20461,#20462) +successor(#20462,#20466) +successor(#20457,#20458) +successor(#20458,#20461) +successor(#20453,#20454) +successor(#20454,#20457) +successor(#20441,#20442) +successor(#20442,#20453) +successor(#20429,#20430) +successor(#20430,#20441) +successor(#20425,#20426) +successor(#20426,#20429) +successor(#20419,#20420) +successor(#20420,#20425) +successor(#20413,#20414) +successor(#20414,#20419) +successor(#20407,#20408) +successor(#20408,#20413) +successor(#20401,#20402) +successor(#20402,#20407) +successor(#20395,#20396) +successor(#20396,#20401) +successor(#20389,#20390) +successor(#20390,#20395) +successor(#20383,#20384) +successor(#20384,#20389) +successor(#20377,#20378) +successor(#20378,#20383) +successor(#20371,#20372) +successor(#20372,#20377) +successor(#20365,#20366) +successor(#20366,#20371) +successor(#20359,#20360) +successor(#20360,#20365) +successor(#20353,#20354) +successor(#20354,#20359) +successor(#20343,#20344) +successor(#20344,#20353) +successor(#20333,#20334) +successor(#20334,#20343) +successor(#20323,#20324) +successor(#20324,#20333) +successor(#20313,#20314) +successor(#20314,#20323) +successor(#20299,#20300) +successor(#20300,#20313) +successor(#20293,#20294) +successor(#20294,#20299) +successor(#20273,#20274) +successor(#20274,#20293) +successor(#20269,#20270) +successor(#20270,#20273) +successor(#20702,#20269) numlines(#10000,44,44,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/exprs/output/trap/unary.js.trap b/javascript/extractor/tests/exprs/output/trap/unary.js.trap index 9ab29f7463c..5fc8edaa134 100644 --- a/javascript/extractor/tests/exprs/output/trap/unary.js.trap +++ b/javascript/extractor/tests/exprs/output/trap/unary.js.trap @@ -9,325 +9,325 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,7,24" -locations_default(#20002,#10000,1,1,7,24) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"-23;") -#20004=@"loc,{#10000},1,1,1,4" -locations_default(#20004,#10000,1,1,1,4) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,16,#20003,0,"-23") -#20006=@"loc,{#10000},1,1,1,3" -locations_default(#20006,#10000,1,1,1,3) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -#20007=* -exprs(#20007,3,#20005,0,"23") -#20008=@"loc,{#10000},1,2,1,3" -locations_default(#20008,#10000,1,2,1,3) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20003) -exprContainers(#20007,#20001) -literals("23","23",#20007) -#20009=* -stmts(#20009,2,#20001,1,"+42;") -#20010=@"loc,{#10000},2,1,2,4" -locations_default(#20010,#10000,2,1,2,4) -hasLocation(#20009,#20010) -stmtContainers(#20009,#20001) -#20011=* -exprs(#20011,17,#20009,0,"+42") -#20012=@"loc,{#10000},2,1,2,3" -locations_default(#20012,#10000,2,1,2,3) -hasLocation(#20011,#20012) -enclosingStmt(#20011,#20009) -exprContainers(#20011,#20001) -#20013=* -exprs(#20013,3,#20011,0,"42") -#20014=@"loc,{#10000},2,2,2,3" -locations_default(#20014,#10000,2,2,2,3) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20009) -exprContainers(#20013,#20001) -literals("42","42",#20013) -#20015=* -stmts(#20015,2,#20001,2,"!true;") -#20016=@"loc,{#10000},3,1,3,6" -locations_default(#20016,#10000,3,1,3,6) -hasLocation(#20015,#20016) -stmtContainers(#20015,#20001) -#20017=* -exprs(#20017,18,#20015,0,"!true") -#20018=@"loc,{#10000},3,1,3,5" -locations_default(#20018,#10000,3,1,3,5) -hasLocation(#20017,#20018) -enclosingStmt(#20017,#20015) -exprContainers(#20017,#20001) -#20019=* -exprs(#20019,2,#20017,0,"true") -#20020=@"loc,{#10000},3,2,3,5" -locations_default(#20020,#10000,3,2,3,5) -hasLocation(#20019,#20020) -enclosingStmt(#20019,#20015) -exprContainers(#20019,#20001) -literals("true","true",#20019) -#20021=* -stmts(#20021,2,#20001,3,"~2;") -#20022=@"loc,{#10000},4,1,4,3" -locations_default(#20022,#10000,4,1,4,3) -hasLocation(#20021,#20022) -stmtContainers(#20021,#20001) -#20023=* -exprs(#20023,19,#20021,0,"~2") -#20024=@"loc,{#10000},4,1,4,2" -locations_default(#20024,#10000,4,1,4,2) -hasLocation(#20023,#20024) -enclosingStmt(#20023,#20021) -exprContainers(#20023,#20001) -#20025=* -exprs(#20025,3,#20023,0,"2") -#20026=@"loc,{#10000},4,2,4,2" -locations_default(#20026,#10000,4,2,4,2) -hasLocation(#20025,#20026) -enclosingStmt(#20025,#20021) -exprContainers(#20025,#20001) -literals("2","2",#20025) -#20027=* -stmts(#20027,2,#20001,4,"typeof Object;") -#20028=@"loc,{#10000},5,1,5,14" -locations_default(#20028,#10000,5,1,5,14) -hasLocation(#20027,#20028) -stmtContainers(#20027,#20001) -#20029=* -exprs(#20029,20,#20027,0,"typeof Object") -#20030=@"loc,{#10000},5,1,5,13" -locations_default(#20030,#10000,5,1,5,13) -hasLocation(#20029,#20030) -enclosingStmt(#20029,#20027) -exprContainers(#20029,#20001) -#20031=* -exprs(#20031,79,#20029,0,"Object") -#20032=@"loc,{#10000},5,8,5,13" -locations_default(#20032,#10000,5,8,5,13) -hasLocation(#20031,#20032) -enclosingStmt(#20031,#20027) -exprContainers(#20031,#20001) -literals("Object","Object",#20031) -#20033=@"var;{Object};{#20000}" -variables(#20033,"Object",#20000) -bind(#20031,#20033) -#20034=* -stmts(#20034,2,#20001,5,"void(0);") -#20035=@"loc,{#10000},6,1,6,8" -locations_default(#20035,#10000,6,1,6,8) -hasLocation(#20034,#20035) -stmtContainers(#20034,#20001) -#20036=* -exprs(#20036,21,#20034,0,"void(0)") -#20037=@"loc,{#10000},6,1,6,7" -locations_default(#20037,#10000,6,1,6,7) -hasLocation(#20036,#20037) -enclosingStmt(#20036,#20034) -exprContainers(#20036,#20001) -#20038=* -exprs(#20038,63,#20036,0,"(0)") -#20039=@"loc,{#10000},6,5,6,7" -locations_default(#20039,#10000,6,5,6,7) -hasLocation(#20038,#20039) -enclosingStmt(#20038,#20034) -exprContainers(#20038,#20001) -#20040=* -exprs(#20040,3,#20038,0,"0") -#20041=@"loc,{#10000},6,6,6,6" -locations_default(#20041,#10000,6,6,6,6) -hasLocation(#20040,#20041) -enclosingStmt(#20040,#20034) -exprContainers(#20040,#20001) -literals("0","0",#20040) -#20042=* -stmts(#20042,2,#20001,6,"delete ... totype;") -#20043=@"loc,{#10000},7,1,7,24" -locations_default(#20043,#10000,7,1,7,24) -hasLocation(#20042,#20043) -stmtContainers(#20042,#20001) -#20044=* -exprs(#20044,22,#20042,0,"delete ... ototype") -#20045=@"loc,{#10000},7,1,7,23" -locations_default(#20045,#10000,7,1,7,23) -hasLocation(#20044,#20045) -enclosingStmt(#20044,#20042) -exprContainers(#20044,#20001) -#20046=* -exprs(#20046,14,#20044,0,"Object.prototype") -#20047=@"loc,{#10000},7,8,7,23" -locations_default(#20047,#10000,7,8,7,23) -hasLocation(#20046,#20047) -enclosingStmt(#20046,#20042) -exprContainers(#20046,#20001) -#20048=* -exprs(#20048,79,#20046,0,"Object") -#20049=@"loc,{#10000},7,8,7,13" -locations_default(#20049,#10000,7,8,7,13) -hasLocation(#20048,#20049) -enclosingStmt(#20048,#20042) -exprContainers(#20048,#20001) -literals("Object","Object",#20048) -bind(#20048,#20033) -#20050=* -exprs(#20050,0,#20046,1,"prototype") -#20051=@"loc,{#10000},7,15,7,23" -locations_default(#20051,#10000,7,15,7,23) -hasLocation(#20050,#20051) -enclosingStmt(#20050,#20042) -exprContainers(#20050,#20001) -literals("prototype","prototype",#20050) -#20052=* -lines(#20052,#20001,"-23;"," +#20002=* +lines(#20002,#20001,"-23;"," ") -hasLocation(#20052,#20004) -#20053=* -lines(#20053,#20001,"+42;"," +#20003=@"loc,{#10000},1,1,1,4" +locations_default(#20003,#10000,1,1,1,4) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"+42;"," ") -hasLocation(#20053,#20010) -#20054=* -lines(#20054,#20001,"!true;"," +#20005=@"loc,{#10000},2,1,2,4" +locations_default(#20005,#10000,2,1,2,4) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"!true;"," ") -hasLocation(#20054,#20016) -#20055=* -lines(#20055,#20001,"~2;"," +#20007=@"loc,{#10000},3,1,3,6" +locations_default(#20007,#10000,3,1,3,6) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001,"~2;"," ") -hasLocation(#20055,#20022) -#20056=* -lines(#20056,#20001,"typeof Object;"," +#20009=@"loc,{#10000},4,1,4,3" +locations_default(#20009,#10000,4,1,4,3) +hasLocation(#20008,#20009) +#20010=* +lines(#20010,#20001,"typeof Object;"," ") -hasLocation(#20056,#20028) -#20057=* -lines(#20057,#20001,"void(0);"," +#20011=@"loc,{#10000},5,1,5,14" +locations_default(#20011,#10000,5,1,5,14) +hasLocation(#20010,#20011) +#20012=* +lines(#20012,#20001,"void(0);"," ") -hasLocation(#20057,#20035) -#20058=* -lines(#20058,#20001,"delete Object.prototype;","") -hasLocation(#20058,#20043) +#20013=@"loc,{#10000},6,1,6,8" +locations_default(#20013,#10000,6,1,6,8) +hasLocation(#20012,#20013) +#20014=* +lines(#20014,#20001,"delete Object.prototype;","") +#20015=@"loc,{#10000},7,1,7,24" +locations_default(#20015,#10000,7,1,7,24) +hasLocation(#20014,#20015) numlines(#20001,7,7,0) -#20059=* -tokeninfo(#20059,8,#20001,0,"-") -#20060=@"loc,{#10000},1,1,1,1" -locations_default(#20060,#10000,1,1,1,1) -hasLocation(#20059,#20060) -#20061=* -tokeninfo(#20061,3,#20001,1,"23") -hasLocation(#20061,#20008) +#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,3,#20001,1,"23") +#20019=@"loc,{#10000},1,2,1,3" +locations_default(#20019,#10000,1,2,1,3) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,2,";") +#20021=@"loc,{#10000},1,4,1,4" +locations_default(#20021,#10000,1,4,1,4) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,3,"+") +#20023=@"loc,{#10000},2,1,2,1" +locations_default(#20023,#10000,2,1,2,1) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,3,#20001,4,"42") +#20025=@"loc,{#10000},2,2,2,3" +locations_default(#20025,#10000,2,2,2,3) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,5,";") +#20027=@"loc,{#10000},2,4,2,4" +locations_default(#20027,#10000,2,4,2,4) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,6,"!") +#20029=@"loc,{#10000},3,1,3,1" +locations_default(#20029,#10000,3,1,3,1) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,2,#20001,7,"true") +#20031=@"loc,{#10000},3,2,3,5" +locations_default(#20031,#10000,3,2,3,5) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,8,";") +#20033=@"loc,{#10000},3,6,3,6" +locations_default(#20033,#10000,3,6,3,6) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,9,"~") +#20035=@"loc,{#10000},4,1,4,1" +locations_default(#20035,#10000,4,1,4,1) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,3,#20001,10,"2") +#20037=@"loc,{#10000},4,2,4,2" +locations_default(#20037,#10000,4,2,4,2) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,8,#20001,11,";") +#20039=@"loc,{#10000},4,3,4,3" +locations_default(#20039,#10000,4,3,4,3) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,7,#20001,12,"typeof") +#20041=@"loc,{#10000},5,1,5,6" +locations_default(#20041,#10000,5,1,5,6) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,6,#20001,13,"Object") +#20043=@"loc,{#10000},5,8,5,13" +locations_default(#20043,#10000,5,8,5,13) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,14,";") +#20045=@"loc,{#10000},5,14,5,14" +locations_default(#20045,#10000,5,14,5,14) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,7,#20001,15,"void") +#20047=@"loc,{#10000},6,1,6,4" +locations_default(#20047,#10000,6,1,6,4) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,8,#20001,16,"(") +#20049=@"loc,{#10000},6,5,6,5" +locations_default(#20049,#10000,6,5,6,5) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,3,#20001,17,"0") +#20051=@"loc,{#10000},6,6,6,6" +locations_default(#20051,#10000,6,6,6,6) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,8,#20001,18,")") +#20053=@"loc,{#10000},6,7,6,7" +locations_default(#20053,#10000,6,7,6,7) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,8,#20001,19,";") +#20055=@"loc,{#10000},6,8,6,8" +locations_default(#20055,#10000,6,8,6,8) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,7,#20001,20,"delete") +#20057=@"loc,{#10000},7,1,7,6" +locations_default(#20057,#10000,7,1,7,6) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,6,#20001,21,"Object") +#20059=@"loc,{#10000},7,8,7,13" +locations_default(#20059,#10000,7,8,7,13) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,8,#20001,22,".") +#20061=@"loc,{#10000},7,14,7,14" +locations_default(#20061,#10000,7,14,7,14) +hasLocation(#20060,#20061) #20062=* -tokeninfo(#20062,8,#20001,2,";") -#20063=@"loc,{#10000},1,4,1,4" -locations_default(#20063,#10000,1,4,1,4) +tokeninfo(#20062,6,#20001,23,"prototype") +#20063=@"loc,{#10000},7,15,7,23" +locations_default(#20063,#10000,7,15,7,23) hasLocation(#20062,#20063) #20064=* -tokeninfo(#20064,8,#20001,3,"+") -#20065=@"loc,{#10000},2,1,2,1" -locations_default(#20065,#10000,2,1,2,1) +tokeninfo(#20064,8,#20001,24,";") +#20065=@"loc,{#10000},7,24,7,24" +locations_default(#20065,#10000,7,24,7,24) hasLocation(#20064,#20065) #20066=* -tokeninfo(#20066,3,#20001,4,"42") -hasLocation(#20066,#20014) -#20067=* -tokeninfo(#20067,8,#20001,5,";") -#20068=@"loc,{#10000},2,4,2,4" -locations_default(#20068,#10000,2,4,2,4) -hasLocation(#20067,#20068) +tokeninfo(#20066,0,#20001,25,"") +#20067=@"loc,{#10000},7,25,7,24" +locations_default(#20067,#10000,7,25,7,24) +hasLocation(#20066,#20067) +toplevels(#20001,0) +#20068=@"loc,{#10000},1,1,7,24" +locations_default(#20068,#10000,1,1,7,24) +hasLocation(#20001,#20068) #20069=* -tokeninfo(#20069,8,#20001,6,"!") -#20070=@"loc,{#10000},3,1,3,1" -locations_default(#20070,#10000,3,1,3,1) -hasLocation(#20069,#20070) -#20071=* -tokeninfo(#20071,2,#20001,7,"true") -hasLocation(#20071,#20020) +stmts(#20069,2,#20001,0,"-23;") +hasLocation(#20069,#20003) +stmtContainers(#20069,#20001) +#20070=* +exprs(#20070,16,#20069,0,"-23") +#20071=@"loc,{#10000},1,1,1,3" +locations_default(#20071,#10000,1,1,1,3) +hasLocation(#20070,#20071) +enclosingStmt(#20070,#20069) +exprContainers(#20070,#20001) #20072=* -tokeninfo(#20072,8,#20001,8,";") -#20073=@"loc,{#10000},3,6,3,6" -locations_default(#20073,#10000,3,6,3,6) -hasLocation(#20072,#20073) +exprs(#20072,3,#20070,0,"23") +hasLocation(#20072,#20019) +enclosingStmt(#20072,#20069) +exprContainers(#20072,#20001) +literals("23","23",#20072) +#20073=* +stmts(#20073,2,#20001,1,"+42;") +hasLocation(#20073,#20005) +stmtContainers(#20073,#20001) #20074=* -tokeninfo(#20074,8,#20001,9,"~") -#20075=@"loc,{#10000},4,1,4,1" -locations_default(#20075,#10000,4,1,4,1) +exprs(#20074,17,#20073,0,"+42") +#20075=@"loc,{#10000},2,1,2,3" +locations_default(#20075,#10000,2,1,2,3) hasLocation(#20074,#20075) +enclosingStmt(#20074,#20073) +exprContainers(#20074,#20001) #20076=* -tokeninfo(#20076,3,#20001,10,"2") -hasLocation(#20076,#20026) +exprs(#20076,3,#20074,0,"42") +hasLocation(#20076,#20025) +enclosingStmt(#20076,#20073) +exprContainers(#20076,#20001) +literals("42","42",#20076) #20077=* -tokeninfo(#20077,8,#20001,11,";") -#20078=@"loc,{#10000},4,3,4,3" -locations_default(#20078,#10000,4,3,4,3) -hasLocation(#20077,#20078) -#20079=* -tokeninfo(#20079,7,#20001,12,"typeof") -#20080=@"loc,{#10000},5,1,5,6" -locations_default(#20080,#10000,5,1,5,6) -hasLocation(#20079,#20080) +stmts(#20077,2,#20001,2,"!true;") +hasLocation(#20077,#20007) +stmtContainers(#20077,#20001) +#20078=* +exprs(#20078,18,#20077,0,"!true") +#20079=@"loc,{#10000},3,1,3,5" +locations_default(#20079,#10000,3,1,3,5) +hasLocation(#20078,#20079) +enclosingStmt(#20078,#20077) +exprContainers(#20078,#20001) +#20080=* +exprs(#20080,2,#20078,0,"true") +hasLocation(#20080,#20031) +enclosingStmt(#20080,#20077) +exprContainers(#20080,#20001) +literals("true","true",#20080) #20081=* -tokeninfo(#20081,6,#20001,13,"Object") -hasLocation(#20081,#20032) +stmts(#20081,2,#20001,3,"~2;") +hasLocation(#20081,#20009) +stmtContainers(#20081,#20001) #20082=* -tokeninfo(#20082,8,#20001,14,";") -#20083=@"loc,{#10000},5,14,5,14" -locations_default(#20083,#10000,5,14,5,14) +exprs(#20082,19,#20081,0,"~2") +#20083=@"loc,{#10000},4,1,4,2" +locations_default(#20083,#10000,4,1,4,2) hasLocation(#20082,#20083) +enclosingStmt(#20082,#20081) +exprContainers(#20082,#20001) #20084=* -tokeninfo(#20084,7,#20001,15,"void") -#20085=@"loc,{#10000},6,1,6,4" -locations_default(#20085,#10000,6,1,6,4) -hasLocation(#20084,#20085) +exprs(#20084,3,#20082,0,"2") +hasLocation(#20084,#20037) +enclosingStmt(#20084,#20081) +exprContainers(#20084,#20001) +literals("2","2",#20084) +#20085=* +stmts(#20085,2,#20001,4,"typeof Object;") +hasLocation(#20085,#20011) +stmtContainers(#20085,#20001) #20086=* -tokeninfo(#20086,8,#20001,16,"(") -#20087=@"loc,{#10000},6,5,6,5" -locations_default(#20087,#10000,6,5,6,5) +exprs(#20086,20,#20085,0,"typeof Object") +#20087=@"loc,{#10000},5,1,5,13" +locations_default(#20087,#10000,5,1,5,13) hasLocation(#20086,#20087) +enclosingStmt(#20086,#20085) +exprContainers(#20086,#20001) #20088=* -tokeninfo(#20088,3,#20001,17,"0") -hasLocation(#20088,#20041) -#20089=* -tokeninfo(#20089,8,#20001,18,")") -#20090=@"loc,{#10000},6,7,6,7" -locations_default(#20090,#10000,6,7,6,7) -hasLocation(#20089,#20090) +exprs(#20088,79,#20086,0,"Object") +hasLocation(#20088,#20043) +enclosingStmt(#20088,#20085) +exprContainers(#20088,#20001) +literals("Object","Object",#20088) +#20089=@"var;{Object};{#20000}" +variables(#20089,"Object",#20000) +bind(#20088,#20089) +#20090=* +stmts(#20090,2,#20001,5,"void(0);") +hasLocation(#20090,#20013) +stmtContainers(#20090,#20001) #20091=* -tokeninfo(#20091,8,#20001,19,";") -#20092=@"loc,{#10000},6,8,6,8" -locations_default(#20092,#10000,6,8,6,8) +exprs(#20091,21,#20090,0,"void(0)") +#20092=@"loc,{#10000},6,1,6,7" +locations_default(#20092,#10000,6,1,6,7) hasLocation(#20091,#20092) +enclosingStmt(#20091,#20090) +exprContainers(#20091,#20001) #20093=* -tokeninfo(#20093,7,#20001,20,"delete") -#20094=@"loc,{#10000},7,1,7,6" -locations_default(#20094,#10000,7,1,7,6) +exprs(#20093,63,#20091,0,"(0)") +#20094=@"loc,{#10000},6,5,6,7" +locations_default(#20094,#10000,6,5,6,7) hasLocation(#20093,#20094) +enclosingStmt(#20093,#20090) +exprContainers(#20093,#20001) #20095=* -tokeninfo(#20095,6,#20001,21,"Object") -hasLocation(#20095,#20049) +exprs(#20095,3,#20093,0,"0") +hasLocation(#20095,#20051) +enclosingStmt(#20095,#20090) +exprContainers(#20095,#20001) +literals("0","0",#20095) #20096=* -tokeninfo(#20096,8,#20001,22,".") -#20097=@"loc,{#10000},7,14,7,14" -locations_default(#20097,#10000,7,14,7,14) -hasLocation(#20096,#20097) -#20098=* -tokeninfo(#20098,6,#20001,23,"prototype") -hasLocation(#20098,#20051) +stmts(#20096,2,#20001,6,"delete ... totype;") +hasLocation(#20096,#20015) +stmtContainers(#20096,#20001) +#20097=* +exprs(#20097,22,#20096,0,"delete ... ototype") +#20098=@"loc,{#10000},7,1,7,23" +locations_default(#20098,#10000,7,1,7,23) +hasLocation(#20097,#20098) +enclosingStmt(#20097,#20096) +exprContainers(#20097,#20001) #20099=* -tokeninfo(#20099,8,#20001,24,";") -#20100=@"loc,{#10000},7,24,7,24" -locations_default(#20100,#10000,7,24,7,24) +exprs(#20099,14,#20097,0,"Object.prototype") +#20100=@"loc,{#10000},7,8,7,23" +locations_default(#20100,#10000,7,8,7,23) hasLocation(#20099,#20100) +enclosingStmt(#20099,#20096) +exprContainers(#20099,#20001) #20101=* -tokeninfo(#20101,0,#20001,25,"") -#20102=@"loc,{#10000},7,25,7,24" -locations_default(#20102,#10000,7,25,7,24) -hasLocation(#20101,#20102) +exprs(#20101,79,#20099,0,"Object") +hasLocation(#20101,#20059) +enclosingStmt(#20101,#20096) +exprContainers(#20101,#20001) +literals("Object","Object",#20101) +bind(#20101,#20089) +#20102=* +exprs(#20102,0,#20099,1,"prototype") +hasLocation(#20102,#20063) +enclosingStmt(#20102,#20096) +exprContainers(#20102,#20001) +literals("prototype","prototype",#20102) #20103=* entry_cfg_node(#20103,#20001) #20104=@"loc,{#10000},1,1,1,0" @@ -335,31 +335,31 @@ locations_default(#20104,#10000,1,1,1,0) hasLocation(#20103,#20104) #20105=* exit_cfg_node(#20105,#20001) -hasLocation(#20105,#20102) -successor(#20042,#20048) -successor(#20050,#20046) -successor(#20048,#20050) -successor(#20046,#20044) -successor(#20044,#20105) -successor(#20034,#20038) -successor(#20038,#20040) -successor(#20040,#20036) -successor(#20036,#20042) -successor(#20027,#20031) -successor(#20031,#20029) -successor(#20029,#20034) -successor(#20021,#20025) -successor(#20025,#20023) -successor(#20023,#20027) -successor(#20015,#20019) -successor(#20019,#20017) -successor(#20017,#20021) -successor(#20009,#20013) -successor(#20013,#20011) -successor(#20011,#20015) -successor(#20003,#20007) -successor(#20007,#20005) -successor(#20005,#20009) -successor(#20103,#20003) +hasLocation(#20105,#20067) +successor(#20096,#20101) +successor(#20102,#20099) +successor(#20101,#20102) +successor(#20099,#20097) +successor(#20097,#20105) +successor(#20090,#20093) +successor(#20093,#20095) +successor(#20095,#20091) +successor(#20091,#20096) +successor(#20085,#20088) +successor(#20088,#20086) +successor(#20086,#20090) +successor(#20081,#20084) +successor(#20084,#20082) +successor(#20082,#20085) +successor(#20077,#20080) +successor(#20080,#20078) +successor(#20078,#20081) +successor(#20073,#20076) +successor(#20076,#20074) +successor(#20074,#20077) +successor(#20069,#20072) +successor(#20072,#20070) +successor(#20070,#20073) +successor(#20103,#20069) numlines(#10000,7,7,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/exprs/output/trap/update.js.trap b/javascript/extractor/tests/exprs/output/trap/update.js.trap index ea3b22006e9..1e655b2174f 100644 --- a/javascript/extractor/tests/exprs/output/trap/update.js.trap +++ b/javascript/extractor/tests/exprs/output/trap/update.js.trap @@ -9,176 +9,176 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,5,0" -locations_default(#20002,#10000,1,1,5,0) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"++a;") -#20004=@"loc,{#10000},1,1,1,4" -locations_default(#20004,#10000,1,1,1,4) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,59,#20003,0,"++a") -#20006=@"loc,{#10000},1,1,1,3" -locations_default(#20006,#10000,1,1,1,3) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -#20007=* -exprs(#20007,79,#20005,0,"a") -#20008=@"loc,{#10000},1,3,1,3" -locations_default(#20008,#10000,1,3,1,3) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20003) -exprContainers(#20007,#20001) -literals("a","a",#20007) -#20009=@"var;{a};{#20000}" -variables(#20009,"a",#20000) -bind(#20007,#20009) -#20010=* -stmts(#20010,2,#20001,1,"a++;") -#20011=@"loc,{#10000},2,1,2,4" -locations_default(#20011,#10000,2,1,2,4) -hasLocation(#20010,#20011) -stmtContainers(#20010,#20001) -#20012=* -exprs(#20012,60,#20010,0,"a++") -#20013=@"loc,{#10000},2,1,2,3" -locations_default(#20013,#10000,2,1,2,3) -hasLocation(#20012,#20013) -enclosingStmt(#20012,#20010) -exprContainers(#20012,#20001) -#20014=* -exprs(#20014,79,#20012,0,"a") -#20015=@"loc,{#10000},2,1,2,1" -locations_default(#20015,#10000,2,1,2,1) -hasLocation(#20014,#20015) -enclosingStmt(#20014,#20010) -exprContainers(#20014,#20001) -literals("a","a",#20014) -bind(#20014,#20009) -#20016=* -stmts(#20016,2,#20001,2,"--b;") -#20017=@"loc,{#10000},3,1,3,4" -locations_default(#20017,#10000,3,1,3,4) -hasLocation(#20016,#20017) -stmtContainers(#20016,#20001) -#20018=* -exprs(#20018,61,#20016,0,"--b") -#20019=@"loc,{#10000},3,1,3,3" -locations_default(#20019,#10000,3,1,3,3) -hasLocation(#20018,#20019) -enclosingStmt(#20018,#20016) -exprContainers(#20018,#20001) -#20020=* -exprs(#20020,79,#20018,0,"b") -#20021=@"loc,{#10000},3,3,3,3" -locations_default(#20021,#10000,3,3,3,3) -hasLocation(#20020,#20021) -enclosingStmt(#20020,#20016) -exprContainers(#20020,#20001) -literals("b","b",#20020) -#20022=@"var;{b};{#20000}" -variables(#20022,"b",#20000) -bind(#20020,#20022) -#20023=* -stmts(#20023,2,#20001,3,"b--;") -#20024=@"loc,{#10000},4,1,4,4" -locations_default(#20024,#10000,4,1,4,4) -hasLocation(#20023,#20024) -stmtContainers(#20023,#20001) -#20025=* -exprs(#20025,62,#20023,0,"b--") -#20026=@"loc,{#10000},4,1,4,3" -locations_default(#20026,#10000,4,1,4,3) -hasLocation(#20025,#20026) -enclosingStmt(#20025,#20023) -exprContainers(#20025,#20001) -#20027=* -exprs(#20027,79,#20025,0,"b") -#20028=@"loc,{#10000},4,1,4,1" -locations_default(#20028,#10000,4,1,4,1) -hasLocation(#20027,#20028) -enclosingStmt(#20027,#20023) -exprContainers(#20027,#20001) -literals("b","b",#20027) -bind(#20027,#20022) -#20029=* -lines(#20029,#20001,"++a;"," +#20002=* +lines(#20002,#20001,"++a;"," ") -hasLocation(#20029,#20004) -#20030=* -lines(#20030,#20001,"a++;"," +#20003=@"loc,{#10000},1,1,1,4" +locations_default(#20003,#10000,1,1,1,4) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"a++;"," ") -hasLocation(#20030,#20011) -#20031=* -lines(#20031,#20001,"--b;"," +#20005=@"loc,{#10000},2,1,2,4" +locations_default(#20005,#10000,2,1,2,4) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"--b;"," ") -hasLocation(#20031,#20017) -#20032=* -lines(#20032,#20001,"b--;"," +#20007=@"loc,{#10000},3,1,3,4" +locations_default(#20007,#10000,3,1,3,4) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001,"b--;"," ") -hasLocation(#20032,#20024) +#20009=@"loc,{#10000},4,1,4,4" +locations_default(#20009,#10000,4,1,4,4) +hasLocation(#20008,#20009) numlines(#20001,4,4,0) -#20033=* -tokeninfo(#20033,8,#20001,0,"++") -#20034=@"loc,{#10000},1,1,1,2" -locations_default(#20034,#10000,1,1,1,2) -hasLocation(#20033,#20034) -#20035=* -tokeninfo(#20035,6,#20001,1,"a") -hasLocation(#20035,#20008) -#20036=* -tokeninfo(#20036,8,#20001,2,";") -#20037=@"loc,{#10000},1,4,1,4" -locations_default(#20037,#10000,1,4,1,4) -hasLocation(#20036,#20037) +#20010=* +tokeninfo(#20010,8,#20001,0,"++") +#20011=@"loc,{#10000},1,1,1,2" +locations_default(#20011,#10000,1,1,1,2) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,6,#20001,1,"a") +#20013=@"loc,{#10000},1,3,1,3" +locations_default(#20013,#10000,1,3,1,3) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,2,";") +#20015=@"loc,{#10000},1,4,1,4" +locations_default(#20015,#10000,1,4,1,4) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,6,#20001,3,"a") +#20017=@"loc,{#10000},2,1,2,1" +locations_default(#20017,#10000,2,1,2,1) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,4,"++") +#20019=@"loc,{#10000},2,2,2,3" +locations_default(#20019,#10000,2,2,2,3) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,5,";") +#20021=@"loc,{#10000},2,4,2,4" +locations_default(#20021,#10000,2,4,2,4) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,6,"--") +#20023=@"loc,{#10000},3,1,3,2" +locations_default(#20023,#10000,3,1,3,2) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,6,#20001,7,"b") +#20025=@"loc,{#10000},3,3,3,3" +locations_default(#20025,#10000,3,3,3,3) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,8,";") +#20027=@"loc,{#10000},3,4,3,4" +locations_default(#20027,#10000,3,4,3,4) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,6,#20001,9,"b") +#20029=@"loc,{#10000},4,1,4,1" +locations_default(#20029,#10000,4,1,4,1) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,10,"--") +#20031=@"loc,{#10000},4,2,4,3" +locations_default(#20031,#10000,4,2,4,3) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,11,";") +#20033=@"loc,{#10000},4,4,4,4" +locations_default(#20033,#10000,4,4,4,4) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,0,#20001,12,"") +#20035=@"loc,{#10000},5,1,5,0" +locations_default(#20035,#10000,5,1,5,0) +hasLocation(#20034,#20035) +toplevels(#20001,0) +#20036=@"loc,{#10000},1,1,5,0" +locations_default(#20036,#10000,1,1,5,0) +hasLocation(#20001,#20036) +#20037=* +stmts(#20037,2,#20001,0,"++a;") +hasLocation(#20037,#20003) +stmtContainers(#20037,#20001) #20038=* -tokeninfo(#20038,6,#20001,3,"a") -hasLocation(#20038,#20015) -#20039=* -tokeninfo(#20039,8,#20001,4,"++") -#20040=@"loc,{#10000},2,2,2,3" -locations_default(#20040,#10000,2,2,2,3) -hasLocation(#20039,#20040) -#20041=* -tokeninfo(#20041,8,#20001,5,";") -#20042=@"loc,{#10000},2,4,2,4" -locations_default(#20042,#10000,2,4,2,4) -hasLocation(#20041,#20042) +exprs(#20038,59,#20037,0,"++a") +#20039=@"loc,{#10000},1,1,1,3" +locations_default(#20039,#10000,1,1,1,3) +hasLocation(#20038,#20039) +enclosingStmt(#20038,#20037) +exprContainers(#20038,#20001) +#20040=* +exprs(#20040,79,#20038,0,"a") +hasLocation(#20040,#20013) +enclosingStmt(#20040,#20037) +exprContainers(#20040,#20001) +literals("a","a",#20040) +#20041=@"var;{a};{#20000}" +variables(#20041,"a",#20000) +bind(#20040,#20041) +#20042=* +stmts(#20042,2,#20001,1,"a++;") +hasLocation(#20042,#20005) +stmtContainers(#20042,#20001) #20043=* -tokeninfo(#20043,8,#20001,6,"--") -#20044=@"loc,{#10000},3,1,3,2" -locations_default(#20044,#10000,3,1,3,2) +exprs(#20043,60,#20042,0,"a++") +#20044=@"loc,{#10000},2,1,2,3" +locations_default(#20044,#10000,2,1,2,3) hasLocation(#20043,#20044) +enclosingStmt(#20043,#20042) +exprContainers(#20043,#20001) #20045=* -tokeninfo(#20045,6,#20001,7,"b") -hasLocation(#20045,#20021) +exprs(#20045,79,#20043,0,"a") +hasLocation(#20045,#20017) +enclosingStmt(#20045,#20042) +exprContainers(#20045,#20001) +literals("a","a",#20045) +bind(#20045,#20041) #20046=* -tokeninfo(#20046,8,#20001,8,";") -#20047=@"loc,{#10000},3,4,3,4" -locations_default(#20047,#10000,3,4,3,4) -hasLocation(#20046,#20047) -#20048=* -tokeninfo(#20048,6,#20001,9,"b") -hasLocation(#20048,#20028) +stmts(#20046,2,#20001,2,"--b;") +hasLocation(#20046,#20007) +stmtContainers(#20046,#20001) +#20047=* +exprs(#20047,61,#20046,0,"--b") +#20048=@"loc,{#10000},3,1,3,3" +locations_default(#20048,#10000,3,1,3,3) +hasLocation(#20047,#20048) +enclosingStmt(#20047,#20046) +exprContainers(#20047,#20001) #20049=* -tokeninfo(#20049,8,#20001,10,"--") -#20050=@"loc,{#10000},4,2,4,3" -locations_default(#20050,#10000,4,2,4,3) -hasLocation(#20049,#20050) +exprs(#20049,79,#20047,0,"b") +hasLocation(#20049,#20025) +enclosingStmt(#20049,#20046) +exprContainers(#20049,#20001) +literals("b","b",#20049) +#20050=@"var;{b};{#20000}" +variables(#20050,"b",#20000) +bind(#20049,#20050) #20051=* -tokeninfo(#20051,8,#20001,11,";") -#20052=@"loc,{#10000},4,4,4,4" -locations_default(#20052,#10000,4,4,4,4) -hasLocation(#20051,#20052) -#20053=* -tokeninfo(#20053,0,#20001,12,"") -#20054=@"loc,{#10000},5,1,5,0" -locations_default(#20054,#10000,5,1,5,0) -hasLocation(#20053,#20054) +stmts(#20051,2,#20001,3,"b--;") +hasLocation(#20051,#20009) +stmtContainers(#20051,#20001) +#20052=* +exprs(#20052,62,#20051,0,"b--") +#20053=@"loc,{#10000},4,1,4,3" +locations_default(#20053,#10000,4,1,4,3) +hasLocation(#20052,#20053) +enclosingStmt(#20052,#20051) +exprContainers(#20052,#20001) +#20054=* +exprs(#20054,79,#20052,0,"b") +hasLocation(#20054,#20029) +enclosingStmt(#20054,#20051) +exprContainers(#20054,#20001) +literals("b","b",#20054) +bind(#20054,#20050) #20055=* entry_cfg_node(#20055,#20001) #20056=@"loc,{#10000},1,1,1,0" @@ -186,19 +186,19 @@ locations_default(#20056,#10000,1,1,1,0) hasLocation(#20055,#20056) #20057=* exit_cfg_node(#20057,#20001) -hasLocation(#20057,#20054) -successor(#20023,#20027) -successor(#20027,#20025) -successor(#20025,#20057) -successor(#20016,#20020) -successor(#20020,#20018) -successor(#20018,#20023) -successor(#20010,#20014) -successor(#20014,#20012) -successor(#20012,#20016) -successor(#20003,#20007) -successor(#20007,#20005) -successor(#20005,#20010) -successor(#20055,#20003) +hasLocation(#20057,#20035) +successor(#20051,#20054) +successor(#20054,#20052) +successor(#20052,#20057) +successor(#20046,#20049) +successor(#20049,#20047) +successor(#20047,#20051) +successor(#20042,#20045) +successor(#20045,#20043) +successor(#20043,#20046) +successor(#20037,#20040) +successor(#20040,#20038) +successor(#20038,#20042) +successor(#20055,#20037) numlines(#10000,4,4,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/extensions/output/trap/tst.es6.trap b/javascript/extractor/tests/extensions/output/trap/tst.es6.trap index a9654e04dff..26a437438c1 100644 --- a/javascript/extractor/tests/extensions/output/trap/tst.es6.trap +++ b/javascript/extractor/tests/extensions/output/trap/tst.es6.trap @@ -9,101 +9,102 @@ 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=* -stmts(#20004,2,#20001,0,"console ... ES6"");") -#20005=@"loc,{#10000},1,1,1,25" -locations_default(#20005,#10000,1,1,1,25) -hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) -#20006=* -exprs(#20006,13,#20004,0,"console ... o ES6"")") -#20007=@"loc,{#10000},1,1,1,24" -locations_default(#20007,#10000,1,1,1,24) -hasLocation(#20006,#20007) -enclosingStmt(#20006,#20004) -exprContainers(#20006,#20001) -#20008=* -exprs(#20008,14,#20006,-1,"console.log") -#20009=@"loc,{#10000},1,1,1,11" -locations_default(#20009,#10000,1,1,1,11) -hasLocation(#20008,#20009) -enclosingStmt(#20008,#20004) -exprContainers(#20008,#20001) -#20010=* -exprs(#20010,79,#20008,0,"console") -#20011=@"loc,{#10000},1,1,1,7" -locations_default(#20011,#10000,1,1,1,7) -hasLocation(#20010,#20011) -enclosingStmt(#20010,#20004) -exprContainers(#20010,#20001) -literals("console","console",#20010) -#20012=@"var;{console};{#20000}" -variables(#20012,"console",#20000) -bind(#20010,#20012) -#20013=* -exprs(#20013,0,#20008,1,"log") -#20014=@"loc,{#10000},1,9,1,11" -locations_default(#20014,#10000,1,9,1,11) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20004) -exprContainers(#20013,#20001) -literals("log","log",#20013) -#20015=* -exprs(#20015,4,#20006,0,"""Hello ES6""") -#20016=@"loc,{#10000},1,13,1,23" -locations_default(#20016,#10000,1,13,1,23) -hasLocation(#20015,#20016) -enclosingStmt(#20015,#20004) -exprContainers(#20015,#20001) -literals("Hello ES6","""Hello ES6""",#20015) -#20017=* -lines(#20017,#20001,"console.log(""Hello ES6"");"," +#20002=* +lines(#20002,#20001,"console.log(""Hello ES6"");"," ") -hasLocation(#20017,#20005) +#20003=@"loc,{#10000},1,1,1,25" +locations_default(#20003,#10000,1,1,1,25) +hasLocation(#20002,#20003) numlines(#20001,1,1,0) +#20004=* +tokeninfo(#20004,6,#20001,0,"console") +#20005=@"loc,{#10000},1,1,1,7" +locations_default(#20005,#10000,1,1,1,7) +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,"log") +#20009=@"loc,{#10000},1,9,1,11" +locations_default(#20009,#10000,1,9,1,11) +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,4,#20001,4,"""Hello ES6""") +#20013=@"loc,{#10000},1,13,1,23" +locations_default(#20013,#10000,1,13,1,23) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,5,")") +#20015=@"loc,{#10000},1,24,1,24" +locations_default(#20015,#10000,1,24,1,24) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,6,";") +#20017=@"loc,{#10000},1,25,1,25" +locations_default(#20017,#10000,1,25,1,25) +hasLocation(#20016,#20017) #20018=* -tokeninfo(#20018,6,#20001,0,"console") -hasLocation(#20018,#20011) -#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,"log") -hasLocation(#20021,#20014) +tokeninfo(#20018,0,#20001,7,"") +#20019=@"loc,{#10000},2,1,2,0" +locations_default(#20019,#10000,2,1,2,0) +hasLocation(#20018,#20019) +toplevels(#20001,0) +#20020=@"loc,{#10000},1,1,2,0" +locations_default(#20020,#10000,1,1,2,0) +hasLocation(#20001,#20020) +#20021=@"module;{#10000},1,1" +scopes(#20021,3) +scopenodes(#20001,#20021) +scopenesting(#20021,#20000) +isModule(#20001) +isES2015Module(#20001) #20022=* -tokeninfo(#20022,8,#20001,3,"(") -#20023=@"loc,{#10000},1,12,1,12" -locations_default(#20023,#10000,1,12,1,12) -hasLocation(#20022,#20023) -#20024=* -tokeninfo(#20024,4,#20001,4,"""Hello ES6""") -hasLocation(#20024,#20016) +stmts(#20022,2,#20001,0,"console ... ES6"");") +hasLocation(#20022,#20003) +stmtContainers(#20022,#20001) +#20023=* +exprs(#20023,13,#20022,0,"console ... o ES6"")") +#20024=@"loc,{#10000},1,1,1,24" +locations_default(#20024,#10000,1,1,1,24) +hasLocation(#20023,#20024) +enclosingStmt(#20023,#20022) +exprContainers(#20023,#20001) #20025=* -tokeninfo(#20025,8,#20001,5,")") -#20026=@"loc,{#10000},1,24,1,24" -locations_default(#20026,#10000,1,24,1,24) +exprs(#20025,14,#20023,-1,"console.log") +#20026=@"loc,{#10000},1,1,1,11" +locations_default(#20026,#10000,1,1,1,11) hasLocation(#20025,#20026) +enclosingStmt(#20025,#20022) +exprContainers(#20025,#20001) #20027=* -tokeninfo(#20027,8,#20001,6,";") -#20028=@"loc,{#10000},1,25,1,25" -locations_default(#20028,#10000,1,25,1,25) -hasLocation(#20027,#20028) +exprs(#20027,79,#20025,0,"console") +hasLocation(#20027,#20005) +enclosingStmt(#20027,#20022) +exprContainers(#20027,#20001) +literals("console","console",#20027) +#20028=@"var;{console};{#20000}" +variables(#20028,"console",#20000) +bind(#20027,#20028) #20029=* -tokeninfo(#20029,0,#20001,7,"") -#20030=@"loc,{#10000},2,1,2,0" -locations_default(#20030,#10000,2,1,2,0) -hasLocation(#20029,#20030) +exprs(#20029,0,#20025,1,"log") +hasLocation(#20029,#20009) +enclosingStmt(#20029,#20022) +exprContainers(#20029,#20001) +literals("log","log",#20029) +#20030=* +exprs(#20030,4,#20023,0,"""Hello ES6""") +hasLocation(#20030,#20013) +enclosingStmt(#20030,#20022) +exprContainers(#20030,#20001) +literals("Hello ES6","""Hello ES6""",#20030) #20031=* entry_cfg_node(#20031,#20001) #20032=@"loc,{#10000},1,1,1,0" @@ -111,13 +112,13 @@ locations_default(#20032,#10000,1,1,1,0) hasLocation(#20031,#20032) #20033=* exit_cfg_node(#20033,#20001) -hasLocation(#20033,#20030) -successor(#20004,#20010) -successor(#20015,#20006) -successor(#20013,#20008) -successor(#20010,#20013) -successor(#20008,#20015) -successor(#20006,#20033) -successor(#20031,#20004) +hasLocation(#20033,#20019) +successor(#20022,#20027) +successor(#20030,#20023) +successor(#20029,#20025) +successor(#20027,#20029) +successor(#20025,#20030) +successor(#20023,#20033) +successor(#20031,#20022) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/extensions/output/trap/tst2.es.trap b/javascript/extractor/tests/extensions/output/trap/tst2.es.trap index af533ef6a61..30172094f29 100644 --- a/javascript/extractor/tests/extensions/output/trap/tst2.es.trap +++ b/javascript/extractor/tests/extensions/output/trap/tst2.es.trap @@ -9,101 +9,102 @@ 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=* -stmts(#20004,2,#20001,0,"console ... o ES"");") -#20005=@"loc,{#10000},1,1,1,24" -locations_default(#20005,#10000,1,1,1,24) -hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) -#20006=* -exprs(#20006,13,#20004,0,"console ... lo ES"")") -#20007=@"loc,{#10000},1,1,1,23" -locations_default(#20007,#10000,1,1,1,23) -hasLocation(#20006,#20007) -enclosingStmt(#20006,#20004) -exprContainers(#20006,#20001) -#20008=* -exprs(#20008,14,#20006,-1,"console.log") -#20009=@"loc,{#10000},1,1,1,11" -locations_default(#20009,#10000,1,1,1,11) -hasLocation(#20008,#20009) -enclosingStmt(#20008,#20004) -exprContainers(#20008,#20001) -#20010=* -exprs(#20010,79,#20008,0,"console") -#20011=@"loc,{#10000},1,1,1,7" -locations_default(#20011,#10000,1,1,1,7) -hasLocation(#20010,#20011) -enclosingStmt(#20010,#20004) -exprContainers(#20010,#20001) -literals("console","console",#20010) -#20012=@"var;{console};{#20000}" -variables(#20012,"console",#20000) -bind(#20010,#20012) -#20013=* -exprs(#20013,0,#20008,1,"log") -#20014=@"loc,{#10000},1,9,1,11" -locations_default(#20014,#10000,1,9,1,11) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20004) -exprContainers(#20013,#20001) -literals("log","log",#20013) -#20015=* -exprs(#20015,4,#20006,0,"""Hello ES""") -#20016=@"loc,{#10000},1,13,1,22" -locations_default(#20016,#10000,1,13,1,22) -hasLocation(#20015,#20016) -enclosingStmt(#20015,#20004) -exprContainers(#20015,#20001) -literals("Hello ES","""Hello ES""",#20015) -#20017=* -lines(#20017,#20001,"console.log(""Hello ES"");"," +#20002=* +lines(#20002,#20001,"console.log(""Hello ES"");"," ") -hasLocation(#20017,#20005) +#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,6,#20001,0,"console") +#20005=@"loc,{#10000},1,1,1,7" +locations_default(#20005,#10000,1,1,1,7) +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,"log") +#20009=@"loc,{#10000},1,9,1,11" +locations_default(#20009,#10000,1,9,1,11) +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,4,#20001,4,"""Hello ES""") +#20013=@"loc,{#10000},1,13,1,22" +locations_default(#20013,#10000,1,13,1,22) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,5,")") +#20015=@"loc,{#10000},1,23,1,23" +locations_default(#20015,#10000,1,23,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,6,#20001,0,"console") -hasLocation(#20018,#20011) -#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,"log") -hasLocation(#20021,#20014) +tokeninfo(#20018,0,#20001,7,"") +#20019=@"loc,{#10000},2,1,2,0" +locations_default(#20019,#10000,2,1,2,0) +hasLocation(#20018,#20019) +toplevels(#20001,0) +#20020=@"loc,{#10000},1,1,2,0" +locations_default(#20020,#10000,1,1,2,0) +hasLocation(#20001,#20020) +#20021=@"module;{#10000},1,1" +scopes(#20021,3) +scopenodes(#20001,#20021) +scopenesting(#20021,#20000) +isModule(#20001) +isES2015Module(#20001) #20022=* -tokeninfo(#20022,8,#20001,3,"(") -#20023=@"loc,{#10000},1,12,1,12" -locations_default(#20023,#10000,1,12,1,12) -hasLocation(#20022,#20023) -#20024=* -tokeninfo(#20024,4,#20001,4,"""Hello ES""") -hasLocation(#20024,#20016) +stmts(#20022,2,#20001,0,"console ... o ES"");") +hasLocation(#20022,#20003) +stmtContainers(#20022,#20001) +#20023=* +exprs(#20023,13,#20022,0,"console ... lo ES"")") +#20024=@"loc,{#10000},1,1,1,23" +locations_default(#20024,#10000,1,1,1,23) +hasLocation(#20023,#20024) +enclosingStmt(#20023,#20022) +exprContainers(#20023,#20001) #20025=* -tokeninfo(#20025,8,#20001,5,")") -#20026=@"loc,{#10000},1,23,1,23" -locations_default(#20026,#10000,1,23,1,23) +exprs(#20025,14,#20023,-1,"console.log") +#20026=@"loc,{#10000},1,1,1,11" +locations_default(#20026,#10000,1,1,1,11) hasLocation(#20025,#20026) +enclosingStmt(#20025,#20022) +exprContainers(#20025,#20001) #20027=* -tokeninfo(#20027,8,#20001,6,";") -#20028=@"loc,{#10000},1,24,1,24" -locations_default(#20028,#10000,1,24,1,24) -hasLocation(#20027,#20028) +exprs(#20027,79,#20025,0,"console") +hasLocation(#20027,#20005) +enclosingStmt(#20027,#20022) +exprContainers(#20027,#20001) +literals("console","console",#20027) +#20028=@"var;{console};{#20000}" +variables(#20028,"console",#20000) +bind(#20027,#20028) #20029=* -tokeninfo(#20029,0,#20001,7,"") -#20030=@"loc,{#10000},2,1,2,0" -locations_default(#20030,#10000,2,1,2,0) -hasLocation(#20029,#20030) +exprs(#20029,0,#20025,1,"log") +hasLocation(#20029,#20009) +enclosingStmt(#20029,#20022) +exprContainers(#20029,#20001) +literals("log","log",#20029) +#20030=* +exprs(#20030,4,#20023,0,"""Hello ES""") +hasLocation(#20030,#20013) +enclosingStmt(#20030,#20022) +exprContainers(#20030,#20001) +literals("Hello ES","""Hello ES""",#20030) #20031=* entry_cfg_node(#20031,#20001) #20032=@"loc,{#10000},1,1,1,0" @@ -111,13 +112,13 @@ locations_default(#20032,#10000,1,1,1,0) hasLocation(#20031,#20032) #20033=* exit_cfg_node(#20033,#20001) -hasLocation(#20033,#20030) -successor(#20004,#20010) -successor(#20015,#20006) -successor(#20013,#20008) -successor(#20010,#20013) -successor(#20008,#20015) -successor(#20006,#20033) -successor(#20031,#20004) +hasLocation(#20033,#20019) +successor(#20022,#20027) +successor(#20030,#20023) +successor(#20029,#20025) +successor(#20027,#20029) +successor(#20025,#20030) +successor(#20023,#20033) +successor(#20031,#20022) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/externs/output/trap/Point.js.trap b/javascript/extractor/tests/externs/output/trap/Point.js.trap index 1b79ccca210..3b09970ae49 100644 --- a/javascript/extractor/tests/externs/output/trap/Point.js.trap +++ b/javascript/extractor/tests/externs/output/trap/Point.js.trap @@ -9,936 +9,933 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,17,13" -locations_default(#20002,#10000,1,1,17,13) -hasLocation(#20001,#20002) -#20003=@"var;{Point};{#20000}" -variables(#20003,"Point",#20000) -#20004=@"var;{someGlobal};{#20000}" -variables(#20004,"someGlobal",#20000) -#20005=@"var;{MyString};{#20000}" -variables(#20005,"MyString",#20000) +#20002=* +comments(#20002,2,#20001," @typedef {String} ","/** @ty ... ing} */") +#20003=@"loc,{#10000},12,1,12,24" +locations_default(#20003,#10000,12,1,12,24) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"function Point(x, y) {}"," +") +#20005=@"loc,{#10000},1,1,1,23" +locations_default(#20005,#10000,1,1,1,23) +hasLocation(#20004,#20005) #20006=* -stmts(#20006,17,#20001,0,"functio ... , y) {}") -#20007=@"loc,{#10000},1,1,1,23" -locations_default(#20007,#10000,1,1,1,23) +lines(#20006,#20001,""," +") +#20007=@"loc,{#10000},2,1,2,0" +locations_default(#20007,#10000,2,1,2,0) hasLocation(#20006,#20007) -stmtContainers(#20006,#20001) #20008=* -exprs(#20008,78,#20006,-1,"Point") -#20009=@"loc,{#10000},1,10,1,14" -locations_default(#20009,#10000,1,10,1,14) +lines(#20008,#20001,"Point.prototype.move = function(dx, dy) {};"," +") +#20009=@"loc,{#10000},3,1,3,43" +locations_default(#20009,#10000,3,1,3,43) hasLocation(#20008,#20009) -exprContainers(#20008,#20006) -literals("Point","Point",#20008) -decl(#20008,#20003) #20010=* -scopes(#20010,1) -scopenodes(#20006,#20010) -scopenesting(#20010,#20000) -#20011=@"var;{x};{#20010}" -variables(#20011,"x",#20010) +lines(#20010,#20001,"Point.prototype.obj = {};"," +") +#20011=@"loc,{#10000},4,1,4,25" +locations_default(#20011,#10000,4,1,4,25) +hasLocation(#20010,#20011) #20012=* -exprs(#20012,78,#20006,0,"x") -#20013=@"loc,{#10000},1,16,1,16" -locations_default(#20013,#10000,1,16,1,16) +lines(#20012,#20001,"Point.prototype.secret;"," +") +#20013=@"loc,{#10000},5,1,5,23" +locations_default(#20013,#10000,5,1,5,23) hasLocation(#20012,#20013) -exprContainers(#20012,#20006) -literals("x","x",#20012) -decl(#20012,#20011) -#20014=@"var;{y};{#20010}" -variables(#20014,"y",#20010) -#20015=* -exprs(#20015,78,#20006,1,"y") -#20016=@"loc,{#10000},1,19,1,19" -locations_default(#20016,#10000,1,19,1,19) -hasLocation(#20015,#20016) -exprContainers(#20015,#20006) -literals("y","y",#20015) -decl(#20015,#20014) -#20017=@"var;{arguments};{#20010}" -variables(#20017,"arguments",#20010) -isArgumentsObject(#20017) +#20014=* +lines(#20014,#20001,""," +") +#20015=@"loc,{#10000},6,1,6,0" +locations_default(#20015,#10000,6,1,6,0) +hasLocation(#20014,#20015) +#20016=* +lines(#20016,#20001,"Point.ORIGIN;"," +") +#20017=@"loc,{#10000},7,1,7,13" +locations_default(#20017,#10000,7,1,7,13) +hasLocation(#20016,#20017) #20018=* -stmts(#20018,1,#20006,-2,"{}") -#20019=@"loc,{#10000},1,22,1,23" -locations_default(#20019,#10000,1,22,1,23) +lines(#20018,#20001,"Point.foo = function() {};"," +") +#20019=@"loc,{#10000},8,1,8,26" +locations_default(#20019,#10000,8,1,8,26) hasLocation(#20018,#20019) -stmtContainers(#20018,#20006) -numlines(#20006,1,1,0) #20020=* -stmts(#20020,2,#20001,1,"Point.p ... dy) {};") -#20021=@"loc,{#10000},3,1,3,43" -locations_default(#20021,#10000,3,1,3,43) +lines(#20020,#20001,""," +") +#20021=@"loc,{#10000},9,1,9,0" +locations_default(#20021,#10000,9,1,9,0) hasLocation(#20020,#20021) -stmtContainers(#20020,#20001) #20022=* -exprs(#20022,47,#20020,0,"Point.p ... dy) {}") -#20023=@"loc,{#10000},3,1,3,42" -locations_default(#20023,#10000,3,1,3,42) +lines(#20022,#20001,"var someGlobal;"," +") +#20023=@"loc,{#10000},10,1,10,15" +locations_default(#20023,#10000,10,1,10,15) hasLocation(#20022,#20023) -enclosingStmt(#20022,#20020) -exprContainers(#20022,#20001) #20024=* -exprs(#20024,14,#20022,0,"Point.prototype.move") -#20025=@"loc,{#10000},3,1,3,20" -locations_default(#20025,#10000,3,1,3,20) +lines(#20024,#20001,""," +") +#20025=@"loc,{#10000},11,1,11,0" +locations_default(#20025,#10000,11,1,11,0) hasLocation(#20024,#20025) -enclosingStmt(#20024,#20020) -exprContainers(#20024,#20001) #20026=* -exprs(#20026,14,#20024,0,"Point.prototype") -#20027=@"loc,{#10000},3,1,3,15" -locations_default(#20027,#10000,3,1,3,15) -hasLocation(#20026,#20027) -enclosingStmt(#20026,#20020) -exprContainers(#20026,#20001) -#20028=* -exprs(#20028,79,#20026,0,"Point") -#20029=@"loc,{#10000},3,1,3,5" -locations_default(#20029,#10000,3,1,3,5) -hasLocation(#20028,#20029) -enclosingStmt(#20028,#20020) -exprContainers(#20028,#20001) -literals("Point","Point",#20028) -bind(#20028,#20003) -#20030=* -exprs(#20030,0,#20026,1,"prototype") -#20031=@"loc,{#10000},3,7,3,15" -locations_default(#20031,#10000,3,7,3,15) -hasLocation(#20030,#20031) -enclosingStmt(#20030,#20020) -exprContainers(#20030,#20001) -literals("prototype","prototype",#20030) -#20032=* -exprs(#20032,0,#20024,1,"move") -#20033=@"loc,{#10000},3,17,3,20" -locations_default(#20033,#10000,3,17,3,20) -hasLocation(#20032,#20033) -enclosingStmt(#20032,#20020) -exprContainers(#20032,#20001) -literals("move","move",#20032) -#20034=* -exprs(#20034,9,#20022,1,"function(dx, dy) {}") -#20035=@"loc,{#10000},3,24,3,42" -locations_default(#20035,#10000,3,24,3,42) -hasLocation(#20034,#20035) -enclosingStmt(#20034,#20020) -exprContainers(#20034,#20001) -#20036=* -scopes(#20036,1) -scopenodes(#20034,#20036) -scopenesting(#20036,#20000) -#20037=@"var;{dx};{#20036}" -variables(#20037,"dx",#20036) -#20038=* -exprs(#20038,78,#20034,0,"dx") -#20039=@"loc,{#10000},3,33,3,34" -locations_default(#20039,#10000,3,33,3,34) -hasLocation(#20038,#20039) -exprContainers(#20038,#20034) -literals("dx","dx",#20038) -decl(#20038,#20037) -#20040=@"var;{dy};{#20036}" -variables(#20040,"dy",#20036) +lines(#20026,#20001,"/** @typedef {String} */"," +") +hasLocation(#20026,#20003) +#20027=* +lines(#20027,#20001,"var MyString;"," +") +#20028=@"loc,{#10000},13,1,13,13" +locations_default(#20028,#10000,13,1,13,13) +hasLocation(#20027,#20028) +#20029=* +lines(#20029,#20001,""," +") +#20030=@"loc,{#10000},14,1,14,0" +locations_default(#20030,#10000,14,1,14,0) +hasLocation(#20029,#20030) +#20031=* +lines(#20031,#20001,"Point.prototype['final'];"," +") +#20032=@"loc,{#10000},15,1,15,25" +locations_default(#20032,#10000,15,1,15,25) +hasLocation(#20031,#20032) +#20033=* +lines(#20033,#20001,""," +") +#20034=@"loc,{#10000},16,1,16,0" +locations_default(#20034,#10000,16,1,16,0) +hasLocation(#20033,#20034) +#20035=* +lines(#20035,#20001,"'use strict';","") +#20036=@"loc,{#10000},17,1,17,13" +locations_default(#20036,#10000,17,1,17,13) +hasLocation(#20035,#20036) +numlines(#20001,17,10,1) +#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,"Point") +#20040=@"loc,{#10000},1,10,1,14" +locations_default(#20040,#10000,1,10,1,14) +hasLocation(#20039,#20040) #20041=* -exprs(#20041,78,#20034,1,"dy") -#20042=@"loc,{#10000},3,37,3,38" -locations_default(#20042,#10000,3,37,3,38) +tokeninfo(#20041,8,#20001,2,"(") +#20042=@"loc,{#10000},1,15,1,15" +locations_default(#20042,#10000,1,15,1,15) hasLocation(#20041,#20042) -exprContainers(#20041,#20034) -literals("dy","dy",#20041) -decl(#20041,#20040) -#20043=@"var;{arguments};{#20036}" -variables(#20043,"arguments",#20036) -isArgumentsObject(#20043) -#20044=* -stmts(#20044,1,#20034,-2,"{}") -#20045=@"loc,{#10000},3,41,3,42" -locations_default(#20045,#10000,3,41,3,42) -hasLocation(#20044,#20045) -stmtContainers(#20044,#20034) -numlines(#20034,1,1,0) -#20046=* -stmts(#20046,2,#20001,2,"Point.p ... j = {};") -#20047=@"loc,{#10000},4,1,4,25" -locations_default(#20047,#10000,4,1,4,25) -hasLocation(#20046,#20047) -stmtContainers(#20046,#20001) -#20048=* -exprs(#20048,47,#20046,0,"Point.p ... bj = {}") -#20049=@"loc,{#10000},4,1,4,24" -locations_default(#20049,#10000,4,1,4,24) -hasLocation(#20048,#20049) -enclosingStmt(#20048,#20046) -exprContainers(#20048,#20001) -#20050=* -exprs(#20050,14,#20048,0,"Point.prototype.obj") -#20051=@"loc,{#10000},4,1,4,19" -locations_default(#20051,#10000,4,1,4,19) -hasLocation(#20050,#20051) -enclosingStmt(#20050,#20046) -exprContainers(#20050,#20001) -#20052=* -exprs(#20052,14,#20050,0,"Point.prototype") -#20053=@"loc,{#10000},4,1,4,15" -locations_default(#20053,#10000,4,1,4,15) -hasLocation(#20052,#20053) -enclosingStmt(#20052,#20046) -exprContainers(#20052,#20001) -#20054=* -exprs(#20054,79,#20052,0,"Point") -#20055=@"loc,{#10000},4,1,4,5" -locations_default(#20055,#10000,4,1,4,5) -hasLocation(#20054,#20055) -enclosingStmt(#20054,#20046) -exprContainers(#20054,#20001) -literals("Point","Point",#20054) -bind(#20054,#20003) -#20056=* -exprs(#20056,0,#20052,1,"prototype") -#20057=@"loc,{#10000},4,7,4,15" -locations_default(#20057,#10000,4,7,4,15) -hasLocation(#20056,#20057) -enclosingStmt(#20056,#20046) -exprContainers(#20056,#20001) -literals("prototype","prototype",#20056) -#20058=* -exprs(#20058,0,#20050,1,"obj") -#20059=@"loc,{#10000},4,17,4,19" -locations_default(#20059,#10000,4,17,4,19) -hasLocation(#20058,#20059) -enclosingStmt(#20058,#20046) -exprContainers(#20058,#20001) -literals("obj","obj",#20058) -#20060=* -exprs(#20060,8,#20048,1,"{}") -#20061=@"loc,{#10000},4,23,4,24" -locations_default(#20061,#10000,4,23,4,24) -hasLocation(#20060,#20061) -enclosingStmt(#20060,#20046) -exprContainers(#20060,#20001) -#20062=* -stmts(#20062,2,#20001,3,"Point.p ... secret;") -#20063=@"loc,{#10000},5,1,5,23" -locations_default(#20063,#10000,5,1,5,23) -hasLocation(#20062,#20063) -stmtContainers(#20062,#20001) -#20064=* -exprs(#20064,14,#20062,0,"Point.p ... .secret") -#20065=@"loc,{#10000},5,1,5,22" -locations_default(#20065,#10000,5,1,5,22) -hasLocation(#20064,#20065) -enclosingStmt(#20064,#20062) -exprContainers(#20064,#20001) -#20066=* -exprs(#20066,14,#20064,0,"Point.prototype") -#20067=@"loc,{#10000},5,1,5,15" -locations_default(#20067,#10000,5,1,5,15) -hasLocation(#20066,#20067) -enclosingStmt(#20066,#20062) -exprContainers(#20066,#20001) -#20068=* -exprs(#20068,79,#20066,0,"Point") -#20069=@"loc,{#10000},5,1,5,5" -locations_default(#20069,#10000,5,1,5,5) -hasLocation(#20068,#20069) -enclosingStmt(#20068,#20062) -exprContainers(#20068,#20001) -literals("Point","Point",#20068) -bind(#20068,#20003) -#20070=* -exprs(#20070,0,#20066,1,"prototype") -#20071=@"loc,{#10000},5,7,5,15" -locations_default(#20071,#10000,5,7,5,15) -hasLocation(#20070,#20071) -enclosingStmt(#20070,#20062) -exprContainers(#20070,#20001) -literals("prototype","prototype",#20070) -#20072=* -exprs(#20072,0,#20064,1,"secret") -#20073=@"loc,{#10000},5,17,5,22" -locations_default(#20073,#10000,5,17,5,22) -hasLocation(#20072,#20073) -enclosingStmt(#20072,#20062) -exprContainers(#20072,#20001) -literals("secret","secret",#20072) -#20074=* -stmts(#20074,2,#20001,4,"Point.ORIGIN;") -#20075=@"loc,{#10000},7,1,7,13" -locations_default(#20075,#10000,7,1,7,13) -hasLocation(#20074,#20075) -stmtContainers(#20074,#20001) -#20076=* -exprs(#20076,14,#20074,0,"Point.ORIGIN") -#20077=@"loc,{#10000},7,1,7,12" -locations_default(#20077,#10000,7,1,7,12) -hasLocation(#20076,#20077) -enclosingStmt(#20076,#20074) -exprContainers(#20076,#20001) -#20078=* -exprs(#20078,79,#20076,0,"Point") -#20079=@"loc,{#10000},7,1,7,5" -locations_default(#20079,#10000,7,1,7,5) -hasLocation(#20078,#20079) -enclosingStmt(#20078,#20074) -exprContainers(#20078,#20001) -literals("Point","Point",#20078) -bind(#20078,#20003) -#20080=* -exprs(#20080,0,#20076,1,"ORIGIN") -#20081=@"loc,{#10000},7,7,7,12" -locations_default(#20081,#10000,7,7,7,12) -hasLocation(#20080,#20081) -enclosingStmt(#20080,#20074) -exprContainers(#20080,#20001) -literals("ORIGIN","ORIGIN",#20080) -#20082=* -stmts(#20082,2,#20001,5,"Point.f ... n() {};") -#20083=@"loc,{#10000},8,1,8,26" -locations_default(#20083,#10000,8,1,8,26) -hasLocation(#20082,#20083) -stmtContainers(#20082,#20001) -#20084=* -exprs(#20084,47,#20082,0,"Point.f ... on() {}") -#20085=@"loc,{#10000},8,1,8,25" -locations_default(#20085,#10000,8,1,8,25) -hasLocation(#20084,#20085) -enclosingStmt(#20084,#20082) -exprContainers(#20084,#20001) -#20086=* -exprs(#20086,14,#20084,0,"Point.foo") -#20087=@"loc,{#10000},8,1,8,9" -locations_default(#20087,#10000,8,1,8,9) -hasLocation(#20086,#20087) -enclosingStmt(#20086,#20082) -exprContainers(#20086,#20001) -#20088=* -exprs(#20088,79,#20086,0,"Point") -#20089=@"loc,{#10000},8,1,8,5" -locations_default(#20089,#10000,8,1,8,5) -hasLocation(#20088,#20089) -enclosingStmt(#20088,#20082) -exprContainers(#20088,#20001) -literals("Point","Point",#20088) -bind(#20088,#20003) -#20090=* -exprs(#20090,0,#20086,1,"foo") -#20091=@"loc,{#10000},8,7,8,9" -locations_default(#20091,#10000,8,7,8,9) -hasLocation(#20090,#20091) -enclosingStmt(#20090,#20082) -exprContainers(#20090,#20001) -literals("foo","foo",#20090) -#20092=* -exprs(#20092,9,#20084,1,"function() {}") -#20093=@"loc,{#10000},8,13,8,25" -locations_default(#20093,#10000,8,13,8,25) -hasLocation(#20092,#20093) -enclosingStmt(#20092,#20082) -exprContainers(#20092,#20001) -#20094=* -scopes(#20094,1) -scopenodes(#20092,#20094) -scopenesting(#20094,#20000) -#20095=@"var;{arguments};{#20094}" -variables(#20095,"arguments",#20094) -isArgumentsObject(#20095) -#20096=* -stmts(#20096,1,#20092,-2,"{}") -#20097=@"loc,{#10000},8,24,8,25" -locations_default(#20097,#10000,8,24,8,25) -hasLocation(#20096,#20097) -stmtContainers(#20096,#20092) -numlines(#20092,1,1,0) -#20098=* -stmts(#20098,18,#20001,6,"var someGlobal;") -#20099=@"loc,{#10000},10,1,10,15" -locations_default(#20099,#10000,10,1,10,15) -hasLocation(#20098,#20099) -stmtContainers(#20098,#20001) -#20100=* -exprs(#20100,64,#20098,0,"someGlobal") -#20101=@"loc,{#10000},10,5,10,14" -locations_default(#20101,#10000,10,5,10,14) -hasLocation(#20100,#20101) -enclosingStmt(#20100,#20098) -exprContainers(#20100,#20001) -#20102=* -exprs(#20102,78,#20100,0,"someGlobal") -hasLocation(#20102,#20101) -enclosingStmt(#20102,#20098) -exprContainers(#20102,#20001) -literals("someGlobal","someGlobal",#20102) -decl(#20102,#20004) +#20043=* +tokeninfo(#20043,6,#20001,3,"x") +#20044=@"loc,{#10000},1,16,1,16" +locations_default(#20044,#10000,1,16,1,16) +hasLocation(#20043,#20044) +#20045=* +tokeninfo(#20045,8,#20001,4,",") +#20046=@"loc,{#10000},1,17,1,17" +locations_default(#20046,#10000,1,17,1,17) +hasLocation(#20045,#20046) +#20047=* +tokeninfo(#20047,6,#20001,5,"y") +#20048=@"loc,{#10000},1,19,1,19" +locations_default(#20048,#10000,1,19,1,19) +hasLocation(#20047,#20048) +#20049=* +tokeninfo(#20049,8,#20001,6,")") +#20050=@"loc,{#10000},1,20,1,20" +locations_default(#20050,#10000,1,20,1,20) +hasLocation(#20049,#20050) +#20051=* +tokeninfo(#20051,8,#20001,7,"{") +#20052=@"loc,{#10000},1,22,1,22" +locations_default(#20052,#10000,1,22,1,22) +hasLocation(#20051,#20052) +#20053=* +tokeninfo(#20053,8,#20001,8,"}") +#20054=@"loc,{#10000},1,23,1,23" +locations_default(#20054,#10000,1,23,1,23) +hasLocation(#20053,#20054) +#20055=* +tokeninfo(#20055,6,#20001,9,"Point") +#20056=@"loc,{#10000},3,1,3,5" +locations_default(#20056,#10000,3,1,3,5) +hasLocation(#20055,#20056) +#20057=* +tokeninfo(#20057,8,#20001,10,".") +#20058=@"loc,{#10000},3,6,3,6" +locations_default(#20058,#10000,3,6,3,6) +hasLocation(#20057,#20058) +#20059=* +tokeninfo(#20059,6,#20001,11,"prototype") +#20060=@"loc,{#10000},3,7,3,15" +locations_default(#20060,#10000,3,7,3,15) +hasLocation(#20059,#20060) +#20061=* +tokeninfo(#20061,8,#20001,12,".") +#20062=@"loc,{#10000},3,16,3,16" +locations_default(#20062,#10000,3,16,3,16) +hasLocation(#20061,#20062) +#20063=* +tokeninfo(#20063,6,#20001,13,"move") +#20064=@"loc,{#10000},3,17,3,20" +locations_default(#20064,#10000,3,17,3,20) +hasLocation(#20063,#20064) +#20065=* +tokeninfo(#20065,8,#20001,14,"=") +#20066=@"loc,{#10000},3,22,3,22" +locations_default(#20066,#10000,3,22,3,22) +hasLocation(#20065,#20066) +#20067=* +tokeninfo(#20067,7,#20001,15,"function") +#20068=@"loc,{#10000},3,24,3,31" +locations_default(#20068,#10000,3,24,3,31) +hasLocation(#20067,#20068) +#20069=* +tokeninfo(#20069,8,#20001,16,"(") +#20070=@"loc,{#10000},3,32,3,32" +locations_default(#20070,#10000,3,32,3,32) +hasLocation(#20069,#20070) +#20071=* +tokeninfo(#20071,6,#20001,17,"dx") +#20072=@"loc,{#10000},3,33,3,34" +locations_default(#20072,#10000,3,33,3,34) +hasLocation(#20071,#20072) +#20073=* +tokeninfo(#20073,8,#20001,18,",") +#20074=@"loc,{#10000},3,35,3,35" +locations_default(#20074,#10000,3,35,3,35) +hasLocation(#20073,#20074) +#20075=* +tokeninfo(#20075,6,#20001,19,"dy") +#20076=@"loc,{#10000},3,37,3,38" +locations_default(#20076,#10000,3,37,3,38) +hasLocation(#20075,#20076) +#20077=* +tokeninfo(#20077,8,#20001,20,")") +#20078=@"loc,{#10000},3,39,3,39" +locations_default(#20078,#10000,3,39,3,39) +hasLocation(#20077,#20078) +#20079=* +tokeninfo(#20079,8,#20001,21,"{") +#20080=@"loc,{#10000},3,41,3,41" +locations_default(#20080,#10000,3,41,3,41) +hasLocation(#20079,#20080) +#20081=* +tokeninfo(#20081,8,#20001,22,"}") +#20082=@"loc,{#10000},3,42,3,42" +locations_default(#20082,#10000,3,42,3,42) +hasLocation(#20081,#20082) +#20083=* +tokeninfo(#20083,8,#20001,23,";") +#20084=@"loc,{#10000},3,43,3,43" +locations_default(#20084,#10000,3,43,3,43) +hasLocation(#20083,#20084) +#20085=* +tokeninfo(#20085,6,#20001,24,"Point") +#20086=@"loc,{#10000},4,1,4,5" +locations_default(#20086,#10000,4,1,4,5) +hasLocation(#20085,#20086) +#20087=* +tokeninfo(#20087,8,#20001,25,".") +#20088=@"loc,{#10000},4,6,4,6" +locations_default(#20088,#10000,4,6,4,6) +hasLocation(#20087,#20088) +#20089=* +tokeninfo(#20089,6,#20001,26,"prototype") +#20090=@"loc,{#10000},4,7,4,15" +locations_default(#20090,#10000,4,7,4,15) +hasLocation(#20089,#20090) +#20091=* +tokeninfo(#20091,8,#20001,27,".") +#20092=@"loc,{#10000},4,16,4,16" +locations_default(#20092,#10000,4,16,4,16) +hasLocation(#20091,#20092) +#20093=* +tokeninfo(#20093,6,#20001,28,"obj") +#20094=@"loc,{#10000},4,17,4,19" +locations_default(#20094,#10000,4,17,4,19) +hasLocation(#20093,#20094) +#20095=* +tokeninfo(#20095,8,#20001,29,"=") +#20096=@"loc,{#10000},4,21,4,21" +locations_default(#20096,#10000,4,21,4,21) +hasLocation(#20095,#20096) +#20097=* +tokeninfo(#20097,8,#20001,30,"{") +#20098=@"loc,{#10000},4,23,4,23" +locations_default(#20098,#10000,4,23,4,23) +hasLocation(#20097,#20098) +#20099=* +tokeninfo(#20099,8,#20001,31,"}") +#20100=@"loc,{#10000},4,24,4,24" +locations_default(#20100,#10000,4,24,4,24) +hasLocation(#20099,#20100) +#20101=* +tokeninfo(#20101,8,#20001,32,";") +#20102=@"loc,{#10000},4,25,4,25" +locations_default(#20102,#10000,4,25,4,25) +hasLocation(#20101,#20102) #20103=* -stmts(#20103,18,#20001,7,"var MyString;") -#20104=@"loc,{#10000},13,1,13,13" -locations_default(#20104,#10000,13,1,13,13) +tokeninfo(#20103,6,#20001,33,"Point") +#20104=@"loc,{#10000},5,1,5,5" +locations_default(#20104,#10000,5,1,5,5) hasLocation(#20103,#20104) -stmtContainers(#20103,#20001) #20105=* -exprs(#20105,64,#20103,0,"MyString") -#20106=@"loc,{#10000},13,5,13,12" -locations_default(#20106,#10000,13,5,13,12) +tokeninfo(#20105,8,#20001,34,".") +#20106=@"loc,{#10000},5,6,5,6" +locations_default(#20106,#10000,5,6,5,6) hasLocation(#20105,#20106) -enclosingStmt(#20105,#20103) -exprContainers(#20105,#20001) #20107=* -exprs(#20107,78,#20105,0,"MyString") -hasLocation(#20107,#20106) -enclosingStmt(#20107,#20103) -exprContainers(#20107,#20001) -literals("MyString","MyString",#20107) -decl(#20107,#20005) -#20108=* -stmts(#20108,2,#20001,8,"Point.p ... inal'];") -#20109=@"loc,{#10000},15,1,15,25" -locations_default(#20109,#10000,15,1,15,25) -hasLocation(#20108,#20109) -stmtContainers(#20108,#20001) -#20110=* -exprs(#20110,15,#20108,0,"Point.p ... final']") -#20111=@"loc,{#10000},15,1,15,24" -locations_default(#20111,#10000,15,1,15,24) -hasLocation(#20110,#20111) -enclosingStmt(#20110,#20108) -exprContainers(#20110,#20001) -#20112=* -exprs(#20112,14,#20110,0,"Point.prototype") -#20113=@"loc,{#10000},15,1,15,15" -locations_default(#20113,#10000,15,1,15,15) -hasLocation(#20112,#20113) -enclosingStmt(#20112,#20108) -exprContainers(#20112,#20001) -#20114=* -exprs(#20114,79,#20112,0,"Point") -#20115=@"loc,{#10000},15,1,15,5" -locations_default(#20115,#10000,15,1,15,5) -hasLocation(#20114,#20115) -enclosingStmt(#20114,#20108) -exprContainers(#20114,#20001) -literals("Point","Point",#20114) -bind(#20114,#20003) -#20116=* -exprs(#20116,0,#20112,1,"prototype") -#20117=@"loc,{#10000},15,7,15,15" -locations_default(#20117,#10000,15,7,15,15) -hasLocation(#20116,#20117) -enclosingStmt(#20116,#20108) -exprContainers(#20116,#20001) -literals("prototype","prototype",#20116) -#20118=* -exprs(#20118,4,#20110,1,"'final'") -#20119=@"loc,{#10000},15,17,15,23" -locations_default(#20119,#10000,15,17,15,23) -hasLocation(#20118,#20119) -enclosingStmt(#20118,#20108) -exprContainers(#20118,#20001) -literals("final","'final'",#20118) -#20120=* -stmts(#20120,2,#20001,9,"'use strict';") -#20121=@"loc,{#10000},17,1,17,13" -locations_default(#20121,#10000,17,1,17,13) -hasLocation(#20120,#20121) -stmtContainers(#20120,#20001) -#20122=* -exprs(#20122,4,#20120,0,"'use strict'") -#20123=@"loc,{#10000},17,1,17,12" -locations_default(#20123,#10000,17,1,17,12) -hasLocation(#20122,#20123) -enclosingStmt(#20122,#20120) -exprContainers(#20122,#20001) -literals("use strict","'use strict'",#20122) -#20124=* -comments(#20124,2,#20001," @typedef {String} ","/** @ty ... ing} */") -#20125=@"loc,{#10000},12,1,12,24" -locations_default(#20125,#10000,12,1,12,24) -hasLocation(#20124,#20125) -#20126=* -lines(#20126,#20001,"function Point(x, y) {}"," -") -hasLocation(#20126,#20007) +tokeninfo(#20107,6,#20001,35,"prototype") +#20108=@"loc,{#10000},5,7,5,15" +locations_default(#20108,#10000,5,7,5,15) +hasLocation(#20107,#20108) +#20109=* +tokeninfo(#20109,8,#20001,36,".") +#20110=@"loc,{#10000},5,16,5,16" +locations_default(#20110,#10000,5,16,5,16) +hasLocation(#20109,#20110) +#20111=* +tokeninfo(#20111,6,#20001,37,"secret") +#20112=@"loc,{#10000},5,17,5,22" +locations_default(#20112,#10000,5,17,5,22) +hasLocation(#20111,#20112) +#20113=* +tokeninfo(#20113,8,#20001,38,";") +#20114=@"loc,{#10000},5,23,5,23" +locations_default(#20114,#10000,5,23,5,23) +hasLocation(#20113,#20114) +#20115=* +tokeninfo(#20115,6,#20001,39,"Point") +#20116=@"loc,{#10000},7,1,7,5" +locations_default(#20116,#10000,7,1,7,5) +hasLocation(#20115,#20116) +#20117=* +tokeninfo(#20117,8,#20001,40,".") +#20118=@"loc,{#10000},7,6,7,6" +locations_default(#20118,#10000,7,6,7,6) +hasLocation(#20117,#20118) +#20119=* +tokeninfo(#20119,6,#20001,41,"ORIGIN") +#20120=@"loc,{#10000},7,7,7,12" +locations_default(#20120,#10000,7,7,7,12) +hasLocation(#20119,#20120) +#20121=* +tokeninfo(#20121,8,#20001,42,";") +#20122=@"loc,{#10000},7,13,7,13" +locations_default(#20122,#10000,7,13,7,13) +hasLocation(#20121,#20122) +#20123=* +tokeninfo(#20123,6,#20001,43,"Point") +#20124=@"loc,{#10000},8,1,8,5" +locations_default(#20124,#10000,8,1,8,5) +hasLocation(#20123,#20124) +#20125=* +tokeninfo(#20125,8,#20001,44,".") +#20126=@"loc,{#10000},8,6,8,6" +locations_default(#20126,#10000,8,6,8,6) +hasLocation(#20125,#20126) #20127=* -lines(#20127,#20001,""," -") -#20128=@"loc,{#10000},2,1,2,0" -locations_default(#20128,#10000,2,1,2,0) +tokeninfo(#20127,6,#20001,45,"foo") +#20128=@"loc,{#10000},8,7,8,9" +locations_default(#20128,#10000,8,7,8,9) hasLocation(#20127,#20128) #20129=* -lines(#20129,#20001,"Point.prototype.move = function(dx, dy) {};"," -") -hasLocation(#20129,#20021) -#20130=* -lines(#20130,#20001,"Point.prototype.obj = {};"," -") -hasLocation(#20130,#20047) +tokeninfo(#20129,8,#20001,46,"=") +#20130=@"loc,{#10000},8,11,8,11" +locations_default(#20130,#10000,8,11,8,11) +hasLocation(#20129,#20130) #20131=* -lines(#20131,#20001,"Point.prototype.secret;"," -") -hasLocation(#20131,#20063) -#20132=* -lines(#20132,#20001,""," -") -#20133=@"loc,{#10000},6,1,6,0" -locations_default(#20133,#10000,6,1,6,0) -hasLocation(#20132,#20133) -#20134=* -lines(#20134,#20001,"Point.ORIGIN;"," -") -hasLocation(#20134,#20075) +tokeninfo(#20131,7,#20001,47,"function") +#20132=@"loc,{#10000},8,13,8,20" +locations_default(#20132,#10000,8,13,8,20) +hasLocation(#20131,#20132) +#20133=* +tokeninfo(#20133,8,#20001,48,"(") +#20134=@"loc,{#10000},8,21,8,21" +locations_default(#20134,#10000,8,21,8,21) +hasLocation(#20133,#20134) #20135=* -lines(#20135,#20001,"Point.foo = function() {};"," -") -hasLocation(#20135,#20083) -#20136=* -lines(#20136,#20001,""," -") -#20137=@"loc,{#10000},9,1,9,0" -locations_default(#20137,#10000,9,1,9,0) -hasLocation(#20136,#20137) -#20138=* -lines(#20138,#20001,"var someGlobal;"," -") -hasLocation(#20138,#20099) +tokeninfo(#20135,8,#20001,49,")") +#20136=@"loc,{#10000},8,22,8,22" +locations_default(#20136,#10000,8,22,8,22) +hasLocation(#20135,#20136) +#20137=* +tokeninfo(#20137,8,#20001,50,"{") +#20138=@"loc,{#10000},8,24,8,24" +locations_default(#20138,#10000,8,24,8,24) +hasLocation(#20137,#20138) #20139=* -lines(#20139,#20001,""," -") -#20140=@"loc,{#10000},11,1,11,0" -locations_default(#20140,#10000,11,1,11,0) +tokeninfo(#20139,8,#20001,51,"}") +#20140=@"loc,{#10000},8,25,8,25" +locations_default(#20140,#10000,8,25,8,25) hasLocation(#20139,#20140) #20141=* -lines(#20141,#20001,"/** @typedef {String} */"," -") -hasLocation(#20141,#20125) -#20142=* -lines(#20142,#20001,"var MyString;"," -") -hasLocation(#20142,#20104) +tokeninfo(#20141,8,#20001,52,";") +#20142=@"loc,{#10000},8,26,8,26" +locations_default(#20142,#10000,8,26,8,26) +hasLocation(#20141,#20142) #20143=* -lines(#20143,#20001,""," -") -#20144=@"loc,{#10000},14,1,14,0" -locations_default(#20144,#10000,14,1,14,0) +tokeninfo(#20143,7,#20001,53,"var") +#20144=@"loc,{#10000},10,1,10,3" +locations_default(#20144,#10000,10,1,10,3) hasLocation(#20143,#20144) #20145=* -lines(#20145,#20001,"Point.prototype['final'];"," -") -hasLocation(#20145,#20109) -#20146=* -lines(#20146,#20001,""," -") -#20147=@"loc,{#10000},16,1,16,0" -locations_default(#20147,#10000,16,1,16,0) -hasLocation(#20146,#20147) -#20148=* -lines(#20148,#20001,"'use strict';","") -hasLocation(#20148,#20121) -numlines(#20001,17,10,1) +tokeninfo(#20145,6,#20001,54,"someGlobal") +#20146=@"loc,{#10000},10,5,10,14" +locations_default(#20146,#10000,10,5,10,14) +hasLocation(#20145,#20146) +#20147=* +tokeninfo(#20147,8,#20001,55,";") +#20148=@"loc,{#10000},10,15,10,15" +locations_default(#20148,#10000,10,15,10,15) +hasLocation(#20147,#20148) #20149=* -tokeninfo(#20149,7,#20001,0,"function") -#20150=@"loc,{#10000},1,1,1,8" -locations_default(#20150,#10000,1,1,1,8) +tokeninfo(#20149,7,#20001,56,"var") +#20150=@"loc,{#10000},13,1,13,3" +locations_default(#20150,#10000,13,1,13,3) hasLocation(#20149,#20150) +next_token(#20002,#20149) #20151=* -tokeninfo(#20151,6,#20001,1,"Point") -hasLocation(#20151,#20009) -#20152=* -tokeninfo(#20152,8,#20001,2,"(") -#20153=@"loc,{#10000},1,15,1,15" -locations_default(#20153,#10000,1,15,1,15) -hasLocation(#20152,#20153) -#20154=* -tokeninfo(#20154,6,#20001,3,"x") -hasLocation(#20154,#20013) +tokeninfo(#20151,6,#20001,57,"MyString") +#20152=@"loc,{#10000},13,5,13,12" +locations_default(#20152,#10000,13,5,13,12) +hasLocation(#20151,#20152) +#20153=* +tokeninfo(#20153,8,#20001,58,";") +#20154=@"loc,{#10000},13,13,13,13" +locations_default(#20154,#10000,13,13,13,13) +hasLocation(#20153,#20154) #20155=* -tokeninfo(#20155,8,#20001,4,",") -#20156=@"loc,{#10000},1,17,1,17" -locations_default(#20156,#10000,1,17,1,17) +tokeninfo(#20155,6,#20001,59,"Point") +#20156=@"loc,{#10000},15,1,15,5" +locations_default(#20156,#10000,15,1,15,5) hasLocation(#20155,#20156) #20157=* -tokeninfo(#20157,6,#20001,5,"y") -hasLocation(#20157,#20016) -#20158=* -tokeninfo(#20158,8,#20001,6,")") -#20159=@"loc,{#10000},1,20,1,20" -locations_default(#20159,#10000,1,20,1,20) -hasLocation(#20158,#20159) -#20160=* -tokeninfo(#20160,8,#20001,7,"{") -#20161=@"loc,{#10000},1,22,1,22" -locations_default(#20161,#10000,1,22,1,22) -hasLocation(#20160,#20161) -#20162=* -tokeninfo(#20162,8,#20001,8,"}") -#20163=@"loc,{#10000},1,23,1,23" -locations_default(#20163,#10000,1,23,1,23) -hasLocation(#20162,#20163) -#20164=* -tokeninfo(#20164,6,#20001,9,"Point") -hasLocation(#20164,#20029) +tokeninfo(#20157,8,#20001,60,".") +#20158=@"loc,{#10000},15,6,15,6" +locations_default(#20158,#10000,15,6,15,6) +hasLocation(#20157,#20158) +#20159=* +tokeninfo(#20159,6,#20001,61,"prototype") +#20160=@"loc,{#10000},15,7,15,15" +locations_default(#20160,#10000,15,7,15,15) +hasLocation(#20159,#20160) +#20161=* +tokeninfo(#20161,8,#20001,62,"[") +#20162=@"loc,{#10000},15,16,15,16" +locations_default(#20162,#10000,15,16,15,16) +hasLocation(#20161,#20162) +#20163=* +tokeninfo(#20163,4,#20001,63,"'final'") +#20164=@"loc,{#10000},15,17,15,23" +locations_default(#20164,#10000,15,17,15,23) +hasLocation(#20163,#20164) #20165=* -tokeninfo(#20165,8,#20001,10,".") -#20166=@"loc,{#10000},3,6,3,6" -locations_default(#20166,#10000,3,6,3,6) +tokeninfo(#20165,8,#20001,64,"]") +#20166=@"loc,{#10000},15,24,15,24" +locations_default(#20166,#10000,15,24,15,24) hasLocation(#20165,#20166) #20167=* -tokeninfo(#20167,6,#20001,11,"prototype") -hasLocation(#20167,#20031) -#20168=* -tokeninfo(#20168,8,#20001,12,".") -#20169=@"loc,{#10000},3,16,3,16" -locations_default(#20169,#10000,3,16,3,16) -hasLocation(#20168,#20169) -#20170=* -tokeninfo(#20170,6,#20001,13,"move") -hasLocation(#20170,#20033) +tokeninfo(#20167,8,#20001,65,";") +#20168=@"loc,{#10000},15,25,15,25" +locations_default(#20168,#10000,15,25,15,25) +hasLocation(#20167,#20168) +#20169=* +tokeninfo(#20169,4,#20001,66,"'use strict'") +#20170=@"loc,{#10000},17,1,17,12" +locations_default(#20170,#10000,17,1,17,12) +hasLocation(#20169,#20170) #20171=* -tokeninfo(#20171,8,#20001,14,"=") -#20172=@"loc,{#10000},3,22,3,22" -locations_default(#20172,#10000,3,22,3,22) +tokeninfo(#20171,8,#20001,67,";") +#20172=@"loc,{#10000},17,13,17,13" +locations_default(#20172,#10000,17,13,17,13) hasLocation(#20171,#20172) #20173=* -tokeninfo(#20173,7,#20001,15,"function") -#20174=@"loc,{#10000},3,24,3,31" -locations_default(#20174,#10000,3,24,3,31) +tokeninfo(#20173,0,#20001,68,"") +#20174=@"loc,{#10000},17,14,17,13" +locations_default(#20174,#10000,17,14,17,13) hasLocation(#20173,#20174) #20175=* -tokeninfo(#20175,8,#20001,16,"(") -#20176=@"loc,{#10000},3,32,3,32" -locations_default(#20176,#10000,3,32,3,32) -hasLocation(#20175,#20176) -#20177=* -tokeninfo(#20177,6,#20001,17,"dx") -hasLocation(#20177,#20039) +jsdoc(#20175,"",#20002) +hasLocation(#20175,#20003) +#20176=* +jsdoc_tags(#20176,"typedef",#20175,0,"@typedef") +#20177=@"loc,{#10000},12,5,12,12" +locations_default(#20177,#10000,12,5,12,12) +hasLocation(#20176,#20177) #20178=* -tokeninfo(#20178,8,#20001,18,",") -#20179=@"loc,{#10000},3,35,3,35" -locations_default(#20179,#10000,3,35,3,35) -hasLocation(#20178,#20179) -#20180=* -tokeninfo(#20180,6,#20001,19,"dy") -hasLocation(#20180,#20042) -#20181=* -tokeninfo(#20181,8,#20001,20,")") -#20182=@"loc,{#10000},3,39,3,39" -locations_default(#20182,#10000,3,39,3,39) -hasLocation(#20181,#20182) +jsdoc_type_exprs(#20178,5,#20176,0,"String") +toplevels(#20001,0) +#20179=@"loc,{#10000},1,1,17,13" +locations_default(#20179,#10000,1,1,17,13) +hasLocation(#20001,#20179) +#20180=@"var;{Point};{#20000}" +variables(#20180,"Point",#20000) +#20181=@"var;{someGlobal};{#20000}" +variables(#20181,"someGlobal",#20000) +#20182=@"var;{MyString};{#20000}" +variables(#20182,"MyString",#20000) #20183=* -tokeninfo(#20183,8,#20001,21,"{") -#20184=@"loc,{#10000},3,41,3,41" -locations_default(#20184,#10000,3,41,3,41) -hasLocation(#20183,#20184) +stmts(#20183,17,#20001,0,"functio ... , y) {}") +hasLocation(#20183,#20005) +stmtContainers(#20183,#20001) +#20184=* +exprs(#20184,78,#20183,-1,"Point") +hasLocation(#20184,#20040) +exprContainers(#20184,#20183) +literals("Point","Point",#20184) +decl(#20184,#20180) #20185=* -tokeninfo(#20185,8,#20001,22,"}") -#20186=@"loc,{#10000},3,42,3,42" -locations_default(#20186,#10000,3,42,3,42) -hasLocation(#20185,#20186) +scopes(#20185,1) +scopenodes(#20183,#20185) +scopenesting(#20185,#20000) +#20186=@"var;{x};{#20185}" +variables(#20186,"x",#20185) #20187=* -tokeninfo(#20187,8,#20001,23,";") -#20188=@"loc,{#10000},3,43,3,43" -locations_default(#20188,#10000,3,43,3,43) -hasLocation(#20187,#20188) +exprs(#20187,78,#20183,0,"x") +hasLocation(#20187,#20044) +exprContainers(#20187,#20183) +literals("x","x",#20187) +decl(#20187,#20186) +#20188=@"var;{y};{#20185}" +variables(#20188,"y",#20185) #20189=* -tokeninfo(#20189,6,#20001,24,"Point") -hasLocation(#20189,#20055) -#20190=* -tokeninfo(#20190,8,#20001,25,".") -#20191=@"loc,{#10000},4,6,4,6" -locations_default(#20191,#10000,4,6,4,6) -hasLocation(#20190,#20191) -#20192=* -tokeninfo(#20192,6,#20001,26,"prototype") -hasLocation(#20192,#20057) +exprs(#20189,78,#20183,1,"y") +hasLocation(#20189,#20048) +exprContainers(#20189,#20183) +literals("y","y",#20189) +decl(#20189,#20188) +#20190=@"var;{arguments};{#20185}" +variables(#20190,"arguments",#20185) +isArgumentsObject(#20190) +#20191=* +stmts(#20191,1,#20183,-2,"{}") +#20192=@"loc,{#10000},1,22,1,23" +locations_default(#20192,#10000,1,22,1,23) +hasLocation(#20191,#20192) +stmtContainers(#20191,#20183) #20193=* -tokeninfo(#20193,8,#20001,27,".") -#20194=@"loc,{#10000},4,16,4,16" -locations_default(#20194,#10000,4,16,4,16) -hasLocation(#20193,#20194) -#20195=* -tokeninfo(#20195,6,#20001,28,"obj") -hasLocation(#20195,#20059) +stmts(#20193,2,#20001,1,"Point.p ... dy) {};") +hasLocation(#20193,#20009) +stmtContainers(#20193,#20001) +#20194=* +exprs(#20194,47,#20193,0,"Point.p ... dy) {}") +#20195=@"loc,{#10000},3,1,3,42" +locations_default(#20195,#10000,3,1,3,42) +hasLocation(#20194,#20195) +enclosingStmt(#20194,#20193) +exprContainers(#20194,#20001) #20196=* -tokeninfo(#20196,8,#20001,29,"=") -#20197=@"loc,{#10000},4,21,4,21" -locations_default(#20197,#10000,4,21,4,21) +exprs(#20196,14,#20194,0,"Point.prototype.move") +#20197=@"loc,{#10000},3,1,3,20" +locations_default(#20197,#10000,3,1,3,20) hasLocation(#20196,#20197) +enclosingStmt(#20196,#20193) +exprContainers(#20196,#20001) #20198=* -tokeninfo(#20198,8,#20001,30,"{") -#20199=@"loc,{#10000},4,23,4,23" -locations_default(#20199,#10000,4,23,4,23) +exprs(#20198,14,#20196,0,"Point.prototype") +#20199=@"loc,{#10000},3,1,3,15" +locations_default(#20199,#10000,3,1,3,15) hasLocation(#20198,#20199) +enclosingStmt(#20198,#20193) +exprContainers(#20198,#20001) #20200=* -tokeninfo(#20200,8,#20001,31,"}") -#20201=@"loc,{#10000},4,24,4,24" -locations_default(#20201,#10000,4,24,4,24) -hasLocation(#20200,#20201) +exprs(#20200,79,#20198,0,"Point") +hasLocation(#20200,#20056) +enclosingStmt(#20200,#20193) +exprContainers(#20200,#20001) +literals("Point","Point",#20200) +bind(#20200,#20180) +#20201=* +exprs(#20201,0,#20198,1,"prototype") +hasLocation(#20201,#20060) +enclosingStmt(#20201,#20193) +exprContainers(#20201,#20001) +literals("prototype","prototype",#20201) #20202=* -tokeninfo(#20202,8,#20001,32,";") -#20203=@"loc,{#10000},4,25,4,25" -locations_default(#20203,#10000,4,25,4,25) -hasLocation(#20202,#20203) -#20204=* -tokeninfo(#20204,6,#20001,33,"Point") -hasLocation(#20204,#20069) +exprs(#20202,0,#20196,1,"move") +hasLocation(#20202,#20064) +enclosingStmt(#20202,#20193) +exprContainers(#20202,#20001) +literals("move","move",#20202) +#20203=* +exprs(#20203,9,#20194,1,"function(dx, dy) {}") +#20204=@"loc,{#10000},3,24,3,42" +locations_default(#20204,#10000,3,24,3,42) +hasLocation(#20203,#20204) +enclosingStmt(#20203,#20193) +exprContainers(#20203,#20001) #20205=* -tokeninfo(#20205,8,#20001,34,".") -#20206=@"loc,{#10000},5,6,5,6" -locations_default(#20206,#10000,5,6,5,6) -hasLocation(#20205,#20206) +scopes(#20205,1) +scopenodes(#20203,#20205) +scopenesting(#20205,#20000) +#20206=@"var;{dx};{#20205}" +variables(#20206,"dx",#20205) #20207=* -tokeninfo(#20207,6,#20001,35,"prototype") -hasLocation(#20207,#20071) -#20208=* -tokeninfo(#20208,8,#20001,36,".") -#20209=@"loc,{#10000},5,16,5,16" -locations_default(#20209,#10000,5,16,5,16) -hasLocation(#20208,#20209) -#20210=* -tokeninfo(#20210,6,#20001,37,"secret") -hasLocation(#20210,#20073) +exprs(#20207,78,#20203,0,"dx") +hasLocation(#20207,#20072) +exprContainers(#20207,#20203) +literals("dx","dx",#20207) +decl(#20207,#20206) +#20208=@"var;{dy};{#20205}" +variables(#20208,"dy",#20205) +#20209=* +exprs(#20209,78,#20203,1,"dy") +hasLocation(#20209,#20076) +exprContainers(#20209,#20203) +literals("dy","dy",#20209) +decl(#20209,#20208) +#20210=@"var;{arguments};{#20205}" +variables(#20210,"arguments",#20205) +isArgumentsObject(#20210) #20211=* -tokeninfo(#20211,8,#20001,38,";") -#20212=@"loc,{#10000},5,23,5,23" -locations_default(#20212,#10000,5,23,5,23) +stmts(#20211,1,#20203,-2,"{}") +#20212=@"loc,{#10000},3,41,3,42" +locations_default(#20212,#10000,3,41,3,42) hasLocation(#20211,#20212) +stmtContainers(#20211,#20203) #20213=* -tokeninfo(#20213,6,#20001,39,"Point") -hasLocation(#20213,#20079) +stmts(#20213,2,#20001,2,"Point.p ... j = {};") +hasLocation(#20213,#20011) +stmtContainers(#20213,#20001) #20214=* -tokeninfo(#20214,8,#20001,40,".") -#20215=@"loc,{#10000},7,6,7,6" -locations_default(#20215,#10000,7,6,7,6) +exprs(#20214,47,#20213,0,"Point.p ... bj = {}") +#20215=@"loc,{#10000},4,1,4,24" +locations_default(#20215,#10000,4,1,4,24) hasLocation(#20214,#20215) +enclosingStmt(#20214,#20213) +exprContainers(#20214,#20001) #20216=* -tokeninfo(#20216,6,#20001,41,"ORIGIN") -hasLocation(#20216,#20081) -#20217=* -tokeninfo(#20217,8,#20001,42,";") -#20218=@"loc,{#10000},7,13,7,13" -locations_default(#20218,#10000,7,13,7,13) -hasLocation(#20217,#20218) -#20219=* -tokeninfo(#20219,6,#20001,43,"Point") -hasLocation(#20219,#20089) +exprs(#20216,14,#20214,0,"Point.prototype.obj") +#20217=@"loc,{#10000},4,1,4,19" +locations_default(#20217,#10000,4,1,4,19) +hasLocation(#20216,#20217) +enclosingStmt(#20216,#20213) +exprContainers(#20216,#20001) +#20218=* +exprs(#20218,14,#20216,0,"Point.prototype") +#20219=@"loc,{#10000},4,1,4,15" +locations_default(#20219,#10000,4,1,4,15) +hasLocation(#20218,#20219) +enclosingStmt(#20218,#20213) +exprContainers(#20218,#20001) #20220=* -tokeninfo(#20220,8,#20001,44,".") -#20221=@"loc,{#10000},8,6,8,6" -locations_default(#20221,#10000,8,6,8,6) -hasLocation(#20220,#20221) +exprs(#20220,79,#20218,0,"Point") +hasLocation(#20220,#20086) +enclosingStmt(#20220,#20213) +exprContainers(#20220,#20001) +literals("Point","Point",#20220) +bind(#20220,#20180) +#20221=* +exprs(#20221,0,#20218,1,"prototype") +hasLocation(#20221,#20090) +enclosingStmt(#20221,#20213) +exprContainers(#20221,#20001) +literals("prototype","prototype",#20221) #20222=* -tokeninfo(#20222,6,#20001,45,"foo") -hasLocation(#20222,#20091) +exprs(#20222,0,#20216,1,"obj") +hasLocation(#20222,#20094) +enclosingStmt(#20222,#20213) +exprContainers(#20222,#20001) +literals("obj","obj",#20222) #20223=* -tokeninfo(#20223,8,#20001,46,"=") -#20224=@"loc,{#10000},8,11,8,11" -locations_default(#20224,#10000,8,11,8,11) +exprs(#20223,8,#20214,1,"{}") +#20224=@"loc,{#10000},4,23,4,24" +locations_default(#20224,#10000,4,23,4,24) hasLocation(#20223,#20224) +enclosingStmt(#20223,#20213) +exprContainers(#20223,#20001) #20225=* -tokeninfo(#20225,7,#20001,47,"function") -#20226=@"loc,{#10000},8,13,8,20" -locations_default(#20226,#10000,8,13,8,20) -hasLocation(#20225,#20226) -#20227=* -tokeninfo(#20227,8,#20001,48,"(") -#20228=@"loc,{#10000},8,21,8,21" -locations_default(#20228,#10000,8,21,8,21) -hasLocation(#20227,#20228) -#20229=* -tokeninfo(#20229,8,#20001,49,")") -#20230=@"loc,{#10000},8,22,8,22" -locations_default(#20230,#10000,8,22,8,22) -hasLocation(#20229,#20230) +stmts(#20225,2,#20001,3,"Point.p ... secret;") +hasLocation(#20225,#20013) +stmtContainers(#20225,#20001) +#20226=* +exprs(#20226,14,#20225,0,"Point.p ... .secret") +#20227=@"loc,{#10000},5,1,5,22" +locations_default(#20227,#10000,5,1,5,22) +hasLocation(#20226,#20227) +enclosingStmt(#20226,#20225) +exprContainers(#20226,#20001) +#20228=* +exprs(#20228,14,#20226,0,"Point.prototype") +#20229=@"loc,{#10000},5,1,5,15" +locations_default(#20229,#10000,5,1,5,15) +hasLocation(#20228,#20229) +enclosingStmt(#20228,#20225) +exprContainers(#20228,#20001) +#20230=* +exprs(#20230,79,#20228,0,"Point") +hasLocation(#20230,#20104) +enclosingStmt(#20230,#20225) +exprContainers(#20230,#20001) +literals("Point","Point",#20230) +bind(#20230,#20180) #20231=* -tokeninfo(#20231,8,#20001,50,"{") -#20232=@"loc,{#10000},8,24,8,24" -locations_default(#20232,#10000,8,24,8,24) -hasLocation(#20231,#20232) +exprs(#20231,0,#20228,1,"prototype") +hasLocation(#20231,#20108) +enclosingStmt(#20231,#20225) +exprContainers(#20231,#20001) +literals("prototype","prototype",#20231) +#20232=* +exprs(#20232,0,#20226,1,"secret") +hasLocation(#20232,#20112) +enclosingStmt(#20232,#20225) +exprContainers(#20232,#20001) +literals("secret","secret",#20232) #20233=* -tokeninfo(#20233,8,#20001,51,"}") -#20234=@"loc,{#10000},8,25,8,25" -locations_default(#20234,#10000,8,25,8,25) -hasLocation(#20233,#20234) -#20235=* -tokeninfo(#20235,8,#20001,52,";") -#20236=@"loc,{#10000},8,26,8,26" -locations_default(#20236,#10000,8,26,8,26) -hasLocation(#20235,#20236) +stmts(#20233,2,#20001,4,"Point.ORIGIN;") +hasLocation(#20233,#20017) +stmtContainers(#20233,#20001) +#20234=* +exprs(#20234,14,#20233,0,"Point.ORIGIN") +#20235=@"loc,{#10000},7,1,7,12" +locations_default(#20235,#10000,7,1,7,12) +hasLocation(#20234,#20235) +enclosingStmt(#20234,#20233) +exprContainers(#20234,#20001) +#20236=* +exprs(#20236,79,#20234,0,"Point") +hasLocation(#20236,#20116) +enclosingStmt(#20236,#20233) +exprContainers(#20236,#20001) +literals("Point","Point",#20236) +bind(#20236,#20180) #20237=* -tokeninfo(#20237,7,#20001,53,"var") -#20238=@"loc,{#10000},10,1,10,3" -locations_default(#20238,#10000,10,1,10,3) -hasLocation(#20237,#20238) +exprs(#20237,0,#20234,1,"ORIGIN") +hasLocation(#20237,#20120) +enclosingStmt(#20237,#20233) +exprContainers(#20237,#20001) +literals("ORIGIN","ORIGIN",#20237) +#20238=* +stmts(#20238,2,#20001,5,"Point.f ... n() {};") +hasLocation(#20238,#20019) +stmtContainers(#20238,#20001) #20239=* -tokeninfo(#20239,6,#20001,54,"someGlobal") -hasLocation(#20239,#20101) -#20240=* -tokeninfo(#20240,8,#20001,55,";") -#20241=@"loc,{#10000},10,15,10,15" -locations_default(#20241,#10000,10,15,10,15) -hasLocation(#20240,#20241) -#20242=* -tokeninfo(#20242,7,#20001,56,"var") -#20243=@"loc,{#10000},13,1,13,3" -locations_default(#20243,#10000,13,1,13,3) -hasLocation(#20242,#20243) -next_token(#20124,#20242) +exprs(#20239,47,#20238,0,"Point.f ... on() {}") +#20240=@"loc,{#10000},8,1,8,25" +locations_default(#20240,#10000,8,1,8,25) +hasLocation(#20239,#20240) +enclosingStmt(#20239,#20238) +exprContainers(#20239,#20001) +#20241=* +exprs(#20241,14,#20239,0,"Point.foo") +#20242=@"loc,{#10000},8,1,8,9" +locations_default(#20242,#10000,8,1,8,9) +hasLocation(#20241,#20242) +enclosingStmt(#20241,#20238) +exprContainers(#20241,#20001) +#20243=* +exprs(#20243,79,#20241,0,"Point") +hasLocation(#20243,#20124) +enclosingStmt(#20243,#20238) +exprContainers(#20243,#20001) +literals("Point","Point",#20243) +bind(#20243,#20180) #20244=* -tokeninfo(#20244,6,#20001,57,"MyString") -hasLocation(#20244,#20106) +exprs(#20244,0,#20241,1,"foo") +hasLocation(#20244,#20128) +enclosingStmt(#20244,#20238) +exprContainers(#20244,#20001) +literals("foo","foo",#20244) #20245=* -tokeninfo(#20245,8,#20001,58,";") -#20246=@"loc,{#10000},13,13,13,13" -locations_default(#20246,#10000,13,13,13,13) +exprs(#20245,9,#20239,1,"function() {}") +#20246=@"loc,{#10000},8,13,8,25" +locations_default(#20246,#10000,8,13,8,25) hasLocation(#20245,#20246) +enclosingStmt(#20245,#20238) +exprContainers(#20245,#20001) #20247=* -tokeninfo(#20247,6,#20001,59,"Point") -hasLocation(#20247,#20115) -#20248=* -tokeninfo(#20248,8,#20001,60,".") -#20249=@"loc,{#10000},15,6,15,6" -locations_default(#20249,#10000,15,6,15,6) -hasLocation(#20248,#20249) -#20250=* -tokeninfo(#20250,6,#20001,61,"prototype") -hasLocation(#20250,#20117) +scopes(#20247,1) +scopenodes(#20245,#20247) +scopenesting(#20247,#20000) +#20248=@"var;{arguments};{#20247}" +variables(#20248,"arguments",#20247) +isArgumentsObject(#20248) +#20249=* +stmts(#20249,1,#20245,-2,"{}") +#20250=@"loc,{#10000},8,24,8,25" +locations_default(#20250,#10000,8,24,8,25) +hasLocation(#20249,#20250) +stmtContainers(#20249,#20245) #20251=* -tokeninfo(#20251,8,#20001,62,"[") -#20252=@"loc,{#10000},15,16,15,16" -locations_default(#20252,#10000,15,16,15,16) -hasLocation(#20251,#20252) +stmts(#20251,18,#20001,6,"var someGlobal;") +hasLocation(#20251,#20023) +stmtContainers(#20251,#20001) +#20252=* +exprs(#20252,64,#20251,0,"someGlobal") +hasLocation(#20252,#20146) +enclosingStmt(#20252,#20251) +exprContainers(#20252,#20001) #20253=* -tokeninfo(#20253,4,#20001,63,"'final'") -hasLocation(#20253,#20119) +exprs(#20253,78,#20252,0,"someGlobal") +hasLocation(#20253,#20146) +enclosingStmt(#20253,#20251) +exprContainers(#20253,#20001) +literals("someGlobal","someGlobal",#20253) +decl(#20253,#20181) #20254=* -tokeninfo(#20254,8,#20001,64,"]") -#20255=@"loc,{#10000},15,24,15,24" -locations_default(#20255,#10000,15,24,15,24) -hasLocation(#20254,#20255) +stmts(#20254,18,#20001,7,"var MyString;") +hasLocation(#20254,#20028) +stmtContainers(#20254,#20001) +#20255=* +exprs(#20255,64,#20254,0,"MyString") +hasLocation(#20255,#20152) +enclosingStmt(#20255,#20254) +exprContainers(#20255,#20001) #20256=* -tokeninfo(#20256,8,#20001,65,";") -#20257=@"loc,{#10000},15,25,15,25" -locations_default(#20257,#10000,15,25,15,25) -hasLocation(#20256,#20257) +exprs(#20256,78,#20255,0,"MyString") +hasLocation(#20256,#20152) +enclosingStmt(#20256,#20254) +exprContainers(#20256,#20001) +literals("MyString","MyString",#20256) +decl(#20256,#20182) +#20257=* +stmts(#20257,2,#20001,8,"Point.p ... inal'];") +hasLocation(#20257,#20032) +stmtContainers(#20257,#20001) #20258=* -tokeninfo(#20258,4,#20001,66,"'use strict'") -hasLocation(#20258,#20123) -#20259=* -tokeninfo(#20259,8,#20001,67,";") -#20260=@"loc,{#10000},17,13,17,13" -locations_default(#20260,#10000,17,13,17,13) -hasLocation(#20259,#20260) -#20261=* -tokeninfo(#20261,0,#20001,68,"") -#20262=@"loc,{#10000},17,14,17,13" -locations_default(#20262,#10000,17,14,17,13) -hasLocation(#20261,#20262) +exprs(#20258,15,#20257,0,"Point.p ... final']") +#20259=@"loc,{#10000},15,1,15,24" +locations_default(#20259,#10000,15,1,15,24) +hasLocation(#20258,#20259) +enclosingStmt(#20258,#20257) +exprContainers(#20258,#20001) +#20260=* +exprs(#20260,14,#20258,0,"Point.prototype") +#20261=@"loc,{#10000},15,1,15,15" +locations_default(#20261,#10000,15,1,15,15) +hasLocation(#20260,#20261) +enclosingStmt(#20260,#20257) +exprContainers(#20260,#20001) +#20262=* +exprs(#20262,79,#20260,0,"Point") +hasLocation(#20262,#20156) +enclosingStmt(#20262,#20257) +exprContainers(#20262,#20001) +literals("Point","Point",#20262) +bind(#20262,#20180) #20263=* -entry_cfg_node(#20263,#20001) -#20264=@"loc,{#10000},1,1,1,0" -locations_default(#20264,#10000,1,1,1,0) -hasLocation(#20263,#20264) +exprs(#20263,0,#20260,1,"prototype") +hasLocation(#20263,#20160) +enclosingStmt(#20263,#20257) +exprContainers(#20263,#20001) +literals("prototype","prototype",#20263) +#20264=* +exprs(#20264,4,#20258,1,"'final'") +hasLocation(#20264,#20164) +enclosingStmt(#20264,#20257) +exprContainers(#20264,#20001) +literals("final","'final'",#20264) #20265=* -exit_cfg_node(#20265,#20001) -hasLocation(#20265,#20262) -successor(#20120,#20122) -successor(#20122,#20265) -successor(#20108,#20114) -successor(#20118,#20110) -successor(#20116,#20112) -successor(#20114,#20116) -successor(#20112,#20118) -successor(#20110,#20120) -successor(#20103,#20107) -successor(#20107,#20105) -successor(#20105,#20108) -successor(#20098,#20102) -successor(#20102,#20100) -successor(#20100,#20103) -successor(#20082,#20088) -successor(#20092,#20084) +stmts(#20265,2,#20001,9,"'use strict';") +hasLocation(#20265,#20036) +stmtContainers(#20265,#20001) #20266=* -entry_cfg_node(#20266,#20092) -#20267=@"loc,{#10000},8,13,8,12" -locations_default(#20267,#10000,8,13,8,12) -hasLocation(#20266,#20267) -#20268=* -exit_cfg_node(#20268,#20092) -#20269=@"loc,{#10000},8,26,8,25" -locations_default(#20269,#10000,8,26,8,25) -hasLocation(#20268,#20269) -successor(#20096,#20268) -successor(#20266,#20096) -successor(#20090,#20086) -successor(#20088,#20090) -successor(#20086,#20092) -successor(#20084,#20098) -successor(#20074,#20078) -successor(#20080,#20076) -successor(#20078,#20080) -successor(#20076,#20082) -successor(#20062,#20068) -successor(#20072,#20064) -successor(#20070,#20066) -successor(#20068,#20070) -successor(#20066,#20072) -successor(#20064,#20074) -successor(#20046,#20054) -successor(#20060,#20048) -successor(#20058,#20050) -successor(#20056,#20052) -successor(#20054,#20056) -successor(#20052,#20058) -successor(#20050,#20060) -successor(#20048,#20062) -successor(#20020,#20028) -successor(#20034,#20022) +exprs(#20266,4,#20265,0,"'use strict'") +hasLocation(#20266,#20170) +enclosingStmt(#20266,#20265) +exprContainers(#20266,#20001) +literals("use strict","'use strict'",#20266) +#20267=* +entry_cfg_node(#20267,#20001) +#20268=@"loc,{#10000},1,1,1,0" +locations_default(#20268,#10000,1,1,1,0) +hasLocation(#20267,#20268) +#20269=* +exit_cfg_node(#20269,#20001) +hasLocation(#20269,#20174) +successor(#20265,#20266) +successor(#20266,#20269) +successor(#20257,#20262) +successor(#20264,#20258) +successor(#20263,#20260) +successor(#20262,#20263) +successor(#20260,#20264) +successor(#20258,#20265) +successor(#20254,#20256) +successor(#20256,#20255) +successor(#20255,#20257) +successor(#20251,#20253) +successor(#20253,#20252) +successor(#20252,#20254) +successor(#20238,#20243) +successor(#20245,#20239) #20270=* -entry_cfg_node(#20270,#20034) -#20271=@"loc,{#10000},3,24,3,23" -locations_default(#20271,#10000,3,24,3,23) +entry_cfg_node(#20270,#20245) +#20271=@"loc,{#10000},8,13,8,12" +locations_default(#20271,#10000,8,13,8,12) hasLocation(#20270,#20271) #20272=* -exit_cfg_node(#20272,#20034) -#20273=@"loc,{#10000},3,43,3,42" -locations_default(#20273,#10000,3,43,3,42) +exit_cfg_node(#20272,#20245) +#20273=@"loc,{#10000},8,26,8,25" +locations_default(#20273,#10000,8,26,8,25) hasLocation(#20272,#20273) -successor(#20044,#20272) -successor(#20041,#20044) -successor(#20038,#20041) -successor(#20270,#20038) -successor(#20032,#20024) -successor(#20030,#20026) -successor(#20028,#20030) -successor(#20026,#20032) -successor(#20024,#20034) -successor(#20022,#20046) -successor(#20006,#20020) +successor(#20249,#20272) +successor(#20270,#20249) +successor(#20244,#20241) +successor(#20243,#20244) +successor(#20241,#20245) +successor(#20239,#20251) +successor(#20233,#20236) +successor(#20237,#20234) +successor(#20236,#20237) +successor(#20234,#20238) +successor(#20225,#20230) +successor(#20232,#20226) +successor(#20231,#20228) +successor(#20230,#20231) +successor(#20228,#20232) +successor(#20226,#20233) +successor(#20213,#20220) +successor(#20223,#20214) +successor(#20222,#20216) +successor(#20221,#20218) +successor(#20220,#20221) +successor(#20218,#20222) +successor(#20216,#20223) +successor(#20214,#20225) +successor(#20193,#20200) +successor(#20203,#20194) #20274=* -entry_cfg_node(#20274,#20006) -hasLocation(#20274,#20264) -#20275=* -exit_cfg_node(#20275,#20006) -#20276=@"loc,{#10000},1,24,1,23" -locations_default(#20276,#10000,1,24,1,23) -hasLocation(#20275,#20276) -successor(#20018,#20275) -successor(#20015,#20018) -successor(#20012,#20015) -successor(#20274,#20012) -successor(#20008,#20006) -successor(#20263,#20008) -#20277=* -jsdoc(#20277,"",#20124) -hasLocation(#20277,#20125) +entry_cfg_node(#20274,#20203) +#20275=@"loc,{#10000},3,24,3,23" +locations_default(#20275,#10000,3,24,3,23) +hasLocation(#20274,#20275) +#20276=* +exit_cfg_node(#20276,#20203) +#20277=@"loc,{#10000},3,43,3,42" +locations_default(#20277,#10000,3,43,3,42) +hasLocation(#20276,#20277) +successor(#20211,#20276) +successor(#20209,#20211) +successor(#20207,#20209) +successor(#20274,#20207) +successor(#20202,#20196) +successor(#20201,#20198) +successor(#20200,#20201) +successor(#20198,#20202) +successor(#20196,#20203) +successor(#20194,#20213) +successor(#20183,#20193) #20278=* -jsdoc_tags(#20278,"typedef",#20277,0,"@typedef") -#20279=@"loc,{#10000},12,5,12,12" -locations_default(#20279,#10000,12,5,12,12) -hasLocation(#20278,#20279) -#20280=* -jsdoc_type_exprs(#20280,5,#20278,0,"String") +entry_cfg_node(#20278,#20183) +hasLocation(#20278,#20268) +#20279=* +exit_cfg_node(#20279,#20183) +#20280=@"loc,{#10000},1,24,1,23" +locations_default(#20280,#10000,1,24,1,23) +hasLocation(#20279,#20280) +successor(#20191,#20279) +successor(#20189,#20191) +successor(#20187,#20189) +successor(#20278,#20187) +successor(#20184,#20183) +successor(#20267,#20184) isExterns(#20001) numlines(#10000,17,10,1) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/anonFunctionOptionalParm.js.trap b/javascript/extractor/tests/flow/output/trap/anonFunctionOptionalParm.js.trap index dc46a3154a1..ab38c54620c 100644 --- a/javascript/extractor/tests/flow/output/trap/anonFunctionOptionalParm.js.trap +++ b/javascript/extractor/tests/flow/output/trap/anonFunctionOptionalParm.js.trap @@ -9,133 +9,132 @@ 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) -#20004=* -stmts(#20004,18,#20001,0,"var f = ... => {};") -#20005=@"loc,{#10000},1,1,1,23" -locations_default(#20005,#10000,1,1,1,23) -hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) -#20006=* -exprs(#20006,64,#20004,0,"f = (x?:int) => {}") -#20007=@"loc,{#10000},1,5,1,22" -locations_default(#20007,#10000,1,5,1,22) -hasLocation(#20006,#20007) -enclosingStmt(#20006,#20004) -exprContainers(#20006,#20001) -#20008=* -exprs(#20008,78,#20006,0,"f") -#20009=@"loc,{#10000},1,5,1,5" -locations_default(#20009,#10000,1,5,1,5) -hasLocation(#20008,#20009) -enclosingStmt(#20008,#20004) -exprContainers(#20008,#20001) -literals("f","f",#20008) -decl(#20008,#20003) -#20010=* -exprs(#20010,65,#20006,1,"(x?:int) => {}") -#20011=@"loc,{#10000},1,9,1,22" -locations_default(#20011,#10000,1,9,1,22) -hasLocation(#20010,#20011) -enclosingStmt(#20010,#20004) -exprContainers(#20010,#20001) -#20012=* -scopes(#20012,1) -scopenodes(#20010,#20012) -scopenesting(#20012,#20000) -#20013=@"var;{x};{#20012}" -variables(#20013,"x",#20012) -#20014=* -exprs(#20014,78,#20010,0,"x") -#20015=@"loc,{#10000},1,10,1,10" -locations_default(#20015,#10000,1,10,1,10) -hasLocation(#20014,#20015) -exprContainers(#20014,#20010) -literals("x","x",#20014) -decl(#20014,#20013) -#20016=* -stmts(#20016,1,#20010,-2,"{}") -#20017=@"loc,{#10000},1,21,1,22" -locations_default(#20017,#10000,1,21,1,22) -hasLocation(#20016,#20017) -stmtContainers(#20016,#20010) -numlines(#20010,1,1,0) -#20018=* -lines(#20018,#20001,"var f = (x?:int) => {};"," +#20002=* +lines(#20002,#20001,"var f = (x?:int) => {};"," ") -hasLocation(#20018,#20005) +#20003=@"loc,{#10000},1,1,1,23" +locations_default(#20003,#10000,1,1,1,23) +hasLocation(#20002,#20003) numlines(#20001,1,1,0) -#20019=* -tokeninfo(#20019,7,#20001,0,"var") -#20020=@"loc,{#10000},1,1,1,3" -locations_default(#20020,#10000,1,1,1,3) -hasLocation(#20019,#20020) -#20021=* -tokeninfo(#20021,6,#20001,1,"f") -hasLocation(#20021,#20009) +#20004=* +tokeninfo(#20004,7,#20001,0,"var") +#20005=@"loc,{#10000},1,1,1,3" +locations_default(#20005,#10000,1,1,1,3) +hasLocation(#20004,#20005) +#20006=* +tokeninfo(#20006,6,#20001,1,"f") +#20007=@"loc,{#10000},1,5,1,5" +locations_default(#20007,#10000,1,5,1,5) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,8,#20001,2,"=") +#20009=@"loc,{#10000},1,7,1,7" +locations_default(#20009,#10000,1,7,1,7) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,3,"(") +#20011=@"loc,{#10000},1,9,1,9" +locations_default(#20011,#10000,1,9,1,9) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,6,#20001,4,"x") +#20013=@"loc,{#10000},1,10,1,10" +locations_default(#20013,#10000,1,10,1,10) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,5,"?") +#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,12,1,12" +locations_default(#20017,#10000,1,12,1,12) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,6,#20001,7,"int") +#20019=@"loc,{#10000},1,13,1,15" +locations_default(#20019,#10000,1,13,1,15) +hasLocation(#20018,#20019) +#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,2,"=") -#20023=@"loc,{#10000},1,7,1,7" -locations_default(#20023,#10000,1,7,1,7) +tokeninfo(#20022,8,#20001,9,"=>") +#20023=@"loc,{#10000},1,18,1,19" +locations_default(#20023,#10000,1,18,1,19) hasLocation(#20022,#20023) #20024=* -tokeninfo(#20024,8,#20001,3,"(") -#20025=@"loc,{#10000},1,9,1,9" -locations_default(#20025,#10000,1,9,1,9) +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,4,"x") -hasLocation(#20026,#20015) -#20027=* -tokeninfo(#20027,8,#20001,5,"?") -#20028=@"loc,{#10000},1,11,1,11" -locations_default(#20028,#10000,1,11,1,11) -hasLocation(#20027,#20028) -#20029=* -tokeninfo(#20029,8,#20001,6,":") -#20030=@"loc,{#10000},1,12,1,12" -locations_default(#20030,#10000,1,12,1,12) -hasLocation(#20029,#20030) -#20031=* -tokeninfo(#20031,6,#20001,7,"int") -#20032=@"loc,{#10000},1,13,1,15" -locations_default(#20032,#10000,1,13,1,15) -hasLocation(#20031,#20032) -#20033=* -tokeninfo(#20033,8,#20001,8,")") -#20034=@"loc,{#10000},1,16,1,16" -locations_default(#20034,#10000,1,16,1,16) -hasLocation(#20033,#20034) +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,12,";") +#20029=@"loc,{#10000},1,23,1,23" +locations_default(#20029,#10000,1,23,1,23) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,0,#20001,13,"") +#20031=@"loc,{#10000},2,1,2,0" +locations_default(#20031,#10000,2,1,2,0) +hasLocation(#20030,#20031) +toplevels(#20001,0) +#20032=@"loc,{#10000},1,1,2,0" +locations_default(#20032,#10000,1,1,2,0) +hasLocation(#20001,#20032) +#20033=@"var;{f};{#20000}" +variables(#20033,"f",#20000) +#20034=* +stmts(#20034,18,#20001,0,"var f = ... => {};") +hasLocation(#20034,#20003) +stmtContainers(#20034,#20001) #20035=* -tokeninfo(#20035,8,#20001,9,"=>") -#20036=@"loc,{#10000},1,18,1,19" -locations_default(#20036,#10000,1,18,1,19) +exprs(#20035,64,#20034,0,"f = (x?:int) => {}") +#20036=@"loc,{#10000},1,5,1,22" +locations_default(#20036,#10000,1,5,1,22) hasLocation(#20035,#20036) +enclosingStmt(#20035,#20034) +exprContainers(#20035,#20001) #20037=* -tokeninfo(#20037,8,#20001,10,"{") -#20038=@"loc,{#10000},1,21,1,21" -locations_default(#20038,#10000,1,21,1,21) -hasLocation(#20037,#20038) -#20039=* -tokeninfo(#20039,8,#20001,11,"}") -#20040=@"loc,{#10000},1,22,1,22" -locations_default(#20040,#10000,1,22,1,22) -hasLocation(#20039,#20040) -#20041=* -tokeninfo(#20041,8,#20001,12,";") -#20042=@"loc,{#10000},1,23,1,23" -locations_default(#20042,#10000,1,23,1,23) -hasLocation(#20041,#20042) +exprs(#20037,78,#20035,0,"f") +hasLocation(#20037,#20007) +enclosingStmt(#20037,#20034) +exprContainers(#20037,#20001) +literals("f","f",#20037) +decl(#20037,#20033) +#20038=* +exprs(#20038,65,#20035,1,"(x?:int) => {}") +#20039=@"loc,{#10000},1,9,1,22" +locations_default(#20039,#10000,1,9,1,22) +hasLocation(#20038,#20039) +enclosingStmt(#20038,#20034) +exprContainers(#20038,#20001) +#20040=* +scopes(#20040,1) +scopenodes(#20038,#20040) +scopenesting(#20040,#20000) +#20041=@"var;{x};{#20040}" +variables(#20041,"x",#20040) +#20042=* +exprs(#20042,78,#20038,0,"x") +hasLocation(#20042,#20013) +exprContainers(#20042,#20038) +literals("x","x",#20042) +decl(#20042,#20041) #20043=* -tokeninfo(#20043,0,#20001,13,"") -#20044=@"loc,{#10000},2,1,2,0" -locations_default(#20044,#10000,2,1,2,0) +stmts(#20043,1,#20038,-2,"{}") +#20044=@"loc,{#10000},1,21,1,22" +locations_default(#20044,#10000,1,21,1,22) hasLocation(#20043,#20044) +stmtContainers(#20043,#20038) #20045=* entry_cfg_node(#20045,#20001) #20046=@"loc,{#10000},1,1,1,0" @@ -143,24 +142,24 @@ locations_default(#20046,#10000,1,1,1,0) hasLocation(#20045,#20046) #20047=* exit_cfg_node(#20047,#20001) -hasLocation(#20047,#20044) -successor(#20004,#20008) -successor(#20010,#20006) +hasLocation(#20047,#20031) +successor(#20034,#20037) +successor(#20038,#20035) #20048=* -entry_cfg_node(#20048,#20010) +entry_cfg_node(#20048,#20038) #20049=@"loc,{#10000},1,9,1,8" locations_default(#20049,#10000,1,9,1,8) hasLocation(#20048,#20049) #20050=* -exit_cfg_node(#20050,#20010) +exit_cfg_node(#20050,#20038) #20051=@"loc,{#10000},1,23,1,22" locations_default(#20051,#10000,1,23,1,22) hasLocation(#20050,#20051) -successor(#20016,#20050) -successor(#20014,#20016) -successor(#20048,#20014) -successor(#20008,#20010) -successor(#20006,#20047) -successor(#20045,#20004) +successor(#20043,#20050) +successor(#20042,#20043) +successor(#20048,#20042) +successor(#20037,#20038) +successor(#20035,#20047) +successor(#20045,#20034) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/anonFunctionReturnType.js.trap b/javascript/extractor/tests/flow/output/trap/anonFunctionReturnType.js.trap index 37e401c7c76..ef9f4a3662a 100644 --- a/javascript/extractor/tests/flow/output/trap/anonFunctionReturnType.js.trap +++ b/javascript/extractor/tests/flow/output/trap/anonFunctionReturnType.js.trap @@ -9,140 +9,139 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,1,48" -locations_default(#20002,#10000,1,1,1,48) -hasLocation(#20001,#20002) -#20003=@"var;{f};{#20000}" -variables(#20003,"f",#20000) -#20004=* -stmts(#20004,18,#20001,0,"var f = ... => {};") -hasLocation(#20004,#20002) -stmtContainers(#20004,#20001) -#20005=* -exprs(#20005,64,#20004,0,"f = (vi ... n => {}") -#20006=@"loc,{#10000},1,5,1,47" -locations_default(#20006,#10000,1,5,1,47) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20004) -exprContainers(#20005,#20001) -#20007=* -exprs(#20007,78,#20005,0,"f") -#20008=@"loc,{#10000},1,5,1,5" -locations_default(#20008,#10000,1,5,1,5) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20004) -exprContainers(#20007,#20001) -literals("f","f",#20007) -decl(#20007,#20003) -#20009=* -exprs(#20009,65,#20005,1,"(viewab ... n => {}") -#20010=@"loc,{#10000},1,9,1,47" -locations_default(#20010,#10000,1,9,1,47) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20004) -exprContainers(#20009,#20001) -#20011=* -scopes(#20011,1) -scopenodes(#20009,#20011) -scopenesting(#20011,#20000) -#20012=@"var;{viewable};{#20011}" -variables(#20012,"viewable",#20011) -#20013=* -exprs(#20013,78,#20009,0,"viewable") -#20014=@"loc,{#10000},1,10,1,17" -locations_default(#20014,#10000,1,10,1,17) -hasLocation(#20013,#20014) -exprContainers(#20013,#20009) -literals("viewable","viewable",#20013) -decl(#20013,#20012) -#20015=* -stmts(#20015,1,#20009,-2,"{}") -#20016=@"loc,{#10000},1,46,1,47" -locations_default(#20016,#10000,1,46,1,47) -hasLocation(#20015,#20016) -stmtContainers(#20015,#20009) -numlines(#20009,1,1,0) -#20017=* -lines(#20017,#20001,"var f = (viewable: ViewToken): ?ViewToken => {};","") -hasLocation(#20017,#20002) +#20002=* +lines(#20002,#20001,"var f = (viewable: ViewToken): ?ViewToken => {};","") +#20003=@"loc,{#10000},1,1,1,48" +locations_default(#20003,#10000,1,1,1,48) +hasLocation(#20002,#20003) numlines(#20001,1,1,0) +#20004=* +tokeninfo(#20004,7,#20001,0,"var") +#20005=@"loc,{#10000},1,1,1,3" +locations_default(#20005,#10000,1,1,1,3) +hasLocation(#20004,#20005) +#20006=* +tokeninfo(#20006,6,#20001,1,"f") +#20007=@"loc,{#10000},1,5,1,5" +locations_default(#20007,#10000,1,5,1,5) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,8,#20001,2,"=") +#20009=@"loc,{#10000},1,7,1,7" +locations_default(#20009,#10000,1,7,1,7) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,3,"(") +#20011=@"loc,{#10000},1,9,1,9" +locations_default(#20011,#10000,1,9,1,9) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,6,#20001,4,"viewable") +#20013=@"loc,{#10000},1,10,1,17" +locations_default(#20013,#10000,1,10,1,17) +hasLocation(#20012,#20013) +#20014=* +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,6,#20001,6,"ViewToken") +#20017=@"loc,{#10000},1,20,1,28" +locations_default(#20017,#10000,1,20,1,28) +hasLocation(#20016,#20017) #20018=* -tokeninfo(#20018,7,#20001,0,"var") -#20019=@"loc,{#10000},1,1,1,3" -locations_default(#20019,#10000,1,1,1,3) +tokeninfo(#20018,8,#20001,7,")") +#20019=@"loc,{#10000},1,29,1,29" +locations_default(#20019,#10000,1,29,1,29) hasLocation(#20018,#20019) #20020=* -tokeninfo(#20020,6,#20001,1,"f") -hasLocation(#20020,#20008) -#20021=* -tokeninfo(#20021,8,#20001,2,"=") -#20022=@"loc,{#10000},1,7,1,7" -locations_default(#20022,#10000,1,7,1,7) -hasLocation(#20021,#20022) -#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,6,#20001,4,"viewable") -hasLocation(#20025,#20014) +tokeninfo(#20020,8,#20001,8,":") +#20021=@"loc,{#10000},1,30,1,30" +locations_default(#20021,#10000,1,30,1,30) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,9,"?") +#20023=@"loc,{#10000},1,32,1,32" +locations_default(#20023,#10000,1,32,1,32) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,6,#20001,10,"ViewToken") +#20025=@"loc,{#10000},1,33,1,41" +locations_default(#20025,#10000,1,33,1,41) +hasLocation(#20024,#20025) #20026=* -tokeninfo(#20026,8,#20001,5,":") -#20027=@"loc,{#10000},1,18,1,18" -locations_default(#20027,#10000,1,18,1,18) +tokeninfo(#20026,8,#20001,11,"=>") +#20027=@"loc,{#10000},1,43,1,44" +locations_default(#20027,#10000,1,43,1,44) hasLocation(#20026,#20027) #20028=* -tokeninfo(#20028,6,#20001,6,"ViewToken") -#20029=@"loc,{#10000},1,20,1,28" -locations_default(#20029,#10000,1,20,1,28) +tokeninfo(#20028,8,#20001,12,"{") +#20029=@"loc,{#10000},1,46,1,46" +locations_default(#20029,#10000,1,46,1,46) hasLocation(#20028,#20029) #20030=* -tokeninfo(#20030,8,#20001,7,")") -#20031=@"loc,{#10000},1,29,1,29" -locations_default(#20031,#10000,1,29,1,29) +tokeninfo(#20030,8,#20001,13,"}") +#20031=@"loc,{#10000},1,47,1,47" +locations_default(#20031,#10000,1,47,1,47) hasLocation(#20030,#20031) #20032=* -tokeninfo(#20032,8,#20001,8,":") -#20033=@"loc,{#10000},1,30,1,30" -locations_default(#20033,#10000,1,30,1,30) +tokeninfo(#20032,8,#20001,14,";") +#20033=@"loc,{#10000},1,48,1,48" +locations_default(#20033,#10000,1,48,1,48) hasLocation(#20032,#20033) #20034=* -tokeninfo(#20034,8,#20001,9,"?") -#20035=@"loc,{#10000},1,32,1,32" -locations_default(#20035,#10000,1,32,1,32) +tokeninfo(#20034,0,#20001,15,"") +#20035=@"loc,{#10000},1,49,1,48" +locations_default(#20035,#10000,1,49,1,48) hasLocation(#20034,#20035) -#20036=* -tokeninfo(#20036,6,#20001,10,"ViewToken") -#20037=@"loc,{#10000},1,33,1,41" -locations_default(#20037,#10000,1,33,1,41) -hasLocation(#20036,#20037) +toplevels(#20001,0) +hasLocation(#20001,#20003) +#20036=@"var;{f};{#20000}" +variables(#20036,"f",#20000) +#20037=* +stmts(#20037,18,#20001,0,"var f = ... => {};") +hasLocation(#20037,#20003) +stmtContainers(#20037,#20001) #20038=* -tokeninfo(#20038,8,#20001,11,"=>") -#20039=@"loc,{#10000},1,43,1,44" -locations_default(#20039,#10000,1,43,1,44) +exprs(#20038,64,#20037,0,"f = (vi ... n => {}") +#20039=@"loc,{#10000},1,5,1,47" +locations_default(#20039,#10000,1,5,1,47) hasLocation(#20038,#20039) +enclosingStmt(#20038,#20037) +exprContainers(#20038,#20001) #20040=* -tokeninfo(#20040,8,#20001,12,"{") -#20041=@"loc,{#10000},1,46,1,46" -locations_default(#20041,#10000,1,46,1,46) -hasLocation(#20040,#20041) -#20042=* -tokeninfo(#20042,8,#20001,13,"}") -#20043=@"loc,{#10000},1,47,1,47" -locations_default(#20043,#10000,1,47,1,47) -hasLocation(#20042,#20043) -#20044=* -tokeninfo(#20044,8,#20001,14,";") -#20045=@"loc,{#10000},1,48,1,48" -locations_default(#20045,#10000,1,48,1,48) -hasLocation(#20044,#20045) +exprs(#20040,78,#20038,0,"f") +hasLocation(#20040,#20007) +enclosingStmt(#20040,#20037) +exprContainers(#20040,#20001) +literals("f","f",#20040) +decl(#20040,#20036) +#20041=* +exprs(#20041,65,#20038,1,"(viewab ... n => {}") +#20042=@"loc,{#10000},1,9,1,47" +locations_default(#20042,#10000,1,9,1,47) +hasLocation(#20041,#20042) +enclosingStmt(#20041,#20037) +exprContainers(#20041,#20001) +#20043=* +scopes(#20043,1) +scopenodes(#20041,#20043) +scopenesting(#20043,#20000) +#20044=@"var;{viewable};{#20043}" +variables(#20044,"viewable",#20043) +#20045=* +exprs(#20045,78,#20041,0,"viewable") +hasLocation(#20045,#20013) +exprContainers(#20045,#20041) +literals("viewable","viewable",#20045) +decl(#20045,#20044) #20046=* -tokeninfo(#20046,0,#20001,15,"") -#20047=@"loc,{#10000},1,49,1,48" -locations_default(#20047,#10000,1,49,1,48) +stmts(#20046,1,#20041,-2,"{}") +#20047=@"loc,{#10000},1,46,1,47" +locations_default(#20047,#10000,1,46,1,47) hasLocation(#20046,#20047) +stmtContainers(#20046,#20041) #20048=* entry_cfg_node(#20048,#20001) #20049=@"loc,{#10000},1,1,1,0" @@ -150,24 +149,24 @@ locations_default(#20049,#10000,1,1,1,0) hasLocation(#20048,#20049) #20050=* exit_cfg_node(#20050,#20001) -hasLocation(#20050,#20047) -successor(#20004,#20007) -successor(#20009,#20005) +hasLocation(#20050,#20035) +successor(#20037,#20040) +successor(#20041,#20038) #20051=* -entry_cfg_node(#20051,#20009) +entry_cfg_node(#20051,#20041) #20052=@"loc,{#10000},1,9,1,8" locations_default(#20052,#10000,1,9,1,8) hasLocation(#20051,#20052) #20053=* -exit_cfg_node(#20053,#20009) +exit_cfg_node(#20053,#20041) #20054=@"loc,{#10000},1,48,1,47" locations_default(#20054,#10000,1,48,1,47) hasLocation(#20053,#20054) -successor(#20015,#20053) -successor(#20013,#20015) -successor(#20051,#20013) -successor(#20007,#20009) -successor(#20005,#20050) -successor(#20048,#20004) +successor(#20046,#20053) +successor(#20045,#20046) +successor(#20051,#20045) +successor(#20040,#20041) +successor(#20038,#20050) +successor(#20048,#20037) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/anonFunctionWithoutParens.js.trap b/javascript/extractor/tests/flow/output/trap/anonFunctionWithoutParens.js.trap index 37086da64b2..3385f035c92 100644 --- a/javascript/extractor/tests/flow/output/trap/anonFunctionWithoutParens.js.trap +++ b/javascript/extractor/tests/flow/output/trap/anonFunctionWithoutParens.js.trap @@ -9,74 +9,75 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,1,39" -locations_default(#20002,#10000,1,1,1,39) -hasLocation(#20001,#20002) -#20003=@"module;{#10000},1,1" -scopes(#20003,3) -scopenodes(#20001,#20003) -scopenesting(#20003,#20000) -isModule(#20001) -#20004=* -lines(#20004,#20001,"export type Callback = (Error => void);","") -hasLocation(#20004,#20002) +#20002=* +lines(#20002,#20001,"export type Callback = (Error => void);","") +#20003=@"loc,{#10000},1,1,1,39" +locations_default(#20003,#10000,1,1,1,39) +hasLocation(#20002,#20003) numlines(#20001,1,1,0) -#20005=* -tokeninfo(#20005,7,#20001,0,"export") -#20006=@"loc,{#10000},1,1,1,6" -locations_default(#20006,#10000,1,1,1,6) -hasLocation(#20005,#20006) -#20007=* -tokeninfo(#20007,6,#20001,1,"type") -#20008=@"loc,{#10000},1,8,1,11" -locations_default(#20008,#10000,1,8,1,11) -hasLocation(#20007,#20008) -#20009=* -tokeninfo(#20009,6,#20001,2,"Callback") -#20010=@"loc,{#10000},1,13,1,20" -locations_default(#20010,#10000,1,13,1,20) -hasLocation(#20009,#20010) -#20011=* -tokeninfo(#20011,8,#20001,3,"=") -#20012=@"loc,{#10000},1,22,1,22" -locations_default(#20012,#10000,1,22,1,22) -hasLocation(#20011,#20012) -#20013=* -tokeninfo(#20013,8,#20001,4,"(") -#20014=@"loc,{#10000},1,24,1,24" -locations_default(#20014,#10000,1,24,1,24) -hasLocation(#20013,#20014) -#20015=* -tokeninfo(#20015,6,#20001,5,"Error") -#20016=@"loc,{#10000},1,25,1,29" -locations_default(#20016,#10000,1,25,1,29) -hasLocation(#20015,#20016) -#20017=* -tokeninfo(#20017,8,#20001,6,"=>") -#20018=@"loc,{#10000},1,31,1,32" -locations_default(#20018,#10000,1,31,1,32) -hasLocation(#20017,#20018) -#20019=* -tokeninfo(#20019,7,#20001,7,"void") -#20020=@"loc,{#10000},1,34,1,37" -locations_default(#20020,#10000,1,34,1,37) -hasLocation(#20019,#20020) -#20021=* -tokeninfo(#20021,8,#20001,8,")") -#20022=@"loc,{#10000},1,38,1,38" -locations_default(#20022,#10000,1,38,1,38) -hasLocation(#20021,#20022) -#20023=* -tokeninfo(#20023,8,#20001,9,";") -#20024=@"loc,{#10000},1,39,1,39" -locations_default(#20024,#10000,1,39,1,39) -hasLocation(#20023,#20024) -#20025=* -tokeninfo(#20025,0,#20001,10,"") -#20026=@"loc,{#10000},1,40,1,39" -locations_default(#20026,#10000,1,40,1,39) -hasLocation(#20025,#20026) +#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,6,#20001,1,"type") +#20007=@"loc,{#10000},1,8,1,11" +locations_default(#20007,#10000,1,8,1,11) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,6,#20001,2,"Callback") +#20009=@"loc,{#10000},1,13,1,20" +locations_default(#20009,#10000,1,13,1,20) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,3,"=") +#20011=@"loc,{#10000},1,22,1,22" +locations_default(#20011,#10000,1,22,1,22) +hasLocation(#20010,#20011) +#20012=* +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,6,#20001,5,"Error") +#20015=@"loc,{#10000},1,25,1,29" +locations_default(#20015,#10000,1,25,1,29) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,6,"=>") +#20017=@"loc,{#10000},1,31,1,32" +locations_default(#20017,#10000,1,31,1,32) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,7,#20001,7,"void") +#20019=@"loc,{#10000},1,34,1,37" +locations_default(#20019,#10000,1,34,1,37) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,8,")") +#20021=@"loc,{#10000},1,38,1,38" +locations_default(#20021,#10000,1,38,1,38) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,9,";") +#20023=@"loc,{#10000},1,39,1,39" +locations_default(#20023,#10000,1,39,1,39) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,0,#20001,10,"") +#20025=@"loc,{#10000},1,40,1,39" +locations_default(#20025,#10000,1,40,1,39) +hasLocation(#20024,#20025) +toplevels(#20001,0) +hasLocation(#20001,#20003) +#20026=@"module;{#10000},1,1" +scopes(#20026,3) +scopenodes(#20001,#20026) +scopenesting(#20026,#20000) +isModule(#20001) +isES2015Module(#20001) #20027=* entry_cfg_node(#20027,#20001) #20028=@"loc,{#10000},1,1,1,0" @@ -84,7 +85,7 @@ locations_default(#20028,#10000,1,1,1,0) hasLocation(#20027,#20028) #20029=* exit_cfg_node(#20029,#20001) -hasLocation(#20029,#20026) +hasLocation(#20029,#20025) successor(#20027,#20029) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/anonIndexer.js.trap b/javascript/extractor/tests/flow/output/trap/anonIndexer.js.trap index e9948ea3fbb..4b144a97faa 100644 --- a/javascript/extractor/tests/flow/output/trap/anonIndexer.js.trap +++ b/javascript/extractor/tests/flow/output/trap/anonIndexer.js.trap @@ -9,87 +9,88 @@ 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=* -lines(#20004,#20001,"export type TransformResults = {[string]: TransformResult};"," +#20002=* +lines(#20002,#20001,"export type TransformResults = {[string]: TransformResult};"," ") -#20005=@"loc,{#10000},1,1,1,59" -locations_default(#20005,#10000,1,1,1,59) -hasLocation(#20004,#20005) +#20003=@"loc,{#10000},1,1,1,59" +locations_default(#20003,#10000,1,1,1,59) +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,0,"export") -#20007=@"loc,{#10000},1,1,1,6" -locations_default(#20007,#10000,1,1,1,6) +tokeninfo(#20006,6,#20001,1,"type") +#20007=@"loc,{#10000},1,8,1,11" +locations_default(#20007,#10000,1,8,1,11) hasLocation(#20006,#20007) #20008=* -tokeninfo(#20008,6,#20001,1,"type") -#20009=@"loc,{#10000},1,8,1,11" -locations_default(#20009,#10000,1,8,1,11) +tokeninfo(#20008,6,#20001,2,"TransformResults") +#20009=@"loc,{#10000},1,13,1,28" +locations_default(#20009,#10000,1,13,1,28) hasLocation(#20008,#20009) #20010=* -tokeninfo(#20010,6,#20001,2,"TransformResults") -#20011=@"loc,{#10000},1,13,1,28" -locations_default(#20011,#10000,1,13,1,28) +tokeninfo(#20010,8,#20001,3,"=") +#20011=@"loc,{#10000},1,30,1,30" +locations_default(#20011,#10000,1,30,1,30) hasLocation(#20010,#20011) #20012=* -tokeninfo(#20012,8,#20001,3,"=") -#20013=@"loc,{#10000},1,30,1,30" -locations_default(#20013,#10000,1,30,1,30) +tokeninfo(#20012,8,#20001,4,"{") +#20013=@"loc,{#10000},1,32,1,32" +locations_default(#20013,#10000,1,32,1,32) hasLocation(#20012,#20013) #20014=* -tokeninfo(#20014,8,#20001,4,"{") -#20015=@"loc,{#10000},1,32,1,32" -locations_default(#20015,#10000,1,32,1,32) +tokeninfo(#20014,8,#20001,5,"[") +#20015=@"loc,{#10000},1,33,1,33" +locations_default(#20015,#10000,1,33,1,33) hasLocation(#20014,#20015) #20016=* -tokeninfo(#20016,8,#20001,5,"[") -#20017=@"loc,{#10000},1,33,1,33" -locations_default(#20017,#10000,1,33,1,33) +tokeninfo(#20016,6,#20001,6,"string") +#20017=@"loc,{#10000},1,34,1,39" +locations_default(#20017,#10000,1,34,1,39) hasLocation(#20016,#20017) #20018=* -tokeninfo(#20018,6,#20001,6,"string") -#20019=@"loc,{#10000},1,34,1,39" -locations_default(#20019,#10000,1,34,1,39) +tokeninfo(#20018,8,#20001,7,"]") +#20019=@"loc,{#10000},1,40,1,40" +locations_default(#20019,#10000,1,40,1,40) hasLocation(#20018,#20019) #20020=* -tokeninfo(#20020,8,#20001,7,"]") -#20021=@"loc,{#10000},1,40,1,40" -locations_default(#20021,#10000,1,40,1,40) +tokeninfo(#20020,8,#20001,8,":") +#20021=@"loc,{#10000},1,41,1,41" +locations_default(#20021,#10000,1,41,1,41) hasLocation(#20020,#20021) #20022=* -tokeninfo(#20022,8,#20001,8,":") -#20023=@"loc,{#10000},1,41,1,41" -locations_default(#20023,#10000,1,41,1,41) +tokeninfo(#20022,6,#20001,9,"TransformResult") +#20023=@"loc,{#10000},1,43,1,57" +locations_default(#20023,#10000,1,43,1,57) hasLocation(#20022,#20023) #20024=* -tokeninfo(#20024,6,#20001,9,"TransformResult") -#20025=@"loc,{#10000},1,43,1,57" -locations_default(#20025,#10000,1,43,1,57) +tokeninfo(#20024,8,#20001,10,"}") +#20025=@"loc,{#10000},1,58,1,58" +locations_default(#20025,#10000,1,58,1,58) hasLocation(#20024,#20025) #20026=* -tokeninfo(#20026,8,#20001,10,"}") -#20027=@"loc,{#10000},1,58,1,58" -locations_default(#20027,#10000,1,58,1,58) +tokeninfo(#20026,8,#20001,11,";") +#20027=@"loc,{#10000},1,59,1,59" +locations_default(#20027,#10000,1,59,1,59) hasLocation(#20026,#20027) #20028=* -tokeninfo(#20028,8,#20001,11,";") -#20029=@"loc,{#10000},1,59,1,59" -locations_default(#20029,#10000,1,59,1,59) +tokeninfo(#20028,0,#20001,12,"") +#20029=@"loc,{#10000},2,1,2,0" +locations_default(#20029,#10000,2,1,2,0) hasLocation(#20028,#20029) -#20030=* -tokeninfo(#20030,0,#20001,12,"") -#20031=@"loc,{#10000},2,1,2,0" -locations_default(#20031,#10000,2,1,2,0) -hasLocation(#20030,#20031) +toplevels(#20001,0) +#20030=@"loc,{#10000},1,1,2,0" +locations_default(#20030,#10000,1,1,2,0) +hasLocation(#20001,#20030) +#20031=@"module;{#10000},1,1" +scopes(#20031,3) +scopenodes(#20001,#20031) +scopenesting(#20031,#20000) +isModule(#20001) +isES2015Module(#20001) #20032=* entry_cfg_node(#20032,#20001) #20033=@"loc,{#10000},1,1,1,0" @@ -97,7 +98,7 @@ locations_default(#20033,#10000,1,1,1,0) hasLocation(#20032,#20033) #20034=* exit_cfg_node(#20034,#20001) -hasLocation(#20034,#20031) +hasLocation(#20034,#20029) successor(#20032,#20034) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/array-types.js.trap b/javascript/extractor/tests/flow/output/trap/array-types.js.trap index 186ec124a96..9b64906a86d 100644 --- a/javascript/extractor/tests/flow/output/trap/array-types.js.trap +++ b/javascript/extractor/tests/flow/output/trap/array-types.js.trap @@ -9,418 +9,414 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,5,0" -locations_default(#20002,#10000,1,1,5,0) -hasLocation(#20001,#20002) -#20003=@"var;{f};{#20000}" -variables(#20003,"f",#20000) +#20002=* +lines(#20002,#20001,"function f(p: T) {}"," +") +#20003=@"loc,{#10000},1,1,1,19" +locations_default(#20003,#10000,1,1,1,19) +hasLocation(#20002,#20003) #20004=* -stmts(#20004,17,#20001,0,"function f(p: T) {}") -#20005=@"loc,{#10000},1,1,1,19" -locations_default(#20005,#10000,1,1,1,19) +lines(#20004,#20001,"function f(p: T[]) {}"," +") +#20005=@"loc,{#10000},2,1,2,21" +locations_default(#20005,#10000,2,1,2,21) hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) #20006=* -exprs(#20006,78,#20004,-1,"f") -#20007=@"loc,{#10000},1,10,1,10" -locations_default(#20007,#10000,1,10,1,10) +lines(#20006,#20001,"function f(p: T[][]) {}"," +") +#20007=@"loc,{#10000},3,1,3,23" +locations_default(#20007,#10000,3,1,3,23) 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;{p};{#20008}" -variables(#20009,"p",#20008) -#20010=* -exprs(#20010,78,#20004,0,"p: T") -#20011=@"loc,{#10000},1,12,1,15" -locations_default(#20011,#10000,1,12,1,15) -hasLocation(#20010,#20011) -exprContainers(#20010,#20004) -literals("p","p",#20010) -decl(#20010,#20009) -#20012=@"var;{arguments};{#20008}" -variables(#20012,"arguments",#20008) -isArgumentsObject(#20012) -#20013=* -stmts(#20013,1,#20004,-2,"{}") -#20014=@"loc,{#10000},1,18,1,19" -locations_default(#20014,#10000,1,18,1,19) -hasLocation(#20013,#20014) -stmtContainers(#20013,#20004) -numlines(#20004,1,1,0) -#20015=* -stmts(#20015,17,#20001,1,"functio ... T[]) {}") -#20016=@"loc,{#10000},2,1,2,21" -locations_default(#20016,#10000,2,1,2,21) -hasLocation(#20015,#20016) -stmtContainers(#20015,#20001) -#20017=* -exprs(#20017,78,#20015,-1,"f") -#20018=@"loc,{#10000},2,10,2,10" -locations_default(#20018,#10000,2,10,2,10) -hasLocation(#20017,#20018) -exprContainers(#20017,#20015) -literals("f","f",#20017) -decl(#20017,#20003) -#20019=* -scopes(#20019,1) -scopenodes(#20015,#20019) -scopenesting(#20019,#20000) -#20020=@"var;{p};{#20019}" -variables(#20020,"p",#20019) -#20021=* -exprs(#20021,78,#20015,0,"p: T[]") -#20022=@"loc,{#10000},2,12,2,17" -locations_default(#20022,#10000,2,12,2,17) -hasLocation(#20021,#20022) -exprContainers(#20021,#20015) -literals("p","p",#20021) -decl(#20021,#20020) -#20023=@"var;{arguments};{#20019}" -variables(#20023,"arguments",#20019) -isArgumentsObject(#20023) -#20024=* -stmts(#20024,1,#20015,-2,"{}") -#20025=@"loc,{#10000},2,20,2,21" -locations_default(#20025,#10000,2,20,2,21) -hasLocation(#20024,#20025) -stmtContainers(#20024,#20015) -numlines(#20015,1,1,0) -#20026=* -stmts(#20026,17,#20001,2,"functio ... ][]) {}") -#20027=@"loc,{#10000},3,1,3,23" -locations_default(#20027,#10000,3,1,3,23) -hasLocation(#20026,#20027) -stmtContainers(#20026,#20001) -#20028=* -exprs(#20028,78,#20026,-1,"f") -#20029=@"loc,{#10000},3,10,3,10" -locations_default(#20029,#10000,3,10,3,10) -hasLocation(#20028,#20029) -exprContainers(#20028,#20026) -literals("f","f",#20028) -decl(#20028,#20003) -#20030=* -scopes(#20030,1) -scopenodes(#20026,#20030) -scopenesting(#20030,#20000) -#20031=@"var;{p};{#20030}" -variables(#20031,"p",#20030) -#20032=* -exprs(#20032,78,#20026,0,"p: T[][]") -#20033=@"loc,{#10000},3,12,3,19" -locations_default(#20033,#10000,3,12,3,19) -hasLocation(#20032,#20033) -exprContainers(#20032,#20026) -literals("p","p",#20032) -decl(#20032,#20031) -#20034=@"var;{arguments};{#20030}" -variables(#20034,"arguments",#20030) -isArgumentsObject(#20034) -#20035=* -stmts(#20035,1,#20026,-2,"{}") -#20036=@"loc,{#10000},3,22,3,23" -locations_default(#20036,#10000,3,22,3,23) -hasLocation(#20035,#20036) -stmtContainers(#20035,#20026) -numlines(#20026,1,1,0) -#20037=* -stmts(#20037,17,#20001,3,"functio ... ][]) {}") -#20038=@"loc,{#10000},4,1,4,25" -locations_default(#20038,#10000,4,1,4,25) -hasLocation(#20037,#20038) -stmtContainers(#20037,#20001) -#20039=* -exprs(#20039,78,#20037,-1,"f") -#20040=@"loc,{#10000},4,10,4,10" -locations_default(#20040,#10000,4,10,4,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;{p};{#20041}" -variables(#20042,"p",#20041) -#20043=* -exprs(#20043,78,#20037,0,"p: T[][][]") -#20044=@"loc,{#10000},4,12,4,21" -locations_default(#20044,#10000,4,12,4,21) -hasLocation(#20043,#20044) -exprContainers(#20043,#20037) -literals("p","p",#20043) -decl(#20043,#20042) -#20045=@"var;{arguments};{#20041}" -variables(#20045,"arguments",#20041) -isArgumentsObject(#20045) -#20046=* -stmts(#20046,1,#20037,-2,"{}") -#20047=@"loc,{#10000},4,24,4,25" -locations_default(#20047,#10000,4,24,4,25) -hasLocation(#20046,#20047) -stmtContainers(#20046,#20037) -numlines(#20037,1,1,0) -#20048=* -lines(#20048,#20001,"function f(p: T) {}"," +lines(#20008,#20001,"function f(p: T[][][]) {}"," ") -hasLocation(#20048,#20005) -#20049=* -lines(#20049,#20001,"function f(p: T[]) {}"," -") -hasLocation(#20049,#20016) -#20050=* -lines(#20050,#20001,"function f(p: T[][]) {}"," -") -hasLocation(#20050,#20027) -#20051=* -lines(#20051,#20001,"function f(p: T[][][]) {}"," -") -hasLocation(#20051,#20038) +#20009=@"loc,{#10000},4,1,4,25" +locations_default(#20009,#10000,4,1,4,25) +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,"f") +#20013=@"loc,{#10000},1,10,1,10" +locations_default(#20013,#10000,1,10,1,10) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,2,"(") +#20015=@"loc,{#10000},1,11,1,11" +locations_default(#20015,#10000,1,11,1,11) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,6,#20001,3,"p") +#20017=@"loc,{#10000},1,12,1,12" +locations_default(#20017,#10000,1,12,1,12) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,4,":") +#20019=@"loc,{#10000},1,13,1,13" +locations_default(#20019,#10000,1,13,1,13) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,6,#20001,5,"T") +#20021=@"loc,{#10000},1,15,1,15" +locations_default(#20021,#10000,1,15,1,15) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,6,")") +#20023=@"loc,{#10000},1,16,1,16" +locations_default(#20023,#10000,1,16,1,16) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,7,"{") +#20025=@"loc,{#10000},1,18,1,18" +locations_default(#20025,#10000,1,18,1,18) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,8,"}") +#20027=@"loc,{#10000},1,19,1,19" +locations_default(#20027,#10000,1,19,1,19) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,7,#20001,9,"function") +#20029=@"loc,{#10000},2,1,2,8" +locations_default(#20029,#10000,2,1,2,8) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,6,#20001,10,"f") +#20031=@"loc,{#10000},2,10,2,10" +locations_default(#20031,#10000,2,10,2,10) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,11,"(") +#20033=@"loc,{#10000},2,11,2,11" +locations_default(#20033,#10000,2,11,2,11) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,6,#20001,12,"p") +#20035=@"loc,{#10000},2,12,2,12" +locations_default(#20035,#10000,2,12,2,12) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,13,":") +#20037=@"loc,{#10000},2,13,2,13" +locations_default(#20037,#10000,2,13,2,13) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,6,#20001,14,"T") +#20039=@"loc,{#10000},2,15,2,15" +locations_default(#20039,#10000,2,15,2,15) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,15,"[") +#20041=@"loc,{#10000},2,16,2,16" +locations_default(#20041,#10000,2,16,2,16) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,16,"]") +#20043=@"loc,{#10000},2,17,2,17" +locations_default(#20043,#10000,2,17,2,17) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,17,")") +#20045=@"loc,{#10000},2,18,2,18" +locations_default(#20045,#10000,2,18,2,18) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,18,"{") +#20047=@"loc,{#10000},2,20,2,20" +locations_default(#20047,#10000,2,20,2,20) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,8,#20001,19,"}") +#20049=@"loc,{#10000},2,21,2,21" +locations_default(#20049,#10000,2,21,2,21) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,7,#20001,20,"function") +#20051=@"loc,{#10000},3,1,3,8" +locations_default(#20051,#10000,3,1,3,8) +hasLocation(#20050,#20051) #20052=* -tokeninfo(#20052,7,#20001,0,"function") -#20053=@"loc,{#10000},1,1,1,8" -locations_default(#20053,#10000,1,1,1,8) +tokeninfo(#20052,6,#20001,21,"f") +#20053=@"loc,{#10000},3,10,3,10" +locations_default(#20053,#10000,3,10,3,10) hasLocation(#20052,#20053) #20054=* -tokeninfo(#20054,6,#20001,1,"f") -hasLocation(#20054,#20007) -#20055=* -tokeninfo(#20055,8,#20001,2,"(") -#20056=@"loc,{#10000},1,11,1,11" -locations_default(#20056,#10000,1,11,1,11) -hasLocation(#20055,#20056) -#20057=* -tokeninfo(#20057,6,#20001,3,"p") -#20058=@"loc,{#10000},1,12,1,12" -locations_default(#20058,#10000,1,12,1,12) -hasLocation(#20057,#20058) -#20059=* -tokeninfo(#20059,8,#20001,4,":") -#20060=@"loc,{#10000},1,13,1,13" -locations_default(#20060,#10000,1,13,1,13) -hasLocation(#20059,#20060) -#20061=* -tokeninfo(#20061,6,#20001,5,"T") -#20062=@"loc,{#10000},1,15,1,15" -locations_default(#20062,#10000,1,15,1,15) -hasLocation(#20061,#20062) -#20063=* -tokeninfo(#20063,8,#20001,6,")") -#20064=@"loc,{#10000},1,16,1,16" -locations_default(#20064,#10000,1,16,1,16) -hasLocation(#20063,#20064) -#20065=* -tokeninfo(#20065,8,#20001,7,"{") -#20066=@"loc,{#10000},1,18,1,18" -locations_default(#20066,#10000,1,18,1,18) -hasLocation(#20065,#20066) -#20067=* -tokeninfo(#20067,8,#20001,8,"}") -#20068=@"loc,{#10000},1,19,1,19" -locations_default(#20068,#10000,1,19,1,19) -hasLocation(#20067,#20068) -#20069=* -tokeninfo(#20069,7,#20001,9,"function") -#20070=@"loc,{#10000},2,1,2,8" -locations_default(#20070,#10000,2,1,2,8) -hasLocation(#20069,#20070) -#20071=* -tokeninfo(#20071,6,#20001,10,"f") -hasLocation(#20071,#20018) +tokeninfo(#20054,8,#20001,22,"(") +#20055=@"loc,{#10000},3,11,3,11" +locations_default(#20055,#10000,3,11,3,11) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,6,#20001,23,"p") +#20057=@"loc,{#10000},3,12,3,12" +locations_default(#20057,#10000,3,12,3,12) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,8,#20001,24,":") +#20059=@"loc,{#10000},3,13,3,13" +locations_default(#20059,#10000,3,13,3,13) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,6,#20001,25,"T") +#20061=@"loc,{#10000},3,15,3,15" +locations_default(#20061,#10000,3,15,3,15) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,8,#20001,26,"[") +#20063=@"loc,{#10000},3,16,3,16" +locations_default(#20063,#10000,3,16,3,16) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,8,#20001,27,"]") +#20065=@"loc,{#10000},3,17,3,17" +locations_default(#20065,#10000,3,17,3,17) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,8,#20001,28,"[") +#20067=@"loc,{#10000},3,18,3,18" +locations_default(#20067,#10000,3,18,3,18) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,8,#20001,29,"]") +#20069=@"loc,{#10000},3,19,3,19" +locations_default(#20069,#10000,3,19,3,19) +hasLocation(#20068,#20069) +#20070=* +tokeninfo(#20070,8,#20001,30,")") +#20071=@"loc,{#10000},3,20,3,20" +locations_default(#20071,#10000,3,20,3,20) +hasLocation(#20070,#20071) #20072=* -tokeninfo(#20072,8,#20001,11,"(") -#20073=@"loc,{#10000},2,11,2,11" -locations_default(#20073,#10000,2,11,2,11) +tokeninfo(#20072,8,#20001,31,"{") +#20073=@"loc,{#10000},3,22,3,22" +locations_default(#20073,#10000,3,22,3,22) hasLocation(#20072,#20073) #20074=* -tokeninfo(#20074,6,#20001,12,"p") -#20075=@"loc,{#10000},2,12,2,12" -locations_default(#20075,#10000,2,12,2,12) +tokeninfo(#20074,8,#20001,32,"}") +#20075=@"loc,{#10000},3,23,3,23" +locations_default(#20075,#10000,3,23,3,23) hasLocation(#20074,#20075) #20076=* -tokeninfo(#20076,8,#20001,13,":") -#20077=@"loc,{#10000},2,13,2,13" -locations_default(#20077,#10000,2,13,2,13) +tokeninfo(#20076,7,#20001,33,"function") +#20077=@"loc,{#10000},4,1,4,8" +locations_default(#20077,#10000,4,1,4,8) hasLocation(#20076,#20077) #20078=* -tokeninfo(#20078,6,#20001,14,"T") -#20079=@"loc,{#10000},2,15,2,15" -locations_default(#20079,#10000,2,15,2,15) +tokeninfo(#20078,6,#20001,34,"f") +#20079=@"loc,{#10000},4,10,4,10" +locations_default(#20079,#10000,4,10,4,10) hasLocation(#20078,#20079) #20080=* -tokeninfo(#20080,8,#20001,15,"[") -#20081=@"loc,{#10000},2,16,2,16" -locations_default(#20081,#10000,2,16,2,16) +tokeninfo(#20080,8,#20001,35,"(") +#20081=@"loc,{#10000},4,11,4,11" +locations_default(#20081,#10000,4,11,4,11) hasLocation(#20080,#20081) #20082=* -tokeninfo(#20082,8,#20001,16,"]") -#20083=@"loc,{#10000},2,17,2,17" -locations_default(#20083,#10000,2,17,2,17) +tokeninfo(#20082,6,#20001,36,"p") +#20083=@"loc,{#10000},4,12,4,12" +locations_default(#20083,#10000,4,12,4,12) hasLocation(#20082,#20083) #20084=* -tokeninfo(#20084,8,#20001,17,")") -#20085=@"loc,{#10000},2,18,2,18" -locations_default(#20085,#10000,2,18,2,18) +tokeninfo(#20084,8,#20001,37,":") +#20085=@"loc,{#10000},4,13,4,13" +locations_default(#20085,#10000,4,13,4,13) hasLocation(#20084,#20085) #20086=* -tokeninfo(#20086,8,#20001,18,"{") -#20087=@"loc,{#10000},2,20,2,20" -locations_default(#20087,#10000,2,20,2,20) +tokeninfo(#20086,6,#20001,38,"T") +#20087=@"loc,{#10000},4,15,4,15" +locations_default(#20087,#10000,4,15,4,15) hasLocation(#20086,#20087) #20088=* -tokeninfo(#20088,8,#20001,19,"}") -#20089=@"loc,{#10000},2,21,2,21" -locations_default(#20089,#10000,2,21,2,21) +tokeninfo(#20088,8,#20001,39,"[") +#20089=@"loc,{#10000},4,16,4,16" +locations_default(#20089,#10000,4,16,4,16) hasLocation(#20088,#20089) #20090=* -tokeninfo(#20090,7,#20001,20,"function") -#20091=@"loc,{#10000},3,1,3,8" -locations_default(#20091,#10000,3,1,3,8) +tokeninfo(#20090,8,#20001,40,"]") +#20091=@"loc,{#10000},4,17,4,17" +locations_default(#20091,#10000,4,17,4,17) hasLocation(#20090,#20091) #20092=* -tokeninfo(#20092,6,#20001,21,"f") -hasLocation(#20092,#20029) -#20093=* -tokeninfo(#20093,8,#20001,22,"(") -#20094=@"loc,{#10000},3,11,3,11" -locations_default(#20094,#10000,3,11,3,11) -hasLocation(#20093,#20094) -#20095=* -tokeninfo(#20095,6,#20001,23,"p") -#20096=@"loc,{#10000},3,12,3,12" -locations_default(#20096,#10000,3,12,3,12) -hasLocation(#20095,#20096) -#20097=* -tokeninfo(#20097,8,#20001,24,":") -#20098=@"loc,{#10000},3,13,3,13" -locations_default(#20098,#10000,3,13,3,13) -hasLocation(#20097,#20098) -#20099=* -tokeninfo(#20099,6,#20001,25,"T") -#20100=@"loc,{#10000},3,15,3,15" -locations_default(#20100,#10000,3,15,3,15) -hasLocation(#20099,#20100) -#20101=* -tokeninfo(#20101,8,#20001,26,"[") -#20102=@"loc,{#10000},3,16,3,16" -locations_default(#20102,#10000,3,16,3,16) -hasLocation(#20101,#20102) -#20103=* -tokeninfo(#20103,8,#20001,27,"]") -#20104=@"loc,{#10000},3,17,3,17" -locations_default(#20104,#10000,3,17,3,17) -hasLocation(#20103,#20104) -#20105=* -tokeninfo(#20105,8,#20001,28,"[") -#20106=@"loc,{#10000},3,18,3,18" -locations_default(#20106,#10000,3,18,3,18) -hasLocation(#20105,#20106) -#20107=* -tokeninfo(#20107,8,#20001,29,"]") -#20108=@"loc,{#10000},3,19,3,19" -locations_default(#20108,#10000,3,19,3,19) -hasLocation(#20107,#20108) -#20109=* -tokeninfo(#20109,8,#20001,30,")") -#20110=@"loc,{#10000},3,20,3,20" -locations_default(#20110,#10000,3,20,3,20) -hasLocation(#20109,#20110) +tokeninfo(#20092,8,#20001,41,"[") +#20093=@"loc,{#10000},4,18,4,18" +locations_default(#20093,#10000,4,18,4,18) +hasLocation(#20092,#20093) +#20094=* +tokeninfo(#20094,8,#20001,42,"]") +#20095=@"loc,{#10000},4,19,4,19" +locations_default(#20095,#10000,4,19,4,19) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,8,#20001,43,"[") +#20097=@"loc,{#10000},4,20,4,20" +locations_default(#20097,#10000,4,20,4,20) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,8,#20001,44,"]") +#20099=@"loc,{#10000},4,21,4,21" +locations_default(#20099,#10000,4,21,4,21) +hasLocation(#20098,#20099) +#20100=* +tokeninfo(#20100,8,#20001,45,")") +#20101=@"loc,{#10000},4,22,4,22" +locations_default(#20101,#10000,4,22,4,22) +hasLocation(#20100,#20101) +#20102=* +tokeninfo(#20102,8,#20001,46,"{") +#20103=@"loc,{#10000},4,24,4,24" +locations_default(#20103,#10000,4,24,4,24) +hasLocation(#20102,#20103) +#20104=* +tokeninfo(#20104,8,#20001,47,"}") +#20105=@"loc,{#10000},4,25,4,25" +locations_default(#20105,#10000,4,25,4,25) +hasLocation(#20104,#20105) +#20106=* +tokeninfo(#20106,0,#20001,48,"") +#20107=@"loc,{#10000},5,1,5,0" +locations_default(#20107,#10000,5,1,5,0) +hasLocation(#20106,#20107) +toplevels(#20001,0) +#20108=@"loc,{#10000},1,1,5,0" +locations_default(#20108,#10000,1,1,5,0) +hasLocation(#20001,#20108) +#20109=@"var;{f};{#20000}" +variables(#20109,"f",#20000) +#20110=* +stmts(#20110,17,#20001,0,"function f(p: T) {}") +hasLocation(#20110,#20003) +stmtContainers(#20110,#20001) #20111=* -tokeninfo(#20111,8,#20001,31,"{") -#20112=@"loc,{#10000},3,22,3,22" -locations_default(#20112,#10000,3,22,3,22) -hasLocation(#20111,#20112) -#20113=* -tokeninfo(#20113,8,#20001,32,"}") -#20114=@"loc,{#10000},3,23,3,23" -locations_default(#20114,#10000,3,23,3,23) -hasLocation(#20113,#20114) -#20115=* -tokeninfo(#20115,7,#20001,33,"function") -#20116=@"loc,{#10000},4,1,4,8" -locations_default(#20116,#10000,4,1,4,8) -hasLocation(#20115,#20116) +exprs(#20111,78,#20110,-1,"f") +hasLocation(#20111,#20013) +exprContainers(#20111,#20110) +literals("f","f",#20111) +decl(#20111,#20109) +#20112=* +scopes(#20112,1) +scopenodes(#20110,#20112) +scopenesting(#20112,#20000) +#20113=@"var;{p};{#20112}" +variables(#20113,"p",#20112) +#20114=* +exprs(#20114,78,#20110,0,"p: T") +#20115=@"loc,{#10000},1,12,1,15" +locations_default(#20115,#10000,1,12,1,15) +hasLocation(#20114,#20115) +exprContainers(#20114,#20110) +literals("p","p",#20114) +decl(#20114,#20113) +#20116=@"var;{arguments};{#20112}" +variables(#20116,"arguments",#20112) +isArgumentsObject(#20116) #20117=* -tokeninfo(#20117,6,#20001,34,"f") -hasLocation(#20117,#20040) -#20118=* -tokeninfo(#20118,8,#20001,35,"(") -#20119=@"loc,{#10000},4,11,4,11" -locations_default(#20119,#10000,4,11,4,11) -hasLocation(#20118,#20119) +stmts(#20117,1,#20110,-2,"{}") +#20118=@"loc,{#10000},1,18,1,19" +locations_default(#20118,#10000,1,18,1,19) +hasLocation(#20117,#20118) +stmtContainers(#20117,#20110) +#20119=* +stmts(#20119,17,#20001,1,"functio ... T[]) {}") +hasLocation(#20119,#20005) +stmtContainers(#20119,#20001) #20120=* -tokeninfo(#20120,6,#20001,36,"p") -#20121=@"loc,{#10000},4,12,4,12" -locations_default(#20121,#10000,4,12,4,12) -hasLocation(#20120,#20121) -#20122=* -tokeninfo(#20122,8,#20001,37,":") -#20123=@"loc,{#10000},4,13,4,13" -locations_default(#20123,#10000,4,13,4,13) -hasLocation(#20122,#20123) -#20124=* -tokeninfo(#20124,6,#20001,38,"T") -#20125=@"loc,{#10000},4,15,4,15" -locations_default(#20125,#10000,4,15,4,15) -hasLocation(#20124,#20125) +exprs(#20120,78,#20119,-1,"f") +hasLocation(#20120,#20031) +exprContainers(#20120,#20119) +literals("f","f",#20120) +decl(#20120,#20109) +#20121=* +scopes(#20121,1) +scopenodes(#20119,#20121) +scopenesting(#20121,#20000) +#20122=@"var;{p};{#20121}" +variables(#20122,"p",#20121) +#20123=* +exprs(#20123,78,#20119,0,"p: T[]") +#20124=@"loc,{#10000},2,12,2,17" +locations_default(#20124,#10000,2,12,2,17) +hasLocation(#20123,#20124) +exprContainers(#20123,#20119) +literals("p","p",#20123) +decl(#20123,#20122) +#20125=@"var;{arguments};{#20121}" +variables(#20125,"arguments",#20121) +isArgumentsObject(#20125) #20126=* -tokeninfo(#20126,8,#20001,39,"[") -#20127=@"loc,{#10000},4,16,4,16" -locations_default(#20127,#10000,4,16,4,16) +stmts(#20126,1,#20119,-2,"{}") +#20127=@"loc,{#10000},2,20,2,21" +locations_default(#20127,#10000,2,20,2,21) hasLocation(#20126,#20127) +stmtContainers(#20126,#20119) #20128=* -tokeninfo(#20128,8,#20001,40,"]") -#20129=@"loc,{#10000},4,17,4,17" -locations_default(#20129,#10000,4,17,4,17) -hasLocation(#20128,#20129) +stmts(#20128,17,#20001,2,"functio ... ][]) {}") +hasLocation(#20128,#20007) +stmtContainers(#20128,#20001) +#20129=* +exprs(#20129,78,#20128,-1,"f") +hasLocation(#20129,#20053) +exprContainers(#20129,#20128) +literals("f","f",#20129) +decl(#20129,#20109) #20130=* -tokeninfo(#20130,8,#20001,41,"[") -#20131=@"loc,{#10000},4,18,4,18" -locations_default(#20131,#10000,4,18,4,18) -hasLocation(#20130,#20131) +scopes(#20130,1) +scopenodes(#20128,#20130) +scopenesting(#20130,#20000) +#20131=@"var;{p};{#20130}" +variables(#20131,"p",#20130) #20132=* -tokeninfo(#20132,8,#20001,42,"]") -#20133=@"loc,{#10000},4,19,4,19" -locations_default(#20133,#10000,4,19,4,19) +exprs(#20132,78,#20128,0,"p: T[][]") +#20133=@"loc,{#10000},3,12,3,19" +locations_default(#20133,#10000,3,12,3,19) hasLocation(#20132,#20133) -#20134=* -tokeninfo(#20134,8,#20001,43,"[") -#20135=@"loc,{#10000},4,20,4,20" -locations_default(#20135,#10000,4,20,4,20) -hasLocation(#20134,#20135) -#20136=* -tokeninfo(#20136,8,#20001,44,"]") -#20137=@"loc,{#10000},4,21,4,21" -locations_default(#20137,#10000,4,21,4,21) -hasLocation(#20136,#20137) +exprContainers(#20132,#20128) +literals("p","p",#20132) +decl(#20132,#20131) +#20134=@"var;{arguments};{#20130}" +variables(#20134,"arguments",#20130) +isArgumentsObject(#20134) +#20135=* +stmts(#20135,1,#20128,-2,"{}") +#20136=@"loc,{#10000},3,22,3,23" +locations_default(#20136,#10000,3,22,3,23) +hasLocation(#20135,#20136) +stmtContainers(#20135,#20128) +#20137=* +stmts(#20137,17,#20001,3,"functio ... ][]) {}") +hasLocation(#20137,#20009) +stmtContainers(#20137,#20001) #20138=* -tokeninfo(#20138,8,#20001,45,")") -#20139=@"loc,{#10000},4,22,4,22" -locations_default(#20139,#10000,4,22,4,22) -hasLocation(#20138,#20139) -#20140=* -tokeninfo(#20140,8,#20001,46,"{") -#20141=@"loc,{#10000},4,24,4,24" -locations_default(#20141,#10000,4,24,4,24) -hasLocation(#20140,#20141) -#20142=* -tokeninfo(#20142,8,#20001,47,"}") -#20143=@"loc,{#10000},4,25,4,25" -locations_default(#20143,#10000,4,25,4,25) -hasLocation(#20142,#20143) +exprs(#20138,78,#20137,-1,"f") +hasLocation(#20138,#20079) +exprContainers(#20138,#20137) +literals("f","f",#20138) +decl(#20138,#20109) +#20139=* +scopes(#20139,1) +scopenodes(#20137,#20139) +scopenesting(#20139,#20000) +#20140=@"var;{p};{#20139}" +variables(#20140,"p",#20139) +#20141=* +exprs(#20141,78,#20137,0,"p: T[][][]") +#20142=@"loc,{#10000},4,12,4,21" +locations_default(#20142,#10000,4,12,4,21) +hasLocation(#20141,#20142) +exprContainers(#20141,#20137) +literals("p","p",#20141) +decl(#20141,#20140) +#20143=@"var;{arguments};{#20139}" +variables(#20143,"arguments",#20139) +isArgumentsObject(#20143) #20144=* -tokeninfo(#20144,0,#20001,48,"") -#20145=@"loc,{#10000},5,1,5,0" -locations_default(#20145,#10000,5,1,5,0) +stmts(#20144,1,#20137,-2,"{}") +#20145=@"loc,{#10000},4,24,4,25" +locations_default(#20145,#10000,4,24,4,25) hasLocation(#20144,#20145) +stmtContainers(#20144,#20137) #20146=* entry_cfg_node(#20146,#20001) #20147=@"loc,{#10000},1,1,1,0" @@ -428,65 +424,65 @@ locations_default(#20147,#10000,1,1,1,0) hasLocation(#20146,#20147) #20148=* exit_cfg_node(#20148,#20001) -hasLocation(#20148,#20145) -successor(#20037,#20148) +hasLocation(#20148,#20107) +successor(#20137,#20148) #20149=* -entry_cfg_node(#20149,#20037) +entry_cfg_node(#20149,#20137) #20150=@"loc,{#10000},4,1,4,0" locations_default(#20150,#10000,4,1,4,0) hasLocation(#20149,#20150) #20151=* -exit_cfg_node(#20151,#20037) +exit_cfg_node(#20151,#20137) #20152=@"loc,{#10000},4,26,4,25" locations_default(#20152,#10000,4,26,4,25) hasLocation(#20151,#20152) -successor(#20046,#20151) -successor(#20043,#20046) -successor(#20149,#20043) -successor(#20026,#20037) +successor(#20144,#20151) +successor(#20141,#20144) +successor(#20149,#20141) +successor(#20128,#20137) #20153=* -entry_cfg_node(#20153,#20026) +entry_cfg_node(#20153,#20128) #20154=@"loc,{#10000},3,1,3,0" locations_default(#20154,#10000,3,1,3,0) hasLocation(#20153,#20154) #20155=* -exit_cfg_node(#20155,#20026) +exit_cfg_node(#20155,#20128) #20156=@"loc,{#10000},3,24,3,23" locations_default(#20156,#10000,3,24,3,23) hasLocation(#20155,#20156) -successor(#20035,#20155) -successor(#20032,#20035) -successor(#20153,#20032) -successor(#20015,#20026) +successor(#20135,#20155) +successor(#20132,#20135) +successor(#20153,#20132) +successor(#20119,#20128) #20157=* -entry_cfg_node(#20157,#20015) +entry_cfg_node(#20157,#20119) #20158=@"loc,{#10000},2,1,2,0" locations_default(#20158,#10000,2,1,2,0) hasLocation(#20157,#20158) #20159=* -exit_cfg_node(#20159,#20015) +exit_cfg_node(#20159,#20119) #20160=@"loc,{#10000},2,22,2,21" locations_default(#20160,#10000,2,22,2,21) hasLocation(#20159,#20160) -successor(#20024,#20159) -successor(#20021,#20024) -successor(#20157,#20021) -successor(#20004,#20015) +successor(#20126,#20159) +successor(#20123,#20126) +successor(#20157,#20123) +successor(#20110,#20119) #20161=* -entry_cfg_node(#20161,#20004) +entry_cfg_node(#20161,#20110) hasLocation(#20161,#20147) #20162=* -exit_cfg_node(#20162,#20004) +exit_cfg_node(#20162,#20110) #20163=@"loc,{#10000},1,20,1,19" locations_default(#20163,#10000,1,20,1,19) hasLocation(#20162,#20163) -successor(#20013,#20162) -successor(#20010,#20013) -successor(#20161,#20010) -successor(#20039,#20004) -successor(#20028,#20039) -successor(#20017,#20028) -successor(#20006,#20017) -successor(#20146,#20006) +successor(#20117,#20162) +successor(#20114,#20117) +successor(#20161,#20114) +successor(#20138,#20110) +successor(#20129,#20138) +successor(#20120,#20129) +successor(#20111,#20120) +successor(#20146,#20111) numlines(#10000,4,4,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/async.js.trap b/javascript/extractor/tests/flow/output/trap/async.js.trap index fc5097763cd..07e6c468fbd 100644 --- a/javascript/extractor/tests/flow/output/trap/async.js.trap +++ b/javascript/extractor/tests/flow/output/trap/async.js.trap @@ -9,160 +9,159 @@ 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) -#20004=* -stmts(#20004,23,#20001,0,"let f = ... foo();") -#20005=@"loc,{#10000},1,1,1,49" -locations_default(#20005,#10000,1,1,1,49) -hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) -#20006=* -exprs(#20006,64,#20004,0,"f = asy ... t foo()") -#20007=@"loc,{#10000},1,5,1,48" -locations_default(#20007,#10000,1,5,1,48) -hasLocation(#20006,#20007) -enclosingStmt(#20006,#20004) -exprContainers(#20006,#20001) -#20008=* -exprs(#20008,78,#20006,0,"f") -#20009=@"loc,{#10000},1,5,1,5" -locations_default(#20009,#10000,1,5,1,5) -hasLocation(#20008,#20009) -enclosingStmt(#20008,#20004) -exprContainers(#20008,#20001) -literals("f","f",#20008) -decl(#20008,#20003) -#20010=* -exprs(#20010,65,#20006,1,"async() ... t foo()") -#20011=@"loc,{#10000},1,9,1,48" -locations_default(#20011,#10000,1,9,1,48) -hasLocation(#20010,#20011) -enclosingStmt(#20010,#20004) -exprContainers(#20010,#20001) -#20012=* -scopes(#20012,1) -scopenodes(#20010,#20012) -scopenesting(#20012,#20000) -isAsync(#20010) -#20013=* -exprs(#20013,92,#20010,-2,"await foo()") -#20014=@"loc,{#10000},1,38,1,48" -locations_default(#20014,#10000,1,38,1,48) -hasLocation(#20013,#20014) -exprContainers(#20013,#20010) -#20015=* -exprs(#20015,13,#20013,0,"foo()") -#20016=@"loc,{#10000},1,44,1,48" -locations_default(#20016,#10000,1,44,1,48) -hasLocation(#20015,#20016) -exprContainers(#20015,#20010) -#20017=* -exprs(#20017,79,#20015,-1,"foo") -#20018=@"loc,{#10000},1,44,1,46" -locations_default(#20018,#10000,1,44,1,46) -hasLocation(#20017,#20018) -exprContainers(#20017,#20010) -literals("foo","foo",#20017) -#20019=@"var;{foo};{#20000}" -variables(#20019,"foo",#20000) -bind(#20017,#20019) -numlines(#20010,1,1,0) -#20020=* -lines(#20020,#20001,"let f = async() : Promise => await foo();"," +#20002=* +lines(#20002,#20001,"let f = async() : Promise => await foo();"," ") -hasLocation(#20020,#20005) +#20003=@"loc,{#10000},1,1,1,49" +locations_default(#20003,#10000,1,1,1,49) +hasLocation(#20002,#20003) numlines(#20001,1,1,0) -#20021=* -tokeninfo(#20021,7,#20001,0,"let") -#20022=@"loc,{#10000},1,1,1,3" -locations_default(#20022,#10000,1,1,1,3) -hasLocation(#20021,#20022) -#20023=* -tokeninfo(#20023,6,#20001,1,"f") -hasLocation(#20023,#20009) +#20004=* +tokeninfo(#20004,7,#20001,0,"let") +#20005=@"loc,{#10000},1,1,1,3" +locations_default(#20005,#10000,1,1,1,3) +hasLocation(#20004,#20005) +#20006=* +tokeninfo(#20006,6,#20001,1,"f") +#20007=@"loc,{#10000},1,5,1,5" +locations_default(#20007,#10000,1,5,1,5) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,8,#20001,2,"=") +#20009=@"loc,{#10000},1,7,1,7" +locations_default(#20009,#10000,1,7,1,7) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,6,#20001,3,"async") +#20011=@"loc,{#10000},1,9,1,13" +locations_default(#20011,#10000,1,9,1,13) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,8,#20001,4,"(") +#20013=@"loc,{#10000},1,14,1,14" +locations_default(#20013,#10000,1,14,1,14) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,5,")") +#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,17,1,17" +locations_default(#20017,#10000,1,17,1,17) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,6,#20001,7,"Promise") +#20019=@"loc,{#10000},1,19,1,25" +locations_default(#20019,#10000,1,19,1,25) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,8,"<") +#20021=@"loc,{#10000},1,26,1,26" +locations_default(#20021,#10000,1,26,1,26) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,6,#20001,9,"string") +#20023=@"loc,{#10000},1,27,1,32" +locations_default(#20023,#10000,1,27,1,32) +hasLocation(#20022,#20023) #20024=* -tokeninfo(#20024,8,#20001,2,"=") -#20025=@"loc,{#10000},1,7,1,7" -locations_default(#20025,#10000,1,7,1,7) +tokeninfo(#20024,8,#20001,10,">") +#20025=@"loc,{#10000},1,33,1,33" +locations_default(#20025,#10000,1,33,1,33) hasLocation(#20024,#20025) #20026=* -tokeninfo(#20026,6,#20001,3,"async") -#20027=@"loc,{#10000},1,9,1,13" -locations_default(#20027,#10000,1,9,1,13) +tokeninfo(#20026,8,#20001,11,"=>") +#20027=@"loc,{#10000},1,35,1,36" +locations_default(#20027,#10000,1,35,1,36) hasLocation(#20026,#20027) #20028=* -tokeninfo(#20028,8,#20001,4,"(") -#20029=@"loc,{#10000},1,14,1,14" -locations_default(#20029,#10000,1,14,1,14) +tokeninfo(#20028,6,#20001,12,"await") +#20029=@"loc,{#10000},1,38,1,42" +locations_default(#20029,#10000,1,38,1,42) hasLocation(#20028,#20029) #20030=* -tokeninfo(#20030,8,#20001,5,")") -#20031=@"loc,{#10000},1,15,1,15" -locations_default(#20031,#10000,1,15,1,15) +tokeninfo(#20030,6,#20001,13,"foo") +#20031=@"loc,{#10000},1,44,1,46" +locations_default(#20031,#10000,1,44,1,46) hasLocation(#20030,#20031) #20032=* -tokeninfo(#20032,8,#20001,6,":") -#20033=@"loc,{#10000},1,17,1,17" -locations_default(#20033,#10000,1,17,1,17) +tokeninfo(#20032,8,#20001,14,"(") +#20033=@"loc,{#10000},1,47,1,47" +locations_default(#20033,#10000,1,47,1,47) hasLocation(#20032,#20033) #20034=* -tokeninfo(#20034,6,#20001,7,"Promise") -#20035=@"loc,{#10000},1,19,1,25" -locations_default(#20035,#10000,1,19,1,25) +tokeninfo(#20034,8,#20001,15,")") +#20035=@"loc,{#10000},1,48,1,48" +locations_default(#20035,#10000,1,48,1,48) hasLocation(#20034,#20035) #20036=* -tokeninfo(#20036,8,#20001,8,"<") -#20037=@"loc,{#10000},1,26,1,26" -locations_default(#20037,#10000,1,26,1,26) +tokeninfo(#20036,8,#20001,16,";") +#20037=@"loc,{#10000},1,49,1,49" +locations_default(#20037,#10000,1,49,1,49) hasLocation(#20036,#20037) #20038=* -tokeninfo(#20038,6,#20001,9,"string") -#20039=@"loc,{#10000},1,27,1,32" -locations_default(#20039,#10000,1,27,1,32) +tokeninfo(#20038,0,#20001,17,"") +#20039=@"loc,{#10000},2,1,2,0" +locations_default(#20039,#10000,2,1,2,0) hasLocation(#20038,#20039) -#20040=* -tokeninfo(#20040,8,#20001,10,">") -#20041=@"loc,{#10000},1,33,1,33" -locations_default(#20041,#10000,1,33,1,33) -hasLocation(#20040,#20041) +toplevels(#20001,0) +#20040=@"loc,{#10000},1,1,2,0" +locations_default(#20040,#10000,1,1,2,0) +hasLocation(#20001,#20040) +#20041=@"var;{f};{#20000}" +variables(#20041,"f",#20000) #20042=* -tokeninfo(#20042,8,#20001,11,"=>") -#20043=@"loc,{#10000},1,35,1,36" -locations_default(#20043,#10000,1,35,1,36) -hasLocation(#20042,#20043) -#20044=* -tokeninfo(#20044,6,#20001,12,"await") -#20045=@"loc,{#10000},1,38,1,42" -locations_default(#20045,#10000,1,38,1,42) -hasLocation(#20044,#20045) +stmts(#20042,23,#20001,0,"let f = ... foo();") +hasLocation(#20042,#20003) +stmtContainers(#20042,#20001) +#20043=* +exprs(#20043,64,#20042,0,"f = asy ... t foo()") +#20044=@"loc,{#10000},1,5,1,48" +locations_default(#20044,#10000,1,5,1,48) +hasLocation(#20043,#20044) +enclosingStmt(#20043,#20042) +exprContainers(#20043,#20001) +#20045=* +exprs(#20045,78,#20043,0,"f") +hasLocation(#20045,#20007) +enclosingStmt(#20045,#20042) +exprContainers(#20045,#20001) +literals("f","f",#20045) +decl(#20045,#20041) #20046=* -tokeninfo(#20046,6,#20001,13,"foo") -hasLocation(#20046,#20018) -#20047=* -tokeninfo(#20047,8,#20001,14,"(") -#20048=@"loc,{#10000},1,47,1,47" -locations_default(#20048,#10000,1,47,1,47) -hasLocation(#20047,#20048) +exprs(#20046,65,#20043,1,"async() ... t foo()") +#20047=@"loc,{#10000},1,9,1,48" +locations_default(#20047,#10000,1,9,1,48) +hasLocation(#20046,#20047) +enclosingStmt(#20046,#20042) +exprContainers(#20046,#20001) +#20048=* +scopes(#20048,1) +scopenodes(#20046,#20048) +scopenesting(#20048,#20000) +isAsync(#20046) #20049=* -tokeninfo(#20049,8,#20001,15,")") -#20050=@"loc,{#10000},1,48,1,48" -locations_default(#20050,#10000,1,48,1,48) +exprs(#20049,92,#20046,-2,"await foo()") +#20050=@"loc,{#10000},1,38,1,48" +locations_default(#20050,#10000,1,38,1,48) hasLocation(#20049,#20050) +exprContainers(#20049,#20046) #20051=* -tokeninfo(#20051,8,#20001,16,";") -#20052=@"loc,{#10000},1,49,1,49" -locations_default(#20052,#10000,1,49,1,49) +exprs(#20051,13,#20049,0,"foo()") +#20052=@"loc,{#10000},1,44,1,48" +locations_default(#20052,#10000,1,44,1,48) hasLocation(#20051,#20052) +exprContainers(#20051,#20046) #20053=* -tokeninfo(#20053,0,#20001,17,"") -#20054=@"loc,{#10000},2,1,2,0" -locations_default(#20054,#10000,2,1,2,0) -hasLocation(#20053,#20054) +exprs(#20053,79,#20051,-1,"foo") +hasLocation(#20053,#20031) +exprContainers(#20053,#20046) +literals("foo","foo",#20053) +#20054=@"var;{foo};{#20000}" +variables(#20054,"foo",#20000) +bind(#20053,#20054) #20055=* entry_cfg_node(#20055,#20001) #20056=@"loc,{#10000},1,1,1,0" @@ -170,25 +169,25 @@ locations_default(#20056,#10000,1,1,1,0) hasLocation(#20055,#20056) #20057=* exit_cfg_node(#20057,#20001) -hasLocation(#20057,#20054) -successor(#20004,#20008) -successor(#20010,#20006) +hasLocation(#20057,#20039) +successor(#20042,#20045) +successor(#20046,#20043) #20058=* -entry_cfg_node(#20058,#20010) +entry_cfg_node(#20058,#20046) #20059=@"loc,{#10000},1,9,1,8" locations_default(#20059,#10000,1,9,1,8) hasLocation(#20058,#20059) #20060=* -exit_cfg_node(#20060,#20010) +exit_cfg_node(#20060,#20046) #20061=@"loc,{#10000},1,49,1,48" locations_default(#20061,#10000,1,49,1,48) hasLocation(#20060,#20061) -successor(#20017,#20015) -successor(#20015,#20013) -successor(#20013,#20060) -successor(#20058,#20017) -successor(#20008,#20010) -successor(#20006,#20057) -successor(#20055,#20004) +successor(#20053,#20051) +successor(#20051,#20049) +successor(#20049,#20060) +successor(#20058,#20053) +successor(#20045,#20046) +successor(#20043,#20057) +successor(#20055,#20042) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/atAtIteratorProp.js.trap b/javascript/extractor/tests/flow/output/trap/atAtIteratorProp.js.trap index 2be5306c0a8..c735c3ae0eb 100644 --- a/javascript/extractor/tests/flow/output/trap/atAtIteratorProp.js.trap +++ b/javascript/extractor/tests/flow/output/trap/atAtIteratorProp.js.trap @@ -9,92 +9,92 @@ 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=* -lines(#20003,#20001,"declare class Foo {"," +#20002=* +lines(#20002,#20001,"declare class Foo {"," ") -#20004=@"loc,{#10000},1,1,1,19" -locations_default(#20004,#10000,1,1,1,19) -hasLocation(#20003,#20004) -#20005=* -lines(#20005,#20001," @@iterator(): int"," +#20003=@"loc,{#10000},1,1,1,19" +locations_default(#20003,#10000,1,1,1,19) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," @@iterator(): int"," ") -#20006=@"loc,{#10000},2,1,2,19" -locations_default(#20006,#10000,2,1,2,19) -hasLocation(#20005,#20006) +#20005=@"loc,{#10000},2,1,2,19" +locations_default(#20005,#10000,2,1,2,19) +hasLocation(#20004,#20005) indentation(#10000,2," ",2) -#20007=* -lines(#20007,#20001,"}","") -#20008=@"loc,{#10000},3,1,3,1" -locations_default(#20008,#10000,3,1,3,1) -hasLocation(#20007,#20008) +#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) -#20009=* -tokeninfo(#20009,6,#20001,0,"declare") -#20010=@"loc,{#10000},1,1,1,7" -locations_default(#20010,#10000,1,1,1,7) -hasLocation(#20009,#20010) -#20011=* -tokeninfo(#20011,7,#20001,1,"class") -#20012=@"loc,{#10000},1,9,1,13" -locations_default(#20012,#10000,1,9,1,13) -hasLocation(#20011,#20012) -#20013=* -tokeninfo(#20013,6,#20001,2,"Foo") -#20014=@"loc,{#10000},1,15,1,17" -locations_default(#20014,#10000,1,15,1,17) -hasLocation(#20013,#20014) -#20015=* -tokeninfo(#20015,8,#20001,3,"{") -#20016=@"loc,{#10000},1,19,1,19" -locations_default(#20016,#10000,1,19,1,19) -hasLocation(#20015,#20016) -#20017=* -tokeninfo(#20017,8,#20001,4,"@") -#20018=@"loc,{#10000},2,3,2,3" -locations_default(#20018,#10000,2,3,2,3) -hasLocation(#20017,#20018) -#20019=* -tokeninfo(#20019,8,#20001,5,"@") -#20020=@"loc,{#10000},2,4,2,4" -locations_default(#20020,#10000,2,4,2,4) -hasLocation(#20019,#20020) -#20021=* -tokeninfo(#20021,6,#20001,6,"iterator") -#20022=@"loc,{#10000},2,5,2,12" -locations_default(#20022,#10000,2,5,2,12) -hasLocation(#20021,#20022) -#20023=* -tokeninfo(#20023,8,#20001,7,"(") -#20024=@"loc,{#10000},2,13,2,13" -locations_default(#20024,#10000,2,13,2,13) -hasLocation(#20023,#20024) -#20025=* -tokeninfo(#20025,8,#20001,8,")") -#20026=@"loc,{#10000},2,14,2,14" -locations_default(#20026,#10000,2,14,2,14) -hasLocation(#20025,#20026) -#20027=* -tokeninfo(#20027,8,#20001,9,":") -#20028=@"loc,{#10000},2,15,2,15" -locations_default(#20028,#10000,2,15,2,15) -hasLocation(#20027,#20028) -#20029=* -tokeninfo(#20029,6,#20001,10,"int") -#20030=@"loc,{#10000},2,17,2,19" -locations_default(#20030,#10000,2,17,2,19) -hasLocation(#20029,#20030) +#20008=* +tokeninfo(#20008,6,#20001,0,"declare") +#20009=@"loc,{#10000},1,1,1,7" +locations_default(#20009,#10000,1,1,1,7) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,7,#20001,1,"class") +#20011=@"loc,{#10000},1,9,1,13" +locations_default(#20011,#10000,1,9,1,13) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,6,#20001,2,"Foo") +#20013=@"loc,{#10000},1,15,1,17" +locations_default(#20013,#10000,1,15,1,17) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,3,"{") +#20015=@"loc,{#10000},1,19,1,19" +locations_default(#20015,#10000,1,19,1,19) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,4,"@") +#20017=@"loc,{#10000},2,3,2,3" +locations_default(#20017,#10000,2,3,2,3) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,5,"@") +#20019=@"loc,{#10000},2,4,2,4" +locations_default(#20019,#10000,2,4,2,4) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,6,#20001,6,"iterator") +#20021=@"loc,{#10000},2,5,2,12" +locations_default(#20021,#10000,2,5,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,8,#20001,8,")") +#20025=@"loc,{#10000},2,14,2,14" +locations_default(#20025,#10000,2,14,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,6,#20001,10,"int") +#20029=@"loc,{#10000},2,17,2,19" +locations_default(#20029,#10000,2,17,2,19) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,11,"}") +hasLocation(#20030,#20007) #20031=* -tokeninfo(#20031,8,#20001,11,"}") -hasLocation(#20031,#20008) -#20032=* -tokeninfo(#20032,0,#20001,12,"") -#20033=@"loc,{#10000},3,2,3,1" -locations_default(#20033,#10000,3,2,3,1) -hasLocation(#20032,#20033) +tokeninfo(#20031,0,#20001,12,"") +#20032=@"loc,{#10000},3,2,3,1" +locations_default(#20032,#10000,3,2,3,1) +hasLocation(#20031,#20032) +toplevels(#20001,0) +#20033=@"loc,{#10000},1,1,3,1" +locations_default(#20033,#10000,1,1,3,1) +hasLocation(#20001,#20033) #20034=* entry_cfg_node(#20034,#20001) #20035=@"loc,{#10000},1,1,1,0" @@ -102,7 +102,7 @@ locations_default(#20035,#10000,1,1,1,0) hasLocation(#20034,#20035) #20036=* exit_cfg_node(#20036,#20001) -hasLocation(#20036,#20033) +hasLocation(#20036,#20032) successor(#20034,#20036) numlines(#10000,3,3,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/complexParamTypes.js.trap b/javascript/extractor/tests/flow/output/trap/complexParamTypes.js.trap index 380f722d404..9292cb46dbb 100644 --- a/javascript/extractor/tests/flow/output/trap/complexParamTypes.js.trap +++ b/javascript/extractor/tests/flow/output/trap/complexParamTypes.js.trap @@ -9,13 +9,11 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,1,69" -locations_default(#20002,#10000,1,1,1,69) -hasLocation(#20001,#20002) -#20003=* -lines(#20003,#20001,"type Asyncify = ((A, B) => C) => (A, B, Callback) => void","") -hasLocation(#20003,#20002) +#20002=* +lines(#20002,#20001,"type Asyncify = ((A, B) => C) => (A, B, Callback) => void","") +#20003=@"loc,{#10000},1,1,1,69" +locations_default(#20003,#10000,1,1,1,69) +hasLocation(#20002,#20003) numlines(#20001,1,1,0) #20004=* tokeninfo(#20004,6,#20001,0,"type") @@ -182,6 +180,8 @@ tokeninfo(#20068,0,#20001,32,"") #20069=@"loc,{#10000},1,70,1,69" locations_default(#20069,#10000,1,70,1,69) hasLocation(#20068,#20069) +toplevels(#20001,0) +hasLocation(#20001,#20003) #20070=* entry_cfg_node(#20070,#20001) #20071=@"loc,{#10000},1,1,1,0" diff --git a/javascript/extractor/tests/flow/output/trap/complexParamTypes2.js.trap b/javascript/extractor/tests/flow/output/trap/complexParamTypes2.js.trap index 3dd109ade80..9ba6f8f8f0f 100644 --- a/javascript/extractor/tests/flow/output/trap/complexParamTypes2.js.trap +++ b/javascript/extractor/tests/flow/output/trap/complexParamTypes2.js.trap @@ -9,132 +9,132 @@ 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=* -lines(#20003,#20001,"type o = {"," +#20002=* +lines(#20002,#20001,"type o = {"," ") -#20004=@"loc,{#10000},1,1,1,10" -locations_default(#20004,#10000,1,1,1,10) -hasLocation(#20003,#20004) -#20005=* -lines(#20005,#20001," push(T | Array, void | C): void"," +#20003=@"loc,{#10000},1,1,1,10" +locations_default(#20003,#10000,1,1,1,10) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," push(T | Array, void | C): void"," ") -#20006=@"loc,{#10000},2,1,2,36" -locations_default(#20006,#10000,2,1,2,36) -hasLocation(#20005,#20006) +#20005=@"loc,{#10000},2,1,2,36" +locations_default(#20005,#10000,2,1,2,36) +hasLocation(#20004,#20005) indentation(#10000,2," ",2) -#20007=* -lines(#20007,#20001,"}","") -#20008=@"loc,{#10000},3,1,3,1" -locations_default(#20008,#10000,3,1,3,1) -hasLocation(#20007,#20008) +#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) -#20009=* -tokeninfo(#20009,6,#20001,0,"type") -#20010=@"loc,{#10000},1,1,1,4" -locations_default(#20010,#10000,1,1,1,4) -hasLocation(#20009,#20010) -#20011=* -tokeninfo(#20011,6,#20001,1,"o") -#20012=@"loc,{#10000},1,6,1,6" -locations_default(#20012,#10000,1,6,1,6) -hasLocation(#20011,#20012) -#20013=* -tokeninfo(#20013,8,#20001,2,"=") -#20014=@"loc,{#10000},1,8,1,8" -locations_default(#20014,#10000,1,8,1,8) -hasLocation(#20013,#20014) -#20015=* -tokeninfo(#20015,8,#20001,3,"{") -#20016=@"loc,{#10000},1,10,1,10" -locations_default(#20016,#10000,1,10,1,10) -hasLocation(#20015,#20016) -#20017=* -tokeninfo(#20017,6,#20001,4,"push") -#20018=@"loc,{#10000},2,3,2,6" -locations_default(#20018,#10000,2,3,2,6) -hasLocation(#20017,#20018) -#20019=* -tokeninfo(#20019,8,#20001,5,"(") -#20020=@"loc,{#10000},2,7,2,7" -locations_default(#20020,#10000,2,7,2,7) -hasLocation(#20019,#20020) -#20021=* -tokeninfo(#20021,6,#20001,6,"T") -#20022=@"loc,{#10000},2,8,2,8" -locations_default(#20022,#10000,2,8,2,8) -hasLocation(#20021,#20022) -#20023=* -tokeninfo(#20023,8,#20001,7,"|") -#20024=@"loc,{#10000},2,10,2,10" -locations_default(#20024,#10000,2,10,2,10) -hasLocation(#20023,#20024) -#20025=* -tokeninfo(#20025,6,#20001,8,"Array") -#20026=@"loc,{#10000},2,12,2,16" -locations_default(#20026,#10000,2,12,2,16) -hasLocation(#20025,#20026) -#20027=* -tokeninfo(#20027,8,#20001,9,"<") -#20028=@"loc,{#10000},2,17,2,17" -locations_default(#20028,#10000,2,17,2,17) -hasLocation(#20027,#20028) -#20029=* -tokeninfo(#20029,6,#20001,10,"T") -#20030=@"loc,{#10000},2,18,2,18" -locations_default(#20030,#10000,2,18,2,18) -hasLocation(#20029,#20030) -#20031=* -tokeninfo(#20031,8,#20001,11,">") -#20032=@"loc,{#10000},2,19,2,19" -locations_default(#20032,#10000,2,19,2,19) -hasLocation(#20031,#20032) -#20033=* -tokeninfo(#20033,8,#20001,12,",") -#20034=@"loc,{#10000},2,20,2,20" -locations_default(#20034,#10000,2,20,2,20) -hasLocation(#20033,#20034) -#20035=* -tokeninfo(#20035,7,#20001,13,"void") -#20036=@"loc,{#10000},2,22,2,25" -locations_default(#20036,#10000,2,22,2,25) -hasLocation(#20035,#20036) -#20037=* -tokeninfo(#20037,8,#20001,14,"|") -#20038=@"loc,{#10000},2,27,2,27" -locations_default(#20038,#10000,2,27,2,27) -hasLocation(#20037,#20038) -#20039=* -tokeninfo(#20039,6,#20001,15,"C") -#20040=@"loc,{#10000},2,29,2,29" -locations_default(#20040,#10000,2,29,2,29) -hasLocation(#20039,#20040) -#20041=* -tokeninfo(#20041,8,#20001,16,")") -#20042=@"loc,{#10000},2,30,2,30" -locations_default(#20042,#10000,2,30,2,30) -hasLocation(#20041,#20042) -#20043=* -tokeninfo(#20043,8,#20001,17,":") -#20044=@"loc,{#10000},2,31,2,31" -locations_default(#20044,#10000,2,31,2,31) -hasLocation(#20043,#20044) -#20045=* -tokeninfo(#20045,7,#20001,18,"void") -#20046=@"loc,{#10000},2,33,2,36" -locations_default(#20046,#10000,2,33,2,36) -hasLocation(#20045,#20046) +#20008=* +tokeninfo(#20008,6,#20001,0,"type") +#20009=@"loc,{#10000},1,1,1,4" +locations_default(#20009,#10000,1,1,1,4) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,6,#20001,1,"o") +#20011=@"loc,{#10000},1,6,1,6" +locations_default(#20011,#10000,1,6,1,6) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,8,#20001,2,"=") +#20013=@"loc,{#10000},1,8,1,8" +locations_default(#20013,#10000,1,8,1,8) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,3,"{") +#20015=@"loc,{#10000},1,10,1,10" +locations_default(#20015,#10000,1,10,1,10) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,6,#20001,4,"push") +#20017=@"loc,{#10000},2,3,2,6" +locations_default(#20017,#10000,2,3,2,6) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,5,"(") +#20019=@"loc,{#10000},2,7,2,7" +locations_default(#20019,#10000,2,7,2,7) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,6,#20001,6,"T") +#20021=@"loc,{#10000},2,8,2,8" +locations_default(#20021,#10000,2,8,2,8) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,7,"|") +#20023=@"loc,{#10000},2,10,2,10" +locations_default(#20023,#10000,2,10,2,10) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,6,#20001,8,"Array") +#20025=@"loc,{#10000},2,12,2,16" +locations_default(#20025,#10000,2,12,2,16) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,9,"<") +#20027=@"loc,{#10000},2,17,2,17" +locations_default(#20027,#10000,2,17,2,17) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,6,#20001,10,"T") +#20029=@"loc,{#10000},2,18,2,18" +locations_default(#20029,#10000,2,18,2,18) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,11,">") +#20031=@"loc,{#10000},2,19,2,19" +locations_default(#20031,#10000,2,19,2,19) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,12,",") +#20033=@"loc,{#10000},2,20,2,20" +locations_default(#20033,#10000,2,20,2,20) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,7,#20001,13,"void") +#20035=@"loc,{#10000},2,22,2,25" +locations_default(#20035,#10000,2,22,2,25) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,14,"|") +#20037=@"loc,{#10000},2,27,2,27" +locations_default(#20037,#10000,2,27,2,27) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,6,#20001,15,"C") +#20039=@"loc,{#10000},2,29,2,29" +locations_default(#20039,#10000,2,29,2,29) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,16,")") +#20041=@"loc,{#10000},2,30,2,30" +locations_default(#20041,#10000,2,30,2,30) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,17,":") +#20043=@"loc,{#10000},2,31,2,31" +locations_default(#20043,#10000,2,31,2,31) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,7,#20001,18,"void") +#20045=@"loc,{#10000},2,33,2,36" +locations_default(#20045,#10000,2,33,2,36) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,19,"}") +hasLocation(#20046,#20007) #20047=* -tokeninfo(#20047,8,#20001,19,"}") -hasLocation(#20047,#20008) -#20048=* -tokeninfo(#20048,0,#20001,20,"") -#20049=@"loc,{#10000},3,2,3,1" -locations_default(#20049,#10000,3,2,3,1) -hasLocation(#20048,#20049) +tokeninfo(#20047,0,#20001,20,"") +#20048=@"loc,{#10000},3,2,3,1" +locations_default(#20048,#10000,3,2,3,1) +hasLocation(#20047,#20048) +toplevels(#20001,0) +#20049=@"loc,{#10000},1,1,3,1" +locations_default(#20049,#10000,1,1,3,1) +hasLocation(#20001,#20049) #20050=* entry_cfg_node(#20050,#20001) #20051=@"loc,{#10000},1,1,1,0" @@ -142,7 +142,7 @@ locations_default(#20051,#10000,1,1,1,0) hasLocation(#20050,#20051) #20052=* exit_cfg_node(#20052,#20001) -hasLocation(#20052,#20049) +hasLocation(#20052,#20048) successor(#20050,#20052) numlines(#10000,3,3,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/declareExport.js.trap b/javascript/extractor/tests/flow/output/trap/declareExport.js.trap index 893df96cec7..9e34dd0ddfc 100644 --- a/javascript/extractor/tests/flow/output/trap/declareExport.js.trap +++ b/javascript/extractor/tests/flow/output/trap/declareExport.js.trap @@ -9,235 +9,235 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,5,58" -locations_default(#20002,#10000,1,1,5,58) -hasLocation(#20001,#20002) -#20003=* -lines(#20003,#20001,"declare export var foo : boolean;"," +#20002=* +lines(#20002,#20001,"declare export var foo : boolean;"," ") -#20004=@"loc,{#10000},1,1,1,33" -locations_default(#20004,#10000,1,1,1,33) -hasLocation(#20003,#20004) -#20005=* -lines(#20005,#20001,"declare export default typeof simpleTextBuffer$TextBuffer;"," +#20003=@"loc,{#10000},1,1,1,33" +locations_default(#20003,#10000,1,1,1,33) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"declare export default typeof simpleTextBuffer$TextBuffer;"," ") -#20006=@"loc,{#10000},2,1,2,58" -locations_default(#20006,#10000,2,1,2,58) -hasLocation(#20005,#20006) -#20007=* -lines(#20007,#20001,"declare export default marked$Marked;"," +#20005=@"loc,{#10000},2,1,2,58" +locations_default(#20005,#10000,2,1,2,58) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"declare export default marked$Marked;"," ") -#20008=@"loc,{#10000},3,1,3,37" -locations_default(#20008,#10000,3,1,3,37) -hasLocation(#20007,#20008) -#20009=* -lines(#20009,#20001,"declare export type ProcessEnv = { };"," +#20007=@"loc,{#10000},3,1,3,37" +locations_default(#20007,#10000,3,1,3,37) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001,"declare export type ProcessEnv = { };"," ") -#20010=@"loc,{#10000},4,1,4,37" -locations_default(#20010,#10000,4,1,4,37) -hasLocation(#20009,#20010) -#20011=* -lines(#20011,#20001,"declare module ""foo"" { declare export type * from ""bar""; }","") -#20012=@"loc,{#10000},5,1,5,58" -locations_default(#20012,#10000,5,1,5,58) -hasLocation(#20011,#20012) +#20009=@"loc,{#10000},4,1,4,37" +locations_default(#20009,#10000,4,1,4,37) +hasLocation(#20008,#20009) +#20010=* +lines(#20010,#20001,"declare module ""foo"" { declare export type * from ""bar""; }","") +#20011=@"loc,{#10000},5,1,5,58" +locations_default(#20011,#10000,5,1,5,58) +hasLocation(#20010,#20011) numlines(#20001,5,5,0) -#20013=* -tokeninfo(#20013,6,#20001,0,"declare") -#20014=@"loc,{#10000},1,1,1,7" -locations_default(#20014,#10000,1,1,1,7) -hasLocation(#20013,#20014) -#20015=* -tokeninfo(#20015,7,#20001,1,"export") -#20016=@"loc,{#10000},1,9,1,14" -locations_default(#20016,#10000,1,9,1,14) -hasLocation(#20015,#20016) -#20017=* -tokeninfo(#20017,7,#20001,2,"var") -#20018=@"loc,{#10000},1,16,1,18" -locations_default(#20018,#10000,1,16,1,18) -hasLocation(#20017,#20018) -#20019=* -tokeninfo(#20019,6,#20001,3,"foo") -#20020=@"loc,{#10000},1,20,1,22" -locations_default(#20020,#10000,1,20,1,22) -hasLocation(#20019,#20020) -#20021=* -tokeninfo(#20021,8,#20001,4,":") -#20022=@"loc,{#10000},1,24,1,24" -locations_default(#20022,#10000,1,24,1,24) -hasLocation(#20021,#20022) -#20023=* -tokeninfo(#20023,6,#20001,5,"boolean") -#20024=@"loc,{#10000},1,26,1,32" -locations_default(#20024,#10000,1,26,1,32) -hasLocation(#20023,#20024) -#20025=* -tokeninfo(#20025,8,#20001,6,";") -#20026=@"loc,{#10000},1,33,1,33" -locations_default(#20026,#10000,1,33,1,33) -hasLocation(#20025,#20026) -#20027=* -tokeninfo(#20027,6,#20001,7,"declare") -#20028=@"loc,{#10000},2,1,2,7" -locations_default(#20028,#10000,2,1,2,7) -hasLocation(#20027,#20028) -#20029=* -tokeninfo(#20029,7,#20001,8,"export") -#20030=@"loc,{#10000},2,9,2,14" -locations_default(#20030,#10000,2,9,2,14) -hasLocation(#20029,#20030) -#20031=* -tokeninfo(#20031,7,#20001,9,"default") -#20032=@"loc,{#10000},2,16,2,22" -locations_default(#20032,#10000,2,16,2,22) -hasLocation(#20031,#20032) -#20033=* -tokeninfo(#20033,7,#20001,10,"typeof") -#20034=@"loc,{#10000},2,24,2,29" -locations_default(#20034,#10000,2,24,2,29) -hasLocation(#20033,#20034) -#20035=* -tokeninfo(#20035,6,#20001,11,"simpleTextBuffer$TextBuffer") -#20036=@"loc,{#10000},2,31,2,57" -locations_default(#20036,#10000,2,31,2,57) -hasLocation(#20035,#20036) -#20037=* -tokeninfo(#20037,8,#20001,12,";") -#20038=@"loc,{#10000},2,58,2,58" -locations_default(#20038,#10000,2,58,2,58) -hasLocation(#20037,#20038) -#20039=* -tokeninfo(#20039,6,#20001,13,"declare") -#20040=@"loc,{#10000},3,1,3,7" -locations_default(#20040,#10000,3,1,3,7) -hasLocation(#20039,#20040) -#20041=* -tokeninfo(#20041,7,#20001,14,"export") -#20042=@"loc,{#10000},3,9,3,14" -locations_default(#20042,#10000,3,9,3,14) -hasLocation(#20041,#20042) -#20043=* -tokeninfo(#20043,7,#20001,15,"default") -#20044=@"loc,{#10000},3,16,3,22" -locations_default(#20044,#10000,3,16,3,22) -hasLocation(#20043,#20044) -#20045=* -tokeninfo(#20045,6,#20001,16,"marked$Marked") -#20046=@"loc,{#10000},3,24,3,36" -locations_default(#20046,#10000,3,24,3,36) -hasLocation(#20045,#20046) -#20047=* -tokeninfo(#20047,8,#20001,17,";") -#20048=@"loc,{#10000},3,37,3,37" -locations_default(#20048,#10000,3,37,3,37) -hasLocation(#20047,#20048) -#20049=* -tokeninfo(#20049,6,#20001,18,"declare") -#20050=@"loc,{#10000},4,1,4,7" -locations_default(#20050,#10000,4,1,4,7) -hasLocation(#20049,#20050) -#20051=* -tokeninfo(#20051,7,#20001,19,"export") -#20052=@"loc,{#10000},4,9,4,14" -locations_default(#20052,#10000,4,9,4,14) -hasLocation(#20051,#20052) -#20053=* -tokeninfo(#20053,6,#20001,20,"type") -#20054=@"loc,{#10000},4,16,4,19" -locations_default(#20054,#10000,4,16,4,19) -hasLocation(#20053,#20054) -#20055=* -tokeninfo(#20055,6,#20001,21,"ProcessEnv") -#20056=@"loc,{#10000},4,21,4,30" -locations_default(#20056,#10000,4,21,4,30) -hasLocation(#20055,#20056) -#20057=* -tokeninfo(#20057,8,#20001,22,"=") -#20058=@"loc,{#10000},4,32,4,32" -locations_default(#20058,#10000,4,32,4,32) -hasLocation(#20057,#20058) -#20059=* -tokeninfo(#20059,8,#20001,23,"{") -#20060=@"loc,{#10000},4,34,4,34" -locations_default(#20060,#10000,4,34,4,34) -hasLocation(#20059,#20060) -#20061=* -tokeninfo(#20061,8,#20001,24,"}") -#20062=@"loc,{#10000},4,36,4,36" -locations_default(#20062,#10000,4,36,4,36) -hasLocation(#20061,#20062) -#20063=* -tokeninfo(#20063,8,#20001,25,";") -#20064=@"loc,{#10000},4,37,4,37" -locations_default(#20064,#10000,4,37,4,37) -hasLocation(#20063,#20064) -#20065=* -tokeninfo(#20065,6,#20001,26,"declare") -#20066=@"loc,{#10000},5,1,5,7" -locations_default(#20066,#10000,5,1,5,7) -hasLocation(#20065,#20066) -#20067=* -tokeninfo(#20067,6,#20001,27,"module") -#20068=@"loc,{#10000},5,9,5,14" -locations_default(#20068,#10000,5,9,5,14) -hasLocation(#20067,#20068) -#20069=* -tokeninfo(#20069,4,#20001,28,"""foo""") -#20070=@"loc,{#10000},5,16,5,20" -locations_default(#20070,#10000,5,16,5,20) -hasLocation(#20069,#20070) -#20071=* -tokeninfo(#20071,8,#20001,29,"{") -#20072=@"loc,{#10000},5,22,5,22" -locations_default(#20072,#10000,5,22,5,22) -hasLocation(#20071,#20072) -#20073=* -tokeninfo(#20073,6,#20001,30,"declare") -#20074=@"loc,{#10000},5,24,5,30" -locations_default(#20074,#10000,5,24,5,30) -hasLocation(#20073,#20074) -#20075=* -tokeninfo(#20075,7,#20001,31,"export") -#20076=@"loc,{#10000},5,32,5,37" -locations_default(#20076,#10000,5,32,5,37) -hasLocation(#20075,#20076) -#20077=* -tokeninfo(#20077,6,#20001,32,"type") -#20078=@"loc,{#10000},5,39,5,42" -locations_default(#20078,#10000,5,39,5,42) -hasLocation(#20077,#20078) -#20079=* -tokeninfo(#20079,8,#20001,33,"*") -#20080=@"loc,{#10000},5,44,5,44" -locations_default(#20080,#10000,5,44,5,44) -hasLocation(#20079,#20080) -#20081=* -tokeninfo(#20081,6,#20001,34,"from") -#20082=@"loc,{#10000},5,46,5,49" -locations_default(#20082,#10000,5,46,5,49) -hasLocation(#20081,#20082) -#20083=* -tokeninfo(#20083,4,#20001,35,"""bar""") -#20084=@"loc,{#10000},5,51,5,55" -locations_default(#20084,#10000,5,51,5,55) -hasLocation(#20083,#20084) -#20085=* -tokeninfo(#20085,8,#20001,36,";") -#20086=@"loc,{#10000},5,56,5,56" -locations_default(#20086,#10000,5,56,5,56) -hasLocation(#20085,#20086) -#20087=* -tokeninfo(#20087,8,#20001,37,"}") -#20088=@"loc,{#10000},5,58,5,58" -locations_default(#20088,#10000,5,58,5,58) -hasLocation(#20087,#20088) -#20089=* -tokeninfo(#20089,0,#20001,38,"") -#20090=@"loc,{#10000},5,59,5,58" -locations_default(#20090,#10000,5,59,5,58) -hasLocation(#20089,#20090) +#20012=* +tokeninfo(#20012,6,#20001,0,"declare") +#20013=@"loc,{#10000},1,1,1,7" +locations_default(#20013,#10000,1,1,1,7) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,7,#20001,1,"export") +#20015=@"loc,{#10000},1,9,1,14" +locations_default(#20015,#10000,1,9,1,14) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,7,#20001,2,"var") +#20017=@"loc,{#10000},1,16,1,18" +locations_default(#20017,#10000,1,16,1,18) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,6,#20001,3,"foo") +#20019=@"loc,{#10000},1,20,1,22" +locations_default(#20019,#10000,1,20,1,22) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,4,":") +#20021=@"loc,{#10000},1,24,1,24" +locations_default(#20021,#10000,1,24,1,24) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,6,#20001,5,"boolean") +#20023=@"loc,{#10000},1,26,1,32" +locations_default(#20023,#10000,1,26,1,32) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,6,";") +#20025=@"loc,{#10000},1,33,1,33" +locations_default(#20025,#10000,1,33,1,33) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,6,#20001,7,"declare") +#20027=@"loc,{#10000},2,1,2,7" +locations_default(#20027,#10000,2,1,2,7) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,7,#20001,8,"export") +#20029=@"loc,{#10000},2,9,2,14" +locations_default(#20029,#10000,2,9,2,14) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,7,#20001,9,"default") +#20031=@"loc,{#10000},2,16,2,22" +locations_default(#20031,#10000,2,16,2,22) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,7,#20001,10,"typeof") +#20033=@"loc,{#10000},2,24,2,29" +locations_default(#20033,#10000,2,24,2,29) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,6,#20001,11,"simpleTextBuffer$TextBuffer") +#20035=@"loc,{#10000},2,31,2,57" +locations_default(#20035,#10000,2,31,2,57) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,12,";") +#20037=@"loc,{#10000},2,58,2,58" +locations_default(#20037,#10000,2,58,2,58) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,6,#20001,13,"declare") +#20039=@"loc,{#10000},3,1,3,7" +locations_default(#20039,#10000,3,1,3,7) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,7,#20001,14,"export") +#20041=@"loc,{#10000},3,9,3,14" +locations_default(#20041,#10000,3,9,3,14) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,7,#20001,15,"default") +#20043=@"loc,{#10000},3,16,3,22" +locations_default(#20043,#10000,3,16,3,22) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,6,#20001,16,"marked$Marked") +#20045=@"loc,{#10000},3,24,3,36" +locations_default(#20045,#10000,3,24,3,36) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,17,";") +#20047=@"loc,{#10000},3,37,3,37" +locations_default(#20047,#10000,3,37,3,37) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,6,#20001,18,"declare") +#20049=@"loc,{#10000},4,1,4,7" +locations_default(#20049,#10000,4,1,4,7) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,7,#20001,19,"export") +#20051=@"loc,{#10000},4,9,4,14" +locations_default(#20051,#10000,4,9,4,14) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,6,#20001,20,"type") +#20053=@"loc,{#10000},4,16,4,19" +locations_default(#20053,#10000,4,16,4,19) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,6,#20001,21,"ProcessEnv") +#20055=@"loc,{#10000},4,21,4,30" +locations_default(#20055,#10000,4,21,4,30) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,8,#20001,22,"=") +#20057=@"loc,{#10000},4,32,4,32" +locations_default(#20057,#10000,4,32,4,32) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,8,#20001,23,"{") +#20059=@"loc,{#10000},4,34,4,34" +locations_default(#20059,#10000,4,34,4,34) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,8,#20001,24,"}") +#20061=@"loc,{#10000},4,36,4,36" +locations_default(#20061,#10000,4,36,4,36) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,8,#20001,25,";") +#20063=@"loc,{#10000},4,37,4,37" +locations_default(#20063,#10000,4,37,4,37) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,6,#20001,26,"declare") +#20065=@"loc,{#10000},5,1,5,7" +locations_default(#20065,#10000,5,1,5,7) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,6,#20001,27,"module") +#20067=@"loc,{#10000},5,9,5,14" +locations_default(#20067,#10000,5,9,5,14) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,4,#20001,28,"""foo""") +#20069=@"loc,{#10000},5,16,5,20" +locations_default(#20069,#10000,5,16,5,20) +hasLocation(#20068,#20069) +#20070=* +tokeninfo(#20070,8,#20001,29,"{") +#20071=@"loc,{#10000},5,22,5,22" +locations_default(#20071,#10000,5,22,5,22) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,6,#20001,30,"declare") +#20073=@"loc,{#10000},5,24,5,30" +locations_default(#20073,#10000,5,24,5,30) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,7,#20001,31,"export") +#20075=@"loc,{#10000},5,32,5,37" +locations_default(#20075,#10000,5,32,5,37) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,6,#20001,32,"type") +#20077=@"loc,{#10000},5,39,5,42" +locations_default(#20077,#10000,5,39,5,42) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,8,#20001,33,"*") +#20079=@"loc,{#10000},5,44,5,44" +locations_default(#20079,#10000,5,44,5,44) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,6,#20001,34,"from") +#20081=@"loc,{#10000},5,46,5,49" +locations_default(#20081,#10000,5,46,5,49) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,4,#20001,35,"""bar""") +#20083=@"loc,{#10000},5,51,5,55" +locations_default(#20083,#10000,5,51,5,55) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,8,#20001,36,";") +#20085=@"loc,{#10000},5,56,5,56" +locations_default(#20085,#10000,5,56,5,56) +hasLocation(#20084,#20085) +#20086=* +tokeninfo(#20086,8,#20001,37,"}") +#20087=@"loc,{#10000},5,58,5,58" +locations_default(#20087,#10000,5,58,5,58) +hasLocation(#20086,#20087) +#20088=* +tokeninfo(#20088,0,#20001,38,"") +#20089=@"loc,{#10000},5,59,5,58" +locations_default(#20089,#10000,5,59,5,58) +hasLocation(#20088,#20089) +toplevels(#20001,0) +#20090=@"loc,{#10000},1,1,5,58" +locations_default(#20090,#10000,1,1,5,58) +hasLocation(#20001,#20090) #20091=* entry_cfg_node(#20091,#20001) #20092=@"loc,{#10000},1,1,1,0" @@ -245,7 +245,7 @@ locations_default(#20092,#10000,1,1,1,0) hasLocation(#20091,#20092) #20093=* exit_cfg_node(#20093,#20001) -hasLocation(#20093,#20090) +hasLocation(#20093,#20089) successor(#20091,#20093) numlines(#10000,5,5,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/declareModuleExports.js.trap b/javascript/extractor/tests/flow/output/trap/declareModuleExports.js.trap index 0a74fc0ed82..2c92f20b158 100644 --- a/javascript/extractor/tests/flow/output/trap/declareModuleExports.js.trap +++ b/javascript/extractor/tests/flow/output/trap/declareModuleExports.js.trap @@ -9,99 +9,99 @@ 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=* -lines(#20003,#20001,"declare module 'foo' {"," +#20002=* +lines(#20002,#20001,"declare module 'foo' {"," ") -#20004=@"loc,{#10000},1,1,1,22" -locations_default(#20004,#10000,1,1,1,22) -hasLocation(#20003,#20004) -#20005=* -lines(#20005,#20001," declare module.exports: {"," +#20003=@"loc,{#10000},1,1,1,22" +locations_default(#20003,#10000,1,1,1,22) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," declare module.exports: {"," ") -#20006=@"loc,{#10000},2,1,2,27" -locations_default(#20006,#10000,2,1,2,27) -hasLocation(#20005,#20006) +#20005=@"loc,{#10000},2,1,2,27" +locations_default(#20005,#10000,2,1,2,27) +hasLocation(#20004,#20005) indentation(#10000,2," ",2) -#20007=* -lines(#20007,#20001," }"," +#20006=* +lines(#20006,#20001," }"," ") -#20008=@"loc,{#10000},3,1,3,3" -locations_default(#20008,#10000,3,1,3,3) -hasLocation(#20007,#20008) +#20007=@"loc,{#10000},3,1,3,3" +locations_default(#20007,#10000,3,1,3,3) +hasLocation(#20006,#20007) indentation(#10000,3," ",2) -#20009=* -lines(#20009,#20001,"}","") -#20010=@"loc,{#10000},4,1,4,1" -locations_default(#20010,#10000,4,1,4,1) -hasLocation(#20009,#20010) +#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) -#20011=* -tokeninfo(#20011,6,#20001,0,"declare") -#20012=@"loc,{#10000},1,1,1,7" -locations_default(#20012,#10000,1,1,1,7) -hasLocation(#20011,#20012) -#20013=* -tokeninfo(#20013,6,#20001,1,"module") -#20014=@"loc,{#10000},1,9,1,14" -locations_default(#20014,#10000,1,9,1,14) -hasLocation(#20013,#20014) -#20015=* -tokeninfo(#20015,4,#20001,2,"'foo'") -#20016=@"loc,{#10000},1,16,1,20" -locations_default(#20016,#10000,1,16,1,20) -hasLocation(#20015,#20016) -#20017=* -tokeninfo(#20017,8,#20001,3,"{") -#20018=@"loc,{#10000},1,22,1,22" -locations_default(#20018,#10000,1,22,1,22) -hasLocation(#20017,#20018) -#20019=* -tokeninfo(#20019,6,#20001,4,"declare") -#20020=@"loc,{#10000},2,3,2,9" -locations_default(#20020,#10000,2,3,2,9) -hasLocation(#20019,#20020) -#20021=* -tokeninfo(#20021,6,#20001,5,"module") -#20022=@"loc,{#10000},2,11,2,16" -locations_default(#20022,#10000,2,11,2,16) -hasLocation(#20021,#20022) -#20023=* -tokeninfo(#20023,8,#20001,6,".") -#20024=@"loc,{#10000},2,17,2,17" -locations_default(#20024,#10000,2,17,2,17) -hasLocation(#20023,#20024) -#20025=* -tokeninfo(#20025,6,#20001,7,"exports") -#20026=@"loc,{#10000},2,18,2,24" -locations_default(#20026,#10000,2,18,2,24) -hasLocation(#20025,#20026) -#20027=* -tokeninfo(#20027,8,#20001,8,":") -#20028=@"loc,{#10000},2,25,2,25" -locations_default(#20028,#10000,2,25,2,25) -hasLocation(#20027,#20028) -#20029=* -tokeninfo(#20029,8,#20001,9,"{") -#20030=@"loc,{#10000},2,27,2,27" -locations_default(#20030,#10000,2,27,2,27) -hasLocation(#20029,#20030) -#20031=* -tokeninfo(#20031,8,#20001,10,"}") -#20032=@"loc,{#10000},3,3,3,3" -locations_default(#20032,#10000,3,3,3,3) -hasLocation(#20031,#20032) +#20010=* +tokeninfo(#20010,6,#20001,0,"declare") +#20011=@"loc,{#10000},1,1,1,7" +locations_default(#20011,#10000,1,1,1,7) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,6,#20001,1,"module") +#20013=@"loc,{#10000},1,9,1,14" +locations_default(#20013,#10000,1,9,1,14) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,4,#20001,2,"'foo'") +#20015=@"loc,{#10000},1,16,1,20" +locations_default(#20015,#10000,1,16,1,20) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,3,"{") +#20017=@"loc,{#10000},1,22,1,22" +locations_default(#20017,#10000,1,22,1,22) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,6,#20001,4,"declare") +#20019=@"loc,{#10000},2,3,2,9" +locations_default(#20019,#10000,2,3,2,9) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,6,#20001,5,"module") +#20021=@"loc,{#10000},2,11,2,16" +locations_default(#20021,#10000,2,11,2,16) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,6,".") +#20023=@"loc,{#10000},2,17,2,17" +locations_default(#20023,#10000,2,17,2,17) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,6,#20001,7,"exports") +#20025=@"loc,{#10000},2,18,2,24" +locations_default(#20025,#10000,2,18,2,24) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,8,":") +#20027=@"loc,{#10000},2,25,2,25" +locations_default(#20027,#10000,2,25,2,25) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,9,"{") +#20029=@"loc,{#10000},2,27,2,27" +locations_default(#20029,#10000,2,27,2,27) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,10,"}") +#20031=@"loc,{#10000},3,3,3,3" +locations_default(#20031,#10000,3,3,3,3) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,11,"}") +hasLocation(#20032,#20009) #20033=* -tokeninfo(#20033,8,#20001,11,"}") -hasLocation(#20033,#20010) -#20034=* -tokeninfo(#20034,0,#20001,12,"") -#20035=@"loc,{#10000},4,2,4,1" -locations_default(#20035,#10000,4,2,4,1) -hasLocation(#20034,#20035) +tokeninfo(#20033,0,#20001,12,"") +#20034=@"loc,{#10000},4,2,4,1" +locations_default(#20034,#10000,4,2,4,1) +hasLocation(#20033,#20034) +toplevels(#20001,0) +#20035=@"loc,{#10000},1,1,4,1" +locations_default(#20035,#10000,1,1,4,1) +hasLocation(#20001,#20035) #20036=* entry_cfg_node(#20036,#20001) #20037=@"loc,{#10000},1,1,1,0" @@ -109,7 +109,7 @@ locations_default(#20037,#10000,1,1,1,0) hasLocation(#20036,#20037) #20038=* exit_cfg_node(#20038,#20001) -hasLocation(#20038,#20035) +hasLocation(#20038,#20034) successor(#20036,#20038) numlines(#10000,4,4,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/declared-module-imports.js.trap b/javascript/extractor/tests/flow/output/trap/declared-module-imports.js.trap index d341a31f757..18c6aad67d3 100644 --- a/javascript/extractor/tests/flow/output/trap/declared-module-imports.js.trap +++ b/javascript/extractor/tests/flow/output/trap/declared-module-imports.js.trap @@ -9,130 +9,131 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,5,0" -locations_default(#20002,#10000,1,1,5,0) -hasLocation(#20001,#20002) -#20003=@"module;{#10000},1,1" -scopes(#20003,3) -scopenodes(#20001,#20003) -scopenesting(#20003,#20000) -isModule(#20001) +#20002=* +lines(#20002,#20001,"declare module ""m1"" {"," +") +#20003=@"loc,{#10000},1,1,1,21" +locations_default(#20003,#10000,1,1,1,21) +hasLocation(#20002,#20003) #20004=* -lines(#20004,#20001,"declare module ""m1"" {"," +lines(#20004,#20001," import type t from ""m2"";"," ") -#20005=@"loc,{#10000},1,1,1,21" -locations_default(#20005,#10000,1,1,1,21) +#20005=@"loc,{#10000},2,1,2,26" +locations_default(#20005,#10000,2,1,2,26) hasLocation(#20004,#20005) -#20006=* -lines(#20006,#20001," import type t from ""m2"";"," -") -#20007=@"loc,{#10000},2,1,2,26" -locations_default(#20007,#10000,2,1,2,26) -hasLocation(#20006,#20007) indentation(#10000,2," ",2) -#20008=* -lines(#20008,#20001," import typeof t from ""m3"";"," +#20006=* +lines(#20006,#20001," import typeof t from ""m3"";"," ") -#20009=@"loc,{#10000},3,1,3,28" -locations_default(#20009,#10000,3,1,3,28) -hasLocation(#20008,#20009) +#20007=@"loc,{#10000},3,1,3,28" +locations_default(#20007,#10000,3,1,3,28) +hasLocation(#20006,#20007) indentation(#10000,3," ",2) -#20010=* -lines(#20010,#20001,"}"," +#20008=* +lines(#20008,#20001,"}"," ") -#20011=@"loc,{#10000},4,1,4,1" -locations_default(#20011,#10000,4,1,4,1) -hasLocation(#20010,#20011) +#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,6,#20001,0,"declare") +#20011=@"loc,{#10000},1,1,1,7" +locations_default(#20011,#10000,1,1,1,7) +hasLocation(#20010,#20011) #20012=* -tokeninfo(#20012,6,#20001,0,"declare") -#20013=@"loc,{#10000},1,1,1,7" -locations_default(#20013,#10000,1,1,1,7) +tokeninfo(#20012,6,#20001,1,"module") +#20013=@"loc,{#10000},1,9,1,14" +locations_default(#20013,#10000,1,9,1,14) hasLocation(#20012,#20013) #20014=* -tokeninfo(#20014,6,#20001,1,"module") -#20015=@"loc,{#10000},1,9,1,14" -locations_default(#20015,#10000,1,9,1,14) +tokeninfo(#20014,4,#20001,2,"""m1""") +#20015=@"loc,{#10000},1,16,1,19" +locations_default(#20015,#10000,1,16,1,19) hasLocation(#20014,#20015) #20016=* -tokeninfo(#20016,4,#20001,2,"""m1""") -#20017=@"loc,{#10000},1,16,1,19" -locations_default(#20017,#10000,1,16,1,19) +tokeninfo(#20016,8,#20001,3,"{") +#20017=@"loc,{#10000},1,21,1,21" +locations_default(#20017,#10000,1,21,1,21) hasLocation(#20016,#20017) #20018=* -tokeninfo(#20018,8,#20001,3,"{") -#20019=@"loc,{#10000},1,21,1,21" -locations_default(#20019,#10000,1,21,1,21) +tokeninfo(#20018,7,#20001,4,"import") +#20019=@"loc,{#10000},2,3,2,8" +locations_default(#20019,#10000,2,3,2,8) hasLocation(#20018,#20019) #20020=* -tokeninfo(#20020,7,#20001,4,"import") -#20021=@"loc,{#10000},2,3,2,8" -locations_default(#20021,#10000,2,3,2,8) +tokeninfo(#20020,6,#20001,5,"type") +#20021=@"loc,{#10000},2,10,2,13" +locations_default(#20021,#10000,2,10,2,13) hasLocation(#20020,#20021) #20022=* -tokeninfo(#20022,6,#20001,5,"type") -#20023=@"loc,{#10000},2,10,2,13" -locations_default(#20023,#10000,2,10,2,13) +tokeninfo(#20022,6,#20001,6,"t") +#20023=@"loc,{#10000},2,15,2,15" +locations_default(#20023,#10000,2,15,2,15) hasLocation(#20022,#20023) #20024=* -tokeninfo(#20024,6,#20001,6,"t") -#20025=@"loc,{#10000},2,15,2,15" -locations_default(#20025,#10000,2,15,2,15) +tokeninfo(#20024,6,#20001,7,"from") +#20025=@"loc,{#10000},2,17,2,20" +locations_default(#20025,#10000,2,17,2,20) hasLocation(#20024,#20025) #20026=* -tokeninfo(#20026,6,#20001,7,"from") -#20027=@"loc,{#10000},2,17,2,20" -locations_default(#20027,#10000,2,17,2,20) +tokeninfo(#20026,4,#20001,8,"""m2""") +#20027=@"loc,{#10000},2,22,2,25" +locations_default(#20027,#10000,2,22,2,25) hasLocation(#20026,#20027) #20028=* -tokeninfo(#20028,4,#20001,8,"""m2""") -#20029=@"loc,{#10000},2,22,2,25" -locations_default(#20029,#10000,2,22,2,25) +tokeninfo(#20028,8,#20001,9,";") +#20029=@"loc,{#10000},2,26,2,26" +locations_default(#20029,#10000,2,26,2,26) hasLocation(#20028,#20029) #20030=* -tokeninfo(#20030,8,#20001,9,";") -#20031=@"loc,{#10000},2,26,2,26" -locations_default(#20031,#10000,2,26,2,26) +tokeninfo(#20030,7,#20001,10,"import") +#20031=@"loc,{#10000},3,3,3,8" +locations_default(#20031,#10000,3,3,3,8) hasLocation(#20030,#20031) #20032=* -tokeninfo(#20032,7,#20001,10,"import") -#20033=@"loc,{#10000},3,3,3,8" -locations_default(#20033,#10000,3,3,3,8) +tokeninfo(#20032,7,#20001,11,"typeof") +#20033=@"loc,{#10000},3,10,3,15" +locations_default(#20033,#10000,3,10,3,15) hasLocation(#20032,#20033) #20034=* -tokeninfo(#20034,7,#20001,11,"typeof") -#20035=@"loc,{#10000},3,10,3,15" -locations_default(#20035,#10000,3,10,3,15) +tokeninfo(#20034,6,#20001,12,"t") +#20035=@"loc,{#10000},3,17,3,17" +locations_default(#20035,#10000,3,17,3,17) hasLocation(#20034,#20035) #20036=* -tokeninfo(#20036,6,#20001,12,"t") -#20037=@"loc,{#10000},3,17,3,17" -locations_default(#20037,#10000,3,17,3,17) +tokeninfo(#20036,6,#20001,13,"from") +#20037=@"loc,{#10000},3,19,3,22" +locations_default(#20037,#10000,3,19,3,22) hasLocation(#20036,#20037) #20038=* -tokeninfo(#20038,6,#20001,13,"from") -#20039=@"loc,{#10000},3,19,3,22" -locations_default(#20039,#10000,3,19,3,22) +tokeninfo(#20038,4,#20001,14,"""m3""") +#20039=@"loc,{#10000},3,24,3,27" +locations_default(#20039,#10000,3,24,3,27) hasLocation(#20038,#20039) #20040=* -tokeninfo(#20040,4,#20001,14,"""m3""") -#20041=@"loc,{#10000},3,24,3,27" -locations_default(#20041,#10000,3,24,3,27) +tokeninfo(#20040,8,#20001,15,";") +#20041=@"loc,{#10000},3,28,3,28" +locations_default(#20041,#10000,3,28,3,28) hasLocation(#20040,#20041) #20042=* -tokeninfo(#20042,8,#20001,15,";") -#20043=@"loc,{#10000},3,28,3,28" -locations_default(#20043,#10000,3,28,3,28) -hasLocation(#20042,#20043) -#20044=* -tokeninfo(#20044,8,#20001,16,"}") -hasLocation(#20044,#20011) -#20045=* -tokeninfo(#20045,0,#20001,17,"") -#20046=@"loc,{#10000},5,1,5,0" -locations_default(#20046,#10000,5,1,5,0) -hasLocation(#20045,#20046) +tokeninfo(#20042,8,#20001,16,"}") +hasLocation(#20042,#20009) +#20043=* +tokeninfo(#20043,0,#20001,17,"") +#20044=@"loc,{#10000},5,1,5,0" +locations_default(#20044,#10000,5,1,5,0) +hasLocation(#20043,#20044) +toplevels(#20001,0) +#20045=@"loc,{#10000},1,1,5,0" +locations_default(#20045,#10000,1,1,5,0) +hasLocation(#20001,#20045) +#20046=@"module;{#10000},1,1" +scopes(#20046,3) +scopenodes(#20001,#20046) +scopenesting(#20046,#20000) +isModule(#20001) +isES2015Module(#20001) #20047=* entry_cfg_node(#20047,#20001) #20048=@"loc,{#10000},1,1,1,0" @@ -140,7 +141,7 @@ locations_default(#20048,#10000,1,1,1,0) hasLocation(#20047,#20048) #20049=* exit_cfg_node(#20049,#20001) -hasLocation(#20049,#20046) +hasLocation(#20049,#20044) successor(#20047,#20049) numlines(#10000,4,4,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/explicitTypeParameters.js.trap b/javascript/extractor/tests/flow/output/trap/explicitTypeParameters.js.trap index 72e88881b6c..0d78f92806b 100644 --- a/javascript/extractor/tests/flow/output/trap/explicitTypeParameters.js.trap +++ b/javascript/extractor/tests/flow/output/trap/explicitTypeParameters.js.trap @@ -9,634 +9,633 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,12,5" -locations_default(#20002,#10000,1,1,12,5) -hasLocation(#20001,#20002) -#20003=@"var;{f2};{#20000}" -variables(#20003,"f2",#20000) +#20002=* +lines(#20002,#20001,"new K1();"," +") +#20003=@"loc,{#10000},1,1,1,13" +locations_default(#20003,#10000,1,1,1,13) +hasLocation(#20002,#20003) #20004=* -stmts(#20004,2,#20001,0,"new K1();") -#20005=@"loc,{#10000},1,1,1,13" -locations_default(#20005,#10000,1,1,1,13) +lines(#20004,#20001,"f1();"," +") +#20005=@"loc,{#10000},2,1,2,9" +locations_default(#20005,#10000,2,1,2,9) hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) #20006=* -exprs(#20006,12,#20004,0,"new K1()") -#20007=@"loc,{#10000},1,1,1,12" -locations_default(#20007,#10000,1,1,1,12) +lines(#20006,#20001,"const f2 = function*(): T3 {"," +") +#20007=@"loc,{#10000},3,1,3,32" +locations_default(#20007,#10000,3,1,3,32) hasLocation(#20006,#20007) -enclosingStmt(#20006,#20004) -exprContainers(#20006,#20001) #20008=* -exprs(#20008,79,#20006,-1,"K1") -#20009=@"loc,{#10000},1,5,1,6" -locations_default(#20009,#10000,1,5,1,6) +lines(#20008,#20001," yield* f3(x);"," +") +#20009=@"loc,{#10000},4,1,4,19" +locations_default(#20009,#10000,4,1,4,19) hasLocation(#20008,#20009) -enclosingStmt(#20008,#20004) -exprContainers(#20008,#20001) -literals("K1","K1",#20008) -#20010=@"var;{K1};{#20000}" -variables(#20010,"K1",#20000) -bind(#20008,#20010) -#20011=* -stmts(#20011,2,#20001,1,"f1();") -#20012=@"loc,{#10000},2,1,2,9" -locations_default(#20012,#10000,2,1,2,9) -hasLocation(#20011,#20012) -stmtContainers(#20011,#20001) -#20013=* -exprs(#20013,13,#20011,0,"f1()") -#20014=@"loc,{#10000},2,1,2,8" -locations_default(#20014,#10000,2,1,2,8) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20011) -exprContainers(#20013,#20001) -#20015=* -exprs(#20015,79,#20013,-1,"f1") -#20016=@"loc,{#10000},2,1,2,2" -locations_default(#20016,#10000,2,1,2,2) -hasLocation(#20015,#20016) -enclosingStmt(#20015,#20011) -exprContainers(#20015,#20001) -literals("f1","f1",#20015) -#20017=@"var;{f1};{#20000}" -variables(#20017,"f1",#20000) -bind(#20015,#20017) -#20018=* -stmts(#20018,22,#20001,2,"const f ... >(x);\n}") -#20019=@"loc,{#10000},3,1,5,1" -locations_default(#20019,#10000,3,1,5,1) -hasLocation(#20018,#20019) -stmtContainers(#20018,#20001) -#20020=* -exprs(#20020,64,#20018,0,"f2 = fu ... >(x);\n}") -#20021=@"loc,{#10000},3,7,5,1" -locations_default(#20021,#10000,3,7,5,1) -hasLocation(#20020,#20021) -enclosingStmt(#20020,#20018) -exprContainers(#20020,#20001) -#20022=* -exprs(#20022,78,#20020,0,"f2") -#20023=@"loc,{#10000},3,7,3,8" -locations_default(#20023,#10000,3,7,3,8) -hasLocation(#20022,#20023) -enclosingStmt(#20022,#20018) -exprContainers(#20022,#20001) -literals("f2","f2",#20022) -decl(#20022,#20003) -#20024=* -exprs(#20024,9,#20020,1,"functio ... >(x);\n}") -#20025=@"loc,{#10000},3,12,5,1" -locations_default(#20025,#10000,3,12,5,1) -hasLocation(#20024,#20025) -enclosingStmt(#20024,#20018) -exprContainers(#20024,#20001) -#20026=* -scopes(#20026,1) -scopenodes(#20024,#20026) -scopenesting(#20026,#20000) -#20027=@"var;{arguments};{#20026}" -variables(#20027,"arguments",#20026) -isArgumentsObject(#20027) -isGenerator(#20024) -#20028=* -stmts(#20028,1,#20024,-2,"{\n yie ... >(x);\n}") -#20029=@"loc,{#10000},3,32,5,1" -locations_default(#20029,#10000,3,32,5,1) -hasLocation(#20028,#20029) -stmtContainers(#20028,#20024) -#20030=* -stmts(#20030,2,#20028,0,"yield* f3(x);") -#20031=@"loc,{#10000},4,3,4,19" -locations_default(#20031,#10000,4,3,4,19) -hasLocation(#20030,#20031) -stmtContainers(#20030,#20024) -#20032=* -exprs(#20032,69,#20030,0,"yield* f3(x)") -#20033=@"loc,{#10000},4,3,4,18" -locations_default(#20033,#10000,4,3,4,18) -hasLocation(#20032,#20033) -enclosingStmt(#20032,#20030) -exprContainers(#20032,#20024) -#20034=* -exprs(#20034,13,#20032,0,"f3(x)") -#20035=@"loc,{#10000},4,10,4,18" -locations_default(#20035,#10000,4,10,4,18) -hasLocation(#20034,#20035) -enclosingStmt(#20034,#20030) -exprContainers(#20034,#20024) -#20036=* -exprs(#20036,79,#20034,-1,"f3") -#20037=@"loc,{#10000},4,10,4,11" -locations_default(#20037,#10000,4,10,4,11) -hasLocation(#20036,#20037) -enclosingStmt(#20036,#20030) -exprContainers(#20036,#20024) -literals("f3","f3",#20036) -#20038=@"var;{f3};{#20000}" -variables(#20038,"f3",#20000) -bind(#20036,#20038) -#20039=* -exprs(#20039,79,#20034,0,"x") -#20040=@"loc,{#10000},4,17,4,17" -locations_default(#20040,#10000,4,17,4,17) -hasLocation(#20039,#20040) -enclosingStmt(#20039,#20030) -exprContainers(#20039,#20024) -literals("x","x",#20039) -#20041=@"var;{x};{#20000}" -variables(#20041,"x",#20000) -bind(#20039,#20041) -isDelegating(#20032) -numlines(#20024,3,3,0) -#20042=* -stmts(#20042,2,#20001,3,"f4(v1);") -#20043=@"loc,{#10000},6,1,6,11" -locations_default(#20043,#10000,6,1,6,11) -hasLocation(#20042,#20043) -stmtContainers(#20042,#20001) -#20044=* -exprs(#20044,13,#20042,0,"f4(v1)") -#20045=@"loc,{#10000},6,1,6,10" -locations_default(#20045,#10000,6,1,6,10) -hasLocation(#20044,#20045) -enclosingStmt(#20044,#20042) -exprContainers(#20044,#20001) -#20046=* -exprs(#20046,79,#20044,-1,"f4") -#20047=@"loc,{#10000},6,1,6,2" -locations_default(#20047,#10000,6,1,6,2) -hasLocation(#20046,#20047) -enclosingStmt(#20046,#20042) -exprContainers(#20046,#20001) -literals("f4","f4",#20046) -#20048=@"var;{f4};{#20000}" -variables(#20048,"f4",#20000) -bind(#20046,#20048) -#20049=* -exprs(#20049,79,#20044,0,"v1") -#20050=@"loc,{#10000},6,8,6,9" -locations_default(#20050,#10000,6,8,6,9) -hasLocation(#20049,#20050) -enclosingStmt(#20049,#20042) -exprContainers(#20049,#20001) -literals("v1","v1",#20049) -#20051=@"var;{v1};{#20000}" -variables(#20051,"v1",#20000) -bind(#20049,#20051) -#20052=* -stmts(#20052,2,#20001,4,"f5<_,_,_>();") -#20053=@"loc,{#10000},7,1,7,12" -locations_default(#20053,#10000,7,1,7,12) -hasLocation(#20052,#20053) -stmtContainers(#20052,#20001) -#20054=* -exprs(#20054,13,#20052,0,"f5<_,_,_>()") -#20055=@"loc,{#10000},7,1,7,11" -locations_default(#20055,#10000,7,1,7,11) -hasLocation(#20054,#20055) -enclosingStmt(#20054,#20052) -exprContainers(#20054,#20001) -#20056=* -exprs(#20056,79,#20054,-1,"f5") -#20057=@"loc,{#10000},7,1,7,2" -locations_default(#20057,#10000,7,1,7,2) -hasLocation(#20056,#20057) -enclosingStmt(#20056,#20052) -exprContainers(#20056,#20001) -literals("f5","f5",#20056) -#20058=@"var;{f5};{#20000}" -variables(#20058,"f5",#20000) -bind(#20056,#20058) -#20059=* -stmts(#20059,2,#20001,5,"f6<\n\t|T ... 9\n\t>();") -#20060=@"loc,{#10000},8,1,12,5" -locations_default(#20060,#10000,8,1,12,5) -hasLocation(#20059,#20060) -stmtContainers(#20059,#20001) -#20061=* -exprs(#20061,13,#20059,0,"f6<\n\t|T ... T9\n\t>()") -#20062=@"loc,{#10000},8,1,12,4" -locations_default(#20062,#10000,8,1,12,4) -hasLocation(#20061,#20062) -enclosingStmt(#20061,#20059) -exprContainers(#20061,#20001) -#20063=* -exprs(#20063,79,#20061,-1,"f6") -#20064=@"loc,{#10000},8,1,8,2" -locations_default(#20064,#10000,8,1,8,2) -hasLocation(#20063,#20064) -enclosingStmt(#20063,#20059) -exprContainers(#20063,#20001) -literals("f6","f6",#20063) -#20065=@"var;{f6};{#20000}" -variables(#20065,"f6",#20000) -bind(#20063,#20065) -#20066=* -lines(#20066,#20001,"new K1();"," -") -hasLocation(#20066,#20005) -#20067=* -lines(#20067,#20001,"f1();"," -") -hasLocation(#20067,#20012) -#20068=* -lines(#20068,#20001,"const f2 = function*(): T3 {"," -") -#20069=@"loc,{#10000},3,1,3,32" -locations_default(#20069,#10000,3,1,3,32) -hasLocation(#20068,#20069) -#20070=* -lines(#20070,#20001," yield* f3(x);"," -") -#20071=@"loc,{#10000},4,1,4,19" -locations_default(#20071,#10000,4,1,4,19) -hasLocation(#20070,#20071) indentation(#10000,4," ",2) -#20072=* -lines(#20072,#20001,"}"," +#20010=* +lines(#20010,#20001,"}"," ") -#20073=@"loc,{#10000},5,1,5,1" -locations_default(#20073,#10000,5,1,5,1) -hasLocation(#20072,#20073) -#20074=* -lines(#20074,#20001,"f4(v1);"," +#20011=@"loc,{#10000},5,1,5,1" +locations_default(#20011,#10000,5,1,5,1) +hasLocation(#20010,#20011) +#20012=* +lines(#20012,#20001,"f4(v1);"," ") -hasLocation(#20074,#20043) -#20075=* -lines(#20075,#20001,"f5<_,_,_>();"," +#20013=@"loc,{#10000},6,1,6,11" +locations_default(#20013,#10000,6,1,6,11) +hasLocation(#20012,#20013) +#20014=* +lines(#20014,#20001,"f5<_,_,_>();"," ") -hasLocation(#20075,#20053) -#20076=* -lines(#20076,#20001,"f6<"," +#20015=@"loc,{#10000},7,1,7,12" +locations_default(#20015,#10000,7,1,7,12) +hasLocation(#20014,#20015) +#20016=* +lines(#20016,#20001,"f6<"," ") -#20077=@"loc,{#10000},8,1,8,3" -locations_default(#20077,#10000,8,1,8,3) -hasLocation(#20076,#20077) -#20078=* -lines(#20078,#20001," |T7"," +#20017=@"loc,{#10000},8,1,8,3" +locations_default(#20017,#10000,8,1,8,3) +hasLocation(#20016,#20017) +#20018=* +lines(#20018,#20001," |T7"," ") -#20079=@"loc,{#10000},9,1,9,4" -locations_default(#20079,#10000,9,1,9,4) -hasLocation(#20078,#20079) +#20019=@"loc,{#10000},9,1,9,4" +locations_default(#20019,#10000,9,1,9,4) +hasLocation(#20018,#20019) indentation(#10000,9," ",1) -#20080=* -lines(#20080,#20001," |T8"," +#20020=* +lines(#20020,#20001," |T8"," ") -#20081=@"loc,{#10000},10,1,10,4" -locations_default(#20081,#10000,10,1,10,4) -hasLocation(#20080,#20081) +#20021=@"loc,{#10000},10,1,10,4" +locations_default(#20021,#10000,10,1,10,4) +hasLocation(#20020,#20021) indentation(#10000,10," ",1) -#20082=* -lines(#20082,#20001," |T9"," +#20022=* +lines(#20022,#20001," |T9"," ") -#20083=@"loc,{#10000},11,1,11,4" -locations_default(#20083,#10000,11,1,11,4) -hasLocation(#20082,#20083) +#20023=@"loc,{#10000},11,1,11,4" +locations_default(#20023,#10000,11,1,11,4) +hasLocation(#20022,#20023) indentation(#10000,11," ",1) -#20084=* -lines(#20084,#20001," >();","") -#20085=@"loc,{#10000},12,1,12,5" -locations_default(#20085,#10000,12,1,12,5) -hasLocation(#20084,#20085) +#20024=* +lines(#20024,#20001," >();","") +#20025=@"loc,{#10000},12,1,12,5" +locations_default(#20025,#10000,12,1,12,5) +hasLocation(#20024,#20025) indentation(#10000,12," ",1) numlines(#20001,12,12,0) +#20026=* +tokeninfo(#20026,7,#20001,0,"new") +#20027=@"loc,{#10000},1,1,1,3" +locations_default(#20027,#10000,1,1,1,3) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,6,#20001,1,"K1") +#20029=@"loc,{#10000},1,5,1,6" +locations_default(#20029,#10000,1,5,1,6) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,2,"<") +#20031=@"loc,{#10000},1,7,1,7" +locations_default(#20031,#10000,1,7,1,7) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,6,#20001,3,"T1") +#20033=@"loc,{#10000},1,8,1,9" +locations_default(#20033,#10000,1,8,1,9) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,4,">") +#20035=@"loc,{#10000},1,10,1,10" +locations_default(#20035,#10000,1,10,1,10) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,5,"(") +#20037=@"loc,{#10000},1,11,1,11" +locations_default(#20037,#10000,1,11,1,11) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,8,#20001,6,")") +#20039=@"loc,{#10000},1,12,1,12" +locations_default(#20039,#10000,1,12,1,12) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,7,";") +#20041=@"loc,{#10000},1,13,1,13" +locations_default(#20041,#10000,1,13,1,13) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,6,#20001,8,"f1") +#20043=@"loc,{#10000},2,1,2,2" +locations_default(#20043,#10000,2,1,2,2) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,9,"<") +#20045=@"loc,{#10000},2,3,2,3" +locations_default(#20045,#10000,2,3,2,3) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,6,#20001,10,"T2") +#20047=@"loc,{#10000},2,4,2,5" +locations_default(#20047,#10000,2,4,2,5) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,8,#20001,11,">") +#20049=@"loc,{#10000},2,6,2,6" +locations_default(#20049,#10000,2,6,2,6) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,12,"(") +#20051=@"loc,{#10000},2,7,2,7" +locations_default(#20051,#10000,2,7,2,7) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,8,#20001,13,")") +#20053=@"loc,{#10000},2,8,2,8" +locations_default(#20053,#10000,2,8,2,8) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,8,#20001,14,";") +#20055=@"loc,{#10000},2,9,2,9" +locations_default(#20055,#10000,2,9,2,9) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,7,#20001,15,"const") +#20057=@"loc,{#10000},3,1,3,5" +locations_default(#20057,#10000,3,1,3,5) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,6,#20001,16,"f2") +#20059=@"loc,{#10000},3,7,3,8" +locations_default(#20059,#10000,3,7,3,8) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,8,#20001,17,"=") +#20061=@"loc,{#10000},3,10,3,10" +locations_default(#20061,#10000,3,10,3,10) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,7,#20001,18,"function") +#20063=@"loc,{#10000},3,12,3,19" +locations_default(#20063,#10000,3,12,3,19) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,8,#20001,19,"*") +#20065=@"loc,{#10000},3,20,3,20" +locations_default(#20065,#10000,3,20,3,20) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,8,#20001,20,"(") +#20067=@"loc,{#10000},3,21,3,21" +locations_default(#20067,#10000,3,21,3,21) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,8,#20001,21,")") +#20069=@"loc,{#10000},3,22,3,22" +locations_default(#20069,#10000,3,22,3,22) +hasLocation(#20068,#20069) +#20070=* +tokeninfo(#20070,8,#20001,22,":") +#20071=@"loc,{#10000},3,23,3,23" +locations_default(#20071,#10000,3,23,3,23) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,6,#20001,23,"T3") +#20073=@"loc,{#10000},3,25,3,26" +locations_default(#20073,#10000,3,25,3,26) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,8,#20001,24,"<") +#20075=@"loc,{#10000},3,27,3,27" +locations_default(#20075,#10000,3,27,3,27) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,6,#20001,25,"T4") +#20077=@"loc,{#10000},3,28,3,29" +locations_default(#20077,#10000,3,28,3,29) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,8,#20001,26,">") +#20079=@"loc,{#10000},3,30,3,30" +locations_default(#20079,#10000,3,30,3,30) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,8,#20001,27,"{") +#20081=@"loc,{#10000},3,32,3,32" +locations_default(#20081,#10000,3,32,3,32) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,7,#20001,28,"yield") +#20083=@"loc,{#10000},4,3,4,7" +locations_default(#20083,#10000,4,3,4,7) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,8,#20001,29,"*") +#20085=@"loc,{#10000},4,8,4,8" +locations_default(#20085,#10000,4,8,4,8) +hasLocation(#20084,#20085) #20086=* -tokeninfo(#20086,7,#20001,0,"new") -#20087=@"loc,{#10000},1,1,1,3" -locations_default(#20087,#10000,1,1,1,3) +tokeninfo(#20086,6,#20001,30,"f3") +#20087=@"loc,{#10000},4,10,4,11" +locations_default(#20087,#10000,4,10,4,11) hasLocation(#20086,#20087) #20088=* -tokeninfo(#20088,6,#20001,1,"K1") -hasLocation(#20088,#20009) -#20089=* -tokeninfo(#20089,8,#20001,2,"<") -#20090=@"loc,{#10000},1,7,1,7" -locations_default(#20090,#10000,1,7,1,7) -hasLocation(#20089,#20090) -#20091=* -tokeninfo(#20091,6,#20001,3,"T1") -#20092=@"loc,{#10000},1,8,1,9" -locations_default(#20092,#10000,1,8,1,9) -hasLocation(#20091,#20092) -#20093=* -tokeninfo(#20093,8,#20001,4,">") -#20094=@"loc,{#10000},1,10,1,10" -locations_default(#20094,#10000,1,10,1,10) -hasLocation(#20093,#20094) -#20095=* -tokeninfo(#20095,8,#20001,5,"(") -#20096=@"loc,{#10000},1,11,1,11" -locations_default(#20096,#10000,1,11,1,11) -hasLocation(#20095,#20096) -#20097=* -tokeninfo(#20097,8,#20001,6,")") -#20098=@"loc,{#10000},1,12,1,12" -locations_default(#20098,#10000,1,12,1,12) -hasLocation(#20097,#20098) -#20099=* -tokeninfo(#20099,8,#20001,7,";") -#20100=@"loc,{#10000},1,13,1,13" -locations_default(#20100,#10000,1,13,1,13) -hasLocation(#20099,#20100) -#20101=* -tokeninfo(#20101,6,#20001,8,"f1") -hasLocation(#20101,#20016) +tokeninfo(#20088,8,#20001,31,"<") +#20089=@"loc,{#10000},4,12,4,12" +locations_default(#20089,#10000,4,12,4,12) +hasLocation(#20088,#20089) +#20090=* +tokeninfo(#20090,6,#20001,32,"T5") +#20091=@"loc,{#10000},4,13,4,14" +locations_default(#20091,#10000,4,13,4,14) +hasLocation(#20090,#20091) +#20092=* +tokeninfo(#20092,8,#20001,33,">") +#20093=@"loc,{#10000},4,15,4,15" +locations_default(#20093,#10000,4,15,4,15) +hasLocation(#20092,#20093) +#20094=* +tokeninfo(#20094,8,#20001,34,"(") +#20095=@"loc,{#10000},4,16,4,16" +locations_default(#20095,#10000,4,16,4,16) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,6,#20001,35,"x") +#20097=@"loc,{#10000},4,17,4,17" +locations_default(#20097,#10000,4,17,4,17) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,8,#20001,36,")") +#20099=@"loc,{#10000},4,18,4,18" +locations_default(#20099,#10000,4,18,4,18) +hasLocation(#20098,#20099) +#20100=* +tokeninfo(#20100,8,#20001,37,";") +#20101=@"loc,{#10000},4,19,4,19" +locations_default(#20101,#10000,4,19,4,19) +hasLocation(#20100,#20101) #20102=* -tokeninfo(#20102,8,#20001,9,"<") -#20103=@"loc,{#10000},2,3,2,3" -locations_default(#20103,#10000,2,3,2,3) -hasLocation(#20102,#20103) -#20104=* -tokeninfo(#20104,6,#20001,10,"T2") -#20105=@"loc,{#10000},2,4,2,5" -locations_default(#20105,#10000,2,4,2,5) -hasLocation(#20104,#20105) -#20106=* -tokeninfo(#20106,8,#20001,11,">") -#20107=@"loc,{#10000},2,6,2,6" -locations_default(#20107,#10000,2,6,2,6) -hasLocation(#20106,#20107) -#20108=* -tokeninfo(#20108,8,#20001,12,"(") -#20109=@"loc,{#10000},2,7,2,7" -locations_default(#20109,#10000,2,7,2,7) -hasLocation(#20108,#20109) -#20110=* -tokeninfo(#20110,8,#20001,13,")") -#20111=@"loc,{#10000},2,8,2,8" -locations_default(#20111,#10000,2,8,2,8) -hasLocation(#20110,#20111) -#20112=* -tokeninfo(#20112,8,#20001,14,";") -#20113=@"loc,{#10000},2,9,2,9" -locations_default(#20113,#10000,2,9,2,9) -hasLocation(#20112,#20113) -#20114=* -tokeninfo(#20114,7,#20001,15,"const") -#20115=@"loc,{#10000},3,1,3,5" -locations_default(#20115,#10000,3,1,3,5) -hasLocation(#20114,#20115) -#20116=* -tokeninfo(#20116,6,#20001,16,"f2") -hasLocation(#20116,#20023) +tokeninfo(#20102,8,#20001,38,"}") +hasLocation(#20102,#20011) +#20103=* +tokeninfo(#20103,6,#20001,39,"f4") +#20104=@"loc,{#10000},6,1,6,2" +locations_default(#20104,#10000,6,1,6,2) +hasLocation(#20103,#20104) +#20105=* +tokeninfo(#20105,8,#20001,40,"<") +#20106=@"loc,{#10000},6,3,6,3" +locations_default(#20106,#10000,6,3,6,3) +hasLocation(#20105,#20106) +#20107=* +tokeninfo(#20107,6,#20001,41,"T6") +#20108=@"loc,{#10000},6,4,6,5" +locations_default(#20108,#10000,6,4,6,5) +hasLocation(#20107,#20108) +#20109=* +tokeninfo(#20109,8,#20001,42,">") +#20110=@"loc,{#10000},6,6,6,6" +locations_default(#20110,#10000,6,6,6,6) +hasLocation(#20109,#20110) +#20111=* +tokeninfo(#20111,8,#20001,43,"(") +#20112=@"loc,{#10000},6,7,6,7" +locations_default(#20112,#10000,6,7,6,7) +hasLocation(#20111,#20112) +#20113=* +tokeninfo(#20113,6,#20001,44,"v1") +#20114=@"loc,{#10000},6,8,6,9" +locations_default(#20114,#10000,6,8,6,9) +hasLocation(#20113,#20114) +#20115=* +tokeninfo(#20115,8,#20001,45,")") +#20116=@"loc,{#10000},6,10,6,10" +locations_default(#20116,#10000,6,10,6,10) +hasLocation(#20115,#20116) #20117=* -tokeninfo(#20117,8,#20001,17,"=") -#20118=@"loc,{#10000},3,10,3,10" -locations_default(#20118,#10000,3,10,3,10) +tokeninfo(#20117,8,#20001,46,";") +#20118=@"loc,{#10000},6,11,6,11" +locations_default(#20118,#10000,6,11,6,11) hasLocation(#20117,#20118) #20119=* -tokeninfo(#20119,7,#20001,18,"function") -#20120=@"loc,{#10000},3,12,3,19" -locations_default(#20120,#10000,3,12,3,19) +tokeninfo(#20119,6,#20001,47,"f5") +#20120=@"loc,{#10000},7,1,7,2" +locations_default(#20120,#10000,7,1,7,2) hasLocation(#20119,#20120) #20121=* -tokeninfo(#20121,8,#20001,19,"*") -#20122=@"loc,{#10000},3,20,3,20" -locations_default(#20122,#10000,3,20,3,20) +tokeninfo(#20121,8,#20001,48,"<") +#20122=@"loc,{#10000},7,3,7,3" +locations_default(#20122,#10000,7,3,7,3) hasLocation(#20121,#20122) #20123=* -tokeninfo(#20123,8,#20001,20,"(") -#20124=@"loc,{#10000},3,21,3,21" -locations_default(#20124,#10000,3,21,3,21) +tokeninfo(#20123,6,#20001,49,"_") +#20124=@"loc,{#10000},7,4,7,4" +locations_default(#20124,#10000,7,4,7,4) hasLocation(#20123,#20124) #20125=* -tokeninfo(#20125,8,#20001,21,")") -#20126=@"loc,{#10000},3,22,3,22" -locations_default(#20126,#10000,3,22,3,22) +tokeninfo(#20125,8,#20001,50,",") +#20126=@"loc,{#10000},7,5,7,5" +locations_default(#20126,#10000,7,5,7,5) hasLocation(#20125,#20126) #20127=* -tokeninfo(#20127,8,#20001,22,":") -#20128=@"loc,{#10000},3,23,3,23" -locations_default(#20128,#10000,3,23,3,23) +tokeninfo(#20127,6,#20001,51,"_") +#20128=@"loc,{#10000},7,6,7,6" +locations_default(#20128,#10000,7,6,7,6) hasLocation(#20127,#20128) #20129=* -tokeninfo(#20129,6,#20001,23,"T3") -#20130=@"loc,{#10000},3,25,3,26" -locations_default(#20130,#10000,3,25,3,26) +tokeninfo(#20129,8,#20001,52,",") +#20130=@"loc,{#10000},7,7,7,7" +locations_default(#20130,#10000,7,7,7,7) hasLocation(#20129,#20130) #20131=* -tokeninfo(#20131,8,#20001,24,"<") -#20132=@"loc,{#10000},3,27,3,27" -locations_default(#20132,#10000,3,27,3,27) +tokeninfo(#20131,6,#20001,53,"_") +#20132=@"loc,{#10000},7,8,7,8" +locations_default(#20132,#10000,7,8,7,8) hasLocation(#20131,#20132) #20133=* -tokeninfo(#20133,6,#20001,25,"T4") -#20134=@"loc,{#10000},3,28,3,29" -locations_default(#20134,#10000,3,28,3,29) +tokeninfo(#20133,8,#20001,54,">") +#20134=@"loc,{#10000},7,9,7,9" +locations_default(#20134,#10000,7,9,7,9) hasLocation(#20133,#20134) #20135=* -tokeninfo(#20135,8,#20001,26,">") -#20136=@"loc,{#10000},3,30,3,30" -locations_default(#20136,#10000,3,30,3,30) +tokeninfo(#20135,8,#20001,55,"(") +#20136=@"loc,{#10000},7,10,7,10" +locations_default(#20136,#10000,7,10,7,10) hasLocation(#20135,#20136) #20137=* -tokeninfo(#20137,8,#20001,27,"{") -#20138=@"loc,{#10000},3,32,3,32" -locations_default(#20138,#10000,3,32,3,32) +tokeninfo(#20137,8,#20001,56,")") +#20138=@"loc,{#10000},7,11,7,11" +locations_default(#20138,#10000,7,11,7,11) hasLocation(#20137,#20138) #20139=* -tokeninfo(#20139,7,#20001,28,"yield") -#20140=@"loc,{#10000},4,3,4,7" -locations_default(#20140,#10000,4,3,4,7) +tokeninfo(#20139,8,#20001,57,";") +#20140=@"loc,{#10000},7,12,7,12" +locations_default(#20140,#10000,7,12,7,12) hasLocation(#20139,#20140) #20141=* -tokeninfo(#20141,8,#20001,29,"*") -#20142=@"loc,{#10000},4,8,4,8" -locations_default(#20142,#10000,4,8,4,8) +tokeninfo(#20141,6,#20001,58,"f6") +#20142=@"loc,{#10000},8,1,8,2" +locations_default(#20142,#10000,8,1,8,2) hasLocation(#20141,#20142) #20143=* -tokeninfo(#20143,6,#20001,30,"f3") -hasLocation(#20143,#20037) -#20144=* -tokeninfo(#20144,8,#20001,31,"<") -#20145=@"loc,{#10000},4,12,4,12" -locations_default(#20145,#10000,4,12,4,12) -hasLocation(#20144,#20145) -#20146=* -tokeninfo(#20146,6,#20001,32,"T5") -#20147=@"loc,{#10000},4,13,4,14" -locations_default(#20147,#10000,4,13,4,14) -hasLocation(#20146,#20147) -#20148=* -tokeninfo(#20148,8,#20001,33,">") -#20149=@"loc,{#10000},4,15,4,15" -locations_default(#20149,#10000,4,15,4,15) -hasLocation(#20148,#20149) -#20150=* -tokeninfo(#20150,8,#20001,34,"(") -#20151=@"loc,{#10000},4,16,4,16" -locations_default(#20151,#10000,4,16,4,16) -hasLocation(#20150,#20151) -#20152=* -tokeninfo(#20152,6,#20001,35,"x") -hasLocation(#20152,#20040) +tokeninfo(#20143,8,#20001,59,"<") +#20144=@"loc,{#10000},8,3,8,3" +locations_default(#20144,#10000,8,3,8,3) +hasLocation(#20143,#20144) +#20145=* +tokeninfo(#20145,8,#20001,60,"|") +#20146=@"loc,{#10000},9,2,9,2" +locations_default(#20146,#10000,9,2,9,2) +hasLocation(#20145,#20146) +#20147=* +tokeninfo(#20147,6,#20001,61,"T7") +#20148=@"loc,{#10000},9,3,9,4" +locations_default(#20148,#10000,9,3,9,4) +hasLocation(#20147,#20148) +#20149=* +tokeninfo(#20149,8,#20001,62,"|") +#20150=@"loc,{#10000},10,2,10,2" +locations_default(#20150,#10000,10,2,10,2) +hasLocation(#20149,#20150) +#20151=* +tokeninfo(#20151,6,#20001,63,"T8") +#20152=@"loc,{#10000},10,3,10,4" +locations_default(#20152,#10000,10,3,10,4) +hasLocation(#20151,#20152) #20153=* -tokeninfo(#20153,8,#20001,36,")") -#20154=@"loc,{#10000},4,18,4,18" -locations_default(#20154,#10000,4,18,4,18) +tokeninfo(#20153,8,#20001,64,"|") +#20154=@"loc,{#10000},11,2,11,2" +locations_default(#20154,#10000,11,2,11,2) hasLocation(#20153,#20154) #20155=* -tokeninfo(#20155,8,#20001,37,";") -#20156=@"loc,{#10000},4,19,4,19" -locations_default(#20156,#10000,4,19,4,19) +tokeninfo(#20155,6,#20001,65,"T9") +#20156=@"loc,{#10000},11,3,11,4" +locations_default(#20156,#10000,11,3,11,4) hasLocation(#20155,#20156) #20157=* -tokeninfo(#20157,8,#20001,38,"}") -hasLocation(#20157,#20073) -#20158=* -tokeninfo(#20158,6,#20001,39,"f4") -hasLocation(#20158,#20047) +tokeninfo(#20157,8,#20001,66,">") +#20158=@"loc,{#10000},12,2,12,2" +locations_default(#20158,#10000,12,2,12,2) +hasLocation(#20157,#20158) #20159=* -tokeninfo(#20159,8,#20001,40,"<") -#20160=@"loc,{#10000},6,3,6,3" -locations_default(#20160,#10000,6,3,6,3) +tokeninfo(#20159,8,#20001,67,"(") +#20160=@"loc,{#10000},12,3,12,3" +locations_default(#20160,#10000,12,3,12,3) hasLocation(#20159,#20160) #20161=* -tokeninfo(#20161,6,#20001,41,"T6") -#20162=@"loc,{#10000},6,4,6,5" -locations_default(#20162,#10000,6,4,6,5) +tokeninfo(#20161,8,#20001,68,")") +#20162=@"loc,{#10000},12,4,12,4" +locations_default(#20162,#10000,12,4,12,4) hasLocation(#20161,#20162) #20163=* -tokeninfo(#20163,8,#20001,42,">") -#20164=@"loc,{#10000},6,6,6,6" -locations_default(#20164,#10000,6,6,6,6) +tokeninfo(#20163,8,#20001,69,";") +#20164=@"loc,{#10000},12,5,12,5" +locations_default(#20164,#10000,12,5,12,5) hasLocation(#20163,#20164) #20165=* -tokeninfo(#20165,8,#20001,43,"(") -#20166=@"loc,{#10000},6,7,6,7" -locations_default(#20166,#10000,6,7,6,7) +tokeninfo(#20165,0,#20001,70,"") +#20166=@"loc,{#10000},12,6,12,5" +locations_default(#20166,#10000,12,6,12,5) hasLocation(#20165,#20166) -#20167=* -tokeninfo(#20167,6,#20001,44,"v1") -hasLocation(#20167,#20050) -#20168=* -tokeninfo(#20168,8,#20001,45,")") -#20169=@"loc,{#10000},6,10,6,10" -locations_default(#20169,#10000,6,10,6,10) -hasLocation(#20168,#20169) +toplevels(#20001,0) +#20167=@"loc,{#10000},1,1,12,5" +locations_default(#20167,#10000,1,1,12,5) +hasLocation(#20001,#20167) +#20168=@"var;{f2};{#20000}" +variables(#20168,"f2",#20000) +#20169=* +stmts(#20169,2,#20001,0,"new K1();") +hasLocation(#20169,#20003) +stmtContainers(#20169,#20001) #20170=* -tokeninfo(#20170,8,#20001,46,";") -#20171=@"loc,{#10000},6,11,6,11" -locations_default(#20171,#10000,6,11,6,11) +exprs(#20170,12,#20169,0,"new K1()") +#20171=@"loc,{#10000},1,1,1,12" +locations_default(#20171,#10000,1,1,1,12) hasLocation(#20170,#20171) +enclosingStmt(#20170,#20169) +exprContainers(#20170,#20001) #20172=* -tokeninfo(#20172,6,#20001,47,"f5") -hasLocation(#20172,#20057) -#20173=* -tokeninfo(#20173,8,#20001,48,"<") -#20174=@"loc,{#10000},7,3,7,3" -locations_default(#20174,#10000,7,3,7,3) -hasLocation(#20173,#20174) +exprs(#20172,79,#20170,-1,"K1") +hasLocation(#20172,#20029) +enclosingStmt(#20172,#20169) +exprContainers(#20172,#20001) +literals("K1","K1",#20172) +#20173=@"var;{K1};{#20000}" +variables(#20173,"K1",#20000) +bind(#20172,#20173) +#20174=* +stmts(#20174,2,#20001,1,"f1();") +hasLocation(#20174,#20005) +stmtContainers(#20174,#20001) #20175=* -tokeninfo(#20175,6,#20001,49,"_") -#20176=@"loc,{#10000},7,4,7,4" -locations_default(#20176,#10000,7,4,7,4) +exprs(#20175,13,#20174,0,"f1()") +#20176=@"loc,{#10000},2,1,2,8" +locations_default(#20176,#10000,2,1,2,8) hasLocation(#20175,#20176) +enclosingStmt(#20175,#20174) +exprContainers(#20175,#20001) #20177=* -tokeninfo(#20177,8,#20001,50,",") -#20178=@"loc,{#10000},7,5,7,5" -locations_default(#20178,#10000,7,5,7,5) -hasLocation(#20177,#20178) +exprs(#20177,79,#20175,-1,"f1") +hasLocation(#20177,#20043) +enclosingStmt(#20177,#20174) +exprContainers(#20177,#20001) +literals("f1","f1",#20177) +#20178=@"var;{f1};{#20000}" +variables(#20178,"f1",#20000) +bind(#20177,#20178) #20179=* -tokeninfo(#20179,6,#20001,51,"_") -#20180=@"loc,{#10000},7,6,7,6" -locations_default(#20180,#10000,7,6,7,6) +stmts(#20179,22,#20001,2,"const f ... >(x);\n}") +#20180=@"loc,{#10000},3,1,5,1" +locations_default(#20180,#10000,3,1,5,1) hasLocation(#20179,#20180) +stmtContainers(#20179,#20001) #20181=* -tokeninfo(#20181,8,#20001,52,",") -#20182=@"loc,{#10000},7,7,7,7" -locations_default(#20182,#10000,7,7,7,7) +exprs(#20181,64,#20179,0,"f2 = fu ... >(x);\n}") +#20182=@"loc,{#10000},3,7,5,1" +locations_default(#20182,#10000,3,7,5,1) hasLocation(#20181,#20182) +enclosingStmt(#20181,#20179) +exprContainers(#20181,#20001) #20183=* -tokeninfo(#20183,6,#20001,53,"_") -#20184=@"loc,{#10000},7,8,7,8" -locations_default(#20184,#10000,7,8,7,8) -hasLocation(#20183,#20184) -#20185=* -tokeninfo(#20185,8,#20001,54,">") -#20186=@"loc,{#10000},7,9,7,9" -locations_default(#20186,#10000,7,9,7,9) -hasLocation(#20185,#20186) -#20187=* -tokeninfo(#20187,8,#20001,55,"(") -#20188=@"loc,{#10000},7,10,7,10" -locations_default(#20188,#10000,7,10,7,10) -hasLocation(#20187,#20188) -#20189=* -tokeninfo(#20189,8,#20001,56,")") -#20190=@"loc,{#10000},7,11,7,11" -locations_default(#20190,#10000,7,11,7,11) -hasLocation(#20189,#20190) -#20191=* -tokeninfo(#20191,8,#20001,57,";") -#20192=@"loc,{#10000},7,12,7,12" -locations_default(#20192,#10000,7,12,7,12) -hasLocation(#20191,#20192) -#20193=* -tokeninfo(#20193,6,#20001,58,"f6") -hasLocation(#20193,#20064) +exprs(#20183,78,#20181,0,"f2") +hasLocation(#20183,#20059) +enclosingStmt(#20183,#20179) +exprContainers(#20183,#20001) +literals("f2","f2",#20183) +decl(#20183,#20168) +#20184=* +exprs(#20184,9,#20181,1,"functio ... >(x);\n}") +#20185=@"loc,{#10000},3,12,5,1" +locations_default(#20185,#10000,3,12,5,1) +hasLocation(#20184,#20185) +enclosingStmt(#20184,#20179) +exprContainers(#20184,#20001) +#20186=* +scopes(#20186,1) +scopenodes(#20184,#20186) +scopenesting(#20186,#20000) +#20187=@"var;{arguments};{#20186}" +variables(#20187,"arguments",#20186) +isArgumentsObject(#20187) +isGenerator(#20184) +#20188=* +stmts(#20188,1,#20184,-2,"{\n yie ... >(x);\n}") +#20189=@"loc,{#10000},3,32,5,1" +locations_default(#20189,#10000,3,32,5,1) +hasLocation(#20188,#20189) +stmtContainers(#20188,#20184) +#20190=* +stmts(#20190,2,#20188,0,"yield* f3(x);") +#20191=@"loc,{#10000},4,3,4,19" +locations_default(#20191,#10000,4,3,4,19) +hasLocation(#20190,#20191) +stmtContainers(#20190,#20184) +#20192=* +exprs(#20192,69,#20190,0,"yield* f3(x)") +#20193=@"loc,{#10000},4,3,4,18" +locations_default(#20193,#10000,4,3,4,18) +hasLocation(#20192,#20193) +enclosingStmt(#20192,#20190) +exprContainers(#20192,#20184) #20194=* -tokeninfo(#20194,8,#20001,59,"<") -#20195=@"loc,{#10000},8,3,8,3" -locations_default(#20195,#10000,8,3,8,3) +exprs(#20194,13,#20192,0,"f3(x)") +#20195=@"loc,{#10000},4,10,4,18" +locations_default(#20195,#10000,4,10,4,18) hasLocation(#20194,#20195) +enclosingStmt(#20194,#20190) +exprContainers(#20194,#20184) #20196=* -tokeninfo(#20196,8,#20001,60,"|") -#20197=@"loc,{#10000},9,2,9,2" -locations_default(#20197,#10000,9,2,9,2) -hasLocation(#20196,#20197) +exprs(#20196,79,#20194,-1,"f3") +hasLocation(#20196,#20087) +enclosingStmt(#20196,#20190) +exprContainers(#20196,#20184) +literals("f3","f3",#20196) +#20197=@"var;{f3};{#20000}" +variables(#20197,"f3",#20000) +bind(#20196,#20197) #20198=* -tokeninfo(#20198,6,#20001,61,"T7") -#20199=@"loc,{#10000},9,3,9,4" -locations_default(#20199,#10000,9,3,9,4) -hasLocation(#20198,#20199) +exprs(#20198,79,#20194,0,"x") +hasLocation(#20198,#20097) +enclosingStmt(#20198,#20190) +exprContainers(#20198,#20184) +literals("x","x",#20198) +#20199=@"var;{x};{#20000}" +variables(#20199,"x",#20000) +bind(#20198,#20199) +isDelegating(#20192) #20200=* -tokeninfo(#20200,8,#20001,62,"|") -#20201=@"loc,{#10000},10,2,10,2" -locations_default(#20201,#10000,10,2,10,2) -hasLocation(#20200,#20201) -#20202=* -tokeninfo(#20202,6,#20001,63,"T8") -#20203=@"loc,{#10000},10,3,10,4" -locations_default(#20203,#10000,10,3,10,4) -hasLocation(#20202,#20203) -#20204=* -tokeninfo(#20204,8,#20001,64,"|") -#20205=@"loc,{#10000},11,2,11,2" -locations_default(#20205,#10000,11,2,11,2) -hasLocation(#20204,#20205) -#20206=* -tokeninfo(#20206,6,#20001,65,"T9") -#20207=@"loc,{#10000},11,3,11,4" -locations_default(#20207,#10000,11,3,11,4) -hasLocation(#20206,#20207) +stmts(#20200,2,#20001,3,"f4(v1);") +hasLocation(#20200,#20013) +stmtContainers(#20200,#20001) +#20201=* +exprs(#20201,13,#20200,0,"f4(v1)") +#20202=@"loc,{#10000},6,1,6,10" +locations_default(#20202,#10000,6,1,6,10) +hasLocation(#20201,#20202) +enclosingStmt(#20201,#20200) +exprContainers(#20201,#20001) +#20203=* +exprs(#20203,79,#20201,-1,"f4") +hasLocation(#20203,#20104) +enclosingStmt(#20203,#20200) +exprContainers(#20203,#20001) +literals("f4","f4",#20203) +#20204=@"var;{f4};{#20000}" +variables(#20204,"f4",#20000) +bind(#20203,#20204) +#20205=* +exprs(#20205,79,#20201,0,"v1") +hasLocation(#20205,#20114) +enclosingStmt(#20205,#20200) +exprContainers(#20205,#20001) +literals("v1","v1",#20205) +#20206=@"var;{v1};{#20000}" +variables(#20206,"v1",#20000) +bind(#20205,#20206) +#20207=* +stmts(#20207,2,#20001,4,"f5<_,_,_>();") +hasLocation(#20207,#20015) +stmtContainers(#20207,#20001) #20208=* -tokeninfo(#20208,8,#20001,66,">") -#20209=@"loc,{#10000},12,2,12,2" -locations_default(#20209,#10000,12,2,12,2) +exprs(#20208,13,#20207,0,"f5<_,_,_>()") +#20209=@"loc,{#10000},7,1,7,11" +locations_default(#20209,#10000,7,1,7,11) hasLocation(#20208,#20209) +enclosingStmt(#20208,#20207) +exprContainers(#20208,#20001) #20210=* -tokeninfo(#20210,8,#20001,67,"(") -#20211=@"loc,{#10000},12,3,12,3" -locations_default(#20211,#10000,12,3,12,3) -hasLocation(#20210,#20211) +exprs(#20210,79,#20208,-1,"f5") +hasLocation(#20210,#20120) +enclosingStmt(#20210,#20207) +exprContainers(#20210,#20001) +literals("f5","f5",#20210) +#20211=@"var;{f5};{#20000}" +variables(#20211,"f5",#20000) +bind(#20210,#20211) #20212=* -tokeninfo(#20212,8,#20001,68,")") -#20213=@"loc,{#10000},12,4,12,4" -locations_default(#20213,#10000,12,4,12,4) +stmts(#20212,2,#20001,5,"f6<\n\t|T ... 9\n\t>();") +#20213=@"loc,{#10000},8,1,12,5" +locations_default(#20213,#10000,8,1,12,5) hasLocation(#20212,#20213) +stmtContainers(#20212,#20001) #20214=* -tokeninfo(#20214,8,#20001,69,";") -#20215=@"loc,{#10000},12,5,12,5" -locations_default(#20215,#10000,12,5,12,5) +exprs(#20214,13,#20212,0,"f6<\n\t|T ... T9\n\t>()") +#20215=@"loc,{#10000},8,1,12,4" +locations_default(#20215,#10000,8,1,12,4) hasLocation(#20214,#20215) +enclosingStmt(#20214,#20212) +exprContainers(#20214,#20001) #20216=* -tokeninfo(#20216,0,#20001,70,"") -#20217=@"loc,{#10000},12,6,12,5" -locations_default(#20217,#10000,12,6,12,5) -hasLocation(#20216,#20217) +exprs(#20216,79,#20214,-1,"f6") +hasLocation(#20216,#20142) +enclosingStmt(#20216,#20212) +exprContainers(#20216,#20001) +literals("f6","f6",#20216) +#20217=@"var;{f6};{#20000}" +variables(#20217,"f6",#20000) +bind(#20216,#20217) #20218=* entry_cfg_node(#20218,#20001) #20219=@"loc,{#10000},1,1,1,0" @@ -644,44 +643,44 @@ locations_default(#20219,#10000,1,1,1,0) hasLocation(#20218,#20219) #20220=* exit_cfg_node(#20220,#20001) -hasLocation(#20220,#20217) -successor(#20059,#20063) -successor(#20063,#20061) -successor(#20061,#20220) -successor(#20052,#20056) -successor(#20056,#20054) -successor(#20054,#20059) -successor(#20042,#20046) -successor(#20049,#20044) -successor(#20046,#20049) -successor(#20044,#20052) -successor(#20018,#20022) -successor(#20024,#20020) +hasLocation(#20220,#20166) +successor(#20212,#20216) +successor(#20216,#20214) +successor(#20214,#20220) +successor(#20207,#20210) +successor(#20210,#20208) +successor(#20208,#20212) +successor(#20200,#20203) +successor(#20205,#20201) +successor(#20203,#20205) +successor(#20201,#20207) +successor(#20179,#20183) +successor(#20184,#20181) #20221=* -entry_cfg_node(#20221,#20024) +entry_cfg_node(#20221,#20184) #20222=@"loc,{#10000},3,12,3,11" locations_default(#20222,#10000,3,12,3,11) hasLocation(#20221,#20222) #20223=* -exit_cfg_node(#20223,#20024) +exit_cfg_node(#20223,#20184) #20224=@"loc,{#10000},5,2,5,1" locations_default(#20224,#10000,5,2,5,1) hasLocation(#20223,#20224) -successor(#20028,#20030) -successor(#20030,#20036) -successor(#20039,#20034) -successor(#20036,#20039) -successor(#20034,#20032) -successor(#20032,#20223) -successor(#20221,#20028) -successor(#20022,#20024) -successor(#20020,#20042) -successor(#20011,#20015) -successor(#20015,#20013) -successor(#20013,#20018) -successor(#20004,#20008) -successor(#20008,#20006) -successor(#20006,#20011) -successor(#20218,#20004) +successor(#20188,#20190) +successor(#20190,#20196) +successor(#20198,#20194) +successor(#20196,#20198) +successor(#20194,#20192) +successor(#20192,#20223) +successor(#20221,#20188) +successor(#20183,#20184) +successor(#20181,#20200) +successor(#20174,#20177) +successor(#20177,#20175) +successor(#20175,#20179) +successor(#20169,#20172) +successor(#20172,#20170) +successor(#20170,#20174) +successor(#20218,#20169) numlines(#10000,12,12,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/explicitTypeParametersForArgumentlessConstructorCall.js.trap b/javascript/extractor/tests/flow/output/trap/explicitTypeParametersForArgumentlessConstructorCall.js.trap index f8cd63254da..6015be174c7 100644 --- a/javascript/extractor/tests/flow/output/trap/explicitTypeParametersForArgumentlessConstructorCall.js.trap +++ b/javascript/extractor/tests/flow/output/trap/explicitTypeParametersForArgumentlessConstructorCall.js.trap @@ -9,69 +9,69 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,1,11" -locations_default(#20002,#10000,1,1,1,11) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"new K1;") -hasLocation(#20003,#20002) -stmtContainers(#20003,#20001) +#20002=* +lines(#20002,#20001,"new K1;","") +#20003=@"loc,{#10000},1,1,1,11" +locations_default(#20003,#10000,1,1,1,11) +hasLocation(#20002,#20003) +numlines(#20001,1,1,0) #20004=* -exprs(#20004,12,#20003,0,"new K1") -#20005=@"loc,{#10000},1,1,1,10" -locations_default(#20005,#10000,1,1,1,10) +tokeninfo(#20004,7,#20001,0,"new") +#20005=@"loc,{#10000},1,1,1,3" +locations_default(#20005,#10000,1,1,1,3) hasLocation(#20004,#20005) -enclosingStmt(#20004,#20003) -exprContainers(#20004,#20001) #20006=* -exprs(#20006,79,#20004,-1,"K1") +tokeninfo(#20006,6,#20001,1,"K1") #20007=@"loc,{#10000},1,5,1,6" locations_default(#20007,#10000,1,5,1,6) hasLocation(#20006,#20007) -enclosingStmt(#20006,#20003) -exprContainers(#20006,#20001) -literals("K1","K1",#20006) -#20008=@"var;{K1};{#20000}" -variables(#20008,"K1",#20000) -bind(#20006,#20008) -#20009=* -lines(#20009,#20001,"new K1;","") -hasLocation(#20009,#20002) -numlines(#20001,1,1,0) +#20008=* +tokeninfo(#20008,8,#20001,2,"<") +#20009=@"loc,{#10000},1,7,1,7" +locations_default(#20009,#10000,1,7,1,7) +hasLocation(#20008,#20009) #20010=* -tokeninfo(#20010,7,#20001,0,"new") -#20011=@"loc,{#10000},1,1,1,3" -locations_default(#20011,#10000,1,1,1,3) +tokeninfo(#20010,6,#20001,3,"T1") +#20011=@"loc,{#10000},1,8,1,9" +locations_default(#20011,#10000,1,8,1,9) hasLocation(#20010,#20011) #20012=* -tokeninfo(#20012,6,#20001,1,"K1") -hasLocation(#20012,#20007) -#20013=* -tokeninfo(#20013,8,#20001,2,"<") -#20014=@"loc,{#10000},1,7,1,7" -locations_default(#20014,#10000,1,7,1,7) -hasLocation(#20013,#20014) -#20015=* -tokeninfo(#20015,6,#20001,3,"T1") -#20016=@"loc,{#10000},1,8,1,9" -locations_default(#20016,#10000,1,8,1,9) -hasLocation(#20015,#20016) -#20017=* -tokeninfo(#20017,8,#20001,4,">") -#20018=@"loc,{#10000},1,10,1,10" -locations_default(#20018,#10000,1,10,1,10) -hasLocation(#20017,#20018) +tokeninfo(#20012,8,#20001,4,">") +#20013=@"loc,{#10000},1,10,1,10" +locations_default(#20013,#10000,1,10,1,10) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,5,";") +#20015=@"loc,{#10000},1,11,1,11" +locations_default(#20015,#10000,1,11,1,11) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,0,#20001,6,"") +#20017=@"loc,{#10000},1,12,1,11" +locations_default(#20017,#10000,1,12,1,11) +hasLocation(#20016,#20017) +toplevels(#20001,0) +hasLocation(#20001,#20003) +#20018=* +stmts(#20018,2,#20001,0,"new K1;") +hasLocation(#20018,#20003) +stmtContainers(#20018,#20001) #20019=* -tokeninfo(#20019,8,#20001,5,";") -#20020=@"loc,{#10000},1,11,1,11" -locations_default(#20020,#10000,1,11,1,11) +exprs(#20019,12,#20018,0,"new K1") +#20020=@"loc,{#10000},1,1,1,10" +locations_default(#20020,#10000,1,1,1,10) hasLocation(#20019,#20020) +enclosingStmt(#20019,#20018) +exprContainers(#20019,#20001) #20021=* -tokeninfo(#20021,0,#20001,6,"") -#20022=@"loc,{#10000},1,12,1,11" -locations_default(#20022,#10000,1,12,1,11) -hasLocation(#20021,#20022) +exprs(#20021,79,#20019,-1,"K1") +hasLocation(#20021,#20007) +enclosingStmt(#20021,#20018) +exprContainers(#20021,#20001) +literals("K1","K1",#20021) +#20022=@"var;{K1};{#20000}" +variables(#20022,"K1",#20000) +bind(#20021,#20022) #20023=* entry_cfg_node(#20023,#20001) #20024=@"loc,{#10000},1,1,1,0" @@ -79,10 +79,10 @@ locations_default(#20024,#10000,1,1,1,0) hasLocation(#20023,#20024) #20025=* exit_cfg_node(#20025,#20001) -hasLocation(#20025,#20022) -successor(#20003,#20006) -successor(#20006,#20004) -successor(#20004,#20025) -successor(#20023,#20003) +hasLocation(#20025,#20017) +successor(#20018,#20021) +successor(#20021,#20019) +successor(#20019,#20025) +successor(#20023,#20018) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/export.js.trap b/javascript/extractor/tests/flow/output/trap/export.js.trap index 9166f710bf2..6e68301a275 100644 --- a/javascript/extractor/tests/flow/output/trap/export.js.trap +++ b/javascript/extractor/tests/flow/output/trap/export.js.trap @@ -9,257 +9,258 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,5,37" -locations_default(#20002,#10000,1,1,5,37) -hasLocation(#20001,#20002) -#20003=@"module;{#10000},1,1" -scopes(#20003,3) -scopenodes(#20001,#20003) -scopenesting(#20003,#20000) -isModule(#20001) +#20002=* +lines(#20002,#20001,"export { a } from ""m"";"," +") +#20003=@"loc,{#10000},1,1,1,22" +locations_default(#20003,#10000,1,1,1,22) +hasLocation(#20002,#20003) #20004=* -stmts(#20004,30,#20001,0,"export ... om ""m"";") -#20005=@"loc,{#10000},1,1,1,22" -locations_default(#20005,#10000,1,1,1,22) +lines(#20004,#20001,"export * from ""m"";"," +") +#20005=@"loc,{#10000},2,1,2,18" +locations_default(#20005,#10000,2,1,2,18) hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) #20006=* -exprs(#20006,4,#20004,-2,"""m""") -#20007=@"loc,{#10000},1,19,1,21" -locations_default(#20007,#10000,1,19,1,21) +lines(#20006,#20001,"export type { b } from ""m"";"," +") +#20007=@"loc,{#10000},3,1,3,27" +locations_default(#20007,#10000,3,1,3,27) hasLocation(#20006,#20007) -enclosingStmt(#20006,#20004) -exprContainers(#20006,#20001) -literals("m","""m""",#20006) #20008=* -exprs(#20008,86,#20004,0,"a") -#20009=@"loc,{#10000},1,10,1,10" -locations_default(#20009,#10000,1,10,1,10) +lines(#20008,#20001,"export type * from ""m"";"," +") +#20009=@"loc,{#10000},4,1,4,23" +locations_default(#20009,#10000,4,1,4,23) hasLocation(#20008,#20009) -enclosingStmt(#20008,#20004) -exprContainers(#20008,#20001) #20010=* -exprs(#20010,0,#20008,0,"a") -hasLocation(#20010,#20009) -enclosingStmt(#20010,#20004) -exprContainers(#20010,#20001) -literals("a","a",#20010) -#20011=* -exprs(#20011,0,#20008,1,"a") -hasLocation(#20011,#20009) -enclosingStmt(#20011,#20004) -exprContainers(#20011,#20001) -literals("a","a",#20011) +lines(#20010,#20001,"export type * as fooTypes from ""foo"";","") +#20011=@"loc,{#10000},5,1,5,37" +locations_default(#20011,#10000,5,1,5,37) +hasLocation(#20010,#20011) +numlines(#20001,5,5,0) #20012=* -stmts(#20012,28,#20001,1,"export * from ""m"";") -#20013=@"loc,{#10000},2,1,2,18" -locations_default(#20013,#10000,2,1,2,18) +tokeninfo(#20012,7,#20001,0,"export") +#20013=@"loc,{#10000},1,1,1,6" +locations_default(#20013,#10000,1,1,1,6) hasLocation(#20012,#20013) -stmtContainers(#20012,#20001) #20014=* -exprs(#20014,4,#20012,0,"""m""") -#20015=@"loc,{#10000},2,15,2,17" -locations_default(#20015,#10000,2,15,2,17) +tokeninfo(#20014,8,#20001,1,"{") +#20015=@"loc,{#10000},1,8,1,8" +locations_default(#20015,#10000,1,8,1,8) hasLocation(#20014,#20015) -enclosingStmt(#20014,#20012) -exprContainers(#20014,#20001) -literals("m","""m""",#20014) #20016=* -lines(#20016,#20001,"export { a } from ""m"";"," -") -hasLocation(#20016,#20005) -#20017=* -lines(#20017,#20001,"export * from ""m"";"," -") -hasLocation(#20017,#20013) +tokeninfo(#20016,6,#20001,2,"a") +#20017=@"loc,{#10000},1,10,1,10" +locations_default(#20017,#10000,1,10,1,10) +hasLocation(#20016,#20017) #20018=* -lines(#20018,#20001,"export type { b } from ""m"";"," -") -#20019=@"loc,{#10000},3,1,3,27" -locations_default(#20019,#10000,3,1,3,27) +tokeninfo(#20018,8,#20001,3,"}") +#20019=@"loc,{#10000},1,12,1,12" +locations_default(#20019,#10000,1,12,1,12) hasLocation(#20018,#20019) #20020=* -lines(#20020,#20001,"export type * from ""m"";"," -") -#20021=@"loc,{#10000},4,1,4,23" -locations_default(#20021,#10000,4,1,4,23) +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=* -lines(#20022,#20001,"export type * as fooTypes from ""foo"";","") -#20023=@"loc,{#10000},5,1,5,37" -locations_default(#20023,#10000,5,1,5,37) +tokeninfo(#20022,4,#20001,5,"""m""") +#20023=@"loc,{#10000},1,19,1,21" +locations_default(#20023,#10000,1,19,1,21) hasLocation(#20022,#20023) -numlines(#20001,5,5,0) #20024=* -tokeninfo(#20024,7,#20001,0,"export") -#20025=@"loc,{#10000},1,1,1,6" -locations_default(#20025,#10000,1,1,1,6) +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,8,#20001,1,"{") -#20027=@"loc,{#10000},1,8,1,8" -locations_default(#20027,#10000,1,8,1,8) +tokeninfo(#20026,7,#20001,7,"export") +#20027=@"loc,{#10000},2,1,2,6" +locations_default(#20027,#10000,2,1,2,6) hasLocation(#20026,#20027) #20028=* -tokeninfo(#20028,6,#20001,2,"a") -hasLocation(#20028,#20009) -#20029=* -tokeninfo(#20029,8,#20001,3,"}") -#20030=@"loc,{#10000},1,12,1,12" -locations_default(#20030,#10000,1,12,1,12) -hasLocation(#20029,#20030) -#20031=* -tokeninfo(#20031,6,#20001,4,"from") -#20032=@"loc,{#10000},1,14,1,17" -locations_default(#20032,#10000,1,14,1,17) -hasLocation(#20031,#20032) -#20033=* -tokeninfo(#20033,4,#20001,5,"""m""") -hasLocation(#20033,#20007) +tokeninfo(#20028,8,#20001,8,"*") +#20029=@"loc,{#10000},2,8,2,8" +locations_default(#20029,#10000,2,8,2,8) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,6,#20001,9,"from") +#20031=@"loc,{#10000},2,10,2,13" +locations_default(#20031,#10000,2,10,2,13) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,4,#20001,10,"""m""") +#20033=@"loc,{#10000},2,15,2,17" +locations_default(#20033,#10000,2,15,2,17) +hasLocation(#20032,#20033) #20034=* -tokeninfo(#20034,8,#20001,6,";") -#20035=@"loc,{#10000},1,22,1,22" -locations_default(#20035,#10000,1,22,1,22) +tokeninfo(#20034,8,#20001,11,";") +#20035=@"loc,{#10000},2,18,2,18" +locations_default(#20035,#10000,2,18,2,18) hasLocation(#20034,#20035) #20036=* -tokeninfo(#20036,7,#20001,7,"export") -#20037=@"loc,{#10000},2,1,2,6" -locations_default(#20037,#10000,2,1,2,6) +tokeninfo(#20036,7,#20001,12,"export") +#20037=@"loc,{#10000},3,1,3,6" +locations_default(#20037,#10000,3,1,3,6) hasLocation(#20036,#20037) #20038=* -tokeninfo(#20038,8,#20001,8,"*") -#20039=@"loc,{#10000},2,8,2,8" -locations_default(#20039,#10000,2,8,2,8) +tokeninfo(#20038,6,#20001,13,"type") +#20039=@"loc,{#10000},3,8,3,11" +locations_default(#20039,#10000,3,8,3,11) hasLocation(#20038,#20039) #20040=* -tokeninfo(#20040,6,#20001,9,"from") -#20041=@"loc,{#10000},2,10,2,13" -locations_default(#20041,#10000,2,10,2,13) +tokeninfo(#20040,8,#20001,14,"{") +#20041=@"loc,{#10000},3,13,3,13" +locations_default(#20041,#10000,3,13,3,13) hasLocation(#20040,#20041) #20042=* -tokeninfo(#20042,4,#20001,10,"""m""") -hasLocation(#20042,#20015) -#20043=* -tokeninfo(#20043,8,#20001,11,";") -#20044=@"loc,{#10000},2,18,2,18" -locations_default(#20044,#10000,2,18,2,18) -hasLocation(#20043,#20044) -#20045=* -tokeninfo(#20045,7,#20001,12,"export") -#20046=@"loc,{#10000},3,1,3,6" -locations_default(#20046,#10000,3,1,3,6) -hasLocation(#20045,#20046) -#20047=* -tokeninfo(#20047,6,#20001,13,"type") -#20048=@"loc,{#10000},3,8,3,11" -locations_default(#20048,#10000,3,8,3,11) -hasLocation(#20047,#20048) -#20049=* -tokeninfo(#20049,8,#20001,14,"{") -#20050=@"loc,{#10000},3,13,3,13" -locations_default(#20050,#10000,3,13,3,13) -hasLocation(#20049,#20050) -#20051=* -tokeninfo(#20051,6,#20001,15,"b") -#20052=@"loc,{#10000},3,15,3,15" -locations_default(#20052,#10000,3,15,3,15) -hasLocation(#20051,#20052) -#20053=* -tokeninfo(#20053,8,#20001,16,"}") -#20054=@"loc,{#10000},3,17,3,17" -locations_default(#20054,#10000,3,17,3,17) -hasLocation(#20053,#20054) -#20055=* -tokeninfo(#20055,6,#20001,17,"from") -#20056=@"loc,{#10000},3,19,3,22" -locations_default(#20056,#10000,3,19,3,22) -hasLocation(#20055,#20056) -#20057=* -tokeninfo(#20057,4,#20001,18,"""m""") -#20058=@"loc,{#10000},3,24,3,26" -locations_default(#20058,#10000,3,24,3,26) -hasLocation(#20057,#20058) -#20059=* -tokeninfo(#20059,8,#20001,19,";") -#20060=@"loc,{#10000},3,27,3,27" -locations_default(#20060,#10000,3,27,3,27) -hasLocation(#20059,#20060) -#20061=* -tokeninfo(#20061,7,#20001,20,"export") -#20062=@"loc,{#10000},4,1,4,6" -locations_default(#20062,#10000,4,1,4,6) -hasLocation(#20061,#20062) -#20063=* -tokeninfo(#20063,6,#20001,21,"type") -#20064=@"loc,{#10000},4,8,4,11" -locations_default(#20064,#10000,4,8,4,11) -hasLocation(#20063,#20064) -#20065=* -tokeninfo(#20065,8,#20001,22,"*") -#20066=@"loc,{#10000},4,13,4,13" -locations_default(#20066,#10000,4,13,4,13) -hasLocation(#20065,#20066) -#20067=* -tokeninfo(#20067,6,#20001,23,"from") -#20068=@"loc,{#10000},4,15,4,18" -locations_default(#20068,#10000,4,15,4,18) -hasLocation(#20067,#20068) -#20069=* -tokeninfo(#20069,4,#20001,24,"""m""") -#20070=@"loc,{#10000},4,20,4,22" -locations_default(#20070,#10000,4,20,4,22) -hasLocation(#20069,#20070) -#20071=* -tokeninfo(#20071,8,#20001,25,";") -#20072=@"loc,{#10000},4,23,4,23" -locations_default(#20072,#10000,4,23,4,23) -hasLocation(#20071,#20072) -#20073=* -tokeninfo(#20073,7,#20001,26,"export") -#20074=@"loc,{#10000},5,1,5,6" -locations_default(#20074,#10000,5,1,5,6) -hasLocation(#20073,#20074) -#20075=* -tokeninfo(#20075,6,#20001,27,"type") -#20076=@"loc,{#10000},5,8,5,11" -locations_default(#20076,#10000,5,8,5,11) -hasLocation(#20075,#20076) -#20077=* -tokeninfo(#20077,8,#20001,28,"*") -#20078=@"loc,{#10000},5,13,5,13" -locations_default(#20078,#10000,5,13,5,13) -hasLocation(#20077,#20078) -#20079=* -tokeninfo(#20079,6,#20001,29,"as") -#20080=@"loc,{#10000},5,15,5,16" -locations_default(#20080,#10000,5,15,5,16) -hasLocation(#20079,#20080) -#20081=* -tokeninfo(#20081,6,#20001,30,"fooTypes") -#20082=@"loc,{#10000},5,18,5,25" -locations_default(#20082,#10000,5,18,5,25) -hasLocation(#20081,#20082) -#20083=* -tokeninfo(#20083,6,#20001,31,"from") -#20084=@"loc,{#10000},5,27,5,30" -locations_default(#20084,#10000,5,27,5,30) -hasLocation(#20083,#20084) +tokeninfo(#20042,6,#20001,15,"b") +#20043=@"loc,{#10000},3,15,3,15" +locations_default(#20043,#10000,3,15,3,15) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,16,"}") +#20045=@"loc,{#10000},3,17,3,17" +locations_default(#20045,#10000,3,17,3,17) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,6,#20001,17,"from") +#20047=@"loc,{#10000},3,19,3,22" +locations_default(#20047,#10000,3,19,3,22) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,4,#20001,18,"""m""") +#20049=@"loc,{#10000},3,24,3,26" +locations_default(#20049,#10000,3,24,3,26) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,19,";") +#20051=@"loc,{#10000},3,27,3,27" +locations_default(#20051,#10000,3,27,3,27) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,7,#20001,20,"export") +#20053=@"loc,{#10000},4,1,4,6" +locations_default(#20053,#10000,4,1,4,6) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,6,#20001,21,"type") +#20055=@"loc,{#10000},4,8,4,11" +locations_default(#20055,#10000,4,8,4,11) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,8,#20001,22,"*") +#20057=@"loc,{#10000},4,13,4,13" +locations_default(#20057,#10000,4,13,4,13) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,6,#20001,23,"from") +#20059=@"loc,{#10000},4,15,4,18" +locations_default(#20059,#10000,4,15,4,18) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,4,#20001,24,"""m""") +#20061=@"loc,{#10000},4,20,4,22" +locations_default(#20061,#10000,4,20,4,22) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,8,#20001,25,";") +#20063=@"loc,{#10000},4,23,4,23" +locations_default(#20063,#10000,4,23,4,23) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,7,#20001,26,"export") +#20065=@"loc,{#10000},5,1,5,6" +locations_default(#20065,#10000,5,1,5,6) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,6,#20001,27,"type") +#20067=@"loc,{#10000},5,8,5,11" +locations_default(#20067,#10000,5,8,5,11) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,8,#20001,28,"*") +#20069=@"loc,{#10000},5,13,5,13" +locations_default(#20069,#10000,5,13,5,13) +hasLocation(#20068,#20069) +#20070=* +tokeninfo(#20070,6,#20001,29,"as") +#20071=@"loc,{#10000},5,15,5,16" +locations_default(#20071,#10000,5,15,5,16) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,6,#20001,30,"fooTypes") +#20073=@"loc,{#10000},5,18,5,25" +locations_default(#20073,#10000,5,18,5,25) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,6,#20001,31,"from") +#20075=@"loc,{#10000},5,27,5,30" +locations_default(#20075,#10000,5,27,5,30) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,4,#20001,32,"""foo""") +#20077=@"loc,{#10000},5,32,5,36" +locations_default(#20077,#10000,5,32,5,36) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,8,#20001,33,";") +#20079=@"loc,{#10000},5,37,5,37" +locations_default(#20079,#10000,5,37,5,37) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,0,#20001,34,"") +#20081=@"loc,{#10000},5,38,5,37" +locations_default(#20081,#10000,5,38,5,37) +hasLocation(#20080,#20081) +toplevels(#20001,0) +#20082=@"loc,{#10000},1,1,5,37" +locations_default(#20082,#10000,1,1,5,37) +hasLocation(#20001,#20082) +#20083=@"module;{#10000},1,1" +scopes(#20083,3) +scopenodes(#20001,#20083) +scopenesting(#20083,#20000) +isModule(#20001) +isES2015Module(#20001) +#20084=* +stmts(#20084,30,#20001,0,"export ... om ""m"";") +hasLocation(#20084,#20003) +stmtContainers(#20084,#20001) #20085=* -tokeninfo(#20085,4,#20001,32,"""foo""") -#20086=@"loc,{#10000},5,32,5,36" -locations_default(#20086,#10000,5,32,5,36) -hasLocation(#20085,#20086) +exprs(#20085,4,#20084,-2,"""m""") +hasLocation(#20085,#20023) +enclosingStmt(#20085,#20084) +exprContainers(#20085,#20001) +literals("m","""m""",#20085) +#20086=* +exprs(#20086,86,#20084,0,"a") +hasLocation(#20086,#20017) +enclosingStmt(#20086,#20084) +exprContainers(#20086,#20001) #20087=* -tokeninfo(#20087,8,#20001,33,";") -#20088=@"loc,{#10000},5,37,5,37" -locations_default(#20088,#10000,5,37,5,37) -hasLocation(#20087,#20088) +exprs(#20087,0,#20086,0,"a") +hasLocation(#20087,#20017) +enclosingStmt(#20087,#20084) +exprContainers(#20087,#20001) +literals("a","a",#20087) +#20088=* +exprs(#20088,0,#20086,1,"a") +hasLocation(#20088,#20017) +enclosingStmt(#20088,#20084) +exprContainers(#20088,#20001) +literals("a","a",#20088) #20089=* -tokeninfo(#20089,0,#20001,34,"") -#20090=@"loc,{#10000},5,38,5,37" -locations_default(#20090,#10000,5,38,5,37) -hasLocation(#20089,#20090) +stmts(#20089,28,#20001,1,"export * from ""m"";") +hasLocation(#20089,#20005) +stmtContainers(#20089,#20001) +#20090=* +exprs(#20090,4,#20089,0,"""m""") +hasLocation(#20090,#20033) +enclosingStmt(#20090,#20089) +exprContainers(#20090,#20001) +literals("m","""m""",#20090) #20091=* entry_cfg_node(#20091,#20001) #20092=@"loc,{#10000},1,1,1,0" @@ -267,14 +268,14 @@ locations_default(#20092,#10000,1,1,1,0) hasLocation(#20091,#20092) #20093=* exit_cfg_node(#20093,#20001) -hasLocation(#20093,#20090) -successor(#20012,#20014) -successor(#20014,#20093) -successor(#20004,#20006) -successor(#20008,#20010) -successor(#20011,#20012) -successor(#20010,#20011) -successor(#20006,#20008) -successor(#20091,#20004) +hasLocation(#20093,#20081) +successor(#20089,#20090) +successor(#20090,#20093) +successor(#20084,#20085) +successor(#20086,#20087) +successor(#20088,#20089) +successor(#20087,#20088) +successor(#20085,#20086) +successor(#20091,#20084) numlines(#10000,5,5,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/exportOpaqueType.js.trap b/javascript/extractor/tests/flow/output/trap/exportOpaqueType.js.trap index 56db77daae3..2b23e617e92 100644 --- a/javascript/extractor/tests/flow/output/trap/exportOpaqueType.js.trap +++ b/javascript/extractor/tests/flow/output/trap/exportOpaqueType.js.trap @@ -9,72 +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=@"module;{#10000},1,1" -scopes(#20003,3) -scopenodes(#20001,#20003) -scopenesting(#20003,#20000) -isModule(#20001) -#20004=* -lines(#20004,#20001,"export opaque type num : number = number;"," +#20002=* +lines(#20002,#20001,"export opaque type num : number = number;"," ") -#20005=@"loc,{#10000},1,1,1,41" -locations_default(#20005,#10000,1,1,1,41) -hasLocation(#20004,#20005) +#20003=@"loc,{#10000},1,1,1,41" +locations_default(#20003,#10000,1,1,1,41) +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,0,"export") -#20007=@"loc,{#10000},1,1,1,6" -locations_default(#20007,#10000,1,1,1,6) +tokeninfo(#20006,6,#20001,1,"opaque") +#20007=@"loc,{#10000},1,8,1,13" +locations_default(#20007,#10000,1,8,1,13) hasLocation(#20006,#20007) #20008=* -tokeninfo(#20008,6,#20001,1,"opaque") -#20009=@"loc,{#10000},1,8,1,13" -locations_default(#20009,#10000,1,8,1,13) +tokeninfo(#20008,6,#20001,2,"type") +#20009=@"loc,{#10000},1,15,1,18" +locations_default(#20009,#10000,1,15,1,18) hasLocation(#20008,#20009) #20010=* -tokeninfo(#20010,6,#20001,2,"type") -#20011=@"loc,{#10000},1,15,1,18" -locations_default(#20011,#10000,1,15,1,18) +tokeninfo(#20010,6,#20001,3,"num") +#20011=@"loc,{#10000},1,20,1,22" +locations_default(#20011,#10000,1,20,1,22) hasLocation(#20010,#20011) #20012=* -tokeninfo(#20012,6,#20001,3,"num") -#20013=@"loc,{#10000},1,20,1,22" -locations_default(#20013,#10000,1,20,1,22) +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,4,":") -#20015=@"loc,{#10000},1,24,1,24" -locations_default(#20015,#10000,1,24,1,24) +tokeninfo(#20014,6,#20001,5,"number") +#20015=@"loc,{#10000},1,26,1,31" +locations_default(#20015,#10000,1,26,1,31) hasLocation(#20014,#20015) #20016=* -tokeninfo(#20016,6,#20001,5,"number") -#20017=@"loc,{#10000},1,26,1,31" -locations_default(#20017,#10000,1,26,1,31) +tokeninfo(#20016,8,#20001,6,"=") +#20017=@"loc,{#10000},1,33,1,33" +locations_default(#20017,#10000,1,33,1,33) hasLocation(#20016,#20017) #20018=* -tokeninfo(#20018,8,#20001,6,"=") -#20019=@"loc,{#10000},1,33,1,33" -locations_default(#20019,#10000,1,33,1,33) +tokeninfo(#20018,6,#20001,7,"number") +#20019=@"loc,{#10000},1,35,1,40" +locations_default(#20019,#10000,1,35,1,40) hasLocation(#20018,#20019) #20020=* -tokeninfo(#20020,6,#20001,7,"number") -#20021=@"loc,{#10000},1,35,1,40" -locations_default(#20021,#10000,1,35,1,40) +tokeninfo(#20020,8,#20001,8,";") +#20021=@"loc,{#10000},1,41,1,41" +locations_default(#20021,#10000,1,41,1,41) hasLocation(#20020,#20021) #20022=* -tokeninfo(#20022,8,#20001,8,";") -#20023=@"loc,{#10000},1,41,1,41" -locations_default(#20023,#10000,1,41,1,41) +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,0,#20001,9,"") -#20025=@"loc,{#10000},2,1,2,0" -locations_default(#20025,#10000,2,1,2,0) -hasLocation(#20024,#20025) +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) +isES2015Module(#20001) #20026=* entry_cfg_node(#20026,#20001) #20027=@"loc,{#10000},1,1,1,0" @@ -82,7 +83,7 @@ locations_default(#20027,#10000,1,1,1,0) hasLocation(#20026,#20027) #20028=* exit_cfg_node(#20028,#20001) -hasLocation(#20028,#20025) +hasLocation(#20028,#20023) successor(#20026,#20028) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/get-set-methods.js.trap b/javascript/extractor/tests/flow/output/trap/get-set-methods.js.trap index b179d7ec365..f57be469d52 100644 --- a/javascript/extractor/tests/flow/output/trap/get-set-methods.js.trap +++ b/javascript/extractor/tests/flow/output/trap/get-set-methods.js.trap @@ -9,307 +9,304 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,5,0" -locations_default(#20002,#10000,1,1,5,0) -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,4,1" -locations_default(#20006,#10000,1,1,4,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," get(v: T) { }"," +") +#20005=@"loc,{#10000},2,1,2,20" +locations_default(#20005,#10000,2,1,2,20) +hasLocation(#20004,#20005) +indentation(#10000,2," ",4) +#20006=* +lines(#20006,#20001," set(v: T) { }"," +") +#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=* -properties(#20010,#20005,2,0,"get(v: T) { }") -#20011=@"loc,{#10000},2,5,2,20" -locations_default(#20011,#10000,2,5,2,20) +tokeninfo(#20010,7,#20001,0,"class") +#20011=@"loc,{#10000},1,1,1,5" +locations_default(#20011,#10000,1,1,1,5) hasLocation(#20010,#20011) #20012=* -exprs(#20012,0,#20010,0,"get") -#20013=@"loc,{#10000},2,5,2,7" -locations_default(#20013,#10000,2,5,2,7) +tokeninfo(#20012,6,#20001,1,"C") +#20013=@"loc,{#10000},1,7,1,7" +locations_default(#20013,#10000,1,7,1,7) hasLocation(#20012,#20013) -enclosingStmt(#20012,#20005) -exprContainers(#20012,#20001) -literals("get","get",#20012) #20014=* -exprs(#20014,9,#20010,1,"(v: T) { }") -#20015=@"loc,{#10000},2,11,2,20" -locations_default(#20015,#10000,2,11,2,20) +tokeninfo(#20014,8,#20001,2,"{") +#20015=@"loc,{#10000},1,9,1,9" +locations_default(#20015,#10000,1,9,1,9) 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,6,#20001,3,"get") +#20017=@"loc,{#10000},2,5,2,7" +locations_default(#20017,#10000,2,5,2,7) +hasLocation(#20016,#20017) #20018=* -exprs(#20018,78,#20014,0,"v: T") -#20019=@"loc,{#10000},2,12,2,15" -locations_default(#20019,#10000,2,12,2,15) +tokeninfo(#20018,8,#20001,4,"<") +#20019=@"loc,{#10000},2,8,2,8" +locations_default(#20019,#10000,2,8,2,8) 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,18,2,20" -locations_default(#20022,#10000,2,18,2,20) -hasLocation(#20021,#20022) -stmtContainers(#20021,#20014) -numlines(#20014,1,1,0) -isMethod(#20010) -#20023=* -properties(#20023,#20005,3,0,"set(v: T) { }") -#20024=@"loc,{#10000},3,5,3,20" -locations_default(#20024,#10000,3,5,3,20) -hasLocation(#20023,#20024) -#20025=* -exprs(#20025,0,#20023,0,"set") -#20026=@"loc,{#10000},3,5,3,7" -locations_default(#20026,#10000,3,5,3,7) -hasLocation(#20025,#20026) -enclosingStmt(#20025,#20005) -exprContainers(#20025,#20001) -literals("set","set",#20025) -#20027=* -exprs(#20027,9,#20023,1,"(v: T) { }") -#20028=@"loc,{#10000},3,11,3,20" -locations_default(#20028,#10000,3,11,3,20) -hasLocation(#20027,#20028) -enclosingStmt(#20027,#20005) -exprContainers(#20027,#20001) -#20029=* -scopes(#20029,1) -scopenodes(#20027,#20029) -scopenesting(#20029,#20009) -#20030=@"var;{v};{#20029}" -variables(#20030,"v",#20029) -#20031=* -exprs(#20031,78,#20027,0,"v: T") -#20032=@"loc,{#10000},3,12,3,15" -locations_default(#20032,#10000,3,12,3,15) -hasLocation(#20031,#20032) -exprContainers(#20031,#20027) -literals("v","v",#20031) -decl(#20031,#20030) -#20033=@"var;{arguments};{#20029}" -variables(#20033,"arguments",#20029) -isArgumentsObject(#20033) +#20020=* +tokeninfo(#20020,6,#20001,5,"T") +#20021=@"loc,{#10000},2,9,2,9" +locations_default(#20021,#10000,2,9,2,9) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,6,">") +#20023=@"loc,{#10000},2,10,2,10" +locations_default(#20023,#10000,2,10,2,10) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,7,"(") +#20025=@"loc,{#10000},2,11,2,11" +locations_default(#20025,#10000,2,11,2,11) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,6,#20001,8,"v") +#20027=@"loc,{#10000},2,12,2,12" +locations_default(#20027,#10000,2,12,2,12) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,9,":") +#20029=@"loc,{#10000},2,13,2,13" +locations_default(#20029,#10000,2,13,2,13) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,6,#20001,10,"T") +#20031=@"loc,{#10000},2,15,2,15" +locations_default(#20031,#10000,2,15,2,15) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,11,")") +#20033=@"loc,{#10000},2,16,2,16" +locations_default(#20033,#10000,2,16,2,16) +hasLocation(#20032,#20033) #20034=* -stmts(#20034,1,#20027,-2,"{ }") -#20035=@"loc,{#10000},3,18,3,20" -locations_default(#20035,#10000,3,18,3,20) +tokeninfo(#20034,8,#20001,12,"{") +#20035=@"loc,{#10000},2,18,2,18" +locations_default(#20035,#10000,2,18,2,18) hasLocation(#20034,#20035) -stmtContainers(#20034,#20027) -numlines(#20027,1,1,0) -isMethod(#20023) #20036=* -properties(#20036,#20005,4,0,"constructor() {}") -#20037=@"loc,{#10000},1,9,1,8" -locations_default(#20037,#10000,1,9,1,8) +tokeninfo(#20036,8,#20001,13,"}") +#20037=@"loc,{#10000},2,20,2,20" +locations_default(#20037,#10000,2,20,2,20) hasLocation(#20036,#20037) #20038=* -exprs(#20038,0,#20036,0,"constructor") -hasLocation(#20038,#20037) -enclosingStmt(#20038,#20005) -exprContainers(#20038,#20001) -literals("constructor","constructor",#20038) -#20039=* -exprs(#20039,9,#20036,1,"() {}") -hasLocation(#20039,#20037) -enclosingStmt(#20039,#20005) -exprContainers(#20039,#20001) +tokeninfo(#20038,6,#20001,14,"set") +#20039=@"loc,{#10000},3,5,3,7" +locations_default(#20039,#10000,3,5,3,7) +hasLocation(#20038,#20039) #20040=* -scopes(#20040,1) -scopenodes(#20039,#20040) -scopenesting(#20040,#20009) -#20041=@"var;{arguments};{#20040}" -variables(#20041,"arguments",#20040) -isArgumentsObject(#20041) +tokeninfo(#20040,8,#20001,15,"<") +#20041=@"loc,{#10000},3,8,3,8" +locations_default(#20041,#10000,3,8,3,8) +hasLocation(#20040,#20041) #20042=* -stmts(#20042,1,#20039,-2,"{}") -hasLocation(#20042,#20037) -stmtContainers(#20042,#20039) -numlines(#20039,1,0,0) -isMethod(#20036) -#20043=* -lines(#20043,#20001,"class C {"," -") -#20044=@"loc,{#10000},1,1,1,9" -locations_default(#20044,#10000,1,1,1,9) -hasLocation(#20043,#20044) -#20045=* -lines(#20045,#20001," get(v: T) { }"," -") -#20046=@"loc,{#10000},2,1,2,20" -locations_default(#20046,#10000,2,1,2,20) -hasLocation(#20045,#20046) -indentation(#10000,2," ",4) -#20047=* -lines(#20047,#20001," set(v: T) { }"," -") -#20048=@"loc,{#10000},3,1,3,20" -locations_default(#20048,#10000,3,1,3,20) -hasLocation(#20047,#20048) -indentation(#10000,3," ",4) -#20049=* -lines(#20049,#20001,"}"," -") -#20050=@"loc,{#10000},4,1,4,1" -locations_default(#20050,#10000,4,1,4,1) -hasLocation(#20049,#20050) -numlines(#20001,4,4,0) -#20051=* -tokeninfo(#20051,7,#20001,0,"class") -#20052=@"loc,{#10000},1,1,1,5" -locations_default(#20052,#10000,1,1,1,5) -hasLocation(#20051,#20052) -#20053=* -tokeninfo(#20053,6,#20001,1,"C") -hasLocation(#20053,#20008) +tokeninfo(#20042,6,#20001,16,"T") +#20043=@"loc,{#10000},3,9,3,9" +locations_default(#20043,#10000,3,9,3,9) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,17,">") +#20045=@"loc,{#10000},3,10,3,10" +locations_default(#20045,#10000,3,10,3,10) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,18,"(") +#20047=@"loc,{#10000},3,11,3,11" +locations_default(#20047,#10000,3,11,3,11) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,6,#20001,19,"v") +#20049=@"loc,{#10000},3,12,3,12" +locations_default(#20049,#10000,3,12,3,12) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,20,":") +#20051=@"loc,{#10000},3,13,3,13" +locations_default(#20051,#10000,3,13,3,13) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,6,#20001,21,"T") +#20053=@"loc,{#10000},3,15,3,15" +locations_default(#20053,#10000,3,15,3,15) +hasLocation(#20052,#20053) #20054=* -tokeninfo(#20054,8,#20001,2,"{") -#20055=@"loc,{#10000},1,9,1,9" -locations_default(#20055,#10000,1,9,1,9) +tokeninfo(#20054,8,#20001,22,")") +#20055=@"loc,{#10000},3,16,3,16" +locations_default(#20055,#10000,3,16,3,16) hasLocation(#20054,#20055) #20056=* -tokeninfo(#20056,6,#20001,3,"get") -hasLocation(#20056,#20013) -#20057=* -tokeninfo(#20057,8,#20001,4,"<") -#20058=@"loc,{#10000},2,8,2,8" -locations_default(#20058,#10000,2,8,2,8) -hasLocation(#20057,#20058) -#20059=* -tokeninfo(#20059,6,#20001,5,"T") -#20060=@"loc,{#10000},2,9,2,9" -locations_default(#20060,#10000,2,9,2,9) -hasLocation(#20059,#20060) +tokeninfo(#20056,8,#20001,23,"{") +#20057=@"loc,{#10000},3,18,3,18" +locations_default(#20057,#10000,3,18,3,18) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,8,#20001,24,"}") +#20059=@"loc,{#10000},3,20,3,20" +locations_default(#20059,#10000,3,20,3,20) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,8,#20001,25,"}") +hasLocation(#20060,#20009) #20061=* -tokeninfo(#20061,8,#20001,6,">") -#20062=@"loc,{#10000},2,10,2,10" -locations_default(#20062,#10000,2,10,2,10) +tokeninfo(#20061,0,#20001,26,"") +#20062=@"loc,{#10000},5,1,5,0" +locations_default(#20062,#10000,5,1,5,0) hasLocation(#20061,#20062) -#20063=* -tokeninfo(#20063,8,#20001,7,"(") -#20064=@"loc,{#10000},2,11,2,11" -locations_default(#20064,#10000,2,11,2,11) -hasLocation(#20063,#20064) -#20065=* -tokeninfo(#20065,6,#20001,8,"v") -#20066=@"loc,{#10000},2,12,2,12" -locations_default(#20066,#10000,2,12,2,12) -hasLocation(#20065,#20066) -#20067=* -tokeninfo(#20067,8,#20001,9,":") -#20068=@"loc,{#10000},2,13,2,13" -locations_default(#20068,#10000,2,13,2,13) -hasLocation(#20067,#20068) +toplevels(#20001,0) +#20063=@"loc,{#10000},1,1,5,0" +locations_default(#20063,#10000,1,1,5,0) +hasLocation(#20001,#20063) +#20064=@"var;{C};{#20000}" +variables(#20064,"C",#20000) +#20065=@"local_type_name;{C};{#20000}" +local_type_names(#20065,"C",#20000) +#20066=* +stmts(#20066,26,#20001,0,"class C ... ) { }\n}") +#20067=@"loc,{#10000},1,1,4,1" +locations_default(#20067,#10000,1,1,4,1) +hasLocation(#20066,#20067) +stmtContainers(#20066,#20001) +#20068=* +exprs(#20068,78,#20066,0,"C") +hasLocation(#20068,#20013) +enclosingStmt(#20068,#20066) +exprContainers(#20068,#20001) +literals("C","C",#20068) +decl(#20068,#20064) +typedecl(#20068,#20065) #20069=* -tokeninfo(#20069,6,#20001,10,"T") -#20070=@"loc,{#10000},2,15,2,15" -locations_default(#20070,#10000,2,15,2,15) -hasLocation(#20069,#20070) -#20071=* -tokeninfo(#20071,8,#20001,11,")") -#20072=@"loc,{#10000},2,16,2,16" -locations_default(#20072,#10000,2,16,2,16) -hasLocation(#20071,#20072) +scopes(#20069,10) +scopenodes(#20066,#20069) +scopenesting(#20069,#20000) +#20070=* +properties(#20070,#20066,2,0,"get(v: T) { }") +#20071=@"loc,{#10000},2,5,2,20" +locations_default(#20071,#10000,2,5,2,20) +hasLocation(#20070,#20071) +#20072=* +exprs(#20072,0,#20070,0,"get") +hasLocation(#20072,#20017) +enclosingStmt(#20072,#20066) +exprContainers(#20072,#20001) +literals("get","get",#20072) #20073=* -tokeninfo(#20073,8,#20001,12,"{") -#20074=@"loc,{#10000},2,18,2,18" -locations_default(#20074,#10000,2,18,2,18) +exprs(#20073,9,#20070,1,"(v: T) { }") +#20074=@"loc,{#10000},2,11,2,20" +locations_default(#20074,#10000,2,11,2,20) hasLocation(#20073,#20074) +enclosingStmt(#20073,#20066) +exprContainers(#20073,#20001) #20075=* -tokeninfo(#20075,8,#20001,13,"}") -#20076=@"loc,{#10000},2,20,2,20" -locations_default(#20076,#10000,2,20,2,20) -hasLocation(#20075,#20076) +scopes(#20075,1) +scopenodes(#20073,#20075) +scopenesting(#20075,#20069) +#20076=@"var;{v};{#20075}" +variables(#20076,"v",#20075) #20077=* -tokeninfo(#20077,6,#20001,14,"set") -hasLocation(#20077,#20026) -#20078=* -tokeninfo(#20078,8,#20001,15,"<") -#20079=@"loc,{#10000},3,8,3,8" -locations_default(#20079,#10000,3,8,3,8) -hasLocation(#20078,#20079) +exprs(#20077,78,#20073,0,"v: T") +#20078=@"loc,{#10000},2,12,2,15" +locations_default(#20078,#10000,2,12,2,15) +hasLocation(#20077,#20078) +exprContainers(#20077,#20073) +literals("v","v",#20077) +decl(#20077,#20076) +#20079=@"var;{arguments};{#20075}" +variables(#20079,"arguments",#20075) +isArgumentsObject(#20079) #20080=* -tokeninfo(#20080,6,#20001,16,"T") -#20081=@"loc,{#10000},3,9,3,9" -locations_default(#20081,#10000,3,9,3,9) +stmts(#20080,1,#20073,-2,"{ }") +#20081=@"loc,{#10000},2,18,2,20" +locations_default(#20081,#10000,2,18,2,20) hasLocation(#20080,#20081) +stmtContainers(#20080,#20073) +isMethod(#20070) #20082=* -tokeninfo(#20082,8,#20001,17,">") -#20083=@"loc,{#10000},3,10,3,10" -locations_default(#20083,#10000,3,10,3,10) +properties(#20082,#20066,3,0,"set(v: T) { }") +#20083=@"loc,{#10000},3,5,3,20" +locations_default(#20083,#10000,3,5,3,20) hasLocation(#20082,#20083) #20084=* -tokeninfo(#20084,8,#20001,18,"(") -#20085=@"loc,{#10000},3,11,3,11" -locations_default(#20085,#10000,3,11,3,11) -hasLocation(#20084,#20085) -#20086=* -tokeninfo(#20086,6,#20001,19,"v") -#20087=@"loc,{#10000},3,12,3,12" -locations_default(#20087,#10000,3,12,3,12) -hasLocation(#20086,#20087) -#20088=* -tokeninfo(#20088,8,#20001,20,":") -#20089=@"loc,{#10000},3,13,3,13" -locations_default(#20089,#10000,3,13,3,13) -hasLocation(#20088,#20089) -#20090=* -tokeninfo(#20090,6,#20001,21,"T") -#20091=@"loc,{#10000},3,15,3,15" -locations_default(#20091,#10000,3,15,3,15) -hasLocation(#20090,#20091) +exprs(#20084,0,#20082,0,"set") +hasLocation(#20084,#20039) +enclosingStmt(#20084,#20066) +exprContainers(#20084,#20001) +literals("set","set",#20084) +#20085=* +exprs(#20085,9,#20082,1,"(v: T) { }") +#20086=@"loc,{#10000},3,11,3,20" +locations_default(#20086,#10000,3,11,3,20) +hasLocation(#20085,#20086) +enclosingStmt(#20085,#20066) +exprContainers(#20085,#20001) +#20087=* +scopes(#20087,1) +scopenodes(#20085,#20087) +scopenesting(#20087,#20069) +#20088=@"var;{v};{#20087}" +variables(#20088,"v",#20087) +#20089=* +exprs(#20089,78,#20085,0,"v: T") +#20090=@"loc,{#10000},3,12,3,15" +locations_default(#20090,#10000,3,12,3,15) +hasLocation(#20089,#20090) +exprContainers(#20089,#20085) +literals("v","v",#20089) +decl(#20089,#20088) +#20091=@"var;{arguments};{#20087}" +variables(#20091,"arguments",#20087) +isArgumentsObject(#20091) #20092=* -tokeninfo(#20092,8,#20001,22,")") -#20093=@"loc,{#10000},3,16,3,16" -locations_default(#20093,#10000,3,16,3,16) +stmts(#20092,1,#20085,-2,"{ }") +#20093=@"loc,{#10000},3,18,3,20" +locations_default(#20093,#10000,3,18,3,20) hasLocation(#20092,#20093) +stmtContainers(#20092,#20085) +isMethod(#20082) #20094=* -tokeninfo(#20094,8,#20001,23,"{") -#20095=@"loc,{#10000},3,18,3,18" -locations_default(#20095,#10000,3,18,3,18) +properties(#20094,#20066,4,0,"constructor() {}") +#20095=@"loc,{#10000},1,9,1,8" +locations_default(#20095,#10000,1,9,1,8) hasLocation(#20094,#20095) #20096=* -tokeninfo(#20096,8,#20001,24,"}") -#20097=@"loc,{#10000},3,20,3,20" -locations_default(#20097,#10000,3,20,3,20) -hasLocation(#20096,#20097) +exprs(#20096,0,#20094,0,"constructor") +hasLocation(#20096,#20095) +enclosingStmt(#20096,#20066) +exprContainers(#20096,#20001) +literals("constructor","constructor",#20096) +#20097=* +exprs(#20097,9,#20094,1,"() {}") +hasLocation(#20097,#20095) +enclosingStmt(#20097,#20066) +exprContainers(#20097,#20001) #20098=* -tokeninfo(#20098,8,#20001,25,"}") -hasLocation(#20098,#20050) -#20099=* -tokeninfo(#20099,0,#20001,26,"") -#20100=@"loc,{#10000},5,1,5,0" -locations_default(#20100,#10000,5,1,5,0) -hasLocation(#20099,#20100) +scopes(#20098,1) +scopenodes(#20097,#20098) +scopenesting(#20098,#20069) +#20099=@"var;{arguments};{#20098}" +variables(#20099,"arguments",#20098) +isArgumentsObject(#20099) +#20100=* +stmts(#20100,1,#20097,-2,"{}") +hasLocation(#20100,#20095) +stmtContainers(#20100,#20097) +isMethod(#20094) #20101=* entry_cfg_node(#20101,#20001) #20102=@"loc,{#10000},1,1,1,0" @@ -317,52 +314,52 @@ locations_default(#20102,#10000,1,1,1,0) hasLocation(#20101,#20102) #20103=* exit_cfg_node(#20103,#20001) -hasLocation(#20103,#20100) -successor(#20039,#20036) +hasLocation(#20103,#20062) +successor(#20097,#20094) #20104=* -entry_cfg_node(#20104,#20039) -hasLocation(#20104,#20037) +entry_cfg_node(#20104,#20097) +hasLocation(#20104,#20095) #20105=* -exit_cfg_node(#20105,#20039) -hasLocation(#20105,#20037) -successor(#20042,#20105) -successor(#20104,#20042) -successor(#20038,#20039) -successor(#20036,#20005) -successor(#20027,#20023) +exit_cfg_node(#20105,#20097) +hasLocation(#20105,#20095) +successor(#20100,#20105) +successor(#20104,#20100) +successor(#20096,#20097) +successor(#20094,#20066) +successor(#20085,#20082) #20106=* -entry_cfg_node(#20106,#20027) +entry_cfg_node(#20106,#20085) #20107=@"loc,{#10000},3,11,3,10" locations_default(#20107,#10000,3,11,3,10) hasLocation(#20106,#20107) #20108=* -exit_cfg_node(#20108,#20027) +exit_cfg_node(#20108,#20085) #20109=@"loc,{#10000},3,21,3,20" locations_default(#20109,#10000,3,21,3,20) hasLocation(#20108,#20109) -successor(#20034,#20108) -successor(#20031,#20034) -successor(#20106,#20031) -successor(#20025,#20027) -successor(#20023,#20038) -successor(#20014,#20010) +successor(#20092,#20108) +successor(#20089,#20092) +successor(#20106,#20089) +successor(#20084,#20085) +successor(#20082,#20096) +successor(#20073,#20070) #20110=* -entry_cfg_node(#20110,#20014) +entry_cfg_node(#20110,#20073) #20111=@"loc,{#10000},2,11,2,10" locations_default(#20111,#10000,2,11,2,10) hasLocation(#20110,#20111) #20112=* -exit_cfg_node(#20112,#20014) +exit_cfg_node(#20112,#20073) #20113=@"loc,{#10000},2,21,2,20" locations_default(#20113,#10000,2,21,2,20) hasLocation(#20112,#20113) -successor(#20021,#20112) -successor(#20018,#20021) -successor(#20110,#20018) -successor(#20012,#20014) -successor(#20010,#20025) -successor(#20007,#20012) -successor(#20005,#20103) -successor(#20101,#20007) +successor(#20080,#20112) +successor(#20077,#20080) +successor(#20110,#20077) +successor(#20072,#20073) +successor(#20070,#20084) +successor(#20068,#20072) +successor(#20066,#20103) +successor(#20101,#20068) numlines(#10000,4,4,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/importType.js.trap b/javascript/extractor/tests/flow/output/trap/importType.js.trap index c51c8058a27..51f24931866 100644 --- a/javascript/extractor/tests/flow/output/trap/importType.js.trap +++ b/javascript/extractor/tests/flow/output/trap/importType.js.trap @@ -9,222 +9,223 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,3,27" -locations_default(#20002,#10000,1,1,3,27) -hasLocation(#20001,#20002) -#20003=@"module;{#10000},1,1" -scopes(#20003,3) -scopenodes(#20001,#20003) -scopenesting(#20003,#20000) -isModule(#20001) -#20004=@"var;{type};{#20003}" -variables(#20004,"type",#20003) -#20005=@"local_type_name;{type};{#20003}" -local_type_names(#20005,"type",#20003) -#20006=@"local_namespace_name;{type};{#20003}" -local_namespace_names(#20006,"type",#20003) -variables(#20004,"type",#20003) -local_type_names(#20005,"type",#20003) -local_namespace_names(#20006,"type",#20003) -#20007=* -stmts(#20007,27,#20001,0,"import ... om 'm';") -#20008=@"loc,{#10000},1,1,1,45" -locations_default(#20008,#10000,1,1,1,45) -hasLocation(#20007,#20008) -stmtContainers(#20007,#20001) -#20009=* -exprs(#20009,4,#20007,-1,"'m'") -#20010=@"loc,{#10000},1,42,1,44" -locations_default(#20010,#10000,1,42,1,44) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20007) -exprContainers(#20009,#20001) -literals("m","'m'",#20009) -#20011=* -exprs(#20011,83,#20007,0,"type") -#20012=@"loc,{#10000},1,10,1,13" -locations_default(#20012,#10000,1,10,1,13) -hasLocation(#20011,#20012) -enclosingStmt(#20011,#20007) -exprContainers(#20011,#20001) -#20013=* -exprs(#20013,0,#20011,0,"type") -hasLocation(#20013,#20012) -enclosingStmt(#20013,#20007) -exprContainers(#20013,#20001) -literals("type","type",#20013) +#20002=* +lines(#20002,#20001,"import { type, type t1, typeof t2 } from 'm';"," +") +#20003=@"loc,{#10000},1,1,1,45" +locations_default(#20003,#10000,1,1,1,45) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"import { type t } from 'n';"," +") +#20005=@"loc,{#10000},2,1,2,27" +locations_default(#20005,#10000,2,1,2,27) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"import type { t } from 'o';","") +#20007=@"loc,{#10000},3,1,3,27" +locations_default(#20007,#10000,3,1,3,27) +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,8,#20001,1,"{") +#20011=@"loc,{#10000},1,8,1,8" +locations_default(#20011,#10000,1,8,1,8) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,6,#20001,2,"type") +#20013=@"loc,{#10000},1,10,1,13" +locations_default(#20013,#10000,1,10,1,13) +hasLocation(#20012,#20013) #20014=* -exprs(#20014,78,#20011,1,"type") -hasLocation(#20014,#20012) -enclosingStmt(#20014,#20007) -exprContainers(#20014,#20001) -literals("type","type",#20014) -decl(#20014,#20004) -typedecl(#20014,#20005) -namespacedecl(#20014,#20006) -#20015=* -lines(#20015,#20001,"import { type, type t1, typeof t2 } from 'm';"," -") -hasLocation(#20015,#20008) +tokeninfo(#20014,8,#20001,3,",") +#20015=@"loc,{#10000},1,14,1,14" +locations_default(#20015,#10000,1,14,1,14) +hasLocation(#20014,#20015) #20016=* -lines(#20016,#20001,"import { type t } from 'n';"," -") -#20017=@"loc,{#10000},2,1,2,27" -locations_default(#20017,#10000,2,1,2,27) +tokeninfo(#20016,6,#20001,4,"type") +#20017=@"loc,{#10000},1,16,1,19" +locations_default(#20017,#10000,1,16,1,19) hasLocation(#20016,#20017) #20018=* -lines(#20018,#20001,"import type { t } from 'o';","") -#20019=@"loc,{#10000},3,1,3,27" -locations_default(#20019,#10000,3,1,3,27) +tokeninfo(#20018,6,#20001,5,"t1") +#20019=@"loc,{#10000},1,21,1,22" +locations_default(#20019,#10000,1,21,1,22) hasLocation(#20018,#20019) -numlines(#20001,3,3,0) #20020=* -tokeninfo(#20020,7,#20001,0,"import") -#20021=@"loc,{#10000},1,1,1,6" -locations_default(#20021,#10000,1,1,1,6) +tokeninfo(#20020,8,#20001,6,",") +#20021=@"loc,{#10000},1,23,1,23" +locations_default(#20021,#10000,1,23,1,23) hasLocation(#20020,#20021) #20022=* -tokeninfo(#20022,8,#20001,1,"{") -#20023=@"loc,{#10000},1,8,1,8" -locations_default(#20023,#10000,1,8,1,8) +tokeninfo(#20022,7,#20001,7,"typeof") +#20023=@"loc,{#10000},1,25,1,30" +locations_default(#20023,#10000,1,25,1,30) hasLocation(#20022,#20023) #20024=* -tokeninfo(#20024,6,#20001,2,"type") -hasLocation(#20024,#20012) -#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,6,#20001,4,"type") -#20028=@"loc,{#10000},1,16,1,19" -locations_default(#20028,#10000,1,16,1,19) -hasLocation(#20027,#20028) -#20029=* -tokeninfo(#20029,6,#20001,5,"t1") -#20030=@"loc,{#10000},1,21,1,22" -locations_default(#20030,#10000,1,21,1,22) -hasLocation(#20029,#20030) -#20031=* -tokeninfo(#20031,8,#20001,6,",") -#20032=@"loc,{#10000},1,23,1,23" -locations_default(#20032,#10000,1,23,1,23) -hasLocation(#20031,#20032) -#20033=* -tokeninfo(#20033,7,#20001,7,"typeof") -#20034=@"loc,{#10000},1,25,1,30" -locations_default(#20034,#10000,1,25,1,30) -hasLocation(#20033,#20034) -#20035=* -tokeninfo(#20035,6,#20001,8,"t2") -#20036=@"loc,{#10000},1,32,1,33" -locations_default(#20036,#10000,1,32,1,33) -hasLocation(#20035,#20036) -#20037=* -tokeninfo(#20037,8,#20001,9,"}") -#20038=@"loc,{#10000},1,35,1,35" -locations_default(#20038,#10000,1,35,1,35) -hasLocation(#20037,#20038) -#20039=* -tokeninfo(#20039,6,#20001,10,"from") -#20040=@"loc,{#10000},1,37,1,40" -locations_default(#20040,#10000,1,37,1,40) -hasLocation(#20039,#20040) -#20041=* -tokeninfo(#20041,4,#20001,11,"'m'") -hasLocation(#20041,#20010) +tokeninfo(#20024,6,#20001,8,"t2") +#20025=@"loc,{#10000},1,32,1,33" +locations_default(#20025,#10000,1,32,1,33) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,9,"}") +#20027=@"loc,{#10000},1,35,1,35" +locations_default(#20027,#10000,1,35,1,35) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,6,#20001,10,"from") +#20029=@"loc,{#10000},1,37,1,40" +locations_default(#20029,#10000,1,37,1,40) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,4,#20001,11,"'m'") +#20031=@"loc,{#10000},1,42,1,44" +locations_default(#20031,#10000,1,42,1,44) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,12,";") +#20033=@"loc,{#10000},1,45,1,45" +locations_default(#20033,#10000,1,45,1,45) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,7,#20001,13,"import") +#20035=@"loc,{#10000},2,1,2,6" +locations_default(#20035,#10000,2,1,2,6) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,14,"{") +#20037=@"loc,{#10000},2,8,2,8" +locations_default(#20037,#10000,2,8,2,8) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,6,#20001,15,"type") +#20039=@"loc,{#10000},2,10,2,13" +locations_default(#20039,#10000,2,10,2,13) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,6,#20001,16,"t") +#20041=@"loc,{#10000},2,15,2,15" +locations_default(#20041,#10000,2,15,2,15) +hasLocation(#20040,#20041) #20042=* -tokeninfo(#20042,8,#20001,12,";") -#20043=@"loc,{#10000},1,45,1,45" -locations_default(#20043,#10000,1,45,1,45) +tokeninfo(#20042,8,#20001,17,"}") +#20043=@"loc,{#10000},2,17,2,17" +locations_default(#20043,#10000,2,17,2,17) hasLocation(#20042,#20043) #20044=* -tokeninfo(#20044,7,#20001,13,"import") -#20045=@"loc,{#10000},2,1,2,6" -locations_default(#20045,#10000,2,1,2,6) +tokeninfo(#20044,6,#20001,18,"from") +#20045=@"loc,{#10000},2,19,2,22" +locations_default(#20045,#10000,2,19,2,22) hasLocation(#20044,#20045) #20046=* -tokeninfo(#20046,8,#20001,14,"{") -#20047=@"loc,{#10000},2,8,2,8" -locations_default(#20047,#10000,2,8,2,8) +tokeninfo(#20046,4,#20001,19,"'n'") +#20047=@"loc,{#10000},2,24,2,26" +locations_default(#20047,#10000,2,24,2,26) hasLocation(#20046,#20047) #20048=* -tokeninfo(#20048,6,#20001,15,"type") -#20049=@"loc,{#10000},2,10,2,13" -locations_default(#20049,#10000,2,10,2,13) +tokeninfo(#20048,8,#20001,20,";") +#20049=@"loc,{#10000},2,27,2,27" +locations_default(#20049,#10000,2,27,2,27) hasLocation(#20048,#20049) #20050=* -tokeninfo(#20050,6,#20001,16,"t") -#20051=@"loc,{#10000},2,15,2,15" -locations_default(#20051,#10000,2,15,2,15) +tokeninfo(#20050,7,#20001,21,"import") +#20051=@"loc,{#10000},3,1,3,6" +locations_default(#20051,#10000,3,1,3,6) hasLocation(#20050,#20051) #20052=* -tokeninfo(#20052,8,#20001,17,"}") -#20053=@"loc,{#10000},2,17,2,17" -locations_default(#20053,#10000,2,17,2,17) +tokeninfo(#20052,6,#20001,22,"type") +#20053=@"loc,{#10000},3,8,3,11" +locations_default(#20053,#10000,3,8,3,11) hasLocation(#20052,#20053) #20054=* -tokeninfo(#20054,6,#20001,18,"from") -#20055=@"loc,{#10000},2,19,2,22" -locations_default(#20055,#10000,2,19,2,22) +tokeninfo(#20054,8,#20001,23,"{") +#20055=@"loc,{#10000},3,13,3,13" +locations_default(#20055,#10000,3,13,3,13) hasLocation(#20054,#20055) #20056=* -tokeninfo(#20056,4,#20001,19,"'n'") -#20057=@"loc,{#10000},2,24,2,26" -locations_default(#20057,#10000,2,24,2,26) +tokeninfo(#20056,6,#20001,24,"t") +#20057=@"loc,{#10000},3,15,3,15" +locations_default(#20057,#10000,3,15,3,15) hasLocation(#20056,#20057) #20058=* -tokeninfo(#20058,8,#20001,20,";") -#20059=@"loc,{#10000},2,27,2,27" -locations_default(#20059,#10000,2,27,2,27) +tokeninfo(#20058,8,#20001,25,"}") +#20059=@"loc,{#10000},3,17,3,17" +locations_default(#20059,#10000,3,17,3,17) hasLocation(#20058,#20059) #20060=* -tokeninfo(#20060,7,#20001,21,"import") -#20061=@"loc,{#10000},3,1,3,6" -locations_default(#20061,#10000,3,1,3,6) +tokeninfo(#20060,6,#20001,26,"from") +#20061=@"loc,{#10000},3,19,3,22" +locations_default(#20061,#10000,3,19,3,22) hasLocation(#20060,#20061) #20062=* -tokeninfo(#20062,6,#20001,22,"type") -#20063=@"loc,{#10000},3,8,3,11" -locations_default(#20063,#10000,3,8,3,11) +tokeninfo(#20062,4,#20001,27,"'o'") +#20063=@"loc,{#10000},3,24,3,26" +locations_default(#20063,#10000,3,24,3,26) hasLocation(#20062,#20063) #20064=* -tokeninfo(#20064,8,#20001,23,"{") -#20065=@"loc,{#10000},3,13,3,13" -locations_default(#20065,#10000,3,13,3,13) +tokeninfo(#20064,8,#20001,28,";") +#20065=@"loc,{#10000},3,27,3,27" +locations_default(#20065,#10000,3,27,3,27) hasLocation(#20064,#20065) #20066=* -tokeninfo(#20066,6,#20001,24,"t") -#20067=@"loc,{#10000},3,15,3,15" -locations_default(#20067,#10000,3,15,3,15) +tokeninfo(#20066,0,#20001,29,"") +#20067=@"loc,{#10000},3,28,3,27" +locations_default(#20067,#10000,3,28,3,27) hasLocation(#20066,#20067) -#20068=* -tokeninfo(#20068,8,#20001,25,"}") -#20069=@"loc,{#10000},3,17,3,17" -locations_default(#20069,#10000,3,17,3,17) -hasLocation(#20068,#20069) -#20070=* -tokeninfo(#20070,6,#20001,26,"from") -#20071=@"loc,{#10000},3,19,3,22" -locations_default(#20071,#10000,3,19,3,22) -hasLocation(#20070,#20071) -#20072=* -tokeninfo(#20072,4,#20001,27,"'o'") -#20073=@"loc,{#10000},3,24,3,26" -locations_default(#20073,#10000,3,24,3,26) -hasLocation(#20072,#20073) +toplevels(#20001,0) +#20068=@"loc,{#10000},1,1,3,27" +locations_default(#20068,#10000,1,1,3,27) +hasLocation(#20001,#20068) +#20069=@"module;{#10000},1,1" +scopes(#20069,3) +scopenodes(#20001,#20069) +scopenesting(#20069,#20000) +isModule(#20001) +isES2015Module(#20001) +#20070=@"var;{type};{#20069}" +variables(#20070,"type",#20069) +#20071=@"local_type_name;{type};{#20069}" +local_type_names(#20071,"type",#20069) +#20072=@"local_namespace_name;{type};{#20069}" +local_namespace_names(#20072,"type",#20069) +variables(#20070,"type",#20069) +local_type_names(#20071,"type",#20069) +local_namespace_names(#20072,"type",#20069) +#20073=* +stmts(#20073,27,#20001,0,"import ... om 'm';") +hasLocation(#20073,#20003) +stmtContainers(#20073,#20001) #20074=* -tokeninfo(#20074,8,#20001,28,";") -#20075=@"loc,{#10000},3,27,3,27" -locations_default(#20075,#10000,3,27,3,27) -hasLocation(#20074,#20075) +exprs(#20074,4,#20073,-1,"'m'") +hasLocation(#20074,#20031) +enclosingStmt(#20074,#20073) +exprContainers(#20074,#20001) +literals("m","'m'",#20074) +#20075=* +exprs(#20075,83,#20073,0,"type") +hasLocation(#20075,#20013) +enclosingStmt(#20075,#20073) +exprContainers(#20075,#20001) #20076=* -tokeninfo(#20076,0,#20001,29,"") -#20077=@"loc,{#10000},3,28,3,27" -locations_default(#20077,#10000,3,28,3,27) -hasLocation(#20076,#20077) +exprs(#20076,0,#20075,0,"type") +hasLocation(#20076,#20013) +enclosingStmt(#20076,#20073) +exprContainers(#20076,#20001) +literals("type","type",#20076) +#20077=* +exprs(#20077,78,#20075,1,"type") +hasLocation(#20077,#20013) +enclosingStmt(#20077,#20073) +exprContainers(#20077,#20001) +literals("type","type",#20077) +decl(#20077,#20070) +typedecl(#20077,#20071) +namespacedecl(#20077,#20072) #20078=* entry_cfg_node(#20078,#20001) #20079=@"loc,{#10000},1,1,1,0" @@ -232,9 +233,9 @@ locations_default(#20079,#10000,1,1,1,0) hasLocation(#20078,#20079) #20080=* exit_cfg_node(#20080,#20001) -hasLocation(#20080,#20077) -successor(#20007,#20080) -successor(#20011,#20007) -successor(#20078,#20011) +hasLocation(#20080,#20067) +successor(#20073,#20080) +successor(#20075,#20073) +successor(#20078,#20075) numlines(#10000,3,3,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/importTypeInDeclaredModule.js.trap b/javascript/extractor/tests/flow/output/trap/importTypeInDeclaredModule.js.trap index b04016f5951..a4feff6195c 100644 --- a/javascript/extractor/tests/flow/output/trap/importTypeInDeclaredModule.js.trap +++ b/javascript/extractor/tests/flow/output/trap/importTypeInDeclaredModule.js.trap @@ -9,207 +9,208 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,11,2" -locations_default(#20002,#10000,1,1,11,2) -hasLocation(#20001,#20002) -#20003=@"module;{#10000},1,1" -scopes(#20003,3) -scopenodes(#20001,#20003) -scopenesting(#20003,#20000) -isModule(#20001) +#20002=* +lines(#20002,#20001,"declare module ""m1"" {"," +") +#20003=@"loc,{#10000},1,1,1,21" +locations_default(#20003,#10000,1,1,1,21) +hasLocation(#20002,#20003) #20004=* -lines(#20004,#20001,"declare module ""m1"" {"," +lines(#20004,#20001," import type {"," ") -#20005=@"loc,{#10000},1,1,1,21" -locations_default(#20005,#10000,1,1,1,21) +#20005=@"loc,{#10000},2,1,2,15" +locations_default(#20005,#10000,2,1,2,15) hasLocation(#20004,#20005) -#20006=* -lines(#20006,#20001," import type {"," -") -#20007=@"loc,{#10000},2,1,2,15" -locations_default(#20007,#10000,2,1,2,15) -hasLocation(#20006,#20007) indentation(#10000,2," ",2) -#20008=* -lines(#20008,#20001," T1,"," +#20006=* +lines(#20006,#20001," T1,"," ") -#20009=@"loc,{#10000},3,1,3,7" -locations_default(#20009,#10000,3,1,3,7) -hasLocation(#20008,#20009) +#20007=@"loc,{#10000},3,1,3,7" +locations_default(#20007,#10000,3,1,3,7) +hasLocation(#20006,#20007) indentation(#10000,3," ",4) -#20010=* -lines(#20010,#20001," T2"," +#20008=* +lines(#20008,#20001," T2"," ") -#20011=@"loc,{#10000},4,1,4,6" -locations_default(#20011,#10000,4,1,4,6) -hasLocation(#20010,#20011) +#20009=@"loc,{#10000},4,1,4,6" +locations_default(#20009,#10000,4,1,4,6) +hasLocation(#20008,#20009) indentation(#10000,4," ",4) -#20012=* -lines(#20012,#20001," } from ""m2"""," +#20010=* +lines(#20010,#20001," } from ""m2"""," ") -#20013=@"loc,{#10000},5,1,5,13" -locations_default(#20013,#10000,5,1,5,13) -hasLocation(#20012,#20013) +#20011=@"loc,{#10000},5,1,5,13" +locations_default(#20011,#10000,5,1,5,13) +hasLocation(#20010,#20011) indentation(#10000,5," ",2) -#20014=* -lines(#20014,#20001," import typeof {"," +#20012=* +lines(#20012,#20001," import typeof {"," ") -#20015=@"loc,{#10000},6,1,6,19" -locations_default(#20015,#10000,6,1,6,19) -hasLocation(#20014,#20015) +#20013=@"loc,{#10000},6,1,6,19" +locations_default(#20013,#10000,6,1,6,19) +hasLocation(#20012,#20013) indentation(#10000,6," ",4) -#20016=* -lines(#20016,#20001," T3,"," +#20014=* +lines(#20014,#20001," T3,"," ") -#20017=@"loc,{#10000},7,1,7,7" -locations_default(#20017,#10000,7,1,7,7) -hasLocation(#20016,#20017) +#20015=@"loc,{#10000},7,1,7,7" +locations_default(#20015,#10000,7,1,7,7) +hasLocation(#20014,#20015) indentation(#10000,7," ",4) -#20018=* -lines(#20018,#20001," T4"," +#20016=* +lines(#20016,#20001," T4"," ") -#20019=@"loc,{#10000},8,1,8,6" -locations_default(#20019,#10000,8,1,8,6) -hasLocation(#20018,#20019) +#20017=@"loc,{#10000},8,1,8,6" +locations_default(#20017,#10000,8,1,8,6) +hasLocation(#20016,#20017) indentation(#10000,8," ",4) -#20020=* -lines(#20020,#20001," } from ""m3"""," +#20018=* +lines(#20018,#20001," } from ""m3"""," ") -#20021=@"loc,{#10000},9,1,9,13" -locations_default(#20021,#10000,9,1,9,13) -hasLocation(#20020,#20021) +#20019=@"loc,{#10000},9,1,9,13" +locations_default(#20019,#10000,9,1,9,13) +hasLocation(#20018,#20019) indentation(#10000,9," ",2) -#20022=* -lines(#20022,#20001,"}"," +#20020=* +lines(#20020,#20001,"}"," ") -#20023=@"loc,{#10000},10,1,10,1" -locations_default(#20023,#10000,10,1,10,1) +#20021=@"loc,{#10000},10,1,10,1" +locations_default(#20021,#10000,10,1,10,1) +hasLocation(#20020,#20021) +#20022=* +lines(#20022,#20001," ","") +#20023=@"loc,{#10000},11,1,11,2" +locations_default(#20023,#10000,11,1,11,2) hasLocation(#20022,#20023) -#20024=* -lines(#20024,#20001," ","") -#20025=@"loc,{#10000},11,1,11,2" -locations_default(#20025,#10000,11,1,11,2) -hasLocation(#20024,#20025) numlines(#20001,11,10,0) +#20024=* +tokeninfo(#20024,6,#20001,0,"declare") +#20025=@"loc,{#10000},1,1,1,7" +locations_default(#20025,#10000,1,1,1,7) +hasLocation(#20024,#20025) #20026=* -tokeninfo(#20026,6,#20001,0,"declare") -#20027=@"loc,{#10000},1,1,1,7" -locations_default(#20027,#10000,1,1,1,7) +tokeninfo(#20026,6,#20001,1,"module") +#20027=@"loc,{#10000},1,9,1,14" +locations_default(#20027,#10000,1,9,1,14) hasLocation(#20026,#20027) #20028=* -tokeninfo(#20028,6,#20001,1,"module") -#20029=@"loc,{#10000},1,9,1,14" -locations_default(#20029,#10000,1,9,1,14) +tokeninfo(#20028,4,#20001,2,"""m1""") +#20029=@"loc,{#10000},1,16,1,19" +locations_default(#20029,#10000,1,16,1,19) hasLocation(#20028,#20029) #20030=* -tokeninfo(#20030,4,#20001,2,"""m1""") -#20031=@"loc,{#10000},1,16,1,19" -locations_default(#20031,#10000,1,16,1,19) +tokeninfo(#20030,8,#20001,3,"{") +#20031=@"loc,{#10000},1,21,1,21" +locations_default(#20031,#10000,1,21,1,21) hasLocation(#20030,#20031) #20032=* -tokeninfo(#20032,8,#20001,3,"{") -#20033=@"loc,{#10000},1,21,1,21" -locations_default(#20033,#10000,1,21,1,21) +tokeninfo(#20032,7,#20001,4,"import") +#20033=@"loc,{#10000},2,3,2,8" +locations_default(#20033,#10000,2,3,2,8) hasLocation(#20032,#20033) #20034=* -tokeninfo(#20034,7,#20001,4,"import") -#20035=@"loc,{#10000},2,3,2,8" -locations_default(#20035,#10000,2,3,2,8) +tokeninfo(#20034,6,#20001,5,"type") +#20035=@"loc,{#10000},2,10,2,13" +locations_default(#20035,#10000,2,10,2,13) hasLocation(#20034,#20035) #20036=* -tokeninfo(#20036,6,#20001,5,"type") -#20037=@"loc,{#10000},2,10,2,13" -locations_default(#20037,#10000,2,10,2,13) +tokeninfo(#20036,8,#20001,6,"{") +#20037=@"loc,{#10000},2,15,2,15" +locations_default(#20037,#10000,2,15,2,15) hasLocation(#20036,#20037) #20038=* -tokeninfo(#20038,8,#20001,6,"{") -#20039=@"loc,{#10000},2,15,2,15" -locations_default(#20039,#10000,2,15,2,15) +tokeninfo(#20038,6,#20001,7,"T1") +#20039=@"loc,{#10000},3,5,3,6" +locations_default(#20039,#10000,3,5,3,6) hasLocation(#20038,#20039) #20040=* -tokeninfo(#20040,6,#20001,7,"T1") -#20041=@"loc,{#10000},3,5,3,6" -locations_default(#20041,#10000,3,5,3,6) +tokeninfo(#20040,8,#20001,8,",") +#20041=@"loc,{#10000},3,7,3,7" +locations_default(#20041,#10000,3,7,3,7) hasLocation(#20040,#20041) #20042=* -tokeninfo(#20042,8,#20001,8,",") -#20043=@"loc,{#10000},3,7,3,7" -locations_default(#20043,#10000,3,7,3,7) +tokeninfo(#20042,6,#20001,9,"T2") +#20043=@"loc,{#10000},4,5,4,6" +locations_default(#20043,#10000,4,5,4,6) hasLocation(#20042,#20043) #20044=* -tokeninfo(#20044,6,#20001,9,"T2") -#20045=@"loc,{#10000},4,5,4,6" -locations_default(#20045,#10000,4,5,4,6) +tokeninfo(#20044,8,#20001,10,"}") +#20045=@"loc,{#10000},5,3,5,3" +locations_default(#20045,#10000,5,3,5,3) hasLocation(#20044,#20045) #20046=* -tokeninfo(#20046,8,#20001,10,"}") -#20047=@"loc,{#10000},5,3,5,3" -locations_default(#20047,#10000,5,3,5,3) +tokeninfo(#20046,6,#20001,11,"from") +#20047=@"loc,{#10000},5,5,5,8" +locations_default(#20047,#10000,5,5,5,8) hasLocation(#20046,#20047) #20048=* -tokeninfo(#20048,6,#20001,11,"from") -#20049=@"loc,{#10000},5,5,5,8" -locations_default(#20049,#10000,5,5,5,8) +tokeninfo(#20048,4,#20001,12,"""m2""") +#20049=@"loc,{#10000},5,10,5,13" +locations_default(#20049,#10000,5,10,5,13) hasLocation(#20048,#20049) #20050=* -tokeninfo(#20050,4,#20001,12,"""m2""") -#20051=@"loc,{#10000},5,10,5,13" -locations_default(#20051,#10000,5,10,5,13) +tokeninfo(#20050,7,#20001,13,"import") +#20051=@"loc,{#10000},6,5,6,10" +locations_default(#20051,#10000,6,5,6,10) hasLocation(#20050,#20051) #20052=* -tokeninfo(#20052,7,#20001,13,"import") -#20053=@"loc,{#10000},6,5,6,10" -locations_default(#20053,#10000,6,5,6,10) +tokeninfo(#20052,7,#20001,14,"typeof") +#20053=@"loc,{#10000},6,12,6,17" +locations_default(#20053,#10000,6,12,6,17) hasLocation(#20052,#20053) #20054=* -tokeninfo(#20054,7,#20001,14,"typeof") -#20055=@"loc,{#10000},6,12,6,17" -locations_default(#20055,#10000,6,12,6,17) +tokeninfo(#20054,8,#20001,15,"{") +#20055=@"loc,{#10000},6,19,6,19" +locations_default(#20055,#10000,6,19,6,19) hasLocation(#20054,#20055) #20056=* -tokeninfo(#20056,8,#20001,15,"{") -#20057=@"loc,{#10000},6,19,6,19" -locations_default(#20057,#10000,6,19,6,19) +tokeninfo(#20056,6,#20001,16,"T3") +#20057=@"loc,{#10000},7,5,7,6" +locations_default(#20057,#10000,7,5,7,6) hasLocation(#20056,#20057) #20058=* -tokeninfo(#20058,6,#20001,16,"T3") -#20059=@"loc,{#10000},7,5,7,6" -locations_default(#20059,#10000,7,5,7,6) +tokeninfo(#20058,8,#20001,17,",") +#20059=@"loc,{#10000},7,7,7,7" +locations_default(#20059,#10000,7,7,7,7) hasLocation(#20058,#20059) #20060=* -tokeninfo(#20060,8,#20001,17,",") -#20061=@"loc,{#10000},7,7,7,7" -locations_default(#20061,#10000,7,7,7,7) +tokeninfo(#20060,6,#20001,18,"T4") +#20061=@"loc,{#10000},8,5,8,6" +locations_default(#20061,#10000,8,5,8,6) hasLocation(#20060,#20061) #20062=* -tokeninfo(#20062,6,#20001,18,"T4") -#20063=@"loc,{#10000},8,5,8,6" -locations_default(#20063,#10000,8,5,8,6) +tokeninfo(#20062,8,#20001,19,"}") +#20063=@"loc,{#10000},9,3,9,3" +locations_default(#20063,#10000,9,3,9,3) hasLocation(#20062,#20063) #20064=* -tokeninfo(#20064,8,#20001,19,"}") -#20065=@"loc,{#10000},9,3,9,3" -locations_default(#20065,#10000,9,3,9,3) +tokeninfo(#20064,6,#20001,20,"from") +#20065=@"loc,{#10000},9,5,9,8" +locations_default(#20065,#10000,9,5,9,8) hasLocation(#20064,#20065) #20066=* -tokeninfo(#20066,6,#20001,20,"from") -#20067=@"loc,{#10000},9,5,9,8" -locations_default(#20067,#10000,9,5,9,8) +tokeninfo(#20066,4,#20001,21,"""m3""") +#20067=@"loc,{#10000},9,10,9,13" +locations_default(#20067,#10000,9,10,9,13) hasLocation(#20066,#20067) #20068=* -tokeninfo(#20068,4,#20001,21,"""m3""") -#20069=@"loc,{#10000},9,10,9,13" -locations_default(#20069,#10000,9,10,9,13) -hasLocation(#20068,#20069) -#20070=* -tokeninfo(#20070,8,#20001,22,"}") -hasLocation(#20070,#20023) -#20071=* -tokeninfo(#20071,0,#20001,23,"") -#20072=@"loc,{#10000},11,3,11,2" -locations_default(#20072,#10000,11,3,11,2) -hasLocation(#20071,#20072) +tokeninfo(#20068,8,#20001,22,"}") +hasLocation(#20068,#20021) +#20069=* +tokeninfo(#20069,0,#20001,23,"") +#20070=@"loc,{#10000},11,3,11,2" +locations_default(#20070,#10000,11,3,11,2) +hasLocation(#20069,#20070) +toplevels(#20001,0) +#20071=@"loc,{#10000},1,1,11,2" +locations_default(#20071,#10000,1,1,11,2) +hasLocation(#20001,#20071) +#20072=@"module;{#10000},1,1" +scopes(#20072,3) +scopenodes(#20001,#20072) +scopenesting(#20072,#20000) +isModule(#20001) +isES2015Module(#20001) #20073=* entry_cfg_node(#20073,#20001) #20074=@"loc,{#10000},1,1,1,0" @@ -217,7 +218,7 @@ locations_default(#20074,#10000,1,1,1,0) hasLocation(#20073,#20074) #20075=* exit_cfg_node(#20075,#20001) -hasLocation(#20075,#20072) +hasLocation(#20075,#20070) successor(#20073,#20075) numlines(#10000,11,10,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/methodTypeParams.js.trap b/javascript/extractor/tests/flow/output/trap/methodTypeParams.js.trap index d318d7e3502..7dca261469c 100644 --- a/javascript/extractor/tests/flow/output/trap/methodTypeParams.js.trap +++ b/javascript/extractor/tests/flow/output/trap/methodTypeParams.js.trap @@ -9,224 +9,223 @@ 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;{o};{#20000}" -variables(#20003,"o",#20000) -#20004=* -stmts(#20004,18,#20001,0,"var o = ... ;\n }\n}") -hasLocation(#20004,#20002) -stmtContainers(#20004,#20001) -#20005=* -exprs(#20005,64,#20004,0,"o = {\n ... ;\n }\n}") -#20006=@"loc,{#10000},1,5,5,1" -locations_default(#20006,#10000,1,5,5,1) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20004) -exprContainers(#20005,#20001) -#20007=* -exprs(#20007,78,#20005,0,"o") -#20008=@"loc,{#10000},1,5,1,5" -locations_default(#20008,#10000,1,5,1,5) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20004) -exprContainers(#20007,#20001) -literals("o","o",#20007) -decl(#20007,#20003) -#20009=* -exprs(#20009,8,#20005,1,"{\n id< ... ;\n }\n}") -#20010=@"loc,{#10000},1,9,5,1" -locations_default(#20010,#10000,1,9,5,1) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20004) -exprContainers(#20009,#20001) -#20011=* -properties(#20011,#20009,0,0,"id(a ... a;\n }") -#20012=@"loc,{#10000},2,3,4,3" -locations_default(#20012,#10000,2,3,4,3) -hasLocation(#20011,#20012) -#20013=* -exprs(#20013,0,#20011,0,"id") -#20014=@"loc,{#10000},2,3,2,4" -locations_default(#20014,#10000,2,3,2,4) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20004) -exprContainers(#20013,#20001) -literals("id","id",#20013) -#20015=* -exprs(#20015,9,#20011,1,"(a : A) ... a;\n }") -#20016=@"loc,{#10000},2,8,4,3" -locations_default(#20016,#10000,2,8,4,3) -hasLocation(#20015,#20016) -enclosingStmt(#20015,#20004) -exprContainers(#20015,#20001) -#20017=* -scopes(#20017,1) -scopenodes(#20015,#20017) -scopenesting(#20017,#20000) -#20018=@"var;{a};{#20017}" -variables(#20018,"a",#20017) -#20019=* -exprs(#20019,78,#20015,0,"a : A") -#20020=@"loc,{#10000},2,9,2,13" -locations_default(#20020,#10000,2,9,2,13) -hasLocation(#20019,#20020) -exprContainers(#20019,#20015) -literals("a","a",#20019) -decl(#20019,#20018) -#20021=@"var;{arguments};{#20017}" -variables(#20021,"arguments",#20017) -isArgumentsObject(#20021) -#20022=* -stmts(#20022,1,#20015,-2,"{\n return a;\n }") -#20023=@"loc,{#10000},2,16,4,3" -locations_default(#20023,#10000,2,16,4,3) -hasLocation(#20022,#20023) -stmtContainers(#20022,#20015) -#20024=* -stmts(#20024,9,#20022,0,"return a;") -#20025=@"loc,{#10000},3,5,3,13" -locations_default(#20025,#10000,3,5,3,13) -hasLocation(#20024,#20025) -stmtContainers(#20024,#20015) -#20026=* -exprs(#20026,79,#20024,0,"a") -#20027=@"loc,{#10000},3,12,3,12" -locations_default(#20027,#10000,3,12,3,12) -hasLocation(#20026,#20027) -enclosingStmt(#20026,#20024) -exprContainers(#20026,#20015) -literals("a","a",#20026) -bind(#20026,#20018) -numlines(#20015,3,3,0) -isMethod(#20011) -#20028=* -lines(#20028,#20001,"var o = {"," +#20002=* +lines(#20002,#20001,"var o = {"," ") -#20029=@"loc,{#10000},1,1,1,9" -locations_default(#20029,#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," id(a : A) {"," +") +#20005=@"loc,{#10000},2,1,2,16" +locations_default(#20005,#10000,2,1,2,16) +hasLocation(#20004,#20005) +indentation(#10000,2," ",2) +#20006=* +lines(#20006,#20001," return a;"," +") +#20007=@"loc,{#10000},3,1,3,13" +locations_default(#20007,#10000,3,1,3,13) +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,"var") +#20013=@"loc,{#10000},1,1,1,3" +locations_default(#20013,#10000,1,1,1,3) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,6,#20001,1,"o") +#20015=@"loc,{#10000},1,5,1,5" +locations_default(#20015,#10000,1,5,1,5) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,2,"=") +#20017=@"loc,{#10000},1,7,1,7" +locations_default(#20017,#10000,1,7,1,7) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,3,"{") +#20019=@"loc,{#10000},1,9,1,9" +locations_default(#20019,#10000,1,9,1,9) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,6,#20001,4,"id") +#20021=@"loc,{#10000},2,3,2,4" +locations_default(#20021,#10000,2,3,2,4) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,5,"<") +#20023=@"loc,{#10000},2,5,2,5" +locations_default(#20023,#10000,2,5,2,5) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,6,#20001,6,"A") +#20025=@"loc,{#10000},2,6,2,6" +locations_default(#20025,#10000,2,6,2,6) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,7,">") +#20027=@"loc,{#10000},2,7,2,7" +locations_default(#20027,#10000,2,7,2,7) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,8,"(") +#20029=@"loc,{#10000},2,8,2,8" +locations_default(#20029,#10000,2,8,2,8) hasLocation(#20028,#20029) #20030=* -lines(#20030,#20001," id(a : A) {"," -") -#20031=@"loc,{#10000},2,1,2,16" -locations_default(#20031,#10000,2,1,2,16) +tokeninfo(#20030,6,#20001,9,"a") +#20031=@"loc,{#10000},2,9,2,9" +locations_default(#20031,#10000,2,9,2,9) hasLocation(#20030,#20031) -indentation(#10000,2," ",2) #20032=* -lines(#20032,#20001," return a;"," -") -#20033=@"loc,{#10000},3,1,3,13" -locations_default(#20033,#10000,3,1,3,13) +tokeninfo(#20032,8,#20001,10,":") +#20033=@"loc,{#10000},2,11,2,11" +locations_default(#20033,#10000,2,11,2,11) hasLocation(#20032,#20033) -indentation(#10000,3," ",4) #20034=* -lines(#20034,#20001," }"," -") -#20035=@"loc,{#10000},4,1,4,3" -locations_default(#20035,#10000,4,1,4,3) +tokeninfo(#20034,6,#20001,11,"A") +#20035=@"loc,{#10000},2,13,2,13" +locations_default(#20035,#10000,2,13,2,13) hasLocation(#20034,#20035) -indentation(#10000,4," ",2) #20036=* -lines(#20036,#20001,"}","") -#20037=@"loc,{#10000},5,1,5,1" -locations_default(#20037,#10000,5,1,5,1) +tokeninfo(#20036,8,#20001,12,")") +#20037=@"loc,{#10000},2,14,2,14" +locations_default(#20037,#10000,2,14,2,14) hasLocation(#20036,#20037) -numlines(#20001,5,5,0) #20038=* -tokeninfo(#20038,7,#20001,0,"var") -#20039=@"loc,{#10000},1,1,1,3" -locations_default(#20039,#10000,1,1,1,3) +tokeninfo(#20038,8,#20001,13,"{") +#20039=@"loc,{#10000},2,16,2,16" +locations_default(#20039,#10000,2,16,2,16) hasLocation(#20038,#20039) #20040=* -tokeninfo(#20040,6,#20001,1,"o") -hasLocation(#20040,#20008) -#20041=* -tokeninfo(#20041,8,#20001,2,"=") -#20042=@"loc,{#10000},1,7,1,7" -locations_default(#20042,#10000,1,7,1,7) -hasLocation(#20041,#20042) -#20043=* -tokeninfo(#20043,8,#20001,3,"{") -#20044=@"loc,{#10000},1,9,1,9" -locations_default(#20044,#10000,1,9,1,9) -hasLocation(#20043,#20044) -#20045=* -tokeninfo(#20045,6,#20001,4,"id") -hasLocation(#20045,#20014) +tokeninfo(#20040,7,#20001,14,"return") +#20041=@"loc,{#10000},3,5,3,10" +locations_default(#20041,#10000,3,5,3,10) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,6,#20001,15,"a") +#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,13,3,13" +locations_default(#20045,#10000,3,13,3,13) +hasLocation(#20044,#20045) #20046=* -tokeninfo(#20046,8,#20001,5,"<") -#20047=@"loc,{#10000},2,5,2,5" -locations_default(#20047,#10000,2,5,2,5) +tokeninfo(#20046,8,#20001,17,"}") +#20047=@"loc,{#10000},4,3,4,3" +locations_default(#20047,#10000,4,3,4,3) hasLocation(#20046,#20047) #20048=* -tokeninfo(#20048,6,#20001,6,"A") -#20049=@"loc,{#10000},2,6,2,6" -locations_default(#20049,#10000,2,6,2,6) -hasLocation(#20048,#20049) -#20050=* -tokeninfo(#20050,8,#20001,7,">") -#20051=@"loc,{#10000},2,7,2,7" -locations_default(#20051,#10000,2,7,2,7) -hasLocation(#20050,#20051) -#20052=* -tokeninfo(#20052,8,#20001,8,"(") -#20053=@"loc,{#10000},2,8,2,8" -locations_default(#20053,#10000,2,8,2,8) -hasLocation(#20052,#20053) +tokeninfo(#20048,8,#20001,18,"}") +hasLocation(#20048,#20011) +#20049=* +tokeninfo(#20049,0,#20001,19,"") +#20050=@"loc,{#10000},5,2,5,1" +locations_default(#20050,#10000,5,2,5,1) +hasLocation(#20049,#20050) +toplevels(#20001,0) +#20051=@"loc,{#10000},1,1,5,1" +locations_default(#20051,#10000,1,1,5,1) +hasLocation(#20001,#20051) +#20052=@"var;{o};{#20000}" +variables(#20052,"o",#20000) +#20053=* +stmts(#20053,18,#20001,0,"var o = ... ;\n }\n}") +hasLocation(#20053,#20051) +stmtContainers(#20053,#20001) #20054=* -tokeninfo(#20054,6,#20001,9,"a") -#20055=@"loc,{#10000},2,9,2,9" -locations_default(#20055,#10000,2,9,2,9) +exprs(#20054,64,#20053,0,"o = {\n ... ;\n }\n}") +#20055=@"loc,{#10000},1,5,5,1" +locations_default(#20055,#10000,1,5,5,1) hasLocation(#20054,#20055) +enclosingStmt(#20054,#20053) +exprContainers(#20054,#20001) #20056=* -tokeninfo(#20056,8,#20001,10,":") -#20057=@"loc,{#10000},2,11,2,11" -locations_default(#20057,#10000,2,11,2,11) -hasLocation(#20056,#20057) -#20058=* -tokeninfo(#20058,6,#20001,11,"A") -#20059=@"loc,{#10000},2,13,2,13" -locations_default(#20059,#10000,2,13,2,13) -hasLocation(#20058,#20059) -#20060=* -tokeninfo(#20060,8,#20001,12,")") -#20061=@"loc,{#10000},2,14,2,14" -locations_default(#20061,#10000,2,14,2,14) -hasLocation(#20060,#20061) +exprs(#20056,78,#20054,0,"o") +hasLocation(#20056,#20015) +enclosingStmt(#20056,#20053) +exprContainers(#20056,#20001) +literals("o","o",#20056) +decl(#20056,#20052) +#20057=* +exprs(#20057,8,#20054,1,"{\n id< ... ;\n }\n}") +#20058=@"loc,{#10000},1,9,5,1" +locations_default(#20058,#10000,1,9,5,1) +hasLocation(#20057,#20058) +enclosingStmt(#20057,#20053) +exprContainers(#20057,#20001) +#20059=* +properties(#20059,#20057,0,0,"id(a ... a;\n }") +#20060=@"loc,{#10000},2,3,4,3" +locations_default(#20060,#10000,2,3,4,3) +hasLocation(#20059,#20060) +#20061=* +exprs(#20061,0,#20059,0,"id") +hasLocation(#20061,#20021) +enclosingStmt(#20061,#20053) +exprContainers(#20061,#20001) +literals("id","id",#20061) #20062=* -tokeninfo(#20062,8,#20001,13,"{") -#20063=@"loc,{#10000},2,16,2,16" -locations_default(#20063,#10000,2,16,2,16) +exprs(#20062,9,#20059,1,"(a : A) ... a;\n }") +#20063=@"loc,{#10000},2,8,4,3" +locations_default(#20063,#10000,2,8,4,3) hasLocation(#20062,#20063) +enclosingStmt(#20062,#20053) +exprContainers(#20062,#20001) #20064=* -tokeninfo(#20064,7,#20001,14,"return") -#20065=@"loc,{#10000},3,5,3,10" -locations_default(#20065,#10000,3,5,3,10) -hasLocation(#20064,#20065) +scopes(#20064,1) +scopenodes(#20062,#20064) +scopenesting(#20064,#20000) +#20065=@"var;{a};{#20064}" +variables(#20065,"a",#20064) #20066=* -tokeninfo(#20066,6,#20001,15,"a") -hasLocation(#20066,#20027) -#20067=* -tokeninfo(#20067,8,#20001,16,";") -#20068=@"loc,{#10000},3,13,3,13" -locations_default(#20068,#10000,3,13,3,13) -hasLocation(#20067,#20068) +exprs(#20066,78,#20062,0,"a : A") +#20067=@"loc,{#10000},2,9,2,13" +locations_default(#20067,#10000,2,9,2,13) +hasLocation(#20066,#20067) +exprContainers(#20066,#20062) +literals("a","a",#20066) +decl(#20066,#20065) +#20068=@"var;{arguments};{#20064}" +variables(#20068,"arguments",#20064) +isArgumentsObject(#20068) #20069=* -tokeninfo(#20069,8,#20001,17,"}") -#20070=@"loc,{#10000},4,3,4,3" -locations_default(#20070,#10000,4,3,4,3) +stmts(#20069,1,#20062,-2,"{\n return a;\n }") +#20070=@"loc,{#10000},2,16,4,3" +locations_default(#20070,#10000,2,16,4,3) hasLocation(#20069,#20070) +stmtContainers(#20069,#20062) #20071=* -tokeninfo(#20071,8,#20001,18,"}") -hasLocation(#20071,#20037) -#20072=* -tokeninfo(#20072,0,#20001,19,"") -#20073=@"loc,{#10000},5,2,5,1" -locations_default(#20073,#10000,5,2,5,1) -hasLocation(#20072,#20073) +stmts(#20071,9,#20069,0,"return a;") +#20072=@"loc,{#10000},3,5,3,13" +locations_default(#20072,#10000,3,5,3,13) +hasLocation(#20071,#20072) +stmtContainers(#20071,#20062) +#20073=* +exprs(#20073,79,#20071,0,"a") +hasLocation(#20073,#20043) +enclosingStmt(#20073,#20071) +exprContainers(#20073,#20062) +literals("a","a",#20073) +bind(#20073,#20065) +isMethod(#20059) #20074=* entry_cfg_node(#20074,#20001) #20075=@"loc,{#10000},1,1,1,0" @@ -234,29 +233,29 @@ locations_default(#20075,#10000,1,1,1,0) hasLocation(#20074,#20075) #20076=* exit_cfg_node(#20076,#20001) -hasLocation(#20076,#20073) -successor(#20004,#20007) -successor(#20009,#20013) -successor(#20015,#20011) +hasLocation(#20076,#20050) +successor(#20053,#20056) +successor(#20057,#20061) +successor(#20062,#20059) #20077=* -entry_cfg_node(#20077,#20015) +entry_cfg_node(#20077,#20062) #20078=@"loc,{#10000},2,8,2,7" locations_default(#20078,#10000,2,8,2,7) hasLocation(#20077,#20078) #20079=* -exit_cfg_node(#20079,#20015) +exit_cfg_node(#20079,#20062) #20080=@"loc,{#10000},4,4,4,3" locations_default(#20080,#10000,4,4,4,3) hasLocation(#20079,#20080) -successor(#20022,#20026) -successor(#20026,#20024) -successor(#20024,#20079) -successor(#20019,#20022) -successor(#20077,#20019) -successor(#20013,#20015) -successor(#20011,#20005) -successor(#20007,#20009) -successor(#20005,#20076) -successor(#20074,#20004) +successor(#20069,#20073) +successor(#20073,#20071) +successor(#20071,#20079) +successor(#20066,#20069) +successor(#20077,#20066) +successor(#20061,#20062) +successor(#20059,#20054) +successor(#20056,#20057) +successor(#20054,#20076) +successor(#20074,#20053) numlines(#10000,5,5,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/notExplicitTypeParameters1.js.trap b/javascript/extractor/tests/flow/output/trap/notExplicitTypeParameters1.js.trap index 6a0e61796be..02835947076 100644 --- a/javascript/extractor/tests/flow/output/trap/notExplicitTypeParameters1.js.trap +++ b/javascript/extractor/tests/flow/output/trap/notExplicitTypeParameters1.js.trap @@ -9,102 +9,102 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,1,8" -locations_default(#20002,#10000,1,1,1,8) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"1<2>(3);") -hasLocation(#20003,#20002) -stmtContainers(#20003,#20001) +#20002=* +lines(#20002,#20001,"1<2>(3);","") +#20003=@"loc,{#10000},1,1,1,8" +locations_default(#20003,#10000,1,1,1,8) +hasLocation(#20002,#20003) +numlines(#20001,1,1,0) #20004=* -exprs(#20004,29,#20003,0,"1<2>(3)") -#20005=@"loc,{#10000},1,1,1,7" -locations_default(#20005,#10000,1,1,1,7) +tokeninfo(#20004,3,#20001,0,"1") +#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,27,#20004,0,"1<2") -#20007=@"loc,{#10000},1,1,1,3" -locations_default(#20007,#10000,1,1,1,3) +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,3,#20006,0,"1") -#20009=@"loc,{#10000},1,1,1,1" -locations_default(#20009,#10000,1,1,1,1) +tokeninfo(#20008,3,#20001,2,"2") +#20009=@"loc,{#10000},1,3,1,3" +locations_default(#20009,#10000,1,3,1,3) hasLocation(#20008,#20009) -enclosingStmt(#20008,#20003) -exprContainers(#20008,#20001) -literals("1","1",#20008) #20010=* -exprs(#20010,3,#20006,1,"2") -#20011=@"loc,{#10000},1,3,1,3" -locations_default(#20011,#10000,1,3,1,3) +tokeninfo(#20010,8,#20001,3,">") +#20011=@"loc,{#10000},1,4,1,4" +locations_default(#20011,#10000,1,4,1,4) hasLocation(#20010,#20011) -enclosingStmt(#20010,#20003) -exprContainers(#20010,#20001) -literals("2","2",#20010) #20012=* -exprs(#20012,63,#20004,1,"(3)") -#20013=@"loc,{#10000},1,5,1,7" -locations_default(#20013,#10000,1,5,1,7) +tokeninfo(#20012,8,#20001,4,"(") +#20013=@"loc,{#10000},1,5,1,5" +locations_default(#20013,#10000,1,5,1,5) hasLocation(#20012,#20013) -enclosingStmt(#20012,#20003) -exprContainers(#20012,#20001) #20014=* -exprs(#20014,3,#20012,0,"3") +tokeninfo(#20014,3,#20001,5,"3") #20015=@"loc,{#10000},1,6,1,6" locations_default(#20015,#10000,1,6,1,6) hasLocation(#20014,#20015) -enclosingStmt(#20014,#20003) -exprContainers(#20014,#20001) -literals("3","3",#20014) #20016=* -lines(#20016,#20001,"1<2>(3);","") -hasLocation(#20016,#20002) -numlines(#20001,1,1,0) -#20017=* -tokeninfo(#20017,3,#20001,0,"1") -hasLocation(#20017,#20009) +tokeninfo(#20016,8,#20001,6,")") +#20017=@"loc,{#10000},1,7,1,7" +locations_default(#20017,#10000,1,7,1,7) +hasLocation(#20016,#20017) #20018=* -tokeninfo(#20018,8,#20001,1,"<") -#20019=@"loc,{#10000},1,2,1,2" -locations_default(#20019,#10000,1,2,1,2) +tokeninfo(#20018,8,#20001,7,";") +#20019=@"loc,{#10000},1,8,1,8" +locations_default(#20019,#10000,1,8,1,8) hasLocation(#20018,#20019) #20020=* -tokeninfo(#20020,3,#20001,2,"2") -hasLocation(#20020,#20011) -#20021=* -tokeninfo(#20021,8,#20001,3,">") -#20022=@"loc,{#10000},1,4,1,4" -locations_default(#20022,#10000,1,4,1,4) -hasLocation(#20021,#20022) +tokeninfo(#20020,0,#20001,8,"") +#20021=@"loc,{#10000},1,9,1,8" +locations_default(#20021,#10000,1,9,1,8) +hasLocation(#20020,#20021) +toplevels(#20001,0) +hasLocation(#20001,#20003) +#20022=* +stmts(#20022,2,#20001,0,"1<2>(3);") +hasLocation(#20022,#20003) +stmtContainers(#20022,#20001) #20023=* -tokeninfo(#20023,8,#20001,4,"(") -#20024=@"loc,{#10000},1,5,1,5" -locations_default(#20024,#10000,1,5,1,5) +exprs(#20023,29,#20022,0,"1<2>(3)") +#20024=@"loc,{#10000},1,1,1,7" +locations_default(#20024,#10000,1,1,1,7) hasLocation(#20023,#20024) +enclosingStmt(#20023,#20022) +exprContainers(#20023,#20001) #20025=* -tokeninfo(#20025,3,#20001,5,"3") -hasLocation(#20025,#20015) -#20026=* -tokeninfo(#20026,8,#20001,6,")") -#20027=@"loc,{#10000},1,7,1,7" -locations_default(#20027,#10000,1,7,1,7) -hasLocation(#20026,#20027) +exprs(#20025,27,#20023,0,"1<2") +#20026=@"loc,{#10000},1,1,1,3" +locations_default(#20026,#10000,1,1,1,3) +hasLocation(#20025,#20026) +enclosingStmt(#20025,#20022) +exprContainers(#20025,#20001) +#20027=* +exprs(#20027,3,#20025,0,"1") +hasLocation(#20027,#20005) +enclosingStmt(#20027,#20022) +exprContainers(#20027,#20001) +literals("1","1",#20027) #20028=* -tokeninfo(#20028,8,#20001,7,";") -#20029=@"loc,{#10000},1,8,1,8" -locations_default(#20029,#10000,1,8,1,8) -hasLocation(#20028,#20029) -#20030=* -tokeninfo(#20030,0,#20001,8,"") -#20031=@"loc,{#10000},1,9,1,8" -locations_default(#20031,#10000,1,9,1,8) -hasLocation(#20030,#20031) +exprs(#20028,3,#20025,1,"2") +hasLocation(#20028,#20009) +enclosingStmt(#20028,#20022) +exprContainers(#20028,#20001) +literals("2","2",#20028) +#20029=* +exprs(#20029,63,#20023,1,"(3)") +#20030=@"loc,{#10000},1,5,1,7" +locations_default(#20030,#10000,1,5,1,7) +hasLocation(#20029,#20030) +enclosingStmt(#20029,#20022) +exprContainers(#20029,#20001) +#20031=* +exprs(#20031,3,#20029,0,"3") +hasLocation(#20031,#20015) +enclosingStmt(#20031,#20022) +exprContainers(#20031,#20001) +literals("3","3",#20031) #20032=* entry_cfg_node(#20032,#20001) #20033=@"loc,{#10000},1,1,1,0" @@ -112,14 +112,14 @@ locations_default(#20033,#10000,1,1,1,0) hasLocation(#20032,#20033) #20034=* exit_cfg_node(#20034,#20001) -hasLocation(#20034,#20031) -successor(#20003,#20008) -successor(#20012,#20014) -successor(#20014,#20004) -successor(#20010,#20006) -successor(#20008,#20010) -successor(#20006,#20012) -successor(#20004,#20034) -successor(#20032,#20003) +hasLocation(#20034,#20021) +successor(#20022,#20027) +successor(#20029,#20031) +successor(#20031,#20023) +successor(#20028,#20025) +successor(#20027,#20028) +successor(#20025,#20029) +successor(#20023,#20034) +successor(#20032,#20022) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/notExplicitTypeParameters2.js.trap b/javascript/extractor/tests/flow/output/trap/notExplicitTypeParameters2.js.trap index 704eac45347..91993e392f0 100644 --- a/javascript/extractor/tests/flow/output/trap/notExplicitTypeParameters2.js.trap +++ b/javascript/extractor/tests/flow/output/trap/notExplicitTypeParameters2.js.trap @@ -9,145 +9,145 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,1,12" -locations_default(#20002,#10000,1,1,1,12) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"f(h());") -hasLocation(#20003,#20002) -stmtContainers(#20003,#20001) -#20004=* -exprs(#20004,29,#20003,0,"f(h())") -#20005=@"loc,{#10000},1,1,1,11" -locations_default(#20005,#10000,1,1,1,11) -hasLocation(#20004,#20005) -enclosingStmt(#20004,#20003) -exprContainers(#20004,#20001) -#20006=* -exprs(#20006,27,#20004,0,"f(h());","") -hasLocation(#20023,#20002) +#20002=* +lines(#20002,#20001,"f(h());","") +#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,6,#20001,0,"f") +#20005=@"loc,{#10000},1,1,1,1" +locations_default(#20005,#10000,1,1,1,1) +hasLocation(#20004,#20005) +#20006=* +tokeninfo(#20006,8,#20001,1,"<") +#20007=@"loc,{#10000},1,2,1,2" +locations_default(#20007,#10000,1,2,1,2) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,6,#20001,2,"g") +#20009=@"loc,{#10000},1,3,1,3" +locations_default(#20009,#10000,1,3,1,3) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,3,"(") +#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,6,1,6" +locations_default(#20015,#10000,1,6,1,6) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,6,"(") +#20017=@"loc,{#10000},1,7,1,7" +locations_default(#20017,#10000,1,7,1,7) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,6,#20001,7,"h") +#20019=@"loc,{#10000},1,8,1,8" +locations_default(#20019,#10000,1,8,1,8) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,8,"(") +#20021=@"loc,{#10000},1,9,1,9" +locations_default(#20021,#10000,1,9,1,9) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,9,")") +#20023=@"loc,{#10000},1,10,1,10" +locations_default(#20023,#10000,1,10,1,10) +hasLocation(#20022,#20023) #20024=* -tokeninfo(#20024,6,#20001,0,"f") -hasLocation(#20024,#20009) -#20025=* -tokeninfo(#20025,8,#20001,1,"<") -#20026=@"loc,{#10000},1,2,1,2" -locations_default(#20026,#10000,1,2,1,2) -hasLocation(#20025,#20026) -#20027=* -tokeninfo(#20027,6,#20001,2,"g") -hasLocation(#20027,#20014) +tokeninfo(#20024,8,#20001,10,")") +#20025=@"loc,{#10000},1,11,1,11" +locations_default(#20025,#10000,1,11,1,11) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,11,";") +#20027=@"loc,{#10000},1,12,1,12" +locations_default(#20027,#10000,1,12,1,12) +hasLocation(#20026,#20027) #20028=* -tokeninfo(#20028,8,#20001,3,"(") -#20029=@"loc,{#10000},1,4,1,4" -locations_default(#20029,#10000,1,4,1,4) +tokeninfo(#20028,0,#20001,12,"") +#20029=@"loc,{#10000},1,13,1,12" +locations_default(#20029,#10000,1,13,1,12) hasLocation(#20028,#20029) +toplevels(#20001,0) +hasLocation(#20001,#20003) #20030=* -tokeninfo(#20030,8,#20001,4,")") -#20031=@"loc,{#10000},1,5,1,5" -locations_default(#20031,#10000,1,5,1,5) -hasLocation(#20030,#20031) -#20032=* -tokeninfo(#20032,8,#20001,5,">") -#20033=@"loc,{#10000},1,6,1,6" -locations_default(#20033,#10000,1,6,1,6) -hasLocation(#20032,#20033) -#20034=* -tokeninfo(#20034,8,#20001,6,"(") -#20035=@"loc,{#10000},1,7,1,7" -locations_default(#20035,#10000,1,7,1,7) -hasLocation(#20034,#20035) -#20036=* -tokeninfo(#20036,6,#20001,7,"h") -hasLocation(#20036,#20021) +stmts(#20030,2,#20001,0,"f(h());") +hasLocation(#20030,#20003) +stmtContainers(#20030,#20001) +#20031=* +exprs(#20031,29,#20030,0,"f(h())") +#20032=@"loc,{#10000},1,1,1,11" +locations_default(#20032,#10000,1,1,1,11) +hasLocation(#20031,#20032) +enclosingStmt(#20031,#20030) +exprContainers(#20031,#20001) +#20033=* +exprs(#20033,27,#20031,0,"f(3);") -hasLocation(#20003,#20002) -stmtContainers(#20003,#20001) -#20004=* -exprs(#20004,29,#20003,0,"/x/<2>(3)") -#20005=@"loc,{#10000},1,1,1,9" -locations_default(#20005,#10000,1,1,1,9) -hasLocation(#20004,#20005) -enclosingStmt(#20004,#20003) -exprContainers(#20004,#20001) -#20006=* -exprs(#20006,27,#20004,0,"/x/<2") -#20007=@"loc,{#10000},1,1,1,5" -locations_default(#20007,#10000,1,1,1,5) -hasLocation(#20006,#20007) -enclosingStmt(#20006,#20003) -exprContainers(#20006,#20001) -#20008=* -exprs(#20008,5,#20006,0,"/x/") -#20009=@"loc,{#10000},1,1,1,3" -locations_default(#20009,#10000,1,1,1,3) -hasLocation(#20008,#20009) -enclosingStmt(#20008,#20003) -exprContainers(#20008,#20001) -literals("/x/","/x/",#20008) -#20010=* -regexpterm(#20010,14,#20008,0,"x") -#20011=@"loc,{#10000},1,2,1,2" -locations_default(#20011,#10000,1,2,1,2) -hasLocation(#20010,#20011) -regexpConstValue(#20010,"x") -#20012=* -exprs(#20012,3,#20006,1,"2") -#20013=@"loc,{#10000},1,5,1,5" -locations_default(#20013,#10000,1,5,1,5) -hasLocation(#20012,#20013) -enclosingStmt(#20012,#20003) -exprContainers(#20012,#20001) -literals("2","2",#20012) -#20014=* -exprs(#20014,63,#20004,1,"(3)") -#20015=@"loc,{#10000},1,7,1,9" -locations_default(#20015,#10000,1,7,1,9) -hasLocation(#20014,#20015) -enclosingStmt(#20014,#20003) -exprContainers(#20014,#20001) -#20016=* -exprs(#20016,3,#20014,0,"3") -#20017=@"loc,{#10000},1,8,1,8" -locations_default(#20017,#10000,1,8,1,8) -hasLocation(#20016,#20017) -enclosingStmt(#20016,#20003) -exprContainers(#20016,#20001) -literals("3","3",#20016) -#20018=* -lines(#20018,#20001,"/x/<2>(3);","") -hasLocation(#20018,#20002) +#20002=* +lines(#20002,#20001,"/x/<2>(3);","") +#20003=@"loc,{#10000},1,1,1,10" +locations_default(#20003,#10000,1,1,1,10) +hasLocation(#20002,#20003) numlines(#20001,1,1,0) -#20019=* -tokeninfo(#20019,5,#20001,0,"/x/") -hasLocation(#20019,#20009) +#20004=* +tokeninfo(#20004,5,#20001,0,"/x/") +#20005=@"loc,{#10000},1,1,1,3" +locations_default(#20005,#10000,1,1,1,3) +hasLocation(#20004,#20005) +#20006=* +tokeninfo(#20006,8,#20001,1,"<") +#20007=@"loc,{#10000},1,4,1,4" +locations_default(#20007,#10000,1,4,1,4) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,3,#20001,2,"2") +#20009=@"loc,{#10000},1,5,1,5" +locations_default(#20009,#10000,1,5,1,5) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,3,">") +#20011=@"loc,{#10000},1,6,1,6" +locations_default(#20011,#10000,1,6,1,6) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,8,#20001,4,"(") +#20013=@"loc,{#10000},1,7,1,7" +locations_default(#20013,#10000,1,7,1,7) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,3,#20001,5,"3") +#20015=@"loc,{#10000},1,8,1,8" +locations_default(#20015,#10000,1,8,1,8) +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,8,#20001,7,";") +#20019=@"loc,{#10000},1,10,1,10" +locations_default(#20019,#10000,1,10,1,10) +hasLocation(#20018,#20019) #20020=* -tokeninfo(#20020,8,#20001,1,"<") -#20021=@"loc,{#10000},1,4,1,4" -locations_default(#20021,#10000,1,4,1,4) +tokeninfo(#20020,0,#20001,8,"") +#20021=@"loc,{#10000},1,11,1,10" +locations_default(#20021,#10000,1,11,1,10) hasLocation(#20020,#20021) +toplevels(#20001,0) +hasLocation(#20001,#20003) #20022=* -tokeninfo(#20022,3,#20001,2,"2") -hasLocation(#20022,#20013) +stmts(#20022,2,#20001,0,"/x/<2>(3);") +hasLocation(#20022,#20003) +stmtContainers(#20022,#20001) #20023=* -tokeninfo(#20023,8,#20001,3,">") -#20024=@"loc,{#10000},1,6,1,6" -locations_default(#20024,#10000,1,6,1,6) +exprs(#20023,29,#20022,0,"/x/<2>(3)") +#20024=@"loc,{#10000},1,1,1,9" +locations_default(#20024,#10000,1,1,1,9) hasLocation(#20023,#20024) +enclosingStmt(#20023,#20022) +exprContainers(#20023,#20001) #20025=* -tokeninfo(#20025,8,#20001,4,"(") -#20026=@"loc,{#10000},1,7,1,7" -locations_default(#20026,#10000,1,7,1,7) +exprs(#20025,27,#20023,0,"/x/<2") +#20026=@"loc,{#10000},1,1,1,5" +locations_default(#20026,#10000,1,1,1,5) hasLocation(#20025,#20026) +enclosingStmt(#20025,#20022) +exprContainers(#20025,#20001) #20027=* -tokeninfo(#20027,3,#20001,5,"3") -hasLocation(#20027,#20017) +exprs(#20027,5,#20025,0,"/x/") +hasLocation(#20027,#20005) +enclosingStmt(#20027,#20022) +exprContainers(#20027,#20001) +literals("/x/","/x/",#20027) #20028=* -tokeninfo(#20028,8,#20001,6,")") -#20029=@"loc,{#10000},1,9,1,9" -locations_default(#20029,#10000,1,9,1,9) +regexpterm(#20028,14,#20027,0,"x") +#20029=@"loc,{#10000},1,2,1,2" +locations_default(#20029,#10000,1,2,1,2) hasLocation(#20028,#20029) +regexpConstValue(#20028,"x") #20030=* -tokeninfo(#20030,8,#20001,7,";") -#20031=@"loc,{#10000},1,10,1,10" -locations_default(#20031,#10000,1,10,1,10) -hasLocation(#20030,#20031) -#20032=* -tokeninfo(#20032,0,#20001,8,"") -#20033=@"loc,{#10000},1,11,1,10" -locations_default(#20033,#10000,1,11,1,10) -hasLocation(#20032,#20033) +exprs(#20030,3,#20025,1,"2") +hasLocation(#20030,#20009) +enclosingStmt(#20030,#20022) +exprContainers(#20030,#20001) +literals("2","2",#20030) +#20031=* +exprs(#20031,63,#20023,1,"(3)") +#20032=@"loc,{#10000},1,7,1,9" +locations_default(#20032,#10000,1,7,1,9) +hasLocation(#20031,#20032) +enclosingStmt(#20031,#20022) +exprContainers(#20031,#20001) +#20033=* +exprs(#20033,3,#20031,0,"3") +hasLocation(#20033,#20015) +enclosingStmt(#20033,#20022) +exprContainers(#20033,#20001) +literals("3","3",#20033) #20034=* entry_cfg_node(#20034,#20001) #20035=@"loc,{#10000},1,1,1,0" @@ -118,14 +118,14 @@ locations_default(#20035,#10000,1,1,1,0) hasLocation(#20034,#20035) #20036=* exit_cfg_node(#20036,#20001) -hasLocation(#20036,#20033) -successor(#20003,#20008) -successor(#20014,#20016) -successor(#20016,#20004) -successor(#20012,#20006) -successor(#20008,#20012) -successor(#20006,#20014) -successor(#20004,#20036) -successor(#20034,#20003) +hasLocation(#20036,#20021) +successor(#20022,#20027) +successor(#20031,#20033) +successor(#20033,#20023) +successor(#20030,#20025) +successor(#20027,#20030) +successor(#20025,#20031) +successor(#20023,#20036) +successor(#20034,#20022) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/objectTypeSpread.js.trap b/javascript/extractor/tests/flow/output/trap/objectTypeSpread.js.trap index 040ab76cb00..b3a181e0469 100644 --- a/javascript/extractor/tests/flow/output/trap/objectTypeSpread.js.trap +++ b/javascript/extractor/tests/flow/output/trap/objectTypeSpread.js.trap @@ -9,132 +9,132 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,2,29" -locations_default(#20002,#10000,1,1,2,29) -hasLocation(#20001,#20002) -#20003=* -lines(#20003,#20001,"type A = { x: int };"," +#20002=* +lines(#20002,#20001,"type A = { x: int };"," ") -#20004=@"loc,{#10000},1,1,1,20" -locations_default(#20004,#10000,1,1,1,20) -hasLocation(#20003,#20004) -#20005=* -lines(#20005,#20001,"type B = { ...A, y: string };","") -#20006=@"loc,{#10000},2,1,2,29" -locations_default(#20006,#10000,2,1,2,29) -hasLocation(#20005,#20006) +#20003=@"loc,{#10000},1,1,1,20" +locations_default(#20003,#10000,1,1,1,20) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"type B = { ...A, y: string };","") +#20005=@"loc,{#10000},2,1,2,29" +locations_default(#20005,#10000,2,1,2,29) +hasLocation(#20004,#20005) numlines(#20001,2,2,0) -#20007=* -tokeninfo(#20007,6,#20001,0,"type") -#20008=@"loc,{#10000},1,1,1,4" -locations_default(#20008,#10000,1,1,1,4) -hasLocation(#20007,#20008) -#20009=* -tokeninfo(#20009,6,#20001,1,"A") -#20010=@"loc,{#10000},1,6,1,6" -locations_default(#20010,#10000,1,6,1,6) -hasLocation(#20009,#20010) -#20011=* -tokeninfo(#20011,8,#20001,2,"=") -#20012=@"loc,{#10000},1,8,1,8" -locations_default(#20012,#10000,1,8,1,8) -hasLocation(#20011,#20012) -#20013=* -tokeninfo(#20013,8,#20001,3,"{") -#20014=@"loc,{#10000},1,10,1,10" -locations_default(#20014,#10000,1,10,1,10) -hasLocation(#20013,#20014) -#20015=* -tokeninfo(#20015,6,#20001,4,"x") -#20016=@"loc,{#10000},1,12,1,12" -locations_default(#20016,#10000,1,12,1,12) -hasLocation(#20015,#20016) -#20017=* -tokeninfo(#20017,8,#20001,5,":") -#20018=@"loc,{#10000},1,13,1,13" -locations_default(#20018,#10000,1,13,1,13) -hasLocation(#20017,#20018) -#20019=* -tokeninfo(#20019,6,#20001,6,"int") -#20020=@"loc,{#10000},1,15,1,17" -locations_default(#20020,#10000,1,15,1,17) -hasLocation(#20019,#20020) -#20021=* -tokeninfo(#20021,8,#20001,7,"}") -#20022=@"loc,{#10000},1,19,1,19" -locations_default(#20022,#10000,1,19,1,19) -hasLocation(#20021,#20022) -#20023=* -tokeninfo(#20023,8,#20001,8,";") -#20024=@"loc,{#10000},1,20,1,20" -locations_default(#20024,#10000,1,20,1,20) -hasLocation(#20023,#20024) -#20025=* -tokeninfo(#20025,6,#20001,9,"type") -#20026=@"loc,{#10000},2,1,2,4" -locations_default(#20026,#10000,2,1,2,4) -hasLocation(#20025,#20026) -#20027=* -tokeninfo(#20027,6,#20001,10,"B") -#20028=@"loc,{#10000},2,6,2,6" -locations_default(#20028,#10000,2,6,2,6) -hasLocation(#20027,#20028) -#20029=* -tokeninfo(#20029,8,#20001,11,"=") -#20030=@"loc,{#10000},2,8,2,8" -locations_default(#20030,#10000,2,8,2,8) -hasLocation(#20029,#20030) -#20031=* -tokeninfo(#20031,8,#20001,12,"{") -#20032=@"loc,{#10000},2,10,2,10" -locations_default(#20032,#10000,2,10,2,10) -hasLocation(#20031,#20032) -#20033=* -tokeninfo(#20033,8,#20001,13,"...") -#20034=@"loc,{#10000},2,12,2,14" -locations_default(#20034,#10000,2,12,2,14) -hasLocation(#20033,#20034) -#20035=* -tokeninfo(#20035,6,#20001,14,"A") -#20036=@"loc,{#10000},2,15,2,15" -locations_default(#20036,#10000,2,15,2,15) -hasLocation(#20035,#20036) -#20037=* -tokeninfo(#20037,8,#20001,15,",") -#20038=@"loc,{#10000},2,16,2,16" -locations_default(#20038,#10000,2,16,2,16) -hasLocation(#20037,#20038) -#20039=* -tokeninfo(#20039,6,#20001,16,"y") -#20040=@"loc,{#10000},2,18,2,18" -locations_default(#20040,#10000,2,18,2,18) -hasLocation(#20039,#20040) -#20041=* -tokeninfo(#20041,8,#20001,17,":") -#20042=@"loc,{#10000},2,19,2,19" -locations_default(#20042,#10000,2,19,2,19) -hasLocation(#20041,#20042) -#20043=* -tokeninfo(#20043,6,#20001,18,"string") -#20044=@"loc,{#10000},2,21,2,26" -locations_default(#20044,#10000,2,21,2,26) -hasLocation(#20043,#20044) -#20045=* -tokeninfo(#20045,8,#20001,19,"}") -#20046=@"loc,{#10000},2,28,2,28" -locations_default(#20046,#10000,2,28,2,28) -hasLocation(#20045,#20046) -#20047=* -tokeninfo(#20047,8,#20001,20,";") -#20048=@"loc,{#10000},2,29,2,29" -locations_default(#20048,#10000,2,29,2,29) -hasLocation(#20047,#20048) -#20049=* -tokeninfo(#20049,0,#20001,21,"") -#20050=@"loc,{#10000},2,30,2,29" -locations_default(#20050,#10000,2,30,2,29) -hasLocation(#20049,#20050) +#20006=* +tokeninfo(#20006,6,#20001,0,"type") +#20007=@"loc,{#10000},1,1,1,4" +locations_default(#20007,#10000,1,1,1,4) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,6,#20001,1,"A") +#20009=@"loc,{#10000},1,6,1,6" +locations_default(#20009,#10000,1,6,1,6) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,2,"=") +#20011=@"loc,{#10000},1,8,1,8" +locations_default(#20011,#10000,1,8,1,8) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,8,#20001,3,"{") +#20013=@"loc,{#10000},1,10,1,10" +locations_default(#20013,#10000,1,10,1,10) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,6,#20001,4,"x") +#20015=@"loc,{#10000},1,12,1,12" +locations_default(#20015,#10000,1,12,1,12) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,5,":") +#20017=@"loc,{#10000},1,13,1,13" +locations_default(#20017,#10000,1,13,1,13) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,6,#20001,6,"int") +#20019=@"loc,{#10000},1,15,1,17" +locations_default(#20019,#10000,1,15,1,17) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,7,"}") +#20021=@"loc,{#10000},1,19,1,19" +locations_default(#20021,#10000,1,19,1,19) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,8,";") +#20023=@"loc,{#10000},1,20,1,20" +locations_default(#20023,#10000,1,20,1,20) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,6,#20001,9,"type") +#20025=@"loc,{#10000},2,1,2,4" +locations_default(#20025,#10000,2,1,2,4) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,6,#20001,10,"B") +#20027=@"loc,{#10000},2,6,2,6" +locations_default(#20027,#10000,2,6,2,6) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,11,"=") +#20029=@"loc,{#10000},2,8,2,8" +locations_default(#20029,#10000,2,8,2,8) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,12,"{") +#20031=@"loc,{#10000},2,10,2,10" +locations_default(#20031,#10000,2,10,2,10) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,13,"...") +#20033=@"loc,{#10000},2,12,2,14" +locations_default(#20033,#10000,2,12,2,14) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,6,#20001,14,"A") +#20035=@"loc,{#10000},2,15,2,15" +locations_default(#20035,#10000,2,15,2,15) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,15,",") +#20037=@"loc,{#10000},2,16,2,16" +locations_default(#20037,#10000,2,16,2,16) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,6,#20001,16,"y") +#20039=@"loc,{#10000},2,18,2,18" +locations_default(#20039,#10000,2,18,2,18) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,17,":") +#20041=@"loc,{#10000},2,19,2,19" +locations_default(#20041,#10000,2,19,2,19) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,6,#20001,18,"string") +#20043=@"loc,{#10000},2,21,2,26" +locations_default(#20043,#10000,2,21,2,26) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,19,"}") +#20045=@"loc,{#10000},2,28,2,28" +locations_default(#20045,#10000,2,28,2,28) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,20,";") +#20047=@"loc,{#10000},2,29,2,29" +locations_default(#20047,#10000,2,29,2,29) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,0,#20001,21,"") +#20049=@"loc,{#10000},2,30,2,29" +locations_default(#20049,#10000,2,30,2,29) +hasLocation(#20048,#20049) +toplevels(#20001,0) +#20050=@"loc,{#10000},1,1,2,29" +locations_default(#20050,#10000,1,1,2,29) +hasLocation(#20001,#20050) #20051=* entry_cfg_node(#20051,#20001) #20052=@"loc,{#10000},1,1,1,0" @@ -142,7 +142,7 @@ locations_default(#20052,#10000,1,1,1,0) hasLocation(#20051,#20052) #20053=* exit_cfg_node(#20053,#20001) -hasLocation(#20053,#20050) +hasLocation(#20053,#20049) successor(#20051,#20053) numlines(#10000,2,2,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/optParms.js.trap b/javascript/extractor/tests/flow/output/trap/optParms.js.trap index 818a1af1573..19bca947ec6 100644 --- a/javascript/extractor/tests/flow/output/trap/optParms.js.trap +++ b/javascript/extractor/tests/flow/output/trap/optParms.js.trap @@ -9,248 +9,246 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,3,0" -locations_default(#20002,#10000,1,1,3,0) -hasLocation(#20001,#20002) -#20003=@"var;{f};{#20000}" -variables(#20003,"f",#20000) -#20004=@"var;{g};{#20000}" -variables(#20004,"g",#20000) -#20005=* -stmts(#20005,23,#20001,0,"let f = (x?) => {};") -#20006=@"loc,{#10000},1,1,1,19" -locations_default(#20006,#10000,1,1,1,19) -hasLocation(#20005,#20006) -stmtContainers(#20005,#20001) -#20007=* -exprs(#20007,64,#20005,0,"f = (x?) => {}") -#20008=@"loc,{#10000},1,5,1,18" -locations_default(#20008,#10000,1,5,1,18) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20005) -exprContainers(#20007,#20001) -#20009=* -exprs(#20009,78,#20007,0,"f") -#20010=@"loc,{#10000},1,5,1,5" -locations_default(#20010,#10000,1,5,1,5) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20005) -exprContainers(#20009,#20001) -literals("f","f",#20009) -decl(#20009,#20003) -#20011=* -exprs(#20011,65,#20007,1,"(x?) => {}") -#20012=@"loc,{#10000},1,9,1,18" -locations_default(#20012,#10000,1,9,1,18) -hasLocation(#20011,#20012) -enclosingStmt(#20011,#20005) -exprContainers(#20011,#20001) -#20013=* -scopes(#20013,1) -scopenodes(#20011,#20013) -scopenesting(#20013,#20000) -#20014=@"var;{x};{#20013}" -variables(#20014,"x",#20013) -#20015=* -exprs(#20015,78,#20011,0,"x") -#20016=@"loc,{#10000},1,10,1,10" -locations_default(#20016,#10000,1,10,1,10) -hasLocation(#20015,#20016) -exprContainers(#20015,#20011) -literals("x","x",#20015) -decl(#20015,#20014) -#20017=* -stmts(#20017,1,#20011,-2,"{}") -#20018=@"loc,{#10000},1,17,1,18" -locations_default(#20018,#10000,1,17,1,18) -hasLocation(#20017,#20018) -stmtContainers(#20017,#20011) -numlines(#20011,1,1,0) -#20019=* -stmts(#20019,23,#20001,1,"let g = ... => {};") -#20020=@"loc,{#10000},2,1,2,22" -locations_default(#20020,#10000,2,1,2,22) -hasLocation(#20019,#20020) -stmtContainers(#20019,#20001) -#20021=* -exprs(#20021,64,#20019,0,"g = (x?, y) => {}") -#20022=@"loc,{#10000},2,5,2,21" -locations_default(#20022,#10000,2,5,2,21) -hasLocation(#20021,#20022) -enclosingStmt(#20021,#20019) -exprContainers(#20021,#20001) -#20023=* -exprs(#20023,78,#20021,0,"g") -#20024=@"loc,{#10000},2,5,2,5" -locations_default(#20024,#10000,2,5,2,5) -hasLocation(#20023,#20024) -enclosingStmt(#20023,#20019) -exprContainers(#20023,#20001) -literals("g","g",#20023) -decl(#20023,#20004) -#20025=* -exprs(#20025,65,#20021,1,"(x?, y) => {}") -#20026=@"loc,{#10000},2,9,2,21" -locations_default(#20026,#10000,2,9,2,21) -hasLocation(#20025,#20026) -enclosingStmt(#20025,#20019) -exprContainers(#20025,#20001) -#20027=* -scopes(#20027,1) -scopenodes(#20025,#20027) -scopenesting(#20027,#20000) -#20028=@"var;{x};{#20027}" -variables(#20028,"x",#20027) -#20029=* -exprs(#20029,78,#20025,0,"x") -#20030=@"loc,{#10000},2,10,2,10" -locations_default(#20030,#10000,2,10,2,10) -hasLocation(#20029,#20030) -exprContainers(#20029,#20025) -literals("x","x",#20029) -decl(#20029,#20028) -#20031=@"var;{y};{#20027}" -variables(#20031,"y",#20027) -#20032=* -exprs(#20032,78,#20025,1,"y") -#20033=@"loc,{#10000},2,14,2,14" -locations_default(#20033,#10000,2,14,2,14) -hasLocation(#20032,#20033) -exprContainers(#20032,#20025) -literals("y","y",#20032) -decl(#20032,#20031) -#20034=* -stmts(#20034,1,#20025,-2,"{}") -#20035=@"loc,{#10000},2,20,2,21" -locations_default(#20035,#10000,2,20,2,21) -hasLocation(#20034,#20035) -stmtContainers(#20034,#20025) -numlines(#20025,1,1,0) -#20036=* -lines(#20036,#20001,"let f = (x?) => {};"," +#20002=* +lines(#20002,#20001,"let f = (x?) => {};"," ") -hasLocation(#20036,#20006) -#20037=* -lines(#20037,#20001,"let g = (x?, y) => {};"," +#20003=@"loc,{#10000},1,1,1,19" +locations_default(#20003,#10000,1,1,1,19) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"let g = (x?, y) => {};"," ") -hasLocation(#20037,#20020) +#20005=@"loc,{#10000},2,1,2,22" +locations_default(#20005,#10000,2,1,2,22) +hasLocation(#20004,#20005) numlines(#20001,2,2,0) +#20006=* +tokeninfo(#20006,7,#20001,0,"let") +#20007=@"loc,{#10000},1,1,1,3" +locations_default(#20007,#10000,1,1,1,3) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,6,#20001,1,"f") +#20009=@"loc,{#10000},1,5,1,5" +locations_default(#20009,#10000,1,5,1,5) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,2,"=") +#20011=@"loc,{#10000},1,7,1,7" +locations_default(#20011,#10000,1,7,1,7) +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,6,#20001,4,"x") +#20015=@"loc,{#10000},1,10,1,10" +locations_default(#20015,#10000,1,10,1,10) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,5,"?") +#20017=@"loc,{#10000},1,11,1,11" +locations_default(#20017,#10000,1,11,1,11) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,6,")") +#20019=@"loc,{#10000},1,12,1,12" +locations_default(#20019,#10000,1,12,1,12) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,7,"=>") +#20021=@"loc,{#10000},1,14,1,15" +locations_default(#20021,#10000,1,14,1,15) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,8,"{") +#20023=@"loc,{#10000},1,17,1,17" +locations_default(#20023,#10000,1,17,1,17) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,9,"}") +#20025=@"loc,{#10000},1,18,1,18" +locations_default(#20025,#10000,1,18,1,18) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,10,";") +#20027=@"loc,{#10000},1,19,1,19" +locations_default(#20027,#10000,1,19,1,19) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,7,#20001,11,"let") +#20029=@"loc,{#10000},2,1,2,3" +locations_default(#20029,#10000,2,1,2,3) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,6,#20001,12,"g") +#20031=@"loc,{#10000},2,5,2,5" +locations_default(#20031,#10000,2,5,2,5) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,13,"=") +#20033=@"loc,{#10000},2,7,2,7" +locations_default(#20033,#10000,2,7,2,7) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,14,"(") +#20035=@"loc,{#10000},2,9,2,9" +locations_default(#20035,#10000,2,9,2,9) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,6,#20001,15,"x") +#20037=@"loc,{#10000},2,10,2,10" +locations_default(#20037,#10000,2,10,2,10) +hasLocation(#20036,#20037) #20038=* -tokeninfo(#20038,7,#20001,0,"let") -#20039=@"loc,{#10000},1,1,1,3" -locations_default(#20039,#10000,1,1,1,3) +tokeninfo(#20038,8,#20001,16,"?") +#20039=@"loc,{#10000},2,11,2,11" +locations_default(#20039,#10000,2,11,2,11) hasLocation(#20038,#20039) #20040=* -tokeninfo(#20040,6,#20001,1,"f") -hasLocation(#20040,#20010) -#20041=* -tokeninfo(#20041,8,#20001,2,"=") -#20042=@"loc,{#10000},1,7,1,7" -locations_default(#20042,#10000,1,7,1,7) -hasLocation(#20041,#20042) -#20043=* -tokeninfo(#20043,8,#20001,3,"(") -#20044=@"loc,{#10000},1,9,1,9" -locations_default(#20044,#10000,1,9,1,9) -hasLocation(#20043,#20044) -#20045=* -tokeninfo(#20045,6,#20001,4,"x") -hasLocation(#20045,#20016) +tokeninfo(#20040,8,#20001,17,",") +#20041=@"loc,{#10000},2,12,2,12" +locations_default(#20041,#10000,2,12,2,12) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,6,#20001,18,"y") +#20043=@"loc,{#10000},2,14,2,14" +locations_default(#20043,#10000,2,14,2,14) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,19,")") +#20045=@"loc,{#10000},2,15,2,15" +locations_default(#20045,#10000,2,15,2,15) +hasLocation(#20044,#20045) #20046=* -tokeninfo(#20046,8,#20001,5,"?") -#20047=@"loc,{#10000},1,11,1,11" -locations_default(#20047,#10000,1,11,1,11) +tokeninfo(#20046,8,#20001,20,"=>") +#20047=@"loc,{#10000},2,17,2,18" +locations_default(#20047,#10000,2,17,2,18) hasLocation(#20046,#20047) #20048=* -tokeninfo(#20048,8,#20001,6,")") -#20049=@"loc,{#10000},1,12,1,12" -locations_default(#20049,#10000,1,12,1,12) +tokeninfo(#20048,8,#20001,21,"{") +#20049=@"loc,{#10000},2,20,2,20" +locations_default(#20049,#10000,2,20,2,20) hasLocation(#20048,#20049) #20050=* -tokeninfo(#20050,8,#20001,7,"=>") -#20051=@"loc,{#10000},1,14,1,15" -locations_default(#20051,#10000,1,14,1,15) +tokeninfo(#20050,8,#20001,22,"}") +#20051=@"loc,{#10000},2,21,2,21" +locations_default(#20051,#10000,2,21,2,21) hasLocation(#20050,#20051) #20052=* -tokeninfo(#20052,8,#20001,8,"{") -#20053=@"loc,{#10000},1,17,1,17" -locations_default(#20053,#10000,1,17,1,17) +tokeninfo(#20052,8,#20001,23,";") +#20053=@"loc,{#10000},2,22,2,22" +locations_default(#20053,#10000,2,22,2,22) hasLocation(#20052,#20053) #20054=* -tokeninfo(#20054,8,#20001,9,"}") -#20055=@"loc,{#10000},1,18,1,18" -locations_default(#20055,#10000,1,18,1,18) +tokeninfo(#20054,0,#20001,24,"") +#20055=@"loc,{#10000},3,1,3,0" +locations_default(#20055,#10000,3,1,3,0) hasLocation(#20054,#20055) -#20056=* -tokeninfo(#20056,8,#20001,10,";") -#20057=@"loc,{#10000},1,19,1,19" -locations_default(#20057,#10000,1,19,1,19) -hasLocation(#20056,#20057) -#20058=* -tokeninfo(#20058,7,#20001,11,"let") -#20059=@"loc,{#10000},2,1,2,3" -locations_default(#20059,#10000,2,1,2,3) -hasLocation(#20058,#20059) +toplevels(#20001,0) +#20056=@"loc,{#10000},1,1,3,0" +locations_default(#20056,#10000,1,1,3,0) +hasLocation(#20001,#20056) +#20057=@"var;{f};{#20000}" +variables(#20057,"f",#20000) +#20058=@"var;{g};{#20000}" +variables(#20058,"g",#20000) +#20059=* +stmts(#20059,23,#20001,0,"let f = (x?) => {};") +hasLocation(#20059,#20003) +stmtContainers(#20059,#20001) #20060=* -tokeninfo(#20060,6,#20001,12,"g") -hasLocation(#20060,#20024) -#20061=* -tokeninfo(#20061,8,#20001,13,"=") -#20062=@"loc,{#10000},2,7,2,7" -locations_default(#20062,#10000,2,7,2,7) -hasLocation(#20061,#20062) +exprs(#20060,64,#20059,0,"f = (x?) => {}") +#20061=@"loc,{#10000},1,5,1,18" +locations_default(#20061,#10000,1,5,1,18) +hasLocation(#20060,#20061) +enclosingStmt(#20060,#20059) +exprContainers(#20060,#20001) +#20062=* +exprs(#20062,78,#20060,0,"f") +hasLocation(#20062,#20009) +enclosingStmt(#20062,#20059) +exprContainers(#20062,#20001) +literals("f","f",#20062) +decl(#20062,#20057) #20063=* -tokeninfo(#20063,8,#20001,14,"(") -#20064=@"loc,{#10000},2,9,2,9" -locations_default(#20064,#10000,2,9,2,9) +exprs(#20063,65,#20060,1,"(x?) => {}") +#20064=@"loc,{#10000},1,9,1,18" +locations_default(#20064,#10000,1,9,1,18) hasLocation(#20063,#20064) +enclosingStmt(#20063,#20059) +exprContainers(#20063,#20001) #20065=* -tokeninfo(#20065,6,#20001,15,"x") -hasLocation(#20065,#20030) -#20066=* -tokeninfo(#20066,8,#20001,16,"?") -#20067=@"loc,{#10000},2,11,2,11" -locations_default(#20067,#10000,2,11,2,11) -hasLocation(#20066,#20067) +scopes(#20065,1) +scopenodes(#20063,#20065) +scopenesting(#20065,#20000) +#20066=@"var;{x};{#20065}" +variables(#20066,"x",#20065) +#20067=* +exprs(#20067,78,#20063,0,"x") +hasLocation(#20067,#20015) +exprContainers(#20067,#20063) +literals("x","x",#20067) +decl(#20067,#20066) #20068=* -tokeninfo(#20068,8,#20001,17,",") -#20069=@"loc,{#10000},2,12,2,12" -locations_default(#20069,#10000,2,12,2,12) +stmts(#20068,1,#20063,-2,"{}") +#20069=@"loc,{#10000},1,17,1,18" +locations_default(#20069,#10000,1,17,1,18) hasLocation(#20068,#20069) +stmtContainers(#20068,#20063) #20070=* -tokeninfo(#20070,6,#20001,18,"y") -hasLocation(#20070,#20033) +stmts(#20070,23,#20001,1,"let g = ... => {};") +hasLocation(#20070,#20005) +stmtContainers(#20070,#20001) #20071=* -tokeninfo(#20071,8,#20001,19,")") -#20072=@"loc,{#10000},2,15,2,15" -locations_default(#20072,#10000,2,15,2,15) +exprs(#20071,64,#20070,0,"g = (x?, y) => {}") +#20072=@"loc,{#10000},2,5,2,21" +locations_default(#20072,#10000,2,5,2,21) hasLocation(#20071,#20072) +enclosingStmt(#20071,#20070) +exprContainers(#20071,#20001) #20073=* -tokeninfo(#20073,8,#20001,20,"=>") -#20074=@"loc,{#10000},2,17,2,18" -locations_default(#20074,#10000,2,17,2,18) -hasLocation(#20073,#20074) -#20075=* -tokeninfo(#20075,8,#20001,21,"{") -#20076=@"loc,{#10000},2,20,2,20" -locations_default(#20076,#10000,2,20,2,20) -hasLocation(#20075,#20076) -#20077=* -tokeninfo(#20077,8,#20001,22,"}") -#20078=@"loc,{#10000},2,21,2,21" -locations_default(#20078,#10000,2,21,2,21) -hasLocation(#20077,#20078) -#20079=* -tokeninfo(#20079,8,#20001,23,";") -#20080=@"loc,{#10000},2,22,2,22" -locations_default(#20080,#10000,2,22,2,22) -hasLocation(#20079,#20080) +exprs(#20073,78,#20071,0,"g") +hasLocation(#20073,#20031) +enclosingStmt(#20073,#20070) +exprContainers(#20073,#20001) +literals("g","g",#20073) +decl(#20073,#20058) +#20074=* +exprs(#20074,65,#20071,1,"(x?, y) => {}") +#20075=@"loc,{#10000},2,9,2,21" +locations_default(#20075,#10000,2,9,2,21) +hasLocation(#20074,#20075) +enclosingStmt(#20074,#20070) +exprContainers(#20074,#20001) +#20076=* +scopes(#20076,1) +scopenodes(#20074,#20076) +scopenesting(#20076,#20000) +#20077=@"var;{x};{#20076}" +variables(#20077,"x",#20076) +#20078=* +exprs(#20078,78,#20074,0,"x") +hasLocation(#20078,#20037) +exprContainers(#20078,#20074) +literals("x","x",#20078) +decl(#20078,#20077) +#20079=@"var;{y};{#20076}" +variables(#20079,"y",#20076) +#20080=* +exprs(#20080,78,#20074,1,"y") +hasLocation(#20080,#20043) +exprContainers(#20080,#20074) +literals("y","y",#20080) +decl(#20080,#20079) #20081=* -tokeninfo(#20081,0,#20001,24,"") -#20082=@"loc,{#10000},3,1,3,0" -locations_default(#20082,#10000,3,1,3,0) +stmts(#20081,1,#20074,-2,"{}") +#20082=@"loc,{#10000},2,20,2,21" +locations_default(#20082,#10000,2,20,2,21) hasLocation(#20081,#20082) +stmtContainers(#20081,#20074) #20083=* entry_cfg_node(#20083,#20001) #20084=@"loc,{#10000},1,1,1,0" @@ -258,42 +256,42 @@ locations_default(#20084,#10000,1,1,1,0) hasLocation(#20083,#20084) #20085=* exit_cfg_node(#20085,#20001) -hasLocation(#20085,#20082) -successor(#20019,#20023) -successor(#20025,#20021) +hasLocation(#20085,#20055) +successor(#20070,#20073) +successor(#20074,#20071) #20086=* -entry_cfg_node(#20086,#20025) +entry_cfg_node(#20086,#20074) #20087=@"loc,{#10000},2,9,2,8" locations_default(#20087,#10000,2,9,2,8) hasLocation(#20086,#20087) #20088=* -exit_cfg_node(#20088,#20025) +exit_cfg_node(#20088,#20074) #20089=@"loc,{#10000},2,22,2,21" locations_default(#20089,#10000,2,22,2,21) hasLocation(#20088,#20089) -successor(#20034,#20088) -successor(#20032,#20034) -successor(#20029,#20032) -successor(#20086,#20029) -successor(#20023,#20025) -successor(#20021,#20085) -successor(#20005,#20009) -successor(#20011,#20007) +successor(#20081,#20088) +successor(#20080,#20081) +successor(#20078,#20080) +successor(#20086,#20078) +successor(#20073,#20074) +successor(#20071,#20085) +successor(#20059,#20062) +successor(#20063,#20060) #20090=* -entry_cfg_node(#20090,#20011) +entry_cfg_node(#20090,#20063) #20091=@"loc,{#10000},1,9,1,8" locations_default(#20091,#10000,1,9,1,8) hasLocation(#20090,#20091) #20092=* -exit_cfg_node(#20092,#20011) +exit_cfg_node(#20092,#20063) #20093=@"loc,{#10000},1,19,1,18" locations_default(#20093,#10000,1,19,1,18) hasLocation(#20092,#20093) -successor(#20017,#20092) -successor(#20015,#20017) -successor(#20090,#20015) -successor(#20009,#20011) -successor(#20007,#20019) -successor(#20083,#20005) +successor(#20068,#20092) +successor(#20067,#20068) +successor(#20090,#20067) +successor(#20062,#20063) +successor(#20060,#20070) +successor(#20083,#20059) numlines(#10000,2,2,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/parmAnonFunctionType.js.trap b/javascript/extractor/tests/flow/output/trap/parmAnonFunctionType.js.trap index bb99e983717..6794275f21b 100644 --- a/javascript/extractor/tests/flow/output/trap/parmAnonFunctionType.js.trap +++ b/javascript/extractor/tests/flow/output/trap/parmAnonFunctionType.js.trap @@ -9,207 +9,206 @@ 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;{f};{#20000}" -variables(#20003,"f",#20000) +#20002=* +lines(#20002,#20001,"function f(g: ({y: int}) => void) {"," +") +#20003=@"loc,{#10000},1,1,1,35" +locations_default(#20003,#10000,1,1,1,35) +hasLocation(#20002,#20003) #20004=* -stmts(#20004,17,#20001,0,"functio ... (42);\n}") -#20005=@"loc,{#10000},1,1,3,1" -locations_default(#20005,#10000,1,1,3,1) +lines(#20004,#20001," g(42);"," +") +#20005=@"loc,{#10000},2,1,2,8" +locations_default(#20005,#10000,2,1,2,8) hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) -#20006=* -exprs(#20006,78,#20004,-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;{g};{#20008}" -variables(#20009,"g",#20008) -#20010=* -exprs(#20010,78,#20004,0,"g: ({y: ... => void") -#20011=@"loc,{#10000},1,12,1,32" -locations_default(#20011,#10000,1,12,1,32) -hasLocation(#20010,#20011) -exprContainers(#20010,#20004) -literals("g","g",#20010) -decl(#20010,#20009) -#20012=@"var;{arguments};{#20008}" -variables(#20012,"arguments",#20008) -isArgumentsObject(#20012) -#20013=* -stmts(#20013,1,#20004,-2,"{\n g(42);\n}") -#20014=@"loc,{#10000},1,35,3,1" -locations_default(#20014,#10000,1,35,3,1) -hasLocation(#20013,#20014) -stmtContainers(#20013,#20004) -#20015=* -stmts(#20015,2,#20013,0,"g(42);") -#20016=@"loc,{#10000},2,3,2,8" -locations_default(#20016,#10000,2,3,2,8) -hasLocation(#20015,#20016) -stmtContainers(#20015,#20004) -#20017=* -exprs(#20017,13,#20015,0,"g(42)") -#20018=@"loc,{#10000},2,3,2,7" -locations_default(#20018,#10000,2,3,2,7) -hasLocation(#20017,#20018) -enclosingStmt(#20017,#20015) -exprContainers(#20017,#20004) -#20019=* -exprs(#20019,79,#20017,-1,"g") -#20020=@"loc,{#10000},2,3,2,3" -locations_default(#20020,#10000,2,3,2,3) -hasLocation(#20019,#20020) -enclosingStmt(#20019,#20015) -exprContainers(#20019,#20004) -literals("g","g",#20019) -bind(#20019,#20009) -#20021=* -exprs(#20021,3,#20017,0,"42") -#20022=@"loc,{#10000},2,5,2,6" -locations_default(#20022,#10000,2,5,2,6) -hasLocation(#20021,#20022) -enclosingStmt(#20021,#20015) -exprContainers(#20021,#20004) -literals("42","42",#20021) -numlines(#20004,3,3,0) -#20023=* -lines(#20023,#20001,"function f(g: ({y: int}) => void) {"," -") -#20024=@"loc,{#10000},1,1,1,35" -locations_default(#20024,#10000,1,1,1,35) -hasLocation(#20023,#20024) -#20025=* -lines(#20025,#20001," g(42);"," -") -#20026=@"loc,{#10000},2,1,2,8" -locations_default(#20026,#10000,2,1,2,8) -hasLocation(#20025,#20026) indentation(#10000,2," ",2) -#20027=* -lines(#20027,#20001,"}"," +#20006=* +lines(#20006,#20001,"}"," ") -#20028=@"loc,{#10000},3,1,3,1" -locations_default(#20028,#10000,3,1,3,1) -hasLocation(#20027,#20028) +#20007=@"loc,{#10000},3,1,3,1" +locations_default(#20007,#10000,3,1,3,1) +hasLocation(#20006,#20007) numlines(#20001,3,3,0) -#20029=* -tokeninfo(#20029,7,#20001,0,"function") -#20030=@"loc,{#10000},1,1,1,8" -locations_default(#20030,#10000,1,1,1,8) -hasLocation(#20029,#20030) -#20031=* -tokeninfo(#20031,6,#20001,1,"f") -hasLocation(#20031,#20007) +#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,6,#20001,3,"g") +#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,8,#20001,6,"{") +#20021=@"loc,{#10000},1,16,1,16" +locations_default(#20021,#10000,1,16,1,16) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,6,#20001,7,"y") +#20023=@"loc,{#10000},1,17,1,17" +locations_default(#20023,#10000,1,17,1,17) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,8,":") +#20025=@"loc,{#10000},1,18,1,18" +locations_default(#20025,#10000,1,18,1,18) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,6,#20001,9,"int") +#20027=@"loc,{#10000},1,20,1,22" +locations_default(#20027,#10000,1,20,1,22) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,10,"}") +#20029=@"loc,{#10000},1,23,1,23" +locations_default(#20029,#10000,1,23,1,23) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,11,")") +#20031=@"loc,{#10000},1,24,1,24" +locations_default(#20031,#10000,1,24,1,24) +hasLocation(#20030,#20031) #20032=* -tokeninfo(#20032,8,#20001,2,"(") -#20033=@"loc,{#10000},1,11,1,11" -locations_default(#20033,#10000,1,11,1,11) +tokeninfo(#20032,8,#20001,12,"=>") +#20033=@"loc,{#10000},1,26,1,27" +locations_default(#20033,#10000,1,26,1,27) hasLocation(#20032,#20033) #20034=* -tokeninfo(#20034,6,#20001,3,"g") -#20035=@"loc,{#10000},1,12,1,12" -locations_default(#20035,#10000,1,12,1,12) +tokeninfo(#20034,7,#20001,13,"void") +#20035=@"loc,{#10000},1,29,1,32" +locations_default(#20035,#10000,1,29,1,32) hasLocation(#20034,#20035) #20036=* -tokeninfo(#20036,8,#20001,4,":") -#20037=@"loc,{#10000},1,13,1,13" -locations_default(#20037,#10000,1,13,1,13) +tokeninfo(#20036,8,#20001,14,")") +#20037=@"loc,{#10000},1,33,1,33" +locations_default(#20037,#10000,1,33,1,33) hasLocation(#20036,#20037) #20038=* -tokeninfo(#20038,8,#20001,5,"(") -#20039=@"loc,{#10000},1,15,1,15" -locations_default(#20039,#10000,1,15,1,15) +tokeninfo(#20038,8,#20001,15,"{") +#20039=@"loc,{#10000},1,35,1,35" +locations_default(#20039,#10000,1,35,1,35) hasLocation(#20038,#20039) #20040=* -tokeninfo(#20040,8,#20001,6,"{") -#20041=@"loc,{#10000},1,16,1,16" -locations_default(#20041,#10000,1,16,1,16) +tokeninfo(#20040,6,#20001,16,"g") +#20041=@"loc,{#10000},2,3,2,3" +locations_default(#20041,#10000,2,3,2,3) hasLocation(#20040,#20041) #20042=* -tokeninfo(#20042,6,#20001,7,"y") -#20043=@"loc,{#10000},1,17,1,17" -locations_default(#20043,#10000,1,17,1,17) +tokeninfo(#20042,8,#20001,17,"(") +#20043=@"loc,{#10000},2,4,2,4" +locations_default(#20043,#10000,2,4,2,4) hasLocation(#20042,#20043) #20044=* -tokeninfo(#20044,8,#20001,8,":") -#20045=@"loc,{#10000},1,18,1,18" -locations_default(#20045,#10000,1,18,1,18) +tokeninfo(#20044,3,#20001,18,"42") +#20045=@"loc,{#10000},2,5,2,6" +locations_default(#20045,#10000,2,5,2,6) hasLocation(#20044,#20045) #20046=* -tokeninfo(#20046,6,#20001,9,"int") -#20047=@"loc,{#10000},1,20,1,22" -locations_default(#20047,#10000,1,20,1,22) +tokeninfo(#20046,8,#20001,19,")") +#20047=@"loc,{#10000},2,7,2,7" +locations_default(#20047,#10000,2,7,2,7) hasLocation(#20046,#20047) #20048=* -tokeninfo(#20048,8,#20001,10,"}") -#20049=@"loc,{#10000},1,23,1,23" -locations_default(#20049,#10000,1,23,1,23) +tokeninfo(#20048,8,#20001,20,";") +#20049=@"loc,{#10000},2,8,2,8" +locations_default(#20049,#10000,2,8,2,8) hasLocation(#20048,#20049) #20050=* -tokeninfo(#20050,8,#20001,11,")") -#20051=@"loc,{#10000},1,24,1,24" -locations_default(#20051,#10000,1,24,1,24) -hasLocation(#20050,#20051) -#20052=* -tokeninfo(#20052,8,#20001,12,"=>") -#20053=@"loc,{#10000},1,26,1,27" -locations_default(#20053,#10000,1,26,1,27) -hasLocation(#20052,#20053) -#20054=* -tokeninfo(#20054,7,#20001,13,"void") -#20055=@"loc,{#10000},1,29,1,32" -locations_default(#20055,#10000,1,29,1,32) -hasLocation(#20054,#20055) -#20056=* -tokeninfo(#20056,8,#20001,14,")") -#20057=@"loc,{#10000},1,33,1,33" -locations_default(#20057,#10000,1,33,1,33) -hasLocation(#20056,#20057) +tokeninfo(#20050,8,#20001,21,"}") +hasLocation(#20050,#20007) +#20051=* +tokeninfo(#20051,0,#20001,22,"") +#20052=@"loc,{#10000},4,1,4,0" +locations_default(#20052,#10000,4,1,4,0) +hasLocation(#20051,#20052) +toplevels(#20001,0) +#20053=@"loc,{#10000},1,1,4,0" +locations_default(#20053,#10000,1,1,4,0) +hasLocation(#20001,#20053) +#20054=@"var;{f};{#20000}" +variables(#20054,"f",#20000) +#20055=* +stmts(#20055,17,#20001,0,"functio ... (42);\n}") +#20056=@"loc,{#10000},1,1,3,1" +locations_default(#20056,#10000,1,1,3,1) +hasLocation(#20055,#20056) +stmtContainers(#20055,#20001) +#20057=* +exprs(#20057,78,#20055,-1,"f") +hasLocation(#20057,#20011) +exprContainers(#20057,#20055) +literals("f","f",#20057) +decl(#20057,#20054) #20058=* -tokeninfo(#20058,8,#20001,15,"{") -#20059=@"loc,{#10000},1,35,1,35" -locations_default(#20059,#10000,1,35,1,35) -hasLocation(#20058,#20059) +scopes(#20058,1) +scopenodes(#20055,#20058) +scopenesting(#20058,#20000) +#20059=@"var;{g};{#20058}" +variables(#20059,"g",#20058) #20060=* -tokeninfo(#20060,6,#20001,16,"g") -hasLocation(#20060,#20020) -#20061=* -tokeninfo(#20061,8,#20001,17,"(") -#20062=@"loc,{#10000},2,4,2,4" -locations_default(#20062,#10000,2,4,2,4) -hasLocation(#20061,#20062) +exprs(#20060,78,#20055,0,"g: ({y: ... => void") +#20061=@"loc,{#10000},1,12,1,32" +locations_default(#20061,#10000,1,12,1,32) +hasLocation(#20060,#20061) +exprContainers(#20060,#20055) +literals("g","g",#20060) +decl(#20060,#20059) +#20062=@"var;{arguments};{#20058}" +variables(#20062,"arguments",#20058) +isArgumentsObject(#20062) #20063=* -tokeninfo(#20063,3,#20001,18,"42") -hasLocation(#20063,#20022) -#20064=* -tokeninfo(#20064,8,#20001,19,")") -#20065=@"loc,{#10000},2,7,2,7" -locations_default(#20065,#10000,2,7,2,7) -hasLocation(#20064,#20065) -#20066=* -tokeninfo(#20066,8,#20001,20,";") -#20067=@"loc,{#10000},2,8,2,8" -locations_default(#20067,#10000,2,8,2,8) -hasLocation(#20066,#20067) -#20068=* -tokeninfo(#20068,8,#20001,21,"}") -hasLocation(#20068,#20028) +stmts(#20063,1,#20055,-2,"{\n g(42);\n}") +#20064=@"loc,{#10000},1,35,3,1" +locations_default(#20064,#10000,1,35,3,1) +hasLocation(#20063,#20064) +stmtContainers(#20063,#20055) +#20065=* +stmts(#20065,2,#20063,0,"g(42);") +#20066=@"loc,{#10000},2,3,2,8" +locations_default(#20066,#10000,2,3,2,8) +hasLocation(#20065,#20066) +stmtContainers(#20065,#20055) +#20067=* +exprs(#20067,13,#20065,0,"g(42)") +#20068=@"loc,{#10000},2,3,2,7" +locations_default(#20068,#10000,2,3,2,7) +hasLocation(#20067,#20068) +enclosingStmt(#20067,#20065) +exprContainers(#20067,#20055) #20069=* -tokeninfo(#20069,0,#20001,22,"") -#20070=@"loc,{#10000},4,1,4,0" -locations_default(#20070,#10000,4,1,4,0) -hasLocation(#20069,#20070) +exprs(#20069,79,#20067,-1,"g") +hasLocation(#20069,#20041) +enclosingStmt(#20069,#20065) +exprContainers(#20069,#20055) +literals("g","g",#20069) +bind(#20069,#20059) +#20070=* +exprs(#20070,3,#20067,0,"42") +hasLocation(#20070,#20045) +enclosingStmt(#20070,#20065) +exprContainers(#20070,#20055) +literals("42","42",#20070) #20071=* entry_cfg_node(#20071,#20001) #20072=@"loc,{#10000},1,1,1,0" @@ -217,24 +216,24 @@ 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,#20052) +successor(#20055,#20073) #20074=* -entry_cfg_node(#20074,#20004) +entry_cfg_node(#20074,#20055) hasLocation(#20074,#20072) #20075=* -exit_cfg_node(#20075,#20004) +exit_cfg_node(#20075,#20055) #20076=@"loc,{#10000},3,2,3,1" locations_default(#20076,#10000,3,2,3,1) hasLocation(#20075,#20076) -successor(#20013,#20015) -successor(#20015,#20019) -successor(#20021,#20017) -successor(#20019,#20021) -successor(#20017,#20075) -successor(#20010,#20013) -successor(#20074,#20010) -successor(#20006,#20004) -successor(#20071,#20006) +successor(#20063,#20065) +successor(#20065,#20069) +successor(#20070,#20067) +successor(#20069,#20070) +successor(#20067,#20075) +successor(#20060,#20063) +successor(#20074,#20060) +successor(#20057,#20055) +successor(#20071,#20057) numlines(#10000,3,3,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/practicallyAmbigiousExplicitTypeParameters.js.trap b/javascript/extractor/tests/flow/output/trap/practicallyAmbigiousExplicitTypeParameters.js.trap index bcbe24cd6d8..491f12173c0 100644 --- a/javascript/extractor/tests/flow/output/trap/practicallyAmbigiousExplicitTypeParameters.js.trap +++ b/javascript/extractor/tests/flow/output/trap/practicallyAmbigiousExplicitTypeParameters.js.trap @@ -9,1138 +9,1138 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,3,53" -locations_default(#20002,#10000,1,1,3,53) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,3,#20001,0,"if(!(0< ... |0))){}") -#20004=@"loc,{#10000},1,1,1,26" -locations_default(#20004,#10000,1,1,1,26) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,18,#20003,0,"!(0<(jd|0)&0>(Wc|0))") -#20006=@"loc,{#10000},1,4,1,23" -locations_default(#20006,#10000,1,4,1,23) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -#20007=* -exprs(#20007,63,#20005,0,"(0<(jd|0)&0>(Wc|0))") -#20008=@"loc,{#10000},1,5,1,23" -locations_default(#20008,#10000,1,5,1,23) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20003) -exprContainers(#20007,#20001) -#20009=* -exprs(#20009,41,#20007,0,"0<(jd|0)&0>(Wc|0)") -#20010=@"loc,{#10000},1,6,1,22" -locations_default(#20010,#10000,1,6,1,22) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20003) -exprContainers(#20009,#20001) -#20011=* -exprs(#20011,27,#20009,0,"0<(jd|0)") -#20012=@"loc,{#10000},1,6,1,13" -locations_default(#20012,#10000,1,6,1,13) -hasLocation(#20011,#20012) -enclosingStmt(#20011,#20003) -exprContainers(#20011,#20001) -#20013=* -exprs(#20013,3,#20011,0,"0") -#20014=@"loc,{#10000},1,6,1,6" -locations_default(#20014,#10000,1,6,1,6) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20003) -exprContainers(#20013,#20001) -literals("0","0",#20013) -#20015=* -exprs(#20015,63,#20011,1,"(jd|0)") -#20016=@"loc,{#10000},1,8,1,13" -locations_default(#20016,#10000,1,8,1,13) -hasLocation(#20015,#20016) -enclosingStmt(#20015,#20003) -exprContainers(#20015,#20001) -#20017=* -exprs(#20017,39,#20015,0,"jd|0") -#20018=@"loc,{#10000},1,9,1,12" -locations_default(#20018,#10000,1,9,1,12) -hasLocation(#20017,#20018) -enclosingStmt(#20017,#20003) -exprContainers(#20017,#20001) -#20019=* -exprs(#20019,79,#20017,0,"jd") -#20020=@"loc,{#10000},1,9,1,10" -locations_default(#20020,#10000,1,9,1,10) -hasLocation(#20019,#20020) -enclosingStmt(#20019,#20003) -exprContainers(#20019,#20001) -literals("jd","jd",#20019) -#20021=@"var;{jd};{#20000}" -variables(#20021,"jd",#20000) -bind(#20019,#20021) -#20022=* -exprs(#20022,3,#20017,1,"0") -#20023=@"loc,{#10000},1,12,1,12" -locations_default(#20023,#10000,1,12,1,12) -hasLocation(#20022,#20023) -enclosingStmt(#20022,#20003) -exprContainers(#20022,#20001) -literals("0","0",#20022) -#20024=* -exprs(#20024,29,#20009,1,"0>(Wc|0)") -#20025=@"loc,{#10000},1,15,1,22" -locations_default(#20025,#10000,1,15,1,22) -hasLocation(#20024,#20025) -enclosingStmt(#20024,#20003) -exprContainers(#20024,#20001) -#20026=* -exprs(#20026,3,#20024,0,"0") -#20027=@"loc,{#10000},1,15,1,15" -locations_default(#20027,#10000,1,15,1,15) -hasLocation(#20026,#20027) -enclosingStmt(#20026,#20003) -exprContainers(#20026,#20001) -literals("0","0",#20026) -#20028=* -exprs(#20028,63,#20024,1,"(Wc|0)") -#20029=@"loc,{#10000},1,17,1,22" -locations_default(#20029,#10000,1,17,1,22) -hasLocation(#20028,#20029) -enclosingStmt(#20028,#20003) -exprContainers(#20028,#20001) -#20030=* -exprs(#20030,39,#20028,0,"Wc|0") -#20031=@"loc,{#10000},1,18,1,21" -locations_default(#20031,#10000,1,18,1,21) -hasLocation(#20030,#20031) -enclosingStmt(#20030,#20003) -exprContainers(#20030,#20001) -#20032=* -exprs(#20032,79,#20030,0,"Wc") -#20033=@"loc,{#10000},1,18,1,19" -locations_default(#20033,#10000,1,18,1,19) -hasLocation(#20032,#20033) -enclosingStmt(#20032,#20003) -exprContainers(#20032,#20001) -literals("Wc","Wc",#20032) -#20034=@"var;{Wc};{#20000}" -variables(#20034,"Wc",#20000) -bind(#20032,#20034) -#20035=* -exprs(#20035,3,#20030,1,"0") -#20036=@"loc,{#10000},1,21,1,21" -locations_default(#20036,#10000,1,21,1,21) -hasLocation(#20035,#20036) -enclosingStmt(#20035,#20003) -exprContainers(#20035,#20001) -literals("0","0",#20035) -#20037=* -stmts(#20037,1,#20003,1,"{}") -#20038=@"loc,{#10000},1,25,1,26" -locations_default(#20038,#10000,1,25,1,26) -hasLocation(#20037,#20038) -stmtContainers(#20037,#20001) -#20039=* -stmts(#20039,2,#20001,1,"g=(g|0) ... 0)?e:g;") -#20040=@"loc,{#10000},2,1,2,30" -locations_default(#20040,#10000,2,1,2,30) -hasLocation(#20039,#20040) -stmtContainers(#20039,#20001) -#20041=* -exprs(#20041,47,#20039,0,"g=(g|0) ... |0)?e:g") -#20042=@"loc,{#10000},2,1,2,29" -locations_default(#20042,#10000,2,1,2,29) -hasLocation(#20041,#20042) -enclosingStmt(#20041,#20039) -exprContainers(#20041,#20001) -#20043=* -exprs(#20043,79,#20041,0,"g") -#20044=@"loc,{#10000},2,1,2,1" -locations_default(#20044,#10000,2,1,2,1) -hasLocation(#20043,#20044) -enclosingStmt(#20043,#20039) -exprContainers(#20043,#20001) -literals("g","g",#20043) -#20045=@"var;{g};{#20000}" -variables(#20045,"g",#20000) -bind(#20043,#20045) -#20046=* -exprs(#20046,11,#20041,1,"(g|0)<( ... |0)?e:g") -#20047=@"loc,{#10000},2,3,2,29" -locations_default(#20047,#10000,2,3,2,29) -hasLocation(#20046,#20047) -enclosingStmt(#20046,#20039) -exprContainers(#20046,#20001) -#20048=* -exprs(#20048,39,#20046,0,"(g|0)<( ... )>(b|0)") -#20049=@"loc,{#10000},2,3,2,25" -locations_default(#20049,#10000,2,3,2,25) -hasLocation(#20048,#20049) -enclosingStmt(#20048,#20039) -exprContainers(#20048,#20001) -#20050=* -exprs(#20050,27,#20048,0,"(g|0)<(e|0)") -#20051=@"loc,{#10000},2,3,2,13" -locations_default(#20051,#10000,2,3,2,13) -hasLocation(#20050,#20051) -enclosingStmt(#20050,#20039) -exprContainers(#20050,#20001) -#20052=* -exprs(#20052,63,#20050,0,"(g|0)") -#20053=@"loc,{#10000},2,3,2,7" -locations_default(#20053,#10000,2,3,2,7) -hasLocation(#20052,#20053) -enclosingStmt(#20052,#20039) -exprContainers(#20052,#20001) -#20054=* -exprs(#20054,39,#20052,0,"g|0") -#20055=@"loc,{#10000},2,4,2,6" -locations_default(#20055,#10000,2,4,2,6) -hasLocation(#20054,#20055) -enclosingStmt(#20054,#20039) -exprContainers(#20054,#20001) -#20056=* -exprs(#20056,79,#20054,0,"g") -#20057=@"loc,{#10000},2,4,2,4" -locations_default(#20057,#10000,2,4,2,4) -hasLocation(#20056,#20057) -enclosingStmt(#20056,#20039) -exprContainers(#20056,#20001) -literals("g","g",#20056) -bind(#20056,#20045) -#20058=* -exprs(#20058,3,#20054,1,"0") -#20059=@"loc,{#10000},2,6,2,6" -locations_default(#20059,#10000,2,6,2,6) -hasLocation(#20058,#20059) -enclosingStmt(#20058,#20039) -exprContainers(#20058,#20001) -literals("0","0",#20058) -#20060=* -exprs(#20060,63,#20050,1,"(e|0)") -#20061=@"loc,{#10000},2,9,2,13" -locations_default(#20061,#10000,2,9,2,13) -hasLocation(#20060,#20061) -enclosingStmt(#20060,#20039) -exprContainers(#20060,#20001) -#20062=* -exprs(#20062,39,#20060,0,"e|0") -#20063=@"loc,{#10000},2,10,2,12" -locations_default(#20063,#10000,2,10,2,12) -hasLocation(#20062,#20063) -enclosingStmt(#20062,#20039) -exprContainers(#20062,#20001) -#20064=* -exprs(#20064,79,#20062,0,"e") -#20065=@"loc,{#10000},2,10,2,10" -locations_default(#20065,#10000,2,10,2,10) -hasLocation(#20064,#20065) -enclosingStmt(#20064,#20039) -exprContainers(#20064,#20001) -literals("e","e",#20064) -#20066=@"var;{e};{#20000}" -variables(#20066,"e",#20000) -bind(#20064,#20066) -#20067=* -exprs(#20067,3,#20062,1,"0") -#20068=@"loc,{#10000},2,12,2,12" -locations_default(#20068,#10000,2,12,2,12) -hasLocation(#20067,#20068) -enclosingStmt(#20067,#20039) -exprContainers(#20067,#20001) -literals("0","0",#20067) -#20069=* -exprs(#20069,29,#20048,1,"(g|0)>(b|0)") -#20070=@"loc,{#10000},2,15,2,25" -locations_default(#20070,#10000,2,15,2,25) -hasLocation(#20069,#20070) -enclosingStmt(#20069,#20039) -exprContainers(#20069,#20001) -#20071=* -exprs(#20071,63,#20069,0,"(g|0)") -#20072=@"loc,{#10000},2,15,2,19" -locations_default(#20072,#10000,2,15,2,19) -hasLocation(#20071,#20072) -enclosingStmt(#20071,#20039) -exprContainers(#20071,#20001) -#20073=* -exprs(#20073,39,#20071,0,"g|0") -#20074=@"loc,{#10000},2,16,2,18" -locations_default(#20074,#10000,2,16,2,18) -hasLocation(#20073,#20074) -enclosingStmt(#20073,#20039) -exprContainers(#20073,#20001) -#20075=* -exprs(#20075,79,#20073,0,"g") -#20076=@"loc,{#10000},2,16,2,16" -locations_default(#20076,#10000,2,16,2,16) -hasLocation(#20075,#20076) -enclosingStmt(#20075,#20039) -exprContainers(#20075,#20001) -literals("g","g",#20075) -bind(#20075,#20045) -#20077=* -exprs(#20077,3,#20073,1,"0") -#20078=@"loc,{#10000},2,18,2,18" -locations_default(#20078,#10000,2,18,2,18) -hasLocation(#20077,#20078) -enclosingStmt(#20077,#20039) -exprContainers(#20077,#20001) -literals("0","0",#20077) -#20079=* -exprs(#20079,63,#20069,1,"(b|0)") -#20080=@"loc,{#10000},2,21,2,25" -locations_default(#20080,#10000,2,21,2,25) -hasLocation(#20079,#20080) -enclosingStmt(#20079,#20039) -exprContainers(#20079,#20001) -#20081=* -exprs(#20081,39,#20079,0,"b|0") -#20082=@"loc,{#10000},2,22,2,24" -locations_default(#20082,#10000,2,22,2,24) -hasLocation(#20081,#20082) -enclosingStmt(#20081,#20039) -exprContainers(#20081,#20001) -#20083=* -exprs(#20083,79,#20081,0,"b") -#20084=@"loc,{#10000},2,22,2,22" -locations_default(#20084,#10000,2,22,2,22) -hasLocation(#20083,#20084) -enclosingStmt(#20083,#20039) -exprContainers(#20083,#20001) -literals("b","b",#20083) -#20085=@"var;{b};{#20000}" -variables(#20085,"b",#20000) -bind(#20083,#20085) -#20086=* -exprs(#20086,3,#20081,1,"0") -#20087=@"loc,{#10000},2,24,2,24" -locations_default(#20087,#10000,2,24,2,24) -hasLocation(#20086,#20087) -enclosingStmt(#20086,#20039) -exprContainers(#20086,#20001) -literals("0","0",#20086) -#20088=* -exprs(#20088,79,#20046,1,"e") -#20089=@"loc,{#10000},2,27,2,27" -locations_default(#20089,#10000,2,27,2,27) -hasLocation(#20088,#20089) -enclosingStmt(#20088,#20039) -exprContainers(#20088,#20001) -literals("e","e",#20088) -bind(#20088,#20066) -#20090=* -exprs(#20090,79,#20046,2,"g") -#20091=@"loc,{#10000},2,29,2,29" -locations_default(#20091,#10000,2,29,2,29) -hasLocation(#20090,#20091) -enclosingStmt(#20090,#20039) -exprContainers(#20090,#20001) -literals("g","g",#20090) -bind(#20090,#20045) -#20092=* -stmts(#20092,3,#20001,2,"if((I|0 ... H|0)){}") -#20093=@"loc,{#10000},3,1,3,53" -locations_default(#20093,#10000,3,1,3,53) -hasLocation(#20092,#20093) -stmtContainers(#20092,#20001) -#20094=* -exprs(#20094,39,#20092,0,"(I|0)<( ... )>(H|0)") -#20095=@"loc,{#10000},3,4,3,50" -locations_default(#20095,#10000,3,4,3,50) -hasLocation(#20094,#20095) -enclosingStmt(#20094,#20092) -exprContainers(#20094,#20001) -#20096=* -exprs(#20096,39,#20094,0,"(I|0)<( ... )<(F|0)") -#20097=@"loc,{#10000},3,4,3,38" -locations_default(#20097,#10000,3,4,3,38) -hasLocation(#20096,#20097) -enclosingStmt(#20096,#20092) -exprContainers(#20096,#20001) -#20098=* -exprs(#20098,39,#20096,0,"(I|0)<( ... )>(P|0)") -#20099=@"loc,{#10000},3,4,3,26" -locations_default(#20099,#10000,3,4,3,26) -hasLocation(#20098,#20099) -enclosingStmt(#20098,#20092) -exprContainers(#20098,#20001) -#20100=* -exprs(#20100,27,#20098,0,"(I|0)<(D|0)") -#20101=@"loc,{#10000},3,4,3,14" -locations_default(#20101,#10000,3,4,3,14) -hasLocation(#20100,#20101) -enclosingStmt(#20100,#20092) -exprContainers(#20100,#20001) -#20102=* -exprs(#20102,63,#20100,0,"(I|0)") -#20103=@"loc,{#10000},3,4,3,8" -locations_default(#20103,#10000,3,4,3,8) -hasLocation(#20102,#20103) -enclosingStmt(#20102,#20092) -exprContainers(#20102,#20001) -#20104=* -exprs(#20104,39,#20102,0,"I|0") -#20105=@"loc,{#10000},3,5,3,7" -locations_default(#20105,#10000,3,5,3,7) -hasLocation(#20104,#20105) -enclosingStmt(#20104,#20092) -exprContainers(#20104,#20001) -#20106=* -exprs(#20106,79,#20104,0,"I") -#20107=@"loc,{#10000},3,5,3,5" -locations_default(#20107,#10000,3,5,3,5) -hasLocation(#20106,#20107) -enclosingStmt(#20106,#20092) -exprContainers(#20106,#20001) -literals("I","I",#20106) -#20108=@"var;{I};{#20000}" -variables(#20108,"I",#20000) -bind(#20106,#20108) -#20109=* -exprs(#20109,3,#20104,1,"0") -#20110=@"loc,{#10000},3,7,3,7" -locations_default(#20110,#10000,3,7,3,7) -hasLocation(#20109,#20110) -enclosingStmt(#20109,#20092) -exprContainers(#20109,#20001) -literals("0","0",#20109) -#20111=* -exprs(#20111,63,#20100,1,"(D|0)") -#20112=@"loc,{#10000},3,10,3,14" -locations_default(#20112,#10000,3,10,3,14) -hasLocation(#20111,#20112) -enclosingStmt(#20111,#20092) -exprContainers(#20111,#20001) -#20113=* -exprs(#20113,39,#20111,0,"D|0") -#20114=@"loc,{#10000},3,11,3,13" -locations_default(#20114,#10000,3,11,3,13) -hasLocation(#20113,#20114) -enclosingStmt(#20113,#20092) -exprContainers(#20113,#20001) -#20115=* -exprs(#20115,79,#20113,0,"D") -#20116=@"loc,{#10000},3,11,3,11" -locations_default(#20116,#10000,3,11,3,11) -hasLocation(#20115,#20116) -enclosingStmt(#20115,#20092) -exprContainers(#20115,#20001) -literals("D","D",#20115) -#20117=@"var;{D};{#20000}" -variables(#20117,"D",#20000) -bind(#20115,#20117) -#20118=* -exprs(#20118,3,#20113,1,"0") -#20119=@"loc,{#10000},3,13,3,13" -locations_default(#20119,#10000,3,13,3,13) -hasLocation(#20118,#20119) -enclosingStmt(#20118,#20092) -exprContainers(#20118,#20001) -literals("0","0",#20118) -#20120=* -exprs(#20120,29,#20098,1,"(N|0)>(P|0)") -#20121=@"loc,{#10000},3,16,3,26" -locations_default(#20121,#10000,3,16,3,26) -hasLocation(#20120,#20121) -enclosingStmt(#20120,#20092) -exprContainers(#20120,#20001) -#20122=* -exprs(#20122,63,#20120,0,"(N|0)") -#20123=@"loc,{#10000},3,16,3,20" -locations_default(#20123,#10000,3,16,3,20) -hasLocation(#20122,#20123) -enclosingStmt(#20122,#20092) -exprContainers(#20122,#20001) -#20124=* -exprs(#20124,39,#20122,0,"N|0") -#20125=@"loc,{#10000},3,17,3,19" -locations_default(#20125,#10000,3,17,3,19) -hasLocation(#20124,#20125) -enclosingStmt(#20124,#20092) -exprContainers(#20124,#20001) -#20126=* -exprs(#20126,79,#20124,0,"N") -#20127=@"loc,{#10000},3,17,3,17" -locations_default(#20127,#10000,3,17,3,17) -hasLocation(#20126,#20127) -enclosingStmt(#20126,#20092) -exprContainers(#20126,#20001) -literals("N","N",#20126) -#20128=@"var;{N};{#20000}" -variables(#20128,"N",#20000) -bind(#20126,#20128) -#20129=* -exprs(#20129,3,#20124,1,"0") -#20130=@"loc,{#10000},3,19,3,19" -locations_default(#20130,#10000,3,19,3,19) -hasLocation(#20129,#20130) -enclosingStmt(#20129,#20092) -exprContainers(#20129,#20001) -literals("0","0",#20129) -#20131=* -exprs(#20131,63,#20120,1,"(P|0)") -#20132=@"loc,{#10000},3,22,3,26" -locations_default(#20132,#10000,3,22,3,26) -hasLocation(#20131,#20132) -enclosingStmt(#20131,#20092) -exprContainers(#20131,#20001) -#20133=* -exprs(#20133,39,#20131,0,"P|0") -#20134=@"loc,{#10000},3,23,3,25" -locations_default(#20134,#10000,3,23,3,25) -hasLocation(#20133,#20134) -enclosingStmt(#20133,#20092) -exprContainers(#20133,#20001) -#20135=* -exprs(#20135,79,#20133,0,"P") -#20136=@"loc,{#10000},3,23,3,23" -locations_default(#20136,#10000,3,23,3,23) -hasLocation(#20135,#20136) -enclosingStmt(#20135,#20092) -exprContainers(#20135,#20001) -literals("P","P",#20135) -#20137=@"var;{P};{#20000}" -variables(#20137,"P",#20000) -bind(#20135,#20137) -#20138=* -exprs(#20138,3,#20133,1,"0") -#20139=@"loc,{#10000},3,25,3,25" -locations_default(#20139,#10000,3,25,3,25) -hasLocation(#20138,#20139) -enclosingStmt(#20138,#20092) -exprContainers(#20138,#20001) -literals("0","0",#20138) -#20140=* -exprs(#20140,27,#20096,1,"(M|0)<(F|0)") -#20141=@"loc,{#10000},3,28,3,38" -locations_default(#20141,#10000,3,28,3,38) -hasLocation(#20140,#20141) -enclosingStmt(#20140,#20092) -exprContainers(#20140,#20001) -#20142=* -exprs(#20142,63,#20140,0,"(M|0)") -#20143=@"loc,{#10000},3,28,3,32" -locations_default(#20143,#10000,3,28,3,32) -hasLocation(#20142,#20143) -enclosingStmt(#20142,#20092) -exprContainers(#20142,#20001) -#20144=* -exprs(#20144,39,#20142,0,"M|0") -#20145=@"loc,{#10000},3,29,3,31" -locations_default(#20145,#10000,3,29,3,31) -hasLocation(#20144,#20145) -enclosingStmt(#20144,#20092) -exprContainers(#20144,#20001) -#20146=* -exprs(#20146,79,#20144,0,"M") -#20147=@"loc,{#10000},3,29,3,29" -locations_default(#20147,#10000,3,29,3,29) -hasLocation(#20146,#20147) -enclosingStmt(#20146,#20092) -exprContainers(#20146,#20001) -literals("M","M",#20146) -#20148=@"var;{M};{#20000}" -variables(#20148,"M",#20000) -bind(#20146,#20148) -#20149=* -exprs(#20149,3,#20144,1,"0") -#20150=@"loc,{#10000},3,31,3,31" -locations_default(#20150,#10000,3,31,3,31) -hasLocation(#20149,#20150) -enclosingStmt(#20149,#20092) -exprContainers(#20149,#20001) -literals("0","0",#20149) -#20151=* -exprs(#20151,63,#20140,1,"(F|0)") -#20152=@"loc,{#10000},3,34,3,38" -locations_default(#20152,#10000,3,34,3,38) -hasLocation(#20151,#20152) -enclosingStmt(#20151,#20092) -exprContainers(#20151,#20001) -#20153=* -exprs(#20153,39,#20151,0,"F|0") -#20154=@"loc,{#10000},3,35,3,37" -locations_default(#20154,#10000,3,35,3,37) -hasLocation(#20153,#20154) -enclosingStmt(#20153,#20092) -exprContainers(#20153,#20001) -#20155=* -exprs(#20155,79,#20153,0,"F") -#20156=@"loc,{#10000},3,35,3,35" -locations_default(#20156,#10000,3,35,3,35) -hasLocation(#20155,#20156) -enclosingStmt(#20155,#20092) -exprContainers(#20155,#20001) -literals("F","F",#20155) -#20157=@"var;{F};{#20000}" -variables(#20157,"F",#20000) -bind(#20155,#20157) -#20158=* -exprs(#20158,3,#20153,1,"0") -#20159=@"loc,{#10000},3,37,3,37" -locations_default(#20159,#10000,3,37,3,37) -hasLocation(#20158,#20159) -enclosingStmt(#20158,#20092) -exprContainers(#20158,#20001) -literals("0","0",#20158) -#20160=* -exprs(#20160,29,#20094,1,"(L|0)>(H|0)") -#20161=@"loc,{#10000},3,40,3,50" -locations_default(#20161,#10000,3,40,3,50) -hasLocation(#20160,#20161) -enclosingStmt(#20160,#20092) -exprContainers(#20160,#20001) -#20162=* -exprs(#20162,63,#20160,0,"(L|0)") -#20163=@"loc,{#10000},3,40,3,44" -locations_default(#20163,#10000,3,40,3,44) -hasLocation(#20162,#20163) -enclosingStmt(#20162,#20092) -exprContainers(#20162,#20001) -#20164=* -exprs(#20164,39,#20162,0,"L|0") -#20165=@"loc,{#10000},3,41,3,43" -locations_default(#20165,#10000,3,41,3,43) -hasLocation(#20164,#20165) -enclosingStmt(#20164,#20092) -exprContainers(#20164,#20001) -#20166=* -exprs(#20166,79,#20164,0,"L") -#20167=@"loc,{#10000},3,41,3,41" -locations_default(#20167,#10000,3,41,3,41) -hasLocation(#20166,#20167) -enclosingStmt(#20166,#20092) -exprContainers(#20166,#20001) -literals("L","L",#20166) -#20168=@"var;{L};{#20000}" -variables(#20168,"L",#20000) -bind(#20166,#20168) -#20169=* -exprs(#20169,3,#20164,1,"0") -#20170=@"loc,{#10000},3,43,3,43" -locations_default(#20170,#10000,3,43,3,43) -hasLocation(#20169,#20170) -enclosingStmt(#20169,#20092) -exprContainers(#20169,#20001) -literals("0","0",#20169) -#20171=* -exprs(#20171,63,#20160,1,"(H|0)") -#20172=@"loc,{#10000},3,46,3,50" -locations_default(#20172,#10000,3,46,3,50) -hasLocation(#20171,#20172) -enclosingStmt(#20171,#20092) -exprContainers(#20171,#20001) -#20173=* -exprs(#20173,39,#20171,0,"H|0") -#20174=@"loc,{#10000},3,47,3,49" -locations_default(#20174,#10000,3,47,3,49) -hasLocation(#20173,#20174) -enclosingStmt(#20173,#20092) -exprContainers(#20173,#20001) -#20175=* -exprs(#20175,79,#20173,0,"H") -#20176=@"loc,{#10000},3,47,3,47" -locations_default(#20176,#10000,3,47,3,47) -hasLocation(#20175,#20176) -enclosingStmt(#20175,#20092) -exprContainers(#20175,#20001) -literals("H","H",#20175) -#20177=@"var;{H};{#20000}" -variables(#20177,"H",#20000) -bind(#20175,#20177) -#20178=* -exprs(#20178,3,#20173,1,"0") -#20179=@"loc,{#10000},3,49,3,49" -locations_default(#20179,#10000,3,49,3,49) -hasLocation(#20178,#20179) -enclosingStmt(#20178,#20092) -exprContainers(#20178,#20001) -literals("0","0",#20178) -#20180=* -stmts(#20180,1,#20092,1,"{}") -#20181=@"loc,{#10000},3,52,3,53" -locations_default(#20181,#10000,3,52,3,53) -hasLocation(#20180,#20181) -stmtContainers(#20180,#20001) -#20182=* -lines(#20182,#20001,"if(!(0<(jd|0)&0>(Wc|0))){}"," +#20002=* +lines(#20002,#20001,"if(!(0<(jd|0)&0>(Wc|0))){}"," ") -hasLocation(#20182,#20004) -#20183=* -lines(#20183,#20001,"g=(g|0)<(e|0)|(g|0)>(b|0)?e:g;"," +#20003=@"loc,{#10000},1,1,1,26" +locations_default(#20003,#10000,1,1,1,26) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"g=(g|0)<(e|0)|(g|0)>(b|0)?e:g;"," ") -hasLocation(#20183,#20040) -#20184=* -lines(#20184,#20001,"if((I|0)<(D|0)|(N|0)>(P|0)|(M|0)<(F|0)|(L|0)>(H|0)){}","") -hasLocation(#20184,#20093) +#20005=@"loc,{#10000},2,1,2,30" +locations_default(#20005,#10000,2,1,2,30) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"if((I|0)<(D|0)|(N|0)>(P|0)|(M|0)<(F|0)|(L|0)>(H|0)){}","") +#20007=@"loc,{#10000},3,1,3,53" +locations_default(#20007,#10000,3,1,3,53) +hasLocation(#20006,#20007) numlines(#20001,3,3,0) -#20185=* -tokeninfo(#20185,7,#20001,0,"if") -#20186=@"loc,{#10000},1,1,1,2" -locations_default(#20186,#10000,1,1,1,2) -hasLocation(#20185,#20186) -#20187=* -tokeninfo(#20187,8,#20001,1,"(") -#20188=@"loc,{#10000},1,3,1,3" -locations_default(#20188,#10000,1,3,1,3) -hasLocation(#20187,#20188) -#20189=* -tokeninfo(#20189,8,#20001,2,"!") -#20190=@"loc,{#10000},1,4,1,4" -locations_default(#20190,#10000,1,4,1,4) -hasLocation(#20189,#20190) -#20191=* -tokeninfo(#20191,8,#20001,3,"(") -#20192=@"loc,{#10000},1,5,1,5" -locations_default(#20192,#10000,1,5,1,5) -hasLocation(#20191,#20192) -#20193=* -tokeninfo(#20193,3,#20001,4,"0") -hasLocation(#20193,#20014) +#20008=* +tokeninfo(#20008,7,#20001,0,"if") +#20009=@"loc,{#10000},1,1,1,2" +locations_default(#20009,#10000,1,1,1,2) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,1,"(") +#20011=@"loc,{#10000},1,3,1,3" +locations_default(#20011,#10000,1,3,1,3) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,8,#20001,2,"!") +#20013=@"loc,{#10000},1,4,1,4" +locations_default(#20013,#10000,1,4,1,4) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,3,"(") +#20015=@"loc,{#10000},1,5,1,5" +locations_default(#20015,#10000,1,5,1,5) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,3,#20001,4,"0") +#20017=@"loc,{#10000},1,6,1,6" +locations_default(#20017,#10000,1,6,1,6) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,5,"<") +#20019=@"loc,{#10000},1,7,1,7" +locations_default(#20019,#10000,1,7,1,7) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,6,"(") +#20021=@"loc,{#10000},1,8,1,8" +locations_default(#20021,#10000,1,8,1,8) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,6,#20001,7,"jd") +#20023=@"loc,{#10000},1,9,1,10" +locations_default(#20023,#10000,1,9,1,10) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,8,"|") +#20025=@"loc,{#10000},1,11,1,11" +locations_default(#20025,#10000,1,11,1,11) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,3,#20001,9,"0") +#20027=@"loc,{#10000},1,12,1,12" +locations_default(#20027,#10000,1,12,1,12) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,10,")") +#20029=@"loc,{#10000},1,13,1,13" +locations_default(#20029,#10000,1,13,1,13) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,11,"&") +#20031=@"loc,{#10000},1,14,1,14" +locations_default(#20031,#10000,1,14,1,14) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,3,#20001,12,"0") +#20033=@"loc,{#10000},1,15,1,15" +locations_default(#20033,#10000,1,15,1,15) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,13,">") +#20035=@"loc,{#10000},1,16,1,16" +locations_default(#20035,#10000,1,16,1,16) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,14,"(") +#20037=@"loc,{#10000},1,17,1,17" +locations_default(#20037,#10000,1,17,1,17) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,6,#20001,15,"Wc") +#20039=@"loc,{#10000},1,18,1,19" +locations_default(#20039,#10000,1,18,1,19) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,16,"|") +#20041=@"loc,{#10000},1,20,1,20" +locations_default(#20041,#10000,1,20,1,20) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,3,#20001,17,"0") +#20043=@"loc,{#10000},1,21,1,21" +locations_default(#20043,#10000,1,21,1,21) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,18,")") +#20045=@"loc,{#10000},1,22,1,22" +locations_default(#20045,#10000,1,22,1,22) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,19,")") +#20047=@"loc,{#10000},1,23,1,23" +locations_default(#20047,#10000,1,23,1,23) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,8,#20001,20,")") +#20049=@"loc,{#10000},1,24,1,24" +locations_default(#20049,#10000,1,24,1,24) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,21,"{") +#20051=@"loc,{#10000},1,25,1,25" +locations_default(#20051,#10000,1,25,1,25) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,8,#20001,22,"}") +#20053=@"loc,{#10000},1,26,1,26" +locations_default(#20053,#10000,1,26,1,26) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,6,#20001,23,"g") +#20055=@"loc,{#10000},2,1,2,1" +locations_default(#20055,#10000,2,1,2,1) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,8,#20001,24,"=") +#20057=@"loc,{#10000},2,2,2,2" +locations_default(#20057,#10000,2,2,2,2) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,8,#20001,25,"(") +#20059=@"loc,{#10000},2,3,2,3" +locations_default(#20059,#10000,2,3,2,3) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,6,#20001,26,"g") +#20061=@"loc,{#10000},2,4,2,4" +locations_default(#20061,#10000,2,4,2,4) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,8,#20001,27,"|") +#20063=@"loc,{#10000},2,5,2,5" +locations_default(#20063,#10000,2,5,2,5) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,3,#20001,28,"0") +#20065=@"loc,{#10000},2,6,2,6" +locations_default(#20065,#10000,2,6,2,6) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,8,#20001,29,")") +#20067=@"loc,{#10000},2,7,2,7" +locations_default(#20067,#10000,2,7,2,7) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,8,#20001,30,"<") +#20069=@"loc,{#10000},2,8,2,8" +locations_default(#20069,#10000,2,8,2,8) +hasLocation(#20068,#20069) +#20070=* +tokeninfo(#20070,8,#20001,31,"(") +#20071=@"loc,{#10000},2,9,2,9" +locations_default(#20071,#10000,2,9,2,9) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,6,#20001,32,"e") +#20073=@"loc,{#10000},2,10,2,10" +locations_default(#20073,#10000,2,10,2,10) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,8,#20001,33,"|") +#20075=@"loc,{#10000},2,11,2,11" +locations_default(#20075,#10000,2,11,2,11) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,3,#20001,34,"0") +#20077=@"loc,{#10000},2,12,2,12" +locations_default(#20077,#10000,2,12,2,12) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,8,#20001,35,")") +#20079=@"loc,{#10000},2,13,2,13" +locations_default(#20079,#10000,2,13,2,13) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,8,#20001,36,"|") +#20081=@"loc,{#10000},2,14,2,14" +locations_default(#20081,#10000,2,14,2,14) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,8,#20001,37,"(") +#20083=@"loc,{#10000},2,15,2,15" +locations_default(#20083,#10000,2,15,2,15) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,6,#20001,38,"g") +#20085=@"loc,{#10000},2,16,2,16" +locations_default(#20085,#10000,2,16,2,16) +hasLocation(#20084,#20085) +#20086=* +tokeninfo(#20086,8,#20001,39,"|") +#20087=@"loc,{#10000},2,17,2,17" +locations_default(#20087,#10000,2,17,2,17) +hasLocation(#20086,#20087) +#20088=* +tokeninfo(#20088,3,#20001,40,"0") +#20089=@"loc,{#10000},2,18,2,18" +locations_default(#20089,#10000,2,18,2,18) +hasLocation(#20088,#20089) +#20090=* +tokeninfo(#20090,8,#20001,41,")") +#20091=@"loc,{#10000},2,19,2,19" +locations_default(#20091,#10000,2,19,2,19) +hasLocation(#20090,#20091) +#20092=* +tokeninfo(#20092,8,#20001,42,">") +#20093=@"loc,{#10000},2,20,2,20" +locations_default(#20093,#10000,2,20,2,20) +hasLocation(#20092,#20093) +#20094=* +tokeninfo(#20094,8,#20001,43,"(") +#20095=@"loc,{#10000},2,21,2,21" +locations_default(#20095,#10000,2,21,2,21) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,6,#20001,44,"b") +#20097=@"loc,{#10000},2,22,2,22" +locations_default(#20097,#10000,2,22,2,22) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,8,#20001,45,"|") +#20099=@"loc,{#10000},2,23,2,23" +locations_default(#20099,#10000,2,23,2,23) +hasLocation(#20098,#20099) +#20100=* +tokeninfo(#20100,3,#20001,46,"0") +#20101=@"loc,{#10000},2,24,2,24" +locations_default(#20101,#10000,2,24,2,24) +hasLocation(#20100,#20101) +#20102=* +tokeninfo(#20102,8,#20001,47,")") +#20103=@"loc,{#10000},2,25,2,25" +locations_default(#20103,#10000,2,25,2,25) +hasLocation(#20102,#20103) +#20104=* +tokeninfo(#20104,8,#20001,48,"?") +#20105=@"loc,{#10000},2,26,2,26" +locations_default(#20105,#10000,2,26,2,26) +hasLocation(#20104,#20105) +#20106=* +tokeninfo(#20106,6,#20001,49,"e") +#20107=@"loc,{#10000},2,27,2,27" +locations_default(#20107,#10000,2,27,2,27) +hasLocation(#20106,#20107) +#20108=* +tokeninfo(#20108,8,#20001,50,":") +#20109=@"loc,{#10000},2,28,2,28" +locations_default(#20109,#10000,2,28,2,28) +hasLocation(#20108,#20109) +#20110=* +tokeninfo(#20110,6,#20001,51,"g") +#20111=@"loc,{#10000},2,29,2,29" +locations_default(#20111,#10000,2,29,2,29) +hasLocation(#20110,#20111) +#20112=* +tokeninfo(#20112,8,#20001,52,";") +#20113=@"loc,{#10000},2,30,2,30" +locations_default(#20113,#10000,2,30,2,30) +hasLocation(#20112,#20113) +#20114=* +tokeninfo(#20114,7,#20001,53,"if") +#20115=@"loc,{#10000},3,1,3,2" +locations_default(#20115,#10000,3,1,3,2) +hasLocation(#20114,#20115) +#20116=* +tokeninfo(#20116,8,#20001,54,"(") +#20117=@"loc,{#10000},3,3,3,3" +locations_default(#20117,#10000,3,3,3,3) +hasLocation(#20116,#20117) +#20118=* +tokeninfo(#20118,8,#20001,55,"(") +#20119=@"loc,{#10000},3,4,3,4" +locations_default(#20119,#10000,3,4,3,4) +hasLocation(#20118,#20119) +#20120=* +tokeninfo(#20120,6,#20001,56,"I") +#20121=@"loc,{#10000},3,5,3,5" +locations_default(#20121,#10000,3,5,3,5) +hasLocation(#20120,#20121) +#20122=* +tokeninfo(#20122,8,#20001,57,"|") +#20123=@"loc,{#10000},3,6,3,6" +locations_default(#20123,#10000,3,6,3,6) +hasLocation(#20122,#20123) +#20124=* +tokeninfo(#20124,3,#20001,58,"0") +#20125=@"loc,{#10000},3,7,3,7" +locations_default(#20125,#10000,3,7,3,7) +hasLocation(#20124,#20125) +#20126=* +tokeninfo(#20126,8,#20001,59,")") +#20127=@"loc,{#10000},3,8,3,8" +locations_default(#20127,#10000,3,8,3,8) +hasLocation(#20126,#20127) +#20128=* +tokeninfo(#20128,8,#20001,60,"<") +#20129=@"loc,{#10000},3,9,3,9" +locations_default(#20129,#10000,3,9,3,9) +hasLocation(#20128,#20129) +#20130=* +tokeninfo(#20130,8,#20001,61,"(") +#20131=@"loc,{#10000},3,10,3,10" +locations_default(#20131,#10000,3,10,3,10) +hasLocation(#20130,#20131) +#20132=* +tokeninfo(#20132,6,#20001,62,"D") +#20133=@"loc,{#10000},3,11,3,11" +locations_default(#20133,#10000,3,11,3,11) +hasLocation(#20132,#20133) +#20134=* +tokeninfo(#20134,8,#20001,63,"|") +#20135=@"loc,{#10000},3,12,3,12" +locations_default(#20135,#10000,3,12,3,12) +hasLocation(#20134,#20135) +#20136=* +tokeninfo(#20136,3,#20001,64,"0") +#20137=@"loc,{#10000},3,13,3,13" +locations_default(#20137,#10000,3,13,3,13) +hasLocation(#20136,#20137) +#20138=* +tokeninfo(#20138,8,#20001,65,")") +#20139=@"loc,{#10000},3,14,3,14" +locations_default(#20139,#10000,3,14,3,14) +hasLocation(#20138,#20139) +#20140=* +tokeninfo(#20140,8,#20001,66,"|") +#20141=@"loc,{#10000},3,15,3,15" +locations_default(#20141,#10000,3,15,3,15) +hasLocation(#20140,#20141) +#20142=* +tokeninfo(#20142,8,#20001,67,"(") +#20143=@"loc,{#10000},3,16,3,16" +locations_default(#20143,#10000,3,16,3,16) +hasLocation(#20142,#20143) +#20144=* +tokeninfo(#20144,6,#20001,68,"N") +#20145=@"loc,{#10000},3,17,3,17" +locations_default(#20145,#10000,3,17,3,17) +hasLocation(#20144,#20145) +#20146=* +tokeninfo(#20146,8,#20001,69,"|") +#20147=@"loc,{#10000},3,18,3,18" +locations_default(#20147,#10000,3,18,3,18) +hasLocation(#20146,#20147) +#20148=* +tokeninfo(#20148,3,#20001,70,"0") +#20149=@"loc,{#10000},3,19,3,19" +locations_default(#20149,#10000,3,19,3,19) +hasLocation(#20148,#20149) +#20150=* +tokeninfo(#20150,8,#20001,71,")") +#20151=@"loc,{#10000},3,20,3,20" +locations_default(#20151,#10000,3,20,3,20) +hasLocation(#20150,#20151) +#20152=* +tokeninfo(#20152,8,#20001,72,">") +#20153=@"loc,{#10000},3,21,3,21" +locations_default(#20153,#10000,3,21,3,21) +hasLocation(#20152,#20153) +#20154=* +tokeninfo(#20154,8,#20001,73,"(") +#20155=@"loc,{#10000},3,22,3,22" +locations_default(#20155,#10000,3,22,3,22) +hasLocation(#20154,#20155) +#20156=* +tokeninfo(#20156,6,#20001,74,"P") +#20157=@"loc,{#10000},3,23,3,23" +locations_default(#20157,#10000,3,23,3,23) +hasLocation(#20156,#20157) +#20158=* +tokeninfo(#20158,8,#20001,75,"|") +#20159=@"loc,{#10000},3,24,3,24" +locations_default(#20159,#10000,3,24,3,24) +hasLocation(#20158,#20159) +#20160=* +tokeninfo(#20160,3,#20001,76,"0") +#20161=@"loc,{#10000},3,25,3,25" +locations_default(#20161,#10000,3,25,3,25) +hasLocation(#20160,#20161) +#20162=* +tokeninfo(#20162,8,#20001,77,")") +#20163=@"loc,{#10000},3,26,3,26" +locations_default(#20163,#10000,3,26,3,26) +hasLocation(#20162,#20163) +#20164=* +tokeninfo(#20164,8,#20001,78,"|") +#20165=@"loc,{#10000},3,27,3,27" +locations_default(#20165,#10000,3,27,3,27) +hasLocation(#20164,#20165) +#20166=* +tokeninfo(#20166,8,#20001,79,"(") +#20167=@"loc,{#10000},3,28,3,28" +locations_default(#20167,#10000,3,28,3,28) +hasLocation(#20166,#20167) +#20168=* +tokeninfo(#20168,6,#20001,80,"M") +#20169=@"loc,{#10000},3,29,3,29" +locations_default(#20169,#10000,3,29,3,29) +hasLocation(#20168,#20169) +#20170=* +tokeninfo(#20170,8,#20001,81,"|") +#20171=@"loc,{#10000},3,30,3,30" +locations_default(#20171,#10000,3,30,3,30) +hasLocation(#20170,#20171) +#20172=* +tokeninfo(#20172,3,#20001,82,"0") +#20173=@"loc,{#10000},3,31,3,31" +locations_default(#20173,#10000,3,31,3,31) +hasLocation(#20172,#20173) +#20174=* +tokeninfo(#20174,8,#20001,83,")") +#20175=@"loc,{#10000},3,32,3,32" +locations_default(#20175,#10000,3,32,3,32) +hasLocation(#20174,#20175) +#20176=* +tokeninfo(#20176,8,#20001,84,"<") +#20177=@"loc,{#10000},3,33,3,33" +locations_default(#20177,#10000,3,33,3,33) +hasLocation(#20176,#20177) +#20178=* +tokeninfo(#20178,8,#20001,85,"(") +#20179=@"loc,{#10000},3,34,3,34" +locations_default(#20179,#10000,3,34,3,34) +hasLocation(#20178,#20179) +#20180=* +tokeninfo(#20180,6,#20001,86,"F") +#20181=@"loc,{#10000},3,35,3,35" +locations_default(#20181,#10000,3,35,3,35) +hasLocation(#20180,#20181) +#20182=* +tokeninfo(#20182,8,#20001,87,"|") +#20183=@"loc,{#10000},3,36,3,36" +locations_default(#20183,#10000,3,36,3,36) +hasLocation(#20182,#20183) +#20184=* +tokeninfo(#20184,3,#20001,88,"0") +#20185=@"loc,{#10000},3,37,3,37" +locations_default(#20185,#10000,3,37,3,37) +hasLocation(#20184,#20185) +#20186=* +tokeninfo(#20186,8,#20001,89,")") +#20187=@"loc,{#10000},3,38,3,38" +locations_default(#20187,#10000,3,38,3,38) +hasLocation(#20186,#20187) +#20188=* +tokeninfo(#20188,8,#20001,90,"|") +#20189=@"loc,{#10000},3,39,3,39" +locations_default(#20189,#10000,3,39,3,39) +hasLocation(#20188,#20189) +#20190=* +tokeninfo(#20190,8,#20001,91,"(") +#20191=@"loc,{#10000},3,40,3,40" +locations_default(#20191,#10000,3,40,3,40) +hasLocation(#20190,#20191) +#20192=* +tokeninfo(#20192,6,#20001,92,"L") +#20193=@"loc,{#10000},3,41,3,41" +locations_default(#20193,#10000,3,41,3,41) +hasLocation(#20192,#20193) #20194=* -tokeninfo(#20194,8,#20001,5,"<") -#20195=@"loc,{#10000},1,7,1,7" -locations_default(#20195,#10000,1,7,1,7) +tokeninfo(#20194,8,#20001,93,"|") +#20195=@"loc,{#10000},3,42,3,42" +locations_default(#20195,#10000,3,42,3,42) hasLocation(#20194,#20195) #20196=* -tokeninfo(#20196,8,#20001,6,"(") -#20197=@"loc,{#10000},1,8,1,8" -locations_default(#20197,#10000,1,8,1,8) +tokeninfo(#20196,3,#20001,94,"0") +#20197=@"loc,{#10000},3,43,3,43" +locations_default(#20197,#10000,3,43,3,43) hasLocation(#20196,#20197) #20198=* -tokeninfo(#20198,6,#20001,7,"jd") -hasLocation(#20198,#20020) -#20199=* -tokeninfo(#20199,8,#20001,8,"|") -#20200=@"loc,{#10000},1,11,1,11" -locations_default(#20200,#10000,1,11,1,11) -hasLocation(#20199,#20200) -#20201=* -tokeninfo(#20201,3,#20001,9,"0") -hasLocation(#20201,#20023) +tokeninfo(#20198,8,#20001,95,")") +#20199=@"loc,{#10000},3,44,3,44" +locations_default(#20199,#10000,3,44,3,44) +hasLocation(#20198,#20199) +#20200=* +tokeninfo(#20200,8,#20001,96,">") +#20201=@"loc,{#10000},3,45,3,45" +locations_default(#20201,#10000,3,45,3,45) +hasLocation(#20200,#20201) #20202=* -tokeninfo(#20202,8,#20001,10,")") -#20203=@"loc,{#10000},1,13,1,13" -locations_default(#20203,#10000,1,13,1,13) +tokeninfo(#20202,8,#20001,97,"(") +#20203=@"loc,{#10000},3,46,3,46" +locations_default(#20203,#10000,3,46,3,46) hasLocation(#20202,#20203) #20204=* -tokeninfo(#20204,8,#20001,11,"&") -#20205=@"loc,{#10000},1,14,1,14" -locations_default(#20205,#10000,1,14,1,14) +tokeninfo(#20204,6,#20001,98,"H") +#20205=@"loc,{#10000},3,47,3,47" +locations_default(#20205,#10000,3,47,3,47) hasLocation(#20204,#20205) #20206=* -tokeninfo(#20206,3,#20001,12,"0") -hasLocation(#20206,#20027) -#20207=* -tokeninfo(#20207,8,#20001,13,">") -#20208=@"loc,{#10000},1,16,1,16" -locations_default(#20208,#10000,1,16,1,16) -hasLocation(#20207,#20208) -#20209=* -tokeninfo(#20209,8,#20001,14,"(") -#20210=@"loc,{#10000},1,17,1,17" -locations_default(#20210,#10000,1,17,1,17) -hasLocation(#20209,#20210) -#20211=* -tokeninfo(#20211,6,#20001,15,"Wc") -hasLocation(#20211,#20033) +tokeninfo(#20206,8,#20001,99,"|") +#20207=@"loc,{#10000},3,48,3,48" +locations_default(#20207,#10000,3,48,3,48) +hasLocation(#20206,#20207) +#20208=* +tokeninfo(#20208,3,#20001,100,"0") +#20209=@"loc,{#10000},3,49,3,49" +locations_default(#20209,#10000,3,49,3,49) +hasLocation(#20208,#20209) +#20210=* +tokeninfo(#20210,8,#20001,101,")") +#20211=@"loc,{#10000},3,50,3,50" +locations_default(#20211,#10000,3,50,3,50) +hasLocation(#20210,#20211) #20212=* -tokeninfo(#20212,8,#20001,16,"|") -#20213=@"loc,{#10000},1,20,1,20" -locations_default(#20213,#10000,1,20,1,20) +tokeninfo(#20212,8,#20001,102,")") +#20213=@"loc,{#10000},3,51,3,51" +locations_default(#20213,#10000,3,51,3,51) hasLocation(#20212,#20213) #20214=* -tokeninfo(#20214,3,#20001,17,"0") -hasLocation(#20214,#20036) -#20215=* -tokeninfo(#20215,8,#20001,18,")") -#20216=@"loc,{#10000},1,22,1,22" -locations_default(#20216,#10000,1,22,1,22) -hasLocation(#20215,#20216) -#20217=* -tokeninfo(#20217,8,#20001,19,")") -#20218=@"loc,{#10000},1,23,1,23" -locations_default(#20218,#10000,1,23,1,23) -hasLocation(#20217,#20218) -#20219=* -tokeninfo(#20219,8,#20001,20,")") -#20220=@"loc,{#10000},1,24,1,24" -locations_default(#20220,#10000,1,24,1,24) -hasLocation(#20219,#20220) +tokeninfo(#20214,8,#20001,103,"{") +#20215=@"loc,{#10000},3,52,3,52" +locations_default(#20215,#10000,3,52,3,52) +hasLocation(#20214,#20215) +#20216=* +tokeninfo(#20216,8,#20001,104,"}") +#20217=@"loc,{#10000},3,53,3,53" +locations_default(#20217,#10000,3,53,3,53) +hasLocation(#20216,#20217) +#20218=* +tokeninfo(#20218,0,#20001,105,"") +#20219=@"loc,{#10000},3,54,3,53" +locations_default(#20219,#10000,3,54,3,53) +hasLocation(#20218,#20219) +toplevels(#20001,0) +#20220=@"loc,{#10000},1,1,3,53" +locations_default(#20220,#10000,1,1,3,53) +hasLocation(#20001,#20220) #20221=* -tokeninfo(#20221,8,#20001,21,"{") -#20222=@"loc,{#10000},1,25,1,25" -locations_default(#20222,#10000,1,25,1,25) -hasLocation(#20221,#20222) -#20223=* -tokeninfo(#20223,8,#20001,22,"}") -#20224=@"loc,{#10000},1,26,1,26" -locations_default(#20224,#10000,1,26,1,26) -hasLocation(#20223,#20224) -#20225=* -tokeninfo(#20225,6,#20001,23,"g") -hasLocation(#20225,#20044) +stmts(#20221,3,#20001,0,"if(!(0< ... |0))){}") +hasLocation(#20221,#20003) +stmtContainers(#20221,#20001) +#20222=* +exprs(#20222,18,#20221,0,"!(0<(jd|0)&0>(Wc|0))") +#20223=@"loc,{#10000},1,4,1,23" +locations_default(#20223,#10000,1,4,1,23) +hasLocation(#20222,#20223) +enclosingStmt(#20222,#20221) +exprContainers(#20222,#20001) +#20224=* +exprs(#20224,63,#20222,0,"(0<(jd|0)&0>(Wc|0))") +#20225=@"loc,{#10000},1,5,1,23" +locations_default(#20225,#10000,1,5,1,23) +hasLocation(#20224,#20225) +enclosingStmt(#20224,#20221) +exprContainers(#20224,#20001) #20226=* -tokeninfo(#20226,8,#20001,24,"=") -#20227=@"loc,{#10000},2,2,2,2" -locations_default(#20227,#10000,2,2,2,2) +exprs(#20226,41,#20224,0,"0<(jd|0)&0>(Wc|0)") +#20227=@"loc,{#10000},1,6,1,22" +locations_default(#20227,#10000,1,6,1,22) hasLocation(#20226,#20227) +enclosingStmt(#20226,#20221) +exprContainers(#20226,#20001) #20228=* -tokeninfo(#20228,8,#20001,25,"(") -#20229=@"loc,{#10000},2,3,2,3" -locations_default(#20229,#10000,2,3,2,3) +exprs(#20228,27,#20226,0,"0<(jd|0)") +#20229=@"loc,{#10000},1,6,1,13" +locations_default(#20229,#10000,1,6,1,13) hasLocation(#20228,#20229) +enclosingStmt(#20228,#20221) +exprContainers(#20228,#20001) #20230=* -tokeninfo(#20230,6,#20001,26,"g") -hasLocation(#20230,#20057) +exprs(#20230,3,#20228,0,"0") +hasLocation(#20230,#20017) +enclosingStmt(#20230,#20221) +exprContainers(#20230,#20001) +literals("0","0",#20230) #20231=* -tokeninfo(#20231,8,#20001,27,"|") -#20232=@"loc,{#10000},2,5,2,5" -locations_default(#20232,#10000,2,5,2,5) +exprs(#20231,63,#20228,1,"(jd|0)") +#20232=@"loc,{#10000},1,8,1,13" +locations_default(#20232,#10000,1,8,1,13) hasLocation(#20231,#20232) +enclosingStmt(#20231,#20221) +exprContainers(#20231,#20001) #20233=* -tokeninfo(#20233,3,#20001,28,"0") -hasLocation(#20233,#20059) -#20234=* -tokeninfo(#20234,8,#20001,29,")") -#20235=@"loc,{#10000},2,7,2,7" -locations_default(#20235,#10000,2,7,2,7) -hasLocation(#20234,#20235) -#20236=* -tokeninfo(#20236,8,#20001,30,"<") -#20237=@"loc,{#10000},2,8,2,8" -locations_default(#20237,#10000,2,8,2,8) -hasLocation(#20236,#20237) +exprs(#20233,39,#20231,0,"jd|0") +#20234=@"loc,{#10000},1,9,1,12" +locations_default(#20234,#10000,1,9,1,12) +hasLocation(#20233,#20234) +enclosingStmt(#20233,#20221) +exprContainers(#20233,#20001) +#20235=* +exprs(#20235,79,#20233,0,"jd") +hasLocation(#20235,#20023) +enclosingStmt(#20235,#20221) +exprContainers(#20235,#20001) +literals("jd","jd",#20235) +#20236=@"var;{jd};{#20000}" +variables(#20236,"jd",#20000) +bind(#20235,#20236) +#20237=* +exprs(#20237,3,#20233,1,"0") +hasLocation(#20237,#20027) +enclosingStmt(#20237,#20221) +exprContainers(#20237,#20001) +literals("0","0",#20237) #20238=* -tokeninfo(#20238,8,#20001,31,"(") -#20239=@"loc,{#10000},2,9,2,9" -locations_default(#20239,#10000,2,9,2,9) +exprs(#20238,29,#20226,1,"0>(Wc|0)") +#20239=@"loc,{#10000},1,15,1,22" +locations_default(#20239,#10000,1,15,1,22) hasLocation(#20238,#20239) +enclosingStmt(#20238,#20221) +exprContainers(#20238,#20001) #20240=* -tokeninfo(#20240,6,#20001,32,"e") -hasLocation(#20240,#20065) +exprs(#20240,3,#20238,0,"0") +hasLocation(#20240,#20033) +enclosingStmt(#20240,#20221) +exprContainers(#20240,#20001) +literals("0","0",#20240) #20241=* -tokeninfo(#20241,8,#20001,33,"|") -#20242=@"loc,{#10000},2,11,2,11" -locations_default(#20242,#10000,2,11,2,11) +exprs(#20241,63,#20238,1,"(Wc|0)") +#20242=@"loc,{#10000},1,17,1,22" +locations_default(#20242,#10000,1,17,1,22) hasLocation(#20241,#20242) +enclosingStmt(#20241,#20221) +exprContainers(#20241,#20001) #20243=* -tokeninfo(#20243,3,#20001,34,"0") -hasLocation(#20243,#20068) -#20244=* -tokeninfo(#20244,8,#20001,35,")") -#20245=@"loc,{#10000},2,13,2,13" -locations_default(#20245,#10000,2,13,2,13) -hasLocation(#20244,#20245) -#20246=* -tokeninfo(#20246,8,#20001,36,"|") -#20247=@"loc,{#10000},2,14,2,14" -locations_default(#20247,#10000,2,14,2,14) -hasLocation(#20246,#20247) +exprs(#20243,39,#20241,0,"Wc|0") +#20244=@"loc,{#10000},1,18,1,21" +locations_default(#20244,#10000,1,18,1,21) +hasLocation(#20243,#20244) +enclosingStmt(#20243,#20221) +exprContainers(#20243,#20001) +#20245=* +exprs(#20245,79,#20243,0,"Wc") +hasLocation(#20245,#20039) +enclosingStmt(#20245,#20221) +exprContainers(#20245,#20001) +literals("Wc","Wc",#20245) +#20246=@"var;{Wc};{#20000}" +variables(#20246,"Wc",#20000) +bind(#20245,#20246) +#20247=* +exprs(#20247,3,#20243,1,"0") +hasLocation(#20247,#20043) +enclosingStmt(#20247,#20221) +exprContainers(#20247,#20001) +literals("0","0",#20247) #20248=* -tokeninfo(#20248,8,#20001,37,"(") -#20249=@"loc,{#10000},2,15,2,15" -locations_default(#20249,#10000,2,15,2,15) +stmts(#20248,1,#20221,1,"{}") +#20249=@"loc,{#10000},1,25,1,26" +locations_default(#20249,#10000,1,25,1,26) hasLocation(#20248,#20249) +stmtContainers(#20248,#20001) #20250=* -tokeninfo(#20250,6,#20001,38,"g") -hasLocation(#20250,#20076) +stmts(#20250,2,#20001,1,"g=(g|0) ... 0)?e:g;") +hasLocation(#20250,#20005) +stmtContainers(#20250,#20001) #20251=* -tokeninfo(#20251,8,#20001,39,"|") -#20252=@"loc,{#10000},2,17,2,17" -locations_default(#20252,#10000,2,17,2,17) +exprs(#20251,47,#20250,0,"g=(g|0) ... |0)?e:g") +#20252=@"loc,{#10000},2,1,2,29" +locations_default(#20252,#10000,2,1,2,29) hasLocation(#20251,#20252) +enclosingStmt(#20251,#20250) +exprContainers(#20251,#20001) #20253=* -tokeninfo(#20253,3,#20001,40,"0") -hasLocation(#20253,#20078) -#20254=* -tokeninfo(#20254,8,#20001,41,")") -#20255=@"loc,{#10000},2,19,2,19" -locations_default(#20255,#10000,2,19,2,19) -hasLocation(#20254,#20255) -#20256=* -tokeninfo(#20256,8,#20001,42,">") -#20257=@"loc,{#10000},2,20,2,20" -locations_default(#20257,#10000,2,20,2,20) -hasLocation(#20256,#20257) -#20258=* -tokeninfo(#20258,8,#20001,43,"(") -#20259=@"loc,{#10000},2,21,2,21" -locations_default(#20259,#10000,2,21,2,21) -hasLocation(#20258,#20259) -#20260=* -tokeninfo(#20260,6,#20001,44,"b") -hasLocation(#20260,#20084) +exprs(#20253,79,#20251,0,"g") +hasLocation(#20253,#20055) +enclosingStmt(#20253,#20250) +exprContainers(#20253,#20001) +literals("g","g",#20253) +#20254=@"var;{g};{#20000}" +variables(#20254,"g",#20000) +bind(#20253,#20254) +#20255=* +exprs(#20255,11,#20251,1,"(g|0)<( ... |0)?e:g") +#20256=@"loc,{#10000},2,3,2,29" +locations_default(#20256,#10000,2,3,2,29) +hasLocation(#20255,#20256) +enclosingStmt(#20255,#20250) +exprContainers(#20255,#20001) +#20257=* +exprs(#20257,39,#20255,0,"(g|0)<( ... )>(b|0)") +#20258=@"loc,{#10000},2,3,2,25" +locations_default(#20258,#10000,2,3,2,25) +hasLocation(#20257,#20258) +enclosingStmt(#20257,#20250) +exprContainers(#20257,#20001) +#20259=* +exprs(#20259,27,#20257,0,"(g|0)<(e|0)") +#20260=@"loc,{#10000},2,3,2,13" +locations_default(#20260,#10000,2,3,2,13) +hasLocation(#20259,#20260) +enclosingStmt(#20259,#20250) +exprContainers(#20259,#20001) #20261=* -tokeninfo(#20261,8,#20001,45,"|") -#20262=@"loc,{#10000},2,23,2,23" -locations_default(#20262,#10000,2,23,2,23) +exprs(#20261,63,#20259,0,"(g|0)") +#20262=@"loc,{#10000},2,3,2,7" +locations_default(#20262,#10000,2,3,2,7) hasLocation(#20261,#20262) +enclosingStmt(#20261,#20250) +exprContainers(#20261,#20001) #20263=* -tokeninfo(#20263,3,#20001,46,"0") -hasLocation(#20263,#20087) -#20264=* -tokeninfo(#20264,8,#20001,47,")") -#20265=@"loc,{#10000},2,25,2,25" -locations_default(#20265,#10000,2,25,2,25) -hasLocation(#20264,#20265) +exprs(#20263,39,#20261,0,"g|0") +#20264=@"loc,{#10000},2,4,2,6" +locations_default(#20264,#10000,2,4,2,6) +hasLocation(#20263,#20264) +enclosingStmt(#20263,#20250) +exprContainers(#20263,#20001) +#20265=* +exprs(#20265,79,#20263,0,"g") +hasLocation(#20265,#20061) +enclosingStmt(#20265,#20250) +exprContainers(#20265,#20001) +literals("g","g",#20265) +bind(#20265,#20254) #20266=* -tokeninfo(#20266,8,#20001,48,"?") -#20267=@"loc,{#10000},2,26,2,26" -locations_default(#20267,#10000,2,26,2,26) -hasLocation(#20266,#20267) -#20268=* -tokeninfo(#20268,6,#20001,49,"e") -hasLocation(#20268,#20089) +exprs(#20266,3,#20263,1,"0") +hasLocation(#20266,#20065) +enclosingStmt(#20266,#20250) +exprContainers(#20266,#20001) +literals("0","0",#20266) +#20267=* +exprs(#20267,63,#20259,1,"(e|0)") +#20268=@"loc,{#10000},2,9,2,13" +locations_default(#20268,#10000,2,9,2,13) +hasLocation(#20267,#20268) +enclosingStmt(#20267,#20250) +exprContainers(#20267,#20001) #20269=* -tokeninfo(#20269,8,#20001,50,":") -#20270=@"loc,{#10000},2,28,2,28" -locations_default(#20270,#10000,2,28,2,28) +exprs(#20269,39,#20267,0,"e|0") +#20270=@"loc,{#10000},2,10,2,12" +locations_default(#20270,#10000,2,10,2,12) hasLocation(#20269,#20270) +enclosingStmt(#20269,#20250) +exprContainers(#20269,#20001) #20271=* -tokeninfo(#20271,6,#20001,51,"g") -hasLocation(#20271,#20091) -#20272=* -tokeninfo(#20272,8,#20001,52,";") -#20273=@"loc,{#10000},2,30,2,30" -locations_default(#20273,#10000,2,30,2,30) -hasLocation(#20272,#20273) +exprs(#20271,79,#20269,0,"e") +hasLocation(#20271,#20073) +enclosingStmt(#20271,#20250) +exprContainers(#20271,#20001) +literals("e","e",#20271) +#20272=@"var;{e};{#20000}" +variables(#20272,"e",#20000) +bind(#20271,#20272) +#20273=* +exprs(#20273,3,#20269,1,"0") +hasLocation(#20273,#20077) +enclosingStmt(#20273,#20250) +exprContainers(#20273,#20001) +literals("0","0",#20273) #20274=* -tokeninfo(#20274,7,#20001,53,"if") -#20275=@"loc,{#10000},3,1,3,2" -locations_default(#20275,#10000,3,1,3,2) +exprs(#20274,29,#20257,1,"(g|0)>(b|0)") +#20275=@"loc,{#10000},2,15,2,25" +locations_default(#20275,#10000,2,15,2,25) hasLocation(#20274,#20275) +enclosingStmt(#20274,#20250) +exprContainers(#20274,#20001) #20276=* -tokeninfo(#20276,8,#20001,54,"(") -#20277=@"loc,{#10000},3,3,3,3" -locations_default(#20277,#10000,3,3,3,3) +exprs(#20276,63,#20274,0,"(g|0)") +#20277=@"loc,{#10000},2,15,2,19" +locations_default(#20277,#10000,2,15,2,19) hasLocation(#20276,#20277) +enclosingStmt(#20276,#20250) +exprContainers(#20276,#20001) #20278=* -tokeninfo(#20278,8,#20001,55,"(") -#20279=@"loc,{#10000},3,4,3,4" -locations_default(#20279,#10000,3,4,3,4) +exprs(#20278,39,#20276,0,"g|0") +#20279=@"loc,{#10000},2,16,2,18" +locations_default(#20279,#10000,2,16,2,18) hasLocation(#20278,#20279) +enclosingStmt(#20278,#20250) +exprContainers(#20278,#20001) #20280=* -tokeninfo(#20280,6,#20001,56,"I") -hasLocation(#20280,#20107) +exprs(#20280,79,#20278,0,"g") +hasLocation(#20280,#20085) +enclosingStmt(#20280,#20250) +exprContainers(#20280,#20001) +literals("g","g",#20280) +bind(#20280,#20254) #20281=* -tokeninfo(#20281,8,#20001,57,"|") -#20282=@"loc,{#10000},3,6,3,6" -locations_default(#20282,#10000,3,6,3,6) -hasLocation(#20281,#20282) -#20283=* -tokeninfo(#20283,3,#20001,58,"0") -hasLocation(#20283,#20110) +exprs(#20281,3,#20278,1,"0") +hasLocation(#20281,#20089) +enclosingStmt(#20281,#20250) +exprContainers(#20281,#20001) +literals("0","0",#20281) +#20282=* +exprs(#20282,63,#20274,1,"(b|0)") +#20283=@"loc,{#10000},2,21,2,25" +locations_default(#20283,#10000,2,21,2,25) +hasLocation(#20282,#20283) +enclosingStmt(#20282,#20250) +exprContainers(#20282,#20001) #20284=* -tokeninfo(#20284,8,#20001,59,")") -#20285=@"loc,{#10000},3,8,3,8" -locations_default(#20285,#10000,3,8,3,8) +exprs(#20284,39,#20282,0,"b|0") +#20285=@"loc,{#10000},2,22,2,24" +locations_default(#20285,#10000,2,22,2,24) hasLocation(#20284,#20285) +enclosingStmt(#20284,#20250) +exprContainers(#20284,#20001) #20286=* -tokeninfo(#20286,8,#20001,60,"<") -#20287=@"loc,{#10000},3,9,3,9" -locations_default(#20287,#10000,3,9,3,9) -hasLocation(#20286,#20287) +exprs(#20286,79,#20284,0,"b") +hasLocation(#20286,#20097) +enclosingStmt(#20286,#20250) +exprContainers(#20286,#20001) +literals("b","b",#20286) +#20287=@"var;{b};{#20000}" +variables(#20287,"b",#20000) +bind(#20286,#20287) #20288=* -tokeninfo(#20288,8,#20001,61,"(") -#20289=@"loc,{#10000},3,10,3,10" -locations_default(#20289,#10000,3,10,3,10) -hasLocation(#20288,#20289) +exprs(#20288,3,#20284,1,"0") +hasLocation(#20288,#20101) +enclosingStmt(#20288,#20250) +exprContainers(#20288,#20001) +literals("0","0",#20288) +#20289=* +exprs(#20289,79,#20255,1,"e") +hasLocation(#20289,#20107) +enclosingStmt(#20289,#20250) +exprContainers(#20289,#20001) +literals("e","e",#20289) +bind(#20289,#20272) #20290=* -tokeninfo(#20290,6,#20001,62,"D") -hasLocation(#20290,#20116) +exprs(#20290,79,#20255,2,"g") +hasLocation(#20290,#20111) +enclosingStmt(#20290,#20250) +exprContainers(#20290,#20001) +literals("g","g",#20290) +bind(#20290,#20254) #20291=* -tokeninfo(#20291,8,#20001,63,"|") -#20292=@"loc,{#10000},3,12,3,12" -locations_default(#20292,#10000,3,12,3,12) -hasLocation(#20291,#20292) -#20293=* -tokeninfo(#20293,3,#20001,64,"0") -hasLocation(#20293,#20119) +stmts(#20291,3,#20001,2,"if((I|0 ... H|0)){}") +hasLocation(#20291,#20007) +stmtContainers(#20291,#20001) +#20292=* +exprs(#20292,39,#20291,0,"(I|0)<( ... )>(H|0)") +#20293=@"loc,{#10000},3,4,3,50" +locations_default(#20293,#10000,3,4,3,50) +hasLocation(#20292,#20293) +enclosingStmt(#20292,#20291) +exprContainers(#20292,#20001) #20294=* -tokeninfo(#20294,8,#20001,65,")") -#20295=@"loc,{#10000},3,14,3,14" -locations_default(#20295,#10000,3,14,3,14) +exprs(#20294,39,#20292,0,"(I|0)<( ... )<(F|0)") +#20295=@"loc,{#10000},3,4,3,38" +locations_default(#20295,#10000,3,4,3,38) hasLocation(#20294,#20295) +enclosingStmt(#20294,#20291) +exprContainers(#20294,#20001) #20296=* -tokeninfo(#20296,8,#20001,66,"|") -#20297=@"loc,{#10000},3,15,3,15" -locations_default(#20297,#10000,3,15,3,15) +exprs(#20296,39,#20294,0,"(I|0)<( ... )>(P|0)") +#20297=@"loc,{#10000},3,4,3,26" +locations_default(#20297,#10000,3,4,3,26) hasLocation(#20296,#20297) +enclosingStmt(#20296,#20291) +exprContainers(#20296,#20001) #20298=* -tokeninfo(#20298,8,#20001,67,"(") -#20299=@"loc,{#10000},3,16,3,16" -locations_default(#20299,#10000,3,16,3,16) +exprs(#20298,27,#20296,0,"(I|0)<(D|0)") +#20299=@"loc,{#10000},3,4,3,14" +locations_default(#20299,#10000,3,4,3,14) hasLocation(#20298,#20299) +enclosingStmt(#20298,#20291) +exprContainers(#20298,#20001) #20300=* -tokeninfo(#20300,6,#20001,68,"N") -hasLocation(#20300,#20127) -#20301=* -tokeninfo(#20301,8,#20001,69,"|") -#20302=@"loc,{#10000},3,18,3,18" -locations_default(#20302,#10000,3,18,3,18) -hasLocation(#20301,#20302) -#20303=* -tokeninfo(#20303,3,#20001,70,"0") -hasLocation(#20303,#20130) +exprs(#20300,63,#20298,0,"(I|0)") +#20301=@"loc,{#10000},3,4,3,8" +locations_default(#20301,#10000,3,4,3,8) +hasLocation(#20300,#20301) +enclosingStmt(#20300,#20291) +exprContainers(#20300,#20001) +#20302=* +exprs(#20302,39,#20300,0,"I|0") +#20303=@"loc,{#10000},3,5,3,7" +locations_default(#20303,#10000,3,5,3,7) +hasLocation(#20302,#20303) +enclosingStmt(#20302,#20291) +exprContainers(#20302,#20001) #20304=* -tokeninfo(#20304,8,#20001,71,")") -#20305=@"loc,{#10000},3,20,3,20" -locations_default(#20305,#10000,3,20,3,20) -hasLocation(#20304,#20305) +exprs(#20304,79,#20302,0,"I") +hasLocation(#20304,#20121) +enclosingStmt(#20304,#20291) +exprContainers(#20304,#20001) +literals("I","I",#20304) +#20305=@"var;{I};{#20000}" +variables(#20305,"I",#20000) +bind(#20304,#20305) #20306=* -tokeninfo(#20306,8,#20001,72,">") -#20307=@"loc,{#10000},3,21,3,21" -locations_default(#20307,#10000,3,21,3,21) -hasLocation(#20306,#20307) -#20308=* -tokeninfo(#20308,8,#20001,73,"(") -#20309=@"loc,{#10000},3,22,3,22" -locations_default(#20309,#10000,3,22,3,22) -hasLocation(#20308,#20309) -#20310=* -tokeninfo(#20310,6,#20001,74,"P") -hasLocation(#20310,#20136) +exprs(#20306,3,#20302,1,"0") +hasLocation(#20306,#20125) +enclosingStmt(#20306,#20291) +exprContainers(#20306,#20001) +literals("0","0",#20306) +#20307=* +exprs(#20307,63,#20298,1,"(D|0)") +#20308=@"loc,{#10000},3,10,3,14" +locations_default(#20308,#10000,3,10,3,14) +hasLocation(#20307,#20308) +enclosingStmt(#20307,#20291) +exprContainers(#20307,#20001) +#20309=* +exprs(#20309,39,#20307,0,"D|0") +#20310=@"loc,{#10000},3,11,3,13" +locations_default(#20310,#10000,3,11,3,13) +hasLocation(#20309,#20310) +enclosingStmt(#20309,#20291) +exprContainers(#20309,#20001) #20311=* -tokeninfo(#20311,8,#20001,75,"|") -#20312=@"loc,{#10000},3,24,3,24" -locations_default(#20312,#10000,3,24,3,24) -hasLocation(#20311,#20312) +exprs(#20311,79,#20309,0,"D") +hasLocation(#20311,#20133) +enclosingStmt(#20311,#20291) +exprContainers(#20311,#20001) +literals("D","D",#20311) +#20312=@"var;{D};{#20000}" +variables(#20312,"D",#20000) +bind(#20311,#20312) #20313=* -tokeninfo(#20313,3,#20001,76,"0") -hasLocation(#20313,#20139) +exprs(#20313,3,#20309,1,"0") +hasLocation(#20313,#20137) +enclosingStmt(#20313,#20291) +exprContainers(#20313,#20001) +literals("0","0",#20313) #20314=* -tokeninfo(#20314,8,#20001,77,")") -#20315=@"loc,{#10000},3,26,3,26" -locations_default(#20315,#10000,3,26,3,26) +exprs(#20314,29,#20296,1,"(N|0)>(P|0)") +#20315=@"loc,{#10000},3,16,3,26" +locations_default(#20315,#10000,3,16,3,26) hasLocation(#20314,#20315) +enclosingStmt(#20314,#20291) +exprContainers(#20314,#20001) #20316=* -tokeninfo(#20316,8,#20001,78,"|") -#20317=@"loc,{#10000},3,27,3,27" -locations_default(#20317,#10000,3,27,3,27) +exprs(#20316,63,#20314,0,"(N|0)") +#20317=@"loc,{#10000},3,16,3,20" +locations_default(#20317,#10000,3,16,3,20) hasLocation(#20316,#20317) +enclosingStmt(#20316,#20291) +exprContainers(#20316,#20001) #20318=* -tokeninfo(#20318,8,#20001,79,"(") -#20319=@"loc,{#10000},3,28,3,28" -locations_default(#20319,#10000,3,28,3,28) +exprs(#20318,39,#20316,0,"N|0") +#20319=@"loc,{#10000},3,17,3,19" +locations_default(#20319,#10000,3,17,3,19) hasLocation(#20318,#20319) +enclosingStmt(#20318,#20291) +exprContainers(#20318,#20001) #20320=* -tokeninfo(#20320,6,#20001,80,"M") -hasLocation(#20320,#20147) -#20321=* -tokeninfo(#20321,8,#20001,81,"|") -#20322=@"loc,{#10000},3,30,3,30" -locations_default(#20322,#10000,3,30,3,30) -hasLocation(#20321,#20322) +exprs(#20320,79,#20318,0,"N") +hasLocation(#20320,#20145) +enclosingStmt(#20320,#20291) +exprContainers(#20320,#20001) +literals("N","N",#20320) +#20321=@"var;{N};{#20000}" +variables(#20321,"N",#20000) +bind(#20320,#20321) +#20322=* +exprs(#20322,3,#20318,1,"0") +hasLocation(#20322,#20149) +enclosingStmt(#20322,#20291) +exprContainers(#20322,#20001) +literals("0","0",#20322) #20323=* -tokeninfo(#20323,3,#20001,82,"0") -hasLocation(#20323,#20150) -#20324=* -tokeninfo(#20324,8,#20001,83,")") -#20325=@"loc,{#10000},3,32,3,32" -locations_default(#20325,#10000,3,32,3,32) -hasLocation(#20324,#20325) -#20326=* -tokeninfo(#20326,8,#20001,84,"<") -#20327=@"loc,{#10000},3,33,3,33" -locations_default(#20327,#10000,3,33,3,33) -hasLocation(#20326,#20327) -#20328=* -tokeninfo(#20328,8,#20001,85,"(") -#20329=@"loc,{#10000},3,34,3,34" -locations_default(#20329,#10000,3,34,3,34) -hasLocation(#20328,#20329) +exprs(#20323,63,#20314,1,"(P|0)") +#20324=@"loc,{#10000},3,22,3,26" +locations_default(#20324,#10000,3,22,3,26) +hasLocation(#20323,#20324) +enclosingStmt(#20323,#20291) +exprContainers(#20323,#20001) +#20325=* +exprs(#20325,39,#20323,0,"P|0") +#20326=@"loc,{#10000},3,23,3,25" +locations_default(#20326,#10000,3,23,3,25) +hasLocation(#20325,#20326) +enclosingStmt(#20325,#20291) +exprContainers(#20325,#20001) +#20327=* +exprs(#20327,79,#20325,0,"P") +hasLocation(#20327,#20157) +enclosingStmt(#20327,#20291) +exprContainers(#20327,#20001) +literals("P","P",#20327) +#20328=@"var;{P};{#20000}" +variables(#20328,"P",#20000) +bind(#20327,#20328) +#20329=* +exprs(#20329,3,#20325,1,"0") +hasLocation(#20329,#20161) +enclosingStmt(#20329,#20291) +exprContainers(#20329,#20001) +literals("0","0",#20329) #20330=* -tokeninfo(#20330,6,#20001,86,"F") -hasLocation(#20330,#20156) -#20331=* -tokeninfo(#20331,8,#20001,87,"|") -#20332=@"loc,{#10000},3,36,3,36" -locations_default(#20332,#10000,3,36,3,36) -hasLocation(#20331,#20332) -#20333=* -tokeninfo(#20333,3,#20001,88,"0") -hasLocation(#20333,#20159) +exprs(#20330,27,#20294,1,"(M|0)<(F|0)") +#20331=@"loc,{#10000},3,28,3,38" +locations_default(#20331,#10000,3,28,3,38) +hasLocation(#20330,#20331) +enclosingStmt(#20330,#20291) +exprContainers(#20330,#20001) +#20332=* +exprs(#20332,63,#20330,0,"(M|0)") +#20333=@"loc,{#10000},3,28,3,32" +locations_default(#20333,#10000,3,28,3,32) +hasLocation(#20332,#20333) +enclosingStmt(#20332,#20291) +exprContainers(#20332,#20001) #20334=* -tokeninfo(#20334,8,#20001,89,")") -#20335=@"loc,{#10000},3,38,3,38" -locations_default(#20335,#10000,3,38,3,38) +exprs(#20334,39,#20332,0,"M|0") +#20335=@"loc,{#10000},3,29,3,31" +locations_default(#20335,#10000,3,29,3,31) hasLocation(#20334,#20335) +enclosingStmt(#20334,#20291) +exprContainers(#20334,#20001) #20336=* -tokeninfo(#20336,8,#20001,90,"|") -#20337=@"loc,{#10000},3,39,3,39" -locations_default(#20337,#10000,3,39,3,39) -hasLocation(#20336,#20337) +exprs(#20336,79,#20334,0,"M") +hasLocation(#20336,#20169) +enclosingStmt(#20336,#20291) +exprContainers(#20336,#20001) +literals("M","M",#20336) +#20337=@"var;{M};{#20000}" +variables(#20337,"M",#20000) +bind(#20336,#20337) #20338=* -tokeninfo(#20338,8,#20001,91,"(") -#20339=@"loc,{#10000},3,40,3,40" -locations_default(#20339,#10000,3,40,3,40) -hasLocation(#20338,#20339) -#20340=* -tokeninfo(#20340,6,#20001,92,"L") -hasLocation(#20340,#20167) +exprs(#20338,3,#20334,1,"0") +hasLocation(#20338,#20173) +enclosingStmt(#20338,#20291) +exprContainers(#20338,#20001) +literals("0","0",#20338) +#20339=* +exprs(#20339,63,#20330,1,"(F|0)") +#20340=@"loc,{#10000},3,34,3,38" +locations_default(#20340,#10000,3,34,3,38) +hasLocation(#20339,#20340) +enclosingStmt(#20339,#20291) +exprContainers(#20339,#20001) #20341=* -tokeninfo(#20341,8,#20001,93,"|") -#20342=@"loc,{#10000},3,42,3,42" -locations_default(#20342,#10000,3,42,3,42) +exprs(#20341,39,#20339,0,"F|0") +#20342=@"loc,{#10000},3,35,3,37" +locations_default(#20342,#10000,3,35,3,37) hasLocation(#20341,#20342) +enclosingStmt(#20341,#20291) +exprContainers(#20341,#20001) #20343=* -tokeninfo(#20343,3,#20001,94,"0") -hasLocation(#20343,#20170) -#20344=* -tokeninfo(#20344,8,#20001,95,")") -#20345=@"loc,{#10000},3,44,3,44" -locations_default(#20345,#10000,3,44,3,44) -hasLocation(#20344,#20345) +exprs(#20343,79,#20341,0,"F") +hasLocation(#20343,#20181) +enclosingStmt(#20343,#20291) +exprContainers(#20343,#20001) +literals("F","F",#20343) +#20344=@"var;{F};{#20000}" +variables(#20344,"F",#20000) +bind(#20343,#20344) +#20345=* +exprs(#20345,3,#20341,1,"0") +hasLocation(#20345,#20185) +enclosingStmt(#20345,#20291) +exprContainers(#20345,#20001) +literals("0","0",#20345) #20346=* -tokeninfo(#20346,8,#20001,96,">") -#20347=@"loc,{#10000},3,45,3,45" -locations_default(#20347,#10000,3,45,3,45) +exprs(#20346,29,#20292,1,"(L|0)>(H|0)") +#20347=@"loc,{#10000},3,40,3,50" +locations_default(#20347,#10000,3,40,3,50) hasLocation(#20346,#20347) +enclosingStmt(#20346,#20291) +exprContainers(#20346,#20001) #20348=* -tokeninfo(#20348,8,#20001,97,"(") -#20349=@"loc,{#10000},3,46,3,46" -locations_default(#20349,#10000,3,46,3,46) +exprs(#20348,63,#20346,0,"(L|0)") +#20349=@"loc,{#10000},3,40,3,44" +locations_default(#20349,#10000,3,40,3,44) hasLocation(#20348,#20349) +enclosingStmt(#20348,#20291) +exprContainers(#20348,#20001) #20350=* -tokeninfo(#20350,6,#20001,98,"H") -hasLocation(#20350,#20176) -#20351=* -tokeninfo(#20351,8,#20001,99,"|") -#20352=@"loc,{#10000},3,48,3,48" -locations_default(#20352,#10000,3,48,3,48) -hasLocation(#20351,#20352) -#20353=* -tokeninfo(#20353,3,#20001,100,"0") -hasLocation(#20353,#20179) +exprs(#20350,39,#20348,0,"L|0") +#20351=@"loc,{#10000},3,41,3,43" +locations_default(#20351,#10000,3,41,3,43) +hasLocation(#20350,#20351) +enclosingStmt(#20350,#20291) +exprContainers(#20350,#20001) +#20352=* +exprs(#20352,79,#20350,0,"L") +hasLocation(#20352,#20193) +enclosingStmt(#20352,#20291) +exprContainers(#20352,#20001) +literals("L","L",#20352) +#20353=@"var;{L};{#20000}" +variables(#20353,"L",#20000) +bind(#20352,#20353) #20354=* -tokeninfo(#20354,8,#20001,101,")") -#20355=@"loc,{#10000},3,50,3,50" -locations_default(#20355,#10000,3,50,3,50) -hasLocation(#20354,#20355) -#20356=* -tokeninfo(#20356,8,#20001,102,")") -#20357=@"loc,{#10000},3,51,3,51" -locations_default(#20357,#10000,3,51,3,51) -hasLocation(#20356,#20357) -#20358=* -tokeninfo(#20358,8,#20001,103,"{") -#20359=@"loc,{#10000},3,52,3,52" -locations_default(#20359,#10000,3,52,3,52) -hasLocation(#20358,#20359) -#20360=* -tokeninfo(#20360,8,#20001,104,"}") -#20361=@"loc,{#10000},3,53,3,53" -locations_default(#20361,#10000,3,53,3,53) -hasLocation(#20360,#20361) +exprs(#20354,3,#20350,1,"0") +hasLocation(#20354,#20197) +enclosingStmt(#20354,#20291) +exprContainers(#20354,#20001) +literals("0","0",#20354) +#20355=* +exprs(#20355,63,#20346,1,"(H|0)") +#20356=@"loc,{#10000},3,46,3,50" +locations_default(#20356,#10000,3,46,3,50) +hasLocation(#20355,#20356) +enclosingStmt(#20355,#20291) +exprContainers(#20355,#20001) +#20357=* +exprs(#20357,39,#20355,0,"H|0") +#20358=@"loc,{#10000},3,47,3,49" +locations_default(#20358,#10000,3,47,3,49) +hasLocation(#20357,#20358) +enclosingStmt(#20357,#20291) +exprContainers(#20357,#20001) +#20359=* +exprs(#20359,79,#20357,0,"H") +hasLocation(#20359,#20205) +enclosingStmt(#20359,#20291) +exprContainers(#20359,#20001) +literals("H","H",#20359) +#20360=@"var;{H};{#20000}" +variables(#20360,"H",#20000) +bind(#20359,#20360) +#20361=* +exprs(#20361,3,#20357,1,"0") +hasLocation(#20361,#20209) +enclosingStmt(#20361,#20291) +exprContainers(#20361,#20001) +literals("0","0",#20361) #20362=* -tokeninfo(#20362,0,#20001,105,"") -#20363=@"loc,{#10000},3,54,3,53" -locations_default(#20363,#10000,3,54,3,53) +stmts(#20362,1,#20291,1,"{}") +#20363=@"loc,{#10000},3,52,3,53" +locations_default(#20363,#10000,3,52,3,53) hasLocation(#20362,#20363) +stmtContainers(#20362,#20001) #20364=* entry_cfg_node(#20364,#20001) #20365=@"loc,{#10000},1,1,1,0" @@ -1148,117 +1148,117 @@ locations_default(#20365,#10000,1,1,1,0) hasLocation(#20364,#20365) #20366=* exit_cfg_node(#20366,#20001) -hasLocation(#20366,#20363) -successor(#20092,#20102) -successor(#20171,#20175) -successor(#20178,#20173) -successor(#20175,#20178) -successor(#20173,#20160) -successor(#20162,#20166) -successor(#20169,#20164) -successor(#20166,#20169) -successor(#20164,#20171) -successor(#20160,#20094) -successor(#20151,#20155) -successor(#20158,#20153) -successor(#20155,#20158) -successor(#20153,#20140) -successor(#20142,#20146) -successor(#20149,#20144) -successor(#20146,#20149) -successor(#20144,#20151) -successor(#20140,#20096) -successor(#20131,#20135) -successor(#20138,#20133) -successor(#20135,#20138) -successor(#20133,#20120) -successor(#20122,#20126) -successor(#20129,#20124) -successor(#20126,#20129) -successor(#20124,#20131) -successor(#20120,#20098) -successor(#20111,#20115) -successor(#20118,#20113) -successor(#20115,#20118) -successor(#20113,#20100) -successor(#20102,#20106) -successor(#20109,#20104) -successor(#20106,#20109) -successor(#20104,#20111) -successor(#20100,#20122) -successor(#20098,#20142) -successor(#20096,#20162) +hasLocation(#20366,#20219) +successor(#20291,#20300) +successor(#20355,#20359) +successor(#20361,#20357) +successor(#20359,#20361) +successor(#20357,#20346) +successor(#20348,#20352) +successor(#20354,#20350) +successor(#20352,#20354) +successor(#20350,#20355) +successor(#20346,#20292) +successor(#20339,#20343) +successor(#20345,#20341) +successor(#20343,#20345) +successor(#20341,#20330) +successor(#20332,#20336) +successor(#20338,#20334) +successor(#20336,#20338) +successor(#20334,#20339) +successor(#20330,#20294) +successor(#20323,#20327) +successor(#20329,#20325) +successor(#20327,#20329) +successor(#20325,#20314) +successor(#20316,#20320) +successor(#20322,#20318) +successor(#20320,#20322) +successor(#20318,#20323) +successor(#20314,#20296) +successor(#20307,#20311) +successor(#20313,#20309) +successor(#20311,#20313) +successor(#20309,#20298) +successor(#20300,#20304) +successor(#20306,#20302) +successor(#20304,#20306) +successor(#20302,#20307) +successor(#20298,#20316) +successor(#20296,#20332) +successor(#20294,#20348) #20367=* -guard_node(#20367,1,#20094) -hasLocation(#20367,#20095) -successor(#20367,#20180) +guard_node(#20367,1,#20292) +hasLocation(#20367,#20293) +successor(#20367,#20362) #20368=* -guard_node(#20368,0,#20094) -hasLocation(#20368,#20095) +guard_node(#20368,0,#20292) +hasLocation(#20368,#20293) successor(#20368,#20366) -successor(#20094,#20367) -successor(#20094,#20368) -successor(#20180,#20366) -successor(#20039,#20043) -successor(#20046,#20052) -successor(#20079,#20083) -successor(#20086,#20081) -successor(#20083,#20086) -successor(#20081,#20069) -successor(#20071,#20075) -successor(#20077,#20073) -successor(#20075,#20077) -successor(#20073,#20079) -successor(#20069,#20048) -successor(#20060,#20064) -successor(#20067,#20062) -successor(#20064,#20067) -successor(#20062,#20050) -successor(#20052,#20056) -successor(#20058,#20054) -successor(#20056,#20058) -successor(#20054,#20060) -successor(#20050,#20071) +successor(#20292,#20367) +successor(#20292,#20368) +successor(#20362,#20366) +successor(#20250,#20253) +successor(#20255,#20261) +successor(#20282,#20286) +successor(#20288,#20284) +successor(#20286,#20288) +successor(#20284,#20274) +successor(#20276,#20280) +successor(#20281,#20278) +successor(#20280,#20281) +successor(#20278,#20282) +successor(#20274,#20257) +successor(#20267,#20271) +successor(#20273,#20269) +successor(#20271,#20273) +successor(#20269,#20259) +successor(#20261,#20265) +successor(#20266,#20263) +successor(#20265,#20266) +successor(#20263,#20267) +successor(#20259,#20276) #20369=* -guard_node(#20369,1,#20048) -hasLocation(#20369,#20049) -successor(#20369,#20088) +guard_node(#20369,1,#20257) +hasLocation(#20369,#20258) +successor(#20369,#20289) #20370=* -guard_node(#20370,0,#20048) -hasLocation(#20370,#20049) -successor(#20370,#20090) -successor(#20048,#20369) -successor(#20048,#20370) -successor(#20088,#20041) -successor(#20090,#20041) -successor(#20043,#20046) -successor(#20041,#20092) -successor(#20003,#20007) -successor(#20007,#20013) -successor(#20028,#20032) -successor(#20035,#20030) -successor(#20032,#20035) -successor(#20030,#20024) -successor(#20026,#20028) -successor(#20024,#20009) -successor(#20015,#20019) -successor(#20022,#20017) -successor(#20019,#20022) -successor(#20017,#20011) -successor(#20013,#20015) -successor(#20011,#20026) -successor(#20009,#20005) +guard_node(#20370,0,#20257) +hasLocation(#20370,#20258) +successor(#20370,#20290) +successor(#20257,#20369) +successor(#20257,#20370) +successor(#20289,#20251) +successor(#20290,#20251) +successor(#20253,#20255) +successor(#20251,#20291) +successor(#20221,#20224) +successor(#20224,#20230) +successor(#20241,#20245) +successor(#20247,#20243) +successor(#20245,#20247) +successor(#20243,#20238) +successor(#20240,#20241) +successor(#20238,#20226) +successor(#20231,#20235) +successor(#20237,#20233) +successor(#20235,#20237) +successor(#20233,#20228) +successor(#20230,#20231) +successor(#20228,#20240) +successor(#20226,#20222) #20371=* -guard_node(#20371,0,#20009) -hasLocation(#20371,#20010) -successor(#20371,#20037) +guard_node(#20371,0,#20226) +hasLocation(#20371,#20227) +successor(#20371,#20248) #20372=* -guard_node(#20372,1,#20009) -hasLocation(#20372,#20010) -successor(#20372,#20039) -successor(#20005,#20371) -successor(#20005,#20372) -successor(#20037,#20039) -successor(#20364,#20003) +guard_node(#20372,1,#20226) +hasLocation(#20372,#20227) +successor(#20372,#20250) +successor(#20222,#20371) +successor(#20222,#20372) +successor(#20248,#20250) +successor(#20364,#20221) numlines(#10000,3,3,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/predicate-function-annotation.js.trap b/javascript/extractor/tests/flow/output/trap/predicate-function-annotation.js.trap index 11b134ed091..d96e5fb82e5 100644 --- a/javascript/extractor/tests/flow/output/trap/predicate-function-annotation.js.trap +++ b/javascript/extractor/tests/flow/output/trap/predicate-function-annotation.js.trap @@ -9,461 +9,457 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,10,0" -locations_default(#20002,#10000,1,1,10,0) -hasLocation(#20001,#20002) -#20003=@"var;{f};{#20000}" -variables(#20003,"f",#20000) -#20004=@"var;{g};{#20000}" -variables(#20004,"g",#20000) -#20005=* -stmts(#20005,17,#20001,0,"functio ... rn a;\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,-1,"f") -#20008=@"loc,{#10000},1,10,1,10" -locations_default(#20008,#10000,1,10,1,10) -hasLocation(#20007,#20008) -exprContainers(#20007,#20005) -literals("f","f",#20007) -decl(#20007,#20003) -#20009=* -scopes(#20009,1) -scopenodes(#20005,#20009) -scopenesting(#20009,#20000) -#20010=@"var;{a};{#20009}" -variables(#20010,"a",#20009) -#20011=* -exprs(#20011,78,#20005,0,"a") -#20012=@"loc,{#10000},1,12,1,12" -locations_default(#20012,#10000,1,12,1,12) -hasLocation(#20011,#20012) -exprContainers(#20011,#20005) -literals("a","a",#20011) -decl(#20011,#20010) -#20013=@"var;{arguments};{#20009}" -variables(#20013,"arguments",#20009) -isArgumentsObject(#20013) -#20014=* -stmts(#20014,1,#20005,-2,"{\n return a;\n}") -#20015=@"loc,{#10000},1,32,3,1" -locations_default(#20015,#10000,1,32,3,1) -hasLocation(#20014,#20015) -stmtContainers(#20014,#20005) -#20016=* -stmts(#20016,9,#20014,0,"return a;") -#20017=@"loc,{#10000},2,5,2,13" -locations_default(#20017,#10000,2,5,2,13) -hasLocation(#20016,#20017) -stmtContainers(#20016,#20005) -#20018=* -exprs(#20018,79,#20016,0,"a") -#20019=@"loc,{#10000},2,12,2,12" -locations_default(#20019,#10000,2,12,2,12) -hasLocation(#20018,#20019) -enclosingStmt(#20018,#20016) -exprContainers(#20018,#20005) -literals("a","a",#20018) -bind(#20018,#20010) -numlines(#20005,3,3,0) -#20020=* -stmts(#20020,17,#20001,1,"functio ... ecks {}") -#20021=@"loc,{#10000},4,1,4,24" -locations_default(#20021,#10000,4,1,4,24) -hasLocation(#20020,#20021) -stmtContainers(#20020,#20001) -#20022=* -exprs(#20022,78,#20020,-1,"g") -#20023=@"loc,{#10000},4,10,4,10" -locations_default(#20023,#10000,4,10,4,10) -hasLocation(#20022,#20023) -exprContainers(#20022,#20020) -literals("g","g",#20022) -decl(#20022,#20004) -#20024=* -scopes(#20024,1) -scopenodes(#20020,#20024) -scopenesting(#20024,#20000) -#20025=@"var;{arguments};{#20024}" -variables(#20025,"arguments",#20024) -isArgumentsObject(#20025) -#20026=* -stmts(#20026,1,#20020,-2,"{}") -#20027=@"loc,{#10000},4,23,4,24" -locations_default(#20027,#10000,4,23,4,24) -hasLocation(#20026,#20027) -stmtContainers(#20026,#20020) -numlines(#20020,1,1,0) -#20028=* -stmts(#20028,1,#20001,2,"{\n return b;\n}") -#20029=@"loc,{#10000},4,26,6,1" -locations_default(#20029,#10000,4,26,6,1) -hasLocation(#20028,#20029) -stmtContainers(#20028,#20001) -#20030=* -stmts(#20030,9,#20028,0,"return b;") -#20031=@"loc,{#10000},5,5,5,13" -locations_default(#20031,#10000,5,5,5,13) -hasLocation(#20030,#20031) -stmtContainers(#20030,#20001) -#20032=* -exprs(#20032,79,#20030,0,"b") -#20033=@"loc,{#10000},5,12,5,12" -locations_default(#20033,#10000,5,12,5,12) -hasLocation(#20032,#20033) -enclosingStmt(#20032,#20030) -exprContainers(#20032,#20001) -literals("b","b",#20032) -#20034=@"var;{b};{#20000}" -variables(#20034,"b",#20000) -bind(#20032,#20034) -#20035=* -stmts(#20035,2,#20001,3,"(c): bo ... s => c;") -#20036=@"loc,{#10000},8,1,8,26" -locations_default(#20036,#10000,8,1,8,26) -hasLocation(#20035,#20036) -stmtContainers(#20035,#20001) -#20037=* -exprs(#20037,65,#20035,0,"(c): bo ... ks => c") -#20038=@"loc,{#10000},8,1,8,25" -locations_default(#20038,#10000,8,1,8,25) -hasLocation(#20037,#20038) -enclosingStmt(#20037,#20035) -exprContainers(#20037,#20001) -#20039=* -scopes(#20039,1) -scopenodes(#20037,#20039) -scopenesting(#20039,#20000) -#20040=@"var;{c};{#20039}" -variables(#20040,"c",#20039) -#20041=* -exprs(#20041,78,#20037,0,"c") -#20042=@"loc,{#10000},8,2,8,2" -locations_default(#20042,#10000,8,2,8,2) -hasLocation(#20041,#20042) -exprContainers(#20041,#20037) -literals("c","c",#20041) -decl(#20041,#20040) -#20043=* -exprs(#20043,79,#20037,-2,"c") -#20044=@"loc,{#10000},8,25,8,25" -locations_default(#20044,#10000,8,25,8,25) -hasLocation(#20043,#20044) -exprContainers(#20043,#20037) -literals("c","c",#20043) -bind(#20043,#20040) -numlines(#20037,1,1,0) -#20045=* -stmts(#20045,2,#20001,4,"(d): %checks => d;") -#20046=@"loc,{#10000},9,1,9,18" -locations_default(#20046,#10000,9,1,9,18) -hasLocation(#20045,#20046) -stmtContainers(#20045,#20001) -#20047=* -exprs(#20047,65,#20045,0,"(d): %checks => d") -#20048=@"loc,{#10000},9,1,9,17" -locations_default(#20048,#10000,9,1,9,17) -hasLocation(#20047,#20048) -enclosingStmt(#20047,#20045) -exprContainers(#20047,#20001) -#20049=* -scopes(#20049,1) -scopenodes(#20047,#20049) -scopenesting(#20049,#20000) -#20050=@"var;{d};{#20049}" -variables(#20050,"d",#20049) -#20051=* -exprs(#20051,78,#20047,0,"d") -#20052=@"loc,{#10000},9,2,9,2" -locations_default(#20052,#10000,9,2,9,2) -hasLocation(#20051,#20052) -exprContainers(#20051,#20047) -literals("d","d",#20051) -decl(#20051,#20050) -#20053=* -exprs(#20053,79,#20047,-2,"d") -#20054=@"loc,{#10000},9,17,9,17" -locations_default(#20054,#10000,9,17,9,17) -hasLocation(#20053,#20054) -exprContainers(#20053,#20047) -literals("d","d",#20053) -bind(#20053,#20050) -numlines(#20047,1,1,0) -#20055=* -lines(#20055,#20001,"function f(a): boolean %checks {"," +#20002=* +lines(#20002,#20001,"function f(a): boolean %checks {"," ") -#20056=@"loc,{#10000},1,1,1,32" -locations_default(#20056,#10000,1,1,1,32) +#20003=@"loc,{#10000},1,1,1,32" +locations_default(#20003,#10000,1,1,1,32) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," return a;"," +") +#20005=@"loc,{#10000},2,1,2,13" +locations_default(#20005,#10000,2,1,2,13) +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) +#20008=* +lines(#20008,#20001,"function g(): %checks {} {"," +") +#20009=@"loc,{#10000},4,1,4,26" +locations_default(#20009,#10000,4,1,4,26) +hasLocation(#20008,#20009) +#20010=* +lines(#20010,#20001," return b;"," +") +#20011=@"loc,{#10000},5,1,5,13" +locations_default(#20011,#10000,5,1,5,13) +hasLocation(#20010,#20011) +indentation(#10000,5," ",4) +#20012=* +lines(#20012,#20001,"}"," +") +#20013=@"loc,{#10000},6,1,6,1" +locations_default(#20013,#10000,6,1,6,1) +hasLocation(#20012,#20013) +#20014=* +lines(#20014,#20001,""," +") +#20015=@"loc,{#10000},7,1,7,0" +locations_default(#20015,#10000,7,1,7,0) +hasLocation(#20014,#20015) +#20016=* +lines(#20016,#20001,"(c): boolean %checks => c;"," +") +#20017=@"loc,{#10000},8,1,8,26" +locations_default(#20017,#10000,8,1,8,26) +hasLocation(#20016,#20017) +#20018=* +lines(#20018,#20001,"(d): %checks => d;"," +") +#20019=@"loc,{#10000},9,1,9,18" +locations_default(#20019,#10000,9,1,9,18) +hasLocation(#20018,#20019) +numlines(#20001,9,8,0) +#20020=* +tokeninfo(#20020,7,#20001,0,"function") +#20021=@"loc,{#10000},1,1,1,8" +locations_default(#20021,#10000,1,1,1,8) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,6,#20001,1,"f") +#20023=@"loc,{#10000},1,10,1,10" +locations_default(#20023,#10000,1,10,1,10) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,2,"(") +#20025=@"loc,{#10000},1,11,1,11" +locations_default(#20025,#10000,1,11,1,11) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,6,#20001,3,"a") +#20027=@"loc,{#10000},1,12,1,12" +locations_default(#20027,#10000,1,12,1,12) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,4,")") +#20029=@"loc,{#10000},1,13,1,13" +locations_default(#20029,#10000,1,13,1,13) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,5,":") +#20031=@"loc,{#10000},1,14,1,14" +locations_default(#20031,#10000,1,14,1,14) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,6,#20001,6,"boolean") +#20033=@"loc,{#10000},1,16,1,22" +locations_default(#20033,#10000,1,16,1,22) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,7,"%") +#20035=@"loc,{#10000},1,24,1,24" +locations_default(#20035,#10000,1,24,1,24) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,6,#20001,8,"checks") +#20037=@"loc,{#10000},1,25,1,30" +locations_default(#20037,#10000,1,25,1,30) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,8,#20001,9,"{") +#20039=@"loc,{#10000},1,32,1,32" +locations_default(#20039,#10000,1,32,1,32) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,7,#20001,10,"return") +#20041=@"loc,{#10000},2,5,2,10" +locations_default(#20041,#10000,2,5,2,10) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,6,#20001,11,"a") +#20043=@"loc,{#10000},2,12,2,12" +locations_default(#20043,#10000,2,12,2,12) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,12,";") +#20045=@"loc,{#10000},2,13,2,13" +locations_default(#20045,#10000,2,13,2,13) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,13,"}") +hasLocation(#20046,#20007) +#20047=* +tokeninfo(#20047,7,#20001,14,"function") +#20048=@"loc,{#10000},4,1,4,8" +locations_default(#20048,#10000,4,1,4,8) +hasLocation(#20047,#20048) +#20049=* +tokeninfo(#20049,6,#20001,15,"g") +#20050=@"loc,{#10000},4,10,4,10" +locations_default(#20050,#10000,4,10,4,10) +hasLocation(#20049,#20050) +#20051=* +tokeninfo(#20051,8,#20001,16,"(") +#20052=@"loc,{#10000},4,11,4,11" +locations_default(#20052,#10000,4,11,4,11) +hasLocation(#20051,#20052) +#20053=* +tokeninfo(#20053,8,#20001,17,")") +#20054=@"loc,{#10000},4,12,4,12" +locations_default(#20054,#10000,4,12,4,12) +hasLocation(#20053,#20054) +#20055=* +tokeninfo(#20055,8,#20001,18,":") +#20056=@"loc,{#10000},4,13,4,13" +locations_default(#20056,#10000,4,13,4,13) hasLocation(#20055,#20056) #20057=* -lines(#20057,#20001," return a;"," -") -#20058=@"loc,{#10000},2,1,2,13" -locations_default(#20058,#10000,2,1,2,13) +tokeninfo(#20057,8,#20001,19,"%") +#20058=@"loc,{#10000},4,15,4,15" +locations_default(#20058,#10000,4,15,4,15) hasLocation(#20057,#20058) -indentation(#10000,2," ",4) #20059=* -lines(#20059,#20001,"}"," -") -#20060=@"loc,{#10000},3,1,3,1" -locations_default(#20060,#10000,3,1,3,1) +tokeninfo(#20059,6,#20001,20,"checks") +#20060=@"loc,{#10000},4,16,4,21" +locations_default(#20060,#10000,4,16,4,21) hasLocation(#20059,#20060) #20061=* -lines(#20061,#20001,"function g(): %checks {} {"," -") -#20062=@"loc,{#10000},4,1,4,26" -locations_default(#20062,#10000,4,1,4,26) +tokeninfo(#20061,8,#20001,21,"{") +#20062=@"loc,{#10000},4,23,4,23" +locations_default(#20062,#10000,4,23,4,23) hasLocation(#20061,#20062) #20063=* -lines(#20063,#20001," return b;"," -") -#20064=@"loc,{#10000},5,1,5,13" -locations_default(#20064,#10000,5,1,5,13) +tokeninfo(#20063,8,#20001,22,"}") +#20064=@"loc,{#10000},4,24,4,24" +locations_default(#20064,#10000,4,24,4,24) hasLocation(#20063,#20064) -indentation(#10000,5," ",4) #20065=* -lines(#20065,#20001,"}"," -") -#20066=@"loc,{#10000},6,1,6,1" -locations_default(#20066,#10000,6,1,6,1) +tokeninfo(#20065,8,#20001,23,"{") +#20066=@"loc,{#10000},4,26,4,26" +locations_default(#20066,#10000,4,26,4,26) hasLocation(#20065,#20066) #20067=* -lines(#20067,#20001,""," -") -#20068=@"loc,{#10000},7,1,7,0" -locations_default(#20068,#10000,7,1,7,0) +tokeninfo(#20067,7,#20001,24,"return") +#20068=@"loc,{#10000},5,5,5,10" +locations_default(#20068,#10000,5,5,5,10) hasLocation(#20067,#20068) #20069=* -lines(#20069,#20001,"(c): boolean %checks => c;"," -") -hasLocation(#20069,#20036) -#20070=* -lines(#20070,#20001,"(d): %checks => d;"," -") -hasLocation(#20070,#20046) -numlines(#20001,9,8,0) +tokeninfo(#20069,6,#20001,25,"b") +#20070=@"loc,{#10000},5,12,5,12" +locations_default(#20070,#10000,5,12,5,12) +hasLocation(#20069,#20070) #20071=* -tokeninfo(#20071,7,#20001,0,"function") -#20072=@"loc,{#10000},1,1,1,8" -locations_default(#20072,#10000,1,1,1,8) +tokeninfo(#20071,8,#20001,26,";") +#20072=@"loc,{#10000},5,13,5,13" +locations_default(#20072,#10000,5,13,5,13) hasLocation(#20071,#20072) #20073=* -tokeninfo(#20073,6,#20001,1,"f") -hasLocation(#20073,#20008) +tokeninfo(#20073,8,#20001,27,"}") +hasLocation(#20073,#20013) #20074=* -tokeninfo(#20074,8,#20001,2,"(") -#20075=@"loc,{#10000},1,11,1,11" -locations_default(#20075,#10000,1,11,1,11) +tokeninfo(#20074,8,#20001,28,"(") +#20075=@"loc,{#10000},8,1,8,1" +locations_default(#20075,#10000,8,1,8,1) hasLocation(#20074,#20075) #20076=* -tokeninfo(#20076,6,#20001,3,"a") -hasLocation(#20076,#20012) -#20077=* -tokeninfo(#20077,8,#20001,4,")") -#20078=@"loc,{#10000},1,13,1,13" -locations_default(#20078,#10000,1,13,1,13) -hasLocation(#20077,#20078) -#20079=* -tokeninfo(#20079,8,#20001,5,":") -#20080=@"loc,{#10000},1,14,1,14" -locations_default(#20080,#10000,1,14,1,14) -hasLocation(#20079,#20080) -#20081=* -tokeninfo(#20081,6,#20001,6,"boolean") -#20082=@"loc,{#10000},1,16,1,22" -locations_default(#20082,#10000,1,16,1,22) -hasLocation(#20081,#20082) -#20083=* -tokeninfo(#20083,8,#20001,7,"%") -#20084=@"loc,{#10000},1,24,1,24" -locations_default(#20084,#10000,1,24,1,24) -hasLocation(#20083,#20084) -#20085=* -tokeninfo(#20085,6,#20001,8,"checks") -#20086=@"loc,{#10000},1,25,1,30" -locations_default(#20086,#10000,1,25,1,30) -hasLocation(#20085,#20086) -#20087=* -tokeninfo(#20087,8,#20001,9,"{") -#20088=@"loc,{#10000},1,32,1,32" -locations_default(#20088,#10000,1,32,1,32) -hasLocation(#20087,#20088) -#20089=* -tokeninfo(#20089,7,#20001,10,"return") -#20090=@"loc,{#10000},2,5,2,10" -locations_default(#20090,#10000,2,5,2,10) -hasLocation(#20089,#20090) -#20091=* -tokeninfo(#20091,6,#20001,11,"a") -hasLocation(#20091,#20019) +tokeninfo(#20076,6,#20001,29,"c") +#20077=@"loc,{#10000},8,2,8,2" +locations_default(#20077,#10000,8,2,8,2) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,8,#20001,30,")") +#20079=@"loc,{#10000},8,3,8,3" +locations_default(#20079,#10000,8,3,8,3) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,8,#20001,31,":") +#20081=@"loc,{#10000},8,4,8,4" +locations_default(#20081,#10000,8,4,8,4) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,6,#20001,32,"boolean") +#20083=@"loc,{#10000},8,6,8,12" +locations_default(#20083,#10000,8,6,8,12) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,8,#20001,33,"%") +#20085=@"loc,{#10000},8,14,8,14" +locations_default(#20085,#10000,8,14,8,14) +hasLocation(#20084,#20085) +#20086=* +tokeninfo(#20086,6,#20001,34,"checks") +#20087=@"loc,{#10000},8,15,8,20" +locations_default(#20087,#10000,8,15,8,20) +hasLocation(#20086,#20087) +#20088=* +tokeninfo(#20088,8,#20001,35,"=>") +#20089=@"loc,{#10000},8,22,8,23" +locations_default(#20089,#10000,8,22,8,23) +hasLocation(#20088,#20089) +#20090=* +tokeninfo(#20090,6,#20001,36,"c") +#20091=@"loc,{#10000},8,25,8,25" +locations_default(#20091,#10000,8,25,8,25) +hasLocation(#20090,#20091) #20092=* -tokeninfo(#20092,8,#20001,12,";") -#20093=@"loc,{#10000},2,13,2,13" -locations_default(#20093,#10000,2,13,2,13) +tokeninfo(#20092,8,#20001,37,";") +#20093=@"loc,{#10000},8,26,8,26" +locations_default(#20093,#10000,8,26,8,26) hasLocation(#20092,#20093) #20094=* -tokeninfo(#20094,8,#20001,13,"}") -hasLocation(#20094,#20060) -#20095=* -tokeninfo(#20095,7,#20001,14,"function") -#20096=@"loc,{#10000},4,1,4,8" -locations_default(#20096,#10000,4,1,4,8) -hasLocation(#20095,#20096) -#20097=* -tokeninfo(#20097,6,#20001,15,"g") -hasLocation(#20097,#20023) +tokeninfo(#20094,8,#20001,38,"(") +#20095=@"loc,{#10000},9,1,9,1" +locations_default(#20095,#10000,9,1,9,1) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,6,#20001,39,"d") +#20097=@"loc,{#10000},9,2,9,2" +locations_default(#20097,#10000,9,2,9,2) +hasLocation(#20096,#20097) #20098=* -tokeninfo(#20098,8,#20001,16,"(") -#20099=@"loc,{#10000},4,11,4,11" -locations_default(#20099,#10000,4,11,4,11) +tokeninfo(#20098,8,#20001,40,")") +#20099=@"loc,{#10000},9,3,9,3" +locations_default(#20099,#10000,9,3,9,3) hasLocation(#20098,#20099) #20100=* -tokeninfo(#20100,8,#20001,17,")") -#20101=@"loc,{#10000},4,12,4,12" -locations_default(#20101,#10000,4,12,4,12) +tokeninfo(#20100,8,#20001,41,":") +#20101=@"loc,{#10000},9,4,9,4" +locations_default(#20101,#10000,9,4,9,4) hasLocation(#20100,#20101) #20102=* -tokeninfo(#20102,8,#20001,18,":") -#20103=@"loc,{#10000},4,13,4,13" -locations_default(#20103,#10000,4,13,4,13) +tokeninfo(#20102,8,#20001,42,"%") +#20103=@"loc,{#10000},9,6,9,6" +locations_default(#20103,#10000,9,6,9,6) hasLocation(#20102,#20103) #20104=* -tokeninfo(#20104,8,#20001,19,"%") -#20105=@"loc,{#10000},4,15,4,15" -locations_default(#20105,#10000,4,15,4,15) +tokeninfo(#20104,6,#20001,43,"checks") +#20105=@"loc,{#10000},9,7,9,12" +locations_default(#20105,#10000,9,7,9,12) hasLocation(#20104,#20105) #20106=* -tokeninfo(#20106,6,#20001,20,"checks") -#20107=@"loc,{#10000},4,16,4,21" -locations_default(#20107,#10000,4,16,4,21) +tokeninfo(#20106,8,#20001,44,"=>") +#20107=@"loc,{#10000},9,14,9,15" +locations_default(#20107,#10000,9,14,9,15) hasLocation(#20106,#20107) #20108=* -tokeninfo(#20108,8,#20001,21,"{") -#20109=@"loc,{#10000},4,23,4,23" -locations_default(#20109,#10000,4,23,4,23) +tokeninfo(#20108,6,#20001,45,"d") +#20109=@"loc,{#10000},9,17,9,17" +locations_default(#20109,#10000,9,17,9,17) hasLocation(#20108,#20109) #20110=* -tokeninfo(#20110,8,#20001,22,"}") -#20111=@"loc,{#10000},4,24,4,24" -locations_default(#20111,#10000,4,24,4,24) +tokeninfo(#20110,8,#20001,46,";") +#20111=@"loc,{#10000},9,18,9,18" +locations_default(#20111,#10000,9,18,9,18) hasLocation(#20110,#20111) #20112=* -tokeninfo(#20112,8,#20001,23,"{") -#20113=@"loc,{#10000},4,26,4,26" -locations_default(#20113,#10000,4,26,4,26) +tokeninfo(#20112,0,#20001,47,"") +#20113=@"loc,{#10000},10,1,10,0" +locations_default(#20113,#10000,10,1,10,0) hasLocation(#20112,#20113) -#20114=* -tokeninfo(#20114,7,#20001,24,"return") -#20115=@"loc,{#10000},5,5,5,10" -locations_default(#20115,#10000,5,5,5,10) -hasLocation(#20114,#20115) -#20116=* -tokeninfo(#20116,6,#20001,25,"b") -hasLocation(#20116,#20033) +toplevels(#20001,0) +#20114=@"loc,{#10000},1,1,10,0" +locations_default(#20114,#10000,1,1,10,0) +hasLocation(#20001,#20114) +#20115=@"var;{f};{#20000}" +variables(#20115,"f",#20000) +#20116=@"var;{g};{#20000}" +variables(#20116,"g",#20000) #20117=* -tokeninfo(#20117,8,#20001,26,";") -#20118=@"loc,{#10000},5,13,5,13" -locations_default(#20118,#10000,5,13,5,13) +stmts(#20117,17,#20001,0,"functio ... rn a;\n}") +#20118=@"loc,{#10000},1,1,3,1" +locations_default(#20118,#10000,1,1,3,1) hasLocation(#20117,#20118) +stmtContainers(#20117,#20001) #20119=* -tokeninfo(#20119,8,#20001,27,"}") -hasLocation(#20119,#20066) +exprs(#20119,78,#20117,-1,"f") +hasLocation(#20119,#20023) +exprContainers(#20119,#20117) +literals("f","f",#20119) +decl(#20119,#20115) #20120=* -tokeninfo(#20120,8,#20001,28,"(") -#20121=@"loc,{#10000},8,1,8,1" -locations_default(#20121,#10000,8,1,8,1) -hasLocation(#20120,#20121) +scopes(#20120,1) +scopenodes(#20117,#20120) +scopenesting(#20120,#20000) +#20121=@"var;{a};{#20120}" +variables(#20121,"a",#20120) #20122=* -tokeninfo(#20122,6,#20001,29,"c") -hasLocation(#20122,#20042) -#20123=* -tokeninfo(#20123,8,#20001,30,")") -#20124=@"loc,{#10000},8,3,8,3" -locations_default(#20124,#10000,8,3,8,3) -hasLocation(#20123,#20124) -#20125=* -tokeninfo(#20125,8,#20001,31,":") -#20126=@"loc,{#10000},8,4,8,4" -locations_default(#20126,#10000,8,4,8,4) -hasLocation(#20125,#20126) -#20127=* -tokeninfo(#20127,6,#20001,32,"boolean") -#20128=@"loc,{#10000},8,6,8,12" -locations_default(#20128,#10000,8,6,8,12) -hasLocation(#20127,#20128) +exprs(#20122,78,#20117,0,"a") +hasLocation(#20122,#20027) +exprContainers(#20122,#20117) +literals("a","a",#20122) +decl(#20122,#20121) +#20123=@"var;{arguments};{#20120}" +variables(#20123,"arguments",#20120) +isArgumentsObject(#20123) +#20124=* +stmts(#20124,1,#20117,-2,"{\n return a;\n}") +#20125=@"loc,{#10000},1,32,3,1" +locations_default(#20125,#10000,1,32,3,1) +hasLocation(#20124,#20125) +stmtContainers(#20124,#20117) +#20126=* +stmts(#20126,9,#20124,0,"return a;") +#20127=@"loc,{#10000},2,5,2,13" +locations_default(#20127,#10000,2,5,2,13) +hasLocation(#20126,#20127) +stmtContainers(#20126,#20117) +#20128=* +exprs(#20128,79,#20126,0,"a") +hasLocation(#20128,#20043) +enclosingStmt(#20128,#20126) +exprContainers(#20128,#20117) +literals("a","a",#20128) +bind(#20128,#20121) #20129=* -tokeninfo(#20129,8,#20001,33,"%") -#20130=@"loc,{#10000},8,14,8,14" -locations_default(#20130,#10000,8,14,8,14) +stmts(#20129,17,#20001,1,"functio ... ecks {}") +#20130=@"loc,{#10000},4,1,4,24" +locations_default(#20130,#10000,4,1,4,24) hasLocation(#20129,#20130) +stmtContainers(#20129,#20001) #20131=* -tokeninfo(#20131,6,#20001,34,"checks") -#20132=@"loc,{#10000},8,15,8,20" -locations_default(#20132,#10000,8,15,8,20) -hasLocation(#20131,#20132) -#20133=* -tokeninfo(#20133,8,#20001,35,"=>") -#20134=@"loc,{#10000},8,22,8,23" -locations_default(#20134,#10000,8,22,8,23) -hasLocation(#20133,#20134) -#20135=* -tokeninfo(#20135,6,#20001,36,"c") -hasLocation(#20135,#20044) +exprs(#20131,78,#20129,-1,"g") +hasLocation(#20131,#20050) +exprContainers(#20131,#20129) +literals("g","g",#20131) +decl(#20131,#20116) +#20132=* +scopes(#20132,1) +scopenodes(#20129,#20132) +scopenesting(#20132,#20000) +#20133=@"var;{arguments};{#20132}" +variables(#20133,"arguments",#20132) +isArgumentsObject(#20133) +#20134=* +stmts(#20134,1,#20129,-2,"{}") +#20135=@"loc,{#10000},4,23,4,24" +locations_default(#20135,#10000,4,23,4,24) +hasLocation(#20134,#20135) +stmtContainers(#20134,#20129) #20136=* -tokeninfo(#20136,8,#20001,37,";") -#20137=@"loc,{#10000},8,26,8,26" -locations_default(#20137,#10000,8,26,8,26) +stmts(#20136,1,#20001,2,"{\n return b;\n}") +#20137=@"loc,{#10000},4,26,6,1" +locations_default(#20137,#10000,4,26,6,1) hasLocation(#20136,#20137) +stmtContainers(#20136,#20001) #20138=* -tokeninfo(#20138,8,#20001,38,"(") -#20139=@"loc,{#10000},9,1,9,1" -locations_default(#20139,#10000,9,1,9,1) +stmts(#20138,9,#20136,0,"return b;") +#20139=@"loc,{#10000},5,5,5,13" +locations_default(#20139,#10000,5,5,5,13) hasLocation(#20138,#20139) +stmtContainers(#20138,#20001) #20140=* -tokeninfo(#20140,6,#20001,39,"d") -hasLocation(#20140,#20052) -#20141=* -tokeninfo(#20141,8,#20001,40,")") -#20142=@"loc,{#10000},9,3,9,3" -locations_default(#20142,#10000,9,3,9,3) -hasLocation(#20141,#20142) +exprs(#20140,79,#20138,0,"b") +hasLocation(#20140,#20070) +enclosingStmt(#20140,#20138) +exprContainers(#20140,#20001) +literals("b","b",#20140) +#20141=@"var;{b};{#20000}" +variables(#20141,"b",#20000) +bind(#20140,#20141) +#20142=* +stmts(#20142,2,#20001,3,"(c): bo ... s => c;") +hasLocation(#20142,#20017) +stmtContainers(#20142,#20001) #20143=* -tokeninfo(#20143,8,#20001,41,":") -#20144=@"loc,{#10000},9,4,9,4" -locations_default(#20144,#10000,9,4,9,4) +exprs(#20143,65,#20142,0,"(c): bo ... ks => c") +#20144=@"loc,{#10000},8,1,8,25" +locations_default(#20144,#10000,8,1,8,25) hasLocation(#20143,#20144) +enclosingStmt(#20143,#20142) +exprContainers(#20143,#20001) #20145=* -tokeninfo(#20145,8,#20001,42,"%") -#20146=@"loc,{#10000},9,6,9,6" -locations_default(#20146,#10000,9,6,9,6) -hasLocation(#20145,#20146) +scopes(#20145,1) +scopenodes(#20143,#20145) +scopenesting(#20145,#20000) +#20146=@"var;{c};{#20145}" +variables(#20146,"c",#20145) #20147=* -tokeninfo(#20147,6,#20001,43,"checks") -#20148=@"loc,{#10000},9,7,9,12" -locations_default(#20148,#10000,9,7,9,12) -hasLocation(#20147,#20148) +exprs(#20147,78,#20143,0,"c") +hasLocation(#20147,#20077) +exprContainers(#20147,#20143) +literals("c","c",#20147) +decl(#20147,#20146) +#20148=* +exprs(#20148,79,#20143,-2,"c") +hasLocation(#20148,#20091) +exprContainers(#20148,#20143) +literals("c","c",#20148) +bind(#20148,#20146) #20149=* -tokeninfo(#20149,8,#20001,44,"=>") -#20150=@"loc,{#10000},9,14,9,15" -locations_default(#20150,#10000,9,14,9,15) -hasLocation(#20149,#20150) -#20151=* -tokeninfo(#20151,6,#20001,45,"d") -hasLocation(#20151,#20054) +stmts(#20149,2,#20001,4,"(d): %checks => d;") +hasLocation(#20149,#20019) +stmtContainers(#20149,#20001) +#20150=* +exprs(#20150,65,#20149,0,"(d): %checks => d") +#20151=@"loc,{#10000},9,1,9,17" +locations_default(#20151,#10000,9,1,9,17) +hasLocation(#20150,#20151) +enclosingStmt(#20150,#20149) +exprContainers(#20150,#20001) #20152=* -tokeninfo(#20152,8,#20001,46,";") -#20153=@"loc,{#10000},9,18,9,18" -locations_default(#20153,#10000,9,18,9,18) -hasLocation(#20152,#20153) +scopes(#20152,1) +scopenodes(#20150,#20152) +scopenesting(#20152,#20000) +#20153=@"var;{d};{#20152}" +variables(#20153,"d",#20152) #20154=* -tokeninfo(#20154,0,#20001,47,"") -#20155=@"loc,{#10000},10,1,10,0" -locations_default(#20155,#10000,10,1,10,0) -hasLocation(#20154,#20155) +exprs(#20154,78,#20150,0,"d") +hasLocation(#20154,#20097) +exprContainers(#20154,#20150) +literals("d","d",#20154) +decl(#20154,#20153) +#20155=* +exprs(#20155,79,#20150,-2,"d") +hasLocation(#20155,#20109) +exprContainers(#20155,#20150) +literals("d","d",#20155) +bind(#20155,#20153) #20156=* entry_cfg_node(#20156,#20001) #20157=@"loc,{#10000},1,1,1,0" @@ -471,69 +467,69 @@ locations_default(#20157,#10000,1,1,1,0) hasLocation(#20156,#20157) #20158=* exit_cfg_node(#20158,#20001) -hasLocation(#20158,#20155) -successor(#20045,#20047) -successor(#20047,#20158) +hasLocation(#20158,#20113) +successor(#20149,#20150) +successor(#20150,#20158) #20159=* -entry_cfg_node(#20159,#20047) +entry_cfg_node(#20159,#20150) #20160=@"loc,{#10000},9,1,9,0" locations_default(#20160,#10000,9,1,9,0) hasLocation(#20159,#20160) #20161=* -exit_cfg_node(#20161,#20047) +exit_cfg_node(#20161,#20150) #20162=@"loc,{#10000},9,18,9,17" locations_default(#20162,#10000,9,18,9,17) hasLocation(#20161,#20162) -successor(#20053,#20161) -successor(#20051,#20053) -successor(#20159,#20051) -successor(#20035,#20037) -successor(#20037,#20045) +successor(#20155,#20161) +successor(#20154,#20155) +successor(#20159,#20154) +successor(#20142,#20143) +successor(#20143,#20149) #20163=* -entry_cfg_node(#20163,#20037) +entry_cfg_node(#20163,#20143) #20164=@"loc,{#10000},8,1,8,0" locations_default(#20164,#10000,8,1,8,0) hasLocation(#20163,#20164) #20165=* -exit_cfg_node(#20165,#20037) +exit_cfg_node(#20165,#20143) #20166=@"loc,{#10000},8,26,8,25" locations_default(#20166,#10000,8,26,8,25) hasLocation(#20165,#20166) -successor(#20043,#20165) -successor(#20041,#20043) -successor(#20163,#20041) -successor(#20028,#20032) -successor(#20032,#20030) -successor(#20030,#20158) -successor(#20020,#20028) +successor(#20148,#20165) +successor(#20147,#20148) +successor(#20163,#20147) +successor(#20136,#20140) +successor(#20140,#20138) +successor(#20138,#20158) +successor(#20129,#20136) #20167=* -entry_cfg_node(#20167,#20020) +entry_cfg_node(#20167,#20129) #20168=@"loc,{#10000},4,1,4,0" locations_default(#20168,#10000,4,1,4,0) hasLocation(#20167,#20168) #20169=* -exit_cfg_node(#20169,#20020) +exit_cfg_node(#20169,#20129) #20170=@"loc,{#10000},4,25,4,24" locations_default(#20170,#10000,4,25,4,24) hasLocation(#20169,#20170) -successor(#20026,#20169) -successor(#20167,#20026) -successor(#20005,#20020) +successor(#20134,#20169) +successor(#20167,#20134) +successor(#20117,#20129) #20171=* -entry_cfg_node(#20171,#20005) +entry_cfg_node(#20171,#20117) hasLocation(#20171,#20157) #20172=* -exit_cfg_node(#20172,#20005) +exit_cfg_node(#20172,#20117) #20173=@"loc,{#10000},3,2,3,1" locations_default(#20173,#10000,3,2,3,1) hasLocation(#20172,#20173) -successor(#20014,#20018) -successor(#20018,#20016) -successor(#20016,#20172) -successor(#20011,#20014) -successor(#20171,#20011) -successor(#20022,#20005) -successor(#20007,#20022) -successor(#20156,#20007) +successor(#20124,#20128) +successor(#20128,#20126) +successor(#20126,#20172) +successor(#20122,#20124) +successor(#20171,#20122) +successor(#20131,#20117) +successor(#20119,#20131) +successor(#20156,#20119) numlines(#10000,9,8,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/qualifiedInterface.js.trap b/javascript/extractor/tests/flow/output/trap/qualifiedInterface.js.trap index 8eb4ade67ac..30e2744f7c1 100644 --- a/javascript/extractor/tests/flow/output/trap/qualifiedInterface.js.trap +++ b/javascript/extractor/tests/flow/output/trap/qualifiedInterface.js.trap @@ -9,62 +9,62 @@ 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=* -lines(#20003,#20001,"interface I extends J.K {}"," +#20002=* +lines(#20002,#20001,"interface I extends J.K {}"," ") -#20004=@"loc,{#10000},1,1,1,26" -locations_default(#20004,#10000,1,1,1,26) -hasLocation(#20003,#20004) +#20003=@"loc,{#10000},1,1,1,26" +locations_default(#20003,#10000,1,1,1,26) +hasLocation(#20002,#20003) numlines(#20001,1,1,0) -#20005=* -tokeninfo(#20005,6,#20001,0,"interface") -#20006=@"loc,{#10000},1,1,1,9" -locations_default(#20006,#10000,1,1,1,9) -hasLocation(#20005,#20006) -#20007=* -tokeninfo(#20007,6,#20001,1,"I") -#20008=@"loc,{#10000},1,11,1,11" -locations_default(#20008,#10000,1,11,1,11) -hasLocation(#20007,#20008) -#20009=* -tokeninfo(#20009,7,#20001,2,"extends") -#20010=@"loc,{#10000},1,13,1,19" -locations_default(#20010,#10000,1,13,1,19) -hasLocation(#20009,#20010) -#20011=* -tokeninfo(#20011,6,#20001,3,"J") -#20012=@"loc,{#10000},1,21,1,21" -locations_default(#20012,#10000,1,21,1,21) -hasLocation(#20011,#20012) -#20013=* -tokeninfo(#20013,8,#20001,4,".") -#20014=@"loc,{#10000},1,22,1,22" -locations_default(#20014,#10000,1,22,1,22) -hasLocation(#20013,#20014) -#20015=* -tokeninfo(#20015,6,#20001,5,"K") -#20016=@"loc,{#10000},1,23,1,23" -locations_default(#20016,#10000,1,23,1,23) -hasLocation(#20015,#20016) -#20017=* -tokeninfo(#20017,8,#20001,6,"{") -#20018=@"loc,{#10000},1,25,1,25" -locations_default(#20018,#10000,1,25,1,25) -hasLocation(#20017,#20018) -#20019=* -tokeninfo(#20019,8,#20001,7,"}") -#20020=@"loc,{#10000},1,26,1,26" -locations_default(#20020,#10000,1,26,1,26) -hasLocation(#20019,#20020) -#20021=* -tokeninfo(#20021,0,#20001,8,"") -#20022=@"loc,{#10000},2,1,2,0" -locations_default(#20022,#10000,2,1,2,0) -hasLocation(#20021,#20022) +#20004=* +tokeninfo(#20004,6,#20001,0,"interface") +#20005=@"loc,{#10000},1,1,1,9" +locations_default(#20005,#10000,1,1,1,9) +hasLocation(#20004,#20005) +#20006=* +tokeninfo(#20006,6,#20001,1,"I") +#20007=@"loc,{#10000},1,11,1,11" +locations_default(#20007,#10000,1,11,1,11) +hasLocation(#20006,#20007) +#20008=* +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,"J") +#20011=@"loc,{#10000},1,21,1,21" +locations_default(#20011,#10000,1,21,1,21) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,8,#20001,4,".") +#20013=@"loc,{#10000},1,22,1,22" +locations_default(#20013,#10000,1,22,1,22) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,6,#20001,5,"K") +#20015=@"loc,{#10000},1,23,1,23" +locations_default(#20015,#10000,1,23,1,23) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,6,"{") +#20017=@"loc,{#10000},1,25,1,25" +locations_default(#20017,#10000,1,25,1,25) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,7,"}") +#20019=@"loc,{#10000},1,26,1,26" +locations_default(#20019,#10000,1,26,1,26) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,0,#20001,8,"") +#20021=@"loc,{#10000},2,1,2,0" +locations_default(#20021,#10000,2,1,2,0) +hasLocation(#20020,#20021) +toplevels(#20001,0) +#20022=@"loc,{#10000},1,1,2,0" +locations_default(#20022,#10000,1,1,2,0) +hasLocation(#20001,#20022) #20023=* entry_cfg_node(#20023,#20001) #20024=@"loc,{#10000},1,1,1,0" @@ -72,7 +72,7 @@ locations_default(#20024,#10000,1,1,1,0) hasLocation(#20023,#20024) #20025=* exit_cfg_node(#20025,#20001) -hasLocation(#20025,#20022) +hasLocation(#20025,#20021) successor(#20023,#20025) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/tst.js.trap b/javascript/extractor/tests/flow/output/trap/tst.js.trap index 52e2fcd2260..56a68aac447 100644 --- a/javascript/extractor/tests/flow/output/trap/tst.js.trap +++ b/javascript/extractor/tests/flow/output/trap/tst.js.trap @@ -9,666 +9,663 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,23,0" -locations_default(#20002,#10000,1,1,23,0) -hasLocation(#20001,#20002) -#20003=@"var;{f};{#20000}" -variables(#20003,"f",#20000) -#20004=@"var;{A};{#20000}" -variables(#20004,"A",#20000) -#20005=@"local_type_name;{A};{#20000}" -local_type_names(#20005,"A",#20000) -#20006=* -stmts(#20006,26,#20001,0,"class A ... nt {}\n}") -#20007=@"loc,{#10000},6,1,9,1" -locations_default(#20007,#10000,6,1,9,1) -hasLocation(#20006,#20007) -stmtContainers(#20006,#20001) -#20008=* -exprs(#20008,78,#20006,0,"A") -#20009=@"loc,{#10000},6,7,6,7" -locations_default(#20009,#10000,6,7,6,7) -hasLocation(#20008,#20009) -enclosingStmt(#20008,#20006) -exprContainers(#20008,#20001) -literals("A","A",#20008) -decl(#20008,#20004) -typedecl(#20008,#20005) -#20010=* -scopes(#20010,10) -scopenodes(#20006,#20010) -scopenesting(#20010,#20000) -#20011=* -properties(#20011,#20006,2,8,"x: T;") -#20012=@"loc,{#10000},7,3,7,7" -locations_default(#20012,#10000,7,3,7,7) -hasLocation(#20011,#20012) -#20013=* -exprs(#20013,0,#20011,0,"x") -#20014=@"loc,{#10000},7,3,7,3" -locations_default(#20014,#10000,7,3,7,3) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20006) -exprContainers(#20013,#20001) -literals("x","x",#20013) -#20015=* -#20016=* -properties(#20016,#20006,3,0,"m() : Point {}") -#20017=@"loc,{#10000},8,3,8,16" -locations_default(#20017,#10000,8,3,8,16) -hasLocation(#20016,#20017) -#20018=* -exprs(#20018,0,#20016,0,"m") -#20019=@"loc,{#10000},8,3,8,3" -locations_default(#20019,#10000,8,3,8,3) -hasLocation(#20018,#20019) -enclosingStmt(#20018,#20006) -exprContainers(#20018,#20001) -literals("m","m",#20018) -#20020=* -exprs(#20020,9,#20016,1,"() : Point {}") -#20021=@"loc,{#10000},8,4,8,16" -locations_default(#20021,#10000,8,4,8,16) -hasLocation(#20020,#20021) -enclosingStmt(#20020,#20006) -exprContainers(#20020,#20001) -#20022=* -scopes(#20022,1) -scopenodes(#20020,#20022) -scopenesting(#20022,#20010) -#20023=@"var;{arguments};{#20022}" -variables(#20023,"arguments",#20022) -isArgumentsObject(#20023) -#20024=* -stmts(#20024,1,#20020,-2,"{}") -#20025=@"loc,{#10000},8,15,8,16" -locations_default(#20025,#10000,8,15,8,16) -hasLocation(#20024,#20025) -stmtContainers(#20024,#20020) -numlines(#20020,1,1,0) -isMethod(#20016) -#20026=* -properties(#20026,#20006,4,0,"constructor() {}") -#20027=@"loc,{#10000},6,12,6,11" -locations_default(#20027,#10000,6,12,6,11) -hasLocation(#20026,#20027) -#20028=* -exprs(#20028,0,#20026,0,"constructor") -hasLocation(#20028,#20027) -enclosingStmt(#20028,#20006) -exprContainers(#20028,#20001) -literals("constructor","constructor",#20028) -exprs(#20015,9,#20026,1,"() {}") -hasLocation(#20015,#20027) -enclosingStmt(#20015,#20006) -exprContainers(#20015,#20001) -#20029=* -scopes(#20029,1) -scopenodes(#20015,#20029) -scopenesting(#20029,#20010) -#20030=@"var;{arguments};{#20029}" -variables(#20030,"arguments",#20029) -isArgumentsObject(#20030) -#20031=* -stmts(#20031,1,#20015,-2,"{}") -hasLocation(#20031,#20027) -stmtContainers(#20031,#20015) -numlines(#20015,1,0,0) -isMethod(#20026) -#20032=* -stmts(#20032,17,#20001,1,"functio ... :\n }\n}") -#20033=@"loc,{#10000},11,1,15,1" -locations_default(#20033,#10000,11,1,15,1) -hasLocation(#20032,#20033) -stmtContainers(#20032,#20001) -#20034=* -exprs(#20034,78,#20032,-1,"f") -#20035=@"loc,{#10000},11,10,11,10" -locations_default(#20035,#10000,11,10,11,10) -hasLocation(#20034,#20035) -exprContainers(#20034,#20032) -literals("f","f",#20034) -decl(#20034,#20003) -#20036=* -scopes(#20036,1) -scopenodes(#20032,#20036) -scopenesting(#20036,#20000) -#20037=@"var;{arguments};{#20036}" -variables(#20037,"arguments",#20036) -isArgumentsObject(#20037) -#20038=* -stmts(#20038,1,#20032,-2,"{\n swi ... :\n }\n}") -#20039=@"loc,{#10000},11,14,15,1" -locations_default(#20039,#10000,11,14,15,1) -hasLocation(#20038,#20039) -stmtContainers(#20038,#20032) -#20040=* -stmts(#20040,8,#20038,0,"switch( ... 2):\n }") -#20041=@"loc,{#10000},12,3,14,3" -locations_default(#20041,#10000,12,3,14,3) -hasLocation(#20040,#20041) -stmtContainers(#20040,#20032) -#20042=* -exprs(#20042,79,#20040,-1,"x") -#20043=@"loc,{#10000},12,10,12,10" -locations_default(#20043,#10000,12,10,12,10) -hasLocation(#20042,#20043) -enclosingStmt(#20042,#20040) -exprContainers(#20042,#20032) -literals("x","x",#20042) -#20044=@"var;{x};{#20000}" -variables(#20044,"x",#20000) -bind(#20042,#20044) -#20045=* -stmts(#20045,19,#20040,0,"case (42):") -#20046=@"loc,{#10000},13,3,13,12" -locations_default(#20046,#10000,13,3,13,12) -hasLocation(#20045,#20046) -stmtContainers(#20045,#20032) -#20047=* -exprs(#20047,63,#20045,-1,"(42)") -#20048=@"loc,{#10000},13,8,13,11" -locations_default(#20048,#10000,13,8,13,11) -hasLocation(#20047,#20048) -enclosingStmt(#20047,#20045) -exprContainers(#20047,#20032) -#20049=* -exprs(#20049,3,#20047,0,"42") -#20050=@"loc,{#10000},13,9,13,10" -locations_default(#20050,#10000,13,9,13,10) -hasLocation(#20049,#20050) -enclosingStmt(#20049,#20045) -exprContainers(#20049,#20032) -literals("42","42",#20049) -numlines(#20032,5,5,0) -#20051=* -lines(#20051,#20001,"type Point = {"," +#20002=* +lines(#20002,#20001,"type Point = {"," ") -#20052=@"loc,{#10000},1,1,1,14" -locations_default(#20052,#10000,1,1,1,14) -hasLocation(#20051,#20052) -#20053=* -lines(#20053,#20001," x: int,"," +#20003=@"loc,{#10000},1,1,1,14" +locations_default(#20003,#10000,1,1,1,14) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," x: int,"," ") -#20054=@"loc,{#10000},2,1,2,9" -locations_default(#20054,#10000,2,1,2,9) -hasLocation(#20053,#20054) +#20005=@"loc,{#10000},2,1,2,9" +locations_default(#20005,#10000,2,1,2,9) +hasLocation(#20004,#20005) indentation(#10000,2," ",2) -#20055=* -lines(#20055,#20001," y: int"," +#20006=* +lines(#20006,#20001," y: int"," ") -#20056=@"loc,{#10000},3,1,3,8" -locations_default(#20056,#10000,3,1,3,8) -hasLocation(#20055,#20056) +#20007=@"loc,{#10000},3,1,3,8" +locations_default(#20007,#10000,3,1,3,8) +hasLocation(#20006,#20007) indentation(#10000,3," ",2) -#20057=* -lines(#20057,#20001,"}"," +#20008=* +lines(#20008,#20001,"}"," ") -#20058=@"loc,{#10000},4,1,4,1" -locations_default(#20058,#10000,4,1,4,1) -hasLocation(#20057,#20058) -#20059=* -lines(#20059,#20001,""," +#20009=@"loc,{#10000},4,1,4,1" +locations_default(#20009,#10000,4,1,4,1) +hasLocation(#20008,#20009) +#20010=* +lines(#20010,#20001,""," ") -#20060=@"loc,{#10000},5,1,5,0" -locations_default(#20060,#10000,5,1,5,0) -hasLocation(#20059,#20060) -#20061=* -lines(#20061,#20001,"class A {"," +#20011=@"loc,{#10000},5,1,5,0" +locations_default(#20011,#10000,5,1,5,0) +hasLocation(#20010,#20011) +#20012=* +lines(#20012,#20001,"class A {"," ") -#20062=@"loc,{#10000},6,1,6,12" -locations_default(#20062,#10000,6,1,6,12) -hasLocation(#20061,#20062) -#20063=* -lines(#20063,#20001," x: T;"," +#20013=@"loc,{#10000},6,1,6,12" +locations_default(#20013,#10000,6,1,6,12) +hasLocation(#20012,#20013) +#20014=* +lines(#20014,#20001," x: T;"," ") -#20064=@"loc,{#10000},7,1,7,7" -locations_default(#20064,#10000,7,1,7,7) -hasLocation(#20063,#20064) +#20015=@"loc,{#10000},7,1,7,7" +locations_default(#20015,#10000,7,1,7,7) +hasLocation(#20014,#20015) indentation(#10000,7," ",2) -#20065=* -lines(#20065,#20001," m() : Point {}"," +#20016=* +lines(#20016,#20001," m() : Point {}"," ") -#20066=@"loc,{#10000},8,1,8,16" -locations_default(#20066,#10000,8,1,8,16) -hasLocation(#20065,#20066) +#20017=@"loc,{#10000},8,1,8,16" +locations_default(#20017,#10000,8,1,8,16) +hasLocation(#20016,#20017) indentation(#10000,8," ",2) -#20067=* -lines(#20067,#20001,"}"," +#20018=* +lines(#20018,#20001,"}"," ") -#20068=@"loc,{#10000},9,1,9,1" -locations_default(#20068,#10000,9,1,9,1) -hasLocation(#20067,#20068) +#20019=@"loc,{#10000},9,1,9,1" +locations_default(#20019,#10000,9,1,9,1) +hasLocation(#20018,#20019) +#20020=* +lines(#20020,#20001,""," +") +#20021=@"loc,{#10000},10,1,10,0" +locations_default(#20021,#10000,10,1,10,0) +hasLocation(#20020,#20021) +#20022=* +lines(#20022,#20001,"function f() {"," +") +#20023=@"loc,{#10000},11,1,11,14" +locations_default(#20023,#10000,11,1,11,14) +hasLocation(#20022,#20023) +#20024=* +lines(#20024,#20001," switch(x) {"," +") +#20025=@"loc,{#10000},12,1,12,13" +locations_default(#20025,#10000,12,1,12,13) +hasLocation(#20024,#20025) +indentation(#10000,12," ",2) +#20026=* +lines(#20026,#20001," case (42):"," +") +#20027=@"loc,{#10000},13,1,13,12" +locations_default(#20027,#10000,13,1,13,12) +hasLocation(#20026,#20027) +indentation(#10000,13," ",2) +#20028=* +lines(#20028,#20001," }"," +") +#20029=@"loc,{#10000},14,1,14,3" +locations_default(#20029,#10000,14,1,14,3) +hasLocation(#20028,#20029) +indentation(#10000,14," ",2) +#20030=* +lines(#20030,#20001,"}"," +") +#20031=@"loc,{#10000},15,1,15,1" +locations_default(#20031,#10000,15,1,15,1) +hasLocation(#20030,#20031) +#20032=* +lines(#20032,#20001,""," +") +#20033=@"loc,{#10000},16,1,16,0" +locations_default(#20033,#10000,16,1,16,0) +hasLocation(#20032,#20033) +#20034=* +lines(#20034,#20001,"@SomeDecorator"," +") +#20035=@"loc,{#10000},17,1,17,14" +locations_default(#20035,#10000,17,1,17,14) +hasLocation(#20034,#20035) +#20036=* +lines(#20036,#20001,"type MyPoint = Point"," +") +#20037=@"loc,{#10000},18,1,18,20" +locations_default(#20037,#10000,18,1,18,20) +hasLocation(#20036,#20037) +#20038=* +lines(#20038,#20001,""," +") +#20039=@"loc,{#10000},19,1,19,0" +locations_default(#20039,#10000,19,1,19,0) +hasLocation(#20038,#20039) +#20040=* +lines(#20040,#20001,"type T1 = {| bar: string |}"," +") +#20041=@"loc,{#10000},20,1,20,27" +locations_default(#20041,#10000,20,1,20,27) +hasLocation(#20040,#20041) +#20042=* +lines(#20042,#20001,""," +") +#20043=@"loc,{#10000},21,1,21,0" +locations_default(#20043,#10000,21,1,21,0) +hasLocation(#20042,#20043) +#20044=* +lines(#20044,#20001,"type T2 = (| ""red"" | ""green"" | ""blue"")"," +") +#20045=@"loc,{#10000},22,1,22,38" +locations_default(#20045,#10000,22,1,22,38) +hasLocation(#20044,#20045) +numlines(#20001,22,17,0) +#20046=* +tokeninfo(#20046,6,#20001,0,"type") +#20047=@"loc,{#10000},1,1,1,4" +locations_default(#20047,#10000,1,1,1,4) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,6,#20001,1,"Point") +#20049=@"loc,{#10000},1,6,1,10" +locations_default(#20049,#10000,1,6,1,10) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,2,"=") +#20051=@"loc,{#10000},1,12,1,12" +locations_default(#20051,#10000,1,12,1,12) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,8,#20001,3,"{") +#20053=@"loc,{#10000},1,14,1,14" +locations_default(#20053,#10000,1,14,1,14) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,6,#20001,4,"x") +#20055=@"loc,{#10000},2,3,2,3" +locations_default(#20055,#10000,2,3,2,3) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,8,#20001,5,":") +#20057=@"loc,{#10000},2,4,2,4" +locations_default(#20057,#10000,2,4,2,4) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,6,#20001,6,"int") +#20059=@"loc,{#10000},2,6,2,8" +locations_default(#20059,#10000,2,6,2,8) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,8,#20001,7,",") +#20061=@"loc,{#10000},2,9,2,9" +locations_default(#20061,#10000,2,9,2,9) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,6,#20001,8,"y") +#20063=@"loc,{#10000},3,3,3,3" +locations_default(#20063,#10000,3,3,3,3) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,8,#20001,9,":") +#20065=@"loc,{#10000},3,4,3,4" +locations_default(#20065,#10000,3,4,3,4) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,6,#20001,10,"int") +#20067=@"loc,{#10000},3,6,3,8" +locations_default(#20067,#10000,3,6,3,8) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,8,#20001,11,"}") +hasLocation(#20068,#20009) #20069=* -lines(#20069,#20001,""," -") -#20070=@"loc,{#10000},10,1,10,0" -locations_default(#20070,#10000,10,1,10,0) +tokeninfo(#20069,7,#20001,12,"class") +#20070=@"loc,{#10000},6,1,6,5" +locations_default(#20070,#10000,6,1,6,5) hasLocation(#20069,#20070) #20071=* -lines(#20071,#20001,"function f() {"," -") -#20072=@"loc,{#10000},11,1,11,14" -locations_default(#20072,#10000,11,1,11,14) +tokeninfo(#20071,6,#20001,13,"A") +#20072=@"loc,{#10000},6,7,6,7" +locations_default(#20072,#10000,6,7,6,7) hasLocation(#20071,#20072) #20073=* -lines(#20073,#20001," switch(x) {"," -") -#20074=@"loc,{#10000},12,1,12,13" -locations_default(#20074,#10000,12,1,12,13) +tokeninfo(#20073,8,#20001,14,"<") +#20074=@"loc,{#10000},6,8,6,8" +locations_default(#20074,#10000,6,8,6,8) hasLocation(#20073,#20074) -indentation(#10000,12," ",2) #20075=* -lines(#20075,#20001," case (42):"," -") -#20076=@"loc,{#10000},13,1,13,12" -locations_default(#20076,#10000,13,1,13,12) +tokeninfo(#20075,6,#20001,15,"T") +#20076=@"loc,{#10000},6,9,6,9" +locations_default(#20076,#10000,6,9,6,9) hasLocation(#20075,#20076) -indentation(#10000,13," ",2) #20077=* -lines(#20077,#20001," }"," -") -#20078=@"loc,{#10000},14,1,14,3" -locations_default(#20078,#10000,14,1,14,3) +tokeninfo(#20077,8,#20001,16,">") +#20078=@"loc,{#10000},6,10,6,10" +locations_default(#20078,#10000,6,10,6,10) hasLocation(#20077,#20078) -indentation(#10000,14," ",2) #20079=* -lines(#20079,#20001,"}"," -") -#20080=@"loc,{#10000},15,1,15,1" -locations_default(#20080,#10000,15,1,15,1) +tokeninfo(#20079,8,#20001,17,"{") +#20080=@"loc,{#10000},6,12,6,12" +locations_default(#20080,#10000,6,12,6,12) hasLocation(#20079,#20080) #20081=* -lines(#20081,#20001,""," -") -#20082=@"loc,{#10000},16,1,16,0" -locations_default(#20082,#10000,16,1,16,0) +tokeninfo(#20081,6,#20001,18,"x") +#20082=@"loc,{#10000},7,3,7,3" +locations_default(#20082,#10000,7,3,7,3) hasLocation(#20081,#20082) #20083=* -lines(#20083,#20001,"@SomeDecorator"," -") -#20084=@"loc,{#10000},17,1,17,14" -locations_default(#20084,#10000,17,1,17,14) +tokeninfo(#20083,8,#20001,19,":") +#20084=@"loc,{#10000},7,4,7,4" +locations_default(#20084,#10000,7,4,7,4) hasLocation(#20083,#20084) #20085=* -lines(#20085,#20001,"type MyPoint = Point"," -") -#20086=@"loc,{#10000},18,1,18,20" -locations_default(#20086,#10000,18,1,18,20) +tokeninfo(#20085,6,#20001,20,"T") +#20086=@"loc,{#10000},7,6,7,6" +locations_default(#20086,#10000,7,6,7,6) hasLocation(#20085,#20086) #20087=* -lines(#20087,#20001,""," -") -#20088=@"loc,{#10000},19,1,19,0" -locations_default(#20088,#10000,19,1,19,0) +tokeninfo(#20087,8,#20001,21,";") +#20088=@"loc,{#10000},7,7,7,7" +locations_default(#20088,#10000,7,7,7,7) hasLocation(#20087,#20088) #20089=* -lines(#20089,#20001,"type T1 = {| bar: string |}"," -") -#20090=@"loc,{#10000},20,1,20,27" -locations_default(#20090,#10000,20,1,20,27) +tokeninfo(#20089,6,#20001,22,"m") +#20090=@"loc,{#10000},8,3,8,3" +locations_default(#20090,#10000,8,3,8,3) hasLocation(#20089,#20090) #20091=* -lines(#20091,#20001,""," -") -#20092=@"loc,{#10000},21,1,21,0" -locations_default(#20092,#10000,21,1,21,0) +tokeninfo(#20091,8,#20001,23,"(") +#20092=@"loc,{#10000},8,4,8,4" +locations_default(#20092,#10000,8,4,8,4) hasLocation(#20091,#20092) #20093=* -lines(#20093,#20001,"type T2 = (| ""red"" | ""green"" | ""blue"")"," -") -#20094=@"loc,{#10000},22,1,22,38" -locations_default(#20094,#10000,22,1,22,38) +tokeninfo(#20093,8,#20001,24,")") +#20094=@"loc,{#10000},8,5,8,5" +locations_default(#20094,#10000,8,5,8,5) hasLocation(#20093,#20094) -numlines(#20001,22,17,0) #20095=* -tokeninfo(#20095,6,#20001,0,"type") -#20096=@"loc,{#10000},1,1,1,4" -locations_default(#20096,#10000,1,1,1,4) +tokeninfo(#20095,8,#20001,25,":") +#20096=@"loc,{#10000},8,7,8,7" +locations_default(#20096,#10000,8,7,8,7) hasLocation(#20095,#20096) #20097=* -tokeninfo(#20097,6,#20001,1,"Point") -#20098=@"loc,{#10000},1,6,1,10" -locations_default(#20098,#10000,1,6,1,10) +tokeninfo(#20097,6,#20001,26,"Point") +#20098=@"loc,{#10000},8,9,8,13" +locations_default(#20098,#10000,8,9,8,13) hasLocation(#20097,#20098) #20099=* -tokeninfo(#20099,8,#20001,2,"=") -#20100=@"loc,{#10000},1,12,1,12" -locations_default(#20100,#10000,1,12,1,12) +tokeninfo(#20099,8,#20001,27,"{") +#20100=@"loc,{#10000},8,15,8,15" +locations_default(#20100,#10000,8,15,8,15) hasLocation(#20099,#20100) #20101=* -tokeninfo(#20101,8,#20001,3,"{") -#20102=@"loc,{#10000},1,14,1,14" -locations_default(#20102,#10000,1,14,1,14) +tokeninfo(#20101,8,#20001,28,"}") +#20102=@"loc,{#10000},8,16,8,16" +locations_default(#20102,#10000,8,16,8,16) hasLocation(#20101,#20102) #20103=* -tokeninfo(#20103,6,#20001,4,"x") -#20104=@"loc,{#10000},2,3,2,3" -locations_default(#20104,#10000,2,3,2,3) -hasLocation(#20103,#20104) -#20105=* -tokeninfo(#20105,8,#20001,5,":") -#20106=@"loc,{#10000},2,4,2,4" -locations_default(#20106,#10000,2,4,2,4) -hasLocation(#20105,#20106) -#20107=* -tokeninfo(#20107,6,#20001,6,"int") -#20108=@"loc,{#10000},2,6,2,8" -locations_default(#20108,#10000,2,6,2,8) -hasLocation(#20107,#20108) -#20109=* -tokeninfo(#20109,8,#20001,7,",") -#20110=@"loc,{#10000},2,9,2,9" -locations_default(#20110,#10000,2,9,2,9) -hasLocation(#20109,#20110) -#20111=* -tokeninfo(#20111,6,#20001,8,"y") -#20112=@"loc,{#10000},3,3,3,3" -locations_default(#20112,#10000,3,3,3,3) -hasLocation(#20111,#20112) -#20113=* -tokeninfo(#20113,8,#20001,9,":") -#20114=@"loc,{#10000},3,4,3,4" -locations_default(#20114,#10000,3,4,3,4) -hasLocation(#20113,#20114) -#20115=* -tokeninfo(#20115,6,#20001,10,"int") -#20116=@"loc,{#10000},3,6,3,8" -locations_default(#20116,#10000,3,6,3,8) -hasLocation(#20115,#20116) -#20117=* -tokeninfo(#20117,8,#20001,11,"}") -hasLocation(#20117,#20058) +tokeninfo(#20103,8,#20001,29,"}") +hasLocation(#20103,#20019) +#20104=* +tokeninfo(#20104,7,#20001,30,"function") +#20105=@"loc,{#10000},11,1,11,8" +locations_default(#20105,#10000,11,1,11,8) +hasLocation(#20104,#20105) +#20106=* +tokeninfo(#20106,6,#20001,31,"f") +#20107=@"loc,{#10000},11,10,11,10" +locations_default(#20107,#10000,11,10,11,10) +hasLocation(#20106,#20107) +#20108=* +tokeninfo(#20108,8,#20001,32,"(") +#20109=@"loc,{#10000},11,11,11,11" +locations_default(#20109,#10000,11,11,11,11) +hasLocation(#20108,#20109) +#20110=* +tokeninfo(#20110,8,#20001,33,")") +#20111=@"loc,{#10000},11,12,11,12" +locations_default(#20111,#10000,11,12,11,12) +hasLocation(#20110,#20111) +#20112=* +tokeninfo(#20112,8,#20001,34,"{") +#20113=@"loc,{#10000},11,14,11,14" +locations_default(#20113,#10000,11,14,11,14) +hasLocation(#20112,#20113) +#20114=* +tokeninfo(#20114,7,#20001,35,"switch") +#20115=@"loc,{#10000},12,3,12,8" +locations_default(#20115,#10000,12,3,12,8) +hasLocation(#20114,#20115) +#20116=* +tokeninfo(#20116,8,#20001,36,"(") +#20117=@"loc,{#10000},12,9,12,9" +locations_default(#20117,#10000,12,9,12,9) +hasLocation(#20116,#20117) #20118=* -tokeninfo(#20118,7,#20001,12,"class") -#20119=@"loc,{#10000},6,1,6,5" -locations_default(#20119,#10000,6,1,6,5) +tokeninfo(#20118,6,#20001,37,"x") +#20119=@"loc,{#10000},12,10,12,10" +locations_default(#20119,#10000,12,10,12,10) hasLocation(#20118,#20119) #20120=* -tokeninfo(#20120,6,#20001,13,"A") -hasLocation(#20120,#20009) -#20121=* -tokeninfo(#20121,8,#20001,14,"<") -#20122=@"loc,{#10000},6,8,6,8" -locations_default(#20122,#10000,6,8,6,8) -hasLocation(#20121,#20122) -#20123=* -tokeninfo(#20123,6,#20001,15,"T") -#20124=@"loc,{#10000},6,9,6,9" -locations_default(#20124,#10000,6,9,6,9) -hasLocation(#20123,#20124) -#20125=* -tokeninfo(#20125,8,#20001,16,">") -#20126=@"loc,{#10000},6,10,6,10" -locations_default(#20126,#10000,6,10,6,10) -hasLocation(#20125,#20126) -#20127=* -tokeninfo(#20127,8,#20001,17,"{") -#20128=@"loc,{#10000},6,12,6,12" -locations_default(#20128,#10000,6,12,6,12) -hasLocation(#20127,#20128) -#20129=* -tokeninfo(#20129,6,#20001,18,"x") -hasLocation(#20129,#20014) +tokeninfo(#20120,8,#20001,38,")") +#20121=@"loc,{#10000},12,11,12,11" +locations_default(#20121,#10000,12,11,12,11) +hasLocation(#20120,#20121) +#20122=* +tokeninfo(#20122,8,#20001,39,"{") +#20123=@"loc,{#10000},12,13,12,13" +locations_default(#20123,#10000,12,13,12,13) +hasLocation(#20122,#20123) +#20124=* +tokeninfo(#20124,7,#20001,40,"case") +#20125=@"loc,{#10000},13,3,13,6" +locations_default(#20125,#10000,13,3,13,6) +hasLocation(#20124,#20125) +#20126=* +tokeninfo(#20126,8,#20001,41,"(") +#20127=@"loc,{#10000},13,8,13,8" +locations_default(#20127,#10000,13,8,13,8) +hasLocation(#20126,#20127) +#20128=* +tokeninfo(#20128,3,#20001,42,"42") +#20129=@"loc,{#10000},13,9,13,10" +locations_default(#20129,#10000,13,9,13,10) +hasLocation(#20128,#20129) #20130=* -tokeninfo(#20130,8,#20001,19,":") -#20131=@"loc,{#10000},7,4,7,4" -locations_default(#20131,#10000,7,4,7,4) +tokeninfo(#20130,8,#20001,43,")") +#20131=@"loc,{#10000},13,11,13,11" +locations_default(#20131,#10000,13,11,13,11) hasLocation(#20130,#20131) #20132=* -tokeninfo(#20132,6,#20001,20,"T") -#20133=@"loc,{#10000},7,6,7,6" -locations_default(#20133,#10000,7,6,7,6) +tokeninfo(#20132,8,#20001,44,":") +#20133=@"loc,{#10000},13,12,13,12" +locations_default(#20133,#10000,13,12,13,12) hasLocation(#20132,#20133) #20134=* -tokeninfo(#20134,8,#20001,21,";") -#20135=@"loc,{#10000},7,7,7,7" -locations_default(#20135,#10000,7,7,7,7) +tokeninfo(#20134,8,#20001,45,"}") +#20135=@"loc,{#10000},14,3,14,3" +locations_default(#20135,#10000,14,3,14,3) hasLocation(#20134,#20135) #20136=* -tokeninfo(#20136,6,#20001,22,"m") -hasLocation(#20136,#20019) +tokeninfo(#20136,8,#20001,46,"}") +hasLocation(#20136,#20031) #20137=* -tokeninfo(#20137,8,#20001,23,"(") -#20138=@"loc,{#10000},8,4,8,4" -locations_default(#20138,#10000,8,4,8,4) +tokeninfo(#20137,8,#20001,47,"@") +#20138=@"loc,{#10000},17,1,17,1" +locations_default(#20138,#10000,17,1,17,1) hasLocation(#20137,#20138) #20139=* -tokeninfo(#20139,8,#20001,24,")") -#20140=@"loc,{#10000},8,5,8,5" -locations_default(#20140,#10000,8,5,8,5) +tokeninfo(#20139,6,#20001,48,"SomeDecorator") +#20140=@"loc,{#10000},17,2,17,14" +locations_default(#20140,#10000,17,2,17,14) hasLocation(#20139,#20140) #20141=* -tokeninfo(#20141,8,#20001,25,":") -#20142=@"loc,{#10000},8,7,8,7" -locations_default(#20142,#10000,8,7,8,7) +tokeninfo(#20141,6,#20001,49,"type") +#20142=@"loc,{#10000},18,1,18,4" +locations_default(#20142,#10000,18,1,18,4) hasLocation(#20141,#20142) #20143=* -tokeninfo(#20143,6,#20001,26,"Point") -#20144=@"loc,{#10000},8,9,8,13" -locations_default(#20144,#10000,8,9,8,13) +tokeninfo(#20143,6,#20001,50,"MyPoint") +#20144=@"loc,{#10000},18,6,18,12" +locations_default(#20144,#10000,18,6,18,12) hasLocation(#20143,#20144) #20145=* -tokeninfo(#20145,8,#20001,27,"{") -#20146=@"loc,{#10000},8,15,8,15" -locations_default(#20146,#10000,8,15,8,15) +tokeninfo(#20145,8,#20001,51,"=") +#20146=@"loc,{#10000},18,14,18,14" +locations_default(#20146,#10000,18,14,18,14) hasLocation(#20145,#20146) #20147=* -tokeninfo(#20147,8,#20001,28,"}") -#20148=@"loc,{#10000},8,16,8,16" -locations_default(#20148,#10000,8,16,8,16) +tokeninfo(#20147,6,#20001,52,"Point") +#20148=@"loc,{#10000},18,16,18,20" +locations_default(#20148,#10000,18,16,18,20) hasLocation(#20147,#20148) #20149=* -tokeninfo(#20149,8,#20001,29,"}") -hasLocation(#20149,#20068) -#20150=* -tokeninfo(#20150,7,#20001,30,"function") -#20151=@"loc,{#10000},11,1,11,8" -locations_default(#20151,#10000,11,1,11,8) -hasLocation(#20150,#20151) -#20152=* -tokeninfo(#20152,6,#20001,31,"f") -hasLocation(#20152,#20035) +tokeninfo(#20149,6,#20001,53,"type") +#20150=@"loc,{#10000},20,1,20,4" +locations_default(#20150,#10000,20,1,20,4) +hasLocation(#20149,#20150) +#20151=* +tokeninfo(#20151,6,#20001,54,"T1") +#20152=@"loc,{#10000},20,6,20,7" +locations_default(#20152,#10000,20,6,20,7) +hasLocation(#20151,#20152) #20153=* -tokeninfo(#20153,8,#20001,32,"(") -#20154=@"loc,{#10000},11,11,11,11" -locations_default(#20154,#10000,11,11,11,11) +tokeninfo(#20153,8,#20001,55,"=") +#20154=@"loc,{#10000},20,9,20,9" +locations_default(#20154,#10000,20,9,20,9) hasLocation(#20153,#20154) #20155=* -tokeninfo(#20155,8,#20001,33,")") -#20156=@"loc,{#10000},11,12,11,12" -locations_default(#20156,#10000,11,12,11,12) +tokeninfo(#20155,8,#20001,56,"{|") +#20156=@"loc,{#10000},20,11,20,12" +locations_default(#20156,#10000,20,11,20,12) hasLocation(#20155,#20156) #20157=* -tokeninfo(#20157,8,#20001,34,"{") -#20158=@"loc,{#10000},11,14,11,14" -locations_default(#20158,#10000,11,14,11,14) +tokeninfo(#20157,6,#20001,57,"bar") +#20158=@"loc,{#10000},20,14,20,16" +locations_default(#20158,#10000,20,14,20,16) hasLocation(#20157,#20158) #20159=* -tokeninfo(#20159,7,#20001,35,"switch") -#20160=@"loc,{#10000},12,3,12,8" -locations_default(#20160,#10000,12,3,12,8) +tokeninfo(#20159,8,#20001,58,":") +#20160=@"loc,{#10000},20,17,20,17" +locations_default(#20160,#10000,20,17,20,17) hasLocation(#20159,#20160) #20161=* -tokeninfo(#20161,8,#20001,36,"(") -#20162=@"loc,{#10000},12,9,12,9" -locations_default(#20162,#10000,12,9,12,9) +tokeninfo(#20161,6,#20001,59,"string") +#20162=@"loc,{#10000},20,19,20,24" +locations_default(#20162,#10000,20,19,20,24) hasLocation(#20161,#20162) #20163=* -tokeninfo(#20163,6,#20001,37,"x") -hasLocation(#20163,#20043) -#20164=* -tokeninfo(#20164,8,#20001,38,")") -#20165=@"loc,{#10000},12,11,12,11" -locations_default(#20165,#10000,12,11,12,11) -hasLocation(#20164,#20165) -#20166=* -tokeninfo(#20166,8,#20001,39,"{") -#20167=@"loc,{#10000},12,13,12,13" -locations_default(#20167,#10000,12,13,12,13) -hasLocation(#20166,#20167) -#20168=* -tokeninfo(#20168,7,#20001,40,"case") -#20169=@"loc,{#10000},13,3,13,6" -locations_default(#20169,#10000,13,3,13,6) -hasLocation(#20168,#20169) -#20170=* -tokeninfo(#20170,8,#20001,41,"(") -#20171=@"loc,{#10000},13,8,13,8" -locations_default(#20171,#10000,13,8,13,8) -hasLocation(#20170,#20171) -#20172=* -tokeninfo(#20172,3,#20001,42,"42") -hasLocation(#20172,#20050) +tokeninfo(#20163,8,#20001,60,"|}") +#20164=@"loc,{#10000},20,26,20,27" +locations_default(#20164,#10000,20,26,20,27) +hasLocation(#20163,#20164) +#20165=* +tokeninfo(#20165,6,#20001,61,"type") +#20166=@"loc,{#10000},22,1,22,4" +locations_default(#20166,#10000,22,1,22,4) +hasLocation(#20165,#20166) +#20167=* +tokeninfo(#20167,6,#20001,62,"T2") +#20168=@"loc,{#10000},22,6,22,7" +locations_default(#20168,#10000,22,6,22,7) +hasLocation(#20167,#20168) +#20169=* +tokeninfo(#20169,8,#20001,63,"=") +#20170=@"loc,{#10000},22,9,22,9" +locations_default(#20170,#10000,22,9,22,9) +hasLocation(#20169,#20170) +#20171=* +tokeninfo(#20171,8,#20001,64,"(") +#20172=@"loc,{#10000},22,11,22,11" +locations_default(#20172,#10000,22,11,22,11) +hasLocation(#20171,#20172) #20173=* -tokeninfo(#20173,8,#20001,43,")") -#20174=@"loc,{#10000},13,11,13,11" -locations_default(#20174,#10000,13,11,13,11) +tokeninfo(#20173,8,#20001,65,"|") +#20174=@"loc,{#10000},22,12,22,12" +locations_default(#20174,#10000,22,12,22,12) hasLocation(#20173,#20174) #20175=* -tokeninfo(#20175,8,#20001,44,":") -#20176=@"loc,{#10000},13,12,13,12" -locations_default(#20176,#10000,13,12,13,12) +tokeninfo(#20175,4,#20001,66,"""red""") +#20176=@"loc,{#10000},22,14,22,18" +locations_default(#20176,#10000,22,14,22,18) hasLocation(#20175,#20176) #20177=* -tokeninfo(#20177,8,#20001,45,"}") -#20178=@"loc,{#10000},14,3,14,3" -locations_default(#20178,#10000,14,3,14,3) +tokeninfo(#20177,8,#20001,67,"|") +#20178=@"loc,{#10000},22,20,22,20" +locations_default(#20178,#10000,22,20,22,20) hasLocation(#20177,#20178) #20179=* -tokeninfo(#20179,8,#20001,46,"}") -hasLocation(#20179,#20080) -#20180=* -tokeninfo(#20180,8,#20001,47,"@") -#20181=@"loc,{#10000},17,1,17,1" -locations_default(#20181,#10000,17,1,17,1) -hasLocation(#20180,#20181) -#20182=* -tokeninfo(#20182,6,#20001,48,"SomeDecorator") -#20183=@"loc,{#10000},17,2,17,14" -locations_default(#20183,#10000,17,2,17,14) -hasLocation(#20182,#20183) -#20184=* -tokeninfo(#20184,6,#20001,49,"type") -#20185=@"loc,{#10000},18,1,18,4" -locations_default(#20185,#10000,18,1,18,4) -hasLocation(#20184,#20185) -#20186=* -tokeninfo(#20186,6,#20001,50,"MyPoint") -#20187=@"loc,{#10000},18,6,18,12" -locations_default(#20187,#10000,18,6,18,12) -hasLocation(#20186,#20187) -#20188=* -tokeninfo(#20188,8,#20001,51,"=") -#20189=@"loc,{#10000},18,14,18,14" -locations_default(#20189,#10000,18,14,18,14) -hasLocation(#20188,#20189) -#20190=* -tokeninfo(#20190,6,#20001,52,"Point") -#20191=@"loc,{#10000},18,16,18,20" -locations_default(#20191,#10000,18,16,18,20) -hasLocation(#20190,#20191) -#20192=* -tokeninfo(#20192,6,#20001,53,"type") -#20193=@"loc,{#10000},20,1,20,4" -locations_default(#20193,#10000,20,1,20,4) -hasLocation(#20192,#20193) -#20194=* -tokeninfo(#20194,6,#20001,54,"T1") -#20195=@"loc,{#10000},20,6,20,7" -locations_default(#20195,#10000,20,6,20,7) -hasLocation(#20194,#20195) +tokeninfo(#20179,4,#20001,68,"""green""") +#20180=@"loc,{#10000},22,22,22,28" +locations_default(#20180,#10000,22,22,22,28) +hasLocation(#20179,#20180) +#20181=* +tokeninfo(#20181,8,#20001,69,"|") +#20182=@"loc,{#10000},22,30,22,30" +locations_default(#20182,#10000,22,30,22,30) +hasLocation(#20181,#20182) +#20183=* +tokeninfo(#20183,4,#20001,70,"""blue""") +#20184=@"loc,{#10000},22,32,22,37" +locations_default(#20184,#10000,22,32,22,37) +hasLocation(#20183,#20184) +#20185=* +tokeninfo(#20185,8,#20001,71,")") +#20186=@"loc,{#10000},22,38,22,38" +locations_default(#20186,#10000,22,38,22,38) +hasLocation(#20185,#20186) +#20187=* +tokeninfo(#20187,0,#20001,72,"") +#20188=@"loc,{#10000},23,1,23,0" +locations_default(#20188,#10000,23,1,23,0) +hasLocation(#20187,#20188) +toplevels(#20001,0) +#20189=@"loc,{#10000},1,1,23,0" +locations_default(#20189,#10000,1,1,23,0) +hasLocation(#20001,#20189) +#20190=@"var;{f};{#20000}" +variables(#20190,"f",#20000) +#20191=@"var;{A};{#20000}" +variables(#20191,"A",#20000) +#20192=@"local_type_name;{A};{#20000}" +local_type_names(#20192,"A",#20000) +#20193=* +stmts(#20193,26,#20001,0,"class A ... nt {}\n}") +#20194=@"loc,{#10000},6,1,9,1" +locations_default(#20194,#10000,6,1,9,1) +hasLocation(#20193,#20194) +stmtContainers(#20193,#20001) +#20195=* +exprs(#20195,78,#20193,0,"A") +hasLocation(#20195,#20072) +enclosingStmt(#20195,#20193) +exprContainers(#20195,#20001) +literals("A","A",#20195) +decl(#20195,#20191) +typedecl(#20195,#20192) #20196=* -tokeninfo(#20196,8,#20001,55,"=") -#20197=@"loc,{#10000},20,9,20,9" -locations_default(#20197,#10000,20,9,20,9) -hasLocation(#20196,#20197) -#20198=* -tokeninfo(#20198,8,#20001,56,"{|") -#20199=@"loc,{#10000},20,11,20,12" -locations_default(#20199,#10000,20,11,20,12) -hasLocation(#20198,#20199) +scopes(#20196,10) +scopenodes(#20193,#20196) +scopenesting(#20196,#20000) +#20197=* +properties(#20197,#20193,2,8,"x: T;") +#20198=@"loc,{#10000},7,3,7,7" +locations_default(#20198,#10000,7,3,7,7) +hasLocation(#20197,#20198) +#20199=* +exprs(#20199,0,#20197,0,"x") +hasLocation(#20199,#20082) +enclosingStmt(#20199,#20193) +exprContainers(#20199,#20001) +literals("x","x",#20199) #20200=* -tokeninfo(#20200,6,#20001,57,"bar") -#20201=@"loc,{#10000},20,14,20,16" -locations_default(#20201,#10000,20,14,20,16) -hasLocation(#20200,#20201) -#20202=* -tokeninfo(#20202,8,#20001,58,":") -#20203=@"loc,{#10000},20,17,20,17" -locations_default(#20203,#10000,20,17,20,17) -hasLocation(#20202,#20203) +#20201=* +properties(#20201,#20193,3,0,"m() : Point {}") +#20202=@"loc,{#10000},8,3,8,16" +locations_default(#20202,#10000,8,3,8,16) +hasLocation(#20201,#20202) +#20203=* +exprs(#20203,0,#20201,0,"m") +hasLocation(#20203,#20090) +enclosingStmt(#20203,#20193) +exprContainers(#20203,#20001) +literals("m","m",#20203) #20204=* -tokeninfo(#20204,6,#20001,59,"string") -#20205=@"loc,{#10000},20,19,20,24" -locations_default(#20205,#10000,20,19,20,24) +exprs(#20204,9,#20201,1,"() : Point {}") +#20205=@"loc,{#10000},8,4,8,16" +locations_default(#20205,#10000,8,4,8,16) hasLocation(#20204,#20205) +enclosingStmt(#20204,#20193) +exprContainers(#20204,#20001) #20206=* -tokeninfo(#20206,8,#20001,60,"|}") -#20207=@"loc,{#10000},20,26,20,27" -locations_default(#20207,#10000,20,26,20,27) -hasLocation(#20206,#20207) +scopes(#20206,1) +scopenodes(#20204,#20206) +scopenesting(#20206,#20196) +#20207=@"var;{arguments};{#20206}" +variables(#20207,"arguments",#20206) +isArgumentsObject(#20207) #20208=* -tokeninfo(#20208,6,#20001,61,"type") -#20209=@"loc,{#10000},22,1,22,4" -locations_default(#20209,#10000,22,1,22,4) +stmts(#20208,1,#20204,-2,"{}") +#20209=@"loc,{#10000},8,15,8,16" +locations_default(#20209,#10000,8,15,8,16) hasLocation(#20208,#20209) +stmtContainers(#20208,#20204) +isMethod(#20201) #20210=* -tokeninfo(#20210,6,#20001,62,"T2") -#20211=@"loc,{#10000},22,6,22,7" -locations_default(#20211,#10000,22,6,22,7) +properties(#20210,#20193,4,0,"constructor() {}") +#20211=@"loc,{#10000},6,12,6,11" +locations_default(#20211,#10000,6,12,6,11) hasLocation(#20210,#20211) #20212=* -tokeninfo(#20212,8,#20001,63,"=") -#20213=@"loc,{#10000},22,9,22,9" -locations_default(#20213,#10000,22,9,22,9) -hasLocation(#20212,#20213) -#20214=* -tokeninfo(#20214,8,#20001,64,"(") -#20215=@"loc,{#10000},22,11,22,11" -locations_default(#20215,#10000,22,11,22,11) -hasLocation(#20214,#20215) +exprs(#20212,0,#20210,0,"constructor") +hasLocation(#20212,#20211) +enclosingStmt(#20212,#20193) +exprContainers(#20212,#20001) +literals("constructor","constructor",#20212) +exprs(#20200,9,#20210,1,"() {}") +hasLocation(#20200,#20211) +enclosingStmt(#20200,#20193) +exprContainers(#20200,#20001) +#20213=* +scopes(#20213,1) +scopenodes(#20200,#20213) +scopenesting(#20213,#20196) +#20214=@"var;{arguments};{#20213}" +variables(#20214,"arguments",#20213) +isArgumentsObject(#20214) +#20215=* +stmts(#20215,1,#20200,-2,"{}") +hasLocation(#20215,#20211) +stmtContainers(#20215,#20200) +isMethod(#20210) #20216=* -tokeninfo(#20216,8,#20001,65,"|") -#20217=@"loc,{#10000},22,12,22,12" -locations_default(#20217,#10000,22,12,22,12) +stmts(#20216,17,#20001,1,"functio ... :\n }\n}") +#20217=@"loc,{#10000},11,1,15,1" +locations_default(#20217,#10000,11,1,15,1) hasLocation(#20216,#20217) +stmtContainers(#20216,#20001) #20218=* -tokeninfo(#20218,4,#20001,66,"""red""") -#20219=@"loc,{#10000},22,14,22,18" -locations_default(#20219,#10000,22,14,22,18) -hasLocation(#20218,#20219) -#20220=* -tokeninfo(#20220,8,#20001,67,"|") -#20221=@"loc,{#10000},22,20,22,20" -locations_default(#20221,#10000,22,20,22,20) -hasLocation(#20220,#20221) -#20222=* -tokeninfo(#20222,4,#20001,68,"""green""") -#20223=@"loc,{#10000},22,22,22,28" -locations_default(#20223,#10000,22,22,22,28) -hasLocation(#20222,#20223) -#20224=* -tokeninfo(#20224,8,#20001,69,"|") -#20225=@"loc,{#10000},22,30,22,30" -locations_default(#20225,#10000,22,30,22,30) -hasLocation(#20224,#20225) -#20226=* -tokeninfo(#20226,4,#20001,70,"""blue""") -#20227=@"loc,{#10000},22,32,22,37" -locations_default(#20227,#10000,22,32,22,37) -hasLocation(#20226,#20227) -#20228=* -tokeninfo(#20228,8,#20001,71,")") -#20229=@"loc,{#10000},22,38,22,38" -locations_default(#20229,#10000,22,38,22,38) -hasLocation(#20228,#20229) -#20230=* -tokeninfo(#20230,0,#20001,72,"") -#20231=@"loc,{#10000},23,1,23,0" -locations_default(#20231,#10000,23,1,23,0) -hasLocation(#20230,#20231) +exprs(#20218,78,#20216,-1,"f") +hasLocation(#20218,#20107) +exprContainers(#20218,#20216) +literals("f","f",#20218) +decl(#20218,#20190) +#20219=* +scopes(#20219,1) +scopenodes(#20216,#20219) +scopenesting(#20219,#20000) +#20220=@"var;{arguments};{#20219}" +variables(#20220,"arguments",#20219) +isArgumentsObject(#20220) +#20221=* +stmts(#20221,1,#20216,-2,"{\n swi ... :\n }\n}") +#20222=@"loc,{#10000},11,14,15,1" +locations_default(#20222,#10000,11,14,15,1) +hasLocation(#20221,#20222) +stmtContainers(#20221,#20216) +#20223=* +stmts(#20223,8,#20221,0,"switch( ... 2):\n }") +#20224=@"loc,{#10000},12,3,14,3" +locations_default(#20224,#10000,12,3,14,3) +hasLocation(#20223,#20224) +stmtContainers(#20223,#20216) +#20225=* +exprs(#20225,79,#20223,-1,"x") +hasLocation(#20225,#20119) +enclosingStmt(#20225,#20223) +exprContainers(#20225,#20216) +literals("x","x",#20225) +#20226=@"var;{x};{#20000}" +variables(#20226,"x",#20000) +bind(#20225,#20226) +#20227=* +stmts(#20227,19,#20223,0,"case (42):") +#20228=@"loc,{#10000},13,3,13,12" +locations_default(#20228,#10000,13,3,13,12) +hasLocation(#20227,#20228) +stmtContainers(#20227,#20216) +#20229=* +exprs(#20229,63,#20227,-1,"(42)") +#20230=@"loc,{#10000},13,8,13,11" +locations_default(#20230,#10000,13,8,13,11) +hasLocation(#20229,#20230) +enclosingStmt(#20229,#20227) +exprContainers(#20229,#20216) +#20231=* +exprs(#20231,3,#20229,0,"42") +hasLocation(#20231,#20129) +enclosingStmt(#20231,#20227) +exprContainers(#20231,#20216) +literals("42","42",#20231) #20232=* entry_cfg_node(#20232,#20001) #20233=@"loc,{#10000},1,1,1,0" @@ -676,56 +673,56 @@ locations_default(#20233,#10000,1,1,1,0) hasLocation(#20232,#20233) #20234=* exit_cfg_node(#20234,#20001) -hasLocation(#20234,#20231) -successor(#20032,#20234) +hasLocation(#20234,#20188) +successor(#20216,#20234) #20235=* -entry_cfg_node(#20235,#20032) +entry_cfg_node(#20235,#20216) #20236=@"loc,{#10000},11,1,11,0" locations_default(#20236,#10000,11,1,11,0) hasLocation(#20235,#20236) #20237=* -exit_cfg_node(#20237,#20032) +exit_cfg_node(#20237,#20216) #20238=@"loc,{#10000},15,2,15,1" locations_default(#20238,#10000,15,2,15,1) hasLocation(#20237,#20238) -successor(#20038,#20040) -successor(#20040,#20042) -successor(#20042,#20045) -successor(#20045,#20047) -successor(#20047,#20049) -successor(#20049,#20237) -successor(#20235,#20038) -successor(#20013,#20011) -successor(#20015,#20026) +successor(#20221,#20223) +successor(#20223,#20225) +successor(#20225,#20227) +successor(#20227,#20229) +successor(#20229,#20231) +successor(#20231,#20237) +successor(#20235,#20221) +successor(#20199,#20197) +successor(#20200,#20210) #20239=* -entry_cfg_node(#20239,#20015) -hasLocation(#20239,#20027) -successor(#20011,#20031) +entry_cfg_node(#20239,#20200) +hasLocation(#20239,#20211) +successor(#20197,#20215) #20240=* -exit_cfg_node(#20240,#20015) -hasLocation(#20240,#20027) -successor(#20031,#20240) -successor(#20239,#20013) -successor(#20028,#20015) -successor(#20026,#20006) -successor(#20020,#20016) +exit_cfg_node(#20240,#20200) +hasLocation(#20240,#20211) +successor(#20215,#20240) +successor(#20239,#20199) +successor(#20212,#20200) +successor(#20210,#20193) +successor(#20204,#20201) #20241=* -entry_cfg_node(#20241,#20020) +entry_cfg_node(#20241,#20204) #20242=@"loc,{#10000},8,4,8,3" locations_default(#20242,#10000,8,4,8,3) hasLocation(#20241,#20242) #20243=* -exit_cfg_node(#20243,#20020) +exit_cfg_node(#20243,#20204) #20244=@"loc,{#10000},8,17,8,16" locations_default(#20244,#10000,8,17,8,16) hasLocation(#20243,#20244) -successor(#20024,#20243) -successor(#20241,#20024) -successor(#20018,#20020) -successor(#20016,#20028) -successor(#20008,#20018) -successor(#20006,#20032) -successor(#20034,#20008) -successor(#20232,#20034) +successor(#20208,#20243) +successor(#20241,#20208) +successor(#20203,#20204) +successor(#20201,#20212) +successor(#20195,#20203) +successor(#20193,#20216) +successor(#20218,#20195) +successor(#20232,#20218) numlines(#10000,22,17,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/variance.js.trap b/javascript/extractor/tests/flow/output/trap/variance.js.trap index c3d2ff68ad7..e032b8259d1 100644 --- a/javascript/extractor/tests/flow/output/trap/variance.js.trap +++ b/javascript/extractor/tests/flow/output/trap/variance.js.trap @@ -9,224 +9,224 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,7,1" -locations_default(#20002,#10000,1,1,7,1) -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_type_name;{Foo};{#20003}" -local_type_names(#20005,"Foo",#20003) +#20002=* +lines(#20002,#20001,"export type PackagerAsset = {"," +") +#20003=@"loc,{#10000},1,1,1,29" +locations_default(#20003,#10000,1,1,1,29) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," +__packager_asset: boolean,"," +") +#20005=@"loc,{#10000},2,1,2,29" +locations_default(#20005,#10000,2,1,2,29) +hasLocation(#20004,#20005) +indentation(#10000,2," ",2) #20006=* -stmts(#20006,26,#20001,0,"class F ... : int\n}") -#20007=@"loc,{#10000},5,1,7,1" -locations_default(#20007,#10000,5,1,7,1) +lines(#20006,#20001,"};"," +") +#20007=@"loc,{#10000},3,1,3,2" +locations_default(#20007,#10000,3,1,3,2) hasLocation(#20006,#20007) -stmtContainers(#20006,#20001) #20008=* -exprs(#20008,78,#20006,0,"Foo") -#20009=@"loc,{#10000},5,7,5,9" -locations_default(#20009,#10000,5,7,5,9) +lines(#20008,#20001,""," +") +#20009=@"loc,{#10000},4,1,4,0" +locations_default(#20009,#10000,4,1,4,0) hasLocation(#20008,#20009) -enclosingStmt(#20008,#20006) -exprContainers(#20008,#20001) -literals("Foo","Foo",#20008) -decl(#20008,#20004) -typedecl(#20008,#20005) #20010=* -scopes(#20010,10) -scopenodes(#20006,#20010) -scopenesting(#20010,#20003) -#20011=* -properties(#20011,#20006,2,8,"+x: int") -#20012=@"loc,{#10000},6,3,6,9" -locations_default(#20012,#10000,6,3,6,9) -hasLocation(#20011,#20012) -#20013=* -exprs(#20013,0,#20011,0,"x") -#20014=@"loc,{#10000},6,4,6,4" -locations_default(#20014,#10000,6,4,6,4) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20006) -exprContainers(#20013,#20001) -literals("x","x",#20013) -#20015=* +lines(#20010,#20001,"class Foo {"," +") +#20011=@"loc,{#10000},5,1,5,11" +locations_default(#20011,#10000,5,1,5,11) +hasLocation(#20010,#20011) +#20012=* +lines(#20012,#20001," +x: int"," +") +#20013=@"loc,{#10000},6,1,6,9" +locations_default(#20013,#10000,6,1,6,9) +hasLocation(#20012,#20013) +indentation(#10000,6," ",2) +#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=* -properties(#20016,#20006,3,0,"constructor() {}") -#20017=@"loc,{#10000},5,11,5,10" -locations_default(#20017,#10000,5,11,5,10) +tokeninfo(#20016,7,#20001,0,"export") +#20017=@"loc,{#10000},1,1,1,6" +locations_default(#20017,#10000,1,1,1,6) hasLocation(#20016,#20017) #20018=* -exprs(#20018,0,#20016,0,"constructor") -hasLocation(#20018,#20017) -enclosingStmt(#20018,#20006) -exprContainers(#20018,#20001) -literals("constructor","constructor",#20018) -exprs(#20015,9,#20016,1,"() {}") -hasLocation(#20015,#20017) -enclosingStmt(#20015,#20006) -exprContainers(#20015,#20001) -#20019=* -scopes(#20019,1) -scopenodes(#20015,#20019) -scopenesting(#20019,#20010) -#20020=@"var;{arguments};{#20019}" -variables(#20020,"arguments",#20019) -isArgumentsObject(#20020) -#20021=* -stmts(#20021,1,#20015,-2,"{}") -hasLocation(#20021,#20017) -stmtContainers(#20021,#20015) -numlines(#20015,1,0,0) -isMethod(#20016) +tokeninfo(#20018,6,#20001,1,"type") +#20019=@"loc,{#10000},1,8,1,11" +locations_default(#20019,#10000,1,8,1,11) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,6,#20001,2,"PackagerAsset") +#20021=@"loc,{#10000},1,13,1,25" +locations_default(#20021,#10000,1,13,1,25) +hasLocation(#20020,#20021) #20022=* -lines(#20022,#20001,"export type PackagerAsset = {"," -") -#20023=@"loc,{#10000},1,1,1,29" -locations_default(#20023,#10000,1,1,1,29) +tokeninfo(#20022,8,#20001,3,"=") +#20023=@"loc,{#10000},1,27,1,27" +locations_default(#20023,#10000,1,27,1,27) hasLocation(#20022,#20023) #20024=* -lines(#20024,#20001," +__packager_asset: boolean,"," -") -#20025=@"loc,{#10000},2,1,2,29" -locations_default(#20025,#10000,2,1,2,29) +tokeninfo(#20024,8,#20001,4,"{") +#20025=@"loc,{#10000},1,29,1,29" +locations_default(#20025,#10000,1,29,1,29) hasLocation(#20024,#20025) -indentation(#10000,2," ",2) #20026=* -lines(#20026,#20001,"};"," -") -#20027=@"loc,{#10000},3,1,3,2" -locations_default(#20027,#10000,3,1,3,2) +tokeninfo(#20026,8,#20001,5,"+") +#20027=@"loc,{#10000},2,3,2,3" +locations_default(#20027,#10000,2,3,2,3) hasLocation(#20026,#20027) #20028=* -lines(#20028,#20001,""," -") -#20029=@"loc,{#10000},4,1,4,0" -locations_default(#20029,#10000,4,1,4,0) +tokeninfo(#20028,6,#20001,6,"__packager_asset") +#20029=@"loc,{#10000},2,4,2,19" +locations_default(#20029,#10000,2,4,2,19) hasLocation(#20028,#20029) #20030=* -lines(#20030,#20001,"class Foo {"," -") -#20031=@"loc,{#10000},5,1,5,11" -locations_default(#20031,#10000,5,1,5,11) +tokeninfo(#20030,8,#20001,7,":") +#20031=@"loc,{#10000},2,20,2,20" +locations_default(#20031,#10000,2,20,2,20) hasLocation(#20030,#20031) #20032=* -lines(#20032,#20001," +x: int"," -") -#20033=@"loc,{#10000},6,1,6,9" -locations_default(#20033,#10000,6,1,6,9) +tokeninfo(#20032,6,#20001,8,"boolean") +#20033=@"loc,{#10000},2,22,2,28" +locations_default(#20033,#10000,2,22,2,28) hasLocation(#20032,#20033) -indentation(#10000,6," ",2) #20034=* -lines(#20034,#20001,"}","") -#20035=@"loc,{#10000},7,1,7,1" -locations_default(#20035,#10000,7,1,7,1) +tokeninfo(#20034,8,#20001,9,",") +#20035=@"loc,{#10000},2,29,2,29" +locations_default(#20035,#10000,2,29,2,29) hasLocation(#20034,#20035) -numlines(#20001,7,6,0) #20036=* -tokeninfo(#20036,7,#20001,0,"export") -#20037=@"loc,{#10000},1,1,1,6" -locations_default(#20037,#10000,1,1,1,6) +tokeninfo(#20036,8,#20001,10,"}") +#20037=@"loc,{#10000},3,1,3,1" +locations_default(#20037,#10000,3,1,3,1) hasLocation(#20036,#20037) #20038=* -tokeninfo(#20038,6,#20001,1,"type") -#20039=@"loc,{#10000},1,8,1,11" -locations_default(#20039,#10000,1,8,1,11) +tokeninfo(#20038,8,#20001,11,";") +#20039=@"loc,{#10000},3,2,3,2" +locations_default(#20039,#10000,3,2,3,2) hasLocation(#20038,#20039) #20040=* -tokeninfo(#20040,6,#20001,2,"PackagerAsset") -#20041=@"loc,{#10000},1,13,1,25" -locations_default(#20041,#10000,1,13,1,25) +tokeninfo(#20040,7,#20001,12,"class") +#20041=@"loc,{#10000},5,1,5,5" +locations_default(#20041,#10000,5,1,5,5) hasLocation(#20040,#20041) #20042=* -tokeninfo(#20042,8,#20001,3,"=") -#20043=@"loc,{#10000},1,27,1,27" -locations_default(#20043,#10000,1,27,1,27) +tokeninfo(#20042,6,#20001,13,"Foo") +#20043=@"loc,{#10000},5,7,5,9" +locations_default(#20043,#10000,5,7,5,9) hasLocation(#20042,#20043) #20044=* -tokeninfo(#20044,8,#20001,4,"{") -#20045=@"loc,{#10000},1,29,1,29" -locations_default(#20045,#10000,1,29,1,29) +tokeninfo(#20044,8,#20001,14,"{") +#20045=@"loc,{#10000},5,11,5,11" +locations_default(#20045,#10000,5,11,5,11) hasLocation(#20044,#20045) #20046=* -tokeninfo(#20046,8,#20001,5,"+") -#20047=@"loc,{#10000},2,3,2,3" -locations_default(#20047,#10000,2,3,2,3) +tokeninfo(#20046,8,#20001,15,"+") +#20047=@"loc,{#10000},6,3,6,3" +locations_default(#20047,#10000,6,3,6,3) hasLocation(#20046,#20047) #20048=* -tokeninfo(#20048,6,#20001,6,"__packager_asset") -#20049=@"loc,{#10000},2,4,2,19" -locations_default(#20049,#10000,2,4,2,19) +tokeninfo(#20048,6,#20001,16,"x") +#20049=@"loc,{#10000},6,4,6,4" +locations_default(#20049,#10000,6,4,6,4) hasLocation(#20048,#20049) #20050=* -tokeninfo(#20050,8,#20001,7,":") -#20051=@"loc,{#10000},2,20,2,20" -locations_default(#20051,#10000,2,20,2,20) +tokeninfo(#20050,8,#20001,17,":") +#20051=@"loc,{#10000},6,5,6,5" +locations_default(#20051,#10000,6,5,6,5) hasLocation(#20050,#20051) #20052=* -tokeninfo(#20052,6,#20001,8,"boolean") -#20053=@"loc,{#10000},2,22,2,28" -locations_default(#20053,#10000,2,22,2,28) +tokeninfo(#20052,6,#20001,18,"int") +#20053=@"loc,{#10000},6,7,6,9" +locations_default(#20053,#10000,6,7,6,9) hasLocation(#20052,#20053) #20054=* -tokeninfo(#20054,8,#20001,9,",") -#20055=@"loc,{#10000},2,29,2,29" -locations_default(#20055,#10000,2,29,2,29) -hasLocation(#20054,#20055) -#20056=* -tokeninfo(#20056,8,#20001,10,"}") -#20057=@"loc,{#10000},3,1,3,1" -locations_default(#20057,#10000,3,1,3,1) -hasLocation(#20056,#20057) -#20058=* -tokeninfo(#20058,8,#20001,11,";") -#20059=@"loc,{#10000},3,2,3,2" -locations_default(#20059,#10000,3,2,3,2) -hasLocation(#20058,#20059) -#20060=* -tokeninfo(#20060,7,#20001,12,"class") -#20061=@"loc,{#10000},5,1,5,5" -locations_default(#20061,#10000,5,1,5,5) -hasLocation(#20060,#20061) -#20062=* -tokeninfo(#20062,6,#20001,13,"Foo") -hasLocation(#20062,#20009) +tokeninfo(#20054,8,#20001,19,"}") +hasLocation(#20054,#20015) +#20055=* +tokeninfo(#20055,0,#20001,20,"") +#20056=@"loc,{#10000},7,2,7,1" +locations_default(#20056,#10000,7,2,7,1) +hasLocation(#20055,#20056) +toplevels(#20001,0) +#20057=@"loc,{#10000},1,1,7,1" +locations_default(#20057,#10000,1,1,7,1) +hasLocation(#20001,#20057) +#20058=@"module;{#10000},1,1" +scopes(#20058,3) +scopenodes(#20001,#20058) +scopenesting(#20058,#20000) +isModule(#20001) +isES2015Module(#20001) +#20059=@"var;{Foo};{#20058}" +variables(#20059,"Foo",#20058) +#20060=@"local_type_name;{Foo};{#20058}" +local_type_names(#20060,"Foo",#20058) +#20061=* +stmts(#20061,26,#20001,0,"class F ... : int\n}") +#20062=@"loc,{#10000},5,1,7,1" +locations_default(#20062,#10000,5,1,7,1) +hasLocation(#20061,#20062) +stmtContainers(#20061,#20001) #20063=* -tokeninfo(#20063,8,#20001,14,"{") -#20064=@"loc,{#10000},5,11,5,11" -locations_default(#20064,#10000,5,11,5,11) -hasLocation(#20063,#20064) +exprs(#20063,78,#20061,0,"Foo") +hasLocation(#20063,#20043) +enclosingStmt(#20063,#20061) +exprContainers(#20063,#20001) +literals("Foo","Foo",#20063) +decl(#20063,#20059) +typedecl(#20063,#20060) +#20064=* +scopes(#20064,10) +scopenodes(#20061,#20064) +scopenesting(#20064,#20058) #20065=* -tokeninfo(#20065,8,#20001,15,"+") -#20066=@"loc,{#10000},6,3,6,3" -locations_default(#20066,#10000,6,3,6,3) +properties(#20065,#20061,2,8,"+x: int") +#20066=@"loc,{#10000},6,3,6,9" +locations_default(#20066,#10000,6,3,6,9) hasLocation(#20065,#20066) #20067=* -tokeninfo(#20067,6,#20001,16,"x") -hasLocation(#20067,#20014) +exprs(#20067,0,#20065,0,"x") +hasLocation(#20067,#20049) +enclosingStmt(#20067,#20061) +exprContainers(#20067,#20001) +literals("x","x",#20067) #20068=* -tokeninfo(#20068,8,#20001,17,":") -#20069=@"loc,{#10000},6,5,6,5" -locations_default(#20069,#10000,6,5,6,5) -hasLocation(#20068,#20069) -#20070=* -tokeninfo(#20070,6,#20001,18,"int") -#20071=@"loc,{#10000},6,7,6,9" -locations_default(#20071,#10000,6,7,6,9) -hasLocation(#20070,#20071) +#20069=* +properties(#20069,#20061,3,0,"constructor() {}") +#20070=@"loc,{#10000},5,11,5,10" +locations_default(#20070,#10000,5,11,5,10) +hasLocation(#20069,#20070) +#20071=* +exprs(#20071,0,#20069,0,"constructor") +hasLocation(#20071,#20070) +enclosingStmt(#20071,#20061) +exprContainers(#20071,#20001) +literals("constructor","constructor",#20071) +exprs(#20068,9,#20069,1,"() {}") +hasLocation(#20068,#20070) +enclosingStmt(#20068,#20061) +exprContainers(#20068,#20001) #20072=* -tokeninfo(#20072,8,#20001,19,"}") -hasLocation(#20072,#20035) -#20073=* -tokeninfo(#20073,0,#20001,20,"") -#20074=@"loc,{#10000},7,2,7,1" -locations_default(#20074,#10000,7,2,7,1) -hasLocation(#20073,#20074) +scopes(#20072,1) +scopenodes(#20068,#20072) +scopenesting(#20072,#20064) +#20073=@"var;{arguments};{#20072}" +variables(#20073,"arguments",#20072) +isArgumentsObject(#20073) +#20074=* +stmts(#20074,1,#20068,-2,"{}") +hasLocation(#20074,#20070) +stmtContainers(#20074,#20068) +isMethod(#20069) #20075=* entry_cfg_node(#20075,#20001) #20076=@"loc,{#10000},1,1,1,0" @@ -234,22 +234,22 @@ locations_default(#20076,#10000,1,1,1,0) hasLocation(#20075,#20076) #20077=* exit_cfg_node(#20077,#20001) -hasLocation(#20077,#20074) -successor(#20013,#20011) -successor(#20015,#20016) +hasLocation(#20077,#20056) +successor(#20067,#20065) +successor(#20068,#20069) #20078=* -entry_cfg_node(#20078,#20015) -hasLocation(#20078,#20017) -successor(#20011,#20021) +entry_cfg_node(#20078,#20068) +hasLocation(#20078,#20070) +successor(#20065,#20074) #20079=* -exit_cfg_node(#20079,#20015) -hasLocation(#20079,#20017) -successor(#20021,#20079) -successor(#20078,#20013) -successor(#20018,#20015) -successor(#20016,#20006) -successor(#20008,#20018) -successor(#20006,#20077) -successor(#20075,#20008) +exit_cfg_node(#20079,#20068) +hasLocation(#20079,#20070) +successor(#20074,#20079) +successor(#20078,#20067) +successor(#20071,#20068) +successor(#20069,#20061) +successor(#20063,#20071) +successor(#20061,#20077) +successor(#20075,#20063) numlines(#10000,7,6,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/functionbind/output/trap/tst.js.trap b/javascript/extractor/tests/functionbind/output/trap/tst.js.trap index 2084554fde5..2d68be90913 100644 --- a/javascript/extractor/tests/functionbind/output/trap/tst.js.trap +++ b/javascript/extractor/tests/functionbind/output/trap/tst.js.trap @@ -9,442 +9,442 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,5,21" -locations_default(#20002,#10000,1,1,5,21) -hasLocation(#20001,#20002) -#20003=@"var;{hasOwnProp};{#20000}" -variables(#20003,"hasOwnProp",#20000) -#20004=@"var;{obj};{#20000}" -variables(#20004,"obj",#20000) -#20005=* -stmts(#20005,2,#20001,0,"process ... e.log);") -#20006=@"loc,{#10000},1,1,1,32" -locations_default(#20006,#10000,1,1,1,32) -hasLocation(#20005,#20006) -stmtContainers(#20005,#20001) -#20007=* -exprs(#20007,13,#20005,0,"process ... le.log)") -#20008=@"loc,{#10000},1,1,1,31" -locations_default(#20008,#10000,1,1,1,31) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20005) -exprContainers(#20007,#20001) -#20009=* -exprs(#20009,14,#20007,-1,"process.argv.map") -#20010=@"loc,{#10000},1,1,1,16" -locations_default(#20010,#10000,1,1,1,16) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20005) -exprContainers(#20009,#20001) -#20011=* -exprs(#20011,14,#20009,0,"process.argv") -#20012=@"loc,{#10000},1,1,1,12" -locations_default(#20012,#10000,1,1,1,12) -hasLocation(#20011,#20012) -enclosingStmt(#20011,#20005) -exprContainers(#20011,#20001) -#20013=* -exprs(#20013,79,#20011,0,"process") -#20014=@"loc,{#10000},1,1,1,7" -locations_default(#20014,#10000,1,1,1,7) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20005) -exprContainers(#20013,#20001) -literals("process","process",#20013) -#20015=@"var;{process};{#20000}" -variables(#20015,"process",#20000) -bind(#20013,#20015) +#20002=* +lines(#20002,#20001,"process.argv.map(::console.log);"," +") +#20003=@"loc,{#10000},1,1,1,32" +locations_default(#20003,#10000,1,1,1,32) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,""," +") +#20005=@"loc,{#10000},2,1,2,0" +locations_default(#20005,#10000,2,1,2,0) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"let hasOwnProp = Object.prototype.hasOwnProperty;"," +") +#20007=@"loc,{#10000},3,1,3,49" +locations_default(#20007,#10000,3,1,3,49) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001,"let obj = { x: 100 };"," +") +#20009=@"loc,{#10000},4,1,4,21" +locations_default(#20009,#10000,4,1,4,21) +hasLocation(#20008,#20009) +#20010=* +lines(#20010,#20001,"obj::hasOwnProp(""x"");","") +#20011=@"loc,{#10000},5,1,5,21" +locations_default(#20011,#10000,5,1,5,21) +hasLocation(#20010,#20011) +numlines(#20001,5,4,0) +#20012=* +tokeninfo(#20012,6,#20001,0,"process") +#20013=@"loc,{#10000},1,1,1,7" +locations_default(#20013,#10000,1,1,1,7) +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=* -exprs(#20016,0,#20011,1,"argv") +tokeninfo(#20016,6,#20001,2,"argv") #20017=@"loc,{#10000},1,9,1,12" locations_default(#20017,#10000,1,9,1,12) hasLocation(#20016,#20017) -enclosingStmt(#20016,#20005) -exprContainers(#20016,#20001) -literals("argv","argv",#20016) #20018=* -exprs(#20018,0,#20009,1,"map") -#20019=@"loc,{#10000},1,14,1,16" -locations_default(#20019,#10000,1,14,1,16) +tokeninfo(#20018,8,#20001,3,".") +#20019=@"loc,{#10000},1,13,1,13" +locations_default(#20019,#10000,1,13,1,13) hasLocation(#20018,#20019) -enclosingStmt(#20018,#20005) -exprContainers(#20018,#20001) -literals("map","map",#20018) #20020=* -exprs(#20020,97,#20007,0,"::console.log") -#20021=@"loc,{#10000},1,18,1,30" -locations_default(#20021,#10000,1,18,1,30) +tokeninfo(#20020,6,#20001,4,"map") +#20021=@"loc,{#10000},1,14,1,16" +locations_default(#20021,#10000,1,14,1,16) hasLocation(#20020,#20021) -enclosingStmt(#20020,#20005) -exprContainers(#20020,#20001) #20022=* -exprs(#20022,14,#20020,1,"console.log") -#20023=@"loc,{#10000},1,20,1,30" -locations_default(#20023,#10000,1,20,1,30) +tokeninfo(#20022,8,#20001,5,"(") +#20023=@"loc,{#10000},1,17,1,17" +locations_default(#20023,#10000,1,17,1,17) hasLocation(#20022,#20023) -enclosingStmt(#20022,#20005) -exprContainers(#20022,#20001) #20024=* -exprs(#20024,79,#20022,0,"console") -#20025=@"loc,{#10000},1,20,1,26" -locations_default(#20025,#10000,1,20,1,26) +tokeninfo(#20024,8,#20001,6,"::") +#20025=@"loc,{#10000},1,18,1,19" +locations_default(#20025,#10000,1,18,1,19) hasLocation(#20024,#20025) -enclosingStmt(#20024,#20005) -exprContainers(#20024,#20001) -literals("console","console",#20024) -#20026=@"var;{console};{#20000}" -variables(#20026,"console",#20000) -bind(#20024,#20026) -#20027=* -exprs(#20027,0,#20022,1,"log") -#20028=@"loc,{#10000},1,28,1,30" -locations_default(#20028,#10000,1,28,1,30) -hasLocation(#20027,#20028) -enclosingStmt(#20027,#20005) -exprContainers(#20027,#20001) -literals("log","log",#20027) -#20029=* -stmts(#20029,23,#20001,1,"let has ... operty;") -#20030=@"loc,{#10000},3,1,3,49" -locations_default(#20030,#10000,3,1,3,49) -hasLocation(#20029,#20030) -stmtContainers(#20029,#20001) -#20031=* -exprs(#20031,64,#20029,0,"hasOwnP ... roperty") -#20032=@"loc,{#10000},3,5,3,48" -locations_default(#20032,#10000,3,5,3,48) -hasLocation(#20031,#20032) -enclosingStmt(#20031,#20029) -exprContainers(#20031,#20001) -#20033=* -exprs(#20033,78,#20031,0,"hasOwnProp") -#20034=@"loc,{#10000},3,5,3,14" -locations_default(#20034,#10000,3,5,3,14) -hasLocation(#20033,#20034) -enclosingStmt(#20033,#20029) -exprContainers(#20033,#20001) -literals("hasOwnProp","hasOwnProp",#20033) -decl(#20033,#20003) -#20035=* -exprs(#20035,14,#20031,1,"Object. ... roperty") -#20036=@"loc,{#10000},3,18,3,48" -locations_default(#20036,#10000,3,18,3,48) -hasLocation(#20035,#20036) -enclosingStmt(#20035,#20029) -exprContainers(#20035,#20001) -#20037=* -exprs(#20037,14,#20035,0,"Object.prototype") -#20038=@"loc,{#10000},3,18,3,33" -locations_default(#20038,#10000,3,18,3,33) -hasLocation(#20037,#20038) -enclosingStmt(#20037,#20029) -exprContainers(#20037,#20001) -#20039=* -exprs(#20039,79,#20037,0,"Object") -#20040=@"loc,{#10000},3,18,3,23" -locations_default(#20040,#10000,3,18,3,23) -hasLocation(#20039,#20040) -enclosingStmt(#20039,#20029) -exprContainers(#20039,#20001) -literals("Object","Object",#20039) -#20041=@"var;{Object};{#20000}" -variables(#20041,"Object",#20000) -bind(#20039,#20041) +#20026=* +tokeninfo(#20026,6,#20001,7,"console") +#20027=@"loc,{#10000},1,20,1,26" +locations_default(#20027,#10000,1,20,1,26) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,8,".") +#20029=@"loc,{#10000},1,27,1,27" +locations_default(#20029,#10000,1,27,1,27) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,6,#20001,9,"log") +#20031=@"loc,{#10000},1,28,1,30" +locations_default(#20031,#10000,1,28,1,30) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,10,")") +#20033=@"loc,{#10000},1,31,1,31" +locations_default(#20033,#10000,1,31,1,31) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,11,";") +#20035=@"loc,{#10000},1,32,1,32" +locations_default(#20035,#10000,1,32,1,32) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,7,#20001,12,"let") +#20037=@"loc,{#10000},3,1,3,3" +locations_default(#20037,#10000,3,1,3,3) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,6,#20001,13,"hasOwnProp") +#20039=@"loc,{#10000},3,5,3,14" +locations_default(#20039,#10000,3,5,3,14) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,14,"=") +#20041=@"loc,{#10000},3,16,3,16" +locations_default(#20041,#10000,3,16,3,16) +hasLocation(#20040,#20041) #20042=* -exprs(#20042,0,#20037,1,"prototype") -#20043=@"loc,{#10000},3,25,3,33" -locations_default(#20043,#10000,3,25,3,33) +tokeninfo(#20042,6,#20001,15,"Object") +#20043=@"loc,{#10000},3,18,3,23" +locations_default(#20043,#10000,3,18,3,23) hasLocation(#20042,#20043) -enclosingStmt(#20042,#20029) -exprContainers(#20042,#20001) -literals("prototype","prototype",#20042) #20044=* -exprs(#20044,0,#20035,1,"hasOwnProperty") -#20045=@"loc,{#10000},3,35,3,48" -locations_default(#20045,#10000,3,35,3,48) +tokeninfo(#20044,8,#20001,16,".") +#20045=@"loc,{#10000},3,24,3,24" +locations_default(#20045,#10000,3,24,3,24) hasLocation(#20044,#20045) -enclosingStmt(#20044,#20029) -exprContainers(#20044,#20001) -literals("hasOwnProperty","hasOwnProperty",#20044) #20046=* -stmts(#20046,23,#20001,2,"let obj ... 100 };") -#20047=@"loc,{#10000},4,1,4,21" -locations_default(#20047,#10000,4,1,4,21) +tokeninfo(#20046,6,#20001,17,"prototype") +#20047=@"loc,{#10000},3,25,3,33" +locations_default(#20047,#10000,3,25,3,33) hasLocation(#20046,#20047) -stmtContainers(#20046,#20001) #20048=* -exprs(#20048,64,#20046,0,"obj = { x: 100 }") -#20049=@"loc,{#10000},4,5,4,20" -locations_default(#20049,#10000,4,5,4,20) +tokeninfo(#20048,8,#20001,18,".") +#20049=@"loc,{#10000},3,34,3,34" +locations_default(#20049,#10000,3,34,3,34) hasLocation(#20048,#20049) -enclosingStmt(#20048,#20046) -exprContainers(#20048,#20001) #20050=* -exprs(#20050,78,#20048,0,"obj") -#20051=@"loc,{#10000},4,5,4,7" -locations_default(#20051,#10000,4,5,4,7) +tokeninfo(#20050,6,#20001,19,"hasOwnProperty") +#20051=@"loc,{#10000},3,35,3,48" +locations_default(#20051,#10000,3,35,3,48) hasLocation(#20050,#20051) -enclosingStmt(#20050,#20046) -exprContainers(#20050,#20001) -literals("obj","obj",#20050) -decl(#20050,#20004) #20052=* -exprs(#20052,8,#20048,1,"{ x: 100 }") -#20053=@"loc,{#10000},4,11,4,20" -locations_default(#20053,#10000,4,11,4,20) +tokeninfo(#20052,8,#20001,20,";") +#20053=@"loc,{#10000},3,49,3,49" +locations_default(#20053,#10000,3,49,3,49) hasLocation(#20052,#20053) -enclosingStmt(#20052,#20046) -exprContainers(#20052,#20001) #20054=* -properties(#20054,#20052,0,0,"x: 100") -#20055=@"loc,{#10000},4,13,4,18" -locations_default(#20055,#10000,4,13,4,18) +tokeninfo(#20054,7,#20001,21,"let") +#20055=@"loc,{#10000},4,1,4,3" +locations_default(#20055,#10000,4,1,4,3) hasLocation(#20054,#20055) #20056=* -exprs(#20056,0,#20054,0,"x") -#20057=@"loc,{#10000},4,13,4,13" -locations_default(#20057,#10000,4,13,4,13) +tokeninfo(#20056,6,#20001,22,"obj") +#20057=@"loc,{#10000},4,5,4,7" +locations_default(#20057,#10000,4,5,4,7) hasLocation(#20056,#20057) -enclosingStmt(#20056,#20046) -exprContainers(#20056,#20001) -literals("x","x",#20056) #20058=* -exprs(#20058,3,#20054,1,"100") -#20059=@"loc,{#10000},4,16,4,18" -locations_default(#20059,#10000,4,16,4,18) +tokeninfo(#20058,8,#20001,23,"=") +#20059=@"loc,{#10000},4,9,4,9" +locations_default(#20059,#10000,4,9,4,9) hasLocation(#20058,#20059) -enclosingStmt(#20058,#20046) -exprContainers(#20058,#20001) -literals("100","100",#20058) #20060=* -stmts(#20060,2,#20001,3,"obj::ha ... p(""x"");") -#20061=@"loc,{#10000},5,1,5,21" -locations_default(#20061,#10000,5,1,5,21) +tokeninfo(#20060,8,#20001,24,"{") +#20061=@"loc,{#10000},4,11,4,11" +locations_default(#20061,#10000,4,11,4,11) hasLocation(#20060,#20061) -stmtContainers(#20060,#20001) #20062=* -exprs(#20062,13,#20060,0,"obj::hasOwnProp(""x"")") -#20063=@"loc,{#10000},5,1,5,20" -locations_default(#20063,#10000,5,1,5,20) +tokeninfo(#20062,6,#20001,25,"x") +#20063=@"loc,{#10000},4,13,4,13" +locations_default(#20063,#10000,4,13,4,13) hasLocation(#20062,#20063) -enclosingStmt(#20062,#20060) -exprContainers(#20062,#20001) #20064=* -exprs(#20064,97,#20062,-1,"obj::hasOwnProp") -#20065=@"loc,{#10000},5,1,5,15" -locations_default(#20065,#10000,5,1,5,15) +tokeninfo(#20064,8,#20001,26,":") +#20065=@"loc,{#10000},4,14,4,14" +locations_default(#20065,#10000,4,14,4,14) hasLocation(#20064,#20065) -enclosingStmt(#20064,#20060) -exprContainers(#20064,#20001) #20066=* -exprs(#20066,79,#20064,0,"obj") -#20067=@"loc,{#10000},5,1,5,3" -locations_default(#20067,#10000,5,1,5,3) +tokeninfo(#20066,3,#20001,27,"100") +#20067=@"loc,{#10000},4,16,4,18" +locations_default(#20067,#10000,4,16,4,18) hasLocation(#20066,#20067) -enclosingStmt(#20066,#20060) -exprContainers(#20066,#20001) -literals("obj","obj",#20066) -bind(#20066,#20004) #20068=* -exprs(#20068,79,#20064,1,"hasOwnProp") -#20069=@"loc,{#10000},5,6,5,15" -locations_default(#20069,#10000,5,6,5,15) +tokeninfo(#20068,8,#20001,28,"}") +#20069=@"loc,{#10000},4,20,4,20" +locations_default(#20069,#10000,4,20,4,20) hasLocation(#20068,#20069) -enclosingStmt(#20068,#20060) -exprContainers(#20068,#20001) -literals("hasOwnProp","hasOwnProp",#20068) -bind(#20068,#20003) #20070=* -exprs(#20070,4,#20062,0,"""x""") -#20071=@"loc,{#10000},5,17,5,19" -locations_default(#20071,#10000,5,17,5,19) +tokeninfo(#20070,8,#20001,29,";") +#20071=@"loc,{#10000},4,21,4,21" +locations_default(#20071,#10000,4,21,4,21) hasLocation(#20070,#20071) -enclosingStmt(#20070,#20060) -exprContainers(#20070,#20001) -literals("x","""x""",#20070) #20072=* -lines(#20072,#20001,"process.argv.map(::console.log);"," -") -hasLocation(#20072,#20006) -#20073=* -lines(#20073,#20001,""," -") -#20074=@"loc,{#10000},2,1,2,0" -locations_default(#20074,#10000,2,1,2,0) -hasLocation(#20073,#20074) -#20075=* -lines(#20075,#20001,"let hasOwnProp = Object.prototype.hasOwnProperty;"," -") -hasLocation(#20075,#20030) +tokeninfo(#20072,6,#20001,30,"obj") +#20073=@"loc,{#10000},5,1,5,3" +locations_default(#20073,#10000,5,1,5,3) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,8,#20001,31,"::") +#20075=@"loc,{#10000},5,4,5,5" +locations_default(#20075,#10000,5,4,5,5) +hasLocation(#20074,#20075) #20076=* -lines(#20076,#20001,"let obj = { x: 100 };"," -") -hasLocation(#20076,#20047) -#20077=* -lines(#20077,#20001,"obj::hasOwnProp(""x"");","") -hasLocation(#20077,#20061) -numlines(#20001,5,4,0) +tokeninfo(#20076,6,#20001,32,"hasOwnProp") +#20077=@"loc,{#10000},5,6,5,15" +locations_default(#20077,#10000,5,6,5,15) +hasLocation(#20076,#20077) #20078=* -tokeninfo(#20078,6,#20001,0,"process") -hasLocation(#20078,#20014) -#20079=* -tokeninfo(#20079,8,#20001,1,".") -#20080=@"loc,{#10000},1,8,1,8" -locations_default(#20080,#10000,1,8,1,8) -hasLocation(#20079,#20080) -#20081=* -tokeninfo(#20081,6,#20001,2,"argv") -hasLocation(#20081,#20017) +tokeninfo(#20078,8,#20001,33,"(") +#20079=@"loc,{#10000},5,16,5,16" +locations_default(#20079,#10000,5,16,5,16) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,4,#20001,34,"""x""") +#20081=@"loc,{#10000},5,17,5,19" +locations_default(#20081,#10000,5,17,5,19) +hasLocation(#20080,#20081) #20082=* -tokeninfo(#20082,8,#20001,3,".") -#20083=@"loc,{#10000},1,13,1,13" -locations_default(#20083,#10000,1,13,1,13) +tokeninfo(#20082,8,#20001,35,")") +#20083=@"loc,{#10000},5,20,5,20" +locations_default(#20083,#10000,5,20,5,20) hasLocation(#20082,#20083) #20084=* -tokeninfo(#20084,6,#20001,4,"map") -hasLocation(#20084,#20019) -#20085=* -tokeninfo(#20085,8,#20001,5,"(") -#20086=@"loc,{#10000},1,17,1,17" -locations_default(#20086,#10000,1,17,1,17) -hasLocation(#20085,#20086) -#20087=* -tokeninfo(#20087,8,#20001,6,"::") -#20088=@"loc,{#10000},1,18,1,19" -locations_default(#20088,#10000,1,18,1,19) -hasLocation(#20087,#20088) -#20089=* -tokeninfo(#20089,6,#20001,7,"console") -hasLocation(#20089,#20025) -#20090=* -tokeninfo(#20090,8,#20001,8,".") -#20091=@"loc,{#10000},1,27,1,27" -locations_default(#20091,#10000,1,27,1,27) -hasLocation(#20090,#20091) +tokeninfo(#20084,8,#20001,36,";") +#20085=@"loc,{#10000},5,21,5,21" +locations_default(#20085,#10000,5,21,5,21) +hasLocation(#20084,#20085) +#20086=* +tokeninfo(#20086,0,#20001,37,"") +#20087=@"loc,{#10000},5,22,5,21" +locations_default(#20087,#10000,5,22,5,21) +hasLocation(#20086,#20087) +toplevels(#20001,0) +#20088=@"loc,{#10000},1,1,5,21" +locations_default(#20088,#10000,1,1,5,21) +hasLocation(#20001,#20088) +#20089=@"var;{hasOwnProp};{#20000}" +variables(#20089,"hasOwnProp",#20000) +#20090=@"var;{obj};{#20000}" +variables(#20090,"obj",#20000) +#20091=* +stmts(#20091,2,#20001,0,"process ... e.log);") +hasLocation(#20091,#20003) +stmtContainers(#20091,#20001) #20092=* -tokeninfo(#20092,6,#20001,9,"log") -hasLocation(#20092,#20028) -#20093=* -tokeninfo(#20093,8,#20001,10,")") -#20094=@"loc,{#10000},1,31,1,31" -locations_default(#20094,#10000,1,31,1,31) -hasLocation(#20093,#20094) -#20095=* -tokeninfo(#20095,8,#20001,11,";") -#20096=@"loc,{#10000},1,32,1,32" -locations_default(#20096,#10000,1,32,1,32) -hasLocation(#20095,#20096) -#20097=* -tokeninfo(#20097,7,#20001,12,"let") -#20098=@"loc,{#10000},3,1,3,3" -locations_default(#20098,#10000,3,1,3,3) -hasLocation(#20097,#20098) -#20099=* -tokeninfo(#20099,6,#20001,13,"hasOwnProp") -hasLocation(#20099,#20034) +exprs(#20092,13,#20091,0,"process ... le.log)") +#20093=@"loc,{#10000},1,1,1,31" +locations_default(#20093,#10000,1,1,1,31) +hasLocation(#20092,#20093) +enclosingStmt(#20092,#20091) +exprContainers(#20092,#20001) +#20094=* +exprs(#20094,14,#20092,-1,"process.argv.map") +#20095=@"loc,{#10000},1,1,1,16" +locations_default(#20095,#10000,1,1,1,16) +hasLocation(#20094,#20095) +enclosingStmt(#20094,#20091) +exprContainers(#20094,#20001) +#20096=* +exprs(#20096,14,#20094,0,"process.argv") +#20097=@"loc,{#10000},1,1,1,12" +locations_default(#20097,#10000,1,1,1,12) +hasLocation(#20096,#20097) +enclosingStmt(#20096,#20091) +exprContainers(#20096,#20001) +#20098=* +exprs(#20098,79,#20096,0,"process") +hasLocation(#20098,#20013) +enclosingStmt(#20098,#20091) +exprContainers(#20098,#20001) +literals("process","process",#20098) +#20099=@"var;{process};{#20000}" +variables(#20099,"process",#20000) +bind(#20098,#20099) #20100=* -tokeninfo(#20100,8,#20001,14,"=") -#20101=@"loc,{#10000},3,16,3,16" -locations_default(#20101,#10000,3,16,3,16) -hasLocation(#20100,#20101) +exprs(#20100,0,#20096,1,"argv") +hasLocation(#20100,#20017) +enclosingStmt(#20100,#20091) +exprContainers(#20100,#20001) +literals("argv","argv",#20100) +#20101=* +exprs(#20101,0,#20094,1,"map") +hasLocation(#20101,#20021) +enclosingStmt(#20101,#20091) +exprContainers(#20101,#20001) +literals("map","map",#20101) #20102=* -tokeninfo(#20102,6,#20001,15,"Object") -hasLocation(#20102,#20040) -#20103=* -tokeninfo(#20103,8,#20001,16,".") -#20104=@"loc,{#10000},3,24,3,24" -locations_default(#20104,#10000,3,24,3,24) -hasLocation(#20103,#20104) -#20105=* -tokeninfo(#20105,6,#20001,17,"prototype") -hasLocation(#20105,#20043) +exprs(#20102,97,#20092,0,"::console.log") +#20103=@"loc,{#10000},1,18,1,30" +locations_default(#20103,#10000,1,18,1,30) +hasLocation(#20102,#20103) +enclosingStmt(#20102,#20091) +exprContainers(#20102,#20001) +#20104=* +exprs(#20104,14,#20102,1,"console.log") +#20105=@"loc,{#10000},1,20,1,30" +locations_default(#20105,#10000,1,20,1,30) +hasLocation(#20104,#20105) +enclosingStmt(#20104,#20091) +exprContainers(#20104,#20001) #20106=* -tokeninfo(#20106,8,#20001,18,".") -#20107=@"loc,{#10000},3,34,3,34" -locations_default(#20107,#10000,3,34,3,34) -hasLocation(#20106,#20107) +exprs(#20106,79,#20104,0,"console") +hasLocation(#20106,#20027) +enclosingStmt(#20106,#20091) +exprContainers(#20106,#20001) +literals("console","console",#20106) +#20107=@"var;{console};{#20000}" +variables(#20107,"console",#20000) +bind(#20106,#20107) #20108=* -tokeninfo(#20108,6,#20001,19,"hasOwnProperty") -hasLocation(#20108,#20045) +exprs(#20108,0,#20104,1,"log") +hasLocation(#20108,#20031) +enclosingStmt(#20108,#20091) +exprContainers(#20108,#20001) +literals("log","log",#20108) #20109=* -tokeninfo(#20109,8,#20001,20,";") -#20110=@"loc,{#10000},3,49,3,49" -locations_default(#20110,#10000,3,49,3,49) -hasLocation(#20109,#20110) -#20111=* -tokeninfo(#20111,7,#20001,21,"let") -#20112=@"loc,{#10000},4,1,4,3" -locations_default(#20112,#10000,4,1,4,3) -hasLocation(#20111,#20112) +stmts(#20109,23,#20001,1,"let has ... operty;") +hasLocation(#20109,#20007) +stmtContainers(#20109,#20001) +#20110=* +exprs(#20110,64,#20109,0,"hasOwnP ... roperty") +#20111=@"loc,{#10000},3,5,3,48" +locations_default(#20111,#10000,3,5,3,48) +hasLocation(#20110,#20111) +enclosingStmt(#20110,#20109) +exprContainers(#20110,#20001) +#20112=* +exprs(#20112,78,#20110,0,"hasOwnProp") +hasLocation(#20112,#20039) +enclosingStmt(#20112,#20109) +exprContainers(#20112,#20001) +literals("hasOwnProp","hasOwnProp",#20112) +decl(#20112,#20089) #20113=* -tokeninfo(#20113,6,#20001,22,"obj") -hasLocation(#20113,#20051) -#20114=* -tokeninfo(#20114,8,#20001,23,"=") -#20115=@"loc,{#10000},4,9,4,9" -locations_default(#20115,#10000,4,9,4,9) -hasLocation(#20114,#20115) -#20116=* -tokeninfo(#20116,8,#20001,24,"{") -#20117=@"loc,{#10000},4,11,4,11" -locations_default(#20117,#10000,4,11,4,11) -hasLocation(#20116,#20117) -#20118=* -tokeninfo(#20118,6,#20001,25,"x") -hasLocation(#20118,#20057) +exprs(#20113,14,#20110,1,"Object. ... roperty") +#20114=@"loc,{#10000},3,18,3,48" +locations_default(#20114,#10000,3,18,3,48) +hasLocation(#20113,#20114) +enclosingStmt(#20113,#20109) +exprContainers(#20113,#20001) +#20115=* +exprs(#20115,14,#20113,0,"Object.prototype") +#20116=@"loc,{#10000},3,18,3,33" +locations_default(#20116,#10000,3,18,3,33) +hasLocation(#20115,#20116) +enclosingStmt(#20115,#20109) +exprContainers(#20115,#20001) +#20117=* +exprs(#20117,79,#20115,0,"Object") +hasLocation(#20117,#20043) +enclosingStmt(#20117,#20109) +exprContainers(#20117,#20001) +literals("Object","Object",#20117) +#20118=@"var;{Object};{#20000}" +variables(#20118,"Object",#20000) +bind(#20117,#20118) #20119=* -tokeninfo(#20119,8,#20001,26,":") -#20120=@"loc,{#10000},4,14,4,14" -locations_default(#20120,#10000,4,14,4,14) -hasLocation(#20119,#20120) +exprs(#20119,0,#20115,1,"prototype") +hasLocation(#20119,#20047) +enclosingStmt(#20119,#20109) +exprContainers(#20119,#20001) +literals("prototype","prototype",#20119) +#20120=* +exprs(#20120,0,#20113,1,"hasOwnProperty") +hasLocation(#20120,#20051) +enclosingStmt(#20120,#20109) +exprContainers(#20120,#20001) +literals("hasOwnProperty","hasOwnProperty",#20120) #20121=* -tokeninfo(#20121,3,#20001,27,"100") -hasLocation(#20121,#20059) +stmts(#20121,23,#20001,2,"let obj ... 100 };") +hasLocation(#20121,#20009) +stmtContainers(#20121,#20001) #20122=* -tokeninfo(#20122,8,#20001,28,"}") -#20123=@"loc,{#10000},4,20,4,20" -locations_default(#20123,#10000,4,20,4,20) +exprs(#20122,64,#20121,0,"obj = { x: 100 }") +#20123=@"loc,{#10000},4,5,4,20" +locations_default(#20123,#10000,4,5,4,20) hasLocation(#20122,#20123) +enclosingStmt(#20122,#20121) +exprContainers(#20122,#20001) #20124=* -tokeninfo(#20124,8,#20001,29,";") -#20125=@"loc,{#10000},4,21,4,21" -locations_default(#20125,#10000,4,21,4,21) -hasLocation(#20124,#20125) -#20126=* -tokeninfo(#20126,6,#20001,30,"obj") -hasLocation(#20126,#20067) +exprs(#20124,78,#20122,0,"obj") +hasLocation(#20124,#20057) +enclosingStmt(#20124,#20121) +exprContainers(#20124,#20001) +literals("obj","obj",#20124) +decl(#20124,#20090) +#20125=* +exprs(#20125,8,#20122,1,"{ x: 100 }") +#20126=@"loc,{#10000},4,11,4,20" +locations_default(#20126,#10000,4,11,4,20) +hasLocation(#20125,#20126) +enclosingStmt(#20125,#20121) +exprContainers(#20125,#20001) #20127=* -tokeninfo(#20127,8,#20001,31,"::") -#20128=@"loc,{#10000},5,4,5,5" -locations_default(#20128,#10000,5,4,5,5) +properties(#20127,#20125,0,0,"x: 100") +#20128=@"loc,{#10000},4,13,4,18" +locations_default(#20128,#10000,4,13,4,18) hasLocation(#20127,#20128) #20129=* -tokeninfo(#20129,6,#20001,32,"hasOwnProp") -hasLocation(#20129,#20069) +exprs(#20129,0,#20127,0,"x") +hasLocation(#20129,#20063) +enclosingStmt(#20129,#20121) +exprContainers(#20129,#20001) +literals("x","x",#20129) #20130=* -tokeninfo(#20130,8,#20001,33,"(") -#20131=@"loc,{#10000},5,16,5,16" -locations_default(#20131,#10000,5,16,5,16) -hasLocation(#20130,#20131) +exprs(#20130,3,#20127,1,"100") +hasLocation(#20130,#20067) +enclosingStmt(#20130,#20121) +exprContainers(#20130,#20001) +literals("100","100",#20130) +#20131=* +stmts(#20131,2,#20001,3,"obj::ha ... p(""x"");") +hasLocation(#20131,#20011) +stmtContainers(#20131,#20001) #20132=* -tokeninfo(#20132,4,#20001,34,"""x""") -hasLocation(#20132,#20071) -#20133=* -tokeninfo(#20133,8,#20001,35,")") -#20134=@"loc,{#10000},5,20,5,20" -locations_default(#20134,#10000,5,20,5,20) -hasLocation(#20133,#20134) -#20135=* -tokeninfo(#20135,8,#20001,36,";") -#20136=@"loc,{#10000},5,21,5,21" -locations_default(#20136,#10000,5,21,5,21) -hasLocation(#20135,#20136) +exprs(#20132,13,#20131,0,"obj::hasOwnProp(""x"")") +#20133=@"loc,{#10000},5,1,5,20" +locations_default(#20133,#10000,5,1,5,20) +hasLocation(#20132,#20133) +enclosingStmt(#20132,#20131) +exprContainers(#20132,#20001) +#20134=* +exprs(#20134,97,#20132,-1,"obj::hasOwnProp") +#20135=@"loc,{#10000},5,1,5,15" +locations_default(#20135,#10000,5,1,5,15) +hasLocation(#20134,#20135) +enclosingStmt(#20134,#20131) +exprContainers(#20134,#20001) +#20136=* +exprs(#20136,79,#20134,0,"obj") +hasLocation(#20136,#20073) +enclosingStmt(#20136,#20131) +exprContainers(#20136,#20001) +literals("obj","obj",#20136) +bind(#20136,#20090) #20137=* -tokeninfo(#20137,0,#20001,37,"") -#20138=@"loc,{#10000},5,22,5,21" -locations_default(#20138,#10000,5,22,5,21) -hasLocation(#20137,#20138) +exprs(#20137,79,#20134,1,"hasOwnProp") +hasLocation(#20137,#20077) +enclosingStmt(#20137,#20131) +exprContainers(#20137,#20001) +literals("hasOwnProp","hasOwnProp",#20137) +bind(#20137,#20089) +#20138=* +exprs(#20138,4,#20132,0,"""x""") +hasLocation(#20138,#20081) +enclosingStmt(#20138,#20131) +exprContainers(#20138,#20001) +literals("x","""x""",#20138) #20139=* entry_cfg_node(#20139,#20001) #20140=@"loc,{#10000},1,1,1,0" @@ -452,39 +452,39 @@ locations_default(#20140,#10000,1,1,1,0) hasLocation(#20139,#20140) #20141=* exit_cfg_node(#20141,#20001) -hasLocation(#20141,#20138) -successor(#20060,#20066) -successor(#20070,#20062) -successor(#20068,#20064) -successor(#20066,#20068) -successor(#20064,#20070) -successor(#20062,#20141) -successor(#20046,#20050) -successor(#20052,#20056) -successor(#20058,#20054) -successor(#20056,#20058) -successor(#20054,#20048) -successor(#20050,#20052) -successor(#20048,#20060) -successor(#20029,#20033) -successor(#20044,#20035) -successor(#20042,#20037) -successor(#20039,#20042) -successor(#20037,#20044) -successor(#20035,#20031) -successor(#20033,#20039) -successor(#20031,#20046) -successor(#20005,#20013) -successor(#20027,#20022) -successor(#20024,#20027) -successor(#20022,#20020) -successor(#20020,#20007) -successor(#20018,#20009) -successor(#20016,#20011) -successor(#20013,#20016) -successor(#20011,#20018) -successor(#20009,#20024) -successor(#20007,#20029) -successor(#20139,#20005) +hasLocation(#20141,#20087) +successor(#20131,#20136) +successor(#20138,#20132) +successor(#20137,#20134) +successor(#20136,#20137) +successor(#20134,#20138) +successor(#20132,#20141) +successor(#20121,#20124) +successor(#20125,#20129) +successor(#20130,#20127) +successor(#20129,#20130) +successor(#20127,#20122) +successor(#20124,#20125) +successor(#20122,#20131) +successor(#20109,#20112) +successor(#20120,#20113) +successor(#20119,#20115) +successor(#20117,#20119) +successor(#20115,#20120) +successor(#20113,#20110) +successor(#20112,#20117) +successor(#20110,#20121) +successor(#20091,#20098) +successor(#20108,#20104) +successor(#20106,#20108) +successor(#20104,#20102) +successor(#20102,#20092) +successor(#20101,#20094) +successor(#20100,#20096) +successor(#20098,#20100) +successor(#20096,#20101) +successor(#20094,#20106) +successor(#20092,#20109) +successor(#20139,#20091) numlines(#10000,5,4,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/helloworld/output/trap/hello.js.trap b/javascript/extractor/tests/helloworld/output/trap/hello.js.trap index 17566af6556..162411aa1a3 100644 --- a/javascript/extractor/tests/helloworld/output/trap/hello.js.trap +++ b/javascript/extractor/tests/helloworld/output/trap/hello.js.trap @@ -9,70 +9,70 @@ 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=* -stmts(#20003,2,#20001,0,"alert("" ... rld!"");") -hasLocation(#20003,#20002) -stmtContainers(#20003,#20001) -#20004=* -exprs(#20004,13,#20003,0,"alert("" ... orld!"")") -#20005=@"loc,{#10000},1,1,1,22" -locations_default(#20005,#10000,1,1,1,22) -hasLocation(#20004,#20005) -enclosingStmt(#20004,#20003) -exprContainers(#20004,#20001) -#20006=* -exprs(#20006,79,#20004,-1,"alert") -#20007=@"loc,{#10000},1,1,1,5" -locations_default(#20007,#10000,1,1,1,5) -hasLocation(#20006,#20007) -enclosingStmt(#20006,#20003) -exprContainers(#20006,#20001) -literals("alert","alert",#20006) -#20008=@"var;{alert};{#20000}" -variables(#20008,"alert",#20000) -bind(#20006,#20008) -#20009=* -exprs(#20009,4,#20004,0,"""Hello, world!""") -#20010=@"loc,{#10000},1,7,1,21" -locations_default(#20010,#10000,1,7,1,21) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20003) -exprContainers(#20009,#20001) -literals("Hello, world!","""Hello, world!""",#20009) -#20011=* -lines(#20011,#20001,"alert(""Hello, world!"");","") -hasLocation(#20011,#20002) +#20002=* +lines(#20002,#20001,"alert(""Hello, world!"");","") +#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,6,#20001,0,"alert") +#20005=@"loc,{#10000},1,1,1,5" +locations_default(#20005,#10000,1,1,1,5) +hasLocation(#20004,#20005) +#20006=* +tokeninfo(#20006,8,#20001,1,"(") +#20007=@"loc,{#10000},1,6,1,6" +locations_default(#20007,#10000,1,6,1,6) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,4,#20001,2,"""Hello, world!""") +#20009=@"loc,{#10000},1,7,1,21" +locations_default(#20009,#10000,1,7,1,21) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,3,")") +#20011=@"loc,{#10000},1,22,1,22" +locations_default(#20011,#10000,1,22,1,22) +hasLocation(#20010,#20011) #20012=* -tokeninfo(#20012,6,#20001,0,"alert") -hasLocation(#20012,#20007) -#20013=* -tokeninfo(#20013,8,#20001,1,"(") -#20014=@"loc,{#10000},1,6,1,6" -locations_default(#20014,#10000,1,6,1,6) -hasLocation(#20013,#20014) -#20015=* -tokeninfo(#20015,4,#20001,2,"""Hello, world!""") -hasLocation(#20015,#20010) +tokeninfo(#20012,8,#20001,4,";") +#20013=@"loc,{#10000},1,23,1,23" +locations_default(#20013,#10000,1,23,1,23) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,0,#20001,5,"") +#20015=@"loc,{#10000},1,24,1,23" +locations_default(#20015,#10000,1,24,1,23) +hasLocation(#20014,#20015) +toplevels(#20001,0) +hasLocation(#20001,#20003) #20016=* -tokeninfo(#20016,8,#20001,3,")") -#20017=@"loc,{#10000},1,22,1,22" -locations_default(#20017,#10000,1,22,1,22) -hasLocation(#20016,#20017) -#20018=* -tokeninfo(#20018,8,#20001,4,";") -#20019=@"loc,{#10000},1,23,1,23" -locations_default(#20019,#10000,1,23,1,23) -hasLocation(#20018,#20019) -#20020=* -tokeninfo(#20020,0,#20001,5,"") -#20021=@"loc,{#10000},1,24,1,23" -locations_default(#20021,#10000,1,24,1,23) -hasLocation(#20020,#20021) +stmts(#20016,2,#20001,0,"alert("" ... rld!"");") +hasLocation(#20016,#20003) +stmtContainers(#20016,#20001) +#20017=* +exprs(#20017,13,#20016,0,"alert("" ... orld!"")") +#20018=@"loc,{#10000},1,1,1,22" +locations_default(#20018,#10000,1,1,1,22) +hasLocation(#20017,#20018) +enclosingStmt(#20017,#20016) +exprContainers(#20017,#20001) +#20019=* +exprs(#20019,79,#20017,-1,"alert") +hasLocation(#20019,#20005) +enclosingStmt(#20019,#20016) +exprContainers(#20019,#20001) +literals("alert","alert",#20019) +#20020=@"var;{alert};{#20000}" +variables(#20020,"alert",#20000) +bind(#20019,#20020) +#20021=* +exprs(#20021,4,#20017,0,"""Hello, world!""") +hasLocation(#20021,#20009) +enclosingStmt(#20021,#20016) +exprContainers(#20021,#20001) +literals("Hello, world!","""Hello, world!""",#20021) #20022=* entry_cfg_node(#20022,#20001) #20023=@"loc,{#10000},1,1,1,0" @@ -80,11 +80,11 @@ locations_default(#20023,#10000,1,1,1,0) hasLocation(#20022,#20023) #20024=* exit_cfg_node(#20024,#20001) -hasLocation(#20024,#20021) -successor(#20003,#20006) -successor(#20009,#20004) -successor(#20006,#20009) -successor(#20004,#20024) -successor(#20022,#20003) +hasLocation(#20024,#20015) +successor(#20016,#20019) +successor(#20021,#20017) +successor(#20019,#20021) +successor(#20017,#20024) +successor(#20022,#20016) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/html/output/trap/entities.html.trap b/javascript/extractor/tests/html/output/trap/entities.html.trap index 61b8c18ec49..2d50b0b36e2 100644 --- a/javascript/extractor/tests/html/output/trap/entities.html.trap +++ b/javascript/extractor/tests/html/output/trap/entities.html.trap @@ -9,92 +9,92 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},6,29" -toplevels(#20001,3) -#20002=@"loc,{#10000},6,29,6,48" -locations_default(#20002,#10000,6,29,6,48) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"void(alert(""Nope!""))") -hasLocation(#20003,#20002) -stmtContainers(#20003,#20001) +#20002=* +lines(#20002,#20001,"void(alert(""Nope!""))","") +#20003=@"loc,{#10000},6,29,6,48" +locations_default(#20003,#10000,6,29,6,48) +hasLocation(#20002,#20003) +numlines(#20001,1,1,0) #20004=* -exprs(#20004,21,#20003,0,"void(alert(""Nope!""))") -hasLocation(#20004,#20002) -enclosingStmt(#20004,#20003) -exprContainers(#20004,#20001) -#20005=* -exprs(#20005,63,#20004,0,"(alert(""Nope!""))") -#20006=@"loc,{#10000},6,33,6,48" -locations_default(#20006,#10000,6,33,6,48) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -#20007=* -exprs(#20007,13,#20005,0,"alert(""Nope!"")") -#20008=@"loc,{#10000},6,34,6,47" -locations_default(#20008,#10000,6,34,6,47) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20003) -exprContainers(#20007,#20001) -#20009=* -exprs(#20009,79,#20007,-1,"alert") -#20010=@"loc,{#10000},6,34,6,38" -locations_default(#20010,#10000,6,34,6,38) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20003) -exprContainers(#20009,#20001) -literals("alert","alert",#20009) -#20011=@"var;{alert};{#20000}" -variables(#20011,"alert",#20000) -bind(#20009,#20011) +tokeninfo(#20004,7,#20001,0,"void") +#20005=@"loc,{#10000},6,29,6,32" +locations_default(#20005,#10000,6,29,6,32) +hasLocation(#20004,#20005) +#20006=* +tokeninfo(#20006,8,#20001,1,"(") +#20007=@"loc,{#10000},6,33,6,33" +locations_default(#20007,#10000,6,33,6,33) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,6,#20001,2,"alert") +#20009=@"loc,{#10000},6,34,6,38" +locations_default(#20009,#10000,6,34,6,38) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,3,"(") +#20011=@"loc,{#10000},6,39,6,39" +locations_default(#20011,#10000,6,39,6,39) +hasLocation(#20010,#20011) #20012=* -exprs(#20012,4,#20007,0,"""Nope!""") +tokeninfo(#20012,4,#20001,4,"""Nope!""") #20013=@"loc,{#10000},6,40,6,46" locations_default(#20013,#10000,6,40,6,46) hasLocation(#20012,#20013) -enclosingStmt(#20012,#20003) -exprContainers(#20012,#20001) -literals("Nope!","""Nope!""",#20012) #20014=* -lines(#20014,#20001,"void(alert(""Nope!""))","") -hasLocation(#20014,#20002) -numlines(#20001,1,1,0) -#20015=* -tokeninfo(#20015,7,#20001,0,"void") -#20016=@"loc,{#10000},6,29,6,32" -locations_default(#20016,#10000,6,29,6,32) -hasLocation(#20015,#20016) -#20017=* -tokeninfo(#20017,8,#20001,1,"(") -#20018=@"loc,{#10000},6,33,6,33" -locations_default(#20018,#10000,6,33,6,33) -hasLocation(#20017,#20018) -#20019=* -tokeninfo(#20019,6,#20001,2,"alert") -hasLocation(#20019,#20010) +tokeninfo(#20014,8,#20001,5,")") +#20015=@"loc,{#10000},6,47,6,47" +locations_default(#20015,#10000,6,47,6,47) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,6,")") +#20017=@"loc,{#10000},6,48,6,48" +locations_default(#20017,#10000,6,48,6,48) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,0,#20001,7,"") +#20019=@"loc,{#10000},6,49,6,48" +locations_default(#20019,#10000,6,49,6,48) +hasLocation(#20018,#20019) +toplevels(#20001,3) +hasLocation(#20001,#20003) #20020=* -tokeninfo(#20020,8,#20001,3,"(") -#20021=@"loc,{#10000},6,39,6,39" -locations_default(#20021,#10000,6,39,6,39) -hasLocation(#20020,#20021) +stmts(#20020,2,#20001,0,"void(alert(""Nope!""))") +hasLocation(#20020,#20003) +stmtContainers(#20020,#20001) +#20021=* +exprs(#20021,21,#20020,0,"void(alert(""Nope!""))") +hasLocation(#20021,#20003) +enclosingStmt(#20021,#20020) +exprContainers(#20021,#20001) #20022=* -tokeninfo(#20022,4,#20001,4,"""Nope!""") -hasLocation(#20022,#20013) -#20023=* -tokeninfo(#20023,8,#20001,5,")") -#20024=@"loc,{#10000},6,47,6,47" -locations_default(#20024,#10000,6,47,6,47) -hasLocation(#20023,#20024) -#20025=* -tokeninfo(#20025,8,#20001,6,")") -#20026=@"loc,{#10000},6,48,6,48" -locations_default(#20026,#10000,6,48,6,48) -hasLocation(#20025,#20026) -#20027=* -tokeninfo(#20027,0,#20001,7,"") -#20028=@"loc,{#10000},6,49,6,48" -locations_default(#20028,#10000,6,49,6,48) -hasLocation(#20027,#20028) +exprs(#20022,63,#20021,0,"(alert(""Nope!""))") +#20023=@"loc,{#10000},6,33,6,48" +locations_default(#20023,#10000,6,33,6,48) +hasLocation(#20022,#20023) +enclosingStmt(#20022,#20020) +exprContainers(#20022,#20001) +#20024=* +exprs(#20024,13,#20022,0,"alert(""Nope!"")") +#20025=@"loc,{#10000},6,34,6,47" +locations_default(#20025,#10000,6,34,6,47) +hasLocation(#20024,#20025) +enclosingStmt(#20024,#20020) +exprContainers(#20024,#20001) +#20026=* +exprs(#20026,79,#20024,-1,"alert") +hasLocation(#20026,#20009) +enclosingStmt(#20026,#20020) +exprContainers(#20026,#20001) +literals("alert","alert",#20026) +#20027=@"var;{alert};{#20000}" +variables(#20027,"alert",#20000) +bind(#20026,#20027) +#20028=* +exprs(#20028,4,#20024,0,"""Nope!""") +hasLocation(#20028,#20013) +enclosingStmt(#20028,#20020) +exprContainers(#20028,#20001) +literals("Nope!","""Nope!""",#20028) #20029=* entry_cfg_node(#20029,#20001) #20030=@"loc,{#10000},6,29,6,28" @@ -102,14 +102,14 @@ locations_default(#20030,#10000,6,29,6,28) hasLocation(#20029,#20030) #20031=* exit_cfg_node(#20031,#20001) -hasLocation(#20031,#20028) -successor(#20003,#20005) -successor(#20005,#20009) -successor(#20012,#20007) -successor(#20009,#20012) -successor(#20007,#20004) -successor(#20004,#20031) -successor(#20029,#20003) +hasLocation(#20031,#20019) +successor(#20020,#20022) +successor(#20022,#20026) +successor(#20028,#20024) +successor(#20026,#20028) +successor(#20024,#20021) +successor(#20021,#20031) +successor(#20029,#20020) #20032=* xmlElements(#20032,"html",#10000,0,#10000) #20033=@"loc,{#10000},1,1,8,7" diff --git a/javascript/extractor/tests/html/output/trap/module.html.trap b/javascript/extractor/tests/html/output/trap/module.html.trap index 848f05a4e1f..a198c52ef7a 100644 --- a/javascript/extractor/tests/html/output/trap/module.html.trap +++ b/javascript/extractor/tests/html/output/trap/module.html.trap @@ -9,183 +9,184 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},4,31" -toplevels(#20001,1) -#20002=@"loc,{#10000},4,31,7,8" -locations_default(#20002,#10000,4,31,7,8) -hasLocation(#20001,#20002) -#20003=@"module;{#10000},4,31" -scopes(#20003,3) -scopenodes(#20001,#20003) -scopenesting(#20003,#20000) -isModule(#20001) -#20004=@"var;{foo};{#20003}" -variables(#20004,"foo",#20003) -#20005=@"local_type_name;{foo};{#20003}" -local_type_names(#20005,"foo",#20003) -#20006=@"local_namespace_name;{foo};{#20003}" -local_namespace_names(#20006,"foo",#20003) -variables(#20004,"foo",#20003) -local_type_names(#20005,"foo",#20003) -local_namespace_names(#20006,"foo",#20003) -#20007=* -stmts(#20007,27,#20001,0,"import ... 'bar';") -#20008=@"loc,{#10000},5,13,5,34" -locations_default(#20008,#10000,5,13,5,34) -hasLocation(#20007,#20008) -stmtContainers(#20007,#20001) -#20009=* -exprs(#20009,4,#20007,-1,"'bar'") -#20010=@"loc,{#10000},5,29,5,33" -locations_default(#20010,#10000,5,29,5,33) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20007) -exprContainers(#20009,#20001) -literals("bar","'bar'",#20009) -#20011=* -exprs(#20011,84,#20007,0,"foo") -#20012=@"loc,{#10000},5,20,5,22" -locations_default(#20012,#10000,5,20,5,22) -hasLocation(#20011,#20012) -enclosingStmt(#20011,#20007) -exprContainers(#20011,#20001) -#20013=* -exprs(#20013,78,#20011,1,"foo") -hasLocation(#20013,#20012) -enclosingStmt(#20013,#20007) -exprContainers(#20013,#20001) -literals("foo","foo",#20013) -decl(#20013,#20004) -typedecl(#20013,#20005) -namespacedecl(#20013,#20006) +#20002=* +lines(#20002,#20001,""," +") +#20003=@"loc,{#10000},4,31,4,30" +locations_default(#20003,#10000,4,31,4,30) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," import foo from 'bar';"," +") +#20005=@"loc,{#10000},5,1,5,34" +locations_default(#20005,#10000,5,1,5,34) +hasLocation(#20004,#20005) +indentation(#10000,5," ",12) +#20006=* +lines(#20006,#20001," foo.baz();"," +") +#20007=@"loc,{#10000},6,1,6,22" +locations_default(#20007,#10000,6,1,6,22) +hasLocation(#20006,#20007) +indentation(#10000,6," ",12) +#20008=* +lines(#20008,#20001," ","") +#20009=@"loc,{#10000},7,1,7,8" +locations_default(#20009,#10000,7,1,7,8) +hasLocation(#20008,#20009) +numlines(#20001,4,2,0) +#20010=* +tokeninfo(#20010,7,#20001,0,"import") +#20011=@"loc,{#10000},5,13,5,18" +locations_default(#20011,#10000,5,13,5,18) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,6,#20001,1,"foo") +#20013=@"loc,{#10000},5,20,5,22" +locations_default(#20013,#10000,5,20,5,22) +hasLocation(#20012,#20013) #20014=* -stmts(#20014,2,#20001,1,"foo.baz();") -#20015=@"loc,{#10000},6,13,6,22" -locations_default(#20015,#10000,6,13,6,22) +tokeninfo(#20014,6,#20001,2,"from") +#20015=@"loc,{#10000},5,24,5,27" +locations_default(#20015,#10000,5,24,5,27) hasLocation(#20014,#20015) -stmtContainers(#20014,#20001) #20016=* -exprs(#20016,13,#20014,0,"foo.baz()") -#20017=@"loc,{#10000},6,13,6,21" -locations_default(#20017,#10000,6,13,6,21) +tokeninfo(#20016,4,#20001,3,"'bar'") +#20017=@"loc,{#10000},5,29,5,33" +locations_default(#20017,#10000,5,29,5,33) hasLocation(#20016,#20017) -enclosingStmt(#20016,#20014) -exprContainers(#20016,#20001) #20018=* -exprs(#20018,14,#20016,-1,"foo.baz") -#20019=@"loc,{#10000},6,13,6,19" -locations_default(#20019,#10000,6,13,6,19) +tokeninfo(#20018,8,#20001,4,";") +#20019=@"loc,{#10000},5,34,5,34" +locations_default(#20019,#10000,5,34,5,34) hasLocation(#20018,#20019) -enclosingStmt(#20018,#20014) -exprContainers(#20018,#20001) #20020=* -exprs(#20020,79,#20018,0,"foo") +tokeninfo(#20020,6,#20001,5,"foo") #20021=@"loc,{#10000},6,13,6,15" locations_default(#20021,#10000,6,13,6,15) hasLocation(#20020,#20021) -enclosingStmt(#20020,#20014) -exprContainers(#20020,#20001) -literals("foo","foo",#20020) -bind(#20020,#20004) #20022=* -exprs(#20022,0,#20018,1,"baz") -#20023=@"loc,{#10000},6,17,6,19" -locations_default(#20023,#10000,6,17,6,19) +tokeninfo(#20022,8,#20001,6,".") +#20023=@"loc,{#10000},6,16,6,16" +locations_default(#20023,#10000,6,16,6,16) hasLocation(#20022,#20023) -enclosingStmt(#20022,#20014) -exprContainers(#20022,#20001) -literals("baz","baz",#20022) #20024=* -lines(#20024,#20001,""," -") -#20025=@"loc,{#10000},4,31,4,30" -locations_default(#20025,#10000,4,31,4,30) +tokeninfo(#20024,6,#20001,7,"baz") +#20025=@"loc,{#10000},6,17,6,19" +locations_default(#20025,#10000,6,17,6,19) hasLocation(#20024,#20025) #20026=* -lines(#20026,#20001," import foo from 'bar';"," -") -#20027=@"loc,{#10000},5,1,5,34" -locations_default(#20027,#10000,5,1,5,34) +tokeninfo(#20026,8,#20001,8,"(") +#20027=@"loc,{#10000},6,20,6,20" +locations_default(#20027,#10000,6,20,6,20) hasLocation(#20026,#20027) -indentation(#10000,5," ",12) #20028=* -lines(#20028,#20001," foo.baz();"," -") -#20029=@"loc,{#10000},6,1,6,22" -locations_default(#20029,#10000,6,1,6,22) +tokeninfo(#20028,8,#20001,9,")") +#20029=@"loc,{#10000},6,21,6,21" +locations_default(#20029,#10000,6,21,6,21) hasLocation(#20028,#20029) -indentation(#10000,6," ",12) #20030=* -lines(#20030,#20001," ","") -#20031=@"loc,{#10000},7,1,7,8" -locations_default(#20031,#10000,7,1,7,8) +tokeninfo(#20030,8,#20001,10,";") +#20031=@"loc,{#10000},6,22,6,22" +locations_default(#20031,#10000,6,22,6,22) hasLocation(#20030,#20031) -numlines(#20001,4,2,0) #20032=* -tokeninfo(#20032,7,#20001,0,"import") -#20033=@"loc,{#10000},5,13,5,18" -locations_default(#20033,#10000,5,13,5,18) +tokeninfo(#20032,0,#20001,11,"") +#20033=@"loc,{#10000},7,9,7,8" +locations_default(#20033,#10000,7,9,7,8) hasLocation(#20032,#20033) -#20034=* -tokeninfo(#20034,6,#20001,1,"foo") -hasLocation(#20034,#20012) -#20035=* -tokeninfo(#20035,6,#20001,2,"from") -#20036=@"loc,{#10000},5,24,5,27" -locations_default(#20036,#10000,5,24,5,27) -hasLocation(#20035,#20036) -#20037=* -tokeninfo(#20037,4,#20001,3,"'bar'") -hasLocation(#20037,#20010) -#20038=* -tokeninfo(#20038,8,#20001,4,";") -#20039=@"loc,{#10000},5,34,5,34" -locations_default(#20039,#10000,5,34,5,34) -hasLocation(#20038,#20039) -#20040=* -tokeninfo(#20040,6,#20001,5,"foo") -hasLocation(#20040,#20021) +toplevels(#20001,1) +#20034=@"loc,{#10000},4,31,7,8" +locations_default(#20034,#10000,4,31,7,8) +hasLocation(#20001,#20034) +#20035=@"module;{#10000},4,31" +scopes(#20035,3) +scopenodes(#20001,#20035) +scopenesting(#20035,#20000) +isModule(#20001) +isES2015Module(#20001) +#20036=@"var;{foo};{#20035}" +variables(#20036,"foo",#20035) +#20037=@"local_type_name;{foo};{#20035}" +local_type_names(#20037,"foo",#20035) +#20038=@"local_namespace_name;{foo};{#20035}" +local_namespace_names(#20038,"foo",#20035) +variables(#20036,"foo",#20035) +local_type_names(#20037,"foo",#20035) +local_namespace_names(#20038,"foo",#20035) +#20039=* +stmts(#20039,27,#20001,0,"import ... 'bar';") +#20040=@"loc,{#10000},5,13,5,34" +locations_default(#20040,#10000,5,13,5,34) +hasLocation(#20039,#20040) +stmtContainers(#20039,#20001) #20041=* -tokeninfo(#20041,8,#20001,6,".") -#20042=@"loc,{#10000},6,16,6,16" -locations_default(#20042,#10000,6,16,6,16) -hasLocation(#20041,#20042) +exprs(#20041,4,#20039,-1,"'bar'") +hasLocation(#20041,#20017) +enclosingStmt(#20041,#20039) +exprContainers(#20041,#20001) +literals("bar","'bar'",#20041) +#20042=* +exprs(#20042,84,#20039,0,"foo") +hasLocation(#20042,#20013) +enclosingStmt(#20042,#20039) +exprContainers(#20042,#20001) #20043=* -tokeninfo(#20043,6,#20001,7,"baz") -hasLocation(#20043,#20023) +exprs(#20043,78,#20042,1,"foo") +hasLocation(#20043,#20013) +enclosingStmt(#20043,#20039) +exprContainers(#20043,#20001) +literals("foo","foo",#20043) +decl(#20043,#20036) +typedecl(#20043,#20037) +namespacedecl(#20043,#20038) #20044=* -tokeninfo(#20044,8,#20001,8,"(") -#20045=@"loc,{#10000},6,20,6,20" -locations_default(#20045,#10000,6,20,6,20) +stmts(#20044,2,#20001,1,"foo.baz();") +#20045=@"loc,{#10000},6,13,6,22" +locations_default(#20045,#10000,6,13,6,22) hasLocation(#20044,#20045) +stmtContainers(#20044,#20001) #20046=* -tokeninfo(#20046,8,#20001,9,")") -#20047=@"loc,{#10000},6,21,6,21" -locations_default(#20047,#10000,6,21,6,21) +exprs(#20046,13,#20044,0,"foo.baz()") +#20047=@"loc,{#10000},6,13,6,21" +locations_default(#20047,#10000,6,13,6,21) hasLocation(#20046,#20047) +enclosingStmt(#20046,#20044) +exprContainers(#20046,#20001) #20048=* -tokeninfo(#20048,8,#20001,10,";") -#20049=@"loc,{#10000},6,22,6,22" -locations_default(#20049,#10000,6,22,6,22) +exprs(#20048,14,#20046,-1,"foo.baz") +#20049=@"loc,{#10000},6,13,6,19" +locations_default(#20049,#10000,6,13,6,19) hasLocation(#20048,#20049) +enclosingStmt(#20048,#20044) +exprContainers(#20048,#20001) #20050=* -tokeninfo(#20050,0,#20001,11,"") -#20051=@"loc,{#10000},7,9,7,8" -locations_default(#20051,#10000,7,9,7,8) -hasLocation(#20050,#20051) +exprs(#20050,79,#20048,0,"foo") +hasLocation(#20050,#20021) +enclosingStmt(#20050,#20044) +exprContainers(#20050,#20001) +literals("foo","foo",#20050) +bind(#20050,#20036) +#20051=* +exprs(#20051,0,#20048,1,"baz") +hasLocation(#20051,#20025) +enclosingStmt(#20051,#20044) +exprContainers(#20051,#20001) +literals("baz","baz",#20051) #20052=* entry_cfg_node(#20052,#20001) -hasLocation(#20052,#20025) +hasLocation(#20052,#20003) #20053=* exit_cfg_node(#20053,#20001) -hasLocation(#20053,#20051) -successor(#20014,#20020) -successor(#20022,#20018) -successor(#20020,#20022) -successor(#20018,#20016) -successor(#20016,#20053) -successor(#20007,#20014) -successor(#20011,#20007) -successor(#20052,#20011) +hasLocation(#20053,#20033) +successor(#20044,#20050) +successor(#20051,#20048) +successor(#20050,#20051) +successor(#20048,#20046) +successor(#20046,#20053) +successor(#20039,#20044) +successor(#20042,#20039) +successor(#20052,#20042) #20054=* xmlElements(#20054,"html",#10000,0,#10000) #20055=@"loc,{#10000},1,1,11,7" diff --git a/javascript/extractor/tests/html/output/trap/tst.html.trap b/javascript/extractor/tests/html/output/trap/tst.html.trap index e6b3a2a119b..88603e3a5d3 100644 --- a/javascript/extractor/tests/html/output/trap/tst.html.trap +++ b/javascript/extractor/tests/html/output/trap/tst.html.trap @@ -9,119 +9,119 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},5,17" -toplevels(#20001,1) -#20002=@"loc,{#10000},5,17,7,8" -locations_default(#20002,#10000,5,17,7,8) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"alert("" ... rld!"");") -#20004=@"loc,{#10000},6,13,6,35" -locations_default(#20004,#10000,6,13,6,35) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,13,#20003,0,"alert("" ... orld!"")") -#20006=@"loc,{#10000},6,13,6,34" -locations_default(#20006,#10000,6,13,6,34) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -#20007=* -exprs(#20007,79,#20005,-1,"alert") -#20008=@"loc,{#10000},6,13,6,17" -locations_default(#20008,#10000,6,13,6,17) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20003) -exprContainers(#20007,#20001) -literals("alert","alert",#20007) -#20009=@"var;{alert};{#20000}" -variables(#20009,"alert",#20000) -bind(#20007,#20009) -#20010=* -exprs(#20010,4,#20005,0,"""Hello, world!""") -#20011=@"loc,{#10000},6,19,6,33" -locations_default(#20011,#10000,6,19,6,33) -hasLocation(#20010,#20011) -enclosingStmt(#20010,#20003) -exprContainers(#20010,#20001) -literals("Hello, world!","""Hello, world!""",#20010) -#20012=* -lines(#20012,#20001,""," +#20002=* +lines(#20002,#20001,""," ") -#20013=@"loc,{#10000},5,17,5,16" -locations_default(#20013,#10000,5,17,5,16) +#20003=@"loc,{#10000},5,17,5,16" +locations_default(#20003,#10000,5,17,5,16) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," alert(""Hello, world!"");"," +") +#20005=@"loc,{#10000},6,1,6,35" +locations_default(#20005,#10000,6,1,6,35) +hasLocation(#20004,#20005) +indentation(#10000,6," ",12) +#20006=* +lines(#20006,#20001," ","") +#20007=@"loc,{#10000},7,1,7,8" +locations_default(#20007,#10000,7,1,7,8) +hasLocation(#20006,#20007) +numlines(#20001,3,1,0) +#20008=* +tokeninfo(#20008,6,#20001,0,"alert") +#20009=@"loc,{#10000},6,13,6,17" +locations_default(#20009,#10000,6,13,6,17) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,1,"(") +#20011=@"loc,{#10000},6,18,6,18" +locations_default(#20011,#10000,6,18,6,18) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,4,#20001,2,"""Hello, world!""") +#20013=@"loc,{#10000},6,19,6,33" +locations_default(#20013,#10000,6,19,6,33) hasLocation(#20012,#20013) #20014=* -lines(#20014,#20001," alert(""Hello, world!"");"," -") -#20015=@"loc,{#10000},6,1,6,35" -locations_default(#20015,#10000,6,1,6,35) +tokeninfo(#20014,8,#20001,3,")") +#20015=@"loc,{#10000},6,34,6,34" +locations_default(#20015,#10000,6,34,6,34) hasLocation(#20014,#20015) -indentation(#10000,6," ",12) #20016=* -lines(#20016,#20001," ","") -#20017=@"loc,{#10000},7,1,7,8" -locations_default(#20017,#10000,7,1,7,8) +tokeninfo(#20016,8,#20001,4,";") +#20017=@"loc,{#10000},6,35,6,35" +locations_default(#20017,#10000,6,35,6,35) hasLocation(#20016,#20017) -numlines(#20001,3,1,0) #20018=* -tokeninfo(#20018,6,#20001,0,"alert") -hasLocation(#20018,#20008) -#20019=* -tokeninfo(#20019,8,#20001,1,"(") -#20020=@"loc,{#10000},6,18,6,18" -locations_default(#20020,#10000,6,18,6,18) -hasLocation(#20019,#20020) +tokeninfo(#20018,0,#20001,5,"") +#20019=@"loc,{#10000},7,9,7,8" +locations_default(#20019,#10000,7,9,7,8) +hasLocation(#20018,#20019) +toplevels(#20001,1) +#20020=@"loc,{#10000},5,17,7,8" +locations_default(#20020,#10000,5,17,7,8) +hasLocation(#20001,#20020) #20021=* -tokeninfo(#20021,4,#20001,2,"""Hello, world!""") -hasLocation(#20021,#20011) -#20022=* -tokeninfo(#20022,8,#20001,3,")") -#20023=@"loc,{#10000},6,34,6,34" -locations_default(#20023,#10000,6,34,6,34) -hasLocation(#20022,#20023) -#20024=* -tokeninfo(#20024,8,#20001,4,";") -#20025=@"loc,{#10000},6,35,6,35" -locations_default(#20025,#10000,6,35,6,35) -hasLocation(#20024,#20025) -#20026=* -tokeninfo(#20026,0,#20001,5,"") -#20027=@"loc,{#10000},7,9,7,8" -locations_default(#20027,#10000,7,9,7,8) -hasLocation(#20026,#20027) +stmts(#20021,2,#20001,0,"alert("" ... rld!"");") +#20022=@"loc,{#10000},6,13,6,35" +locations_default(#20022,#10000,6,13,6,35) +hasLocation(#20021,#20022) +stmtContainers(#20021,#20001) +#20023=* +exprs(#20023,13,#20021,0,"alert("" ... orld!"")") +#20024=@"loc,{#10000},6,13,6,34" +locations_default(#20024,#10000,6,13,6,34) +hasLocation(#20023,#20024) +enclosingStmt(#20023,#20021) +exprContainers(#20023,#20001) +#20025=* +exprs(#20025,79,#20023,-1,"alert") +hasLocation(#20025,#20009) +enclosingStmt(#20025,#20021) +exprContainers(#20025,#20001) +literals("alert","alert",#20025) +#20026=@"var;{alert};{#20000}" +variables(#20026,"alert",#20000) +bind(#20025,#20026) +#20027=* +exprs(#20027,4,#20023,0,"""Hello, world!""") +hasLocation(#20027,#20013) +enclosingStmt(#20027,#20021) +exprContainers(#20027,#20001) +literals("Hello, world!","""Hello, world!""",#20027) #20028=* entry_cfg_node(#20028,#20001) -hasLocation(#20028,#20013) +hasLocation(#20028,#20003) #20029=* exit_cfg_node(#20029,#20001) -hasLocation(#20029,#20027) -successor(#20003,#20007) -successor(#20010,#20005) -successor(#20007,#20010) -successor(#20005,#20029) -successor(#20028,#20003) +hasLocation(#20029,#20019) +successor(#20021,#20025) +successor(#20027,#20023) +successor(#20025,#20027) +successor(#20023,#20029) +successor(#20028,#20021) #20030=@"script;{#10000},8,17" -toplevels(#20030,1) -#20031=@"loc,{#10000},8,17,8,17" -locations_default(#20031,#10000,8,17,8,17) -hasLocation(#20030,#20031) -#20032=* -stmts(#20032,0,#20030,0,";") -hasLocation(#20032,#20031) -stmtContainers(#20032,#20030) -#20033=* -lines(#20033,#20030,";","") -hasLocation(#20033,#20031) +#20031=* +lines(#20031,#20030,";","") +#20032=@"loc,{#10000},8,17,8,17" +locations_default(#20032,#10000,8,17,8,17) +hasLocation(#20031,#20032) numlines(#20030,1,1,0) +#20033=* +tokeninfo(#20033,8,#20030,0,";") +hasLocation(#20033,#20032) #20034=* -tokeninfo(#20034,8,#20030,0,";") -hasLocation(#20034,#20031) -#20035=* -tokeninfo(#20035,0,#20030,1,"") -#20036=@"loc,{#10000},8,18,8,17" -locations_default(#20036,#10000,8,18,8,17) -hasLocation(#20035,#20036) +tokeninfo(#20034,0,#20030,1,"") +#20035=@"loc,{#10000},8,18,8,17" +locations_default(#20035,#10000,8,18,8,17) +hasLocation(#20034,#20035) +toplevels(#20030,1) +hasLocation(#20030,#20032) +#20036=* +stmts(#20036,0,#20030,0,";") +hasLocation(#20036,#20032) +stmtContainers(#20036,#20030) #20037=* entry_cfg_node(#20037,#20030) #20038=@"loc,{#10000},8,17,8,16" @@ -129,94 +129,94 @@ locations_default(#20038,#10000,8,17,8,16) hasLocation(#20037,#20038) #20039=* exit_cfg_node(#20039,#20030) -hasLocation(#20039,#20036) -successor(#20032,#20039) -successor(#20037,#20032) +hasLocation(#20039,#20035) +successor(#20036,#20039) +successor(#20037,#20036) #20040=@"script;{#10000},11,29" -toplevels(#20040,3) -#20041=@"loc,{#10000},11,29,11,48" -locations_default(#20041,#10000,11,29,11,48) -hasLocation(#20040,#20041) -#20042=* -stmts(#20042,2,#20040,0,"void(alert('Nope!'))") -hasLocation(#20042,#20041) -stmtContainers(#20042,#20040) -#20043=* -exprs(#20043,21,#20042,0,"void(alert('Nope!'))") -hasLocation(#20043,#20041) -enclosingStmt(#20043,#20042) -exprContainers(#20043,#20040) -#20044=* -exprs(#20044,63,#20043,0,"(alert('Nope!'))") -#20045=@"loc,{#10000},11,33,11,48" -locations_default(#20045,#10000,11,33,11,48) -hasLocation(#20044,#20045) -enclosingStmt(#20044,#20042) -exprContainers(#20044,#20040) -#20046=* -exprs(#20046,13,#20044,0,"alert('Nope!')") -#20047=@"loc,{#10000},11,34,11,47" -locations_default(#20047,#10000,11,34,11,47) -hasLocation(#20046,#20047) -enclosingStmt(#20046,#20042) -exprContainers(#20046,#20040) -#20048=* -exprs(#20048,79,#20046,-1,"alert") -#20049=@"loc,{#10000},11,34,11,38" -locations_default(#20049,#10000,11,34,11,38) -hasLocation(#20048,#20049) -enclosingStmt(#20048,#20042) -exprContainers(#20048,#20040) -literals("alert","alert",#20048) -bind(#20048,#20009) -#20050=* -exprs(#20050,4,#20046,0,"'Nope!'") -#20051=@"loc,{#10000},11,40,11,46" -locations_default(#20051,#10000,11,40,11,46) -hasLocation(#20050,#20051) -enclosingStmt(#20050,#20042) -exprContainers(#20050,#20040) -literals("Nope!","'Nope!'",#20050) -#20052=* -lines(#20052,#20040,"void(alert('Nope!'))","") -hasLocation(#20052,#20041) +#20041=* +lines(#20041,#20040,"void(alert('Nope!'))","") +#20042=@"loc,{#10000},11,29,11,48" +locations_default(#20042,#10000,11,29,11,48) +hasLocation(#20041,#20042) numlines(#20040,1,1,0) +#20043=* +tokeninfo(#20043,7,#20040,0,"void") +#20044=@"loc,{#10000},11,29,11,32" +locations_default(#20044,#10000,11,29,11,32) +hasLocation(#20043,#20044) +#20045=* +tokeninfo(#20045,8,#20040,1,"(") +#20046=@"loc,{#10000},11,33,11,33" +locations_default(#20046,#10000,11,33,11,33) +hasLocation(#20045,#20046) +#20047=* +tokeninfo(#20047,6,#20040,2,"alert") +#20048=@"loc,{#10000},11,34,11,38" +locations_default(#20048,#10000,11,34,11,38) +hasLocation(#20047,#20048) +#20049=* +tokeninfo(#20049,8,#20040,3,"(") +#20050=@"loc,{#10000},11,39,11,39" +locations_default(#20050,#10000,11,39,11,39) +hasLocation(#20049,#20050) +#20051=* +tokeninfo(#20051,4,#20040,4,"'Nope!'") +#20052=@"loc,{#10000},11,40,11,46" +locations_default(#20052,#10000,11,40,11,46) +hasLocation(#20051,#20052) #20053=* -tokeninfo(#20053,7,#20040,0,"void") -#20054=@"loc,{#10000},11,29,11,32" -locations_default(#20054,#10000,11,29,11,32) +tokeninfo(#20053,8,#20040,5,")") +#20054=@"loc,{#10000},11,47,11,47" +locations_default(#20054,#10000,11,47,11,47) hasLocation(#20053,#20054) #20055=* -tokeninfo(#20055,8,#20040,1,"(") -#20056=@"loc,{#10000},11,33,11,33" -locations_default(#20056,#10000,11,33,11,33) +tokeninfo(#20055,8,#20040,6,")") +#20056=@"loc,{#10000},11,48,11,48" +locations_default(#20056,#10000,11,48,11,48) hasLocation(#20055,#20056) #20057=* -tokeninfo(#20057,6,#20040,2,"alert") -hasLocation(#20057,#20049) -#20058=* -tokeninfo(#20058,8,#20040,3,"(") -#20059=@"loc,{#10000},11,39,11,39" -locations_default(#20059,#10000,11,39,11,39) -hasLocation(#20058,#20059) +tokeninfo(#20057,0,#20040,7,"") +#20058=@"loc,{#10000},11,49,11,48" +locations_default(#20058,#10000,11,49,11,48) +hasLocation(#20057,#20058) +toplevels(#20040,3) +hasLocation(#20040,#20042) +#20059=* +stmts(#20059,2,#20040,0,"void(alert('Nope!'))") +hasLocation(#20059,#20042) +stmtContainers(#20059,#20040) #20060=* -tokeninfo(#20060,4,#20040,4,"'Nope!'") -hasLocation(#20060,#20051) +exprs(#20060,21,#20059,0,"void(alert('Nope!'))") +hasLocation(#20060,#20042) +enclosingStmt(#20060,#20059) +exprContainers(#20060,#20040) #20061=* -tokeninfo(#20061,8,#20040,5,")") -#20062=@"loc,{#10000},11,47,11,47" -locations_default(#20062,#10000,11,47,11,47) +exprs(#20061,63,#20060,0,"(alert('Nope!'))") +#20062=@"loc,{#10000},11,33,11,48" +locations_default(#20062,#10000,11,33,11,48) hasLocation(#20061,#20062) +enclosingStmt(#20061,#20059) +exprContainers(#20061,#20040) #20063=* -tokeninfo(#20063,8,#20040,6,")") -#20064=@"loc,{#10000},11,48,11,48" -locations_default(#20064,#10000,11,48,11,48) +exprs(#20063,13,#20061,0,"alert('Nope!')") +#20064=@"loc,{#10000},11,34,11,47" +locations_default(#20064,#10000,11,34,11,47) hasLocation(#20063,#20064) +enclosingStmt(#20063,#20059) +exprContainers(#20063,#20040) #20065=* -tokeninfo(#20065,0,#20040,7,"") -#20066=@"loc,{#10000},11,49,11,48" -locations_default(#20066,#10000,11,49,11,48) -hasLocation(#20065,#20066) +exprs(#20065,79,#20063,-1,"alert") +hasLocation(#20065,#20048) +enclosingStmt(#20065,#20059) +exprContainers(#20065,#20040) +literals("alert","alert",#20065) +bind(#20065,#20026) +#20066=* +exprs(#20066,4,#20063,0,"'Nope!'") +hasLocation(#20066,#20052) +enclosingStmt(#20066,#20059) +exprContainers(#20066,#20040) +literals("Nope!","'Nope!'",#20066) #20067=* entry_cfg_node(#20067,#20040) #20068=@"loc,{#10000},11,29,11,28" @@ -224,70 +224,70 @@ locations_default(#20068,#10000,11,29,11,28) hasLocation(#20067,#20068) #20069=* exit_cfg_node(#20069,#20040) -hasLocation(#20069,#20066) -successor(#20042,#20044) -successor(#20044,#20048) -successor(#20050,#20046) -successor(#20048,#20050) -successor(#20046,#20043) -successor(#20043,#20069) -successor(#20067,#20042) +hasLocation(#20069,#20058) +successor(#20059,#20061) +successor(#20061,#20065) +successor(#20066,#20063) +successor(#20065,#20066) +successor(#20063,#20060) +successor(#20060,#20069) +successor(#20067,#20059) #20070=@"script;{#10000},12,23" -toplevels(#20070,2) -#20071=@"loc,{#10000},12,23,12,51" -locations_default(#20071,#10000,12,23,12,51) -hasLocation(#20070,#20071) -#20072=* -stmts(#20072,2,#20070,0,"alert(' ... lick!')") -hasLocation(#20072,#20071) -stmtContainers(#20072,#20070) -#20073=* -exprs(#20073,13,#20072,0,"alert(' ... lick!')") -hasLocation(#20073,#20071) -enclosingStmt(#20073,#20072) -exprContainers(#20073,#20070) -#20074=* -exprs(#20074,79,#20073,-1,"alert") -#20075=@"loc,{#10000},12,23,12,27" -locations_default(#20075,#10000,12,23,12,27) -hasLocation(#20074,#20075) -enclosingStmt(#20074,#20072) -exprContainers(#20074,#20070) -literals("alert","alert",#20074) -bind(#20074,#20009) -#20076=* -exprs(#20076,4,#20073,0,"'I said ... click!'") -#20077=@"loc,{#10000},12,29,12,50" -locations_default(#20077,#10000,12,29,12,50) -hasLocation(#20076,#20077) -enclosingStmt(#20076,#20072) -exprContainers(#20076,#20070) -literals("I said don't click!","'I said don\'t click!'",#20076) -#20078=* -lines(#20078,#20070,"alert('I said don\'t click!')","") -hasLocation(#20078,#20071) +#20071=* +lines(#20071,#20070,"alert('I said don\'t click!')","") +#20072=@"loc,{#10000},12,23,12,51" +locations_default(#20072,#10000,12,23,12,51) +hasLocation(#20071,#20072) numlines(#20070,1,1,0) +#20073=* +tokeninfo(#20073,6,#20070,0,"alert") +#20074=@"loc,{#10000},12,23,12,27" +locations_default(#20074,#10000,12,23,12,27) +hasLocation(#20073,#20074) +#20075=* +tokeninfo(#20075,8,#20070,1,"(") +#20076=@"loc,{#10000},12,28,12,28" +locations_default(#20076,#10000,12,28,12,28) +hasLocation(#20075,#20076) +#20077=* +tokeninfo(#20077,4,#20070,2,"'I said don\'t click!'") +#20078=@"loc,{#10000},12,29,12,50" +locations_default(#20078,#10000,12,29,12,50) +hasLocation(#20077,#20078) #20079=* -tokeninfo(#20079,6,#20070,0,"alert") -hasLocation(#20079,#20075) -#20080=* -tokeninfo(#20080,8,#20070,1,"(") -#20081=@"loc,{#10000},12,28,12,28" -locations_default(#20081,#10000,12,28,12,28) -hasLocation(#20080,#20081) -#20082=* -tokeninfo(#20082,4,#20070,2,"'I said don\'t click!'") -hasLocation(#20082,#20077) +tokeninfo(#20079,8,#20070,3,")") +#20080=@"loc,{#10000},12,51,12,51" +locations_default(#20080,#10000,12,51,12,51) +hasLocation(#20079,#20080) +#20081=* +tokeninfo(#20081,0,#20070,4,"") +#20082=@"loc,{#10000},12,52,12,51" +locations_default(#20082,#10000,12,52,12,51) +hasLocation(#20081,#20082) +toplevels(#20070,2) +hasLocation(#20070,#20072) #20083=* -tokeninfo(#20083,8,#20070,3,")") -#20084=@"loc,{#10000},12,51,12,51" -locations_default(#20084,#10000,12,51,12,51) -hasLocation(#20083,#20084) +stmts(#20083,2,#20070,0,"alert(' ... lick!')") +hasLocation(#20083,#20072) +stmtContainers(#20083,#20070) +#20084=* +exprs(#20084,13,#20083,0,"alert(' ... lick!')") +hasLocation(#20084,#20072) +enclosingStmt(#20084,#20083) +exprContainers(#20084,#20070) #20085=* -tokeninfo(#20085,0,#20070,4,"") -#20086=@"loc,{#10000},12,52,12,51" -locations_default(#20086,#10000,12,52,12,51) -hasLocation(#20085,#20086) +exprs(#20085,79,#20084,-1,"alert") +hasLocation(#20085,#20074) +enclosingStmt(#20085,#20083) +exprContainers(#20085,#20070) +literals("alert","alert",#20085) +bind(#20085,#20026) +#20086=* +exprs(#20086,4,#20084,0,"'I said ... click!'") +hasLocation(#20086,#20078) +enclosingStmt(#20086,#20083) +exprContainers(#20086,#20070) +literals("I said don't click!","'I said don\'t click!'",#20086) #20087=* entry_cfg_node(#20087,#20070) #20088=@"loc,{#10000},12,23,12,22" @@ -295,51 +295,51 @@ locations_default(#20088,#10000,12,23,12,22) hasLocation(#20087,#20088) #20089=* exit_cfg_node(#20089,#20070) -hasLocation(#20089,#20086) -successor(#20072,#20074) -successor(#20076,#20073) -successor(#20074,#20076) -successor(#20073,#20089) -successor(#20087,#20072) +hasLocation(#20089,#20082) +successor(#20083,#20085) +successor(#20086,#20084) +successor(#20085,#20086) +successor(#20084,#20089) +successor(#20087,#20083) #20090=@"script;{#10000},13,21" -toplevels(#20090,2) -#20091=@"loc,{#10000},13,21,13,33" -locations_default(#20091,#10000,13,21,13,33) -hasLocation(#20090,#20091) -#20092=* -stmts(#20092,9,#20090,0,"return false;") -hasLocation(#20092,#20091) -stmtContainers(#20092,#20090) -#20093=* -exprs(#20093,2,#20092,0,"false") -#20094=@"loc,{#10000},13,28,13,32" -locations_default(#20094,#10000,13,28,13,32) -hasLocation(#20093,#20094) -enclosingStmt(#20093,#20092) -exprContainers(#20093,#20090) -literals("false","false",#20093) -#20095=* -lines(#20095,#20090,"return false;","") -hasLocation(#20095,#20091) +#20091=* +lines(#20091,#20090,"return false;","") +#20092=@"loc,{#10000},13,21,13,33" +locations_default(#20092,#10000,13,21,13,33) +hasLocation(#20091,#20092) numlines(#20090,1,1,0) -#20096=* -tokeninfo(#20096,7,#20090,0,"return") -#20097=@"loc,{#10000},13,21,13,26" -locations_default(#20097,#10000,13,21,13,26) -hasLocation(#20096,#20097) -#20098=* -tokeninfo(#20098,2,#20090,1,"false") -hasLocation(#20098,#20094) +#20093=* +tokeninfo(#20093,7,#20090,0,"return") +#20094=@"loc,{#10000},13,21,13,26" +locations_default(#20094,#10000,13,21,13,26) +hasLocation(#20093,#20094) +#20095=* +tokeninfo(#20095,2,#20090,1,"false") +#20096=@"loc,{#10000},13,28,13,32" +locations_default(#20096,#10000,13,28,13,32) +hasLocation(#20095,#20096) +#20097=* +tokeninfo(#20097,8,#20090,2,";") +#20098=@"loc,{#10000},13,33,13,33" +locations_default(#20098,#10000,13,33,13,33) +hasLocation(#20097,#20098) #20099=* -tokeninfo(#20099,8,#20090,2,";") -#20100=@"loc,{#10000},13,33,13,33" -locations_default(#20100,#10000,13,33,13,33) +tokeninfo(#20099,0,#20090,3,"") +#20100=@"loc,{#10000},13,34,13,33" +locations_default(#20100,#10000,13,34,13,33) hasLocation(#20099,#20100) +toplevels(#20090,2) +hasLocation(#20090,#20092) #20101=* -tokeninfo(#20101,0,#20090,3,"") -#20102=@"loc,{#10000},13,34,13,33" -locations_default(#20102,#10000,13,34,13,33) -hasLocation(#20101,#20102) +stmts(#20101,9,#20090,0,"return false;") +hasLocation(#20101,#20092) +stmtContainers(#20101,#20090) +#20102=* +exprs(#20102,2,#20101,0,"false") +hasLocation(#20102,#20096) +enclosingStmt(#20102,#20101) +exprContainers(#20102,#20090) +literals("false","false",#20102) #20103=* entry_cfg_node(#20103,#20090) #20104=@"loc,{#10000},13,21,13,20" @@ -347,10 +347,10 @@ locations_default(#20104,#10000,13,21,13,20) hasLocation(#20103,#20104) #20105=* exit_cfg_node(#20105,#20090) -hasLocation(#20105,#20102) -successor(#20093,#20092) -successor(#20092,#20105) -successor(#20103,#20093) +hasLocation(#20105,#20100) +successor(#20102,#20101) +successor(#20101,#20105) +successor(#20103,#20102) #20106=* xmlElements(#20106,"html",#10000,0,#10000) #20107=@"loc,{#10000},1,1,18,7" diff --git a/javascript/extractor/tests/html/output/trap/tst.xhtml.trap b/javascript/extractor/tests/html/output/trap/tst.xhtml.trap index 2ea4a130c1e..b948e975a4e 100644 --- a/javascript/extractor/tests/html/output/trap/tst.xhtml.trap +++ b/javascript/extractor/tests/html/output/trap/tst.xhtml.trap @@ -9,71 +9,71 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},7,43" -toplevels(#20001,1) -#20002=@"loc,{#10000},7,43,10,7" -locations_default(#20002,#10000,7,43,10,7) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"42;") -#20004=@"loc,{#10000},9,5,9,7" -locations_default(#20004,#10000,9,5,9,7) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,3,#20003,0,"42") -#20006=@"loc,{#10000},9,5,9,6" -locations_default(#20006,#10000,9,5,9,6) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -literals("42","42",#20005) -#20007=* -lines(#20007,#20001,""," +#20002=* +lines(#20002,#20001,""," ") -#20008=@"loc,{#10000},7,43,7,42" -locations_default(#20008,#10000,7,43,7,42) -hasLocation(#20007,#20008) -#20009=* -lines(#20009,#20001," "," +#20003=@"loc,{#10000},7,43,7,42" +locations_default(#20003,#10000,7,43,7,42) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," "," ") -#20010=@"loc,{#10000},8,1,8,14" -locations_default(#20010,#10000,8,1,8,14) -hasLocation(#20009,#20010) -#20011=* -lines(#20011,#20001," 42;"," +#20005=@"loc,{#10000},8,1,8,14" +locations_default(#20005,#10000,8,1,8,14) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001," 42;"," ") -#20012=@"loc,{#10000},9,1,9,7" -locations_default(#20012,#10000,9,1,9,7) -hasLocation(#20011,#20012) +#20007=@"loc,{#10000},9,1,9,7" +locations_default(#20007,#10000,9,1,9,7) +hasLocation(#20006,#20007) indentation(#10000,9," ",4) -#20013=* -lines(#20013,#20001," ","") -#20014=@"loc,{#10000},10,1,10,7" -locations_default(#20014,#10000,10,1,10,7) -hasLocation(#20013,#20014) +#20008=* +lines(#20008,#20001," ","") +#20009=@"loc,{#10000},10,1,10,7" +locations_default(#20009,#10000,10,1,10,7) +hasLocation(#20008,#20009) numlines(#20001,4,1,0) -#20015=* -tokeninfo(#20015,3,#20001,0,"42") -hasLocation(#20015,#20006) -#20016=* -tokeninfo(#20016,8,#20001,1,";") -#20017=@"loc,{#10000},9,7,9,7" -locations_default(#20017,#10000,9,7,9,7) -hasLocation(#20016,#20017) -#20018=* -tokeninfo(#20018,0,#20001,2,"") -#20019=@"loc,{#10000},10,8,10,7" -locations_default(#20019,#10000,10,8,10,7) -hasLocation(#20018,#20019) +#20010=* +tokeninfo(#20010,3,#20001,0,"42") +#20011=@"loc,{#10000},9,5,9,6" +locations_default(#20011,#10000,9,5,9,6) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,8,#20001,1,";") +#20013=@"loc,{#10000},9,7,9,7" +locations_default(#20013,#10000,9,7,9,7) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,0,#20001,2,"") +#20015=@"loc,{#10000},10,8,10,7" +locations_default(#20015,#10000,10,8,10,7) +hasLocation(#20014,#20015) +toplevels(#20001,1) +#20016=@"loc,{#10000},7,43,10,7" +locations_default(#20016,#10000,7,43,10,7) +hasLocation(#20001,#20016) +#20017=* +stmts(#20017,2,#20001,0,"42;") +#20018=@"loc,{#10000},9,5,9,7" +locations_default(#20018,#10000,9,5,9,7) +hasLocation(#20017,#20018) +stmtContainers(#20017,#20001) +#20019=* +exprs(#20019,3,#20017,0,"42") +hasLocation(#20019,#20011) +enclosingStmt(#20019,#20017) +exprContainers(#20019,#20001) +literals("42","42",#20019) #20020=* entry_cfg_node(#20020,#20001) -hasLocation(#20020,#20008) +hasLocation(#20020,#20003) #20021=* exit_cfg_node(#20021,#20001) -hasLocation(#20021,#20019) -successor(#20003,#20005) -successor(#20005,#20021) -successor(#20020,#20003) +hasLocation(#20021,#20015) +successor(#20017,#20019) +successor(#20019,#20021) +successor(#20020,#20017) #20022=* xmlElements(#20022,"html",#10000,0,#10000) #20023=@"loc,{#10000},2,1,12,7" diff --git a/javascript/extractor/tests/html/output/trap/tst2.html.trap b/javascript/extractor/tests/html/output/trap/tst2.html.trap index 0cd62140a70..03904b418b9 100644 --- a/javascript/extractor/tests/html/output/trap/tst2.html.trap +++ b/javascript/extractor/tests/html/output/trap/tst2.html.trap @@ -9,52 +9,52 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},2,31" -toplevels(#20001,1) -#20002=@"loc,{#10000},2,31,2,40" -locations_default(#20002,#10000,2,31,2,40) -hasLocation(#20001,#20002) -#20003=@"var;{hello};{#20000}" -variables(#20003,"hello",#20000) -#20004=* -stmts(#20004,18,#20001,0,"var hello;") -hasLocation(#20004,#20002) -stmtContainers(#20004,#20001) -#20005=* -exprs(#20005,64,#20004,0,"hello") -#20006=@"loc,{#10000},2,35,2,39" -locations_default(#20006,#10000,2,35,2,39) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20004) -exprContainers(#20005,#20001) -#20007=* -exprs(#20007,78,#20005,0,"hello") -hasLocation(#20007,#20006) -enclosingStmt(#20007,#20004) -exprContainers(#20007,#20001) -literals("hello","hello",#20007) -decl(#20007,#20003) -#20008=* -lines(#20008,#20001,"var hello;","") -hasLocation(#20008,#20002) +#20002=* +lines(#20002,#20001,"var hello;","") +#20003=@"loc,{#10000},2,31,2,40" +locations_default(#20003,#10000,2,31,2,40) +hasLocation(#20002,#20003) numlines(#20001,1,1,0) -#20009=* -tokeninfo(#20009,7,#20001,0,"var") -#20010=@"loc,{#10000},2,31,2,33" -locations_default(#20010,#10000,2,31,2,33) -hasLocation(#20009,#20010) -#20011=* -tokeninfo(#20011,6,#20001,1,"hello") -hasLocation(#20011,#20006) -#20012=* -tokeninfo(#20012,8,#20001,2,";") -#20013=@"loc,{#10000},2,40,2,40" -locations_default(#20013,#10000,2,40,2,40) -hasLocation(#20012,#20013) +#20004=* +tokeninfo(#20004,7,#20001,0,"var") +#20005=@"loc,{#10000},2,31,2,33" +locations_default(#20005,#10000,2,31,2,33) +hasLocation(#20004,#20005) +#20006=* +tokeninfo(#20006,6,#20001,1,"hello") +#20007=@"loc,{#10000},2,35,2,39" +locations_default(#20007,#10000,2,35,2,39) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,8,#20001,2,";") +#20009=@"loc,{#10000},2,40,2,40" +locations_default(#20009,#10000,2,40,2,40) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,0,#20001,3,"") +#20011=@"loc,{#10000},2,41,2,40" +locations_default(#20011,#10000,2,41,2,40) +hasLocation(#20010,#20011) +toplevels(#20001,1) +hasLocation(#20001,#20003) +#20012=@"var;{hello};{#20000}" +variables(#20012,"hello",#20000) +#20013=* +stmts(#20013,18,#20001,0,"var hello;") +hasLocation(#20013,#20003) +stmtContainers(#20013,#20001) #20014=* -tokeninfo(#20014,0,#20001,3,"") -#20015=@"loc,{#10000},2,41,2,40" -locations_default(#20015,#10000,2,41,2,40) -hasLocation(#20014,#20015) +exprs(#20014,64,#20013,0,"hello") +hasLocation(#20014,#20007) +enclosingStmt(#20014,#20013) +exprContainers(#20014,#20001) +#20015=* +exprs(#20015,78,#20014,0,"hello") +hasLocation(#20015,#20007) +enclosingStmt(#20015,#20013) +exprContainers(#20015,#20001) +literals("hello","hello",#20015) +decl(#20015,#20012) #20016=* entry_cfg_node(#20016,#20001) #20017=@"loc,{#10000},2,31,2,30" @@ -62,58 +62,58 @@ locations_default(#20017,#10000,2,31,2,30) hasLocation(#20016,#20017) #20018=* exit_cfg_node(#20018,#20001) -hasLocation(#20018,#20015) -successor(#20004,#20007) -successor(#20007,#20005) -successor(#20005,#20018) -successor(#20016,#20004) +hasLocation(#20018,#20011) +successor(#20013,#20015) +successor(#20015,#20014) +successor(#20014,#20018) +successor(#20016,#20013) #20019=@"script;{#10000},3,29" -toplevels(#20019,1) -#20020=@"loc,{#10000},3,29,3,38" -locations_default(#20020,#10000,3,29,3,38) -hasLocation(#20019,#20020) -#20021=@"var;{world};{#20000}" -variables(#20021,"world",#20000) -#20022=* -stmts(#20022,18,#20019,0,"var world;") -hasLocation(#20022,#20020) -stmtContainers(#20022,#20019) -#20023=* -exprs(#20023,64,#20022,0,"world") -#20024=@"loc,{#10000},3,33,3,37" -locations_default(#20024,#10000,3,33,3,37) -hasLocation(#20023,#20024) -enclosingStmt(#20023,#20022) -exprContainers(#20023,#20019) -#20025=* -exprs(#20025,78,#20023,0,"world") -hasLocation(#20025,#20024) -enclosingStmt(#20025,#20022) -exprContainers(#20025,#20019) -literals("world","world",#20025) -decl(#20025,#20021) -#20026=* -lines(#20026,#20019,"var world;","") -hasLocation(#20026,#20020) +#20020=* +lines(#20020,#20019,"var world;","") +#20021=@"loc,{#10000},3,29,3,38" +locations_default(#20021,#10000,3,29,3,38) +hasLocation(#20020,#20021) numlines(#20019,1,1,0) -#20027=* -tokeninfo(#20027,7,#20019,0,"var") -#20028=@"loc,{#10000},3,29,3,31" -locations_default(#20028,#10000,3,29,3,31) -hasLocation(#20027,#20028) -#20029=* -tokeninfo(#20029,6,#20019,1,"world") -hasLocation(#20029,#20024) -#20030=* -tokeninfo(#20030,8,#20019,2,";") -#20031=@"loc,{#10000},3,38,3,38" -locations_default(#20031,#10000,3,38,3,38) -hasLocation(#20030,#20031) +#20022=* +tokeninfo(#20022,7,#20019,0,"var") +#20023=@"loc,{#10000},3,29,3,31" +locations_default(#20023,#10000,3,29,3,31) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,6,#20019,1,"world") +#20025=@"loc,{#10000},3,33,3,37" +locations_default(#20025,#10000,3,33,3,37) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20019,2,";") +#20027=@"loc,{#10000},3,38,3,38" +locations_default(#20027,#10000,3,38,3,38) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,0,#20019,3,"") +#20029=@"loc,{#10000},3,39,3,38" +locations_default(#20029,#10000,3,39,3,38) +hasLocation(#20028,#20029) +toplevels(#20019,1) +hasLocation(#20019,#20021) +#20030=@"var;{world};{#20000}" +variables(#20030,"world",#20000) +#20031=* +stmts(#20031,18,#20019,0,"var world;") +hasLocation(#20031,#20021) +stmtContainers(#20031,#20019) #20032=* -tokeninfo(#20032,0,#20019,3,"") -#20033=@"loc,{#10000},3,39,3,38" -locations_default(#20033,#10000,3,39,3,38) -hasLocation(#20032,#20033) +exprs(#20032,64,#20031,0,"world") +hasLocation(#20032,#20025) +enclosingStmt(#20032,#20031) +exprContainers(#20032,#20019) +#20033=* +exprs(#20033,78,#20032,0,"world") +hasLocation(#20033,#20025) +enclosingStmt(#20033,#20031) +exprContainers(#20033,#20019) +literals("world","world",#20033) +decl(#20033,#20030) #20034=* entry_cfg_node(#20034,#20019) #20035=@"loc,{#10000},3,29,3,28" @@ -121,188 +121,190 @@ locations_default(#20035,#10000,3,29,3,28) hasLocation(#20034,#20035) #20036=* exit_cfg_node(#20036,#20019) -hasLocation(#20036,#20033) -successor(#20022,#20025) -successor(#20025,#20023) -successor(#20023,#20036) -successor(#20034,#20022) +hasLocation(#20036,#20029) +successor(#20031,#20033) +successor(#20033,#20032) +successor(#20032,#20036) +successor(#20034,#20031) #20037=@"script;{#10000},4,75" -toplevels(#20037,1) -#20038=@"loc,{#10000},4,75,6,4" -locations_default(#20038,#10000,4,75,6,4) -hasLocation(#20037,#20038) -#20039=@"module;{#10000},4,75" -scopes(#20039,3) -scopenodes(#20037,#20039) -scopenesting(#20039,#20000) -isModule(#20037) -#20040=@"var;{inAModule};{#20039}" -variables(#20040,"inAModule",#20039) -#20041=* -stmts(#20041,18,#20037,0,"var inAModule;") -#20042=@"loc,{#10000},5,7,5,20" -locations_default(#20042,#10000,5,7,5,20) -hasLocation(#20041,#20042) -stmtContainers(#20041,#20037) -#20043=* -exprs(#20043,64,#20041,0,"inAModule") -#20044=@"loc,{#10000},5,11,5,19" -locations_default(#20044,#10000,5,11,5,19) -hasLocation(#20043,#20044) -enclosingStmt(#20043,#20041) -exprContainers(#20043,#20037) -#20045=* -exprs(#20045,78,#20043,0,"inAModule") -hasLocation(#20045,#20044) -enclosingStmt(#20045,#20041) -exprContainers(#20045,#20037) -literals("inAModule","inAModule",#20045) -decl(#20045,#20040) -#20046=* -lines(#20046,#20037,""," +#20038=* +lines(#20038,#20037,""," ") -#20047=@"loc,{#10000},4,75,4,74" -locations_default(#20047,#10000,4,75,4,74) +#20039=@"loc,{#10000},4,75,4,74" +locations_default(#20039,#10000,4,75,4,74) +hasLocation(#20038,#20039) +#20040=* +lines(#20040,#20037," var inAModule;"," +") +#20041=@"loc,{#10000},5,1,5,20" +locations_default(#20041,#10000,5,1,5,20) +hasLocation(#20040,#20041) +indentation(#10000,5," ",6) +#20042=* +lines(#20042,#20037," ","") +#20043=@"loc,{#10000},6,1,6,4" +locations_default(#20043,#10000,6,1,6,4) +hasLocation(#20042,#20043) +numlines(#20037,3,1,0) +#20044=* +tokeninfo(#20044,7,#20037,0,"var") +#20045=@"loc,{#10000},5,7,5,9" +locations_default(#20045,#10000,5,7,5,9) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,6,#20037,1,"inAModule") +#20047=@"loc,{#10000},5,11,5,19" +locations_default(#20047,#10000,5,11,5,19) hasLocation(#20046,#20047) #20048=* -lines(#20048,#20037," var inAModule;"," -") -#20049=@"loc,{#10000},5,1,5,20" -locations_default(#20049,#10000,5,1,5,20) +tokeninfo(#20048,8,#20037,2,";") +#20049=@"loc,{#10000},5,20,5,20" +locations_default(#20049,#10000,5,20,5,20) hasLocation(#20048,#20049) -indentation(#10000,5," ",6) #20050=* -lines(#20050,#20037," ","") -#20051=@"loc,{#10000},6,1,6,4" -locations_default(#20051,#10000,6,1,6,4) +tokeninfo(#20050,0,#20037,3,"") +#20051=@"loc,{#10000},6,5,6,4" +locations_default(#20051,#10000,6,5,6,4) hasLocation(#20050,#20051) -numlines(#20037,3,1,0) -#20052=* -tokeninfo(#20052,7,#20037,0,"var") -#20053=@"loc,{#10000},5,7,5,9" -locations_default(#20053,#10000,5,7,5,9) -hasLocation(#20052,#20053) -#20054=* -tokeninfo(#20054,6,#20037,1,"inAModule") -hasLocation(#20054,#20044) +toplevels(#20037,1) +#20052=@"loc,{#10000},4,75,6,4" +locations_default(#20052,#10000,4,75,6,4) +hasLocation(#20037,#20052) +#20053=@"module;{#10000},4,75" +scopes(#20053,3) +scopenodes(#20037,#20053) +scopenesting(#20053,#20000) +isModule(#20037) +isES2015Module(#20037) +#20054=@"var;{inAModule};{#20053}" +variables(#20054,"inAModule",#20053) #20055=* -tokeninfo(#20055,8,#20037,2,";") -#20056=@"loc,{#10000},5,20,5,20" -locations_default(#20056,#10000,5,20,5,20) +stmts(#20055,18,#20037,0,"var inAModule;") +#20056=@"loc,{#10000},5,7,5,20" +locations_default(#20056,#10000,5,7,5,20) hasLocation(#20055,#20056) +stmtContainers(#20055,#20037) #20057=* -tokeninfo(#20057,0,#20037,3,"") -#20058=@"loc,{#10000},6,5,6,4" -locations_default(#20058,#10000,6,5,6,4) -hasLocation(#20057,#20058) +exprs(#20057,64,#20055,0,"inAModule") +hasLocation(#20057,#20047) +enclosingStmt(#20057,#20055) +exprContainers(#20057,#20037) +#20058=* +exprs(#20058,78,#20057,0,"inAModule") +hasLocation(#20058,#20047) +enclosingStmt(#20058,#20055) +exprContainers(#20058,#20037) +literals("inAModule","inAModule",#20058) +decl(#20058,#20054) #20059=* entry_cfg_node(#20059,#20037) -hasLocation(#20059,#20047) +hasLocation(#20059,#20039) #20060=* exit_cfg_node(#20060,#20037) -hasLocation(#20060,#20058) -successor(#20041,#20045) -successor(#20045,#20043) -successor(#20043,#20060) -successor(#20059,#20041) +hasLocation(#20060,#20051) +successor(#20055,#20058) +successor(#20058,#20057) +successor(#20057,#20060) +successor(#20059,#20055) #20061=@"script;{#10000},7,75" -toplevels(#20061,1) -#20062=@"loc,{#10000},7,75,9,4" -locations_default(#20062,#10000,7,75,9,4) -hasLocation(#20061,#20062) -#20063=@"module;{#10000},7,75" -scopes(#20063,3) -scopenodes(#20061,#20063) -scopenesting(#20063,#20000) -isModule(#20061) -#20064=@"var;{f};{#20063}" -variables(#20064,"f",#20063) -#20065=@"local_type_name;{f};{#20063}" -local_type_names(#20065,"f",#20063) -#20066=@"local_namespace_name;{f};{#20063}" -local_namespace_names(#20066,"f",#20063) -variables(#20064,"f",#20063) -local_type_names(#20065,"f",#20063) -local_namespace_names(#20066,"f",#20063) -#20067=* -stmts(#20067,27,#20061,0,"import f from ""f""") -#20068=@"loc,{#10000},8,7,8,23" -locations_default(#20068,#10000,8,7,8,23) -hasLocation(#20067,#20068) -stmtContainers(#20067,#20061) -#20069=* -exprs(#20069,4,#20067,-1,"""f""") -#20070=@"loc,{#10000},8,21,8,23" -locations_default(#20070,#10000,8,21,8,23) -hasLocation(#20069,#20070) -enclosingStmt(#20069,#20067) -exprContainers(#20069,#20061) -literals("f","""f""",#20069) -#20071=* -exprs(#20071,84,#20067,0,"f") -#20072=@"loc,{#10000},8,14,8,14" -locations_default(#20072,#10000,8,14,8,14) -hasLocation(#20071,#20072) -enclosingStmt(#20071,#20067) -exprContainers(#20071,#20061) -#20073=* -exprs(#20073,78,#20071,1,"f") -hasLocation(#20073,#20072) -enclosingStmt(#20073,#20067) -exprContainers(#20073,#20061) -literals("f","f",#20073) -decl(#20073,#20064) -typedecl(#20073,#20065) -namespacedecl(#20073,#20066) -#20074=* -lines(#20074,#20061,""," +#20062=* +lines(#20062,#20061,""," ") -#20075=@"loc,{#10000},7,75,7,74" -locations_default(#20075,#10000,7,75,7,74) +#20063=@"loc,{#10000},7,75,7,74" +locations_default(#20063,#10000,7,75,7,74) +hasLocation(#20062,#20063) +#20064=* +lines(#20064,#20061," import f from ""f"""," +") +#20065=@"loc,{#10000},8,1,8,23" +locations_default(#20065,#10000,8,1,8,23) +hasLocation(#20064,#20065) +indentation(#10000,8," ",6) +#20066=* +lines(#20066,#20061," ","") +#20067=@"loc,{#10000},9,1,9,4" +locations_default(#20067,#10000,9,1,9,4) +hasLocation(#20066,#20067) +numlines(#20061,3,1,0) +#20068=* +tokeninfo(#20068,7,#20061,0,"import") +#20069=@"loc,{#10000},8,7,8,12" +locations_default(#20069,#10000,8,7,8,12) +hasLocation(#20068,#20069) +#20070=* +tokeninfo(#20070,6,#20061,1,"f") +#20071=@"loc,{#10000},8,14,8,14" +locations_default(#20071,#10000,8,14,8,14) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,6,#20061,2,"from") +#20073=@"loc,{#10000},8,16,8,19" +locations_default(#20073,#10000,8,16,8,19) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,4,#20061,3,"""f""") +#20075=@"loc,{#10000},8,21,8,23" +locations_default(#20075,#10000,8,21,8,23) hasLocation(#20074,#20075) #20076=* -lines(#20076,#20061," import f from ""f"""," -") -#20077=@"loc,{#10000},8,1,8,23" -locations_default(#20077,#10000,8,1,8,23) +tokeninfo(#20076,0,#20061,4,"") +#20077=@"loc,{#10000},9,5,9,4" +locations_default(#20077,#10000,9,5,9,4) hasLocation(#20076,#20077) -indentation(#10000,8," ",6) -#20078=* -lines(#20078,#20061," ","") -#20079=@"loc,{#10000},9,1,9,4" -locations_default(#20079,#10000,9,1,9,4) -hasLocation(#20078,#20079) -numlines(#20061,3,1,0) -#20080=* -tokeninfo(#20080,7,#20061,0,"import") -#20081=@"loc,{#10000},8,7,8,12" -locations_default(#20081,#10000,8,7,8,12) -hasLocation(#20080,#20081) -#20082=* -tokeninfo(#20082,6,#20061,1,"f") -hasLocation(#20082,#20072) +toplevels(#20061,1) +#20078=@"loc,{#10000},7,75,9,4" +locations_default(#20078,#10000,7,75,9,4) +hasLocation(#20061,#20078) +#20079=@"module;{#10000},7,75" +scopes(#20079,3) +scopenodes(#20061,#20079) +scopenesting(#20079,#20000) +isModule(#20061) +isES2015Module(#20061) +#20080=@"var;{f};{#20079}" +variables(#20080,"f",#20079) +#20081=@"local_type_name;{f};{#20079}" +local_type_names(#20081,"f",#20079) +#20082=@"local_namespace_name;{f};{#20079}" +local_namespace_names(#20082,"f",#20079) +variables(#20080,"f",#20079) +local_type_names(#20081,"f",#20079) +local_namespace_names(#20082,"f",#20079) #20083=* -tokeninfo(#20083,6,#20061,2,"from") -#20084=@"loc,{#10000},8,16,8,19" -locations_default(#20084,#10000,8,16,8,19) +stmts(#20083,27,#20061,0,"import f from ""f""") +#20084=@"loc,{#10000},8,7,8,23" +locations_default(#20084,#10000,8,7,8,23) hasLocation(#20083,#20084) +stmtContainers(#20083,#20061) #20085=* -tokeninfo(#20085,4,#20061,3,"""f""") -hasLocation(#20085,#20070) +exprs(#20085,4,#20083,-1,"""f""") +hasLocation(#20085,#20075) +enclosingStmt(#20085,#20083) +exprContainers(#20085,#20061) +literals("f","""f""",#20085) #20086=* -tokeninfo(#20086,0,#20061,4,"") -#20087=@"loc,{#10000},9,5,9,4" -locations_default(#20087,#10000,9,5,9,4) -hasLocation(#20086,#20087) +exprs(#20086,84,#20083,0,"f") +hasLocation(#20086,#20071) +enclosingStmt(#20086,#20083) +exprContainers(#20086,#20061) +#20087=* +exprs(#20087,78,#20086,1,"f") +hasLocation(#20087,#20071) +enclosingStmt(#20087,#20083) +exprContainers(#20087,#20061) +literals("f","f",#20087) +decl(#20087,#20080) +typedecl(#20087,#20081) +namespacedecl(#20087,#20082) #20088=* entry_cfg_node(#20088,#20061) -hasLocation(#20088,#20075) +hasLocation(#20088,#20063) #20089=* exit_cfg_node(#20089,#20061) -hasLocation(#20089,#20087) -successor(#20067,#20089) -successor(#20071,#20067) -successor(#20088,#20071) +hasLocation(#20089,#20077) +successor(#20083,#20089) +successor(#20086,#20083) +successor(#20088,#20086) #20090=* xmlElements(#20090,"html",#10000,0,#10000) #20091=@"loc,{#10000},1,1,10,7" diff --git a/javascript/extractor/tests/jscript/output/trap/tst.js.trap b/javascript/extractor/tests/jscript/output/trap/tst.js.trap index bd0c31aee50..dc8bbc8765f 100644 --- a/javascript/extractor/tests/jscript/output/trap/tst.js.trap +++ b/javascript/extractor/tests/jscript/output/trap/tst.js.trap @@ -9,148 +9,147 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,1,52" -locations_default(#20002,#10000,1,1,1,52) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"functio ... es) { }") -hasLocation(#20003,#20002) -stmtContainers(#20003,#20001) +#20002=* +lines(#20002,#20001,"function ISMTPOnArrival::OnArrival( Msg, States) { }","") +#20003=@"loc,{#10000},1,1,1,52" +locations_default(#20003,#10000,1,1,1,52) +hasLocation(#20002,#20003) +numlines(#20001,1,1,0) #20004=* -exprs(#20004,47,#20003,0,"functio ... es) { }") -hasLocation(#20004,#20002) -enclosingStmt(#20004,#20003) -exprContainers(#20004,#20001) -#20005=* -exprs(#20005,14,#20004,0,"ISMTPOn ... Arrival") -#20006=@"loc,{#10000},1,10,1,34" -locations_default(#20006,#10000,1,10,1,34) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -#20007=* -exprs(#20007,79,#20005,0,"ISMTPOnArrival") -#20008=@"loc,{#10000},1,10,1,23" -locations_default(#20008,#10000,1,10,1,23) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20003) -exprContainers(#20007,#20001) -literals("ISMTPOnArrival","ISMTPOnArrival",#20007) -#20009=@"var;{ISMTPOnArrival};{#20000}" -variables(#20009,"ISMTPOnArrival",#20000) -bind(#20007,#20009) +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,"ISMTPOnArrival") +#20007=@"loc,{#10000},1,10,1,23" +locations_default(#20007,#10000,1,10,1,23) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,8,#20001,2,"::") +#20009=@"loc,{#10000},1,24,1,25" +locations_default(#20009,#10000,1,24,1,25) +hasLocation(#20008,#20009) #20010=* -exprs(#20010,0,#20005,1,"OnArrival") +tokeninfo(#20010,6,#20001,3,"OnArrival") #20011=@"loc,{#10000},1,26,1,34" locations_default(#20011,#10000,1,26,1,34) hasLocation(#20010,#20011) -enclosingStmt(#20010,#20003) -exprContainers(#20010,#20001) -literals("OnArrival","OnArrival",#20010) #20012=* -exprs(#20012,9,#20004,1,"functio ... es) { }") -hasLocation(#20012,#20002) -enclosingStmt(#20012,#20003) -exprContainers(#20012,#20001) -#20013=* -scopes(#20013,1) -scopenodes(#20012,#20013) -scopenesting(#20013,#20000) -#20014=@"var;{OnArrival};{#20013}" -variables(#20014,"OnArrival",#20013) -#20015=* -exprs(#20015,78,#20012,-1,"OnArrival") -hasLocation(#20015,#20011) -exprContainers(#20015,#20012) -literals("OnArrival","OnArrival",#20015) -decl(#20015,#20014) -#20016=@"var;{Msg};{#20013}" -variables(#20016,"Msg",#20013) -#20017=* -exprs(#20017,78,#20012,0,"Msg") -#20018=@"loc,{#10000},1,37,1,39" -locations_default(#20018,#10000,1,37,1,39) -hasLocation(#20017,#20018) -exprContainers(#20017,#20012) -literals("Msg","Msg",#20017) -decl(#20017,#20016) -#20019=@"var;{States};{#20013}" -variables(#20019,"States",#20013) +tokeninfo(#20012,8,#20001,4,"(") +#20013=@"loc,{#10000},1,35,1,35" +locations_default(#20013,#10000,1,35,1,35) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,6,#20001,5,"Msg") +#20015=@"loc,{#10000},1,37,1,39" +locations_default(#20015,#10000,1,37,1,39) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,6,",") +#20017=@"loc,{#10000},1,40,1,40" +locations_default(#20017,#10000,1,40,1,40) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,6,#20001,7,"States") +#20019=@"loc,{#10000},1,42,1,47" +locations_default(#20019,#10000,1,42,1,47) +hasLocation(#20018,#20019) #20020=* -exprs(#20020,78,#20012,1,"States") -#20021=@"loc,{#10000},1,42,1,47" -locations_default(#20021,#10000,1,42,1,47) +tokeninfo(#20020,8,#20001,8,")") +#20021=@"loc,{#10000},1,48,1,48" +locations_default(#20021,#10000,1,48,1,48) hasLocation(#20020,#20021) -exprContainers(#20020,#20012) -literals("States","States",#20020) -decl(#20020,#20019) -#20022=@"var;{arguments};{#20013}" -variables(#20022,"arguments",#20013) -isArgumentsObject(#20022) -#20023=* -stmts(#20023,1,#20012,-2,"{ }") -#20024=@"loc,{#10000},1,50,1,52" -locations_default(#20024,#10000,1,50,1,52) -hasLocation(#20023,#20024) -stmtContainers(#20023,#20012) -numlines(#20012,1,1,0) -#20025=* -lines(#20025,#20001,"function ISMTPOnArrival::OnArrival( Msg, States) { }","") -hasLocation(#20025,#20002) -numlines(#20001,1,1,0) +#20022=* +tokeninfo(#20022,8,#20001,9,"{") +#20023=@"loc,{#10000},1,50,1,50" +locations_default(#20023,#10000,1,50,1,50) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,10,"}") +#20025=@"loc,{#10000},1,52,1,52" +locations_default(#20025,#10000,1,52,1,52) +hasLocation(#20024,#20025) #20026=* -tokeninfo(#20026,7,#20001,0,"function") -#20027=@"loc,{#10000},1,1,1,8" -locations_default(#20027,#10000,1,1,1,8) +tokeninfo(#20026,0,#20001,11,"") +#20027=@"loc,{#10000},1,53,1,52" +locations_default(#20027,#10000,1,53,1,52) hasLocation(#20026,#20027) +toplevels(#20001,0) +hasLocation(#20001,#20003) #20028=* -tokeninfo(#20028,6,#20001,1,"ISMTPOnArrival") -hasLocation(#20028,#20008) +stmts(#20028,2,#20001,0,"functio ... es) { }") +hasLocation(#20028,#20003) +stmtContainers(#20028,#20001) #20029=* -tokeninfo(#20029,8,#20001,2,"::") -#20030=@"loc,{#10000},1,24,1,25" -locations_default(#20030,#10000,1,24,1,25) -hasLocation(#20029,#20030) -#20031=* -tokeninfo(#20031,6,#20001,3,"OnArrival") -hasLocation(#20031,#20011) +exprs(#20029,47,#20028,0,"functio ... es) { }") +hasLocation(#20029,#20003) +enclosingStmt(#20029,#20028) +exprContainers(#20029,#20001) +#20030=* +exprs(#20030,14,#20029,0,"ISMTPOn ... Arrival") +#20031=@"loc,{#10000},1,10,1,34" +locations_default(#20031,#10000,1,10,1,34) +hasLocation(#20030,#20031) +enclosingStmt(#20030,#20028) +exprContainers(#20030,#20001) #20032=* -tokeninfo(#20032,8,#20001,4,"(") -#20033=@"loc,{#10000},1,35,1,35" -locations_default(#20033,#10000,1,35,1,35) -hasLocation(#20032,#20033) +exprs(#20032,79,#20030,0,"ISMTPOnArrival") +hasLocation(#20032,#20007) +enclosingStmt(#20032,#20028) +exprContainers(#20032,#20001) +literals("ISMTPOnArrival","ISMTPOnArrival",#20032) +#20033=@"var;{ISMTPOnArrival};{#20000}" +variables(#20033,"ISMTPOnArrival",#20000) +bind(#20032,#20033) #20034=* -tokeninfo(#20034,6,#20001,5,"Msg") -hasLocation(#20034,#20018) +exprs(#20034,0,#20030,1,"OnArrival") +hasLocation(#20034,#20011) +enclosingStmt(#20034,#20028) +exprContainers(#20034,#20001) +literals("OnArrival","OnArrival",#20034) #20035=* -tokeninfo(#20035,8,#20001,6,",") -#20036=@"loc,{#10000},1,40,1,40" -locations_default(#20036,#10000,1,40,1,40) -hasLocation(#20035,#20036) -#20037=* -tokeninfo(#20037,6,#20001,7,"States") -hasLocation(#20037,#20021) +exprs(#20035,9,#20029,1,"functio ... es) { }") +hasLocation(#20035,#20003) +enclosingStmt(#20035,#20028) +exprContainers(#20035,#20001) +#20036=* +scopes(#20036,1) +scopenodes(#20035,#20036) +scopenesting(#20036,#20000) +#20037=@"var;{OnArrival};{#20036}" +variables(#20037,"OnArrival",#20036) #20038=* -tokeninfo(#20038,8,#20001,8,")") -#20039=@"loc,{#10000},1,48,1,48" -locations_default(#20039,#10000,1,48,1,48) -hasLocation(#20038,#20039) +exprs(#20038,78,#20035,-1,"OnArrival") +hasLocation(#20038,#20011) +exprContainers(#20038,#20035) +literals("OnArrival","OnArrival",#20038) +decl(#20038,#20037) +#20039=@"var;{Msg};{#20036}" +variables(#20039,"Msg",#20036) #20040=* -tokeninfo(#20040,8,#20001,9,"{") -#20041=@"loc,{#10000},1,50,1,50" -locations_default(#20041,#10000,1,50,1,50) -hasLocation(#20040,#20041) +exprs(#20040,78,#20035,0,"Msg") +hasLocation(#20040,#20015) +exprContainers(#20040,#20035) +literals("Msg","Msg",#20040) +decl(#20040,#20039) +#20041=@"var;{States};{#20036}" +variables(#20041,"States",#20036) #20042=* -tokeninfo(#20042,8,#20001,10,"}") -#20043=@"loc,{#10000},1,52,1,52" -locations_default(#20043,#10000,1,52,1,52) -hasLocation(#20042,#20043) +exprs(#20042,78,#20035,1,"States") +hasLocation(#20042,#20019) +exprContainers(#20042,#20035) +literals("States","States",#20042) +decl(#20042,#20041) +#20043=@"var;{arguments};{#20036}" +variables(#20043,"arguments",#20036) +isArgumentsObject(#20043) #20044=* -tokeninfo(#20044,0,#20001,11,"") -#20045=@"loc,{#10000},1,53,1,52" -locations_default(#20045,#10000,1,53,1,52) +stmts(#20044,1,#20035,-2,"{ }") +#20045=@"loc,{#10000},1,50,1,52" +locations_default(#20045,#10000,1,50,1,52) hasLocation(#20044,#20045) +stmtContainers(#20044,#20035) #20046=* entry_cfg_node(#20046,#20001) #20047=@"loc,{#10000},1,1,1,0" @@ -158,24 +157,24 @@ locations_default(#20047,#10000,1,1,1,0) hasLocation(#20046,#20047) #20048=* exit_cfg_node(#20048,#20001) -hasLocation(#20048,#20045) -successor(#20003,#20007) -successor(#20012,#20004) +hasLocation(#20048,#20027) +successor(#20028,#20032) +successor(#20035,#20029) #20049=* -entry_cfg_node(#20049,#20012) +entry_cfg_node(#20049,#20035) hasLocation(#20049,#20047) #20050=* -exit_cfg_node(#20050,#20012) -hasLocation(#20050,#20045) -successor(#20023,#20050) -successor(#20020,#20023) -successor(#20017,#20020) -successor(#20015,#20017) -successor(#20049,#20015) -successor(#20010,#20005) -successor(#20007,#20010) -successor(#20005,#20012) -successor(#20004,#20048) -successor(#20046,#20003) +exit_cfg_node(#20050,#20035) +hasLocation(#20050,#20027) +successor(#20044,#20050) +successor(#20042,#20044) +successor(#20040,#20042) +successor(#20038,#20040) +successor(#20049,#20038) +successor(#20034,#20030) +successor(#20032,#20034) +successor(#20030,#20035) +successor(#20029,#20048) +successor(#20046,#20028) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/jsx/output/trap/tst.js.trap b/javascript/extractor/tests/jsx/output/trap/tst.js.trap index e86d9e16be5..10aaa0cd84f 100644 --- a/javascript/extractor/tests/jsx/output/trap/tst.js.trap +++ b/javascript/extractor/tests/jsx/output/trap/tst.js.trap @@ -9,692 +9,692 @@ 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=* -stmts(#20003,2,#20001,0,";") -#20004=@"loc,{#10000},1,1,1,5" -locations_default(#20004,#10000,1,1,1,5) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,89,#20003,0,"") -#20006=@"loc,{#10000},1,1,1,4" -locations_default(#20006,#10000,1,1,1,4) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -#20007=* -exprs(#20007,0,#20005,-1,"a") -#20008=@"loc,{#10000},1,2,1,2" -locations_default(#20008,#10000,1,2,1,2) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20003) -exprContainers(#20007,#20001) -literals("a","a",#20007) -#20009=* -stmts(#20009,2,#20001,1,";") -#20010=@"loc,{#10000},2,1,2,11" -locations_default(#20010,#10000,2,1,2,11) -hasLocation(#20009,#20010) -stmtContainers(#20009,#20001) -#20011=* -exprs(#20011,89,#20009,0,"") -#20012=@"loc,{#10000},2,1,2,10" -locations_default(#20012,#10000,2,1,2,10) -hasLocation(#20011,#20012) -enclosingStmt(#20011,#20009) -exprContainers(#20011,#20001) -#20013=* -exprs(#20013,90,#20011,-1,"b:c") -#20014=@"loc,{#10000},2,2,2,4" -locations_default(#20014,#10000,2,2,2,4) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20009) -exprContainers(#20013,#20001) -#20015=* -exprs(#20015,0,#20013,0,"b") -#20016=@"loc,{#10000},2,2,2,2" -locations_default(#20016,#10000,2,2,2,2) -hasLocation(#20015,#20016) -enclosingStmt(#20015,#20009) -exprContainers(#20015,#20001) -literals("b","b",#20015) -#20017=* -exprs(#20017,0,#20013,1,"c") -#20018=@"loc,{#10000},2,4,2,4" -locations_default(#20018,#10000,2,4,2,4) -hasLocation(#20017,#20018) -enclosingStmt(#20017,#20009) -exprContainers(#20017,#20001) -literals("c","c",#20017) -#20019=* -properties(#20019,#20011,0,3,"d:e") -#20020=@"loc,{#10000},2,6,2,8" -locations_default(#20020,#10000,2,6,2,8) -hasLocation(#20019,#20020) -#20021=* -exprs(#20021,90,#20019,0,"d:e") -hasLocation(#20021,#20020) -enclosingStmt(#20021,#20009) -exprContainers(#20021,#20001) +#20002=* +lines(#20002,#20001,";"," +") +#20003=@"loc,{#10000},1,1,1,5" +locations_default(#20003,#10000,1,1,1,5) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,";"," +") +#20005=@"loc,{#10000},2,1,2,11" +locations_default(#20005,#10000,2,1,2,11) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"{j};"," +") +#20007=@"loc,{#10000},3,1,3,52" +locations_default(#20007,#10000,3,1,3,52) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001,";"," +") +#20009=@"loc,{#10000},4,1,4,16" +locations_default(#20009,#10000,4,1,4,16) +hasLocation(#20008,#20009) +#20010=* +lines(#20010,#20001,"<>"," +") +#20011=@"loc,{#10000},5,1,5,13" +locations_default(#20011,#10000,5,1,5,13) +hasLocation(#20010,#20011) +numlines(#20001,5,5,0) +#20012=* +tokeninfo(#20012,8,#20001,0,"<") +#20013=@"loc,{#10000},1,1,1,1" +locations_default(#20013,#10000,1,1,1,1) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,6,#20001,1,"a") +#20015=@"loc,{#10000},1,2,1,2" +locations_default(#20015,#10000,1,2,1,2) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,2,"/") +#20017=@"loc,{#10000},1,3,1,3" +locations_default(#20017,#10000,1,3,1,3) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,3,">") +#20019=@"loc,{#10000},1,4,1,4" +locations_default(#20019,#10000,1,4,1,4) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,4,";") +#20021=@"loc,{#10000},1,5,1,5" +locations_default(#20021,#10000,1,5,1,5) +hasLocation(#20020,#20021) #20022=* -exprs(#20022,0,#20021,0,"d") -#20023=@"loc,{#10000},2,6,2,6" -locations_default(#20023,#10000,2,6,2,6) +tokeninfo(#20022,8,#20001,5,"<") +#20023=@"loc,{#10000},2,1,2,1" +locations_default(#20023,#10000,2,1,2,1) hasLocation(#20022,#20023) -enclosingStmt(#20022,#20009) -exprContainers(#20022,#20001) -literals("d","d",#20022) #20024=* -exprs(#20024,0,#20021,1,"e") -#20025=@"loc,{#10000},2,8,2,8" -locations_default(#20025,#10000,2,8,2,8) +tokeninfo(#20024,6,#20001,6,"b") +#20025=@"loc,{#10000},2,2,2,2" +locations_default(#20025,#10000,2,2,2,2) hasLocation(#20024,#20025) -enclosingStmt(#20024,#20009) -exprContainers(#20024,#20001) -literals("e","e",#20024) #20026=* -stmts(#20026,2,#20001,2,";") -#20027=@"loc,{#10000},3,1,3,52" -locations_default(#20027,#10000,3,1,3,52) +tokeninfo(#20026,8,#20001,7,":") +#20027=@"loc,{#10000},2,3,2,3" +locations_default(#20027,#10000,2,3,2,3) hasLocation(#20026,#20027) -stmtContainers(#20026,#20001) #20028=* -exprs(#20028,89,#20026,0,"") -#20029=@"loc,{#10000},3,1,3,51" -locations_default(#20029,#10000,3,1,3,51) +tokeninfo(#20028,6,#20001,8,"c") +#20029=@"loc,{#10000},2,4,2,4" +locations_default(#20029,#10000,2,4,2,4) hasLocation(#20028,#20029) -enclosingStmt(#20028,#20026) -exprContainers(#20028,#20001) #20030=* -exprs(#20030,0,#20028,-1,"f") -#20031=@"loc,{#10000},3,2,3,2" -locations_default(#20031,#10000,3,2,3,2) +tokeninfo(#20030,6,#20001,9,"d") +#20031=@"loc,{#10000},2,6,2,6" +locations_default(#20031,#10000,2,6,2,6) hasLocation(#20030,#20031) -enclosingStmt(#20030,#20026) -exprContainers(#20030,#20001) -literals("f","f",#20030) #20032=* -properties(#20032,#20028,0,3,"g:h=""b&r""") -#20033=@"loc,{#10000},3,4,3,16" -locations_default(#20033,#10000,3,4,3,16) +tokeninfo(#20032,8,#20001,10,":") +#20033=@"loc,{#10000},2,7,2,7" +locations_default(#20033,#10000,2,7,2,7) hasLocation(#20032,#20033) #20034=* -exprs(#20034,90,#20032,0,"g:h") -#20035=@"loc,{#10000},3,4,3,6" -locations_default(#20035,#10000,3,4,3,6) +tokeninfo(#20034,6,#20001,11,"e") +#20035=@"loc,{#10000},2,8,2,8" +locations_default(#20035,#10000,2,8,2,8) hasLocation(#20034,#20035) -enclosingStmt(#20034,#20026) -exprContainers(#20034,#20001) #20036=* -exprs(#20036,0,#20034,0,"g") -#20037=@"loc,{#10000},3,4,3,4" -locations_default(#20037,#10000,3,4,3,4) +tokeninfo(#20036,8,#20001,12,"/") +#20037=@"loc,{#10000},2,9,2,9" +locations_default(#20037,#10000,2,9,2,9) hasLocation(#20036,#20037) -enclosingStmt(#20036,#20026) -exprContainers(#20036,#20001) -literals("g","g",#20036) #20038=* -exprs(#20038,0,#20034,1,"h") -#20039=@"loc,{#10000},3,6,3,6" -locations_default(#20039,#10000,3,6,3,6) +tokeninfo(#20038,8,#20001,13,">") +#20039=@"loc,{#10000},2,10,2,10" +locations_default(#20039,#10000,2,10,2,10) hasLocation(#20038,#20039) -enclosingStmt(#20038,#20026) -exprContainers(#20038,#20001) -literals("h","h",#20038) #20040=* -exprs(#20040,4,#20032,1,"""b&r""") -#20041=@"loc,{#10000},3,8,3,16" -locations_default(#20041,#10000,3,8,3,16) +tokeninfo(#20040,8,#20001,14,";") +#20041=@"loc,{#10000},2,11,2,11" +locations_default(#20041,#10000,2,11,2,11) hasLocation(#20040,#20041) -enclosingStmt(#20040,#20026) -exprContainers(#20040,#20001) -literals("b&r","""b&r""",#20040) #20042=* -properties(#20042,#20028,1,3,"i={""a""+""b""}") -#20043=@"loc,{#10000},3,18,3,28" -locations_default(#20043,#10000,3,18,3,28) +tokeninfo(#20042,8,#20001,15,"<") +#20043=@"loc,{#10000},3,1,3,1" +locations_default(#20043,#10000,3,1,3,1) hasLocation(#20042,#20043) #20044=* -exprs(#20044,0,#20042,0,"i") -#20045=@"loc,{#10000},3,18,3,18" -locations_default(#20045,#10000,3,18,3,18) +tokeninfo(#20044,6,#20001,16,"f") +#20045=@"loc,{#10000},3,2,3,2" +locations_default(#20045,#10000,3,2,3,2) hasLocation(#20044,#20045) -enclosingStmt(#20044,#20026) -exprContainers(#20044,#20001) -literals("i","i",#20044) #20046=* -exprs(#20046,34,#20042,1,"""a""+""b""") -#20047=@"loc,{#10000},3,21,3,27" -locations_default(#20047,#10000,3,21,3,27) +tokeninfo(#20046,6,#20001,17,"g") +#20047=@"loc,{#10000},3,4,3,4" +locations_default(#20047,#10000,3,4,3,4) hasLocation(#20046,#20047) -enclosingStmt(#20046,#20026) -exprContainers(#20046,#20001) #20048=* -exprs(#20048,4,#20046,0,"""a""") -#20049=@"loc,{#10000},3,21,3,23" -locations_default(#20049,#10000,3,21,3,23) +tokeninfo(#20048,8,#20001,18,":") +#20049=@"loc,{#10000},3,5,3,5" +locations_default(#20049,#10000,3,5,3,5) hasLocation(#20048,#20049) -enclosingStmt(#20048,#20026) -exprContainers(#20048,#20001) -literals("a","""a""",#20048) #20050=* -exprs(#20050,4,#20046,1,"""b""") -#20051=@"loc,{#10000},3,25,3,27" -locations_default(#20051,#10000,3,25,3,27) +tokeninfo(#20050,6,#20001,19,"h") +#20051=@"loc,{#10000},3,6,3,6" +locations_default(#20051,#10000,3,6,3,6) hasLocation(#20050,#20051) -enclosingStmt(#20050,#20026) -exprContainers(#20050,#20001) -literals("b","""b""",#20050) #20052=* -exprs(#20052,79,#20028,-2,"j") -#20053=@"loc,{#10000},3,31,3,31" -locations_default(#20053,#10000,3,31,3,31) +tokeninfo(#20052,8,#20001,20,"=") +#20053=@"loc,{#10000},3,7,3,7" +locations_default(#20053,#10000,3,7,3,7) hasLocation(#20052,#20053) -enclosingStmt(#20052,#20026) -exprContainers(#20052,#20001) -literals("j","j",#20052) -#20054=@"var;{j};{#20000}" -variables(#20054,"j",#20000) -bind(#20052,#20054) -#20055=* -exprs(#20055,89,#20028,-3,"") -#20056=@"loc,{#10000},3,33,3,47" -locations_default(#20056,#10000,3,33,3,47) -hasLocation(#20055,#20056) -enclosingStmt(#20055,#20026) -exprContainers(#20055,#20001) -#20057=* -exprs(#20057,14,#20055,-1,"k.l") -#20058=@"loc,{#10000},3,34,3,36" -locations_default(#20058,#10000,3,34,3,36) -hasLocation(#20057,#20058) -enclosingStmt(#20057,#20026) -exprContainers(#20057,#20001) -#20059=* -exprs(#20059,79,#20057,0,"k") -#20060=@"loc,{#10000},3,34,3,34" -locations_default(#20060,#10000,3,34,3,34) -hasLocation(#20059,#20060) -enclosingStmt(#20059,#20026) -exprContainers(#20059,#20001) -literals("k","k",#20059) -#20061=@"var;{k};{#20000}" -variables(#20061,"k",#20000) -bind(#20059,#20061) +#20054=* +tokeninfo(#20054,4,#20001,21,"""b&r""") +#20055=@"loc,{#10000},3,8,3,16" +locations_default(#20055,#10000,3,8,3,16) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,6,#20001,22,"i") +#20057=@"loc,{#10000},3,18,3,18" +locations_default(#20057,#10000,3,18,3,18) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,8,#20001,23,"=") +#20059=@"loc,{#10000},3,19,3,19" +locations_default(#20059,#10000,3,19,3,19) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,8,#20001,24,"{") +#20061=@"loc,{#10000},3,20,3,20" +locations_default(#20061,#10000,3,20,3,20) +hasLocation(#20060,#20061) #20062=* -exprs(#20062,0,#20057,1,"l") -#20063=@"loc,{#10000},3,36,3,36" -locations_default(#20063,#10000,3,36,3,36) +tokeninfo(#20062,4,#20001,25,"""a""") +#20063=@"loc,{#10000},3,21,3,23" +locations_default(#20063,#10000,3,21,3,23) hasLocation(#20062,#20063) -enclosingStmt(#20062,#20026) -exprContainers(#20062,#20001) -literals("l","l",#20062) #20064=* -exprs(#20064,89,#20055,-2,"") -#20065=@"loc,{#10000},3,38,3,41" -locations_default(#20065,#10000,3,38,3,41) +tokeninfo(#20064,8,#20001,26,"+") +#20065=@"loc,{#10000},3,24,3,24" +locations_default(#20065,#10000,3,24,3,24) hasLocation(#20064,#20065) -enclosingStmt(#20064,#20026) -exprContainers(#20064,#20001) #20066=* -exprs(#20066,79,#20064,-1,"M") -#20067=@"loc,{#10000},3,39,3,39" -locations_default(#20067,#10000,3,39,3,39) +tokeninfo(#20066,4,#20001,27,"""b""") +#20067=@"loc,{#10000},3,25,3,27" +locations_default(#20067,#10000,3,25,3,27) hasLocation(#20066,#20067) -enclosingStmt(#20066,#20026) -exprContainers(#20066,#20001) -literals("M","M",#20066) -#20068=@"var;{M};{#20000}" -variables(#20068,"M",#20000) -bind(#20066,#20068) -#20069=* -stmts(#20069,2,#20001,3,";") -#20070=@"loc,{#10000},4,1,4,16" -locations_default(#20070,#10000,4,1,4,16) -hasLocation(#20069,#20070) -stmtContainers(#20069,#20001) -#20071=* -exprs(#20071,89,#20069,0,"") -#20072=@"loc,{#10000},4,1,4,15" -locations_default(#20072,#10000,4,1,4,15) -hasLocation(#20071,#20072) -enclosingStmt(#20071,#20069) -exprContainers(#20071,#20001) -#20073=* -exprs(#20073,0,#20071,-1,"n") -#20074=@"loc,{#10000},4,2,4,2" -locations_default(#20074,#10000,4,2,4,2) -hasLocation(#20073,#20074) -enclosingStmt(#20073,#20069) -exprContainers(#20073,#20001) -literals("n","n",#20073) -#20075=* -properties(#20075,#20071,0,3,"{...props}") -#20076=@"loc,{#10000},4,4,4,13" -locations_default(#20076,#10000,4,4,4,13) -hasLocation(#20075,#20076) -#20077=* -exprs(#20077,66,#20075,1,"...props") -hasLocation(#20077,#20076) -enclosingStmt(#20077,#20069) -exprContainers(#20077,#20001) +#20068=* +tokeninfo(#20068,8,#20001,28,"}") +#20069=@"loc,{#10000},3,28,3,28" +locations_default(#20069,#10000,3,28,3,28) +hasLocation(#20068,#20069) +#20070=* +tokeninfo(#20070,8,#20001,29,">") +#20071=@"loc,{#10000},3,29,3,29" +locations_default(#20071,#10000,3,29,3,29) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,8,#20001,30,"{") +#20073=@"loc,{#10000},3,30,3,30" +locations_default(#20073,#10000,3,30,3,30) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,6,#20001,31,"j") +#20075=@"loc,{#10000},3,31,3,31" +locations_default(#20075,#10000,3,31,3,31) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,8,#20001,32,"}") +#20077=@"loc,{#10000},3,32,3,32" +locations_default(#20077,#10000,3,32,3,32) +hasLocation(#20076,#20077) #20078=* -exprs(#20078,79,#20077,0,"props") -#20079=@"loc,{#10000},4,8,4,12" -locations_default(#20079,#10000,4,8,4,12) +tokeninfo(#20078,8,#20001,33,"<") +#20079=@"loc,{#10000},3,33,3,33" +locations_default(#20079,#10000,3,33,3,33) hasLocation(#20078,#20079) -enclosingStmt(#20078,#20069) -exprContainers(#20078,#20001) -literals("props","props",#20078) -#20080=@"var;{props};{#20000}" -variables(#20080,"props",#20000) -bind(#20078,#20080) -#20081=* -stmts(#20081,2,#20001,4,"<>") -#20082=@"loc,{#10000},5,1,5,13" -locations_default(#20082,#10000,5,1,5,13) -hasLocation(#20081,#20082) -stmtContainers(#20081,#20001) -#20083=* -exprs(#20083,89,#20081,0,"<>") -hasLocation(#20083,#20082) -enclosingStmt(#20083,#20081) -exprContainers(#20083,#20001) +#20080=* +tokeninfo(#20080,6,#20001,34,"k") +#20081=@"loc,{#10000},3,34,3,34" +locations_default(#20081,#10000,3,34,3,34) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,8,#20001,35,".") +#20083=@"loc,{#10000},3,35,3,35" +locations_default(#20083,#10000,3,35,3,35) +hasLocation(#20082,#20083) #20084=* -exprs(#20084,89,#20083,-2,"") -#20085=@"loc,{#10000},5,3,5,6" -locations_default(#20085,#10000,5,3,5,6) +tokeninfo(#20084,6,#20001,36,"l") +#20085=@"loc,{#10000},3,36,3,36" +locations_default(#20085,#10000,3,36,3,36) hasLocation(#20084,#20085) -enclosingStmt(#20084,#20081) -exprContainers(#20084,#20001) #20086=* -exprs(#20086,0,#20084,-1,"a") -#20087=@"loc,{#10000},5,4,5,4" -locations_default(#20087,#10000,5,4,5,4) +tokeninfo(#20086,8,#20001,37,">") +#20087=@"loc,{#10000},3,37,3,37" +locations_default(#20087,#10000,3,37,3,37) hasLocation(#20086,#20087) -enclosingStmt(#20086,#20081) -exprContainers(#20086,#20001) -literals("a","a",#20086) #20088=* -exprs(#20088,89,#20083,-3,"") -#20089=@"loc,{#10000},5,7,5,10" -locations_default(#20089,#10000,5,7,5,10) +tokeninfo(#20088,8,#20001,38,"<") +#20089=@"loc,{#10000},3,38,3,38" +locations_default(#20089,#10000,3,38,3,38) hasLocation(#20088,#20089) -enclosingStmt(#20088,#20081) -exprContainers(#20088,#20001) #20090=* -exprs(#20090,0,#20088,-1,"b") -#20091=@"loc,{#10000},5,8,5,8" -locations_default(#20091,#10000,5,8,5,8) +tokeninfo(#20090,6,#20001,39,"M") +#20091=@"loc,{#10000},3,39,3,39" +locations_default(#20091,#10000,3,39,3,39) hasLocation(#20090,#20091) -enclosingStmt(#20090,#20081) -exprContainers(#20090,#20001) -literals("b","b",#20090) #20092=* -lines(#20092,#20001,";"," -") -hasLocation(#20092,#20004) -#20093=* -lines(#20093,#20001,";"," -") -hasLocation(#20093,#20010) +tokeninfo(#20092,8,#20001,40,"/") +#20093=@"loc,{#10000},3,40,3,40" +locations_default(#20093,#10000,3,40,3,40) +hasLocation(#20092,#20093) #20094=* -lines(#20094,#20001,"{j};"," -") -hasLocation(#20094,#20027) -#20095=* -lines(#20095,#20001,";"," -") -hasLocation(#20095,#20070) +tokeninfo(#20094,8,#20001,41,">") +#20095=@"loc,{#10000},3,41,3,41" +locations_default(#20095,#10000,3,41,3,41) +hasLocation(#20094,#20095) #20096=* -lines(#20096,#20001,"<>"," -") -hasLocation(#20096,#20082) -numlines(#20001,5,5,0) -#20097=* -tokeninfo(#20097,8,#20001,0,"<") -#20098=@"loc,{#10000},1,1,1,1" -locations_default(#20098,#10000,1,1,1,1) -hasLocation(#20097,#20098) -#20099=* -tokeninfo(#20099,6,#20001,1,"a") -hasLocation(#20099,#20008) +tokeninfo(#20096,8,#20001,42,"<") +#20097=@"loc,{#10000},3,42,3,42" +locations_default(#20097,#10000,3,42,3,42) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,8,#20001,43,"/") +#20099=@"loc,{#10000},3,43,3,43" +locations_default(#20099,#10000,3,43,3,43) +hasLocation(#20098,#20099) #20100=* -tokeninfo(#20100,8,#20001,2,"/") -#20101=@"loc,{#10000},1,3,1,3" -locations_default(#20101,#10000,1,3,1,3) +tokeninfo(#20100,6,#20001,44,"k") +#20101=@"loc,{#10000},3,44,3,44" +locations_default(#20101,#10000,3,44,3,44) hasLocation(#20100,#20101) #20102=* -tokeninfo(#20102,8,#20001,3,">") -#20103=@"loc,{#10000},1,4,1,4" -locations_default(#20103,#10000,1,4,1,4) +tokeninfo(#20102,8,#20001,45,".") +#20103=@"loc,{#10000},3,45,3,45" +locations_default(#20103,#10000,3,45,3,45) hasLocation(#20102,#20103) #20104=* -tokeninfo(#20104,8,#20001,4,";") -#20105=@"loc,{#10000},1,5,1,5" -locations_default(#20105,#10000,1,5,1,5) +tokeninfo(#20104,6,#20001,46,"l") +#20105=@"loc,{#10000},3,46,3,46" +locations_default(#20105,#10000,3,46,3,46) hasLocation(#20104,#20105) #20106=* -tokeninfo(#20106,8,#20001,5,"<") -#20107=@"loc,{#10000},2,1,2,1" -locations_default(#20107,#10000,2,1,2,1) +tokeninfo(#20106,8,#20001,47,">") +#20107=@"loc,{#10000},3,47,3,47" +locations_default(#20107,#10000,3,47,3,47) hasLocation(#20106,#20107) #20108=* -tokeninfo(#20108,6,#20001,6,"b") -hasLocation(#20108,#20016) -#20109=* -tokeninfo(#20109,8,#20001,7,":") -#20110=@"loc,{#10000},2,3,2,3" -locations_default(#20110,#10000,2,3,2,3) -hasLocation(#20109,#20110) -#20111=* -tokeninfo(#20111,6,#20001,8,"c") -hasLocation(#20111,#20018) +tokeninfo(#20108,8,#20001,48,"<") +#20109=@"loc,{#10000},3,48,3,48" +locations_default(#20109,#10000,3,48,3,48) +hasLocation(#20108,#20109) +#20110=* +tokeninfo(#20110,8,#20001,49,"/") +#20111=@"loc,{#10000},3,49,3,49" +locations_default(#20111,#10000,3,49,3,49) +hasLocation(#20110,#20111) #20112=* -tokeninfo(#20112,6,#20001,9,"d") -hasLocation(#20112,#20023) -#20113=* -tokeninfo(#20113,8,#20001,10,":") -#20114=@"loc,{#10000},2,7,2,7" -locations_default(#20114,#10000,2,7,2,7) -hasLocation(#20113,#20114) -#20115=* -tokeninfo(#20115,6,#20001,11,"e") -hasLocation(#20115,#20025) +tokeninfo(#20112,6,#20001,50,"f") +#20113=@"loc,{#10000},3,50,3,50" +locations_default(#20113,#10000,3,50,3,50) +hasLocation(#20112,#20113) +#20114=* +tokeninfo(#20114,8,#20001,51,">") +#20115=@"loc,{#10000},3,51,3,51" +locations_default(#20115,#10000,3,51,3,51) +hasLocation(#20114,#20115) #20116=* -tokeninfo(#20116,8,#20001,12,"/") -#20117=@"loc,{#10000},2,9,2,9" -locations_default(#20117,#10000,2,9,2,9) +tokeninfo(#20116,8,#20001,52,";") +#20117=@"loc,{#10000},3,52,3,52" +locations_default(#20117,#10000,3,52,3,52) hasLocation(#20116,#20117) #20118=* -tokeninfo(#20118,8,#20001,13,">") -#20119=@"loc,{#10000},2,10,2,10" -locations_default(#20119,#10000,2,10,2,10) +tokeninfo(#20118,8,#20001,53,"<") +#20119=@"loc,{#10000},4,1,4,1" +locations_default(#20119,#10000,4,1,4,1) hasLocation(#20118,#20119) #20120=* -tokeninfo(#20120,8,#20001,14,";") -#20121=@"loc,{#10000},2,11,2,11" -locations_default(#20121,#10000,2,11,2,11) +tokeninfo(#20120,6,#20001,54,"n") +#20121=@"loc,{#10000},4,2,4,2" +locations_default(#20121,#10000,4,2,4,2) hasLocation(#20120,#20121) #20122=* -tokeninfo(#20122,8,#20001,15,"<") -#20123=@"loc,{#10000},3,1,3,1" -locations_default(#20123,#10000,3,1,3,1) +tokeninfo(#20122,8,#20001,55,"{") +#20123=@"loc,{#10000},4,4,4,4" +locations_default(#20123,#10000,4,4,4,4) hasLocation(#20122,#20123) #20124=* -tokeninfo(#20124,6,#20001,16,"f") -hasLocation(#20124,#20031) -#20125=* -tokeninfo(#20125,6,#20001,17,"g") -hasLocation(#20125,#20037) +tokeninfo(#20124,8,#20001,56,"...") +#20125=@"loc,{#10000},4,5,4,7" +locations_default(#20125,#10000,4,5,4,7) +hasLocation(#20124,#20125) #20126=* -tokeninfo(#20126,8,#20001,18,":") -#20127=@"loc,{#10000},3,5,3,5" -locations_default(#20127,#10000,3,5,3,5) +tokeninfo(#20126,6,#20001,57,"props") +#20127=@"loc,{#10000},4,8,4,12" +locations_default(#20127,#10000,4,8,4,12) hasLocation(#20126,#20127) #20128=* -tokeninfo(#20128,6,#20001,19,"h") -hasLocation(#20128,#20039) -#20129=* -tokeninfo(#20129,8,#20001,20,"=") -#20130=@"loc,{#10000},3,7,3,7" -locations_default(#20130,#10000,3,7,3,7) -hasLocation(#20129,#20130) -#20131=* -tokeninfo(#20131,4,#20001,21,"""b&r""") -hasLocation(#20131,#20041) +tokeninfo(#20128,8,#20001,58,"}") +#20129=@"loc,{#10000},4,13,4,13" +locations_default(#20129,#10000,4,13,4,13) +hasLocation(#20128,#20129) +#20130=* +tokeninfo(#20130,8,#20001,59,"/") +#20131=@"loc,{#10000},4,14,4,14" +locations_default(#20131,#10000,4,14,4,14) +hasLocation(#20130,#20131) #20132=* -tokeninfo(#20132,6,#20001,22,"i") -hasLocation(#20132,#20045) -#20133=* -tokeninfo(#20133,8,#20001,23,"=") -#20134=@"loc,{#10000},3,19,3,19" -locations_default(#20134,#10000,3,19,3,19) -hasLocation(#20133,#20134) -#20135=* -tokeninfo(#20135,8,#20001,24,"{") -#20136=@"loc,{#10000},3,20,3,20" -locations_default(#20136,#10000,3,20,3,20) -hasLocation(#20135,#20136) -#20137=* -tokeninfo(#20137,4,#20001,25,"""a""") -hasLocation(#20137,#20049) +tokeninfo(#20132,8,#20001,60,">") +#20133=@"loc,{#10000},4,15,4,15" +locations_default(#20133,#10000,4,15,4,15) +hasLocation(#20132,#20133) +#20134=* +tokeninfo(#20134,8,#20001,61,";") +#20135=@"loc,{#10000},4,16,4,16" +locations_default(#20135,#10000,4,16,4,16) +hasLocation(#20134,#20135) +#20136=* +tokeninfo(#20136,8,#20001,62,"<") +#20137=@"loc,{#10000},5,1,5,1" +locations_default(#20137,#10000,5,1,5,1) +hasLocation(#20136,#20137) #20138=* -tokeninfo(#20138,8,#20001,26,"+") -#20139=@"loc,{#10000},3,24,3,24" -locations_default(#20139,#10000,3,24,3,24) +tokeninfo(#20138,8,#20001,63,">") +#20139=@"loc,{#10000},5,2,5,2" +locations_default(#20139,#10000,5,2,5,2) hasLocation(#20138,#20139) #20140=* -tokeninfo(#20140,4,#20001,27,"""b""") -hasLocation(#20140,#20051) -#20141=* -tokeninfo(#20141,8,#20001,28,"}") -#20142=@"loc,{#10000},3,28,3,28" -locations_default(#20142,#10000,3,28,3,28) -hasLocation(#20141,#20142) -#20143=* -tokeninfo(#20143,8,#20001,29,">") -#20144=@"loc,{#10000},3,29,3,29" -locations_default(#20144,#10000,3,29,3,29) -hasLocation(#20143,#20144) -#20145=* -tokeninfo(#20145,8,#20001,30,"{") -#20146=@"loc,{#10000},3,30,3,30" -locations_default(#20146,#10000,3,30,3,30) -hasLocation(#20145,#20146) -#20147=* -tokeninfo(#20147,6,#20001,31,"j") -hasLocation(#20147,#20053) +tokeninfo(#20140,8,#20001,64,"<") +#20141=@"loc,{#10000},5,3,5,3" +locations_default(#20141,#10000,5,3,5,3) +hasLocation(#20140,#20141) +#20142=* +tokeninfo(#20142,6,#20001,65,"a") +#20143=@"loc,{#10000},5,4,5,4" +locations_default(#20143,#10000,5,4,5,4) +hasLocation(#20142,#20143) +#20144=* +tokeninfo(#20144,8,#20001,66,"/") +#20145=@"loc,{#10000},5,5,5,5" +locations_default(#20145,#10000,5,5,5,5) +hasLocation(#20144,#20145) +#20146=* +tokeninfo(#20146,8,#20001,67,">") +#20147=@"loc,{#10000},5,6,5,6" +locations_default(#20147,#10000,5,6,5,6) +hasLocation(#20146,#20147) #20148=* -tokeninfo(#20148,8,#20001,32,"}") -#20149=@"loc,{#10000},3,32,3,32" -locations_default(#20149,#10000,3,32,3,32) +tokeninfo(#20148,8,#20001,68,"<") +#20149=@"loc,{#10000},5,7,5,7" +locations_default(#20149,#10000,5,7,5,7) hasLocation(#20148,#20149) #20150=* -tokeninfo(#20150,8,#20001,33,"<") -#20151=@"loc,{#10000},3,33,3,33" -locations_default(#20151,#10000,3,33,3,33) +tokeninfo(#20150,6,#20001,69,"b") +#20151=@"loc,{#10000},5,8,5,8" +locations_default(#20151,#10000,5,8,5,8) hasLocation(#20150,#20151) #20152=* -tokeninfo(#20152,6,#20001,34,"k") -hasLocation(#20152,#20060) -#20153=* -tokeninfo(#20153,8,#20001,35,".") -#20154=@"loc,{#10000},3,35,3,35" -locations_default(#20154,#10000,3,35,3,35) -hasLocation(#20153,#20154) -#20155=* -tokeninfo(#20155,6,#20001,36,"l") -hasLocation(#20155,#20063) +tokeninfo(#20152,8,#20001,70,"/") +#20153=@"loc,{#10000},5,9,5,9" +locations_default(#20153,#10000,5,9,5,9) +hasLocation(#20152,#20153) +#20154=* +tokeninfo(#20154,8,#20001,71,">") +#20155=@"loc,{#10000},5,10,5,10" +locations_default(#20155,#10000,5,10,5,10) +hasLocation(#20154,#20155) #20156=* -tokeninfo(#20156,8,#20001,37,">") -#20157=@"loc,{#10000},3,37,3,37" -locations_default(#20157,#10000,3,37,3,37) +tokeninfo(#20156,8,#20001,72,"<") +#20157=@"loc,{#10000},5,11,5,11" +locations_default(#20157,#10000,5,11,5,11) hasLocation(#20156,#20157) #20158=* -tokeninfo(#20158,8,#20001,38,"<") -#20159=@"loc,{#10000},3,38,3,38" -locations_default(#20159,#10000,3,38,3,38) +tokeninfo(#20158,8,#20001,73,"/") +#20159=@"loc,{#10000},5,12,5,12" +locations_default(#20159,#10000,5,12,5,12) hasLocation(#20158,#20159) #20160=* -tokeninfo(#20160,6,#20001,39,"M") -hasLocation(#20160,#20067) -#20161=* -tokeninfo(#20161,8,#20001,40,"/") -#20162=@"loc,{#10000},3,40,3,40" -locations_default(#20162,#10000,3,40,3,40) -hasLocation(#20161,#20162) -#20163=* -tokeninfo(#20163,8,#20001,41,">") -#20164=@"loc,{#10000},3,41,3,41" -locations_default(#20164,#10000,3,41,3,41) -hasLocation(#20163,#20164) +tokeninfo(#20160,8,#20001,74,">") +#20161=@"loc,{#10000},5,13,5,13" +locations_default(#20161,#10000,5,13,5,13) +hasLocation(#20160,#20161) +#20162=* +tokeninfo(#20162,0,#20001,75,"") +#20163=@"loc,{#10000},6,1,6,0" +locations_default(#20163,#10000,6,1,6,0) +hasLocation(#20162,#20163) +toplevels(#20001,0) +#20164=@"loc,{#10000},1,1,6,0" +locations_default(#20164,#10000,1,1,6,0) +hasLocation(#20001,#20164) #20165=* -tokeninfo(#20165,8,#20001,42,"<") -#20166=@"loc,{#10000},3,42,3,42" -locations_default(#20166,#10000,3,42,3,42) -hasLocation(#20165,#20166) -#20167=* -tokeninfo(#20167,8,#20001,43,"/") -#20168=@"loc,{#10000},3,43,3,43" -locations_default(#20168,#10000,3,43,3,43) -hasLocation(#20167,#20168) +stmts(#20165,2,#20001,0,";") +hasLocation(#20165,#20003) +stmtContainers(#20165,#20001) +#20166=* +exprs(#20166,89,#20165,0,"") +#20167=@"loc,{#10000},1,1,1,4" +locations_default(#20167,#10000,1,1,1,4) +hasLocation(#20166,#20167) +enclosingStmt(#20166,#20165) +exprContainers(#20166,#20001) +#20168=* +exprs(#20168,0,#20166,-1,"a") +hasLocation(#20168,#20015) +enclosingStmt(#20168,#20165) +exprContainers(#20168,#20001) +literals("a","a",#20168) #20169=* -tokeninfo(#20169,6,#20001,44,"k") -#20170=@"loc,{#10000},3,44,3,44" -locations_default(#20170,#10000,3,44,3,44) -hasLocation(#20169,#20170) -#20171=* -tokeninfo(#20171,8,#20001,45,".") -#20172=@"loc,{#10000},3,45,3,45" -locations_default(#20172,#10000,3,45,3,45) -hasLocation(#20171,#20172) -#20173=* -tokeninfo(#20173,6,#20001,46,"l") -#20174=@"loc,{#10000},3,46,3,46" -locations_default(#20174,#10000,3,46,3,46) -hasLocation(#20173,#20174) +stmts(#20169,2,#20001,1,";") +hasLocation(#20169,#20005) +stmtContainers(#20169,#20001) +#20170=* +exprs(#20170,89,#20169,0,"") +#20171=@"loc,{#10000},2,1,2,10" +locations_default(#20171,#10000,2,1,2,10) +hasLocation(#20170,#20171) +enclosingStmt(#20170,#20169) +exprContainers(#20170,#20001) +#20172=* +exprs(#20172,90,#20170,-1,"b:c") +#20173=@"loc,{#10000},2,2,2,4" +locations_default(#20173,#10000,2,2,2,4) +hasLocation(#20172,#20173) +enclosingStmt(#20172,#20169) +exprContainers(#20172,#20001) +#20174=* +exprs(#20174,0,#20172,0,"b") +hasLocation(#20174,#20025) +enclosingStmt(#20174,#20169) +exprContainers(#20174,#20001) +literals("b","b",#20174) #20175=* -tokeninfo(#20175,8,#20001,47,">") -#20176=@"loc,{#10000},3,47,3,47" -locations_default(#20176,#10000,3,47,3,47) -hasLocation(#20175,#20176) -#20177=* -tokeninfo(#20177,8,#20001,48,"<") -#20178=@"loc,{#10000},3,48,3,48" -locations_default(#20178,#10000,3,48,3,48) -hasLocation(#20177,#20178) +exprs(#20175,0,#20172,1,"c") +hasLocation(#20175,#20029) +enclosingStmt(#20175,#20169) +exprContainers(#20175,#20001) +literals("c","c",#20175) +#20176=* +properties(#20176,#20170,0,3,"d:e") +#20177=@"loc,{#10000},2,6,2,8" +locations_default(#20177,#10000,2,6,2,8) +hasLocation(#20176,#20177) +#20178=* +exprs(#20178,90,#20176,0,"d:e") +hasLocation(#20178,#20177) +enclosingStmt(#20178,#20169) +exprContainers(#20178,#20001) #20179=* -tokeninfo(#20179,8,#20001,49,"/") -#20180=@"loc,{#10000},3,49,3,49" -locations_default(#20180,#10000,3,49,3,49) -hasLocation(#20179,#20180) +exprs(#20179,0,#20178,0,"d") +hasLocation(#20179,#20031) +enclosingStmt(#20179,#20169) +exprContainers(#20179,#20001) +literals("d","d",#20179) +#20180=* +exprs(#20180,0,#20178,1,"e") +hasLocation(#20180,#20035) +enclosingStmt(#20180,#20169) +exprContainers(#20180,#20001) +literals("e","e",#20180) #20181=* -tokeninfo(#20181,6,#20001,50,"f") -#20182=@"loc,{#10000},3,50,3,50" -locations_default(#20182,#10000,3,50,3,50) -hasLocation(#20181,#20182) -#20183=* -tokeninfo(#20183,8,#20001,51,">") -#20184=@"loc,{#10000},3,51,3,51" -locations_default(#20184,#10000,3,51,3,51) -hasLocation(#20183,#20184) +stmts(#20181,2,#20001,2,";") +hasLocation(#20181,#20007) +stmtContainers(#20181,#20001) +#20182=* +exprs(#20182,89,#20181,0,"") +#20183=@"loc,{#10000},3,1,3,51" +locations_default(#20183,#10000,3,1,3,51) +hasLocation(#20182,#20183) +enclosingStmt(#20182,#20181) +exprContainers(#20182,#20001) +#20184=* +exprs(#20184,0,#20182,-1,"f") +hasLocation(#20184,#20045) +enclosingStmt(#20184,#20181) +exprContainers(#20184,#20001) +literals("f","f",#20184) #20185=* -tokeninfo(#20185,8,#20001,52,";") -#20186=@"loc,{#10000},3,52,3,52" -locations_default(#20186,#10000,3,52,3,52) +properties(#20185,#20182,0,3,"g:h=""b&r""") +#20186=@"loc,{#10000},3,4,3,16" +locations_default(#20186,#10000,3,4,3,16) hasLocation(#20185,#20186) #20187=* -tokeninfo(#20187,8,#20001,53,"<") -#20188=@"loc,{#10000},4,1,4,1" -locations_default(#20188,#10000,4,1,4,1) +exprs(#20187,90,#20185,0,"g:h") +#20188=@"loc,{#10000},3,4,3,6" +locations_default(#20188,#10000,3,4,3,6) hasLocation(#20187,#20188) +enclosingStmt(#20187,#20181) +exprContainers(#20187,#20001) #20189=* -tokeninfo(#20189,6,#20001,54,"n") -hasLocation(#20189,#20074) +exprs(#20189,0,#20187,0,"g") +hasLocation(#20189,#20047) +enclosingStmt(#20189,#20181) +exprContainers(#20189,#20001) +literals("g","g",#20189) #20190=* -tokeninfo(#20190,8,#20001,55,"{") -#20191=@"loc,{#10000},4,4,4,4" -locations_default(#20191,#10000,4,4,4,4) -hasLocation(#20190,#20191) +exprs(#20190,0,#20187,1,"h") +hasLocation(#20190,#20051) +enclosingStmt(#20190,#20181) +exprContainers(#20190,#20001) +literals("h","h",#20190) +#20191=* +exprs(#20191,4,#20185,1,"""b&r""") +hasLocation(#20191,#20055) +enclosingStmt(#20191,#20181) +exprContainers(#20191,#20001) +literals("b&r","""b&r""",#20191) #20192=* -tokeninfo(#20192,8,#20001,56,"...") -#20193=@"loc,{#10000},4,5,4,7" -locations_default(#20193,#10000,4,5,4,7) +properties(#20192,#20182,1,3,"i={""a""+""b""}") +#20193=@"loc,{#10000},3,18,3,28" +locations_default(#20193,#10000,3,18,3,28) hasLocation(#20192,#20193) #20194=* -tokeninfo(#20194,6,#20001,57,"props") -hasLocation(#20194,#20079) +exprs(#20194,0,#20192,0,"i") +hasLocation(#20194,#20057) +enclosingStmt(#20194,#20181) +exprContainers(#20194,#20001) +literals("i","i",#20194) #20195=* -tokeninfo(#20195,8,#20001,58,"}") -#20196=@"loc,{#10000},4,13,4,13" -locations_default(#20196,#10000,4,13,4,13) +exprs(#20195,34,#20192,1,"""a""+""b""") +#20196=@"loc,{#10000},3,21,3,27" +locations_default(#20196,#10000,3,21,3,27) hasLocation(#20195,#20196) +enclosingStmt(#20195,#20181) +exprContainers(#20195,#20001) #20197=* -tokeninfo(#20197,8,#20001,59,"/") -#20198=@"loc,{#10000},4,14,4,14" -locations_default(#20198,#10000,4,14,4,14) -hasLocation(#20197,#20198) +exprs(#20197,4,#20195,0,"""a""") +hasLocation(#20197,#20063) +enclosingStmt(#20197,#20181) +exprContainers(#20197,#20001) +literals("a","""a""",#20197) +#20198=* +exprs(#20198,4,#20195,1,"""b""") +hasLocation(#20198,#20067) +enclosingStmt(#20198,#20181) +exprContainers(#20198,#20001) +literals("b","""b""",#20198) #20199=* -tokeninfo(#20199,8,#20001,60,">") -#20200=@"loc,{#10000},4,15,4,15" -locations_default(#20200,#10000,4,15,4,15) -hasLocation(#20199,#20200) +exprs(#20199,79,#20182,-2,"j") +hasLocation(#20199,#20075) +enclosingStmt(#20199,#20181) +exprContainers(#20199,#20001) +literals("j","j",#20199) +#20200=@"var;{j};{#20000}" +variables(#20200,"j",#20000) +bind(#20199,#20200) #20201=* -tokeninfo(#20201,8,#20001,61,";") -#20202=@"loc,{#10000},4,16,4,16" -locations_default(#20202,#10000,4,16,4,16) +exprs(#20201,89,#20182,-3,"") +#20202=@"loc,{#10000},3,33,3,47" +locations_default(#20202,#10000,3,33,3,47) hasLocation(#20201,#20202) +enclosingStmt(#20201,#20181) +exprContainers(#20201,#20001) #20203=* -tokeninfo(#20203,8,#20001,62,"<") -#20204=@"loc,{#10000},5,1,5,1" -locations_default(#20204,#10000,5,1,5,1) +exprs(#20203,14,#20201,-1,"k.l") +#20204=@"loc,{#10000},3,34,3,36" +locations_default(#20204,#10000,3,34,3,36) hasLocation(#20203,#20204) +enclosingStmt(#20203,#20181) +exprContainers(#20203,#20001) #20205=* -tokeninfo(#20205,8,#20001,63,">") -#20206=@"loc,{#10000},5,2,5,2" -locations_default(#20206,#10000,5,2,5,2) -hasLocation(#20205,#20206) +exprs(#20205,79,#20203,0,"k") +hasLocation(#20205,#20081) +enclosingStmt(#20205,#20181) +exprContainers(#20205,#20001) +literals("k","k",#20205) +#20206=@"var;{k};{#20000}" +variables(#20206,"k",#20000) +bind(#20205,#20206) #20207=* -tokeninfo(#20207,8,#20001,64,"<") -#20208=@"loc,{#10000},5,3,5,3" -locations_default(#20208,#10000,5,3,5,3) -hasLocation(#20207,#20208) -#20209=* -tokeninfo(#20209,6,#20001,65,"a") -hasLocation(#20209,#20087) +exprs(#20207,0,#20203,1,"l") +hasLocation(#20207,#20085) +enclosingStmt(#20207,#20181) +exprContainers(#20207,#20001) +literals("l","l",#20207) +#20208=* +exprs(#20208,89,#20201,-2,"") +#20209=@"loc,{#10000},3,38,3,41" +locations_default(#20209,#10000,3,38,3,41) +hasLocation(#20208,#20209) +enclosingStmt(#20208,#20181) +exprContainers(#20208,#20001) #20210=* -tokeninfo(#20210,8,#20001,66,"/") -#20211=@"loc,{#10000},5,5,5,5" -locations_default(#20211,#10000,5,5,5,5) -hasLocation(#20210,#20211) +exprs(#20210,79,#20208,-1,"M") +hasLocation(#20210,#20091) +enclosingStmt(#20210,#20181) +exprContainers(#20210,#20001) +literals("M","M",#20210) +#20211=@"var;{M};{#20000}" +variables(#20211,"M",#20000) +bind(#20210,#20211) #20212=* -tokeninfo(#20212,8,#20001,67,">") -#20213=@"loc,{#10000},5,6,5,6" -locations_default(#20213,#10000,5,6,5,6) -hasLocation(#20212,#20213) -#20214=* -tokeninfo(#20214,8,#20001,68,"<") -#20215=@"loc,{#10000},5,7,5,7" -locations_default(#20215,#10000,5,7,5,7) -hasLocation(#20214,#20215) +stmts(#20212,2,#20001,3,";") +hasLocation(#20212,#20009) +stmtContainers(#20212,#20001) +#20213=* +exprs(#20213,89,#20212,0,"") +#20214=@"loc,{#10000},4,1,4,15" +locations_default(#20214,#10000,4,1,4,15) +hasLocation(#20213,#20214) +enclosingStmt(#20213,#20212) +exprContainers(#20213,#20001) +#20215=* +exprs(#20215,0,#20213,-1,"n") +hasLocation(#20215,#20121) +enclosingStmt(#20215,#20212) +exprContainers(#20215,#20001) +literals("n","n",#20215) #20216=* -tokeninfo(#20216,6,#20001,69,"b") -hasLocation(#20216,#20091) -#20217=* -tokeninfo(#20217,8,#20001,70,"/") -#20218=@"loc,{#10000},5,9,5,9" -locations_default(#20218,#10000,5,9,5,9) -hasLocation(#20217,#20218) +properties(#20216,#20213,0,3,"{...props}") +#20217=@"loc,{#10000},4,4,4,13" +locations_default(#20217,#10000,4,4,4,13) +hasLocation(#20216,#20217) +#20218=* +exprs(#20218,66,#20216,1,"...props") +hasLocation(#20218,#20217) +enclosingStmt(#20218,#20212) +exprContainers(#20218,#20001) #20219=* -tokeninfo(#20219,8,#20001,71,">") -#20220=@"loc,{#10000},5,10,5,10" -locations_default(#20220,#10000,5,10,5,10) -hasLocation(#20219,#20220) +exprs(#20219,79,#20218,0,"props") +hasLocation(#20219,#20127) +enclosingStmt(#20219,#20212) +exprContainers(#20219,#20001) +literals("props","props",#20219) +#20220=@"var;{props};{#20000}" +variables(#20220,"props",#20000) +bind(#20219,#20220) #20221=* -tokeninfo(#20221,8,#20001,72,"<") -#20222=@"loc,{#10000},5,11,5,11" -locations_default(#20222,#10000,5,11,5,11) -hasLocation(#20221,#20222) +stmts(#20221,2,#20001,4,"<>") +hasLocation(#20221,#20011) +stmtContainers(#20221,#20001) +#20222=* +exprs(#20222,89,#20221,0,"<>") +hasLocation(#20222,#20011) +enclosingStmt(#20222,#20221) +exprContainers(#20222,#20001) #20223=* -tokeninfo(#20223,8,#20001,73,"/") -#20224=@"loc,{#10000},5,12,5,12" -locations_default(#20224,#10000,5,12,5,12) +exprs(#20223,89,#20222,-2,"") +#20224=@"loc,{#10000},5,3,5,6" +locations_default(#20224,#10000,5,3,5,6) hasLocation(#20223,#20224) +enclosingStmt(#20223,#20221) +exprContainers(#20223,#20001) #20225=* -tokeninfo(#20225,8,#20001,74,">") -#20226=@"loc,{#10000},5,13,5,13" -locations_default(#20226,#10000,5,13,5,13) -hasLocation(#20225,#20226) -#20227=* -tokeninfo(#20227,0,#20001,75,"") -#20228=@"loc,{#10000},6,1,6,0" -locations_default(#20228,#10000,6,1,6,0) -hasLocation(#20227,#20228) +exprs(#20225,0,#20223,-1,"a") +hasLocation(#20225,#20143) +enclosingStmt(#20225,#20221) +exprContainers(#20225,#20001) +literals("a","a",#20225) +#20226=* +exprs(#20226,89,#20222,-3,"") +#20227=@"loc,{#10000},5,7,5,10" +locations_default(#20227,#10000,5,7,5,10) +hasLocation(#20226,#20227) +enclosingStmt(#20226,#20221) +exprContainers(#20226,#20001) +#20228=* +exprs(#20228,0,#20226,-1,"b") +hasLocation(#20228,#20151) +enclosingStmt(#20228,#20221) +exprContainers(#20228,#20001) +literals("b","b",#20228) #20229=* entry_cfg_node(#20229,#20001) #20230=@"loc,{#10000},1,1,1,0" @@ -702,51 +702,51 @@ locations_default(#20230,#10000,1,1,1,0) hasLocation(#20229,#20230) #20231=* exit_cfg_node(#20231,#20001) -hasLocation(#20231,#20228) -successor(#20081,#20086) -successor(#20090,#20088) -successor(#20088,#20083) -successor(#20086,#20084) -successor(#20084,#20090) -successor(#20083,#20231) -successor(#20069,#20073) -successor(#20078,#20077) -successor(#20077,#20075) -successor(#20075,#20071) -successor(#20073,#20078) -successor(#20071,#20081) -successor(#20026,#20030) -successor(#20066,#20064) -successor(#20064,#20055) -successor(#20062,#20057) -successor(#20059,#20062) -successor(#20057,#20066) -successor(#20055,#20028) -successor(#20052,#20059) -successor(#20050,#20046) -successor(#20048,#20050) -successor(#20046,#20042) -successor(#20044,#20048) -successor(#20042,#20052) -successor(#20040,#20032) -successor(#20038,#20034) -successor(#20036,#20038) -successor(#20034,#20040) -successor(#20032,#20044) -successor(#20030,#20036) -successor(#20028,#20069) -successor(#20009,#20015) -successor(#20024,#20021) -successor(#20022,#20024) -successor(#20021,#20019) -successor(#20019,#20011) -successor(#20017,#20013) -successor(#20015,#20017) -successor(#20013,#20022) -successor(#20011,#20026) -successor(#20003,#20007) -successor(#20007,#20005) -successor(#20005,#20009) -successor(#20229,#20003) +hasLocation(#20231,#20163) +successor(#20221,#20225) +successor(#20228,#20226) +successor(#20226,#20222) +successor(#20225,#20223) +successor(#20223,#20228) +successor(#20222,#20231) +successor(#20212,#20215) +successor(#20219,#20218) +successor(#20218,#20216) +successor(#20216,#20213) +successor(#20215,#20219) +successor(#20213,#20221) +successor(#20181,#20184) +successor(#20210,#20208) +successor(#20208,#20201) +successor(#20207,#20203) +successor(#20205,#20207) +successor(#20203,#20210) +successor(#20201,#20182) +successor(#20199,#20205) +successor(#20198,#20195) +successor(#20197,#20198) +successor(#20195,#20192) +successor(#20194,#20197) +successor(#20192,#20199) +successor(#20191,#20185) +successor(#20190,#20187) +successor(#20189,#20190) +successor(#20187,#20191) +successor(#20185,#20194) +successor(#20184,#20189) +successor(#20182,#20212) +successor(#20169,#20174) +successor(#20180,#20178) +successor(#20179,#20180) +successor(#20178,#20176) +successor(#20176,#20170) +successor(#20175,#20172) +successor(#20174,#20175) +successor(#20172,#20179) +successor(#20170,#20181) +successor(#20165,#20168) +successor(#20168,#20166) +successor(#20166,#20169) +successor(#20229,#20165) numlines(#10000,5,5,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/jsx/output/trap/tst.jsx.trap b/javascript/extractor/tests/jsx/output/trap/tst.jsx.trap index f32e397621f..52253369d16 100644 --- a/javascript/extractor/tests/jsx/output/trap/tst.jsx.trap +++ b/javascript/extractor/tests/jsx/output/trap/tst.jsx.trap @@ -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") diff --git a/javascript/extractor/tests/jsx/output/trap/tst2.js.trap b/javascript/extractor/tests/jsx/output/trap/tst2.js.trap index 341d3d1e796..bd7ccdbe718 100644 --- a/javascript/extractor/tests/jsx/output/trap/tst2.js.trap +++ b/javascript/extractor/tests/jsx/output/trap/tst2.js.trap @@ -9,80 +9,80 @@ 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,"/b>") -hasLocation(#20003,#20002) -stmtContainers(#20003,#20001) -#20004=* -exprs(#20004,89,#20003,0,"/b>") -hasLocation(#20004,#20002) -enclosingStmt(#20004,#20003) -exprContainers(#20004,#20001) -#20005=* -exprs(#20005,0,#20004,-1,"a") -#20006=@"loc,{#10000},1,2,1,2" -locations_default(#20006,#10000,1,2,1,2) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -literals("a","a",#20005) -#20007=* -exprs(#20007,4,#20004,-2,"/b>") -#20008=@"loc,{#10000},1,4,1,9" -locations_default(#20008,#10000,1,4,1,9) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20003) -exprContainers(#20007,#20001) -literals("/b>","/b>",#20007) -#20009=* -lines(#20009,#20001,"/b>","") -hasLocation(#20009,#20002) +#20002=* +lines(#20002,#20001,"/b>","") +#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,"a") +#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,8,#20001,0,"<") -#20011=@"loc,{#10000},1,1,1,1" -locations_default(#20011,#10000,1,1,1,1) +tokeninfo(#20010,4,#20001,3,"/b>") +#20011=@"loc,{#10000},1,4,1,9" +locations_default(#20011,#10000,1,4,1,9) hasLocation(#20010,#20011) #20012=* -tokeninfo(#20012,6,#20001,1,"a") -hasLocation(#20012,#20006) -#20013=* -tokeninfo(#20013,8,#20001,2,">") -#20014=@"loc,{#10000},1,3,1,3" -locations_default(#20014,#10000,1,3,1,3) -hasLocation(#20013,#20014) -#20015=* -tokeninfo(#20015,4,#20001,3,"/b>") -hasLocation(#20015,#20008) +tokeninfo(#20012,8,#20001,4,"<") +#20013=@"loc,{#10000},1,10,1,10" +locations_default(#20013,#10000,1,10,1,10) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,5,"/") +#20015=@"loc,{#10000},1,11,1,11" +locations_default(#20015,#10000,1,11,1,11) +hasLocation(#20014,#20015) #20016=* -tokeninfo(#20016,8,#20001,4,"<") -#20017=@"loc,{#10000},1,10,1,10" -locations_default(#20017,#10000,1,10,1,10) +tokeninfo(#20016,6,#20001,6,"a") +#20017=@"loc,{#10000},1,12,1,12" +locations_default(#20017,#10000,1,12,1,12) hasLocation(#20016,#20017) #20018=* -tokeninfo(#20018,8,#20001,5,"/") -#20019=@"loc,{#10000},1,11,1,11" -locations_default(#20019,#10000,1,11,1,11) +tokeninfo(#20018,8,#20001,7,">") +#20019=@"loc,{#10000},1,13,1,13" +locations_default(#20019,#10000,1,13,1,13) hasLocation(#20018,#20019) #20020=* -tokeninfo(#20020,6,#20001,6,"a") -#20021=@"loc,{#10000},1,12,1,12" -locations_default(#20021,#10000,1,12,1,12) +tokeninfo(#20020,0,#20001,8,"") +#20021=@"loc,{#10000},1,14,1,13" +locations_default(#20021,#10000,1,14,1,13) hasLocation(#20020,#20021) +toplevels(#20001,0) +hasLocation(#20001,#20003) #20022=* -tokeninfo(#20022,8,#20001,7,">") -#20023=@"loc,{#10000},1,13,1,13" -locations_default(#20023,#10000,1,13,1,13) -hasLocation(#20022,#20023) +stmts(#20022,2,#20001,0,"/b>") +hasLocation(#20022,#20003) +stmtContainers(#20022,#20001) +#20023=* +exprs(#20023,89,#20022,0,"/b>") +hasLocation(#20023,#20003) +enclosingStmt(#20023,#20022) +exprContainers(#20023,#20001) #20024=* -tokeninfo(#20024,0,#20001,8,"") -#20025=@"loc,{#10000},1,14,1,13" -locations_default(#20025,#10000,1,14,1,13) -hasLocation(#20024,#20025) +exprs(#20024,0,#20023,-1,"a") +hasLocation(#20024,#20007) +enclosingStmt(#20024,#20022) +exprContainers(#20024,#20001) +literals("a","a",#20024) +#20025=* +exprs(#20025,4,#20023,-2,"/b>") +hasLocation(#20025,#20011) +enclosingStmt(#20025,#20022) +exprContainers(#20025,#20001) +literals("/b>","/b>",#20025) #20026=* entry_cfg_node(#20026,#20001) #20027=@"loc,{#10000},1,1,1,0" @@ -90,11 +90,11 @@ locations_default(#20027,#10000,1,1,1,0) hasLocation(#20026,#20027) #20028=* exit_cfg_node(#20028,#20001) -hasLocation(#20028,#20025) -successor(#20003,#20005) -successor(#20007,#20004) -successor(#20005,#20007) -successor(#20004,#20028) -successor(#20026,#20003) +hasLocation(#20028,#20021) +successor(#20022,#20024) +successor(#20025,#20023) +successor(#20024,#20025) +successor(#20023,#20028) +successor(#20026,#20022) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/mozilla/output/trap/array_comprehensions.js.trap b/javascript/extractor/tests/mozilla/output/trap/array_comprehensions.js.trap index 73b8100409b..8e0103b8abe 100644 --- a/javascript/extractor/tests/mozilla/output/trap/array_comprehensions.js.trap +++ b/javascript/extractor/tests/mozilla/output/trap/array_comprehensions.js.trap @@ -9,616 +9,616 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,4,53" -locations_default(#20002,#10000,1,1,4,53) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"[for (y ... year];") -#20004=@"loc,{#10000},1,1,1,44" -locations_default(#20004,#10000,1,1,1,44) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,73,#20003,0,"[for (y ... ) year]") -#20006=@"loc,{#10000},1,1,1,43" -locations_default(#20006,#10000,1,1,1,43) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -#20007=* -exprs(#20007,76,#20005,1,"for (year of years)") -#20008=@"loc,{#10000},1,2,1,20" -locations_default(#20008,#10000,1,2,1,20) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20003) -exprContainers(#20007,#20001) -#20009=* -scopes(#20009,7) -scopenodes(#20007,#20009) -scopenesting(#20009,#20000) -#20010=@"var;{year};{#20009}" -variables(#20010,"year",#20009) -#20011=* -exprs(#20011,78,#20007,0,"year") -#20012=@"loc,{#10000},1,7,1,10" -locations_default(#20012,#10000,1,7,1,10) -hasLocation(#20011,#20012) -enclosingStmt(#20011,#20003) -exprContainers(#20011,#20001) -literals("year","year",#20011) -decl(#20011,#20010) -#20013=* -exprs(#20013,79,#20007,1,"years") -#20014=@"loc,{#10000},1,15,1,19" -locations_default(#20014,#10000,1,15,1,19) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20003) -exprContainers(#20013,#20001) -literals("years","years",#20013) -#20015=@"var;{years};{#20000}" -variables(#20015,"years",#20000) -bind(#20013,#20015) -#20016=* -exprs(#20016,29,#20005,-1,"year > 2000") -#20017=@"loc,{#10000},1,26,1,36" -locations_default(#20017,#10000,1,26,1,36) -hasLocation(#20016,#20017) -enclosingStmt(#20016,#20003) -exprContainers(#20016,#20001) -#20018=* -exprs(#20018,79,#20016,0,"year") -#20019=@"loc,{#10000},1,26,1,29" -locations_default(#20019,#10000,1,26,1,29) -hasLocation(#20018,#20019) -enclosingStmt(#20018,#20003) -exprContainers(#20018,#20001) -literals("year","year",#20018) -bind(#20018,#20010) -#20020=* -exprs(#20020,3,#20016,1,"2000") -#20021=@"loc,{#10000},1,33,1,36" -locations_default(#20021,#10000,1,33,1,36) -hasLocation(#20020,#20021) -enclosingStmt(#20020,#20003) -exprContainers(#20020,#20001) -literals("2000","2000",#20020) -#20022=* -exprs(#20022,79,#20005,0,"year") -#20023=@"loc,{#10000},1,39,1,42" -locations_default(#20023,#10000,1,39,1,42) -hasLocation(#20022,#20023) -enclosingStmt(#20022,#20003) -exprContainers(#20022,#20001) -literals("year","year",#20022) -bind(#20022,#20010) -#20024=* -stmts(#20024,2,#20001,1,"year;") -#20025=@"loc,{#10000},2,1,2,5" -locations_default(#20025,#10000,2,1,2,5) -hasLocation(#20024,#20025) -stmtContainers(#20024,#20001) -#20026=* -exprs(#20026,79,#20024,0,"year") -#20027=@"loc,{#10000},2,1,2,4" -locations_default(#20027,#10000,2,1,2,4) -hasLocation(#20026,#20027) -enclosingStmt(#20026,#20024) -exprContainers(#20026,#20001) -literals("year","year",#20026) -#20028=@"var;{year};{#20000}" -variables(#20028,"year",#20000) -bind(#20026,#20028) -#20029=* -stmts(#20029,2,#20001,2,"[for (i ... ) i+j];") -#20030=@"loc,{#10000},3,1,3,44" -locations_default(#20030,#10000,3,1,3,44) -hasLocation(#20029,#20030) -stmtContainers(#20029,#20001) -#20031=* -exprs(#20031,73,#20029,0,"[for (i ... s) i+j]") -#20032=@"loc,{#10000},3,1,3,43" -locations_default(#20032,#10000,3,1,3,43) -hasLocation(#20031,#20032) -enclosingStmt(#20031,#20029) -exprContainers(#20031,#20001) -#20033=* -exprs(#20033,76,#20031,1,"for (i of numbers)") -#20034=@"loc,{#10000},3,2,3,19" -locations_default(#20034,#10000,3,2,3,19) -hasLocation(#20033,#20034) -enclosingStmt(#20033,#20029) -exprContainers(#20033,#20001) -#20035=* -scopes(#20035,7) -scopenodes(#20033,#20035) -scopenesting(#20035,#20000) -#20036=@"var;{i};{#20035}" -variables(#20036,"i",#20035) -#20037=* -exprs(#20037,78,#20033,0,"i") -#20038=@"loc,{#10000},3,7,3,7" -locations_default(#20038,#10000,3,7,3,7) -hasLocation(#20037,#20038) -enclosingStmt(#20037,#20029) -exprContainers(#20037,#20001) -literals("i","i",#20037) -decl(#20037,#20036) -#20039=* -exprs(#20039,79,#20033,1,"numbers") -#20040=@"loc,{#10000},3,12,3,18" -locations_default(#20040,#10000,3,12,3,18) -hasLocation(#20039,#20040) -enclosingStmt(#20039,#20029) -exprContainers(#20039,#20001) -literals("numbers","numbers",#20039) -#20041=@"var;{numbers};{#20000}" -variables(#20041,"numbers",#20000) -bind(#20039,#20041) -#20042=* -exprs(#20042,76,#20031,2,"for (j of letters)") -#20043=@"loc,{#10000},3,21,3,38" -locations_default(#20043,#10000,3,21,3,38) -hasLocation(#20042,#20043) -enclosingStmt(#20042,#20029) -exprContainers(#20042,#20001) -#20044=* -scopes(#20044,7) -scopenodes(#20042,#20044) -scopenesting(#20044,#20035) -#20045=@"var;{j};{#20044}" -variables(#20045,"j",#20044) -#20046=* -exprs(#20046,78,#20042,0,"j") -#20047=@"loc,{#10000},3,26,3,26" -locations_default(#20047,#10000,3,26,3,26) -hasLocation(#20046,#20047) -enclosingStmt(#20046,#20029) -exprContainers(#20046,#20001) -literals("j","j",#20046) -decl(#20046,#20045) -#20048=* -exprs(#20048,79,#20042,1,"letters") -#20049=@"loc,{#10000},3,31,3,37" -locations_default(#20049,#10000,3,31,3,37) -hasLocation(#20048,#20049) -enclosingStmt(#20048,#20029) -exprContainers(#20048,#20001) -literals("letters","letters",#20048) -#20050=@"var;{letters};{#20000}" -variables(#20050,"letters",#20000) -bind(#20048,#20050) -#20051=* -exprs(#20051,34,#20031,0,"i+j") -#20052=@"loc,{#10000},3,40,3,42" -locations_default(#20052,#10000,3,40,3,42) -hasLocation(#20051,#20052) -enclosingStmt(#20051,#20029) -exprContainers(#20051,#20001) -#20053=* -exprs(#20053,79,#20051,0,"i") -#20054=@"loc,{#10000},3,40,3,40" -locations_default(#20054,#10000,3,40,3,40) -hasLocation(#20053,#20054) -enclosingStmt(#20053,#20029) -exprContainers(#20053,#20001) -literals("i","i",#20053) -bind(#20053,#20036) -#20055=* -exprs(#20055,79,#20051,1,"j") -#20056=@"loc,{#10000},3,42,3,42" -locations_default(#20056,#10000,3,42,3,42) -hasLocation(#20055,#20056) -enclosingStmt(#20055,#20029) -exprContainers(#20055,#20001) -literals("j","j",#20055) -bind(#20055,#20045) -#20057=* -stmts(#20057,2,#20001,3,"[for (i ... ) i+j];") -#20058=@"loc,{#10000},4,1,4,53" -locations_default(#20058,#10000,4,1,4,53) -hasLocation(#20057,#20058) -stmtContainers(#20057,#20001) -#20059=* -exprs(#20059,73,#20057,0,"[for (i ... j) i+j]") -#20060=@"loc,{#10000},4,1,4,52" -locations_default(#20060,#10000,4,1,4,52) -hasLocation(#20059,#20060) -enclosingStmt(#20059,#20057) -exprContainers(#20059,#20001) -#20061=* -exprs(#20061,76,#20059,1,"for (i of numbers)") -#20062=@"loc,{#10000},4,2,4,19" -locations_default(#20062,#10000,4,2,4,19) -hasLocation(#20061,#20062) -enclosingStmt(#20061,#20057) -exprContainers(#20061,#20001) -#20063=* -scopes(#20063,7) -scopenodes(#20061,#20063) -scopenesting(#20063,#20000) -#20064=@"var;{i};{#20063}" -variables(#20064,"i",#20063) -#20065=* -exprs(#20065,78,#20061,0,"i") -#20066=@"loc,{#10000},4,7,4,7" -locations_default(#20066,#10000,4,7,4,7) -hasLocation(#20065,#20066) -enclosingStmt(#20065,#20057) -exprContainers(#20065,#20001) -literals("i","i",#20065) -decl(#20065,#20064) -#20067=* -exprs(#20067,79,#20061,1,"numbers") -#20068=@"loc,{#10000},4,12,4,18" -locations_default(#20068,#10000,4,12,4,18) -hasLocation(#20067,#20068) -enclosingStmt(#20067,#20057) -exprContainers(#20067,#20001) -literals("numbers","numbers",#20067) -bind(#20067,#20041) -#20069=* -exprs(#20069,76,#20059,2,"for (j of letters)") -#20070=@"loc,{#10000},4,21,4,38" -locations_default(#20070,#10000,4,21,4,38) -hasLocation(#20069,#20070) -enclosingStmt(#20069,#20057) -exprContainers(#20069,#20001) -#20071=* -scopes(#20071,7) -scopenodes(#20069,#20071) -scopenesting(#20071,#20063) -#20072=@"var;{j};{#20071}" -variables(#20072,"j",#20071) -#20073=* -exprs(#20073,78,#20069,0,"j") -#20074=@"loc,{#10000},4,26,4,26" -locations_default(#20074,#10000,4,26,4,26) -hasLocation(#20073,#20074) -enclosingStmt(#20073,#20057) -exprContainers(#20073,#20001) -literals("j","j",#20073) -decl(#20073,#20072) -#20075=* -exprs(#20075,79,#20069,1,"letters") -#20076=@"loc,{#10000},4,31,4,37" -locations_default(#20076,#10000,4,31,4,37) -hasLocation(#20075,#20076) -enclosingStmt(#20075,#20057) -exprContainers(#20075,#20001) -literals("letters","letters",#20075) -bind(#20075,#20050) -#20077=* -exprs(#20077,27,#20059,-1,"i 2000) year];"," +#20002=* +lines(#20002,#20001,"[for (year of years) if (year > 2000) year];"," ") -hasLocation(#20089,#20004) -#20090=* -lines(#20090,#20001,"year;"," +#20003=@"loc,{#10000},1,1,1,44" +locations_default(#20003,#10000,1,1,1,44) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"year;"," ") -hasLocation(#20090,#20025) -#20091=* -lines(#20091,#20001,"[for (i of numbers) for (j of letters) i+j];"," +#20005=@"loc,{#10000},2,1,2,5" +locations_default(#20005,#10000,2,1,2,5) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"[for (i of numbers) for (j of letters) i+j];"," ") -hasLocation(#20091,#20030) -#20092=* -lines(#20092,#20001,"[for (i of numbers) for (j of letters) if (i") +#20031=@"loc,{#10000},1,31,1,31" +locations_default(#20031,#10000,1,31,1,31) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,3,#20001,11,"2000") +#20033=@"loc,{#10000},1,33,1,36" +locations_default(#20033,#10000,1,33,1,36) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,12,")") +#20035=@"loc,{#10000},1,37,1,37" +locations_default(#20035,#10000,1,37,1,37) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,6,#20001,13,"year") +#20037=@"loc,{#10000},1,39,1,42" +locations_default(#20037,#10000,1,39,1,42) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,8,#20001,14,"]") +#20039=@"loc,{#10000},1,43,1,43" +locations_default(#20039,#10000,1,43,1,43) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,15,";") +#20041=@"loc,{#10000},1,44,1,44" +locations_default(#20041,#10000,1,44,1,44) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,6,#20001,16,"year") +#20043=@"loc,{#10000},2,1,2,4" +locations_default(#20043,#10000,2,1,2,4) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,17,";") +#20045=@"loc,{#10000},2,5,2,5" +locations_default(#20045,#10000,2,5,2,5) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,18,"[") +#20047=@"loc,{#10000},3,1,3,1" +locations_default(#20047,#10000,3,1,3,1) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,7,#20001,19,"for") +#20049=@"loc,{#10000},3,2,3,4" +locations_default(#20049,#10000,3,2,3,4) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,20,"(") +#20051=@"loc,{#10000},3,6,3,6" +locations_default(#20051,#10000,3,6,3,6) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,6,#20001,21,"i") +#20053=@"loc,{#10000},3,7,3,7" +locations_default(#20053,#10000,3,7,3,7) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,6,#20001,22,"of") +#20055=@"loc,{#10000},3,9,3,10" +locations_default(#20055,#10000,3,9,3,10) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,6,#20001,23,"numbers") +#20057=@"loc,{#10000},3,12,3,18" +locations_default(#20057,#10000,3,12,3,18) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,8,#20001,24,")") +#20059=@"loc,{#10000},3,19,3,19" +locations_default(#20059,#10000,3,19,3,19) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,7,#20001,25,"for") +#20061=@"loc,{#10000},3,21,3,23" +locations_default(#20061,#10000,3,21,3,23) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,8,#20001,26,"(") +#20063=@"loc,{#10000},3,25,3,25" +locations_default(#20063,#10000,3,25,3,25) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,6,#20001,27,"j") +#20065=@"loc,{#10000},3,26,3,26" +locations_default(#20065,#10000,3,26,3,26) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,6,#20001,28,"of") +#20067=@"loc,{#10000},3,28,3,29" +locations_default(#20067,#10000,3,28,3,29) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,6,#20001,29,"letters") +#20069=@"loc,{#10000},3,31,3,37" +locations_default(#20069,#10000,3,31,3,37) +hasLocation(#20068,#20069) +#20070=* +tokeninfo(#20070,8,#20001,30,")") +#20071=@"loc,{#10000},3,38,3,38" +locations_default(#20071,#10000,3,38,3,38) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,6,#20001,31,"i") +#20073=@"loc,{#10000},3,40,3,40" +locations_default(#20073,#10000,3,40,3,40) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,8,#20001,32,"+") +#20075=@"loc,{#10000},3,41,3,41" +locations_default(#20075,#10000,3,41,3,41) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,6,#20001,33,"j") +#20077=@"loc,{#10000},3,42,3,42" +locations_default(#20077,#10000,3,42,3,42) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,8,#20001,34,"]") +#20079=@"loc,{#10000},3,43,3,43" +locations_default(#20079,#10000,3,43,3,43) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,8,#20001,35,";") +#20081=@"loc,{#10000},3,44,3,44" +locations_default(#20081,#10000,3,44,3,44) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,8,#20001,36,"[") +#20083=@"loc,{#10000},4,1,4,1" +locations_default(#20083,#10000,4,1,4,1) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,7,#20001,37,"for") +#20085=@"loc,{#10000},4,2,4,4" +locations_default(#20085,#10000,4,2,4,4) +hasLocation(#20084,#20085) +#20086=* +tokeninfo(#20086,8,#20001,38,"(") +#20087=@"loc,{#10000},4,6,4,6" +locations_default(#20087,#10000,4,6,4,6) +hasLocation(#20086,#20087) +#20088=* +tokeninfo(#20088,6,#20001,39,"i") +#20089=@"loc,{#10000},4,7,4,7" +locations_default(#20089,#10000,4,7,4,7) +hasLocation(#20088,#20089) +#20090=* +tokeninfo(#20090,6,#20001,40,"of") +#20091=@"loc,{#10000},4,9,4,10" +locations_default(#20091,#10000,4,9,4,10) +hasLocation(#20090,#20091) +#20092=* +tokeninfo(#20092,6,#20001,41,"numbers") +#20093=@"loc,{#10000},4,12,4,18" +locations_default(#20093,#10000,4,12,4,18) +hasLocation(#20092,#20093) +#20094=* +tokeninfo(#20094,8,#20001,42,")") +#20095=@"loc,{#10000},4,19,4,19" +locations_default(#20095,#10000,4,19,4,19) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,7,#20001,43,"for") +#20097=@"loc,{#10000},4,21,4,23" +locations_default(#20097,#10000,4,21,4,23) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,8,#20001,44,"(") +#20099=@"loc,{#10000},4,25,4,25" +locations_default(#20099,#10000,4,25,4,25) +hasLocation(#20098,#20099) #20100=* -tokeninfo(#20100,6,#20001,4,"of") -#20101=@"loc,{#10000},1,12,1,13" -locations_default(#20101,#10000,1,12,1,13) +tokeninfo(#20100,6,#20001,45,"j") +#20101=@"loc,{#10000},4,26,4,26" +locations_default(#20101,#10000,4,26,4,26) hasLocation(#20100,#20101) #20102=* -tokeninfo(#20102,6,#20001,5,"years") -hasLocation(#20102,#20014) -#20103=* -tokeninfo(#20103,8,#20001,6,")") -#20104=@"loc,{#10000},1,20,1,20" -locations_default(#20104,#10000,1,20,1,20) -hasLocation(#20103,#20104) -#20105=* -tokeninfo(#20105,7,#20001,7,"if") -#20106=@"loc,{#10000},1,22,1,23" -locations_default(#20106,#10000,1,22,1,23) -hasLocation(#20105,#20106) -#20107=* -tokeninfo(#20107,8,#20001,8,"(") -#20108=@"loc,{#10000},1,25,1,25" -locations_default(#20108,#10000,1,25,1,25) -hasLocation(#20107,#20108) -#20109=* -tokeninfo(#20109,6,#20001,9,"year") -hasLocation(#20109,#20019) +tokeninfo(#20102,6,#20001,46,"of") +#20103=@"loc,{#10000},4,28,4,29" +locations_default(#20103,#10000,4,28,4,29) +hasLocation(#20102,#20103) +#20104=* +tokeninfo(#20104,6,#20001,47,"letters") +#20105=@"loc,{#10000},4,31,4,37" +locations_default(#20105,#10000,4,31,4,37) +hasLocation(#20104,#20105) +#20106=* +tokeninfo(#20106,8,#20001,48,")") +#20107=@"loc,{#10000},4,38,4,38" +locations_default(#20107,#10000,4,38,4,38) +hasLocation(#20106,#20107) +#20108=* +tokeninfo(#20108,7,#20001,49,"if") +#20109=@"loc,{#10000},4,40,4,41" +locations_default(#20109,#10000,4,40,4,41) +hasLocation(#20108,#20109) #20110=* -tokeninfo(#20110,8,#20001,10,">") -#20111=@"loc,{#10000},1,31,1,31" -locations_default(#20111,#10000,1,31,1,31) +tokeninfo(#20110,8,#20001,50,"(") +#20111=@"loc,{#10000},4,43,4,43" +locations_default(#20111,#10000,4,43,4,43) hasLocation(#20110,#20111) #20112=* -tokeninfo(#20112,3,#20001,11,"2000") -hasLocation(#20112,#20021) -#20113=* -tokeninfo(#20113,8,#20001,12,")") -#20114=@"loc,{#10000},1,37,1,37" -locations_default(#20114,#10000,1,37,1,37) -hasLocation(#20113,#20114) -#20115=* -tokeninfo(#20115,6,#20001,13,"year") -hasLocation(#20115,#20023) +tokeninfo(#20112,6,#20001,51,"i") +#20113=@"loc,{#10000},4,44,4,44" +locations_default(#20113,#10000,4,44,4,44) +hasLocation(#20112,#20113) +#20114=* +tokeninfo(#20114,8,#20001,52,"<") +#20115=@"loc,{#10000},4,45,4,45" +locations_default(#20115,#10000,4,45,4,45) +hasLocation(#20114,#20115) #20116=* -tokeninfo(#20116,8,#20001,14,"]") -#20117=@"loc,{#10000},1,43,1,43" -locations_default(#20117,#10000,1,43,1,43) +tokeninfo(#20116,6,#20001,53,"j") +#20117=@"loc,{#10000},4,46,4,46" +locations_default(#20117,#10000,4,46,4,46) hasLocation(#20116,#20117) #20118=* -tokeninfo(#20118,8,#20001,15,";") -#20119=@"loc,{#10000},1,44,1,44" -locations_default(#20119,#10000,1,44,1,44) +tokeninfo(#20118,8,#20001,54,")") +#20119=@"loc,{#10000},4,47,4,47" +locations_default(#20119,#10000,4,47,4,47) hasLocation(#20118,#20119) #20120=* -tokeninfo(#20120,6,#20001,16,"year") -hasLocation(#20120,#20027) -#20121=* -tokeninfo(#20121,8,#20001,17,";") -#20122=@"loc,{#10000},2,5,2,5" -locations_default(#20122,#10000,2,5,2,5) -hasLocation(#20121,#20122) -#20123=* -tokeninfo(#20123,8,#20001,18,"[") -#20124=@"loc,{#10000},3,1,3,1" -locations_default(#20124,#10000,3,1,3,1) -hasLocation(#20123,#20124) -#20125=* -tokeninfo(#20125,7,#20001,19,"for") -#20126=@"loc,{#10000},3,2,3,4" -locations_default(#20126,#10000,3,2,3,4) -hasLocation(#20125,#20126) -#20127=* -tokeninfo(#20127,8,#20001,20,"(") -#20128=@"loc,{#10000},3,6,3,6" -locations_default(#20128,#10000,3,6,3,6) -hasLocation(#20127,#20128) -#20129=* -tokeninfo(#20129,6,#20001,21,"i") -hasLocation(#20129,#20038) +tokeninfo(#20120,6,#20001,55,"i") +#20121=@"loc,{#10000},4,49,4,49" +locations_default(#20121,#10000,4,49,4,49) +hasLocation(#20120,#20121) +#20122=* +tokeninfo(#20122,8,#20001,56,"+") +#20123=@"loc,{#10000},4,50,4,50" +locations_default(#20123,#10000,4,50,4,50) +hasLocation(#20122,#20123) +#20124=* +tokeninfo(#20124,6,#20001,57,"j") +#20125=@"loc,{#10000},4,51,4,51" +locations_default(#20125,#10000,4,51,4,51) +hasLocation(#20124,#20125) +#20126=* +tokeninfo(#20126,8,#20001,58,"]") +#20127=@"loc,{#10000},4,52,4,52" +locations_default(#20127,#10000,4,52,4,52) +hasLocation(#20126,#20127) +#20128=* +tokeninfo(#20128,8,#20001,59,";") +#20129=@"loc,{#10000},4,53,4,53" +locations_default(#20129,#10000,4,53,4,53) +hasLocation(#20128,#20129) #20130=* -tokeninfo(#20130,6,#20001,22,"of") -#20131=@"loc,{#10000},3,9,3,10" -locations_default(#20131,#10000,3,9,3,10) +tokeninfo(#20130,0,#20001,60,"") +#20131=@"loc,{#10000},4,54,4,53" +locations_default(#20131,#10000,4,54,4,53) hasLocation(#20130,#20131) -#20132=* -tokeninfo(#20132,6,#20001,23,"numbers") -hasLocation(#20132,#20040) +toplevels(#20001,0) +#20132=@"loc,{#10000},1,1,4,53" +locations_default(#20132,#10000,1,1,4,53) +hasLocation(#20001,#20132) #20133=* -tokeninfo(#20133,8,#20001,24,")") -#20134=@"loc,{#10000},3,19,3,19" -locations_default(#20134,#10000,3,19,3,19) -hasLocation(#20133,#20134) -#20135=* -tokeninfo(#20135,7,#20001,25,"for") -#20136=@"loc,{#10000},3,21,3,23" -locations_default(#20136,#10000,3,21,3,23) -hasLocation(#20135,#20136) -#20137=* -tokeninfo(#20137,8,#20001,26,"(") -#20138=@"loc,{#10000},3,25,3,25" -locations_default(#20138,#10000,3,25,3,25) -hasLocation(#20137,#20138) -#20139=* -tokeninfo(#20139,6,#20001,27,"j") -hasLocation(#20139,#20047) +stmts(#20133,2,#20001,0,"[for (y ... year];") +hasLocation(#20133,#20003) +stmtContainers(#20133,#20001) +#20134=* +exprs(#20134,73,#20133,0,"[for (y ... ) year]") +#20135=@"loc,{#10000},1,1,1,43" +locations_default(#20135,#10000,1,1,1,43) +hasLocation(#20134,#20135) +enclosingStmt(#20134,#20133) +exprContainers(#20134,#20001) +#20136=* +exprs(#20136,76,#20134,1,"for (year of years)") +#20137=@"loc,{#10000},1,2,1,20" +locations_default(#20137,#10000,1,2,1,20) +hasLocation(#20136,#20137) +enclosingStmt(#20136,#20133) +exprContainers(#20136,#20001) +#20138=* +scopes(#20138,7) +scopenodes(#20136,#20138) +scopenesting(#20138,#20000) +#20139=@"var;{year};{#20138}" +variables(#20139,"year",#20138) #20140=* -tokeninfo(#20140,6,#20001,28,"of") -#20141=@"loc,{#10000},3,28,3,29" -locations_default(#20141,#10000,3,28,3,29) -hasLocation(#20140,#20141) -#20142=* -tokeninfo(#20142,6,#20001,29,"letters") -hasLocation(#20142,#20049) +exprs(#20140,78,#20136,0,"year") +hasLocation(#20140,#20017) +enclosingStmt(#20140,#20133) +exprContainers(#20140,#20001) +literals("year","year",#20140) +decl(#20140,#20139) +#20141=* +exprs(#20141,79,#20136,1,"years") +hasLocation(#20141,#20021) +enclosingStmt(#20141,#20133) +exprContainers(#20141,#20001) +literals("years","years",#20141) +#20142=@"var;{years};{#20000}" +variables(#20142,"years",#20000) +bind(#20141,#20142) #20143=* -tokeninfo(#20143,8,#20001,30,")") -#20144=@"loc,{#10000},3,38,3,38" -locations_default(#20144,#10000,3,38,3,38) +exprs(#20143,29,#20134,-1,"year > 2000") +#20144=@"loc,{#10000},1,26,1,36" +locations_default(#20144,#10000,1,26,1,36) hasLocation(#20143,#20144) +enclosingStmt(#20143,#20133) +exprContainers(#20143,#20001) #20145=* -tokeninfo(#20145,6,#20001,31,"i") -hasLocation(#20145,#20054) +exprs(#20145,79,#20143,0,"year") +hasLocation(#20145,#20029) +enclosingStmt(#20145,#20133) +exprContainers(#20145,#20001) +literals("year","year",#20145) +bind(#20145,#20139) #20146=* -tokeninfo(#20146,8,#20001,32,"+") -#20147=@"loc,{#10000},3,41,3,41" -locations_default(#20147,#10000,3,41,3,41) -hasLocation(#20146,#20147) +exprs(#20146,3,#20143,1,"2000") +hasLocation(#20146,#20033) +enclosingStmt(#20146,#20133) +exprContainers(#20146,#20001) +literals("2000","2000",#20146) +#20147=* +exprs(#20147,79,#20134,0,"year") +hasLocation(#20147,#20037) +enclosingStmt(#20147,#20133) +exprContainers(#20147,#20001) +literals("year","year",#20147) +bind(#20147,#20139) #20148=* -tokeninfo(#20148,6,#20001,33,"j") -hasLocation(#20148,#20056) +stmts(#20148,2,#20001,1,"year;") +hasLocation(#20148,#20005) +stmtContainers(#20148,#20001) #20149=* -tokeninfo(#20149,8,#20001,34,"]") -#20150=@"loc,{#10000},3,43,3,43" -locations_default(#20150,#10000,3,43,3,43) -hasLocation(#20149,#20150) +exprs(#20149,79,#20148,0,"year") +hasLocation(#20149,#20043) +enclosingStmt(#20149,#20148) +exprContainers(#20149,#20001) +literals("year","year",#20149) +#20150=@"var;{year};{#20000}" +variables(#20150,"year",#20000) +bind(#20149,#20150) #20151=* -tokeninfo(#20151,8,#20001,35,";") -#20152=@"loc,{#10000},3,44,3,44" -locations_default(#20152,#10000,3,44,3,44) -hasLocation(#20151,#20152) -#20153=* -tokeninfo(#20153,8,#20001,36,"[") -#20154=@"loc,{#10000},4,1,4,1" -locations_default(#20154,#10000,4,1,4,1) -hasLocation(#20153,#20154) -#20155=* -tokeninfo(#20155,7,#20001,37,"for") -#20156=@"loc,{#10000},4,2,4,4" -locations_default(#20156,#10000,4,2,4,4) -hasLocation(#20155,#20156) -#20157=* -tokeninfo(#20157,8,#20001,38,"(") -#20158=@"loc,{#10000},4,6,4,6" -locations_default(#20158,#10000,4,6,4,6) -hasLocation(#20157,#20158) +stmts(#20151,2,#20001,2,"[for (i ... ) i+j];") +hasLocation(#20151,#20007) +stmtContainers(#20151,#20001) +#20152=* +exprs(#20152,73,#20151,0,"[for (i ... s) i+j]") +#20153=@"loc,{#10000},3,1,3,43" +locations_default(#20153,#10000,3,1,3,43) +hasLocation(#20152,#20153) +enclosingStmt(#20152,#20151) +exprContainers(#20152,#20001) +#20154=* +exprs(#20154,76,#20152,1,"for (i of numbers)") +#20155=@"loc,{#10000},3,2,3,19" +locations_default(#20155,#10000,3,2,3,19) +hasLocation(#20154,#20155) +enclosingStmt(#20154,#20151) +exprContainers(#20154,#20001) +#20156=* +scopes(#20156,7) +scopenodes(#20154,#20156) +scopenesting(#20156,#20000) +#20157=@"var;{i};{#20156}" +variables(#20157,"i",#20156) +#20158=* +exprs(#20158,78,#20154,0,"i") +hasLocation(#20158,#20053) +enclosingStmt(#20158,#20151) +exprContainers(#20158,#20001) +literals("i","i",#20158) +decl(#20158,#20157) #20159=* -tokeninfo(#20159,6,#20001,39,"i") -hasLocation(#20159,#20066) -#20160=* -tokeninfo(#20160,6,#20001,40,"of") -#20161=@"loc,{#10000},4,9,4,10" -locations_default(#20161,#10000,4,9,4,10) -hasLocation(#20160,#20161) -#20162=* -tokeninfo(#20162,6,#20001,41,"numbers") -hasLocation(#20162,#20068) +exprs(#20159,79,#20154,1,"numbers") +hasLocation(#20159,#20057) +enclosingStmt(#20159,#20151) +exprContainers(#20159,#20001) +literals("numbers","numbers",#20159) +#20160=@"var;{numbers};{#20000}" +variables(#20160,"numbers",#20000) +bind(#20159,#20160) +#20161=* +exprs(#20161,76,#20152,2,"for (j of letters)") +#20162=@"loc,{#10000},3,21,3,38" +locations_default(#20162,#10000,3,21,3,38) +hasLocation(#20161,#20162) +enclosingStmt(#20161,#20151) +exprContainers(#20161,#20001) #20163=* -tokeninfo(#20163,8,#20001,42,")") -#20164=@"loc,{#10000},4,19,4,19" -locations_default(#20164,#10000,4,19,4,19) -hasLocation(#20163,#20164) +scopes(#20163,7) +scopenodes(#20161,#20163) +scopenesting(#20163,#20156) +#20164=@"var;{j};{#20163}" +variables(#20164,"j",#20163) #20165=* -tokeninfo(#20165,7,#20001,43,"for") -#20166=@"loc,{#10000},4,21,4,23" -locations_default(#20166,#10000,4,21,4,23) -hasLocation(#20165,#20166) -#20167=* -tokeninfo(#20167,8,#20001,44,"(") -#20168=@"loc,{#10000},4,25,4,25" -locations_default(#20168,#10000,4,25,4,25) -hasLocation(#20167,#20168) -#20169=* -tokeninfo(#20169,6,#20001,45,"j") -hasLocation(#20169,#20074) +exprs(#20165,78,#20161,0,"j") +hasLocation(#20165,#20065) +enclosingStmt(#20165,#20151) +exprContainers(#20165,#20001) +literals("j","j",#20165) +decl(#20165,#20164) +#20166=* +exprs(#20166,79,#20161,1,"letters") +hasLocation(#20166,#20069) +enclosingStmt(#20166,#20151) +exprContainers(#20166,#20001) +literals("letters","letters",#20166) +#20167=@"var;{letters};{#20000}" +variables(#20167,"letters",#20000) +bind(#20166,#20167) +#20168=* +exprs(#20168,34,#20152,0,"i+j") +#20169=@"loc,{#10000},3,40,3,42" +locations_default(#20169,#10000,3,40,3,42) +hasLocation(#20168,#20169) +enclosingStmt(#20168,#20151) +exprContainers(#20168,#20001) #20170=* -tokeninfo(#20170,6,#20001,46,"of") -#20171=@"loc,{#10000},4,28,4,29" -locations_default(#20171,#10000,4,28,4,29) -hasLocation(#20170,#20171) +exprs(#20170,79,#20168,0,"i") +hasLocation(#20170,#20073) +enclosingStmt(#20170,#20151) +exprContainers(#20170,#20001) +literals("i","i",#20170) +bind(#20170,#20157) +#20171=* +exprs(#20171,79,#20168,1,"j") +hasLocation(#20171,#20077) +enclosingStmt(#20171,#20151) +exprContainers(#20171,#20001) +literals("j","j",#20171) +bind(#20171,#20164) #20172=* -tokeninfo(#20172,6,#20001,47,"letters") -hasLocation(#20172,#20076) +stmts(#20172,2,#20001,3,"[for (i ... ) i+j];") +hasLocation(#20172,#20009) +stmtContainers(#20172,#20001) #20173=* -tokeninfo(#20173,8,#20001,48,")") -#20174=@"loc,{#10000},4,38,4,38" -locations_default(#20174,#10000,4,38,4,38) +exprs(#20173,73,#20172,0,"[for (i ... j) i+j]") +#20174=@"loc,{#10000},4,1,4,52" +locations_default(#20174,#10000,4,1,4,52) hasLocation(#20173,#20174) +enclosingStmt(#20173,#20172) +exprContainers(#20173,#20001) #20175=* -tokeninfo(#20175,7,#20001,49,"if") -#20176=@"loc,{#10000},4,40,4,41" -locations_default(#20176,#10000,4,40,4,41) +exprs(#20175,76,#20173,1,"for (i of numbers)") +#20176=@"loc,{#10000},4,2,4,19" +locations_default(#20176,#10000,4,2,4,19) hasLocation(#20175,#20176) +enclosingStmt(#20175,#20172) +exprContainers(#20175,#20001) #20177=* -tokeninfo(#20177,8,#20001,50,"(") -#20178=@"loc,{#10000},4,43,4,43" -locations_default(#20178,#10000,4,43,4,43) -hasLocation(#20177,#20178) +scopes(#20177,7) +scopenodes(#20175,#20177) +scopenesting(#20177,#20000) +#20178=@"var;{i};{#20177}" +variables(#20178,"i",#20177) #20179=* -tokeninfo(#20179,6,#20001,51,"i") -hasLocation(#20179,#20080) +exprs(#20179,78,#20175,0,"i") +hasLocation(#20179,#20089) +enclosingStmt(#20179,#20172) +exprContainers(#20179,#20001) +literals("i","i",#20179) +decl(#20179,#20178) #20180=* -tokeninfo(#20180,8,#20001,52,"<") -#20181=@"loc,{#10000},4,45,4,45" -locations_default(#20181,#10000,4,45,4,45) -hasLocation(#20180,#20181) -#20182=* -tokeninfo(#20182,6,#20001,53,"j") -hasLocation(#20182,#20082) +exprs(#20180,79,#20175,1,"numbers") +hasLocation(#20180,#20093) +enclosingStmt(#20180,#20172) +exprContainers(#20180,#20001) +literals("numbers","numbers",#20180) +bind(#20180,#20160) +#20181=* +exprs(#20181,76,#20173,2,"for (j of letters)") +#20182=@"loc,{#10000},4,21,4,38" +locations_default(#20182,#10000,4,21,4,38) +hasLocation(#20181,#20182) +enclosingStmt(#20181,#20172) +exprContainers(#20181,#20001) #20183=* -tokeninfo(#20183,8,#20001,54,")") -#20184=@"loc,{#10000},4,47,4,47" -locations_default(#20184,#10000,4,47,4,47) -hasLocation(#20183,#20184) +scopes(#20183,7) +scopenodes(#20181,#20183) +scopenesting(#20183,#20177) +#20184=@"var;{j};{#20183}" +variables(#20184,"j",#20183) #20185=* -tokeninfo(#20185,6,#20001,55,"i") -hasLocation(#20185,#20086) +exprs(#20185,78,#20181,0,"j") +hasLocation(#20185,#20101) +enclosingStmt(#20185,#20172) +exprContainers(#20185,#20001) +literals("j","j",#20185) +decl(#20185,#20184) #20186=* -tokeninfo(#20186,8,#20001,56,"+") -#20187=@"loc,{#10000},4,50,4,50" -locations_default(#20187,#10000,4,50,4,50) -hasLocation(#20186,#20187) -#20188=* -tokeninfo(#20188,6,#20001,57,"j") -hasLocation(#20188,#20088) +exprs(#20186,79,#20181,1,"letters") +hasLocation(#20186,#20105) +enclosingStmt(#20186,#20172) +exprContainers(#20186,#20001) +literals("letters","letters",#20186) +bind(#20186,#20167) +#20187=* +exprs(#20187,27,#20173,-1,"i 2000") -#20017=@"loc,{#10000},1,26,1,36" -locations_default(#20017,#10000,1,26,1,36) -hasLocation(#20016,#20017) -enclosingStmt(#20016,#20003) -exprContainers(#20016,#20001) -#20018=* -exprs(#20018,79,#20016,0,"year") -#20019=@"loc,{#10000},1,26,1,29" -locations_default(#20019,#10000,1,26,1,29) -hasLocation(#20018,#20019) -enclosingStmt(#20018,#20003) -exprContainers(#20018,#20001) -literals("year","year",#20018) -bind(#20018,#20010) -#20020=* -exprs(#20020,3,#20016,1,"2000") -#20021=@"loc,{#10000},1,33,1,36" -locations_default(#20021,#10000,1,33,1,36) -hasLocation(#20020,#20021) -enclosingStmt(#20020,#20003) -exprContainers(#20020,#20001) -literals("2000","2000",#20020) -#20022=* -exprs(#20022,79,#20005,0,"year") -#20023=@"loc,{#10000},1,39,1,42" -locations_default(#20023,#10000,1,39,1,42) -hasLocation(#20022,#20023) -enclosingStmt(#20022,#20003) -exprContainers(#20022,#20001) -literals("year","year",#20022) -bind(#20022,#20010) -#20024=* -stmts(#20024,2,#20001,1,"year;") -#20025=@"loc,{#10000},2,1,2,5" -locations_default(#20025,#10000,2,1,2,5) -hasLocation(#20024,#20025) -stmtContainers(#20024,#20001) -#20026=* -exprs(#20026,79,#20024,0,"year") -#20027=@"loc,{#10000},2,1,2,4" -locations_default(#20027,#10000,2,1,2,4) -hasLocation(#20026,#20027) -enclosingStmt(#20026,#20024) -exprContainers(#20026,#20001) -literals("year","year",#20026) -#20028=@"var;{year};{#20000}" -variables(#20028,"year",#20000) -bind(#20026,#20028) -#20029=* -stmts(#20029,2,#20001,2,"(for (i ... ) i+j);") -#20030=@"loc,{#10000},3,1,3,44" -locations_default(#20030,#10000,3,1,3,44) -hasLocation(#20029,#20030) -stmtContainers(#20029,#20001) -#20031=* -exprs(#20031,74,#20029,0,"(for (i ... s) i+j)") -#20032=@"loc,{#10000},3,1,3,43" -locations_default(#20032,#10000,3,1,3,43) -hasLocation(#20031,#20032) -enclosingStmt(#20031,#20029) -exprContainers(#20031,#20001) -#20033=* -exprs(#20033,76,#20031,1,"for (i of numbers)") -#20034=@"loc,{#10000},3,2,3,19" -locations_default(#20034,#10000,3,2,3,19) -hasLocation(#20033,#20034) -enclosingStmt(#20033,#20029) -exprContainers(#20033,#20001) -#20035=* -scopes(#20035,7) -scopenodes(#20033,#20035) -scopenesting(#20035,#20000) -#20036=@"var;{i};{#20035}" -variables(#20036,"i",#20035) -#20037=* -exprs(#20037,78,#20033,0,"i") -#20038=@"loc,{#10000},3,7,3,7" -locations_default(#20038,#10000,3,7,3,7) -hasLocation(#20037,#20038) -enclosingStmt(#20037,#20029) -exprContainers(#20037,#20001) -literals("i","i",#20037) -decl(#20037,#20036) -#20039=* -exprs(#20039,79,#20033,1,"numbers") -#20040=@"loc,{#10000},3,12,3,18" -locations_default(#20040,#10000,3,12,3,18) -hasLocation(#20039,#20040) -enclosingStmt(#20039,#20029) -exprContainers(#20039,#20001) -literals("numbers","numbers",#20039) -#20041=@"var;{numbers};{#20000}" -variables(#20041,"numbers",#20000) -bind(#20039,#20041) -#20042=* -exprs(#20042,76,#20031,2,"for (j of letters)") -#20043=@"loc,{#10000},3,21,3,38" -locations_default(#20043,#10000,3,21,3,38) -hasLocation(#20042,#20043) -enclosingStmt(#20042,#20029) -exprContainers(#20042,#20001) -#20044=* -scopes(#20044,7) -scopenodes(#20042,#20044) -scopenesting(#20044,#20035) -#20045=@"var;{j};{#20044}" -variables(#20045,"j",#20044) -#20046=* -exprs(#20046,78,#20042,0,"j") -#20047=@"loc,{#10000},3,26,3,26" -locations_default(#20047,#10000,3,26,3,26) -hasLocation(#20046,#20047) -enclosingStmt(#20046,#20029) -exprContainers(#20046,#20001) -literals("j","j",#20046) -decl(#20046,#20045) -#20048=* -exprs(#20048,79,#20042,1,"letters") -#20049=@"loc,{#10000},3,31,3,37" -locations_default(#20049,#10000,3,31,3,37) -hasLocation(#20048,#20049) -enclosingStmt(#20048,#20029) -exprContainers(#20048,#20001) -literals("letters","letters",#20048) -#20050=@"var;{letters};{#20000}" -variables(#20050,"letters",#20000) -bind(#20048,#20050) -#20051=* -exprs(#20051,34,#20031,0,"i+j") -#20052=@"loc,{#10000},3,40,3,42" -locations_default(#20052,#10000,3,40,3,42) -hasLocation(#20051,#20052) -enclosingStmt(#20051,#20029) -exprContainers(#20051,#20001) -#20053=* -exprs(#20053,79,#20051,0,"i") -#20054=@"loc,{#10000},3,40,3,40" -locations_default(#20054,#10000,3,40,3,40) -hasLocation(#20053,#20054) -enclosingStmt(#20053,#20029) -exprContainers(#20053,#20001) -literals("i","i",#20053) -bind(#20053,#20036) -#20055=* -exprs(#20055,79,#20051,1,"j") -#20056=@"loc,{#10000},3,42,3,42" -locations_default(#20056,#10000,3,42,3,42) -hasLocation(#20055,#20056) -enclosingStmt(#20055,#20029) -exprContainers(#20055,#20001) -literals("j","j",#20055) -bind(#20055,#20045) -#20057=* -stmts(#20057,2,#20001,3,"(for (i ... ) i+j);") -#20058=@"loc,{#10000},4,1,4,53" -locations_default(#20058,#10000,4,1,4,53) -hasLocation(#20057,#20058) -stmtContainers(#20057,#20001) -#20059=* -exprs(#20059,74,#20057,0,"(for (i ... j) i+j)") -#20060=@"loc,{#10000},4,1,4,52" -locations_default(#20060,#10000,4,1,4,52) -hasLocation(#20059,#20060) -enclosingStmt(#20059,#20057) -exprContainers(#20059,#20001) -#20061=* -exprs(#20061,76,#20059,1,"for (i of numbers)") -#20062=@"loc,{#10000},4,2,4,19" -locations_default(#20062,#10000,4,2,4,19) -hasLocation(#20061,#20062) -enclosingStmt(#20061,#20057) -exprContainers(#20061,#20001) -#20063=* -scopes(#20063,7) -scopenodes(#20061,#20063) -scopenesting(#20063,#20000) -#20064=@"var;{i};{#20063}" -variables(#20064,"i",#20063) -#20065=* -exprs(#20065,78,#20061,0,"i") -#20066=@"loc,{#10000},4,7,4,7" -locations_default(#20066,#10000,4,7,4,7) -hasLocation(#20065,#20066) -enclosingStmt(#20065,#20057) -exprContainers(#20065,#20001) -literals("i","i",#20065) -decl(#20065,#20064) -#20067=* -exprs(#20067,79,#20061,1,"numbers") -#20068=@"loc,{#10000},4,12,4,18" -locations_default(#20068,#10000,4,12,4,18) -hasLocation(#20067,#20068) -enclosingStmt(#20067,#20057) -exprContainers(#20067,#20001) -literals("numbers","numbers",#20067) -bind(#20067,#20041) -#20069=* -exprs(#20069,76,#20059,2,"for (j of letters)") -#20070=@"loc,{#10000},4,21,4,38" -locations_default(#20070,#10000,4,21,4,38) -hasLocation(#20069,#20070) -enclosingStmt(#20069,#20057) -exprContainers(#20069,#20001) -#20071=* -scopes(#20071,7) -scopenodes(#20069,#20071) -scopenesting(#20071,#20063) -#20072=@"var;{j};{#20071}" -variables(#20072,"j",#20071) -#20073=* -exprs(#20073,78,#20069,0,"j") -#20074=@"loc,{#10000},4,26,4,26" -locations_default(#20074,#10000,4,26,4,26) -hasLocation(#20073,#20074) -enclosingStmt(#20073,#20057) -exprContainers(#20073,#20001) -literals("j","j",#20073) -decl(#20073,#20072) -#20075=* -exprs(#20075,79,#20069,1,"letters") -#20076=@"loc,{#10000},4,31,4,37" -locations_default(#20076,#10000,4,31,4,37) -hasLocation(#20075,#20076) -enclosingStmt(#20075,#20057) -exprContainers(#20075,#20001) -literals("letters","letters",#20075) -bind(#20075,#20050) -#20077=* -exprs(#20077,27,#20059,-1,"i 2000) year);"," +#20002=* +lines(#20002,#20001,"(for (year of years) if (year > 2000) year);"," ") -hasLocation(#20089,#20004) -#20090=* -lines(#20090,#20001,"year;"," +#20003=@"loc,{#10000},1,1,1,44" +locations_default(#20003,#10000,1,1,1,44) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"year;"," ") -hasLocation(#20090,#20025) -#20091=* -lines(#20091,#20001,"(for (i of numbers) for (j of letters) i+j);"," +#20005=@"loc,{#10000},2,1,2,5" +locations_default(#20005,#10000,2,1,2,5) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"(for (i of numbers) for (j of letters) i+j);"," ") -hasLocation(#20091,#20030) -#20092=* -lines(#20092,#20001,"(for (i of numbers) for (j of letters) if (i") +#20031=@"loc,{#10000},1,31,1,31" +locations_default(#20031,#10000,1,31,1,31) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,3,#20001,11,"2000") +#20033=@"loc,{#10000},1,33,1,36" +locations_default(#20033,#10000,1,33,1,36) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,12,")") +#20035=@"loc,{#10000},1,37,1,37" +locations_default(#20035,#10000,1,37,1,37) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,6,#20001,13,"year") +#20037=@"loc,{#10000},1,39,1,42" +locations_default(#20037,#10000,1,39,1,42) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,8,#20001,14,")") +#20039=@"loc,{#10000},1,43,1,43" +locations_default(#20039,#10000,1,43,1,43) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,15,";") +#20041=@"loc,{#10000},1,44,1,44" +locations_default(#20041,#10000,1,44,1,44) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,6,#20001,16,"year") +#20043=@"loc,{#10000},2,1,2,4" +locations_default(#20043,#10000,2,1,2,4) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,17,";") +#20045=@"loc,{#10000},2,5,2,5" +locations_default(#20045,#10000,2,5,2,5) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,18,"(") +#20047=@"loc,{#10000},3,1,3,1" +locations_default(#20047,#10000,3,1,3,1) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,7,#20001,19,"for") +#20049=@"loc,{#10000},3,2,3,4" +locations_default(#20049,#10000,3,2,3,4) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,20,"(") +#20051=@"loc,{#10000},3,6,3,6" +locations_default(#20051,#10000,3,6,3,6) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,6,#20001,21,"i") +#20053=@"loc,{#10000},3,7,3,7" +locations_default(#20053,#10000,3,7,3,7) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,6,#20001,22,"of") +#20055=@"loc,{#10000},3,9,3,10" +locations_default(#20055,#10000,3,9,3,10) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,6,#20001,23,"numbers") +#20057=@"loc,{#10000},3,12,3,18" +locations_default(#20057,#10000,3,12,3,18) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,8,#20001,24,")") +#20059=@"loc,{#10000},3,19,3,19" +locations_default(#20059,#10000,3,19,3,19) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,7,#20001,25,"for") +#20061=@"loc,{#10000},3,21,3,23" +locations_default(#20061,#10000,3,21,3,23) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,8,#20001,26,"(") +#20063=@"loc,{#10000},3,25,3,25" +locations_default(#20063,#10000,3,25,3,25) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,6,#20001,27,"j") +#20065=@"loc,{#10000},3,26,3,26" +locations_default(#20065,#10000,3,26,3,26) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,6,#20001,28,"of") +#20067=@"loc,{#10000},3,28,3,29" +locations_default(#20067,#10000,3,28,3,29) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,6,#20001,29,"letters") +#20069=@"loc,{#10000},3,31,3,37" +locations_default(#20069,#10000,3,31,3,37) +hasLocation(#20068,#20069) +#20070=* +tokeninfo(#20070,8,#20001,30,")") +#20071=@"loc,{#10000},3,38,3,38" +locations_default(#20071,#10000,3,38,3,38) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,6,#20001,31,"i") +#20073=@"loc,{#10000},3,40,3,40" +locations_default(#20073,#10000,3,40,3,40) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,8,#20001,32,"+") +#20075=@"loc,{#10000},3,41,3,41" +locations_default(#20075,#10000,3,41,3,41) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,6,#20001,33,"j") +#20077=@"loc,{#10000},3,42,3,42" +locations_default(#20077,#10000,3,42,3,42) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,8,#20001,34,")") +#20079=@"loc,{#10000},3,43,3,43" +locations_default(#20079,#10000,3,43,3,43) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,8,#20001,35,";") +#20081=@"loc,{#10000},3,44,3,44" +locations_default(#20081,#10000,3,44,3,44) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,8,#20001,36,"(") +#20083=@"loc,{#10000},4,1,4,1" +locations_default(#20083,#10000,4,1,4,1) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,7,#20001,37,"for") +#20085=@"loc,{#10000},4,2,4,4" +locations_default(#20085,#10000,4,2,4,4) +hasLocation(#20084,#20085) +#20086=* +tokeninfo(#20086,8,#20001,38,"(") +#20087=@"loc,{#10000},4,6,4,6" +locations_default(#20087,#10000,4,6,4,6) +hasLocation(#20086,#20087) +#20088=* +tokeninfo(#20088,6,#20001,39,"i") +#20089=@"loc,{#10000},4,7,4,7" +locations_default(#20089,#10000,4,7,4,7) +hasLocation(#20088,#20089) +#20090=* +tokeninfo(#20090,6,#20001,40,"of") +#20091=@"loc,{#10000},4,9,4,10" +locations_default(#20091,#10000,4,9,4,10) +hasLocation(#20090,#20091) +#20092=* +tokeninfo(#20092,6,#20001,41,"numbers") +#20093=@"loc,{#10000},4,12,4,18" +locations_default(#20093,#10000,4,12,4,18) +hasLocation(#20092,#20093) +#20094=* +tokeninfo(#20094,8,#20001,42,")") +#20095=@"loc,{#10000},4,19,4,19" +locations_default(#20095,#10000,4,19,4,19) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,7,#20001,43,"for") +#20097=@"loc,{#10000},4,21,4,23" +locations_default(#20097,#10000,4,21,4,23) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,8,#20001,44,"(") +#20099=@"loc,{#10000},4,25,4,25" +locations_default(#20099,#10000,4,25,4,25) +hasLocation(#20098,#20099) #20100=* -tokeninfo(#20100,6,#20001,4,"of") -#20101=@"loc,{#10000},1,12,1,13" -locations_default(#20101,#10000,1,12,1,13) +tokeninfo(#20100,6,#20001,45,"j") +#20101=@"loc,{#10000},4,26,4,26" +locations_default(#20101,#10000,4,26,4,26) hasLocation(#20100,#20101) #20102=* -tokeninfo(#20102,6,#20001,5,"years") -hasLocation(#20102,#20014) -#20103=* -tokeninfo(#20103,8,#20001,6,")") -#20104=@"loc,{#10000},1,20,1,20" -locations_default(#20104,#10000,1,20,1,20) -hasLocation(#20103,#20104) -#20105=* -tokeninfo(#20105,7,#20001,7,"if") -#20106=@"loc,{#10000},1,22,1,23" -locations_default(#20106,#10000,1,22,1,23) -hasLocation(#20105,#20106) -#20107=* -tokeninfo(#20107,8,#20001,8,"(") -#20108=@"loc,{#10000},1,25,1,25" -locations_default(#20108,#10000,1,25,1,25) -hasLocation(#20107,#20108) -#20109=* -tokeninfo(#20109,6,#20001,9,"year") -hasLocation(#20109,#20019) +tokeninfo(#20102,6,#20001,46,"of") +#20103=@"loc,{#10000},4,28,4,29" +locations_default(#20103,#10000,4,28,4,29) +hasLocation(#20102,#20103) +#20104=* +tokeninfo(#20104,6,#20001,47,"letters") +#20105=@"loc,{#10000},4,31,4,37" +locations_default(#20105,#10000,4,31,4,37) +hasLocation(#20104,#20105) +#20106=* +tokeninfo(#20106,8,#20001,48,")") +#20107=@"loc,{#10000},4,38,4,38" +locations_default(#20107,#10000,4,38,4,38) +hasLocation(#20106,#20107) +#20108=* +tokeninfo(#20108,7,#20001,49,"if") +#20109=@"loc,{#10000},4,40,4,41" +locations_default(#20109,#10000,4,40,4,41) +hasLocation(#20108,#20109) #20110=* -tokeninfo(#20110,8,#20001,10,">") -#20111=@"loc,{#10000},1,31,1,31" -locations_default(#20111,#10000,1,31,1,31) +tokeninfo(#20110,8,#20001,50,"(") +#20111=@"loc,{#10000},4,43,4,43" +locations_default(#20111,#10000,4,43,4,43) hasLocation(#20110,#20111) #20112=* -tokeninfo(#20112,3,#20001,11,"2000") -hasLocation(#20112,#20021) -#20113=* -tokeninfo(#20113,8,#20001,12,")") -#20114=@"loc,{#10000},1,37,1,37" -locations_default(#20114,#10000,1,37,1,37) -hasLocation(#20113,#20114) -#20115=* -tokeninfo(#20115,6,#20001,13,"year") -hasLocation(#20115,#20023) +tokeninfo(#20112,6,#20001,51,"i") +#20113=@"loc,{#10000},4,44,4,44" +locations_default(#20113,#10000,4,44,4,44) +hasLocation(#20112,#20113) +#20114=* +tokeninfo(#20114,8,#20001,52,"<") +#20115=@"loc,{#10000},4,45,4,45" +locations_default(#20115,#10000,4,45,4,45) +hasLocation(#20114,#20115) #20116=* -tokeninfo(#20116,8,#20001,14,")") -#20117=@"loc,{#10000},1,43,1,43" -locations_default(#20117,#10000,1,43,1,43) +tokeninfo(#20116,6,#20001,53,"j") +#20117=@"loc,{#10000},4,46,4,46" +locations_default(#20117,#10000,4,46,4,46) hasLocation(#20116,#20117) #20118=* -tokeninfo(#20118,8,#20001,15,";") -#20119=@"loc,{#10000},1,44,1,44" -locations_default(#20119,#10000,1,44,1,44) +tokeninfo(#20118,8,#20001,54,")") +#20119=@"loc,{#10000},4,47,4,47" +locations_default(#20119,#10000,4,47,4,47) hasLocation(#20118,#20119) #20120=* -tokeninfo(#20120,6,#20001,16,"year") -hasLocation(#20120,#20027) -#20121=* -tokeninfo(#20121,8,#20001,17,";") -#20122=@"loc,{#10000},2,5,2,5" -locations_default(#20122,#10000,2,5,2,5) -hasLocation(#20121,#20122) -#20123=* -tokeninfo(#20123,8,#20001,18,"(") -#20124=@"loc,{#10000},3,1,3,1" -locations_default(#20124,#10000,3,1,3,1) -hasLocation(#20123,#20124) -#20125=* -tokeninfo(#20125,7,#20001,19,"for") -#20126=@"loc,{#10000},3,2,3,4" -locations_default(#20126,#10000,3,2,3,4) -hasLocation(#20125,#20126) -#20127=* -tokeninfo(#20127,8,#20001,20,"(") -#20128=@"loc,{#10000},3,6,3,6" -locations_default(#20128,#10000,3,6,3,6) -hasLocation(#20127,#20128) -#20129=* -tokeninfo(#20129,6,#20001,21,"i") -hasLocation(#20129,#20038) +tokeninfo(#20120,6,#20001,55,"i") +#20121=@"loc,{#10000},4,49,4,49" +locations_default(#20121,#10000,4,49,4,49) +hasLocation(#20120,#20121) +#20122=* +tokeninfo(#20122,8,#20001,56,"+") +#20123=@"loc,{#10000},4,50,4,50" +locations_default(#20123,#10000,4,50,4,50) +hasLocation(#20122,#20123) +#20124=* +tokeninfo(#20124,6,#20001,57,"j") +#20125=@"loc,{#10000},4,51,4,51" +locations_default(#20125,#10000,4,51,4,51) +hasLocation(#20124,#20125) +#20126=* +tokeninfo(#20126,8,#20001,58,")") +#20127=@"loc,{#10000},4,52,4,52" +locations_default(#20127,#10000,4,52,4,52) +hasLocation(#20126,#20127) +#20128=* +tokeninfo(#20128,8,#20001,59,";") +#20129=@"loc,{#10000},4,53,4,53" +locations_default(#20129,#10000,4,53,4,53) +hasLocation(#20128,#20129) #20130=* -tokeninfo(#20130,6,#20001,22,"of") -#20131=@"loc,{#10000},3,9,3,10" -locations_default(#20131,#10000,3,9,3,10) +tokeninfo(#20130,0,#20001,60,"") +#20131=@"loc,{#10000},4,54,4,53" +locations_default(#20131,#10000,4,54,4,53) hasLocation(#20130,#20131) -#20132=* -tokeninfo(#20132,6,#20001,23,"numbers") -hasLocation(#20132,#20040) +toplevels(#20001,0) +#20132=@"loc,{#10000},1,1,4,53" +locations_default(#20132,#10000,1,1,4,53) +hasLocation(#20001,#20132) #20133=* -tokeninfo(#20133,8,#20001,24,")") -#20134=@"loc,{#10000},3,19,3,19" -locations_default(#20134,#10000,3,19,3,19) -hasLocation(#20133,#20134) -#20135=* -tokeninfo(#20135,7,#20001,25,"for") -#20136=@"loc,{#10000},3,21,3,23" -locations_default(#20136,#10000,3,21,3,23) -hasLocation(#20135,#20136) -#20137=* -tokeninfo(#20137,8,#20001,26,"(") -#20138=@"loc,{#10000},3,25,3,25" -locations_default(#20138,#10000,3,25,3,25) -hasLocation(#20137,#20138) -#20139=* -tokeninfo(#20139,6,#20001,27,"j") -hasLocation(#20139,#20047) +stmts(#20133,2,#20001,0,"(for (y ... year);") +hasLocation(#20133,#20003) +stmtContainers(#20133,#20001) +#20134=* +exprs(#20134,74,#20133,0,"(for (y ... ) year)") +#20135=@"loc,{#10000},1,1,1,43" +locations_default(#20135,#10000,1,1,1,43) +hasLocation(#20134,#20135) +enclosingStmt(#20134,#20133) +exprContainers(#20134,#20001) +#20136=* +exprs(#20136,76,#20134,1,"for (year of years)") +#20137=@"loc,{#10000},1,2,1,20" +locations_default(#20137,#10000,1,2,1,20) +hasLocation(#20136,#20137) +enclosingStmt(#20136,#20133) +exprContainers(#20136,#20001) +#20138=* +scopes(#20138,7) +scopenodes(#20136,#20138) +scopenesting(#20138,#20000) +#20139=@"var;{year};{#20138}" +variables(#20139,"year",#20138) #20140=* -tokeninfo(#20140,6,#20001,28,"of") -#20141=@"loc,{#10000},3,28,3,29" -locations_default(#20141,#10000,3,28,3,29) -hasLocation(#20140,#20141) -#20142=* -tokeninfo(#20142,6,#20001,29,"letters") -hasLocation(#20142,#20049) +exprs(#20140,78,#20136,0,"year") +hasLocation(#20140,#20017) +enclosingStmt(#20140,#20133) +exprContainers(#20140,#20001) +literals("year","year",#20140) +decl(#20140,#20139) +#20141=* +exprs(#20141,79,#20136,1,"years") +hasLocation(#20141,#20021) +enclosingStmt(#20141,#20133) +exprContainers(#20141,#20001) +literals("years","years",#20141) +#20142=@"var;{years};{#20000}" +variables(#20142,"years",#20000) +bind(#20141,#20142) #20143=* -tokeninfo(#20143,8,#20001,30,")") -#20144=@"loc,{#10000},3,38,3,38" -locations_default(#20144,#10000,3,38,3,38) +exprs(#20143,29,#20134,-1,"year > 2000") +#20144=@"loc,{#10000},1,26,1,36" +locations_default(#20144,#10000,1,26,1,36) hasLocation(#20143,#20144) +enclosingStmt(#20143,#20133) +exprContainers(#20143,#20001) #20145=* -tokeninfo(#20145,6,#20001,31,"i") -hasLocation(#20145,#20054) +exprs(#20145,79,#20143,0,"year") +hasLocation(#20145,#20029) +enclosingStmt(#20145,#20133) +exprContainers(#20145,#20001) +literals("year","year",#20145) +bind(#20145,#20139) #20146=* -tokeninfo(#20146,8,#20001,32,"+") -#20147=@"loc,{#10000},3,41,3,41" -locations_default(#20147,#10000,3,41,3,41) -hasLocation(#20146,#20147) +exprs(#20146,3,#20143,1,"2000") +hasLocation(#20146,#20033) +enclosingStmt(#20146,#20133) +exprContainers(#20146,#20001) +literals("2000","2000",#20146) +#20147=* +exprs(#20147,79,#20134,0,"year") +hasLocation(#20147,#20037) +enclosingStmt(#20147,#20133) +exprContainers(#20147,#20001) +literals("year","year",#20147) +bind(#20147,#20139) #20148=* -tokeninfo(#20148,6,#20001,33,"j") -hasLocation(#20148,#20056) +stmts(#20148,2,#20001,1,"year;") +hasLocation(#20148,#20005) +stmtContainers(#20148,#20001) #20149=* -tokeninfo(#20149,8,#20001,34,")") -#20150=@"loc,{#10000},3,43,3,43" -locations_default(#20150,#10000,3,43,3,43) -hasLocation(#20149,#20150) +exprs(#20149,79,#20148,0,"year") +hasLocation(#20149,#20043) +enclosingStmt(#20149,#20148) +exprContainers(#20149,#20001) +literals("year","year",#20149) +#20150=@"var;{year};{#20000}" +variables(#20150,"year",#20000) +bind(#20149,#20150) #20151=* -tokeninfo(#20151,8,#20001,35,";") -#20152=@"loc,{#10000},3,44,3,44" -locations_default(#20152,#10000,3,44,3,44) -hasLocation(#20151,#20152) -#20153=* -tokeninfo(#20153,8,#20001,36,"(") -#20154=@"loc,{#10000},4,1,4,1" -locations_default(#20154,#10000,4,1,4,1) -hasLocation(#20153,#20154) -#20155=* -tokeninfo(#20155,7,#20001,37,"for") -#20156=@"loc,{#10000},4,2,4,4" -locations_default(#20156,#10000,4,2,4,4) -hasLocation(#20155,#20156) -#20157=* -tokeninfo(#20157,8,#20001,38,"(") -#20158=@"loc,{#10000},4,6,4,6" -locations_default(#20158,#10000,4,6,4,6) -hasLocation(#20157,#20158) +stmts(#20151,2,#20001,2,"(for (i ... ) i+j);") +hasLocation(#20151,#20007) +stmtContainers(#20151,#20001) +#20152=* +exprs(#20152,74,#20151,0,"(for (i ... s) i+j)") +#20153=@"loc,{#10000},3,1,3,43" +locations_default(#20153,#10000,3,1,3,43) +hasLocation(#20152,#20153) +enclosingStmt(#20152,#20151) +exprContainers(#20152,#20001) +#20154=* +exprs(#20154,76,#20152,1,"for (i of numbers)") +#20155=@"loc,{#10000},3,2,3,19" +locations_default(#20155,#10000,3,2,3,19) +hasLocation(#20154,#20155) +enclosingStmt(#20154,#20151) +exprContainers(#20154,#20001) +#20156=* +scopes(#20156,7) +scopenodes(#20154,#20156) +scopenesting(#20156,#20000) +#20157=@"var;{i};{#20156}" +variables(#20157,"i",#20156) +#20158=* +exprs(#20158,78,#20154,0,"i") +hasLocation(#20158,#20053) +enclosingStmt(#20158,#20151) +exprContainers(#20158,#20001) +literals("i","i",#20158) +decl(#20158,#20157) #20159=* -tokeninfo(#20159,6,#20001,39,"i") -hasLocation(#20159,#20066) -#20160=* -tokeninfo(#20160,6,#20001,40,"of") -#20161=@"loc,{#10000},4,9,4,10" -locations_default(#20161,#10000,4,9,4,10) -hasLocation(#20160,#20161) -#20162=* -tokeninfo(#20162,6,#20001,41,"numbers") -hasLocation(#20162,#20068) +exprs(#20159,79,#20154,1,"numbers") +hasLocation(#20159,#20057) +enclosingStmt(#20159,#20151) +exprContainers(#20159,#20001) +literals("numbers","numbers",#20159) +#20160=@"var;{numbers};{#20000}" +variables(#20160,"numbers",#20000) +bind(#20159,#20160) +#20161=* +exprs(#20161,76,#20152,2,"for (j of letters)") +#20162=@"loc,{#10000},3,21,3,38" +locations_default(#20162,#10000,3,21,3,38) +hasLocation(#20161,#20162) +enclosingStmt(#20161,#20151) +exprContainers(#20161,#20001) #20163=* -tokeninfo(#20163,8,#20001,42,")") -#20164=@"loc,{#10000},4,19,4,19" -locations_default(#20164,#10000,4,19,4,19) -hasLocation(#20163,#20164) +scopes(#20163,7) +scopenodes(#20161,#20163) +scopenesting(#20163,#20156) +#20164=@"var;{j};{#20163}" +variables(#20164,"j",#20163) #20165=* -tokeninfo(#20165,7,#20001,43,"for") -#20166=@"loc,{#10000},4,21,4,23" -locations_default(#20166,#10000,4,21,4,23) -hasLocation(#20165,#20166) -#20167=* -tokeninfo(#20167,8,#20001,44,"(") -#20168=@"loc,{#10000},4,25,4,25" -locations_default(#20168,#10000,4,25,4,25) -hasLocation(#20167,#20168) -#20169=* -tokeninfo(#20169,6,#20001,45,"j") -hasLocation(#20169,#20074) +exprs(#20165,78,#20161,0,"j") +hasLocation(#20165,#20065) +enclosingStmt(#20165,#20151) +exprContainers(#20165,#20001) +literals("j","j",#20165) +decl(#20165,#20164) +#20166=* +exprs(#20166,79,#20161,1,"letters") +hasLocation(#20166,#20069) +enclosingStmt(#20166,#20151) +exprContainers(#20166,#20001) +literals("letters","letters",#20166) +#20167=@"var;{letters};{#20000}" +variables(#20167,"letters",#20000) +bind(#20166,#20167) +#20168=* +exprs(#20168,34,#20152,0,"i+j") +#20169=@"loc,{#10000},3,40,3,42" +locations_default(#20169,#10000,3,40,3,42) +hasLocation(#20168,#20169) +enclosingStmt(#20168,#20151) +exprContainers(#20168,#20001) #20170=* -tokeninfo(#20170,6,#20001,46,"of") -#20171=@"loc,{#10000},4,28,4,29" -locations_default(#20171,#10000,4,28,4,29) -hasLocation(#20170,#20171) +exprs(#20170,79,#20168,0,"i") +hasLocation(#20170,#20073) +enclosingStmt(#20170,#20151) +exprContainers(#20170,#20001) +literals("i","i",#20170) +bind(#20170,#20157) +#20171=* +exprs(#20171,79,#20168,1,"j") +hasLocation(#20171,#20077) +enclosingStmt(#20171,#20151) +exprContainers(#20171,#20001) +literals("j","j",#20171) +bind(#20171,#20164) #20172=* -tokeninfo(#20172,6,#20001,47,"letters") -hasLocation(#20172,#20076) +stmts(#20172,2,#20001,3,"(for (i ... ) i+j);") +hasLocation(#20172,#20009) +stmtContainers(#20172,#20001) #20173=* -tokeninfo(#20173,8,#20001,48,")") -#20174=@"loc,{#10000},4,38,4,38" -locations_default(#20174,#10000,4,38,4,38) +exprs(#20173,74,#20172,0,"(for (i ... j) i+j)") +#20174=@"loc,{#10000},4,1,4,52" +locations_default(#20174,#10000,4,1,4,52) hasLocation(#20173,#20174) +enclosingStmt(#20173,#20172) +exprContainers(#20173,#20001) #20175=* -tokeninfo(#20175,7,#20001,49,"if") -#20176=@"loc,{#10000},4,40,4,41" -locations_default(#20176,#10000,4,40,4,41) +exprs(#20175,76,#20173,1,"for (i of numbers)") +#20176=@"loc,{#10000},4,2,4,19" +locations_default(#20176,#10000,4,2,4,19) hasLocation(#20175,#20176) +enclosingStmt(#20175,#20172) +exprContainers(#20175,#20001) #20177=* -tokeninfo(#20177,8,#20001,50,"(") -#20178=@"loc,{#10000},4,43,4,43" -locations_default(#20178,#10000,4,43,4,43) -hasLocation(#20177,#20178) +scopes(#20177,7) +scopenodes(#20175,#20177) +scopenesting(#20177,#20000) +#20178=@"var;{i};{#20177}" +variables(#20178,"i",#20177) #20179=* -tokeninfo(#20179,6,#20001,51,"i") -hasLocation(#20179,#20080) +exprs(#20179,78,#20175,0,"i") +hasLocation(#20179,#20089) +enclosingStmt(#20179,#20172) +exprContainers(#20179,#20001) +literals("i","i",#20179) +decl(#20179,#20178) #20180=* -tokeninfo(#20180,8,#20001,52,"<") -#20181=@"loc,{#10000},4,45,4,45" -locations_default(#20181,#10000,4,45,4,45) -hasLocation(#20180,#20181) -#20182=* -tokeninfo(#20182,6,#20001,53,"j") -hasLocation(#20182,#20082) +exprs(#20180,79,#20175,1,"numbers") +hasLocation(#20180,#20093) +enclosingStmt(#20180,#20172) +exprContainers(#20180,#20001) +literals("numbers","numbers",#20180) +bind(#20180,#20160) +#20181=* +exprs(#20181,76,#20173,2,"for (j of letters)") +#20182=@"loc,{#10000},4,21,4,38" +locations_default(#20182,#10000,4,21,4,38) +hasLocation(#20181,#20182) +enclosingStmt(#20181,#20172) +exprContainers(#20181,#20001) #20183=* -tokeninfo(#20183,8,#20001,54,")") -#20184=@"loc,{#10000},4,47,4,47" -locations_default(#20184,#10000,4,47,4,47) -hasLocation(#20183,#20184) +scopes(#20183,7) +scopenodes(#20181,#20183) +scopenesting(#20183,#20177) +#20184=@"var;{j};{#20183}" +variables(#20184,"j",#20183) #20185=* -tokeninfo(#20185,6,#20001,55,"i") -hasLocation(#20185,#20086) +exprs(#20185,78,#20181,0,"j") +hasLocation(#20185,#20101) +enclosingStmt(#20185,#20172) +exprContainers(#20185,#20001) +literals("j","j",#20185) +decl(#20185,#20184) #20186=* -tokeninfo(#20186,8,#20001,56,"+") -#20187=@"loc,{#10000},4,50,4,50" -locations_default(#20187,#10000,4,50,4,50) -hasLocation(#20186,#20187) -#20188=* -tokeninfo(#20188,6,#20001,57,"j") -hasLocation(#20188,#20088) +exprs(#20186,79,#20181,1,"letters") +hasLocation(#20186,#20105) +enclosingStmt(#20186,#20172) +exprContainers(#20186,#20001) +literals("letters","letters",#20186) +bind(#20186,#20167) +#20187=* +exprs(#20187,27,#20173,-1,"i\s+)\w+\k$/;"," +") +#20003=@"loc,{#10000},1,1,1,24" +locations_default(#20003,#10000,1,1,1,24) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"/(?<=.)/;"," +") +#20005=@"loc,{#10000},2,1,2,9" +locations_default(#20005,#10000,2,1,2,9) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"/(?\s+)\w+\k$/") +#20015=@"loc,{#10000},1,1,1,23" +locations_default(#20015,#10000,1,1,1,23) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,1,";") +#20017=@"loc,{#10000},1,24,1,24" +locations_default(#20017,#10000,1,24,1,24) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,5,#20001,2,"/(?<=.)/") +#20019=@"loc,{#10000},2,1,2,8" +locations_default(#20019,#10000,2,1,2,8) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,3,";") +#20021=@"loc,{#10000},2,9,2,9" +locations_default(#20021,#10000,2,9,2,9) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,5,#20001,4,"/(?$/;") -#20004=@"loc,{#10000},1,1,1,24" -locations_default(#20004,#10000,1,1,1,24) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,5,#20003,0,"/^(?$/") -#20006=@"loc,{#10000},1,1,1,23" -locations_default(#20006,#10000,1,1,1,23) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -literals("/^(?\s+)\w+\k$/","/^(?\s+)\w+\k$/",#20005) -#20007=* -regexpterm(#20007,1,#20005,0,"^(?\s+)\w+\k$") -#20008=@"loc,{#10000},1,2,1,22" -locations_default(#20008,#10000,1,2,1,22) -hasLocation(#20007,#20008) -#20009=* -regexpterm(#20009,2,#20007,0,"^") -#20010=@"loc,{#10000},1,2,1,2" -locations_default(#20010,#10000,1,2,1,2) -hasLocation(#20009,#20010) -#20011=* -regexpterm(#20011,13,#20007,1,"(?\s+)") -#20012=@"loc,{#10000},1,3,1,12" -locations_default(#20012,#10000,1,3,1,12) -hasLocation(#20011,#20012) -isCapture(#20011,1) -isNamedCapture(#20011,"ws") -#20013=* -regexpterm(#20013,9,#20011,0,"\s+") -#20014=@"loc,{#10000},1,9,1,11" -locations_default(#20014,#10000,1,9,1,11) -hasLocation(#20013,#20014) -isGreedy(#20013) -#20015=* -regexpterm(#20015,20,#20013,0,"\s") -#20016=@"loc,{#10000},1,9,1,10" -locations_default(#20016,#10000,1,9,1,10) -hasLocation(#20015,#20016) -charClassEscape(#20015,"s") -#20017=* -regexpterm(#20017,9,#20007,2,"\w+") -#20018=@"loc,{#10000},1,13,1,15" -locations_default(#20018,#10000,1,13,1,15) -hasLocation(#20017,#20018) -isGreedy(#20017) -#20019=* -regexpterm(#20019,20,#20017,0,"\w") -#20020=@"loc,{#10000},1,13,1,14" -locations_default(#20020,#10000,1,13,1,14) -hasLocation(#20019,#20020) -charClassEscape(#20019,"w") -#20021=* -regexpterm(#20021,22,#20007,3,"\k") -#20022=@"loc,{#10000},1,16,1,21" -locations_default(#20022,#10000,1,16,1,21) -hasLocation(#20021,#20022) -namedBackref(#20021,"ws") -#20023=* -regexpterm(#20023,3,#20007,4,"$") -#20024=@"loc,{#10000},1,22,1,22" -locations_default(#20024,#10000,1,22,1,22) -hasLocation(#20023,#20024) -#20025=* -stmts(#20025,2,#20001,1,"/(?<=.)/;") -#20026=@"loc,{#10000},2,1,2,9" -locations_default(#20026,#10000,2,1,2,9) -hasLocation(#20025,#20026) -stmtContainers(#20025,#20001) -#20027=* -exprs(#20027,5,#20025,0,"/(?<=.)/") -#20028=@"loc,{#10000},2,1,2,8" -locations_default(#20028,#10000,2,1,2,8) -hasLocation(#20027,#20028) -enclosingStmt(#20027,#20025) -exprContainers(#20027,#20001) -literals("/(?<=.)/","/(?<=.)/",#20027) -#20029=* -regexpterm(#20029,25,#20027,0,"(?<=.)") -#20030=@"loc,{#10000},2,2,2,7" -locations_default(#20030,#10000,2,2,2,7) -hasLocation(#20029,#20030) -#20031=* -regexpterm(#20031,12,#20029,0,".") -#20032=@"loc,{#10000},2,6,2,6" -locations_default(#20032,#10000,2,6,2,6) -hasLocation(#20031,#20032) -#20033=* -stmts(#20033,2,#20001,2,"/(?$/;") +hasLocation(#20041,#20003) stmtContainers(#20041,#20001) +#20042=* +exprs(#20042,5,#20041,0,"/^(?$/") +hasLocation(#20042,#20015) +enclosingStmt(#20042,#20041) +exprContainers(#20042,#20001) +literals("/^(?\s+)\w+\k$/","/^(?\s+)\w+\k$/",#20042) #20043=* -exprs(#20043,5,#20041,0,"/\p{Number}/u") -#20044=@"loc,{#10000},4,1,4,13" -locations_default(#20044,#10000,4,1,4,13) +regexpterm(#20043,1,#20042,0,"^(?\s+)\w+\k$") +#20044=@"loc,{#10000},1,2,1,22" +locations_default(#20044,#10000,1,2,1,22) hasLocation(#20043,#20044) -enclosingStmt(#20043,#20041) -exprContainers(#20043,#20001) -literals("/\p{Number}/u","/\p{Number}/u",#20043) #20045=* -regexpterm(#20045,27,#20043,0,"\p{Number}") -#20046=@"loc,{#10000},4,2,4,11" -locations_default(#20046,#10000,4,2,4,11) +regexpterm(#20045,2,#20043,0,"^") +#20046=@"loc,{#10000},1,2,1,2" +locations_default(#20046,#10000,1,2,1,2) hasLocation(#20045,#20046) -unicodePropertyEscapeName(#20045,"Number") #20047=* -stmts(#20047,2,#20001,4,"/\P{Script=Greek}/u;") -#20048=@"loc,{#10000},5,1,5,20" -locations_default(#20048,#10000,5,1,5,20) +regexpterm(#20047,13,#20043,1,"(?\s+)") +#20048=@"loc,{#10000},1,3,1,12" +locations_default(#20048,#10000,1,3,1,12) hasLocation(#20047,#20048) -stmtContainers(#20047,#20001) +isCapture(#20047,1) +isNamedCapture(#20047,"ws") #20049=* -exprs(#20049,5,#20047,0,"/\P{Script=Greek}/u") -#20050=@"loc,{#10000},5,1,5,19" -locations_default(#20050,#10000,5,1,5,19) +regexpterm(#20049,9,#20047,0,"\s+") +#20050=@"loc,{#10000},1,9,1,11" +locations_default(#20050,#10000,1,9,1,11) hasLocation(#20049,#20050) -enclosingStmt(#20049,#20047) -exprContainers(#20049,#20001) -literals("/\P{Script=Greek}/u","/\P{Script=Greek}/u",#20049) +isGreedy(#20049) #20051=* -regexpterm(#20051,27,#20049,0,"\P{Script=Greek}") -#20052=@"loc,{#10000},5,2,5,17" -locations_default(#20052,#10000,5,2,5,17) +regexpterm(#20051,20,#20049,0,"\s") +#20052=@"loc,{#10000},1,9,1,10" +locations_default(#20052,#10000,1,9,1,10) hasLocation(#20051,#20052) -unicodePropertyEscapeName(#20051,"Script") -unicodePropertyEscapeValue(#20051,"Greek") +charClassEscape(#20051,"s") #20053=* -stmts(#20053,2,#20001,5,"/\k") +#20058=@"loc,{#10000},1,16,1,21" +locations_default(#20058,#10000,1,16,1,21) hasLocation(#20057,#20058) -namedBackref(#20057,"") +namedBackref(#20057,"ws") #20059=* -regexpParseErrors(#20059,#20057,"expected identifier") -#20060=@"loc,{#10000},6,5,6,5" -locations_default(#20060,#10000,6,5,6,5) +regexpterm(#20059,3,#20043,4,"$") +#20060=@"loc,{#10000},1,22,1,22" +locations_default(#20060,#10000,1,22,1,22) hasLocation(#20059,#20060) #20061=* -regexpParseErrors(#20061,#20057,"expected '>'") -#20062=@"loc,{#10000},6,4,6,4" -locations_default(#20062,#10000,6,4,6,4) -hasLocation(#20061,#20062) +stmts(#20061,2,#20001,1,"/(?<=.)/;") +hasLocation(#20061,#20005) +stmtContainers(#20061,#20001) +#20062=* +exprs(#20062,5,#20061,0,"/(?<=.)/") +hasLocation(#20062,#20019) +enclosingStmt(#20062,#20061) +exprContainers(#20062,#20001) +literals("/(?<=.)/","/(?<=.)/",#20062) #20063=* -lines(#20063,#20001,"/^(?\s+)\w+\k$/;"," -") -hasLocation(#20063,#20004) -#20064=* -lines(#20064,#20001,"/(?<=.)/;"," -") -hasLocation(#20064,#20026) +regexpterm(#20063,25,#20062,0,"(?<=.)") +#20064=@"loc,{#10000},2,2,2,7" +locations_default(#20064,#10000,2,2,2,7) +hasLocation(#20063,#20064) #20065=* -lines(#20065,#20001,"/(?\s+)\w+\k$/") -hasLocation(#20069,#20006) -#20070=* -tokeninfo(#20070,8,#20001,1,";") -#20071=@"loc,{#10000},1,24,1,24" -locations_default(#20071,#10000,1,24,1,24) -hasLocation(#20070,#20071) -#20072=* -tokeninfo(#20072,5,#20001,2,"/(?<=.)/") -hasLocation(#20072,#20028) +regexpterm(#20069,26,#20068,0,"(?'") +#20088=@"loc,{#10000},6,4,6,4" +locations_default(#20088,#10000,6,4,6,4) hasLocation(#20087,#20088) #20089=* entry_cfg_node(#20089,#20001) @@ -283,19 +283,19 @@ locations_default(#20090,#10000,1,1,1,0) hasLocation(#20089,#20090) #20091=* exit_cfg_node(#20091,#20001) -hasLocation(#20091,#20088) -successor(#20053,#20055) -successor(#20055,#20091) -successor(#20047,#20049) -successor(#20049,#20053) -successor(#20041,#20043) -successor(#20043,#20047) -successor(#20033,#20035) -successor(#20035,#20041) -successor(#20025,#20027) -successor(#20027,#20033) -successor(#20003,#20005) -successor(#20005,#20025) -successor(#20089,#20003) +hasLocation(#20091,#20039) +successor(#20081,#20082) +successor(#20082,#20091) +successor(#20077,#20078) +successor(#20078,#20081) +successor(#20073,#20074) +successor(#20074,#20077) +successor(#20067,#20068) +successor(#20068,#20073) +successor(#20061,#20062) +successor(#20062,#20067) +successor(#20041,#20042) +successor(#20042,#20061) +successor(#20089,#20041) numlines(#10000,6,6,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/regexp/output/trap/nonstandard.js.trap b/javascript/extractor/tests/regexp/output/trap/nonstandard.js.trap index 26eeda5a569..02c768fbcac 100644 --- a/javascript/extractor/tests/regexp/output/trap/nonstandard.js.trap +++ b/javascript/extractor/tests/regexp/output/trap/nonstandard.js.trap @@ -9,68 +9,68 @@ 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,"/dice/y;") -hasLocation(#20003,#20002) -stmtContainers(#20003,#20001) +#20002=* +lines(#20002,#20001,"/dice/y;","") +#20003=@"loc,{#10000},1,1,1,8" +locations_default(#20003,#10000,1,1,1,8) +hasLocation(#20002,#20003) +numlines(#20001,1,1,0) #20004=* -exprs(#20004,5,#20003,0,"/dice/y") +tokeninfo(#20004,5,#20001,0,"/dice/y") #20005=@"loc,{#10000},1,1,1,7" locations_default(#20005,#10000,1,1,1,7) hasLocation(#20004,#20005) -enclosingStmt(#20004,#20003) -exprContainers(#20004,#20001) -literals("/dice/y","/dice/y",#20004) #20006=* -regexpterm(#20006,1,#20004,0,"dice") -#20007=@"loc,{#10000},1,2,1,5" -locations_default(#20007,#10000,1,2,1,5) +tokeninfo(#20006,8,#20001,1,";") +#20007=@"loc,{#10000},1,8,1,8" +locations_default(#20007,#10000,1,8,1,8) hasLocation(#20006,#20007) #20008=* -regexpterm(#20008,14,#20006,0,"d") -#20009=@"loc,{#10000},1,2,1,2" -locations_default(#20009,#10000,1,2,1,2) +tokeninfo(#20008,0,#20001,2,"") +#20009=@"loc,{#10000},1,9,1,8" +locations_default(#20009,#10000,1,9,1,8) hasLocation(#20008,#20009) -regexpConstValue(#20008,"d") +toplevels(#20001,0) +hasLocation(#20001,#20003) #20010=* -regexpterm(#20010,14,#20006,1,"i") -#20011=@"loc,{#10000},1,3,1,3" -locations_default(#20011,#10000,1,3,1,3) -hasLocation(#20010,#20011) -regexpConstValue(#20010,"i") +stmts(#20010,2,#20001,0,"/dice/y;") +hasLocation(#20010,#20003) +stmtContainers(#20010,#20001) +#20011=* +exprs(#20011,5,#20010,0,"/dice/y") +hasLocation(#20011,#20005) +enclosingStmt(#20011,#20010) +exprContainers(#20011,#20001) +literals("/dice/y","/dice/y",#20011) #20012=* -regexpterm(#20012,14,#20006,2,"c") -#20013=@"loc,{#10000},1,4,1,4" -locations_default(#20013,#10000,1,4,1,4) +regexpterm(#20012,1,#20011,0,"dice") +#20013=@"loc,{#10000},1,2,1,5" +locations_default(#20013,#10000,1,2,1,5) hasLocation(#20012,#20013) -regexpConstValue(#20012,"c") #20014=* -regexpterm(#20014,14,#20006,3,"e") -#20015=@"loc,{#10000},1,5,1,5" -locations_default(#20015,#10000,1,5,1,5) +regexpterm(#20014,14,#20012,0,"d") +#20015=@"loc,{#10000},1,2,1,2" +locations_default(#20015,#10000,1,2,1,2) hasLocation(#20014,#20015) -regexpConstValue(#20014,"e") +regexpConstValue(#20014,"d") #20016=* -lines(#20016,#20001,"/dice/y;","") -hasLocation(#20016,#20002) -numlines(#20001,1,1,0) -#20017=* -tokeninfo(#20017,5,#20001,0,"/dice/y") -hasLocation(#20017,#20005) +regexpterm(#20016,14,#20012,1,"i") +#20017=@"loc,{#10000},1,3,1,3" +locations_default(#20017,#10000,1,3,1,3) +hasLocation(#20016,#20017) +regexpConstValue(#20016,"i") #20018=* -tokeninfo(#20018,8,#20001,1,";") -#20019=@"loc,{#10000},1,8,1,8" -locations_default(#20019,#10000,1,8,1,8) +regexpterm(#20018,14,#20012,2,"c") +#20019=@"loc,{#10000},1,4,1,4" +locations_default(#20019,#10000,1,4,1,4) hasLocation(#20018,#20019) +regexpConstValue(#20018,"c") #20020=* -tokeninfo(#20020,0,#20001,2,"") -#20021=@"loc,{#10000},1,9,1,8" -locations_default(#20021,#10000,1,9,1,8) +regexpterm(#20020,14,#20012,3,"e") +#20021=@"loc,{#10000},1,5,1,5" +locations_default(#20021,#10000,1,5,1,5) hasLocation(#20020,#20021) +regexpConstValue(#20020,"e") #20022=* entry_cfg_node(#20022,#20001) #20023=@"loc,{#10000},1,1,1,0" @@ -78,9 +78,9 @@ locations_default(#20023,#10000,1,1,1,0) hasLocation(#20022,#20023) #20024=* exit_cfg_node(#20024,#20001) -hasLocation(#20024,#20021) -successor(#20003,#20004) -successor(#20004,#20024) -successor(#20022,#20003) +hasLocation(#20024,#20009) +successor(#20010,#20011) +successor(#20011,#20024) +successor(#20022,#20010) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/regexp/output/trap/odasa-1934.js.trap b/javascript/extractor/tests/regexp/output/trap/odasa-1934.js.trap index 1e88b0714b9..fb772ef1ff4 100644 Binary files a/javascript/extractor/tests/regexp/output/trap/odasa-1934.js.trap and b/javascript/extractor/tests/regexp/output/trap/odasa-1934.js.trap differ diff --git a/javascript/extractor/tests/regexp/output/trap/tst.js.trap b/javascript/extractor/tests/regexp/output/trap/tst.js.trap index 5e801f952a1..3304e647f27 100644 Binary files a/javascript/extractor/tests/regexp/output/trap/tst.js.trap and b/javascript/extractor/tests/regexp/output/trap/tst.js.trap differ diff --git a/javascript/extractor/tests/restprops/output/trap/tst.js.trap b/javascript/extractor/tests/restprops/output/trap/tst.js.trap index e63c1f116bc..be3beee62b7 100644 --- a/javascript/extractor/tests/restprops/output/trap/tst.js.trap +++ b/javascript/extractor/tests/restprops/output/trap/tst.js.trap @@ -9,139 +9,138 @@ 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,"var f = ({...p}) => {};"," +") +#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,18,#20001,0,"var f = ... => {};") -#20005=@"loc,{#10000},1,1,1,23" -locations_default(#20005,#10000,1,1,1,23) +tokeninfo(#20004,7,#20001,0,"var") +#20005=@"loc,{#10000},1,1,1,3" +locations_default(#20005,#10000,1,1,1,3) hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) #20006=* -exprs(#20006,64,#20004,0,"f = ({...p}) => {}") -#20007=@"loc,{#10000},1,5,1,22" -locations_default(#20007,#10000,1,5,1,22) +tokeninfo(#20006,6,#20001,1,"f") +#20007=@"loc,{#10000},1,5,1,5" +locations_default(#20007,#10000,1,5,1,5) hasLocation(#20006,#20007) -enclosingStmt(#20006,#20004) -exprContainers(#20006,#20001) #20008=* -exprs(#20008,78,#20006,0,"f") -#20009=@"loc,{#10000},1,5,1,5" -locations_default(#20009,#10000,1,5,1,5) +tokeninfo(#20008,8,#20001,2,"=") +#20009=@"loc,{#10000},1,7,1,7" +locations_default(#20009,#10000,1,7,1,7) hasLocation(#20008,#20009) -enclosingStmt(#20008,#20004) -exprContainers(#20008,#20001) -literals("f","f",#20008) -decl(#20008,#20003) #20010=* -exprs(#20010,65,#20006,1,"({...p}) => {}") -#20011=@"loc,{#10000},1,9,1,22" -locations_default(#20011,#10000,1,9,1,22) +tokeninfo(#20010,8,#20001,3,"(") +#20011=@"loc,{#10000},1,9,1,9" +locations_default(#20011,#10000,1,9,1,9) hasLocation(#20010,#20011) -enclosingStmt(#20010,#20004) -exprContainers(#20010,#20001) #20012=* -scopes(#20012,1) -scopenodes(#20010,#20012) -scopenesting(#20012,#20000) -#20013=@"var;{p};{#20012}" -variables(#20013,"p",#20012) +tokeninfo(#20012,8,#20001,4,"{") +#20013=@"loc,{#10000},1,10,1,10" +locations_default(#20013,#10000,1,10,1,10) +hasLocation(#20012,#20013) #20014=* -exprs(#20014,68,#20010,0,"{...p}") -#20015=@"loc,{#10000},1,10,1,15" -locations_default(#20015,#10000,1,10,1,15) +tokeninfo(#20014,8,#20001,5,"...") +#20015=@"loc,{#10000},1,11,1,13" +locations_default(#20015,#10000,1,11,1,13) hasLocation(#20014,#20015) -exprContainers(#20014,#20010) #20016=* -exprs(#20016,78,#20014,-1,"p") +tokeninfo(#20016,6,#20001,6,"p") #20017=@"loc,{#10000},1,14,1,14" locations_default(#20017,#10000,1,14,1,14) hasLocation(#20016,#20017) -exprContainers(#20016,#20010) -literals("p","p",#20016) -decl(#20016,#20013) #20018=* -stmts(#20018,1,#20010,-2,"{}") -#20019=@"loc,{#10000},1,21,1,22" -locations_default(#20019,#10000,1,21,1,22) +tokeninfo(#20018,8,#20001,7,"}") +#20019=@"loc,{#10000},1,15,1,15" +locations_default(#20019,#10000,1,15,1,15) hasLocation(#20018,#20019) -stmtContainers(#20018,#20010) -numlines(#20010,1,1,0) #20020=* -lines(#20020,#20001,"var f = ({...p}) => {};"," -") -hasLocation(#20020,#20005) -numlines(#20001,1,1,0) -#20021=* -tokeninfo(#20021,7,#20001,0,"var") -#20022=@"loc,{#10000},1,1,1,3" -locations_default(#20022,#10000,1,1,1,3) -hasLocation(#20021,#20022) -#20023=* -tokeninfo(#20023,6,#20001,1,"f") -hasLocation(#20023,#20009) +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=* -tokeninfo(#20024,8,#20001,2,"=") -#20025=@"loc,{#10000},1,7,1,7" -locations_default(#20025,#10000,1,7,1,7) +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,8,#20001,3,"(") -#20027=@"loc,{#10000},1,9,1,9" -locations_default(#20027,#10000,1,9,1,9) +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,4,"{") -#20029=@"loc,{#10000},1,10,1,10" -locations_default(#20029,#10000,1,10,1,10) +tokeninfo(#20028,8,#20001,12,";") +#20029=@"loc,{#10000},1,23,1,23" +locations_default(#20029,#10000,1,23,1,23) hasLocation(#20028,#20029) #20030=* -tokeninfo(#20030,8,#20001,5,"...") -#20031=@"loc,{#10000},1,11,1,13" -locations_default(#20031,#10000,1,11,1,13) +tokeninfo(#20030,0,#20001,13,"") +#20031=@"loc,{#10000},2,1,2,0" +locations_default(#20031,#10000,2,1,2,0) hasLocation(#20030,#20031) -#20032=* -tokeninfo(#20032,6,#20001,6,"p") -hasLocation(#20032,#20017) -#20033=* -tokeninfo(#20033,8,#20001,7,"}") -#20034=@"loc,{#10000},1,15,1,15" -locations_default(#20034,#10000,1,15,1,15) -hasLocation(#20033,#20034) +toplevels(#20001,0) +#20032=@"loc,{#10000},1,1,2,0" +locations_default(#20032,#10000,1,1,2,0) +hasLocation(#20001,#20032) +#20033=@"var;{f};{#20000}" +variables(#20033,"f",#20000) +#20034=* +stmts(#20034,18,#20001,0,"var f = ... => {};") +hasLocation(#20034,#20003) +stmtContainers(#20034,#20001) #20035=* -tokeninfo(#20035,8,#20001,8,")") -#20036=@"loc,{#10000},1,16,1,16" -locations_default(#20036,#10000,1,16,1,16) +exprs(#20035,64,#20034,0,"f = ({...p}) => {}") +#20036=@"loc,{#10000},1,5,1,22" +locations_default(#20036,#10000,1,5,1,22) hasLocation(#20035,#20036) +enclosingStmt(#20035,#20034) +exprContainers(#20035,#20001) #20037=* -tokeninfo(#20037,8,#20001,9,"=>") -#20038=@"loc,{#10000},1,18,1,19" -locations_default(#20038,#10000,1,18,1,19) -hasLocation(#20037,#20038) -#20039=* -tokeninfo(#20039,8,#20001,10,"{") -#20040=@"loc,{#10000},1,21,1,21" -locations_default(#20040,#10000,1,21,1,21) -hasLocation(#20039,#20040) -#20041=* -tokeninfo(#20041,8,#20001,11,"}") -#20042=@"loc,{#10000},1,22,1,22" -locations_default(#20042,#10000,1,22,1,22) -hasLocation(#20041,#20042) -#20043=* -tokeninfo(#20043,8,#20001,12,";") -#20044=@"loc,{#10000},1,23,1,23" -locations_default(#20044,#10000,1,23,1,23) -hasLocation(#20043,#20044) +exprs(#20037,78,#20035,0,"f") +hasLocation(#20037,#20007) +enclosingStmt(#20037,#20034) +exprContainers(#20037,#20001) +literals("f","f",#20037) +decl(#20037,#20033) +#20038=* +exprs(#20038,65,#20035,1,"({...p}) => {}") +#20039=@"loc,{#10000},1,9,1,22" +locations_default(#20039,#10000,1,9,1,22) +hasLocation(#20038,#20039) +enclosingStmt(#20038,#20034) +exprContainers(#20038,#20001) +#20040=* +scopes(#20040,1) +scopenodes(#20038,#20040) +scopenesting(#20040,#20000) +#20041=@"var;{p};{#20040}" +variables(#20041,"p",#20040) +#20042=* +exprs(#20042,68,#20038,0,"{...p}") +#20043=@"loc,{#10000},1,10,1,15" +locations_default(#20043,#10000,1,10,1,15) +hasLocation(#20042,#20043) +exprContainers(#20042,#20038) +#20044=* +exprs(#20044,78,#20042,-1,"p") +hasLocation(#20044,#20017) +exprContainers(#20044,#20038) +literals("p","p",#20044) +decl(#20044,#20041) #20045=* -tokeninfo(#20045,0,#20001,13,"") -#20046=@"loc,{#10000},2,1,2,0" -locations_default(#20046,#10000,2,1,2,0) +stmts(#20045,1,#20038,-2,"{}") +#20046=@"loc,{#10000},1,21,1,22" +locations_default(#20046,#10000,1,21,1,22) hasLocation(#20045,#20046) +stmtContainers(#20045,#20038) #20047=* entry_cfg_node(#20047,#20001) #20048=@"loc,{#10000},1,1,1,0" @@ -149,25 +148,25 @@ locations_default(#20048,#10000,1,1,1,0) hasLocation(#20047,#20048) #20049=* exit_cfg_node(#20049,#20001) -hasLocation(#20049,#20046) -successor(#20004,#20008) -successor(#20010,#20006) +hasLocation(#20049,#20031) +successor(#20034,#20037) +successor(#20038,#20035) #20050=* -entry_cfg_node(#20050,#20010) +entry_cfg_node(#20050,#20038) #20051=@"loc,{#10000},1,9,1,8" locations_default(#20051,#10000,1,9,1,8) hasLocation(#20050,#20051) #20052=* -exit_cfg_node(#20052,#20010) +exit_cfg_node(#20052,#20038) #20053=@"loc,{#10000},1,23,1,22" locations_default(#20053,#10000,1,23,1,22) hasLocation(#20052,#20053) -successor(#20018,#20052) -successor(#20014,#20016) -successor(#20016,#20018) -successor(#20050,#20014) -successor(#20008,#20010) -successor(#20006,#20049) -successor(#20047,#20004) +successor(#20045,#20052) +successor(#20042,#20044) +successor(#20044,#20045) +successor(#20050,#20042) +successor(#20037,#20038) +successor(#20035,#20049) +successor(#20047,#20034) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/shebang/output/trap/tst.js.trap b/javascript/extractor/tests/shebang/output/trap/tst.js.trap index af22a7a7af9..131cd6dfee2 100644 --- a/javascript/extractor/tests/shebang/output/trap/tst.js.trap +++ b/javascript/extractor/tests/shebang/output/trap/tst.js.trap @@ -9,95 +9,95 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},2,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},2,1,2,13" -locations_default(#20002,#10000,2,1,2,13) -hasLocation(#20001,#20002) -#20003=@"var;{global};{#20000}" -variables(#20003,"global",#20000) -#20004=@"var;{process};{#20000}" -variables(#20004,"process",#20000) -#20005=@"var;{console};{#20000}" -variables(#20005,"console",#20000) -#20006=@"var;{Buffer};{#20000}" -variables(#20006,"Buffer",#20000) -#20007=@"module;{#10000},2,1" -scopes(#20007,3) -scopenodes(#20001,#20007) -scopenesting(#20007,#20000) -#20008=@"var;{require};{#20007}" -variables(#20008,"require",#20007) -#20009=@"var;{module};{#20007}" -variables(#20009,"module",#20007) -#20010=@"var;{exports};{#20007}" -variables(#20010,"exports",#20007) -#20011=@"var;{__filename};{#20007}" -variables(#20011,"__filename",#20007) -#20012=@"var;{__dirname};{#20007}" -variables(#20012,"__dirname",#20007) -#20013=@"var;{arguments};{#20007}" -variables(#20013,"arguments",#20007) -isModule(#20001) -#20014=* -stmts(#20014,2,#20001,0,"alert(""Hi!"");") -hasLocation(#20014,#20002) -stmtContainers(#20014,#20001) -#20015=* -exprs(#20015,13,#20014,0,"alert(""Hi!"")") -#20016=@"loc,{#10000},2,1,2,12" -locations_default(#20016,#10000,2,1,2,12) -hasLocation(#20015,#20016) -enclosingStmt(#20015,#20014) -exprContainers(#20015,#20001) -#20017=* -exprs(#20017,79,#20015,-1,"alert") -#20018=@"loc,{#10000},2,1,2,5" -locations_default(#20018,#10000,2,1,2,5) -hasLocation(#20017,#20018) -enclosingStmt(#20017,#20014) -exprContainers(#20017,#20001) -literals("alert","alert",#20017) -#20019=@"var;{alert};{#20000}" -variables(#20019,"alert",#20000) -bind(#20017,#20019) -#20020=* -exprs(#20020,4,#20015,0,"""Hi!""") -#20021=@"loc,{#10000},2,7,2,11" -locations_default(#20021,#10000,2,7,2,11) -hasLocation(#20020,#20021) -enclosingStmt(#20020,#20014) -exprContainers(#20020,#20001) -literals("Hi!","""Hi!""",#20020) -#20022=* -lines(#20022,#20001,"alert(""Hi!"");","") -hasLocation(#20022,#20002) +#20002=* +lines(#20002,#20001,"alert(""Hi!"");","") +#20003=@"loc,{#10000},2,1,2,13" +locations_default(#20003,#10000,2,1,2,13) +hasLocation(#20002,#20003) numlines(#20001,1,1,0) -#20023=* -tokeninfo(#20023,6,#20001,0,"alert") -hasLocation(#20023,#20018) -#20024=* -tokeninfo(#20024,8,#20001,1,"(") -#20025=@"loc,{#10000},2,6,2,6" -locations_default(#20025,#10000,2,6,2,6) -hasLocation(#20024,#20025) -#20026=* -tokeninfo(#20026,4,#20001,2,"""Hi!""") -hasLocation(#20026,#20021) +#20004=* +tokeninfo(#20004,6,#20001,0,"alert") +#20005=@"loc,{#10000},2,1,2,5" +locations_default(#20005,#10000,2,1,2,5) +hasLocation(#20004,#20005) +#20006=* +tokeninfo(#20006,8,#20001,1,"(") +#20007=@"loc,{#10000},2,6,2,6" +locations_default(#20007,#10000,2,6,2,6) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,4,#20001,2,"""Hi!""") +#20009=@"loc,{#10000},2,7,2,11" +locations_default(#20009,#10000,2,7,2,11) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,3,")") +#20011=@"loc,{#10000},2,12,2,12" +locations_default(#20011,#10000,2,12,2,12) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,8,#20001,4,";") +#20013=@"loc,{#10000},2,13,2,13" +locations_default(#20013,#10000,2,13,2,13) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,0,#20001,5,"") +#20015=@"loc,{#10000},2,14,2,13" +locations_default(#20015,#10000,2,14,2,13) +hasLocation(#20014,#20015) +toplevels(#20001,0) +hasLocation(#20001,#20003) +#20016=@"var;{global};{#20000}" +variables(#20016,"global",#20000) +#20017=@"var;{process};{#20000}" +variables(#20017,"process",#20000) +#20018=@"var;{console};{#20000}" +variables(#20018,"console",#20000) +#20019=@"var;{Buffer};{#20000}" +variables(#20019,"Buffer",#20000) +#20020=@"module;{#10000},2,1" +scopes(#20020,3) +scopenodes(#20001,#20020) +scopenesting(#20020,#20000) +#20021=@"var;{require};{#20020}" +variables(#20021,"require",#20020) +#20022=@"var;{module};{#20020}" +variables(#20022,"module",#20020) +#20023=@"var;{exports};{#20020}" +variables(#20023,"exports",#20020) +#20024=@"var;{__filename};{#20020}" +variables(#20024,"__filename",#20020) +#20025=@"var;{__dirname};{#20020}" +variables(#20025,"__dirname",#20020) +#20026=@"var;{arguments};{#20020}" +variables(#20026,"arguments",#20020) +isModule(#20001) #20027=* -tokeninfo(#20027,8,#20001,3,")") -#20028=@"loc,{#10000},2,12,2,12" -locations_default(#20028,#10000,2,12,2,12) -hasLocation(#20027,#20028) -#20029=* -tokeninfo(#20029,8,#20001,4,";") -#20030=@"loc,{#10000},2,13,2,13" -locations_default(#20030,#10000,2,13,2,13) -hasLocation(#20029,#20030) -#20031=* -tokeninfo(#20031,0,#20001,5,"") -#20032=@"loc,{#10000},2,14,2,13" -locations_default(#20032,#10000,2,14,2,13) -hasLocation(#20031,#20032) +stmts(#20027,2,#20001,0,"alert(""Hi!"");") +hasLocation(#20027,#20003) +stmtContainers(#20027,#20001) +#20028=* +exprs(#20028,13,#20027,0,"alert(""Hi!"")") +#20029=@"loc,{#10000},2,1,2,12" +locations_default(#20029,#10000,2,1,2,12) +hasLocation(#20028,#20029) +enclosingStmt(#20028,#20027) +exprContainers(#20028,#20001) +#20030=* +exprs(#20030,79,#20028,-1,"alert") +hasLocation(#20030,#20005) +enclosingStmt(#20030,#20027) +exprContainers(#20030,#20001) +literals("alert","alert",#20030) +#20031=@"var;{alert};{#20000}" +variables(#20031,"alert",#20000) +bind(#20030,#20031) +#20032=* +exprs(#20032,4,#20028,0,"""Hi!""") +hasLocation(#20032,#20009) +enclosingStmt(#20032,#20027) +exprContainers(#20032,#20001) +literals("Hi!","""Hi!""",#20032) #20033=* entry_cfg_node(#20033,#20001) #20034=@"loc,{#10000},2,1,2,0" @@ -105,12 +105,12 @@ locations_default(#20034,#10000,2,1,2,0) hasLocation(#20033,#20034) #20035=* exit_cfg_node(#20035,#20001) -hasLocation(#20035,#20032) -successor(#20014,#20017) -successor(#20020,#20015) -successor(#20017,#20020) -successor(#20015,#20035) -successor(#20033,#20014) +hasLocation(#20035,#20015) +successor(#20027,#20030) +successor(#20032,#20028) +successor(#20030,#20032) +successor(#20028,#20035) +successor(#20033,#20027) isNodejs(#20001) #20036=* lines(#20036,#20001,"#!/usr/bin/node"," diff --git a/javascript/extractor/tests/shebang/output/trap/typescript-with-shebang.ts.trap b/javascript/extractor/tests/shebang/output/trap/typescript-with-shebang.ts.trap index cd7804866b8..fc61afe98f1 100644 --- a/javascript/extractor/tests/shebang/output/trap/typescript-with-shebang.ts.trap +++ b/javascript/extractor/tests/shebang/output/trap/typescript-with-shebang.ts.trap @@ -9,112 +9,112 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,5,0" -locations_default(#20002,#10000,1,1,5,0) -hasLocation(#20001,#20002) -#20003=@"local_type_name;{Foo};{#20000}" -local_type_names(#20003,"Foo",#20000) -#20004=* -stmts(#20004,34,#20001,0,"#!/usr/ ... mber;\n}") -#20005=@"loc,{#10000},1,1,4,1" -locations_default(#20005,#10000,1,1,4,1) -hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) -#20006=* -typeexprs(#20006,1,#20004,0,"Foo") -#20007=@"loc,{#10000},2,11,2,13" -locations_default(#20007,#10000,2,11,2,13) -hasLocation(#20006,#20007) -enclosingStmt(#20006,#20004) -exprContainers(#20006,#20001) -literals("Foo","Foo",#20006) -typedecl(#20006,#20003) -#20008=* -properties(#20008,#20004,2,8,"x: number;") -#20009=@"loc,{#10000},3,3,3,12" -locations_default(#20009,#10000,3,3,3,12) -hasLocation(#20008,#20009) -#20010=* -exprs(#20010,0,#20008,0,"x") -#20011=@"loc,{#10000},3,3,3,3" -locations_default(#20011,#10000,3,3,3,3) -hasLocation(#20010,#20011) -enclosingStmt(#20010,#20004) -exprContainers(#20010,#20001) -literals("x","x",#20010) -isAbstractMember(#20008) -#20012=* -typeexprs(#20012,2,#20008,2,"number") -#20013=@"loc,{#10000},3,6,3,11" -locations_default(#20013,#10000,3,6,3,11) -hasLocation(#20012,#20013) -enclosingStmt(#20012,#20004) -exprContainers(#20012,#20001) -literals("number","number",#20012) -#20014=* -lines(#20014,#20001,"#!/usr/bin/env node"," +#20002=* +lines(#20002,#20001,"#!/usr/bin/env node"," ") -#20015=@"loc,{#10000},1,1,1,19" -locations_default(#20015,#10000,1,1,1,19) +#20003=@"loc,{#10000},1,1,1,19" +locations_default(#20003,#10000,1,1,1,19) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"interface Foo {"," +") +#20005=@"loc,{#10000},2,1,2,15" +locations_default(#20005,#10000,2,1,2,15) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001," x: number;"," +") +#20007=@"loc,{#10000},3,1,3,12" +locations_default(#20007,#10000,3,1,3,12) +hasLocation(#20006,#20007) +indentation(#10000,3," ",2) +#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,3,0) +#20010=* +tokeninfo(#20010,7,#20001,0,"interface") +#20011=@"loc,{#10000},2,1,2,9" +locations_default(#20011,#10000,2,1,2,9) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,6,#20001,1,"Foo") +#20013=@"loc,{#10000},2,11,2,13" +locations_default(#20013,#10000,2,11,2,13) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,2,"{") +#20015=@"loc,{#10000},2,15,2,15" +locations_default(#20015,#10000,2,15,2,15) hasLocation(#20014,#20015) #20016=* -lines(#20016,#20001,"interface Foo {"," -") -#20017=@"loc,{#10000},2,1,2,15" -locations_default(#20017,#10000,2,1,2,15) +tokeninfo(#20016,6,#20001,3,"x") +#20017=@"loc,{#10000},3,3,3,3" +locations_default(#20017,#10000,3,3,3,3) hasLocation(#20016,#20017) #20018=* -lines(#20018,#20001," x: number;"," -") -#20019=@"loc,{#10000},3,1,3,12" -locations_default(#20019,#10000,3,1,3,12) +tokeninfo(#20018,8,#20001,4,":") +#20019=@"loc,{#10000},3,4,3,4" +locations_default(#20019,#10000,3,4,3,4) hasLocation(#20018,#20019) -indentation(#10000,3," ",2) #20020=* -lines(#20020,#20001,"}"," -") -#20021=@"loc,{#10000},4,1,4,1" -locations_default(#20021,#10000,4,1,4,1) +tokeninfo(#20020,7,#20001,5,"number") +#20021=@"loc,{#10000},3,6,3,11" +locations_default(#20021,#10000,3,6,3,11) hasLocation(#20020,#20021) -numlines(#20001,4,3,0) #20022=* -tokeninfo(#20022,7,#20001,0,"interface") -#20023=@"loc,{#10000},2,1,2,9" -locations_default(#20023,#10000,2,1,2,9) +tokeninfo(#20022,8,#20001,6,";") +#20023=@"loc,{#10000},3,12,3,12" +locations_default(#20023,#10000,3,12,3,12) hasLocation(#20022,#20023) #20024=* -tokeninfo(#20024,6,#20001,1,"Foo") -hasLocation(#20024,#20007) +tokeninfo(#20024,8,#20001,7,"}") +hasLocation(#20024,#20009) #20025=* -tokeninfo(#20025,8,#20001,2,"{") -#20026=@"loc,{#10000},2,15,2,15" -locations_default(#20026,#10000,2,15,2,15) +tokeninfo(#20025,0,#20001,8,"") +#20026=@"loc,{#10000},5,1,5,0" +locations_default(#20026,#10000,5,1,5,0) hasLocation(#20025,#20026) -#20027=* -tokeninfo(#20027,6,#20001,3,"x") -hasLocation(#20027,#20011) -#20028=* -tokeninfo(#20028,8,#20001,4,":") -#20029=@"loc,{#10000},3,4,3,4" -locations_default(#20029,#10000,3,4,3,4) -hasLocation(#20028,#20029) -#20030=* -tokeninfo(#20030,7,#20001,5,"number") -hasLocation(#20030,#20013) +toplevels(#20001,0) +#20027=@"loc,{#10000},1,1,5,0" +locations_default(#20027,#10000,1,1,5,0) +hasLocation(#20001,#20027) +#20028=@"local_type_name;{Foo};{#20000}" +local_type_names(#20028,"Foo",#20000) +#20029=* +stmts(#20029,34,#20001,0,"#!/usr/ ... mber;\n}") +#20030=@"loc,{#10000},1,1,4,1" +locations_default(#20030,#10000,1,1,4,1) +hasLocation(#20029,#20030) +stmtContainers(#20029,#20001) #20031=* -tokeninfo(#20031,8,#20001,6,";") -#20032=@"loc,{#10000},3,12,3,12" -locations_default(#20032,#10000,3,12,3,12) -hasLocation(#20031,#20032) -#20033=* -tokeninfo(#20033,8,#20001,7,"}") -hasLocation(#20033,#20021) +typeexprs(#20031,1,#20029,0,"Foo") +hasLocation(#20031,#20013) +enclosingStmt(#20031,#20029) +exprContainers(#20031,#20001) +literals("Foo","Foo",#20031) +typedecl(#20031,#20028) +#20032=* +properties(#20032,#20029,2,8,"x: number;") +#20033=@"loc,{#10000},3,3,3,12" +locations_default(#20033,#10000,3,3,3,12) +hasLocation(#20032,#20033) #20034=* -tokeninfo(#20034,0,#20001,8,"") -#20035=@"loc,{#10000},5,1,5,0" -locations_default(#20035,#10000,5,1,5,0) -hasLocation(#20034,#20035) +exprs(#20034,0,#20032,0,"x") +hasLocation(#20034,#20017) +enclosingStmt(#20034,#20029) +exprContainers(#20034,#20001) +literals("x","x",#20034) +isAbstractMember(#20032) +#20035=* +typeexprs(#20035,2,#20032,2,"number") +hasLocation(#20035,#20021) +enclosingStmt(#20035,#20029) +exprContainers(#20035,#20001) +literals("number","number",#20035) #20036=* entry_cfg_node(#20036,#20001) #20037=@"loc,{#10000},1,1,1,0" @@ -122,8 +122,8 @@ locations_default(#20037,#10000,1,1,1,0) hasLocation(#20036,#20037) #20038=* exit_cfg_node(#20038,#20001) -hasLocation(#20038,#20035) -successor(#20004,#20038) -successor(#20036,#20004) +hasLocation(#20038,#20026) +successor(#20029,#20038) +successor(#20036,#20029) numlines(#10000,4,3,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/shebang/output/trap/typescript.ts.trap b/javascript/extractor/tests/shebang/output/trap/typescript.ts.trap index 936f5ce0896..57cf414a1a3 100644 --- a/javascript/extractor/tests/shebang/output/trap/typescript.ts.trap +++ b/javascript/extractor/tests/shebang/output/trap/typescript.ts.trap @@ -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,4,0" -locations_default(#20002,#10000,1,1,4,0) -hasLocation(#20001,#20002) -#20003=@"local_type_name;{Foo};{#20000}" -local_type_names(#20003,"Foo",#20000) +#20002=* +lines(#20002,#20001,"interface Foo {"," +") +#20003=@"loc,{#10000},1,1,1,15" +locations_default(#20003,#10000,1,1,1,15) +hasLocation(#20002,#20003) #20004=* -stmts(#20004,34,#20001,0,"interfa ... mber;\n}") -#20005=@"loc,{#10000},1,1,3,1" -locations_default(#20005,#10000,1,1,3,1) +lines(#20004,#20001," x: number;"," +") +#20005=@"loc,{#10000},2,1,2,12" +locations_default(#20005,#10000,2,1,2,12) hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) +indentation(#10000,2," ",2) #20006=* -typeexprs(#20006,1,#20004,0,"Foo") -#20007=@"loc,{#10000},1,11,1,13" -locations_default(#20007,#10000,1,11,1,13) +lines(#20006,#20001,"}"," +") +#20007=@"loc,{#10000},3,1,3,1" +locations_default(#20007,#10000,3,1,3,1) hasLocation(#20006,#20007) -enclosingStmt(#20006,#20004) -exprContainers(#20006,#20001) -literals("Foo","Foo",#20006) -typedecl(#20006,#20003) +numlines(#20001,3,3,0) #20008=* -properties(#20008,#20004,2,8,"x: number;") -#20009=@"loc,{#10000},2,3,2,12" -locations_default(#20009,#10000,2,3,2,12) +tokeninfo(#20008,7,#20001,0,"interface") +#20009=@"loc,{#10000},1,1,1,9" +locations_default(#20009,#10000,1,1,1,9) hasLocation(#20008,#20009) #20010=* -exprs(#20010,0,#20008,0,"x") -#20011=@"loc,{#10000},2,3,2,3" -locations_default(#20011,#10000,2,3,2,3) +tokeninfo(#20010,6,#20001,1,"Foo") +#20011=@"loc,{#10000},1,11,1,13" +locations_default(#20011,#10000,1,11,1,13) hasLocation(#20010,#20011) -enclosingStmt(#20010,#20004) -exprContainers(#20010,#20001) -literals("x","x",#20010) -isAbstractMember(#20008) #20012=* -typeexprs(#20012,2,#20008,2,"number") -#20013=@"loc,{#10000},2,6,2,11" -locations_default(#20013,#10000,2,6,2,11) +tokeninfo(#20012,8,#20001,2,"{") +#20013=@"loc,{#10000},1,15,1,15" +locations_default(#20013,#10000,1,15,1,15) hasLocation(#20012,#20013) -enclosingStmt(#20012,#20004) -exprContainers(#20012,#20001) -literals("number","number",#20012) #20014=* -lines(#20014,#20001,"interface Foo {"," -") -#20015=@"loc,{#10000},1,1,1,15" -locations_default(#20015,#10000,1,1,1,15) +tokeninfo(#20014,6,#20001,3,"x") +#20015=@"loc,{#10000},2,3,2,3" +locations_default(#20015,#10000,2,3,2,3) hasLocation(#20014,#20015) #20016=* -lines(#20016,#20001," x: number;"," -") -#20017=@"loc,{#10000},2,1,2,12" -locations_default(#20017,#10000,2,1,2,12) +tokeninfo(#20016,8,#20001,4,":") +#20017=@"loc,{#10000},2,4,2,4" +locations_default(#20017,#10000,2,4,2,4) hasLocation(#20016,#20017) -indentation(#10000,2," ",2) #20018=* -lines(#20018,#20001,"}"," -") -#20019=@"loc,{#10000},3,1,3,1" -locations_default(#20019,#10000,3,1,3,1) +tokeninfo(#20018,7,#20001,5,"number") +#20019=@"loc,{#10000},2,6,2,11" +locations_default(#20019,#10000,2,6,2,11) hasLocation(#20018,#20019) -numlines(#20001,3,3,0) #20020=* -tokeninfo(#20020,7,#20001,0,"interface") -#20021=@"loc,{#10000},1,1,1,9" -locations_default(#20021,#10000,1,1,1,9) +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,6,#20001,1,"Foo") +tokeninfo(#20022,8,#20001,7,"}") hasLocation(#20022,#20007) #20023=* -tokeninfo(#20023,8,#20001,2,"{") -#20024=@"loc,{#10000},1,15,1,15" -locations_default(#20024,#10000,1,15,1,15) +tokeninfo(#20023,0,#20001,8,"") +#20024=@"loc,{#10000},4,1,4,0" +locations_default(#20024,#10000,4,1,4,0) hasLocation(#20023,#20024) -#20025=* -tokeninfo(#20025,6,#20001,3,"x") -hasLocation(#20025,#20011) -#20026=* -tokeninfo(#20026,8,#20001,4,":") -#20027=@"loc,{#10000},2,4,2,4" -locations_default(#20027,#10000,2,4,2,4) -hasLocation(#20026,#20027) -#20028=* -tokeninfo(#20028,7,#20001,5,"number") -hasLocation(#20028,#20013) +toplevels(#20001,0) +#20025=@"loc,{#10000},1,1,4,0" +locations_default(#20025,#10000,1,1,4,0) +hasLocation(#20001,#20025) +#20026=@"local_type_name;{Foo};{#20000}" +local_type_names(#20026,"Foo",#20000) +#20027=* +stmts(#20027,34,#20001,0,"interfa ... mber;\n}") +#20028=@"loc,{#10000},1,1,3,1" +locations_default(#20028,#10000,1,1,3,1) +hasLocation(#20027,#20028) +stmtContainers(#20027,#20001) #20029=* -tokeninfo(#20029,8,#20001,6,";") -#20030=@"loc,{#10000},2,12,2,12" -locations_default(#20030,#10000,2,12,2,12) -hasLocation(#20029,#20030) -#20031=* -tokeninfo(#20031,8,#20001,7,"}") -hasLocation(#20031,#20019) +typeexprs(#20029,1,#20027,0,"Foo") +hasLocation(#20029,#20011) +enclosingStmt(#20029,#20027) +exprContainers(#20029,#20001) +literals("Foo","Foo",#20029) +typedecl(#20029,#20026) +#20030=* +properties(#20030,#20027,2,8,"x: number;") +#20031=@"loc,{#10000},2,3,2,12" +locations_default(#20031,#10000,2,3,2,12) +hasLocation(#20030,#20031) #20032=* -tokeninfo(#20032,0,#20001,8,"") -#20033=@"loc,{#10000},4,1,4,0" -locations_default(#20033,#10000,4,1,4,0) -hasLocation(#20032,#20033) +exprs(#20032,0,#20030,0,"x") +hasLocation(#20032,#20015) +enclosingStmt(#20032,#20027) +exprContainers(#20032,#20001) +literals("x","x",#20032) +isAbstractMember(#20030) +#20033=* +typeexprs(#20033,2,#20030,2,"number") +hasLocation(#20033,#20019) +enclosingStmt(#20033,#20027) +exprContainers(#20033,#20001) +literals("number","number",#20033) #20034=* entry_cfg_node(#20034,#20001) #20035=@"loc,{#10000},1,1,1,0" @@ -116,8 +116,8 @@ locations_default(#20035,#10000,1,1,1,0) hasLocation(#20034,#20035) #20036=* exit_cfg_node(#20036,#20001) -hasLocation(#20036,#20033) -successor(#20004,#20036) -successor(#20034,#20004) +hasLocation(#20036,#20024) +successor(#20027,#20036) +successor(#20034,#20027) numlines(#10000,3,3,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/stmts/output/trap/conditionals.js.trap b/javascript/extractor/tests/stmts/output/trap/conditionals.js.trap index fd159bb25e5..92821e8bc28 100644 --- a/javascript/extractor/tests/stmts/output/trap/conditionals.js.trap +++ b/javascript/extractor/tests/stmts/output/trap/conditionals.js.trap @@ -9,315 +9,315 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,12,1" -locations_default(#20002,#10000,1,1,12,1) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,3,#20001,0,"if (true)\n ;") -#20004=@"loc,{#10000},1,1,2,5" -locations_default(#20004,#10000,1,1,2,5) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,2,#20003,0,"true") -#20006=@"loc,{#10000},1,5,1,8" -locations_default(#20006,#10000,1,5,1,8) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -literals("true","true",#20005) -#20007=* -stmts(#20007,0,#20003,1,";") -#20008=@"loc,{#10000},2,5,2,5" -locations_default(#20008,#10000,2,5,2,5) -hasLocation(#20007,#20008) -stmtContainers(#20007,#20001) -#20009=* -stmts(#20009,3,#20001,1,"if (b)\n ... e\n ;") -#20010=@"loc,{#10000},3,1,6,5" -locations_default(#20010,#10000,3,1,6,5) -hasLocation(#20009,#20010) -stmtContainers(#20009,#20001) -#20011=* -exprs(#20011,79,#20009,0,"b") -#20012=@"loc,{#10000},3,5,3,5" -locations_default(#20012,#10000,3,5,3,5) -hasLocation(#20011,#20012) -enclosingStmt(#20011,#20009) -exprContainers(#20011,#20001) -literals("b","b",#20011) -#20013=@"var;{b};{#20000}" -variables(#20013,"b",#20000) -bind(#20011,#20013) -#20014=* -stmts(#20014,0,#20009,1,";") -#20015=@"loc,{#10000},4,5,4,5" -locations_default(#20015,#10000,4,5,4,5) -hasLocation(#20014,#20015) -stmtContainers(#20014,#20001) -#20016=* -stmts(#20016,0,#20009,2,";") -#20017=@"loc,{#10000},6,5,6,5" -locations_default(#20017,#10000,6,5,6,5) -hasLocation(#20016,#20017) -stmtContainers(#20016,#20001) -#20018=* -stmts(#20018,8,#20001,2,"switch ... ault:\n}") -#20019=@"loc,{#10000},7,1,12,1" -locations_default(#20019,#10000,7,1,12,1) -hasLocation(#20018,#20019) -stmtContainers(#20018,#20001) -#20020=* -exprs(#20020,79,#20018,-1,"b") -#20021=@"loc,{#10000},7,9,7,9" -locations_default(#20021,#10000,7,9,7,9) -hasLocation(#20020,#20021) -enclosingStmt(#20020,#20018) -exprContainers(#20020,#20001) -literals("b","b",#20020) -bind(#20020,#20013) -#20022=* -stmts(#20022,19,#20018,0,"case 23:") -#20023=@"loc,{#10000},8,1,8,8" -locations_default(#20023,#10000,8,1,8,8) -hasLocation(#20022,#20023) -stmtContainers(#20022,#20001) -#20024=* -exprs(#20024,3,#20022,-1,"23") -#20025=@"loc,{#10000},8,6,8,7" -locations_default(#20025,#10000,8,6,8,7) -hasLocation(#20024,#20025) -enclosingStmt(#20024,#20022) -exprContainers(#20024,#20001) -literals("23","23",#20024) -#20026=* -stmts(#20026,19,#20018,1,"case c:\n break;") -#20027=@"loc,{#10000},9,1,10,10" -locations_default(#20027,#10000,9,1,10,10) -hasLocation(#20026,#20027) -stmtContainers(#20026,#20001) -#20028=* -exprs(#20028,79,#20026,-1,"c") -#20029=@"loc,{#10000},9,6,9,6" -locations_default(#20029,#10000,9,6,9,6) -hasLocation(#20028,#20029) -enclosingStmt(#20028,#20026) -exprContainers(#20028,#20001) -literals("c","c",#20028) -#20030=@"var;{c};{#20000}" -variables(#20030,"c",#20000) -bind(#20028,#20030) -#20031=* -stmts(#20031,5,#20026,0,"break;") -#20032=@"loc,{#10000},10,5,10,10" -locations_default(#20032,#10000,10,5,10,10) -hasLocation(#20031,#20032) -stmtContainers(#20031,#20001) -jumpTargets(#20031,#20018) -#20033=* -stmts(#20033,19,#20018,2,"default:") -#20034=@"loc,{#10000},11,1,11,8" -locations_default(#20034,#10000,11,1,11,8) -hasLocation(#20033,#20034) -stmtContainers(#20033,#20001) -#20035=* -lines(#20035,#20001,"if (true)"," +#20002=* +lines(#20002,#20001,"if (true)"," ") -#20036=@"loc,{#10000},1,1,1,9" -locations_default(#20036,#10000,1,1,1,9) -hasLocation(#20035,#20036) -#20037=* -lines(#20037,#20001," ;"," +#20003=@"loc,{#10000},1,1,1,9" +locations_default(#20003,#10000,1,1,1,9) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," ;"," ") -#20038=@"loc,{#10000},2,1,2,5" -locations_default(#20038,#10000,2,1,2,5) -hasLocation(#20037,#20038) +#20005=@"loc,{#10000},2,1,2,5" +locations_default(#20005,#10000,2,1,2,5) +hasLocation(#20004,#20005) indentation(#10000,2," ",4) -#20039=* -lines(#20039,#20001,"if (b)"," +#20006=* +lines(#20006,#20001,"if (b)"," ") -#20040=@"loc,{#10000},3,1,3,6" -locations_default(#20040,#10000,3,1,3,6) -hasLocation(#20039,#20040) -#20041=* -lines(#20041,#20001," ;"," +#20007=@"loc,{#10000},3,1,3,6" +locations_default(#20007,#10000,3,1,3,6) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001," ;"," ") -#20042=@"loc,{#10000},4,1,4,5" -locations_default(#20042,#10000,4,1,4,5) -hasLocation(#20041,#20042) +#20009=@"loc,{#10000},4,1,4,5" +locations_default(#20009,#10000,4,1,4,5) +hasLocation(#20008,#20009) indentation(#10000,4," ",4) -#20043=* -lines(#20043,#20001,"else"," +#20010=* +lines(#20010,#20001,"else"," ") -#20044=@"loc,{#10000},5,1,5,4" -locations_default(#20044,#10000,5,1,5,4) -hasLocation(#20043,#20044) -#20045=* -lines(#20045,#20001," ;"," +#20011=@"loc,{#10000},5,1,5,4" +locations_default(#20011,#10000,5,1,5,4) +hasLocation(#20010,#20011) +#20012=* +lines(#20012,#20001," ;"," ") -#20046=@"loc,{#10000},6,1,6,5" -locations_default(#20046,#10000,6,1,6,5) -hasLocation(#20045,#20046) +#20013=@"loc,{#10000},6,1,6,5" +locations_default(#20013,#10000,6,1,6,5) +hasLocation(#20012,#20013) indentation(#10000,6," ",4) -#20047=* -lines(#20047,#20001,"switch (b) {"," +#20014=* +lines(#20014,#20001,"switch (b) {"," ") -#20048=@"loc,{#10000},7,1,7,12" -locations_default(#20048,#10000,7,1,7,12) +#20015=@"loc,{#10000},7,1,7,12" +locations_default(#20015,#10000,7,1,7,12) +hasLocation(#20014,#20015) +#20016=* +lines(#20016,#20001,"case 23:"," +") +#20017=@"loc,{#10000},8,1,8,8" +locations_default(#20017,#10000,8,1,8,8) +hasLocation(#20016,#20017) +#20018=* +lines(#20018,#20001,"case c:"," +") +#20019=@"loc,{#10000},9,1,9,7" +locations_default(#20019,#10000,9,1,9,7) +hasLocation(#20018,#20019) +#20020=* +lines(#20020,#20001," break;"," +") +#20021=@"loc,{#10000},10,1,10,10" +locations_default(#20021,#10000,10,1,10,10) +hasLocation(#20020,#20021) +indentation(#10000,10," ",4) +#20022=* +lines(#20022,#20001,"default:"," +") +#20023=@"loc,{#10000},11,1,11,8" +locations_default(#20023,#10000,11,1,11,8) +hasLocation(#20022,#20023) +#20024=* +lines(#20024,#20001,"}","") +#20025=@"loc,{#10000},12,1,12,1" +locations_default(#20025,#10000,12,1,12,1) +hasLocation(#20024,#20025) +numlines(#20001,12,12,0) +#20026=* +tokeninfo(#20026,7,#20001,0,"if") +#20027=@"loc,{#10000},1,1,1,2" +locations_default(#20027,#10000,1,1,1,2) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,1,"(") +#20029=@"loc,{#10000},1,4,1,4" +locations_default(#20029,#10000,1,4,1,4) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,2,#20001,2,"true") +#20031=@"loc,{#10000},1,5,1,8" +locations_default(#20031,#10000,1,5,1,8) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,3,")") +#20033=@"loc,{#10000},1,9,1,9" +locations_default(#20033,#10000,1,9,1,9) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,4,";") +#20035=@"loc,{#10000},2,5,2,5" +locations_default(#20035,#10000,2,5,2,5) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,7,#20001,5,"if") +#20037=@"loc,{#10000},3,1,3,2" +locations_default(#20037,#10000,3,1,3,2) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,8,#20001,6,"(") +#20039=@"loc,{#10000},3,4,3,4" +locations_default(#20039,#10000,3,4,3,4) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,6,#20001,7,"b") +#20041=@"loc,{#10000},3,5,3,5" +locations_default(#20041,#10000,3,5,3,5) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,8,")") +#20043=@"loc,{#10000},3,6,3,6" +locations_default(#20043,#10000,3,6,3,6) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,9,";") +#20045=@"loc,{#10000},4,5,4,5" +locations_default(#20045,#10000,4,5,4,5) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,7,#20001,10,"else") +hasLocation(#20046,#20011) +#20047=* +tokeninfo(#20047,8,#20001,11,";") +#20048=@"loc,{#10000},6,5,6,5" +locations_default(#20048,#10000,6,5,6,5) hasLocation(#20047,#20048) #20049=* -lines(#20049,#20001,"case 23:"," -") -hasLocation(#20049,#20023) -#20050=* -lines(#20050,#20001,"case c:"," -") -#20051=@"loc,{#10000},9,1,9,7" -locations_default(#20051,#10000,9,1,9,7) -hasLocation(#20050,#20051) -#20052=* -lines(#20052,#20001," break;"," -") -#20053=@"loc,{#10000},10,1,10,10" -locations_default(#20053,#10000,10,1,10,10) -hasLocation(#20052,#20053) -indentation(#10000,10," ",4) -#20054=* -lines(#20054,#20001,"default:"," -") -hasLocation(#20054,#20034) +tokeninfo(#20049,7,#20001,12,"switch") +#20050=@"loc,{#10000},7,1,7,6" +locations_default(#20050,#10000,7,1,7,6) +hasLocation(#20049,#20050) +#20051=* +tokeninfo(#20051,8,#20001,13,"(") +#20052=@"loc,{#10000},7,8,7,8" +locations_default(#20052,#10000,7,8,7,8) +hasLocation(#20051,#20052) +#20053=* +tokeninfo(#20053,6,#20001,14,"b") +#20054=@"loc,{#10000},7,9,7,9" +locations_default(#20054,#10000,7,9,7,9) +hasLocation(#20053,#20054) #20055=* -lines(#20055,#20001,"}","") -#20056=@"loc,{#10000},12,1,12,1" -locations_default(#20056,#10000,12,1,12,1) +tokeninfo(#20055,8,#20001,15,")") +#20056=@"loc,{#10000},7,10,7,10" +locations_default(#20056,#10000,7,10,7,10) hasLocation(#20055,#20056) -numlines(#20001,12,12,0) #20057=* -tokeninfo(#20057,7,#20001,0,"if") -#20058=@"loc,{#10000},1,1,1,2" -locations_default(#20058,#10000,1,1,1,2) +tokeninfo(#20057,8,#20001,16,"{") +#20058=@"loc,{#10000},7,12,7,12" +locations_default(#20058,#10000,7,12,7,12) hasLocation(#20057,#20058) #20059=* -tokeninfo(#20059,8,#20001,1,"(") -#20060=@"loc,{#10000},1,4,1,4" -locations_default(#20060,#10000,1,4,1,4) +tokeninfo(#20059,7,#20001,17,"case") +#20060=@"loc,{#10000},8,1,8,4" +locations_default(#20060,#10000,8,1,8,4) hasLocation(#20059,#20060) #20061=* -tokeninfo(#20061,2,#20001,2,"true") -hasLocation(#20061,#20006) -#20062=* -tokeninfo(#20062,8,#20001,3,")") -#20063=@"loc,{#10000},1,9,1,9" -locations_default(#20063,#10000,1,9,1,9) -hasLocation(#20062,#20063) -#20064=* -tokeninfo(#20064,8,#20001,4,";") -hasLocation(#20064,#20008) +tokeninfo(#20061,3,#20001,18,"23") +#20062=@"loc,{#10000},8,6,8,7" +locations_default(#20062,#10000,8,6,8,7) +hasLocation(#20061,#20062) +#20063=* +tokeninfo(#20063,8,#20001,19,":") +#20064=@"loc,{#10000},8,8,8,8" +locations_default(#20064,#10000,8,8,8,8) +hasLocation(#20063,#20064) #20065=* -tokeninfo(#20065,7,#20001,5,"if") -#20066=@"loc,{#10000},3,1,3,2" -locations_default(#20066,#10000,3,1,3,2) +tokeninfo(#20065,7,#20001,20,"case") +#20066=@"loc,{#10000},9,1,9,4" +locations_default(#20066,#10000,9,1,9,4) hasLocation(#20065,#20066) #20067=* -tokeninfo(#20067,8,#20001,6,"(") -#20068=@"loc,{#10000},3,4,3,4" -locations_default(#20068,#10000,3,4,3,4) +tokeninfo(#20067,6,#20001,21,"c") +#20068=@"loc,{#10000},9,6,9,6" +locations_default(#20068,#10000,9,6,9,6) hasLocation(#20067,#20068) #20069=* -tokeninfo(#20069,6,#20001,7,"b") -hasLocation(#20069,#20012) -#20070=* -tokeninfo(#20070,8,#20001,8,")") -#20071=@"loc,{#10000},3,6,3,6" -locations_default(#20071,#10000,3,6,3,6) -hasLocation(#20070,#20071) -#20072=* -tokeninfo(#20072,8,#20001,9,";") -hasLocation(#20072,#20015) +tokeninfo(#20069,8,#20001,22,":") +#20070=@"loc,{#10000},9,7,9,7" +locations_default(#20070,#10000,9,7,9,7) +hasLocation(#20069,#20070) +#20071=* +tokeninfo(#20071,7,#20001,23,"break") +#20072=@"loc,{#10000},10,5,10,9" +locations_default(#20072,#10000,10,5,10,9) +hasLocation(#20071,#20072) #20073=* -tokeninfo(#20073,7,#20001,10,"else") -hasLocation(#20073,#20044) -#20074=* -tokeninfo(#20074,8,#20001,11,";") -hasLocation(#20074,#20017) +tokeninfo(#20073,8,#20001,24,";") +#20074=@"loc,{#10000},10,10,10,10" +locations_default(#20074,#10000,10,10,10,10) +hasLocation(#20073,#20074) #20075=* -tokeninfo(#20075,7,#20001,12,"switch") -#20076=@"loc,{#10000},7,1,7,6" -locations_default(#20076,#10000,7,1,7,6) +tokeninfo(#20075,7,#20001,25,"default") +#20076=@"loc,{#10000},11,1,11,7" +locations_default(#20076,#10000,11,1,11,7) hasLocation(#20075,#20076) #20077=* -tokeninfo(#20077,8,#20001,13,"(") -#20078=@"loc,{#10000},7,8,7,8" -locations_default(#20078,#10000,7,8,7,8) +tokeninfo(#20077,8,#20001,26,":") +#20078=@"loc,{#10000},11,8,11,8" +locations_default(#20078,#10000,11,8,11,8) hasLocation(#20077,#20078) #20079=* -tokeninfo(#20079,6,#20001,14,"b") -hasLocation(#20079,#20021) +tokeninfo(#20079,8,#20001,27,"}") +hasLocation(#20079,#20025) #20080=* -tokeninfo(#20080,8,#20001,15,")") -#20081=@"loc,{#10000},7,10,7,10" -locations_default(#20081,#10000,7,10,7,10) +tokeninfo(#20080,0,#20001,28,"") +#20081=@"loc,{#10000},12,2,12,1" +locations_default(#20081,#10000,12,2,12,1) hasLocation(#20080,#20081) -#20082=* -tokeninfo(#20082,8,#20001,16,"{") -#20083=@"loc,{#10000},7,12,7,12" -locations_default(#20083,#10000,7,12,7,12) -hasLocation(#20082,#20083) -#20084=* -tokeninfo(#20084,7,#20001,17,"case") -#20085=@"loc,{#10000},8,1,8,4" -locations_default(#20085,#10000,8,1,8,4) -hasLocation(#20084,#20085) +toplevels(#20001,0) +#20082=@"loc,{#10000},1,1,12,1" +locations_default(#20082,#10000,1,1,12,1) +hasLocation(#20001,#20082) +#20083=* +stmts(#20083,3,#20001,0,"if (true)\n ;") +#20084=@"loc,{#10000},1,1,2,5" +locations_default(#20084,#10000,1,1,2,5) +hasLocation(#20083,#20084) +stmtContainers(#20083,#20001) +#20085=* +exprs(#20085,2,#20083,0,"true") +hasLocation(#20085,#20031) +enclosingStmt(#20085,#20083) +exprContainers(#20085,#20001) +literals("true","true",#20085) #20086=* -tokeninfo(#20086,3,#20001,18,"23") -hasLocation(#20086,#20025) +stmts(#20086,0,#20083,1,";") +hasLocation(#20086,#20035) +stmtContainers(#20086,#20001) #20087=* -tokeninfo(#20087,8,#20001,19,":") -#20088=@"loc,{#10000},8,8,8,8" -locations_default(#20088,#10000,8,8,8,8) +stmts(#20087,3,#20001,1,"if (b)\n ... e\n ;") +#20088=@"loc,{#10000},3,1,6,5" +locations_default(#20088,#10000,3,1,6,5) hasLocation(#20087,#20088) +stmtContainers(#20087,#20001) #20089=* -tokeninfo(#20089,7,#20001,20,"case") -#20090=@"loc,{#10000},9,1,9,4" -locations_default(#20090,#10000,9,1,9,4) -hasLocation(#20089,#20090) +exprs(#20089,79,#20087,0,"b") +hasLocation(#20089,#20041) +enclosingStmt(#20089,#20087) +exprContainers(#20089,#20001) +literals("b","b",#20089) +#20090=@"var;{b};{#20000}" +variables(#20090,"b",#20000) +bind(#20089,#20090) #20091=* -tokeninfo(#20091,6,#20001,21,"c") -hasLocation(#20091,#20029) +stmts(#20091,0,#20087,1,";") +hasLocation(#20091,#20045) +stmtContainers(#20091,#20001) #20092=* -tokeninfo(#20092,8,#20001,22,":") -#20093=@"loc,{#10000},9,7,9,7" -locations_default(#20093,#10000,9,7,9,7) -hasLocation(#20092,#20093) -#20094=* -tokeninfo(#20094,7,#20001,23,"break") -#20095=@"loc,{#10000},10,5,10,9" -locations_default(#20095,#10000,10,5,10,9) -hasLocation(#20094,#20095) +stmts(#20092,0,#20087,2,";") +hasLocation(#20092,#20048) +stmtContainers(#20092,#20001) +#20093=* +stmts(#20093,8,#20001,2,"switch ... ault:\n}") +#20094=@"loc,{#10000},7,1,12,1" +locations_default(#20094,#10000,7,1,12,1) +hasLocation(#20093,#20094) +stmtContainers(#20093,#20001) +#20095=* +exprs(#20095,79,#20093,-1,"b") +hasLocation(#20095,#20054) +enclosingStmt(#20095,#20093) +exprContainers(#20095,#20001) +literals("b","b",#20095) +bind(#20095,#20090) #20096=* -tokeninfo(#20096,8,#20001,24,";") -#20097=@"loc,{#10000},10,10,10,10" -locations_default(#20097,#10000,10,10,10,10) -hasLocation(#20096,#20097) +stmts(#20096,19,#20093,0,"case 23:") +hasLocation(#20096,#20017) +stmtContainers(#20096,#20001) +#20097=* +exprs(#20097,3,#20096,-1,"23") +hasLocation(#20097,#20062) +enclosingStmt(#20097,#20096) +exprContainers(#20097,#20001) +literals("23","23",#20097) #20098=* -tokeninfo(#20098,7,#20001,25,"default") -#20099=@"loc,{#10000},11,1,11,7" -locations_default(#20099,#10000,11,1,11,7) +stmts(#20098,19,#20093,1,"case c:\n break;") +#20099=@"loc,{#10000},9,1,10,10" +locations_default(#20099,#10000,9,1,10,10) hasLocation(#20098,#20099) +stmtContainers(#20098,#20001) #20100=* -tokeninfo(#20100,8,#20001,26,":") -#20101=@"loc,{#10000},11,8,11,8" -locations_default(#20101,#10000,11,8,11,8) -hasLocation(#20100,#20101) +exprs(#20100,79,#20098,-1,"c") +hasLocation(#20100,#20068) +enclosingStmt(#20100,#20098) +exprContainers(#20100,#20001) +literals("c","c",#20100) +#20101=@"var;{c};{#20000}" +variables(#20101,"c",#20000) +bind(#20100,#20101) #20102=* -tokeninfo(#20102,8,#20001,27,"}") -hasLocation(#20102,#20056) -#20103=* -tokeninfo(#20103,0,#20001,28,"") -#20104=@"loc,{#10000},12,2,12,1" -locations_default(#20104,#10000,12,2,12,1) -hasLocation(#20103,#20104) +stmts(#20102,5,#20098,0,"break;") +#20103=@"loc,{#10000},10,5,10,10" +locations_default(#20103,#10000,10,5,10,10) +hasLocation(#20102,#20103) +stmtContainers(#20102,#20001) +jumpTargets(#20102,#20093) +#20104=* +stmts(#20104,19,#20093,2,"default:") +hasLocation(#20104,#20023) +stmtContainers(#20104,#20001) #20105=* entry_cfg_node(#20105,#20001) #20106=@"loc,{#10000},1,1,1,0" @@ -325,32 +325,32 @@ locations_default(#20106,#10000,1,1,1,0) hasLocation(#20105,#20106) #20107=* exit_cfg_node(#20107,#20001) -hasLocation(#20107,#20104) -successor(#20018,#20020) -successor(#20020,#20022) -successor(#20033,#20107) -successor(#20026,#20028) -successor(#20028,#20031) -successor(#20028,#20033) -successor(#20031,#20107) -successor(#20022,#20024) -successor(#20024,#20026) -successor(#20009,#20011) +hasLocation(#20107,#20081) +successor(#20093,#20095) +successor(#20095,#20096) +successor(#20104,#20107) +successor(#20098,#20100) +successor(#20100,#20102) +successor(#20100,#20104) +successor(#20102,#20107) +successor(#20096,#20097) +successor(#20097,#20098) +successor(#20087,#20089) #20108=* -guard_node(#20108,1,#20011) -hasLocation(#20108,#20012) -successor(#20108,#20014) +guard_node(#20108,1,#20089) +hasLocation(#20108,#20041) +successor(#20108,#20091) #20109=* -guard_node(#20109,0,#20011) -hasLocation(#20109,#20012) -successor(#20109,#20016) -successor(#20011,#20108) -successor(#20011,#20109) -successor(#20014,#20018) -successor(#20016,#20018) -successor(#20003,#20005) -successor(#20005,#20007) -successor(#20007,#20009) -successor(#20105,#20003) +guard_node(#20109,0,#20089) +hasLocation(#20109,#20041) +successor(#20109,#20092) +successor(#20089,#20108) +successor(#20089,#20109) +successor(#20091,#20093) +successor(#20092,#20093) +successor(#20083,#20085) +successor(#20085,#20086) +successor(#20086,#20087) +successor(#20105,#20083) numlines(#10000,12,12,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/stmts/output/trap/forvardefault.js.trap b/javascript/extractor/tests/stmts/output/trap/forvardefault.js.trap index cd7ed71f553..437d896cf8d 100644 --- a/javascript/extractor/tests/stmts/output/trap/forvardefault.js.trap +++ b/javascript/extractor/tests/stmts/output/trap/forvardefault.js.trap @@ -9,253 +9,253 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,3,21" -locations_default(#20002,#10000,1,1,3,21) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,15,#20001,0,"for (a ... b) f();") -#20004=@"loc,{#10000},1,1,1,21" -locations_default(#20004,#10000,1,1,1,21) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,79,#20003,1,"b") -#20006=@"loc,{#10000},1,15,1,15" -locations_default(#20006,#10000,1,15,1,15) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -literals("b","b",#20005) -#20007=@"var;{b};{#20000}" -variables(#20007,"b",#20000) -bind(#20005,#20007) +#20002=* +lines(#20002,#20001,"for (a = 1 in b) f();"," +") +#20003=@"loc,{#10000},1,1,1,21" +locations_default(#20003,#10000,1,1,1,21) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,""," +") +#20005=@"loc,{#10000},2,1,2,0" +locations_default(#20005,#10000,2,1,2,0) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"for (c = 0 of d) g();","") +#20007=@"loc,{#10000},3,1,3,21" +locations_default(#20007,#10000,3,1,3,21) +hasLocation(#20006,#20007) +numlines(#20001,3,2,0) #20008=* -exprs(#20008,79,#20003,0,"a") -#20009=@"loc,{#10000},1,6,1,6" -locations_default(#20009,#10000,1,6,1,6) +tokeninfo(#20008,7,#20001,0,"for") +#20009=@"loc,{#10000},1,1,1,3" +locations_default(#20009,#10000,1,1,1,3) hasLocation(#20008,#20009) -enclosingStmt(#20008,#20003) -exprContainers(#20008,#20001) -literals("a","a",#20008) -#20010=@"var;{a};{#20000}" -variables(#20010,"a",#20000) -bind(#20008,#20010) -#20011=* -exprs(#20011,3,#20003,-1,"1") -#20012=@"loc,{#10000},1,10,1,10" -locations_default(#20012,#10000,1,10,1,10) -hasLocation(#20011,#20012) -enclosingStmt(#20011,#20003) -exprContainers(#20011,#20001) -literals("1","1",#20011) -#20013=* -stmts(#20013,2,#20003,2,"f();") -#20014=@"loc,{#10000},1,18,1,21" -locations_default(#20014,#10000,1,18,1,21) -hasLocation(#20013,#20014) -stmtContainers(#20013,#20001) -#20015=* -exprs(#20015,13,#20013,0,"f()") -#20016=@"loc,{#10000},1,18,1,20" -locations_default(#20016,#10000,1,18,1,20) -hasLocation(#20015,#20016) -enclosingStmt(#20015,#20013) -exprContainers(#20015,#20001) -#20017=* -exprs(#20017,79,#20015,-1,"f") -#20018=@"loc,{#10000},1,18,1,18" -locations_default(#20018,#10000,1,18,1,18) -hasLocation(#20017,#20018) -enclosingStmt(#20017,#20013) -exprContainers(#20017,#20001) -literals("f","f",#20017) -#20019=@"var;{f};{#20000}" -variables(#20019,"f",#20000) -bind(#20017,#20019) +#20010=* +tokeninfo(#20010,8,#20001,1,"(") +#20011=@"loc,{#10000},1,5,1,5" +locations_default(#20011,#10000,1,5,1,5) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,6,#20001,2,"a") +#20013=@"loc,{#10000},1,6,1,6" +locations_default(#20013,#10000,1,6,1,6) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,3,"=") +#20015=@"loc,{#10000},1,8,1,8" +locations_default(#20015,#10000,1,8,1,8) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,3,#20001,4,"1") +#20017=@"loc,{#10000},1,10,1,10" +locations_default(#20017,#10000,1,10,1,10) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,7,#20001,5,"in") +#20019=@"loc,{#10000},1,12,1,13" +locations_default(#20019,#10000,1,12,1,13) +hasLocation(#20018,#20019) #20020=* -stmts(#20020,21,#20001,1,"for (c ... d) g();") -#20021=@"loc,{#10000},3,1,3,21" -locations_default(#20021,#10000,3,1,3,21) +tokeninfo(#20020,6,#20001,6,"b") +#20021=@"loc,{#10000},1,15,1,15" +locations_default(#20021,#10000,1,15,1,15) hasLocation(#20020,#20021) -stmtContainers(#20020,#20001) #20022=* -exprs(#20022,79,#20020,1,"d") -#20023=@"loc,{#10000},3,15,3,15" -locations_default(#20023,#10000,3,15,3,15) +tokeninfo(#20022,8,#20001,7,")") +#20023=@"loc,{#10000},1,16,1,16" +locations_default(#20023,#10000,1,16,1,16) hasLocation(#20022,#20023) -enclosingStmt(#20022,#20020) -exprContainers(#20022,#20001) -literals("d","d",#20022) -#20024=@"var;{d};{#20000}" -variables(#20024,"d",#20000) -bind(#20022,#20024) -#20025=* -exprs(#20025,79,#20020,0,"c") -#20026=@"loc,{#10000},3,6,3,6" -locations_default(#20026,#10000,3,6,3,6) -hasLocation(#20025,#20026) -enclosingStmt(#20025,#20020) -exprContainers(#20025,#20001) -literals("c","c",#20025) -#20027=@"var;{c};{#20000}" -variables(#20027,"c",#20000) -bind(#20025,#20027) +#20024=* +tokeninfo(#20024,6,#20001,8,"f") +#20025=@"loc,{#10000},1,18,1,18" +locations_default(#20025,#10000,1,18,1,18) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,9,"(") +#20027=@"loc,{#10000},1,19,1,19" +locations_default(#20027,#10000,1,19,1,19) +hasLocation(#20026,#20027) #20028=* -exprs(#20028,3,#20020,-1,"0") -#20029=@"loc,{#10000},3,10,3,10" -locations_default(#20029,#10000,3,10,3,10) +tokeninfo(#20028,8,#20001,10,")") +#20029=@"loc,{#10000},1,20,1,20" +locations_default(#20029,#10000,1,20,1,20) hasLocation(#20028,#20029) -enclosingStmt(#20028,#20020) -exprContainers(#20028,#20001) -literals("0","0",#20028) #20030=* -stmts(#20030,2,#20020,2,"g();") -#20031=@"loc,{#10000},3,18,3,21" -locations_default(#20031,#10000,3,18,3,21) +tokeninfo(#20030,8,#20001,11,";") +#20031=@"loc,{#10000},1,21,1,21" +locations_default(#20031,#10000,1,21,1,21) hasLocation(#20030,#20031) -stmtContainers(#20030,#20001) #20032=* -exprs(#20032,13,#20030,0,"g()") -#20033=@"loc,{#10000},3,18,3,20" -locations_default(#20033,#10000,3,18,3,20) +tokeninfo(#20032,7,#20001,12,"for") +#20033=@"loc,{#10000},3,1,3,3" +locations_default(#20033,#10000,3,1,3,3) hasLocation(#20032,#20033) -enclosingStmt(#20032,#20030) -exprContainers(#20032,#20001) #20034=* -exprs(#20034,79,#20032,-1,"g") -#20035=@"loc,{#10000},3,18,3,18" -locations_default(#20035,#10000,3,18,3,18) +tokeninfo(#20034,8,#20001,13,"(") +#20035=@"loc,{#10000},3,5,3,5" +locations_default(#20035,#10000,3,5,3,5) hasLocation(#20034,#20035) -enclosingStmt(#20034,#20030) -exprContainers(#20034,#20001) -literals("g","g",#20034) -#20036=@"var;{g};{#20000}" -variables(#20036,"g",#20000) -bind(#20034,#20036) -#20037=* -lines(#20037,#20001,"for (a = 1 in b) f();"," -") -hasLocation(#20037,#20004) +#20036=* +tokeninfo(#20036,6,#20001,14,"c") +#20037=@"loc,{#10000},3,6,3,6" +locations_default(#20037,#10000,3,6,3,6) +hasLocation(#20036,#20037) #20038=* -lines(#20038,#20001,""," -") -#20039=@"loc,{#10000},2,1,2,0" -locations_default(#20039,#10000,2,1,2,0) +tokeninfo(#20038,8,#20001,15,"=") +#20039=@"loc,{#10000},3,8,3,8" +locations_default(#20039,#10000,3,8,3,8) hasLocation(#20038,#20039) #20040=* -lines(#20040,#20001,"for (c = 0 of d) g();","") -hasLocation(#20040,#20021) -numlines(#20001,3,2,0) -#20041=* -tokeninfo(#20041,7,#20001,0,"for") -#20042=@"loc,{#10000},1,1,1,3" -locations_default(#20042,#10000,1,1,1,3) -hasLocation(#20041,#20042) -#20043=* -tokeninfo(#20043,8,#20001,1,"(") -#20044=@"loc,{#10000},1,5,1,5" -locations_default(#20044,#10000,1,5,1,5) -hasLocation(#20043,#20044) -#20045=* -tokeninfo(#20045,6,#20001,2,"a") -hasLocation(#20045,#20009) +tokeninfo(#20040,3,#20001,16,"0") +#20041=@"loc,{#10000},3,10,3,10" +locations_default(#20041,#10000,3,10,3,10) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,6,#20001,17,"of") +#20043=@"loc,{#10000},3,12,3,13" +locations_default(#20043,#10000,3,12,3,13) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,6,#20001,18,"d") +#20045=@"loc,{#10000},3,15,3,15" +locations_default(#20045,#10000,3,15,3,15) +hasLocation(#20044,#20045) #20046=* -tokeninfo(#20046,8,#20001,3,"=") -#20047=@"loc,{#10000},1,8,1,8" -locations_default(#20047,#10000,1,8,1,8) +tokeninfo(#20046,8,#20001,19,")") +#20047=@"loc,{#10000},3,16,3,16" +locations_default(#20047,#10000,3,16,3,16) hasLocation(#20046,#20047) #20048=* -tokeninfo(#20048,3,#20001,4,"1") -hasLocation(#20048,#20012) -#20049=* -tokeninfo(#20049,7,#20001,5,"in") -#20050=@"loc,{#10000},1,12,1,13" -locations_default(#20050,#10000,1,12,1,13) -hasLocation(#20049,#20050) -#20051=* -tokeninfo(#20051,6,#20001,6,"b") -hasLocation(#20051,#20006) +tokeninfo(#20048,6,#20001,20,"g") +#20049=@"loc,{#10000},3,18,3,18" +locations_default(#20049,#10000,3,18,3,18) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,21,"(") +#20051=@"loc,{#10000},3,19,3,19" +locations_default(#20051,#10000,3,19,3,19) +hasLocation(#20050,#20051) #20052=* -tokeninfo(#20052,8,#20001,7,")") -#20053=@"loc,{#10000},1,16,1,16" -locations_default(#20053,#10000,1,16,1,16) +tokeninfo(#20052,8,#20001,22,")") +#20053=@"loc,{#10000},3,20,3,20" +locations_default(#20053,#10000,3,20,3,20) hasLocation(#20052,#20053) #20054=* -tokeninfo(#20054,6,#20001,8,"f") -hasLocation(#20054,#20018) -#20055=* -tokeninfo(#20055,8,#20001,9,"(") -#20056=@"loc,{#10000},1,19,1,19" -locations_default(#20056,#10000,1,19,1,19) -hasLocation(#20055,#20056) -#20057=* -tokeninfo(#20057,8,#20001,10,")") -#20058=@"loc,{#10000},1,20,1,20" -locations_default(#20058,#10000,1,20,1,20) -hasLocation(#20057,#20058) +tokeninfo(#20054,8,#20001,23,";") +#20055=@"loc,{#10000},3,21,3,21" +locations_default(#20055,#10000,3,21,3,21) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,0,#20001,24,"") +#20057=@"loc,{#10000},3,22,3,21" +locations_default(#20057,#10000,3,22,3,21) +hasLocation(#20056,#20057) +toplevels(#20001,0) +#20058=@"loc,{#10000},1,1,3,21" +locations_default(#20058,#10000,1,1,3,21) +hasLocation(#20001,#20058) #20059=* -tokeninfo(#20059,8,#20001,11,";") -#20060=@"loc,{#10000},1,21,1,21" -locations_default(#20060,#10000,1,21,1,21) -hasLocation(#20059,#20060) -#20061=* -tokeninfo(#20061,7,#20001,12,"for") -#20062=@"loc,{#10000},3,1,3,3" -locations_default(#20062,#10000,3,1,3,3) -hasLocation(#20061,#20062) -#20063=* -tokeninfo(#20063,8,#20001,13,"(") -#20064=@"loc,{#10000},3,5,3,5" -locations_default(#20064,#10000,3,5,3,5) -hasLocation(#20063,#20064) +stmts(#20059,15,#20001,0,"for (a ... b) f();") +hasLocation(#20059,#20003) +stmtContainers(#20059,#20001) +#20060=* +exprs(#20060,79,#20059,1,"b") +hasLocation(#20060,#20021) +enclosingStmt(#20060,#20059) +exprContainers(#20060,#20001) +literals("b","b",#20060) +#20061=@"var;{b};{#20000}" +variables(#20061,"b",#20000) +bind(#20060,#20061) +#20062=* +exprs(#20062,79,#20059,0,"a") +hasLocation(#20062,#20013) +enclosingStmt(#20062,#20059) +exprContainers(#20062,#20001) +literals("a","a",#20062) +#20063=@"var;{a};{#20000}" +variables(#20063,"a",#20000) +bind(#20062,#20063) +#20064=* +exprs(#20064,3,#20059,-1,"1") +hasLocation(#20064,#20017) +enclosingStmt(#20064,#20059) +exprContainers(#20064,#20001) +literals("1","1",#20064) #20065=* -tokeninfo(#20065,6,#20001,14,"c") -hasLocation(#20065,#20026) -#20066=* -tokeninfo(#20066,8,#20001,15,"=") -#20067=@"loc,{#10000},3,8,3,8" -locations_default(#20067,#10000,3,8,3,8) -hasLocation(#20066,#20067) -#20068=* -tokeninfo(#20068,3,#20001,16,"0") -hasLocation(#20068,#20029) +stmts(#20065,2,#20059,2,"f();") +#20066=@"loc,{#10000},1,18,1,21" +locations_default(#20066,#10000,1,18,1,21) +hasLocation(#20065,#20066) +stmtContainers(#20065,#20001) +#20067=* +exprs(#20067,13,#20065,0,"f()") +#20068=@"loc,{#10000},1,18,1,20" +locations_default(#20068,#10000,1,18,1,20) +hasLocation(#20067,#20068) +enclosingStmt(#20067,#20065) +exprContainers(#20067,#20001) #20069=* -tokeninfo(#20069,6,#20001,17,"of") -#20070=@"loc,{#10000},3,12,3,13" -locations_default(#20070,#10000,3,12,3,13) -hasLocation(#20069,#20070) +exprs(#20069,79,#20067,-1,"f") +hasLocation(#20069,#20025) +enclosingStmt(#20069,#20065) +exprContainers(#20069,#20001) +literals("f","f",#20069) +#20070=@"var;{f};{#20000}" +variables(#20070,"f",#20000) +bind(#20069,#20070) #20071=* -tokeninfo(#20071,6,#20001,18,"d") -hasLocation(#20071,#20023) +stmts(#20071,21,#20001,1,"for (c ... d) g();") +hasLocation(#20071,#20007) +stmtContainers(#20071,#20001) #20072=* -tokeninfo(#20072,8,#20001,19,")") -#20073=@"loc,{#10000},3,16,3,16" -locations_default(#20073,#10000,3,16,3,16) -hasLocation(#20072,#20073) +exprs(#20072,79,#20071,1,"d") +hasLocation(#20072,#20045) +enclosingStmt(#20072,#20071) +exprContainers(#20072,#20001) +literals("d","d",#20072) +#20073=@"var;{d};{#20000}" +variables(#20073,"d",#20000) +bind(#20072,#20073) #20074=* -tokeninfo(#20074,6,#20001,20,"g") -hasLocation(#20074,#20035) -#20075=* -tokeninfo(#20075,8,#20001,21,"(") -#20076=@"loc,{#10000},3,19,3,19" -locations_default(#20076,#10000,3,19,3,19) -hasLocation(#20075,#20076) +exprs(#20074,79,#20071,0,"c") +hasLocation(#20074,#20037) +enclosingStmt(#20074,#20071) +exprContainers(#20074,#20001) +literals("c","c",#20074) +#20075=@"var;{c};{#20000}" +variables(#20075,"c",#20000) +bind(#20074,#20075) +#20076=* +exprs(#20076,3,#20071,-1,"0") +hasLocation(#20076,#20041) +enclosingStmt(#20076,#20071) +exprContainers(#20076,#20001) +literals("0","0",#20076) #20077=* -tokeninfo(#20077,8,#20001,22,")") -#20078=@"loc,{#10000},3,20,3,20" -locations_default(#20078,#10000,3,20,3,20) +stmts(#20077,2,#20071,2,"g();") +#20078=@"loc,{#10000},3,18,3,21" +locations_default(#20078,#10000,3,18,3,21) hasLocation(#20077,#20078) +stmtContainers(#20077,#20001) #20079=* -tokeninfo(#20079,8,#20001,23,";") -#20080=@"loc,{#10000},3,21,3,21" -locations_default(#20080,#10000,3,21,3,21) +exprs(#20079,13,#20077,0,"g()") +#20080=@"loc,{#10000},3,18,3,20" +locations_default(#20080,#10000,3,18,3,20) hasLocation(#20079,#20080) +enclosingStmt(#20079,#20077) +exprContainers(#20079,#20001) #20081=* -tokeninfo(#20081,0,#20001,24,"") -#20082=@"loc,{#10000},3,22,3,21" -locations_default(#20082,#10000,3,22,3,21) -hasLocation(#20081,#20082) +exprs(#20081,79,#20079,-1,"g") +hasLocation(#20081,#20049) +enclosingStmt(#20081,#20077) +exprContainers(#20081,#20001) +literals("g","g",#20081) +#20082=@"var;{g};{#20000}" +variables(#20082,"g",#20000) +bind(#20081,#20082) #20083=* entry_cfg_node(#20083,#20001) #20084=@"loc,{#10000},1,1,1,0" @@ -263,23 +263,23 @@ locations_default(#20084,#10000,1,1,1,0) hasLocation(#20083,#20084) #20085=* exit_cfg_node(#20085,#20001) -hasLocation(#20085,#20082) -successor(#20022,#20020) -successor(#20020,#20025) -successor(#20020,#20085) -successor(#20030,#20034) -successor(#20034,#20032) -successor(#20032,#20020) -successor(#20028,#20030) -successor(#20025,#20028) -successor(#20005,#20003) -successor(#20003,#20008) -successor(#20003,#20022) -successor(#20013,#20017) -successor(#20017,#20015) -successor(#20015,#20003) -successor(#20011,#20013) -successor(#20008,#20011) -successor(#20083,#20005) +hasLocation(#20085,#20057) +successor(#20072,#20071) +successor(#20071,#20074) +successor(#20071,#20085) +successor(#20077,#20081) +successor(#20081,#20079) +successor(#20079,#20071) +successor(#20076,#20077) +successor(#20074,#20076) +successor(#20060,#20059) +successor(#20059,#20062) +successor(#20059,#20072) +successor(#20065,#20069) +successor(#20069,#20067) +successor(#20067,#20059) +successor(#20064,#20065) +successor(#20062,#20064) +successor(#20083,#20060) numlines(#10000,3,2,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/stmts/output/trap/functions.js.trap b/javascript/extractor/tests/stmts/output/trap/functions.js.trap index 9d276e0aaf2..478f2ccaa69 100644 --- a/javascript/extractor/tests/stmts/output/trap/functions.js.trap +++ b/javascript/extractor/tests/stmts/output/trap/functions.js.trap @@ -9,516 +9,511 @@ 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=@"var;{g};{#20000}" -variables(#20003,"g",#20000) -#20004=@"var;{h};{#20000}" -variables(#20004,"h",#20000) -#20005=* -stmts(#20005,17,#20001,0,"functio ... x+y;\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,-1,"g") -#20008=@"loc,{#10000},1,10,1,10" -locations_default(#20008,#10000,1,10,1,10) -hasLocation(#20007,#20008) -exprContainers(#20007,#20005) -literals("g","g",#20007) -decl(#20007,#20003) -#20009=* -scopes(#20009,1) -scopenodes(#20005,#20009) -scopenesting(#20009,#20000) -#20010=@"var;{x};{#20009}" -variables(#20010,"x",#20009) -#20011=* -exprs(#20011,78,#20005,0,"x") -#20012=@"loc,{#10000},1,12,1,12" -locations_default(#20012,#10000,1,12,1,12) -hasLocation(#20011,#20012) -exprContainers(#20011,#20005) -literals("x","x",#20011) -decl(#20011,#20010) -#20013=@"var;{y};{#20009}" -variables(#20013,"y",#20009) -#20014=* -exprs(#20014,78,#20005,1,"y") -#20015=@"loc,{#10000},1,15,1,15" -locations_default(#20015,#10000,1,15,1,15) -hasLocation(#20014,#20015) -exprContainers(#20014,#20005) -literals("y","y",#20014) -decl(#20014,#20013) -#20016=@"var;{arguments};{#20009}" -variables(#20016,"arguments",#20009) -isArgumentsObject(#20016) -#20017=* -stmts(#20017,1,#20005,-2,"{\n return x+y;\n}") -#20018=@"loc,{#10000},1,18,3,1" -locations_default(#20018,#10000,1,18,3,1) -hasLocation(#20017,#20018) -stmtContainers(#20017,#20005) -#20019=* -stmts(#20019,9,#20017,0,"return x+y;") -#20020=@"loc,{#10000},2,5,2,15" -locations_default(#20020,#10000,2,5,2,15) -hasLocation(#20019,#20020) -stmtContainers(#20019,#20005) -#20021=* -exprs(#20021,34,#20019,0,"x+y") -#20022=@"loc,{#10000},2,12,2,14" -locations_default(#20022,#10000,2,12,2,14) -hasLocation(#20021,#20022) -enclosingStmt(#20021,#20019) -exprContainers(#20021,#20005) -#20023=* -exprs(#20023,79,#20021,0,"x") -#20024=@"loc,{#10000},2,12,2,12" -locations_default(#20024,#10000,2,12,2,12) -hasLocation(#20023,#20024) -enclosingStmt(#20023,#20019) -exprContainers(#20023,#20005) -literals("x","x",#20023) -bind(#20023,#20010) -#20025=* -exprs(#20025,79,#20021,1,"y") -#20026=@"loc,{#10000},2,14,2,14" -locations_default(#20026,#10000,2,14,2,14) -hasLocation(#20025,#20026) -enclosingStmt(#20025,#20019) -exprContainers(#20025,#20005) -literals("y","y",#20025) -bind(#20025,#20013) -numlines(#20005,3,3,0) -#20027=* -stmts(#20027,17,#20001,1,"function h() {}") -#20028=@"loc,{#10000},5,1,5,15" -locations_default(#20028,#10000,5,1,5,15) -hasLocation(#20027,#20028) -stmtContainers(#20027,#20001) -#20029=* -exprs(#20029,78,#20027,-1,"h") -#20030=@"loc,{#10000},5,10,5,10" -locations_default(#20030,#10000,5,10,5,10) -hasLocation(#20029,#20030) -exprContainers(#20029,#20027) -literals("h","h",#20029) -decl(#20029,#20004) -#20031=* -scopes(#20031,1) -scopenodes(#20027,#20031) -scopenesting(#20031,#20000) -#20032=@"var;{arguments};{#20031}" -variables(#20032,"arguments",#20031) -isArgumentsObject(#20032) -#20033=* -stmts(#20033,1,#20027,-2,"{}") -#20034=@"loc,{#10000},5,14,5,15" -locations_default(#20034,#10000,5,14,5,15) -hasLocation(#20033,#20034) -stmtContainers(#20033,#20027) -numlines(#20027,1,1,0) -#20035=* -stmts(#20035,2,#20001,2,"k = fun ... turn;\n}") -#20036=@"loc,{#10000},7,1,9,1" -locations_default(#20036,#10000,7,1,9,1) -hasLocation(#20035,#20036) -stmtContainers(#20035,#20001) -#20037=* -exprs(#20037,47,#20035,0,"k = fun ... turn;\n}") -hasLocation(#20037,#20036) -enclosingStmt(#20037,#20035) -exprContainers(#20037,#20001) -#20038=* -exprs(#20038,79,#20037,0,"k") -#20039=@"loc,{#10000},7,1,7,1" -locations_default(#20039,#10000,7,1,7,1) -hasLocation(#20038,#20039) -enclosingStmt(#20038,#20035) -exprContainers(#20038,#20001) -literals("k","k",#20038) -#20040=@"var;{k};{#20000}" -variables(#20040,"k",#20000) -bind(#20038,#20040) -#20041=* -exprs(#20041,9,#20037,1,"functio ... turn;\n}") -#20042=@"loc,{#10000},7,5,9,1" -locations_default(#20042,#10000,7,5,9,1) -hasLocation(#20041,#20042) -enclosingStmt(#20041,#20035) -exprContainers(#20041,#20001) -#20043=* -scopes(#20043,1) -scopenodes(#20041,#20043) -scopenesting(#20043,#20000) -#20044=@"var;{arguments};{#20043}" -variables(#20044,"arguments",#20043) -isArgumentsObject(#20044) -#20045=* -stmts(#20045,1,#20041,-2,"{\n return;\n}") -#20046=@"loc,{#10000},7,16,9,1" -locations_default(#20046,#10000,7,16,9,1) -hasLocation(#20045,#20046) -stmtContainers(#20045,#20041) -#20047=* -stmts(#20047,9,#20045,0,"return;") -#20048=@"loc,{#10000},8,5,8,11" -locations_default(#20048,#10000,8,5,8,11) -hasLocation(#20047,#20048) -stmtContainers(#20047,#20041) -numlines(#20041,3,3,0) -#20049=* -stmts(#20049,2,#20001,3,"l = function f() {}") -#20050=@"loc,{#10000},11,1,11,19" -locations_default(#20050,#10000,11,1,11,19) -hasLocation(#20049,#20050) -stmtContainers(#20049,#20001) -#20051=* -exprs(#20051,47,#20049,0,"l = function f() {}") -hasLocation(#20051,#20050) -enclosingStmt(#20051,#20049) -exprContainers(#20051,#20001) -#20052=* -exprs(#20052,79,#20051,0,"l") -#20053=@"loc,{#10000},11,1,11,1" -locations_default(#20053,#10000,11,1,11,1) -hasLocation(#20052,#20053) -enclosingStmt(#20052,#20049) -exprContainers(#20052,#20001) -literals("l","l",#20052) -#20054=@"var;{l};{#20000}" -variables(#20054,"l",#20000) -bind(#20052,#20054) -#20055=* -exprs(#20055,9,#20051,1,"function f() {}") -#20056=@"loc,{#10000},11,5,11,19" -locations_default(#20056,#10000,11,5,11,19) -hasLocation(#20055,#20056) -enclosingStmt(#20055,#20049) -exprContainers(#20055,#20001) -#20057=* -scopes(#20057,1) -scopenodes(#20055,#20057) -scopenesting(#20057,#20000) -#20058=@"var;{f};{#20057}" -variables(#20058,"f",#20057) -#20059=* -exprs(#20059,78,#20055,-1,"f") -#20060=@"loc,{#10000},11,14,11,14" -locations_default(#20060,#10000,11,14,11,14) -hasLocation(#20059,#20060) -exprContainers(#20059,#20055) -literals("f","f",#20059) -decl(#20059,#20058) -#20061=@"var;{arguments};{#20057}" -variables(#20061,"arguments",#20057) -isArgumentsObject(#20061) -#20062=* -stmts(#20062,1,#20055,-2,"{}") -#20063=@"loc,{#10000},11,18,11,19" -locations_default(#20063,#10000,11,18,11,19) -hasLocation(#20062,#20063) -stmtContainers(#20062,#20055) -numlines(#20055,1,1,0) -#20064=* -stmts(#20064,2,#20001,4,"function() {}") -#20065=@"loc,{#10000},13,1,13,13" -locations_default(#20065,#10000,13,1,13,13) -hasLocation(#20064,#20065) -stmtContainers(#20064,#20001) -#20066=* -exprs(#20066,9,#20064,0,"function() {}") -hasLocation(#20066,#20065) -enclosingStmt(#20066,#20064) -exprContainers(#20066,#20001) -#20067=* -scopes(#20067,1) -scopenodes(#20066,#20067) -scopenesting(#20067,#20000) -#20068=@"var;{arguments};{#20067}" -variables(#20068,"arguments",#20067) -isArgumentsObject(#20068) -#20069=* -stmts(#20069,1,#20066,-2,"{}") -#20070=@"loc,{#10000},13,12,13,13" -locations_default(#20070,#10000,13,12,13,13) -hasLocation(#20069,#20070) -stmtContainers(#20069,#20066) -numlines(#20066,1,1,0) -#20071=* -lines(#20071,#20001,"function g(x, y) {"," +#20002=* +lines(#20002,#20001,"function g(x, y) {"," ") -#20072=@"loc,{#10000},1,1,1,18" -locations_default(#20072,#10000,1,1,1,18) +#20003=@"loc,{#10000},1,1,1,18" +locations_default(#20003,#10000,1,1,1,18) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," return x+y;"," +") +#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) +#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 h() {}"," +") +#20011=@"loc,{#10000},5,1,5,15" +locations_default(#20011,#10000,5,1,5,15) +hasLocation(#20010,#20011) +#20012=* +lines(#20012,#20001,""," +") +#20013=@"loc,{#10000},6,1,6,0" +locations_default(#20013,#10000,6,1,6,0) +hasLocation(#20012,#20013) +#20014=* +lines(#20014,#20001,"k = function() {"," +") +#20015=@"loc,{#10000},7,1,7,16" +locations_default(#20015,#10000,7,1,7,16) +hasLocation(#20014,#20015) +#20016=* +lines(#20016,#20001," return;"," +") +#20017=@"loc,{#10000},8,1,8,11" +locations_default(#20017,#10000,8,1,8,11) +hasLocation(#20016,#20017) +indentation(#10000,8," ",4) +#20018=* +lines(#20018,#20001,"}"," +") +#20019=@"loc,{#10000},9,1,9,1" +locations_default(#20019,#10000,9,1,9,1) +hasLocation(#20018,#20019) +#20020=* +lines(#20020,#20001,""," +") +#20021=@"loc,{#10000},10,1,10,0" +locations_default(#20021,#10000,10,1,10,0) +hasLocation(#20020,#20021) +#20022=* +lines(#20022,#20001,"l = function f() {}"," +") +#20023=@"loc,{#10000},11,1,11,19" +locations_default(#20023,#10000,11,1,11,19) +hasLocation(#20022,#20023) +#20024=* +lines(#20024,#20001,""," +") +#20025=@"loc,{#10000},12,1,12,0" +locations_default(#20025,#10000,12,1,12,0) +hasLocation(#20024,#20025) +#20026=* +lines(#20026,#20001,"function() {}"," +") +#20027=@"loc,{#10000},13,1,13,13" +locations_default(#20027,#10000,13,1,13,13) +hasLocation(#20026,#20027) +numlines(#20001,13,9,0) +#20028=* +tokeninfo(#20028,7,#20001,0,"function") +#20029=@"loc,{#10000},1,1,1,8" +locations_default(#20029,#10000,1,1,1,8) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,6,#20001,1,"g") +#20031=@"loc,{#10000},1,10,1,10" +locations_default(#20031,#10000,1,10,1,10) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,2,"(") +#20033=@"loc,{#10000},1,11,1,11" +locations_default(#20033,#10000,1,11,1,11) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,6,#20001,3,"x") +#20035=@"loc,{#10000},1,12,1,12" +locations_default(#20035,#10000,1,12,1,12) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,4,",") +#20037=@"loc,{#10000},1,13,1,13" +locations_default(#20037,#10000,1,13,1,13) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,6,#20001,5,"y") +#20039=@"loc,{#10000},1,15,1,15" +locations_default(#20039,#10000,1,15,1,15) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,6,")") +#20041=@"loc,{#10000},1,16,1,16" +locations_default(#20041,#10000,1,16,1,16) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,7,"{") +#20043=@"loc,{#10000},1,18,1,18" +locations_default(#20043,#10000,1,18,1,18) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,7,#20001,8,"return") +#20045=@"loc,{#10000},2,5,2,10" +locations_default(#20045,#10000,2,5,2,10) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,6,#20001,9,"x") +#20047=@"loc,{#10000},2,12,2,12" +locations_default(#20047,#10000,2,12,2,12) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,8,#20001,10,"+") +#20049=@"loc,{#10000},2,13,2,13" +locations_default(#20049,#10000,2,13,2,13) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,6,#20001,11,"y") +#20051=@"loc,{#10000},2,14,2,14" +locations_default(#20051,#10000,2,14,2,14) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,8,#20001,12,";") +#20053=@"loc,{#10000},2,15,2,15" +locations_default(#20053,#10000,2,15,2,15) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,8,#20001,13,"}") +hasLocation(#20054,#20007) +#20055=* +tokeninfo(#20055,7,#20001,14,"function") +#20056=@"loc,{#10000},5,1,5,8" +locations_default(#20056,#10000,5,1,5,8) +hasLocation(#20055,#20056) +#20057=* +tokeninfo(#20057,6,#20001,15,"h") +#20058=@"loc,{#10000},5,10,5,10" +locations_default(#20058,#10000,5,10,5,10) +hasLocation(#20057,#20058) +#20059=* +tokeninfo(#20059,8,#20001,16,"(") +#20060=@"loc,{#10000},5,11,5,11" +locations_default(#20060,#10000,5,11,5,11) +hasLocation(#20059,#20060) +#20061=* +tokeninfo(#20061,8,#20001,17,")") +#20062=@"loc,{#10000},5,12,5,12" +locations_default(#20062,#10000,5,12,5,12) +hasLocation(#20061,#20062) +#20063=* +tokeninfo(#20063,8,#20001,18,"{") +#20064=@"loc,{#10000},5,14,5,14" +locations_default(#20064,#10000,5,14,5,14) +hasLocation(#20063,#20064) +#20065=* +tokeninfo(#20065,8,#20001,19,"}") +#20066=@"loc,{#10000},5,15,5,15" +locations_default(#20066,#10000,5,15,5,15) +hasLocation(#20065,#20066) +#20067=* +tokeninfo(#20067,6,#20001,20,"k") +#20068=@"loc,{#10000},7,1,7,1" +locations_default(#20068,#10000,7,1,7,1) +hasLocation(#20067,#20068) +#20069=* +tokeninfo(#20069,8,#20001,21,"=") +#20070=@"loc,{#10000},7,3,7,3" +locations_default(#20070,#10000,7,3,7,3) +hasLocation(#20069,#20070) +#20071=* +tokeninfo(#20071,7,#20001,22,"function") +#20072=@"loc,{#10000},7,5,7,12" +locations_default(#20072,#10000,7,5,7,12) hasLocation(#20071,#20072) #20073=* -lines(#20073,#20001," return x+y;"," -") -#20074=@"loc,{#10000},2,1,2,15" -locations_default(#20074,#10000,2,1,2,15) +tokeninfo(#20073,8,#20001,23,"(") +#20074=@"loc,{#10000},7,13,7,13" +locations_default(#20074,#10000,7,13,7,13) hasLocation(#20073,#20074) -indentation(#10000,2," ",4) #20075=* -lines(#20075,#20001,"}"," -") -#20076=@"loc,{#10000},3,1,3,1" -locations_default(#20076,#10000,3,1,3,1) +tokeninfo(#20075,8,#20001,24,")") +#20076=@"loc,{#10000},7,14,7,14" +locations_default(#20076,#10000,7,14,7,14) hasLocation(#20075,#20076) #20077=* -lines(#20077,#20001,""," -") -#20078=@"loc,{#10000},4,1,4,0" -locations_default(#20078,#10000,4,1,4,0) +tokeninfo(#20077,8,#20001,25,"{") +#20078=@"loc,{#10000},7,16,7,16" +locations_default(#20078,#10000,7,16,7,16) hasLocation(#20077,#20078) #20079=* -lines(#20079,#20001,"function h() {}"," -") -hasLocation(#20079,#20028) -#20080=* -lines(#20080,#20001,""," -") -#20081=@"loc,{#10000},6,1,6,0" -locations_default(#20081,#10000,6,1,6,0) -hasLocation(#20080,#20081) -#20082=* -lines(#20082,#20001,"k = function() {"," -") -#20083=@"loc,{#10000},7,1,7,16" -locations_default(#20083,#10000,7,1,7,16) -hasLocation(#20082,#20083) +tokeninfo(#20079,7,#20001,26,"return") +#20080=@"loc,{#10000},8,5,8,10" +locations_default(#20080,#10000,8,5,8,10) +hasLocation(#20079,#20080) +#20081=* +tokeninfo(#20081,8,#20001,27,";") +#20082=@"loc,{#10000},8,11,8,11" +locations_default(#20082,#10000,8,11,8,11) +hasLocation(#20081,#20082) +#20083=* +tokeninfo(#20083,8,#20001,28,"}") +hasLocation(#20083,#20019) #20084=* -lines(#20084,#20001," return;"," -") -#20085=@"loc,{#10000},8,1,8,11" -locations_default(#20085,#10000,8,1,8,11) +tokeninfo(#20084,6,#20001,29,"l") +#20085=@"loc,{#10000},11,1,11,1" +locations_default(#20085,#10000,11,1,11,1) hasLocation(#20084,#20085) -indentation(#10000,8," ",4) #20086=* -lines(#20086,#20001,"}"," -") -#20087=@"loc,{#10000},9,1,9,1" -locations_default(#20087,#10000,9,1,9,1) +tokeninfo(#20086,8,#20001,30,"=") +#20087=@"loc,{#10000},11,3,11,3" +locations_default(#20087,#10000,11,3,11,3) hasLocation(#20086,#20087) #20088=* -lines(#20088,#20001,""," -") -#20089=@"loc,{#10000},10,1,10,0" -locations_default(#20089,#10000,10,1,10,0) +tokeninfo(#20088,7,#20001,31,"function") +#20089=@"loc,{#10000},11,5,11,12" +locations_default(#20089,#10000,11,5,11,12) hasLocation(#20088,#20089) #20090=* -lines(#20090,#20001,"l = function f() {}"," -") -hasLocation(#20090,#20050) -#20091=* -lines(#20091,#20001,""," -") -#20092=@"loc,{#10000},12,1,12,0" -locations_default(#20092,#10000,12,1,12,0) -hasLocation(#20091,#20092) -#20093=* -lines(#20093,#20001,"function() {}"," -") -hasLocation(#20093,#20065) -numlines(#20001,13,9,0) +tokeninfo(#20090,6,#20001,32,"f") +#20091=@"loc,{#10000},11,14,11,14" +locations_default(#20091,#10000,11,14,11,14) +hasLocation(#20090,#20091) +#20092=* +tokeninfo(#20092,8,#20001,33,"(") +#20093=@"loc,{#10000},11,15,11,15" +locations_default(#20093,#10000,11,15,11,15) +hasLocation(#20092,#20093) #20094=* -tokeninfo(#20094,7,#20001,0,"function") -#20095=@"loc,{#10000},1,1,1,8" -locations_default(#20095,#10000,1,1,1,8) +tokeninfo(#20094,8,#20001,34,")") +#20095=@"loc,{#10000},11,16,11,16" +locations_default(#20095,#10000,11,16,11,16) hasLocation(#20094,#20095) #20096=* -tokeninfo(#20096,6,#20001,1,"g") -hasLocation(#20096,#20008) -#20097=* -tokeninfo(#20097,8,#20001,2,"(") -#20098=@"loc,{#10000},1,11,1,11" -locations_default(#20098,#10000,1,11,1,11) -hasLocation(#20097,#20098) -#20099=* -tokeninfo(#20099,6,#20001,3,"x") -hasLocation(#20099,#20012) +tokeninfo(#20096,8,#20001,35,"{") +#20097=@"loc,{#10000},11,18,11,18" +locations_default(#20097,#10000,11,18,11,18) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,8,#20001,36,"}") +#20099=@"loc,{#10000},11,19,11,19" +locations_default(#20099,#10000,11,19,11,19) +hasLocation(#20098,#20099) #20100=* -tokeninfo(#20100,8,#20001,4,",") -#20101=@"loc,{#10000},1,13,1,13" -locations_default(#20101,#10000,1,13,1,13) +tokeninfo(#20100,7,#20001,37,"function") +#20101=@"loc,{#10000},13,1,13,8" +locations_default(#20101,#10000,13,1,13,8) hasLocation(#20100,#20101) #20102=* -tokeninfo(#20102,6,#20001,5,"y") -hasLocation(#20102,#20015) -#20103=* -tokeninfo(#20103,8,#20001,6,")") -#20104=@"loc,{#10000},1,16,1,16" -locations_default(#20104,#10000,1,16,1,16) -hasLocation(#20103,#20104) -#20105=* -tokeninfo(#20105,8,#20001,7,"{") -#20106=@"loc,{#10000},1,18,1,18" -locations_default(#20106,#10000,1,18,1,18) -hasLocation(#20105,#20106) -#20107=* -tokeninfo(#20107,7,#20001,8,"return") -#20108=@"loc,{#10000},2,5,2,10" -locations_default(#20108,#10000,2,5,2,10) -hasLocation(#20107,#20108) -#20109=* -tokeninfo(#20109,6,#20001,9,"x") -hasLocation(#20109,#20024) +tokeninfo(#20102,8,#20001,38,"(") +#20103=@"loc,{#10000},13,9,13,9" +locations_default(#20103,#10000,13,9,13,9) +hasLocation(#20102,#20103) +#20104=* +tokeninfo(#20104,8,#20001,39,")") +#20105=@"loc,{#10000},13,10,13,10" +locations_default(#20105,#10000,13,10,13,10) +hasLocation(#20104,#20105) +#20106=* +tokeninfo(#20106,8,#20001,40,"{") +#20107=@"loc,{#10000},13,12,13,12" +locations_default(#20107,#10000,13,12,13,12) +hasLocation(#20106,#20107) +#20108=* +tokeninfo(#20108,8,#20001,41,"}") +#20109=@"loc,{#10000},13,13,13,13" +locations_default(#20109,#10000,13,13,13,13) +hasLocation(#20108,#20109) #20110=* -tokeninfo(#20110,8,#20001,10,"+") -#20111=@"loc,{#10000},2,13,2,13" -locations_default(#20111,#10000,2,13,2,13) +tokeninfo(#20110,0,#20001,42,"") +#20111=@"loc,{#10000},14,1,14,0" +locations_default(#20111,#10000,14,1,14,0) hasLocation(#20110,#20111) -#20112=* -tokeninfo(#20112,6,#20001,11,"y") -hasLocation(#20112,#20026) -#20113=* -tokeninfo(#20113,8,#20001,12,";") -#20114=@"loc,{#10000},2,15,2,15" -locations_default(#20114,#10000,2,15,2,15) -hasLocation(#20113,#20114) +toplevels(#20001,0) +#20112=@"loc,{#10000},1,1,14,0" +locations_default(#20112,#10000,1,1,14,0) +hasLocation(#20001,#20112) +#20113=@"var;{g};{#20000}" +variables(#20113,"g",#20000) +#20114=@"var;{h};{#20000}" +variables(#20114,"h",#20000) #20115=* -tokeninfo(#20115,8,#20001,13,"}") -hasLocation(#20115,#20076) -#20116=* -tokeninfo(#20116,7,#20001,14,"function") -#20117=@"loc,{#10000},5,1,5,8" -locations_default(#20117,#10000,5,1,5,8) -hasLocation(#20116,#20117) +stmts(#20115,17,#20001,0,"functio ... x+y;\n}") +#20116=@"loc,{#10000},1,1,3,1" +locations_default(#20116,#10000,1,1,3,1) +hasLocation(#20115,#20116) +stmtContainers(#20115,#20001) +#20117=* +exprs(#20117,78,#20115,-1,"g") +hasLocation(#20117,#20031) +exprContainers(#20117,#20115) +literals("g","g",#20117) +decl(#20117,#20113) #20118=* -tokeninfo(#20118,6,#20001,15,"h") -hasLocation(#20118,#20030) -#20119=* -tokeninfo(#20119,8,#20001,16,"(") -#20120=@"loc,{#10000},5,11,5,11" -locations_default(#20120,#10000,5,11,5,11) -hasLocation(#20119,#20120) -#20121=* -tokeninfo(#20121,8,#20001,17,")") -#20122=@"loc,{#10000},5,12,5,12" -locations_default(#20122,#10000,5,12,5,12) -hasLocation(#20121,#20122) -#20123=* -tokeninfo(#20123,8,#20001,18,"{") -#20124=@"loc,{#10000},5,14,5,14" -locations_default(#20124,#10000,5,14,5,14) -hasLocation(#20123,#20124) -#20125=* -tokeninfo(#20125,8,#20001,19,"}") -#20126=@"loc,{#10000},5,15,5,15" -locations_default(#20126,#10000,5,15,5,15) -hasLocation(#20125,#20126) -#20127=* -tokeninfo(#20127,6,#20001,20,"k") -hasLocation(#20127,#20039) +scopes(#20118,1) +scopenodes(#20115,#20118) +scopenesting(#20118,#20000) +#20119=@"var;{x};{#20118}" +variables(#20119,"x",#20118) +#20120=* +exprs(#20120,78,#20115,0,"x") +hasLocation(#20120,#20035) +exprContainers(#20120,#20115) +literals("x","x",#20120) +decl(#20120,#20119) +#20121=@"var;{y};{#20118}" +variables(#20121,"y",#20118) +#20122=* +exprs(#20122,78,#20115,1,"y") +hasLocation(#20122,#20039) +exprContainers(#20122,#20115) +literals("y","y",#20122) +decl(#20122,#20121) +#20123=@"var;{arguments};{#20118}" +variables(#20123,"arguments",#20118) +isArgumentsObject(#20123) +#20124=* +stmts(#20124,1,#20115,-2,"{\n return x+y;\n}") +#20125=@"loc,{#10000},1,18,3,1" +locations_default(#20125,#10000,1,18,3,1) +hasLocation(#20124,#20125) +stmtContainers(#20124,#20115) +#20126=* +stmts(#20126,9,#20124,0,"return x+y;") +#20127=@"loc,{#10000},2,5,2,15" +locations_default(#20127,#10000,2,5,2,15) +hasLocation(#20126,#20127) +stmtContainers(#20126,#20115) #20128=* -tokeninfo(#20128,8,#20001,21,"=") -#20129=@"loc,{#10000},7,3,7,3" -locations_default(#20129,#10000,7,3,7,3) +exprs(#20128,34,#20126,0,"x+y") +#20129=@"loc,{#10000},2,12,2,14" +locations_default(#20129,#10000,2,12,2,14) hasLocation(#20128,#20129) +enclosingStmt(#20128,#20126) +exprContainers(#20128,#20115) #20130=* -tokeninfo(#20130,7,#20001,22,"function") -#20131=@"loc,{#10000},7,5,7,12" -locations_default(#20131,#10000,7,5,7,12) -hasLocation(#20130,#20131) +exprs(#20130,79,#20128,0,"x") +hasLocation(#20130,#20047) +enclosingStmt(#20130,#20126) +exprContainers(#20130,#20115) +literals("x","x",#20130) +bind(#20130,#20119) +#20131=* +exprs(#20131,79,#20128,1,"y") +hasLocation(#20131,#20051) +enclosingStmt(#20131,#20126) +exprContainers(#20131,#20115) +literals("y","y",#20131) +bind(#20131,#20121) #20132=* -tokeninfo(#20132,8,#20001,23,"(") -#20133=@"loc,{#10000},7,13,7,13" -locations_default(#20133,#10000,7,13,7,13) -hasLocation(#20132,#20133) +stmts(#20132,17,#20001,1,"function h() {}") +hasLocation(#20132,#20011) +stmtContainers(#20132,#20001) +#20133=* +exprs(#20133,78,#20132,-1,"h") +hasLocation(#20133,#20058) +exprContainers(#20133,#20132) +literals("h","h",#20133) +decl(#20133,#20114) #20134=* -tokeninfo(#20134,8,#20001,24,")") -#20135=@"loc,{#10000},7,14,7,14" -locations_default(#20135,#10000,7,14,7,14) -hasLocation(#20134,#20135) +scopes(#20134,1) +scopenodes(#20132,#20134) +scopenesting(#20134,#20000) +#20135=@"var;{arguments};{#20134}" +variables(#20135,"arguments",#20134) +isArgumentsObject(#20135) #20136=* -tokeninfo(#20136,8,#20001,25,"{") -#20137=@"loc,{#10000},7,16,7,16" -locations_default(#20137,#10000,7,16,7,16) +stmts(#20136,1,#20132,-2,"{}") +#20137=@"loc,{#10000},5,14,5,15" +locations_default(#20137,#10000,5,14,5,15) hasLocation(#20136,#20137) +stmtContainers(#20136,#20132) #20138=* -tokeninfo(#20138,7,#20001,26,"return") -#20139=@"loc,{#10000},8,5,8,10" -locations_default(#20139,#10000,8,5,8,10) +stmts(#20138,2,#20001,2,"k = fun ... turn;\n}") +#20139=@"loc,{#10000},7,1,9,1" +locations_default(#20139,#10000,7,1,9,1) hasLocation(#20138,#20139) +stmtContainers(#20138,#20001) #20140=* -tokeninfo(#20140,8,#20001,27,";") -#20141=@"loc,{#10000},8,11,8,11" -locations_default(#20141,#10000,8,11,8,11) -hasLocation(#20140,#20141) -#20142=* -tokeninfo(#20142,8,#20001,28,"}") -hasLocation(#20142,#20087) +exprs(#20140,47,#20138,0,"k = fun ... turn;\n}") +hasLocation(#20140,#20139) +enclosingStmt(#20140,#20138) +exprContainers(#20140,#20001) +#20141=* +exprs(#20141,79,#20140,0,"k") +hasLocation(#20141,#20068) +enclosingStmt(#20141,#20138) +exprContainers(#20141,#20001) +literals("k","k",#20141) +#20142=@"var;{k};{#20000}" +variables(#20142,"k",#20000) +bind(#20141,#20142) #20143=* -tokeninfo(#20143,6,#20001,29,"l") -hasLocation(#20143,#20053) -#20144=* -tokeninfo(#20144,8,#20001,30,"=") -#20145=@"loc,{#10000},11,3,11,3" -locations_default(#20145,#10000,11,3,11,3) -hasLocation(#20144,#20145) -#20146=* -tokeninfo(#20146,7,#20001,31,"function") -#20147=@"loc,{#10000},11,5,11,12" -locations_default(#20147,#10000,11,5,11,12) -hasLocation(#20146,#20147) -#20148=* -tokeninfo(#20148,6,#20001,32,"f") -hasLocation(#20148,#20060) +exprs(#20143,9,#20140,1,"functio ... turn;\n}") +#20144=@"loc,{#10000},7,5,9,1" +locations_default(#20144,#10000,7,5,9,1) +hasLocation(#20143,#20144) +enclosingStmt(#20143,#20138) +exprContainers(#20143,#20001) +#20145=* +scopes(#20145,1) +scopenodes(#20143,#20145) +scopenesting(#20145,#20000) +#20146=@"var;{arguments};{#20145}" +variables(#20146,"arguments",#20145) +isArgumentsObject(#20146) +#20147=* +stmts(#20147,1,#20143,-2,"{\n return;\n}") +#20148=@"loc,{#10000},7,16,9,1" +locations_default(#20148,#10000,7,16,9,1) +hasLocation(#20147,#20148) +stmtContainers(#20147,#20143) #20149=* -tokeninfo(#20149,8,#20001,33,"(") -#20150=@"loc,{#10000},11,15,11,15" -locations_default(#20150,#10000,11,15,11,15) +stmts(#20149,9,#20147,0,"return;") +#20150=@"loc,{#10000},8,5,8,11" +locations_default(#20150,#10000,8,5,8,11) hasLocation(#20149,#20150) +stmtContainers(#20149,#20143) #20151=* -tokeninfo(#20151,8,#20001,34,")") -#20152=@"loc,{#10000},11,16,11,16" -locations_default(#20152,#10000,11,16,11,16) -hasLocation(#20151,#20152) +stmts(#20151,2,#20001,3,"l = function f() {}") +hasLocation(#20151,#20023) +stmtContainers(#20151,#20001) +#20152=* +exprs(#20152,47,#20151,0,"l = function f() {}") +hasLocation(#20152,#20023) +enclosingStmt(#20152,#20151) +exprContainers(#20152,#20001) #20153=* -tokeninfo(#20153,8,#20001,35,"{") -#20154=@"loc,{#10000},11,18,11,18" -locations_default(#20154,#10000,11,18,11,18) -hasLocation(#20153,#20154) +exprs(#20153,79,#20152,0,"l") +hasLocation(#20153,#20085) +enclosingStmt(#20153,#20151) +exprContainers(#20153,#20001) +literals("l","l",#20153) +#20154=@"var;{l};{#20000}" +variables(#20154,"l",#20000) +bind(#20153,#20154) #20155=* -tokeninfo(#20155,8,#20001,36,"}") -#20156=@"loc,{#10000},11,19,11,19" -locations_default(#20156,#10000,11,19,11,19) +exprs(#20155,9,#20152,1,"function f() {}") +#20156=@"loc,{#10000},11,5,11,19" +locations_default(#20156,#10000,11,5,11,19) hasLocation(#20155,#20156) +enclosingStmt(#20155,#20151) +exprContainers(#20155,#20001) #20157=* -tokeninfo(#20157,7,#20001,37,"function") -#20158=@"loc,{#10000},13,1,13,8" -locations_default(#20158,#10000,13,1,13,8) -hasLocation(#20157,#20158) +scopes(#20157,1) +scopenodes(#20155,#20157) +scopenesting(#20157,#20000) +#20158=@"var;{f};{#20157}" +variables(#20158,"f",#20157) #20159=* -tokeninfo(#20159,8,#20001,38,"(") -#20160=@"loc,{#10000},13,9,13,9" -locations_default(#20160,#10000,13,9,13,9) -hasLocation(#20159,#20160) +exprs(#20159,78,#20155,-1,"f") +hasLocation(#20159,#20091) +exprContainers(#20159,#20155) +literals("f","f",#20159) +decl(#20159,#20158) +#20160=@"var;{arguments};{#20157}" +variables(#20160,"arguments",#20157) +isArgumentsObject(#20160) #20161=* -tokeninfo(#20161,8,#20001,39,")") -#20162=@"loc,{#10000},13,10,13,10" -locations_default(#20162,#10000,13,10,13,10) +stmts(#20161,1,#20155,-2,"{}") +#20162=@"loc,{#10000},11,18,11,19" +locations_default(#20162,#10000,11,18,11,19) hasLocation(#20161,#20162) +stmtContainers(#20161,#20155) #20163=* -tokeninfo(#20163,8,#20001,40,"{") -#20164=@"loc,{#10000},13,12,13,12" -locations_default(#20164,#10000,13,12,13,12) -hasLocation(#20163,#20164) +stmts(#20163,2,#20001,4,"function() {}") +hasLocation(#20163,#20027) +stmtContainers(#20163,#20001) +#20164=* +exprs(#20164,9,#20163,0,"function() {}") +hasLocation(#20164,#20027) +enclosingStmt(#20164,#20163) +exprContainers(#20164,#20001) #20165=* -tokeninfo(#20165,8,#20001,41,"}") -#20166=@"loc,{#10000},13,13,13,13" -locations_default(#20166,#10000,13,13,13,13) -hasLocation(#20165,#20166) +scopes(#20165,1) +scopenodes(#20164,#20165) +scopenesting(#20165,#20000) +#20166=@"var;{arguments};{#20165}" +variables(#20166,"arguments",#20165) +isArgumentsObject(#20166) #20167=* -tokeninfo(#20167,0,#20001,42,"") -#20168=@"loc,{#10000},14,1,14,0" -locations_default(#20168,#10000,14,1,14,0) +stmts(#20167,1,#20164,-2,"{}") +#20168=@"loc,{#10000},13,12,13,13" +locations_default(#20168,#10000,13,12,13,13) hasLocation(#20167,#20168) +stmtContainers(#20167,#20164) #20169=* entry_cfg_node(#20169,#20001) #20170=@"loc,{#10000},1,1,1,0" @@ -526,146 +521,146 @@ locations_default(#20170,#10000,1,1,1,0) hasLocation(#20169,#20170) #20171=* exit_cfg_node(#20171,#20001) -hasLocation(#20171,#20168) -successor(#20064,#20066) -successor(#20066,#20171) +hasLocation(#20171,#20111) +successor(#20163,#20164) +successor(#20164,#20171) #20172=* -entry_cfg_node(#20172,#20066) +entry_cfg_node(#20172,#20164) #20173=@"loc,{#10000},13,1,13,0" locations_default(#20173,#10000,13,1,13,0) hasLocation(#20172,#20173) #20174=* -exit_cfg_node(#20174,#20066) +exit_cfg_node(#20174,#20164) #20175=@"loc,{#10000},13,14,13,13" locations_default(#20175,#10000,13,14,13,13) hasLocation(#20174,#20175) -successor(#20069,#20174) -successor(#20172,#20069) -successor(#20049,#20052) -successor(#20055,#20051) +successor(#20167,#20174) +successor(#20172,#20167) +successor(#20151,#20153) +successor(#20155,#20152) #20176=* -entry_cfg_node(#20176,#20055) +entry_cfg_node(#20176,#20155) #20177=@"loc,{#10000},11,5,11,4" locations_default(#20177,#10000,11,5,11,4) hasLocation(#20176,#20177) #20178=* -exit_cfg_node(#20178,#20055) +exit_cfg_node(#20178,#20155) #20179=@"loc,{#10000},11,20,11,19" locations_default(#20179,#10000,11,20,11,19) hasLocation(#20178,#20179) -successor(#20062,#20178) -successor(#20059,#20062) -successor(#20176,#20059) -successor(#20052,#20055) -successor(#20051,#20064) -successor(#20035,#20038) -successor(#20041,#20037) +successor(#20161,#20178) +successor(#20159,#20161) +successor(#20176,#20159) +successor(#20153,#20155) +successor(#20152,#20163) +successor(#20138,#20141) +successor(#20143,#20140) #20180=* -entry_cfg_node(#20180,#20041) +entry_cfg_node(#20180,#20143) #20181=@"loc,{#10000},7,5,7,4" locations_default(#20181,#10000,7,5,7,4) hasLocation(#20180,#20181) #20182=* -exit_cfg_node(#20182,#20041) +exit_cfg_node(#20182,#20143) #20183=@"loc,{#10000},9,2,9,1" locations_default(#20183,#10000,9,2,9,1) hasLocation(#20182,#20183) -successor(#20045,#20047) -successor(#20047,#20182) -successor(#20180,#20045) -successor(#20038,#20041) -successor(#20037,#20049) -successor(#20027,#20035) +successor(#20147,#20149) +successor(#20149,#20182) +successor(#20180,#20147) +successor(#20141,#20143) +successor(#20140,#20151) +successor(#20132,#20138) #20184=* -entry_cfg_node(#20184,#20027) +entry_cfg_node(#20184,#20132) #20185=@"loc,{#10000},5,1,5,0" locations_default(#20185,#10000,5,1,5,0) hasLocation(#20184,#20185) #20186=* -exit_cfg_node(#20186,#20027) +exit_cfg_node(#20186,#20132) #20187=@"loc,{#10000},5,16,5,15" locations_default(#20187,#10000,5,16,5,15) hasLocation(#20186,#20187) -successor(#20033,#20186) -successor(#20184,#20033) -successor(#20005,#20027) +successor(#20136,#20186) +successor(#20184,#20136) +successor(#20115,#20132) #20188=* -entry_cfg_node(#20188,#20005) +entry_cfg_node(#20188,#20115) hasLocation(#20188,#20170) #20189=* -exit_cfg_node(#20189,#20005) +exit_cfg_node(#20189,#20115) #20190=@"loc,{#10000},3,2,3,1" locations_default(#20190,#10000,3,2,3,1) hasLocation(#20189,#20190) -successor(#20017,#20023) -successor(#20025,#20021) -successor(#20023,#20025) -successor(#20021,#20019) -successor(#20019,#20189) -successor(#20014,#20017) -successor(#20011,#20014) -successor(#20188,#20011) -successor(#20029,#20005) -successor(#20007,#20029) -successor(#20169,#20007) +successor(#20124,#20130) +successor(#20131,#20128) +successor(#20130,#20131) +successor(#20128,#20126) +successor(#20126,#20189) +successor(#20122,#20124) +successor(#20120,#20122) +successor(#20188,#20120) +successor(#20133,#20115) +successor(#20117,#20133) +successor(#20169,#20117) #20191=* jsParseErrors(#20191,#20001,"Error: Missing function name","function() {} ") -hasLocation(#20191,#20160) +hasLocation(#20191,#20103) #20192=* lines(#20192,#20001,"function g(x, y) {"," ") -hasLocation(#20192,#20072) +hasLocation(#20192,#20003) #20193=* lines(#20193,#20001," return x+y;"," ") -hasLocation(#20193,#20074) +hasLocation(#20193,#20005) indentation(#10000,2," ",4) #20194=* lines(#20194,#20001,"}"," ") -hasLocation(#20194,#20076) +hasLocation(#20194,#20007) #20195=* lines(#20195,#20001,""," ") -hasLocation(#20195,#20078) +hasLocation(#20195,#20009) #20196=* lines(#20196,#20001,"function h() {}"," ") -hasLocation(#20196,#20028) +hasLocation(#20196,#20011) #20197=* lines(#20197,#20001,""," ") -hasLocation(#20197,#20081) +hasLocation(#20197,#20013) #20198=* lines(#20198,#20001,"k = function() {"," ") -hasLocation(#20198,#20083) +hasLocation(#20198,#20015) #20199=* lines(#20199,#20001," return;"," ") -hasLocation(#20199,#20085) +hasLocation(#20199,#20017) indentation(#10000,8," ",4) #20200=* lines(#20200,#20001,"}"," ") -hasLocation(#20200,#20087) +hasLocation(#20200,#20019) #20201=* lines(#20201,#20001,""," ") -hasLocation(#20201,#20089) +hasLocation(#20201,#20021) #20202=* lines(#20202,#20001,"l = function f() {}"," ") -hasLocation(#20202,#20050) +hasLocation(#20202,#20023) #20203=* lines(#20203,#20001,""," ") -hasLocation(#20203,#20092) +hasLocation(#20203,#20025) #20204=* lines(#20204,#20001,"function() {}"," ") -hasLocation(#20204,#20065) -numlines(#20001,13,9,0) +hasLocation(#20204,#20027) +numlines(#20001,13,0,0) numlines(#10000,13,9,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/stmts/output/trap/loops.js.trap b/javascript/extractor/tests/stmts/output/trap/loops.js.trap index 8bd1f947ba6..b43c7f2d76a 100644 --- a/javascript/extractor/tests/stmts/output/trap/loops.js.trap +++ b/javascript/extractor/tests/stmts/output/trap/loops.js.trap @@ -9,955 +9,955 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,22,0" -locations_default(#20002,#10000,1,1,22,0) -hasLocation(#20001,#20002) -#20003=@"var;{i};{#20000}" -variables(#20003,"i",#20000) -#20004=@"var;{n};{#20000}" -variables(#20004,"n",#20000) -#20005=@"var;{x};{#20000}" -variables(#20005,"x",#20000) -#20006=* -stmts(#20006,12,#20001,0,"while(true)\n ;") -#20007=@"loc,{#10000},1,1,2,5" -locations_default(#20007,#10000,1,1,2,5) -hasLocation(#20006,#20007) -stmtContainers(#20006,#20001) -#20008=* -exprs(#20008,2,#20006,0,"true") -#20009=@"loc,{#10000},1,7,1,10" -locations_default(#20009,#10000,1,7,1,10) -hasLocation(#20008,#20009) -enclosingStmt(#20008,#20006) -exprContainers(#20008,#20001) -literals("true","true",#20008) -#20010=* -stmts(#20010,0,#20006,1,";") -#20011=@"loc,{#10000},2,5,2,5" -locations_default(#20011,#10000,2,5,2,5) -hasLocation(#20010,#20011) -stmtContainers(#20010,#20001) -#20012=* -stmts(#20012,4,#20001,1,"outer: ... inue;\n}") -#20013=@"loc,{#10000},3,1,11,1" -locations_default(#20013,#10000,3,1,11,1) -hasLocation(#20012,#20013) -stmtContainers(#20012,#20001) -#20014=* -exprs(#20014,0,#20012,0,"outer") -#20015=@"loc,{#10000},3,1,3,5" -locations_default(#20015,#10000,3,1,3,5) -hasLocation(#20014,#20015) -enclosingStmt(#20014,#20012) -exprContainers(#20014,#20001) -literals("outer","outer",#20014) -#20016=* -stmts(#20016,14,#20012,1,"for(a; ... inue;\n}") -#20017=@"loc,{#10000},3,8,11,1" -locations_default(#20017,#10000,3,8,11,1) -hasLocation(#20016,#20017) -stmtContainers(#20016,#20001) -#20018=* -exprs(#20018,79,#20016,1,"b") -#20019=@"loc,{#10000},3,15,3,15" -locations_default(#20019,#10000,3,15,3,15) -hasLocation(#20018,#20019) -enclosingStmt(#20018,#20016) -exprContainers(#20018,#20001) -literals("b","b",#20018) -#20020=@"var;{b};{#20000}" -variables(#20020,"b",#20000) -bind(#20018,#20020) -#20021=* -exprs(#20021,79,#20016,2,"c") -#20022=@"loc,{#10000},3,18,3,18" -locations_default(#20022,#10000,3,18,3,18) -hasLocation(#20021,#20022) -enclosingStmt(#20021,#20016) -exprContainers(#20021,#20001) -literals("c","c",#20021) -#20023=@"var;{c};{#20000}" -variables(#20023,"c",#20000) -bind(#20021,#20023) -#20024=* -exprs(#20024,79,#20016,0,"a") -#20025=@"loc,{#10000},3,12,3,12" -locations_default(#20025,#10000,3,12,3,12) -hasLocation(#20024,#20025) -enclosingStmt(#20024,#20016) -exprContainers(#20024,#20001) -literals("a","a",#20024) -#20026=@"var;{a};{#20000}" -variables(#20026,"a",#20000) -bind(#20024,#20026) -#20027=* -stmts(#20027,1,#20016,3,"{\n f ... inue;\n}") -#20028=@"loc,{#10000},3,21,11,1" -locations_default(#20028,#10000,3,21,11,1) -hasLocation(#20027,#20028) -stmtContainers(#20027,#20001) -#20029=* -stmts(#20029,14,#20027,0,"for(;;) ... ntinue;") -#20030=@"loc,{#10000},4,5,10,21" -locations_default(#20030,#10000,4,5,10,21) -hasLocation(#20029,#20030) -stmtContainers(#20029,#20001) -#20031=* -stmts(#20031,3,#20029,3,"if (d)\n ... ntinue;") -#20032=@"loc,{#10000},5,9,10,21" -locations_default(#20032,#10000,5,9,10,21) -hasLocation(#20031,#20032) -stmtContainers(#20031,#20001) -#20033=* -exprs(#20033,79,#20031,0,"d") -#20034=@"loc,{#10000},5,13,5,13" -locations_default(#20034,#10000,5,13,5,13) -hasLocation(#20033,#20034) -enclosingStmt(#20033,#20031) -exprContainers(#20033,#20001) -literals("d","d",#20033) -#20035=@"var;{d};{#20000}" -variables(#20035,"d",#20000) -bind(#20033,#20035) -#20036=* -stmts(#20036,6,#20031,1,"continue outer;") -#20037=@"loc,{#10000},6,13,6,27" -locations_default(#20037,#10000,6,13,6,27) -hasLocation(#20036,#20037) -stmtContainers(#20036,#20001) -#20038=* -exprs(#20038,0,#20036,0,"outer") -#20039=@"loc,{#10000},6,22,6,26" -locations_default(#20039,#10000,6,22,6,26) -hasLocation(#20038,#20039) -enclosingStmt(#20038,#20036) -exprContainers(#20038,#20001) -literals("outer","outer",#20038) -jumpTargets(#20036,#20012) -#20040=* -stmts(#20040,3,#20031,2,"if (e)\n ... ntinue;") -#20041=@"loc,{#10000},7,14,10,21" -locations_default(#20041,#10000,7,14,10,21) -hasLocation(#20040,#20041) -stmtContainers(#20040,#20001) -#20042=* -exprs(#20042,79,#20040,0,"e") -#20043=@"loc,{#10000},7,18,7,18" -locations_default(#20043,#10000,7,18,7,18) -hasLocation(#20042,#20043) -enclosingStmt(#20042,#20040) -exprContainers(#20042,#20001) -literals("e","e",#20042) -#20044=@"var;{e};{#20000}" -variables(#20044,"e",#20000) -bind(#20042,#20044) -#20045=* -stmts(#20045,5,#20040,1,"break outer;") -#20046=@"loc,{#10000},8,13,8,24" -locations_default(#20046,#10000,8,13,8,24) -hasLocation(#20045,#20046) -stmtContainers(#20045,#20001) -#20047=* -exprs(#20047,0,#20045,0,"outer") -#20048=@"loc,{#10000},8,19,8,23" -locations_default(#20048,#10000,8,19,8,23) -hasLocation(#20047,#20048) -enclosingStmt(#20047,#20045) -exprContainers(#20047,#20001) -literals("outer","outer",#20047) -jumpTargets(#20045,#20012) -#20049=* -stmts(#20049,6,#20040,2,"continue;") -#20050=@"loc,{#10000},10,13,10,21" -locations_default(#20050,#10000,10,13,10,21) -hasLocation(#20049,#20050) -stmtContainers(#20049,#20001) -jumpTargets(#20049,#20029) -#20051=* -stmts(#20051,13,#20001,2,"do {\n ... ile(a);") -#20052=@"loc,{#10000},13,1,15,11" -locations_default(#20052,#10000,13,1,15,11) -hasLocation(#20051,#20052) -stmtContainers(#20051,#20001) -#20053=* -exprs(#20053,79,#20051,1,"a") -#20054=@"loc,{#10000},15,9,15,9" -locations_default(#20054,#10000,15,9,15,9) -hasLocation(#20053,#20054) -enclosingStmt(#20053,#20051) -exprContainers(#20053,#20001) -literals("a","a",#20053) -bind(#20053,#20026) -#20055=* -stmts(#20055,1,#20051,0,"{\n ;\n}") -#20056=@"loc,{#10000},13,4,15,1" -locations_default(#20056,#10000,13,4,15,1) -hasLocation(#20055,#20056) -stmtContainers(#20055,#20001) -#20057=* -stmts(#20057,0,#20055,0,";") -#20058=@"loc,{#10000},14,5,14,5" -locations_default(#20058,#10000,14,5,14,5) -hasLocation(#20057,#20058) -stmtContainers(#20057,#20001) -#20059=* -stmts(#20059,14,#20001,3,"for (va ... ; ++i);") -#20060=@"loc,{#10000},17,1,17,29" -locations_default(#20060,#10000,17,1,17,29) -hasLocation(#20059,#20060) -stmtContainers(#20059,#20001) -#20061=* -exprs(#20061,27,#20059,1,"i any") -#10004=@"type;3" -types(#10004,6,"Interface") -#10005=@"symbol;2" -type_symbol(#10004,#10005) -#10006=@"type;4" -types(#10006,6,"Enum") -#10007=@"symbol;4" -type_symbol(#10006,#10007) -#10008=@"type;5" -types(#10008,1,"string") -#10009=@"type;6" -types(#10009,2,"number") -#10010=@"type;7" -types(#10010,7,"(radix?: number) => string") -#10011=@"type;8" -types(#10011,7,"(fractionDigits?: number) => string") -#10012=@"type;9" -types(#10012,7,"(precision?: number) => string") -#10013=@"type;10" -types(#10013,7,"() => number") -#10014=@"type;11" -types(#10014,6,"string[]") -#10015=@"symbol;5" -type_symbol(#10014,#10015) -type_child(#10008,#10014,0) -#10016=@"type;12" -types(#10016,3,"string | string[]") -type_child(#10008,#10016,0) -type_child(#10014,#10016,1) -#10017=@"type;13" -types(#10017,6,"NumberFormatOptions") -#10018=@"symbol;7" -type_symbol(#10017,#10018) -#10019=@"type;14" -types(#10019,7,"(locales?: string | string[], options?: NumberF...") -#10020=@"type;15" -types(#10020,5,"false") -#10021=@"type;16" -types(#10021,4,"true") -#10022=@"type;17" -types(#10022,3,"boolean") -type_child(#10020,#10022,0) -type_child(#10021,#10022,1) -#10023=@"type;18" -types(#10023,7,"() => boolean") -#10024=@"type;19" -types(#10024,7,"() => string") -#10025=@"type;20" -types(#10025,3,"(() => string) | (() => string)") -type_child(#10024,#10025,0) -type_child(#10024,#10025,1) -#10026=@"type;21" -types(#10026,7,"(...strings: string[]) => string") -#10027=@"type;22" -types(#10027,6,"ConcatArray") -#10028=@"symbol;8" -type_symbol(#10027,#10028) -type_child(#10008,#10027,0) -#10029=@"type;23" -types(#10029,6,"ConcatArray[]") -type_symbol(#10029,#10015) -type_child(#10027,#10029,0) -#10030=@"type;24" -types(#10030,3,"string | ConcatArray") -type_child(#10008,#10030,0) -type_child(#10027,#10030,1) -#10031=@"type;25" -types(#10031,6,"(string | ConcatArray)[]") -type_symbol(#10031,#10015) -type_child(#10030,#10031,0) -#10032=@"type;26" -types(#10032,7,"{ (...items: ConcatArray[]): string[]; ...") -#10033=@"type;27" -types(#10033,3,"((...strings: string[]) => string) | { (...item...") -type_child(#10026,#10033,0) -type_child(#10032,#10033,1) -#10034=@"type;28" -types(#10034,7,"(searchString: string, position?: number) => nu...") -#10035=@"type;29" -types(#10035,7,"(searchElement: string, fromIndex?: number) => ...") -#10036=@"type;30" -types(#10036,3,"((searchString: string, position?: number) => n...") -type_child(#10034,#10036,0) -type_child(#10035,#10036,1) -#10037=@"type;31" -types(#10037,7,"(start?: number, end?: number) => string") -#10038=@"type;32" -types(#10038,7,"(start?: number, end?: number) => string[]") -#10039=@"type;33" -types(#10039,3,"((start?: number, end?: number) => string) | ((...") -type_child(#10037,#10039,0) -type_child(#10038,#10039,1) -#10040=@"type;34" -types(#10040,6,"Object") -#10041=@"symbol;9" -type_symbol(#10040,#10041) -#10042=@"type;35" -types(#10042,7,"() => Object") -#10043=@"type;36" -types(#10043,3,"(() => string) | (() => Object)") -type_child(#10024,#10043,0) -type_child(#10042,#10043,1) -#10044=@"type;37" -types(#10044,6,"Function") -#10045=@"symbol;10" -type_symbol(#10044,#10045) -#10046=@"type;38" -types(#10046,14,"symbol") -#10047=@"type;39" -types(#10047,3,"string | number | symbol") -type_child(#10008,#10047,0) -type_child(#10009,#10047,1) -type_child(#10046,#10047,2) -#10048=@"type;40" -types(#10048,7,"(v: string | number | symbol) => boolean") -#10049=@"type;41" -types(#10049,7,"(v: Object) => boolean") -#10050=@"type;42" -types(#10050,3,"((radix?: number) => string) | (() => string) |...") -type_child(#10010,#10050,0) -type_child(#10024,#10050,1) -type_child(#10024,#10050,2) -#10051=@"type;43" -types(#10051,7,"() => symbol") -#10052=@"type;44" -types(#10052,3,"(() => number) | (() => string) | (() => symbol)") -type_child(#10013,#10052,0) -type_child(#10024,#10052,1) -type_child(#10051,#10052,2) -#10053=@"type;45" -types(#10053,7,"(this: Function, thisArg: any, argArray?: any) ...") -#10054=@"type;46" -types(#10054,6,"any[]") -type_symbol(#10054,#10015) -type_child(#10002,#10054,0) -#10055=@"type;47" -types(#10055,7,"(this: Function, thisArg: any, ...argArray: any...") -#10056=@"type;48" -types(#10056,8,"T") -#10057=@"symbol;11" -type_symbol(#10056,#10057) -#10058=@"type;49" -types(#10058,6,"T[]") -type_symbol(#10058,#10015) -type_child(#10056,#10058,0) -#10059=@"type;50" -types(#10059,8,"T") -#10060=@"symbol;12" -type_symbol(#10059,#10060) -#10061=@"type;51" -types(#10061,6,"ConcatArray") -type_symbol(#10061,#10028) -type_child(#10059,#10061,0) -#10062=@"type;52" -types(#10062,7,"(...items: any[]) => number") -#10063=@"type;53" -types(#10063,6,"ConcatArray") -type_symbol(#10063,#10028) -type_child(#10002,#10063,0) -#10064=@"type;54" -types(#10064,6,"ConcatArray[]") -type_symbol(#10064,#10015) -type_child(#10063,#10064,0) -#10065=@"type;55" -types(#10065,7,"{ (...items: ConcatArray[]): any[]; (...it...") -#10066=@"type;56" -types(#10066,7,"(separator?: string) => string") -#10067=@"type;57" -types(#10067,7,"() => any[]") -#10068=@"type;58" -types(#10068,7,"(start?: number, end?: number) => any[]") -#10069=@"type;59" -types(#10069,7,"(a: any, b: any) => number") -#10070=@"type;60" -types(#10070,7,"(compareFn?: (a: any, b: any) => number) => any[]") -#10071=@"type;61" -types(#10071,7,"{ (start: number, deleteCount?: number): any[];...") -#10072=@"type;62" -types(#10072,7,"(searchElement: any, fromIndex?: number) => number") -#10073=@"type;63" -types(#10073,7,"(value: any, index: number, array: any[]) => bo...") -#10074=@"type;64" -types(#10074,7,"(callbackfn: (value: any, index: number, array:...") -#10075=@"type;65" -types(#10075,10,"void") -#10076=@"type;66" -types(#10076,7,"(value: any, index: number, array: any[]) => void") -#10077=@"type;67" -types(#10077,7,"(callbackfn: (value: any, index: number, array:...") -#10078=@"type;68" -types(#10078,19,"U") -#10079=@"type;69" -types(#10079,6,"U[]") -type_symbol(#10079,#10015) -type_child(#10078,#10079,0) -#10080=@"type;70" -types(#10080,7,"(value: any, index: number, array: any[]) => U") -#10081=@"type;71" -types(#10081,7,"(callbackfn: (value: any, index: number, arr...") -#10082=@"type;72" -types(#10082,19,"S") -#10083=@"type;73" -types(#10083,6,"S[]") -type_symbol(#10083,#10015) -type_child(#10082,#10083,0) -#10084=@"type;74" -types(#10084,7,"(value: any, index: number, array: any[]) => any") -#10085=@"type;75" -types(#10085,7,"{ (callbackfn: (value: any, inde...") -#10086=@"type;76" -types(#10086,7,"(previousValue: any, currentValue: any, current...") -#10087=@"type;77" -types(#10087,7,"(previousValue: U, currentValue: any, currentIn...") -#10088=@"type;78" -types(#10088,7,"{ (callbackfn: (previousValue: any, currentValu...") -#10089=@"type;79" -types(#10089,6,"T[]") -type_symbol(#10089,#10015) -type_child(#10059,#10089,0) -#10090=@"type;80" -types(#10090,7,"(start?: number, end?: number) => T[]") -#10091=@"type;81" -types(#10091,7,"() => T") -#10092=@"type;82" -types(#10092,7,"(...items: T[]) => number") -#10093=@"type;83" -types(#10093,6,"ConcatArray") -type_symbol(#10093,#10028) -type_child(#10056,#10093,0) -#10094=@"type;84" -types(#10094,6,"ConcatArray[]") -type_symbol(#10094,#10015) -type_child(#10093,#10094,0) -#10095=@"type;85" -types(#10095,3,"T | ConcatArray") -type_child(#10056,#10095,0) -type_child(#10093,#10095,1) -#10096=@"type;86" -types(#10096,6,"(T | ConcatArray)[]") -type_symbol(#10096,#10015) -type_child(#10095,#10096,0) -#10097=@"type;87" -types(#10097,7,"{ (...items: ConcatArray[]): T[]; (...items:...") -#10098=@"type;88" -types(#10098,7,"() => T[]") -#10099=@"type;89" -types(#10099,7,"(start?: number, end?: number) => T[]") -#10100=@"type;90" -types(#10100,7,"(a: T, b: T) => number") -#10101=@"type;91" -types(#10101,7,"(compareFn?: (a: T, b: T) => number) => T[]") -#10102=@"type;92" -types(#10102,7,"{ (start: number, deleteCount?: number): T[]; (...") -#10103=@"type;93" -types(#10103,7,"(searchElement: T, fromIndex?: number) => number") -#10104=@"type;94" -types(#10104,7,"(value: T, index: number, array: T[]) => boolean") -#10105=@"type;95" -types(#10105,7,"(callbackfn: (value: T, index: number, array: T...") -#10106=@"type;96" -types(#10106,7,"(value: T, index: number, array: T[]) => void") -#10107=@"type;97" -types(#10107,7,"(callbackfn: (value: T, index: number, array: T...") -#10108=@"type;98" -types(#10108,7,"(value: T, index: number, array: T[]) => U") -#10109=@"type;99" -types(#10109,7,"(callbackfn: (value: T, index: number, array...") -#10110=@"type;100" -types(#10110,7,"(value: T, index: number, array: T[]) => any") -#10111=@"type;101" -types(#10111,7,"{ (callbackfn: (value: T, index: n...") -#10112=@"type;102" -types(#10112,7,"(previousValue: T, currentValue: T, currentInde...") -#10113=@"type;103" -types(#10113,7,"(previousValue: U, currentValue: T, currentInde...") -#10114=@"type;104" -types(#10114,7,"{ (callbackfn: (previousValue: T, currentValue:...") -#10115=@"type;105" -types(#10115,7,"() => string | ConcatArray") -#10116=@"type;106" -types(#10116,7,"(...items: (string | ConcatArray)[]) =>...") -#10117=@"type;107" -types(#10117,6,"ConcatArray>") -type_symbol(#10117,#10028) -type_child(#10030,#10117,0) -#10118=@"type;108" -types(#10118,6,"ConcatArray>[]") -type_symbol(#10118,#10015) -type_child(#10117,#10118,0) -#10119=@"type;109" -types(#10119,3,"string | ConcatArray | ConcatArray | ConcatArray (string | ConcatArray)[]") -#10123=@"type;113" -types(#10123,7,"(start?: number, end?: number) => (string | Con...") -#10124=@"type;114" -types(#10124,7,"(a: string | ConcatArray, b: string | C...") -#10125=@"type;115" -types(#10125,7,"(compareFn?: (a: string | ConcatArray, ...") -#10126=@"type;116" -types(#10126,7,"{ (start: number, deleteCount?: number): (strin...") -#10127=@"type;117" -types(#10127,7,"(searchElement: string | ConcatArray, f...") -#10128=@"type;118" -types(#10128,7,"(value: string | ConcatArray, index: nu...") -#10129=@"type;119" -types(#10129,7,"(callbackfn: (value: string | ConcatArray, index: nu...") -#10131=@"type;121" -types(#10131,7,"(callbackfn: (value: string | ConcatArray, index: nu...") -#10133=@"type;123" -types(#10133,7,"(callbackfn: (value: string | ConcatArray, index: nu...") -#10135=@"type;125" -types(#10135,7,"{ >(call...") -#10136=@"type;126" -types(#10136,7,"(previousValue: string | ConcatArray, c...") -#10137=@"type;127" -types(#10137,7,"(previousValue: U, currentValue: string | Conca...") -#10138=@"type;128" -types(#10138,7,"{ (callbackfn: (previousValue: string | ConcatA...") -#10139=@"type;129" -types(#10139,3,"((start?: number, end?: number) => string) | ((...") -type_child(#10037,#10139,0) -type_child(#10038,#10139,1) -type_child(#10123,#10139,2) -#10140=@"type;130" -types(#10140,3,"string | (string | ConcatArray)[]") -type_child(#10008,#10140,0) -type_child(#10031,#10140,1) -#10141=@"type;131" -types(#10141,3,"((...strings: string[]) => string) | { (...item...") -type_child(#10026,#10141,0) -type_child(#10121,#10141,1) -#10142=@"type;132" -types(#10142,3,"((searchString: string, position?: number) => n...") -type_child(#10034,#10142,0) -type_child(#10127,#10142,1) -#10143=@"type;133" -types(#10143,3,"((start?: number, end?: number) => string) | ((...") -type_child(#10037,#10143,0) -type_child(#10123,#10143,1) -#10144=@"type;134" -types(#10144,7,"() => ConcatArray") -#10145=@"type;135" -types(#10145,7,"(...items: ConcatArray[]) => number") -#10146=@"type;136" -types(#10146,6,"ConcatArray>") -type_symbol(#10146,#10028) -type_child(#10027,#10146,0) -#10147=@"type;137" -types(#10147,6,"ConcatArray>[]") -type_symbol(#10147,#10015) -type_child(#10146,#10147,0) -#10148=@"type;138" -types(#10148,3,"ConcatArray | ConcatArray | ConcatArray>[]...") -#10151=@"type;141" -types(#10151,7,"() => ConcatArray[]") -#10152=@"type;142" -types(#10152,7,"(start?: number, end?: number) => ConcatArray, b: ConcatArray...") -#10154=@"type;144" -types(#10154,7,"(compareFn?: (a: ConcatArray, b: Concat...") -#10155=@"type;145" -types(#10155,7,"{ (start: number, deleteCount?: number): Concat...") -#10156=@"type;146" -types(#10156,7,"(searchElement: ConcatArray, fromIndex?...") -#10157=@"type;147" -types(#10157,7,"(value: ConcatArray, index: number, arr...") -#10158=@"type;148" -types(#10158,7,"(callbackfn: (value: ConcatArray, index...") -#10159=@"type;149" -types(#10159,7,"(value: ConcatArray, index: number, arr...") -#10160=@"type;150" -types(#10160,7,"(callbackfn: (value: ConcatArray, index...") -#10161=@"type;151" -types(#10161,7,"(value: ConcatArray, index: number, arr...") -#10162=@"type;152" -types(#10162,7,"(callbackfn: (value: ConcatArray, in...") -#10163=@"type;153" -types(#10163,7,"(value: ConcatArray, index: number, arr...") -#10164=@"type;154" -types(#10164,7,"{ >(callbackfn: (...") -#10165=@"type;155" -types(#10165,7,"(previousValue: ConcatArray, currentVal...") -#10166=@"type;156" -types(#10166,7,"(previousValue: U, currentValue: ConcatArray string) | ((separator?...") -type_child(#10066,#10168,0) -type_child(#10066,#10168,1) -#10169=@"type;159" -types(#10169,3,"((start?: number, end?: number) => string[]) | ...") -type_child(#10038,#10169,0) -type_child(#10152,#10169,1) -#10170=@"type;160" -types(#10170,3,"string[] | ConcatArray[]") -type_child(#10014,#10170,0) -type_child(#10029,#10170,1) -#10171=@"type;161" -types(#10171,3,"(() => string) | (() => ConcatArray)") -type_child(#10024,#10171,0) -type_child(#10144,#10171,1) -#10172=@"type;162" -types(#10172,7,"(...items: string[]) => number") -#10173=@"type;163" -types(#10173,3,"((...items: ConcatArray[]) => number) |...") -type_child(#10145,#10173,0) -type_child(#10172,#10173,1) -#10174=@"type;164" -types(#10174,3,"{ (...items: ConcatArray[]): string[]; ...") -type_child(#10032,#10174,0) -type_child(#10150,#10174,1) -#10175=@"type;165" -types(#10175,7,"() => string[]") -#10176=@"type;166" -types(#10176,3,"(() => ConcatArray[]) | (() => string[])") -type_child(#10151,#10176,0) -type_child(#10175,#10176,1) -#10177=@"type;167" -types(#10177,3,"(() => ConcatArray) | (() => string)") -type_child(#10144,#10177,0) -type_child(#10024,#10177,1) -#10178=@"type;168" -types(#10178,7,"(a: string, b: string) => number") -#10179=@"type;169" -types(#10179,7,"(compareFn?: (a: string, b: string) => number) ...") -#10180=@"type;170" -types(#10180,3,"((compareFn?: (a: ConcatArray, b: Conca...") -type_child(#10154,#10180,0) -type_child(#10179,#10180,1) -#10181=@"type;171" -types(#10181,7,"{ (start: number, deleteCount?: number): string...") -#10182=@"type;172" -types(#10182,3,"{ (start: number, deleteCount?: number): Concat...") -type_child(#10155,#10182,0) -type_child(#10181,#10182,1) -#10183=@"type;173" -types(#10183,3,"((searchElement: string, fromIndex?: number) =>...") -type_child(#10035,#10183,0) -type_child(#10156,#10183,1) -#10184=@"type;174" -types(#10184,7,"(value: string, index: number, array: string[])...") -#10185=@"type;175" -types(#10185,7,"(callbackfn: (value: string, index: number, arr...") -#10186=@"type;176" -types(#10186,3,"((callbackfn: (value: ConcatArray, inde...") -type_child(#10158,#10186,0) -type_child(#10185,#10186,1) -#10187=@"type;177" -types(#10187,7,"(value: string, index: number, array: string[])...") -#10188=@"type;178" -types(#10188,7,"(callbackfn: (value: string, index: number, arr...") -#10189=@"type;179" -types(#10189,3,"((callbackfn: (value: ConcatArray, inde...") -type_child(#10160,#10189,0) -type_child(#10188,#10189,1) -#10190=@"type;180" -types(#10190,7,"(value: string, index: number, array: string[])...") -#10191=@"type;181" -types(#10191,7,"(callbackfn: (value: string, index: number, ...") -#10192=@"type;182" -types(#10192,3,"((callbackfn: (value: ConcatArray, i...") -type_child(#10162,#10192,0) -type_child(#10191,#10192,1) -#10193=@"type;183" -types(#10193,7,"(value: string, index: number, array: string[])...") -#10194=@"type;184" -types(#10194,7,"{ (callbackfn: (value: string...") -#10195=@"type;185" -types(#10195,3,"{ >(callbackfn: (...") -type_child(#10164,#10195,0) -type_child(#10194,#10195,1) -#10196=@"type;186" -types(#10196,7,"(previousValue: string, currentValue: string, c...") -#10197=@"type;187" -types(#10197,7,"(previousValue: U, currentValue: string, curren...") -#10198=@"type;188" -types(#10198,7,"{ (callbackfn: (previousValue: string, currentV...") -#10199=@"type;189" -types(#10199,3,"{ (callbackfn: (previousValue: ConcatArray string") -#10201=@"type;191" -types(#10201,7,"(index: number) => number") -#10202=@"type;192" -types(#10202,6,"CollatorOptions") -#10203=@"symbol;13" -type_symbol(#10202,#10203) -#10204=@"type;193" -types(#10204,7,"{ (that: string): number; (that: string, locale...") -#10205=@"type;194" -types(#10205,6,"RegExpMatchArray") -#10206=@"symbol;14" -type_symbol(#10205,#10206) -#10207=@"type;195" -types(#10207,6,"RegExp") -#10208=@"symbol;15" -type_symbol(#10207,#10208) -#10209=@"type;196" -types(#10209,3,"string | RegExp") -type_child(#10008,#10209,0) -type_child(#10207,#10209,1) -#10210=@"type;197" -types(#10210,7,"(regexp: string | RegExp) => RegExpMatchArray") -#10211=@"type;198" -types(#10211,7,"(substring: string, ...args: any[]) => string") -#10212=@"type;199" -types(#10212,7,"{ (searchValue: string | RegExp, replaceValue: ...") -#10213=@"type;200" -types(#10213,7,"(regexp: string | RegExp) => number") -#10214=@"type;201" -types(#10214,7,"(separator: string | RegExp, limit?: number) =>...") -#10215=@"type;202" -types(#10215,7,"(from: number, length?: number) => string") -#10216=@"type;203" -types(#10216,6,"RegExpExecArray") -#10217=@"symbol;16" -type_symbol(#10216,#10217) -#10218=@"type;204" -types(#10218,7,"(string: string) => RegExpExecArray") -#10219=@"type;205" -types(#10219,7,"(string: string) => boolean") -#10220=@"type;206" -types(#10220,7,"() => RegExp") -#10221=@"type;207" -types(#10221,7,"(compareFn?: (a: string, b: string) => number) ...") -#10222=@"type;208" -types(#10222,7,"() => S") -#10223=@"type;209" -types(#10223,7,"(...items: S[]) => number") -#10224=@"type;210" -types(#10224,6,"ConcatArray") -type_symbol(#10224,#10028) -type_child(#10082,#10224,0) -#10225=@"type;211" -types(#10225,6,"ConcatArray[]") -type_symbol(#10225,#10015) -type_child(#10224,#10225,0) -#10226=@"type;212" -types(#10226,3,"S | ConcatArray") -type_child(#10082,#10226,0) -type_child(#10224,#10226,1) -#10227=@"type;213" -types(#10227,6,"(S | ConcatArray)[]") -type_symbol(#10227,#10015) -type_child(#10226,#10227,0) -#10228=@"type;214" -types(#10228,7,"{ (...items: ConcatArray[]): S[]; (...items:...") -#10229=@"type;215" -types(#10229,7,"() => S[]") -#10230=@"type;216" -types(#10230,7,"(start?: number, end?: number) => S[]") -#10231=@"type;217" -types(#10231,7,"(a: S, b: S) => number") -#10232=@"type;218" -types(#10232,7,"(compareFn?: (a: S, b: S) => number) => S[]") -#10233=@"type;219" -types(#10233,7,"{ (start: number, deleteCount?: number): S[]; (...") -#10234=@"type;220" -types(#10234,7,"(searchElement: S, fromIndex?: number) => number") -#10235=@"type;221" -types(#10235,7,"(value: S, index: number, array: S[]) => boolean") -#10236=@"type;222" -types(#10236,7,"(callbackfn: (value: S, index: number, array: S...") -#10237=@"type;223" -types(#10237,7,"(value: S, index: number, array: S[]) => void") -#10238=@"type;224" -types(#10238,7,"(callbackfn: (value: S, index: number, array: S...") -#10239=@"type;225" -types(#10239,7,"(value: S, index: number, array: S[]) => U") -#10240=@"type;226" -types(#10240,7,"(callbackfn: (value: S, index: number, array...") -#10241=@"type;227" -types(#10241,7,"(value: S, index: number, array: S[]) => any") -#10242=@"type;228" -types(#10242,7,"{ (callbackfn: (value: S, index: n...") -#10243=@"type;229" -types(#10243,7,"(previousValue: S, currentValue: S, currentInde...") -#10244=@"type;230" -types(#10244,7,"(previousValue: U, currentValue: S, currentInde...") -#10245=@"type;231" -types(#10245,7,"{ (callbackfn: (previousValue: S, currentValue:...") -#10246=@"type;232" -types(#10246,3,"((start?: number, end?: number) => string) | ((...") -type_child(#10037,#10246,0) -type_child(#10230,#10246,1) -#10247=@"type;233" -types(#10247,3,"string | S[]") -type_child(#10008,#10247,0) -type_child(#10083,#10247,1) -#10248=@"type;234" -types(#10248,3,"((...strings: string[]) => string) | { (...item...") -type_child(#10026,#10248,0) -type_child(#10228,#10248,1) -#10249=@"type;235" -types(#10249,3,"((searchString: string, position?: number) => n...") -type_child(#10034,#10249,0) -type_child(#10234,#10249,1) -#10250=@"type;236" -types(#10250,7,"() => U") -#10251=@"type;237" -types(#10251,7,"(...items: U[]) => number") -#10252=@"type;238" -types(#10252,6,"ConcatArray") -type_symbol(#10252,#10028) -type_child(#10078,#10252,0) -#10253=@"type;239" -types(#10253,6,"ConcatArray[]") -type_symbol(#10253,#10015) -type_child(#10252,#10253,0) -#10254=@"type;240" -types(#10254,3,"U | ConcatArray") -type_child(#10078,#10254,0) -type_child(#10252,#10254,1) -#10255=@"type;241" -types(#10255,6,"(U | ConcatArray)[]") -type_symbol(#10255,#10015) -type_child(#10254,#10255,0) -#10256=@"type;242" -types(#10256,7,"{ (...items: ConcatArray[]): U[]; (...items:...") -#10257=@"type;243" -types(#10257,7,"() => U[]") -#10258=@"type;244" -types(#10258,7,"(start?: number, end?: number) => U[]") -#10259=@"type;245" -types(#10259,7,"(a: U, b: U) => number") -#10260=@"type;246" -types(#10260,7,"(compareFn?: (a: U, b: U) => number) => U[]") -#10261=@"type;247" -types(#10261,7,"{ (start: number, deleteCount?: number): U[]; (...") -#10262=@"type;248" -types(#10262,7,"(searchElement: U, fromIndex?: number) => number") -#10263=@"type;249" -types(#10263,7,"(value: U, index: number, array: U[]) => boolean") -#10264=@"type;250" -types(#10264,7,"(callbackfn: (value: U, index: number, array: U...") -#10265=@"type;251" -types(#10265,7,"(value: U, index: number, array: U[]) => void") -#10266=@"type;252" -types(#10266,7,"(callbackfn: (value: U, index: number, array: U...") -#10267=@"type;253" -types(#10267,7,"(value: U, index: number, array: U[]) => U") -#10268=@"type;254" -types(#10268,7,"(callbackfn: (value: U, index: number, array...") -#10269=@"type;255" -types(#10269,7,"(value: U, index: number, array: U[]) => any") -#10270=@"type;256" -types(#10270,7,"{ (callbackfn: (value: U, index: n...") -#10271=@"type;257" -types(#10271,7,"(previousValue: U, currentValue: U, currentInde...") -#10272=@"type;258" -types(#10272,7,"{ (callbackfn: (previousValue: U, currentValue:...") -#10273=@"type;259" -types(#10273,7,"(compareFn?: (a: string, b: string) => number) ...") -#10274=@"type;260" -types(#10274,6,"number[]") -type_symbol(#10274,#10015) -type_child(#10009,#10274,0) -#10275=@"type;261" -types(#10275,7,"(...items: number[]) => number") -#10276=@"type;262" -types(#10276,6,"ConcatArray") -type_symbol(#10276,#10028) -type_child(#10009,#10276,0) -#10277=@"type;263" -types(#10277,6,"ConcatArray[]") -type_symbol(#10277,#10015) -type_child(#10276,#10277,0) -#10278=@"type;264" -types(#10278,3,"number | ConcatArray") -type_child(#10009,#10278,0) -type_child(#10276,#10278,1) -#10279=@"type;265" -types(#10279,6,"(number | ConcatArray)[]") -type_symbol(#10279,#10015) -type_child(#10278,#10279,0) -#10280=@"type;266" -types(#10280,7,"{ (...items: ConcatArray[]): number[]; ...") -#10281=@"type;267" -types(#10281,7,"() => number[]") -#10282=@"type;268" -types(#10282,7,"(start?: number, end?: number) => number[]") -#10283=@"type;269" -types(#10283,7,"(a: number, b: number) => number") -#10284=@"type;270" -types(#10284,7,"(compareFn?: (a: number, b: number) => number) ...") -#10285=@"type;271" -types(#10285,7,"{ (start: number, deleteCount?: number): number...") -#10286=@"type;272" -types(#10286,7,"(searchElement: number, fromIndex?: number) => ...") -#10287=@"type;273" -types(#10287,7,"(value: number, index: number, array: number[])...") -#10288=@"type;274" -types(#10288,7,"(callbackfn: (value: number, index: number, arr...") -#10289=@"type;275" -types(#10289,7,"(value: number, index: number, array: number[])...") -#10290=@"type;276" -types(#10290,7,"(callbackfn: (value: number, index: number, arr...") -#10291=@"type;277" -types(#10291,7,"(value: number, index: number, array: number[])...") -#10292=@"type;278" -types(#10292,7,"(callbackfn: (value: number, index: number, ...") -#10293=@"type;279" -types(#10293,7,"(value: number, index: number, array: number[])...") -#10294=@"type;280" -types(#10294,7,"{ (callbackfn: (value: number...") -#10295=@"type;281" -types(#10295,7,"(previousValue: number, currentValue: number, c...") -#10296=@"type;282" -types(#10296,7,"(previousValue: U, currentValue: number, curren...") -#10297=@"type;283" -types(#10297,7,"{ (callbackfn: (previousValue: number, currentV...") -#10298=@"type;284" -types(#10298,3,"((radix?: number) => string) | (() => string)") -type_child(#10010,#10298,0) -type_child(#10024,#10298,1) -#10299=@"type;285" -types(#10299,3,"(() => number) | (() => Object)") -type_child(#10013,#10299,0) -type_child(#10042,#10299,1) -#10300=@"type;286" -types(#10300,3,"((locales?: string | string[], options?: Number...") -type_child(#10019,#10300,0) -type_child(#10024,#10300,1) -#10301=@"type;287" -types(#10301,7,"() => void") -#10302=@"type;288" -types(#10302,9,"typeof Class") -type_symbol(#10302,#10001) -type_property(#10000,"m",#10003) -type_property(#10006,"toString",#10010) -type_property(#10006,"toFixed",#10011) -type_property(#10006,"toExponential",#10011) -type_property(#10006,"toPrecision",#10012) -type_property(#10006,"valueOf",#10013) -type_property(#10006,"toLocaleString",#10019) -type_property(#10017,"localeMatcher",#10008) -type_property(#10017,"style",#10008) -type_property(#10017,"currency",#10008) -type_property(#10017,"currencyDisplay",#10008) -type_property(#10017,"useGrouping",#10022) -type_property(#10017,"minimumIntegerDigits",#10009) -type_property(#10017,"minimumFractionDigits",#10009) -type_property(#10017,"maximumFractionDigits",#10009) -type_property(#10017,"minimumSignificantDigits",#10009) -type_property(#10017,"maximumSignificantDigits",#10009) -type_property(#10022,"valueOf",#10023) -type_property(#10021,"valueOf",#10023) -type_property(#10020,"valueOf",#10023) -type_property(#10016,"toString",#10025) -type_property(#10016,"concat",#10033) -type_property(#10016,"indexOf",#10036) -type_property(#10016,"lastIndexOf",#10036) -type_property(#10016,"slice",#10039) -type_property(#10016,"length",#10009) -type_property(#10016,"valueOf",#10043) -type_property(#10040,"constructor",#10044) -type_property(#10040,"toString",#10024) -type_property(#10040,"toLocaleString",#10024) -type_property(#10040,"valueOf",#10042) -type_property(#10040,"hasOwnProperty",#10048) -type_property(#10040,"isPrototypeOf",#10049) -type_property(#10040,"propertyIsEnumerable",#10048) -type_property(#10047,"toString",#10050) -type_property(#10047,"valueOf",#10052) -type_property(#10046,"toString",#10024) -type_property(#10046,"valueOf",#10051) -type_property(#10044,"apply",#10053) -type_property(#10044,"call",#10055) -type_property(#10044,"bind",#10055) -type_property(#10044,"toString",#10024) -type_property(#10044,"prototype",#10002) -type_property(#10044,"length",#10009) -type_property(#10044,"arguments",#10002) -type_property(#10044,"caller",#10044) -type_property(#10054,"length",#10009) -type_property(#10054,"toString",#10024) -type_property(#10054,"toLocaleString",#10024) -type_property(#10054,"pop",#10003) -type_property(#10054,"push",#10062) -type_property(#10054,"concat",#10065) -type_property(#10054,"join",#10066) -type_property(#10054,"reverse",#10067) -type_property(#10054,"shift",#10003) -type_property(#10054,"slice",#10068) -type_property(#10054,"sort",#10070) -type_property(#10054,"splice",#10071) -type_property(#10054,"unshift",#10062) -type_property(#10054,"indexOf",#10072) -type_property(#10054,"lastIndexOf",#10072) -type_property(#10054,"every",#10074) -type_property(#10054,"some",#10074) -type_property(#10054,"forEach",#10077) -type_property(#10054,"map",#10081) -type_property(#10054,"filter",#10085) -type_property(#10054,"reduce",#10088) -type_property(#10054,"reduceRight",#10088) -type_property(#10061,"length",#10009) -type_property(#10061,"join",#10066) -type_property(#10061,"slice",#10090) -type_property(#10058,"length",#10009) -type_property(#10058,"toString",#10024) -type_property(#10058,"toLocaleString",#10024) -type_property(#10058,"pop",#10091) -type_property(#10058,"push",#10092) -type_property(#10058,"concat",#10097) -type_property(#10058,"join",#10066) -type_property(#10058,"reverse",#10098) -type_property(#10058,"shift",#10091) -type_property(#10058,"slice",#10099) -type_property(#10058,"sort",#10101) -type_property(#10058,"splice",#10102) -type_property(#10058,"unshift",#10092) -type_property(#10058,"indexOf",#10103) -type_property(#10058,"lastIndexOf",#10103) -type_property(#10058,"every",#10105) -type_property(#10058,"some",#10105) -type_property(#10058,"forEach",#10107) -type_property(#10058,"map",#10109) -type_property(#10058,"filter",#10111) -type_property(#10058,"reduce",#10114) -type_property(#10058,"reduceRight",#10114) -type_property(#10031,"length",#10009) -type_property(#10031,"toString",#10024) -type_property(#10031,"toLocaleString",#10024) -type_property(#10031,"pop",#10115) -type_property(#10031,"push",#10116) -type_property(#10031,"concat",#10121) -type_property(#10031,"join",#10066) -type_property(#10031,"reverse",#10122) -type_property(#10031,"shift",#10115) -type_property(#10031,"slice",#10123) -type_property(#10031,"sort",#10125) -type_property(#10031,"splice",#10126) -type_property(#10031,"unshift",#10116) -type_property(#10031,"indexOf",#10127) -type_property(#10031,"lastIndexOf",#10127) -type_property(#10031,"every",#10129) -type_property(#10031,"some",#10129) -type_property(#10031,"forEach",#10131) -type_property(#10031,"map",#10133) -type_property(#10031,"filter",#10135) -type_property(#10031,"reduce",#10138) -type_property(#10031,"reduceRight",#10138) -type_property(#10119,"toString",#10025) -type_property(#10119,"slice",#10139) -type_property(#10119,"length",#10009) -type_property(#10119,"valueOf",#10043) -type_property(#10140,"toString",#10025) -type_property(#10140,"concat",#10141) -type_property(#10140,"indexOf",#10142) -type_property(#10140,"lastIndexOf",#10142) -type_property(#10140,"slice",#10143) -type_property(#10140,"length",#10009) -type_property(#10140,"valueOf",#10043) -type_property(#10030,"toString",#10025) -type_property(#10030,"slice",#10039) -type_property(#10030,"length",#10009) -type_property(#10030,"valueOf",#10043) -type_property(#10029,"length",#10009) -type_property(#10029,"toString",#10024) -type_property(#10029,"toLocaleString",#10024) -type_property(#10029,"pop",#10144) -type_property(#10029,"push",#10145) -type_property(#10029,"concat",#10150) -type_property(#10029,"join",#10066) -type_property(#10029,"reverse",#10151) -type_property(#10029,"shift",#10144) -type_property(#10029,"slice",#10152) -type_property(#10029,"sort",#10154) -type_property(#10029,"splice",#10155) -type_property(#10029,"unshift",#10145) -type_property(#10029,"indexOf",#10156) -type_property(#10029,"lastIndexOf",#10156) -type_property(#10029,"every",#10158) -type_property(#10029,"some",#10158) -type_property(#10029,"forEach",#10160) -type_property(#10029,"map",#10162) -type_property(#10029,"filter",#10164) -type_property(#10029,"reduce",#10167) -type_property(#10029,"reduceRight",#10167) -type_property(#10148,"length",#10009) -type_property(#10148,"join",#10168) -type_property(#10148,"slice",#10169) -type_property(#10170,"length",#10009) -type_property(#10170,"toString",#10025) -type_property(#10170,"toLocaleString",#10025) -type_property(#10170,"pop",#10171) -type_property(#10170,"push",#10173) -type_property(#10170,"concat",#10174) -type_property(#10170,"join",#10168) -type_property(#10170,"reverse",#10176) -type_property(#10170,"shift",#10177) -type_property(#10170,"slice",#10169) -type_property(#10170,"sort",#10180) -type_property(#10170,"splice",#10182) -type_property(#10170,"unshift",#10173) -type_property(#10170,"indexOf",#10183) -type_property(#10170,"lastIndexOf",#10183) -type_property(#10170,"every",#10186) -type_property(#10170,"some",#10186) -type_property(#10170,"forEach",#10189) -type_property(#10170,"map",#10192) -type_property(#10170,"filter",#10195) -type_property(#10170,"reduce",#10199) -type_property(#10170,"reduceRight",#10199) -type_property(#10027,"length",#10009) -type_property(#10027,"join",#10066) -type_property(#10027,"slice",#10038) -type_property(#10014,"length",#10009) -type_property(#10014,"toString",#10024) -type_property(#10014,"toLocaleString",#10024) -type_property(#10014,"pop",#10024) -type_property(#10014,"push",#10172) -type_property(#10014,"concat",#10032) -type_property(#10014,"join",#10066) -type_property(#10014,"reverse",#10175) -type_property(#10014,"shift",#10024) -type_property(#10014,"slice",#10038) -type_property(#10014,"sort",#10179) -type_property(#10014,"splice",#10181) -type_property(#10014,"unshift",#10172) -type_property(#10014,"indexOf",#10035) -type_property(#10014,"lastIndexOf",#10035) -type_property(#10014,"every",#10185) -type_property(#10014,"some",#10185) -type_property(#10014,"forEach",#10188) -type_property(#10014,"map",#10191) -type_property(#10014,"filter",#10194) -type_property(#10014,"reduce",#10198) -type_property(#10014,"reduceRight",#10198) -type_property(#10009,"toString",#10010) -type_property(#10009,"toFixed",#10011) -type_property(#10009,"toExponential",#10011) -type_property(#10009,"toPrecision",#10012) -type_property(#10009,"valueOf",#10013) -type_property(#10009,"toLocaleString",#10019) -type_property(#10008,"toString",#10024) -type_property(#10008,"charAt",#10200) -type_property(#10008,"charCodeAt",#10201) -type_property(#10008,"concat",#10026) -type_property(#10008,"indexOf",#10034) -type_property(#10008,"lastIndexOf",#10034) -type_property(#10008,"localeCompare",#10204) -type_property(#10008,"match",#10210) -type_property(#10008,"replace",#10212) -type_property(#10008,"search",#10213) -type_property(#10008,"slice",#10037) -type_property(#10008,"split",#10214) -type_property(#10008,"substring",#10037) -type_property(#10008,"toLowerCase",#10024) -type_property(#10008,"toLocaleLowerCase",#10024) -type_property(#10008,"toUpperCase",#10024) -type_property(#10008,"toLocaleUpperCase",#10024) -type_property(#10008,"trim",#10024) -type_property(#10008,"length",#10009) -type_property(#10008,"substr",#10215) -type_property(#10008,"valueOf",#10024) -type_property(#10209,"toString",#10025) -type_property(#10209,"valueOf",#10043) -type_property(#10207,"exec",#10218) -type_property(#10207,"test",#10219) -type_property(#10207,"source",#10008) -type_property(#10207,"global",#10022) -type_property(#10207,"ignoreCase",#10022) -type_property(#10207,"multiline",#10022) -type_property(#10207,"lastIndex",#10009) -type_property(#10207,"compile",#10220) -type_property(#10216,"index",#10009) -type_property(#10216,"input",#10008) -type_property(#10216,"length",#10009) -type_property(#10216,"toString",#10024) -type_property(#10216,"toLocaleString",#10024) -type_property(#10216,"pop",#10024) -type_property(#10216,"push",#10172) -type_property(#10216,"concat",#10032) -type_property(#10216,"join",#10066) -type_property(#10216,"reverse",#10175) -type_property(#10216,"shift",#10024) -type_property(#10216,"slice",#10038) -type_property(#10216,"sort",#10221) -type_property(#10216,"splice",#10181) -type_property(#10216,"unshift",#10172) -type_property(#10216,"indexOf",#10035) -type_property(#10216,"lastIndexOf",#10035) -type_property(#10216,"every",#10185) -type_property(#10216,"some",#10185) -type_property(#10216,"forEach",#10188) -type_property(#10216,"map",#10191) -type_property(#10216,"filter",#10194) -type_property(#10216,"reduce",#10198) -type_property(#10216,"reduceRight",#10198) -type_property(#10083,"length",#10009) -type_property(#10083,"toString",#10024) -type_property(#10083,"toLocaleString",#10024) -type_property(#10083,"pop",#10222) -type_property(#10083,"push",#10223) -type_property(#10083,"concat",#10228) -type_property(#10083,"join",#10066) -type_property(#10083,"reverse",#10229) -type_property(#10083,"shift",#10222) -type_property(#10083,"slice",#10230) -type_property(#10083,"sort",#10232) -type_property(#10083,"splice",#10233) -type_property(#10083,"unshift",#10223) -type_property(#10083,"indexOf",#10234) -type_property(#10083,"lastIndexOf",#10234) -type_property(#10083,"every",#10236) -type_property(#10083,"some",#10236) -type_property(#10083,"forEach",#10238) -type_property(#10083,"map",#10240) -type_property(#10083,"filter",#10242) -type_property(#10083,"reduce",#10245) -type_property(#10083,"reduceRight",#10245) -type_property(#10226,"toString",#10025) -type_property(#10226,"slice",#10246) -type_property(#10226,"length",#10009) -type_property(#10226,"valueOf",#10043) -type_property(#10247,"toString",#10025) -type_property(#10247,"concat",#10248) -type_property(#10247,"indexOf",#10249) -type_property(#10247,"lastIndexOf",#10249) -type_property(#10247,"slice",#10246) -type_property(#10247,"length",#10009) -type_property(#10247,"valueOf",#10043) -type_property(#10079,"length",#10009) -type_property(#10079,"toString",#10024) -type_property(#10079,"toLocaleString",#10024) -type_property(#10079,"pop",#10250) -type_property(#10079,"push",#10251) -type_property(#10079,"concat",#10256) -type_property(#10079,"join",#10066) -type_property(#10079,"reverse",#10257) -type_property(#10079,"shift",#10250) -type_property(#10079,"slice",#10258) -type_property(#10079,"sort",#10260) -type_property(#10079,"splice",#10261) -type_property(#10079,"unshift",#10251) -type_property(#10079,"indexOf",#10262) -type_property(#10079,"lastIndexOf",#10262) -type_property(#10079,"every",#10264) -type_property(#10079,"some",#10264) -type_property(#10079,"forEach",#10266) -type_property(#10079,"map",#10268) -type_property(#10079,"filter",#10270) -type_property(#10079,"reduce",#10272) -type_property(#10079,"reduceRight",#10272) -type_property(#10205,"index",#10009) -type_property(#10205,"input",#10008) -type_property(#10205,"length",#10009) -type_property(#10205,"toString",#10024) -type_property(#10205,"toLocaleString",#10024) -type_property(#10205,"pop",#10024) -type_property(#10205,"push",#10172) -type_property(#10205,"concat",#10032) -type_property(#10205,"join",#10066) -type_property(#10205,"reverse",#10175) -type_property(#10205,"shift",#10024) -type_property(#10205,"slice",#10038) -type_property(#10205,"sort",#10273) -type_property(#10205,"splice",#10181) -type_property(#10205,"unshift",#10172) -type_property(#10205,"indexOf",#10035) -type_property(#10205,"lastIndexOf",#10035) -type_property(#10205,"every",#10185) -type_property(#10205,"some",#10185) -type_property(#10205,"forEach",#10188) -type_property(#10205,"map",#10191) -type_property(#10205,"filter",#10194) -type_property(#10205,"reduce",#10198) -type_property(#10205,"reduceRight",#10198) -type_property(#10202,"usage",#10008) -type_property(#10202,"localeMatcher",#10008) -type_property(#10202,"numeric",#10022) -type_property(#10202,"caseFirst",#10008) -type_property(#10202,"sensitivity",#10008) -type_property(#10202,"ignorePunctuation",#10022) -type_property(#10274,"length",#10009) -type_property(#10274,"toString",#10024) -type_property(#10274,"toLocaleString",#10024) -type_property(#10274,"pop",#10013) -type_property(#10274,"push",#10275) -type_property(#10274,"concat",#10280) -type_property(#10274,"join",#10066) -type_property(#10274,"reverse",#10281) -type_property(#10274,"shift",#10013) -type_property(#10274,"slice",#10282) -type_property(#10274,"sort",#10284) -type_property(#10274,"splice",#10285) -type_property(#10274,"unshift",#10275) -type_property(#10274,"indexOf",#10286) -type_property(#10274,"lastIndexOf",#10286) -type_property(#10274,"every",#10288) -type_property(#10274,"some",#10288) -type_property(#10274,"forEach",#10290) -type_property(#10274,"map",#10292) -type_property(#10274,"filter",#10294) -type_property(#10274,"reduce",#10297) -type_property(#10274,"reduceRight",#10297) -type_property(#10278,"toString",#10298) -type_property(#10278,"valueOf",#10299) -type_property(#10278,"toLocaleString",#10300) -type_property(#10302,"prototype",#10000) -symbols(#10001,0,"Class") -#10303=@"symbol;1" -symbols(#10303,2,"m") -symbol_parent(#10303,#10001) -symbols(#10005,0,"Interface") -#10304=@"symbol;3" -symbols(#10304,0,"Namespace") -symbols(#10007,0,"Enum") -symbols(#10015,0,"Array") -#10305=@"symbol;6" -symbols(#10305,0,"Intl") -symbols(#10018,1,"NumberFormatOptions") -symbol_parent(#10018,#10305) -symbols(#10028,0,"ConcatArray") -symbols(#10041,0,"Object") -symbols(#10045,0,"Function") -symbols(#10057,2,"T") -symbol_parent(#10057,#10015) -symbols(#10060,2,"T") -symbol_parent(#10060,#10028) -symbols(#10203,1,"CollatorOptions") -symbol_parent(#10203,#10305) -symbols(#10206,0,"RegExpMatchArray") -symbols(#10208,0,"RegExp") -symbols(#10217,0,"RegExpExecArray") -#10306=@"symbol;17" -symbols(#10306,0,"fun") -symbol_global(#10001,"Class") -symbol_global(#10005,"Interface") -symbol_global(#10304,"Namespace") -symbol_global(#10007,"Enum") -symbol_global(#10015,"Array") -symbol_global(#10305,"Intl") -symbol_global(#10028,"ConcatArray") -symbol_global(#10041,"Object") -symbol_global(#10045,"Function") -symbol_global(#10206,"RegExpMatchArray") -symbol_global(#10208,"RegExp") -symbol_global(#10217,"RegExpExecArray") -#10307=@"signature;0" -type_contains_signature(#10003,0,0,#10307) -#10308=@"signature;5" -type_contains_signature(#10019,0,0,#10308) -#10309=@"signature;6" -type_contains_signature(#10023,0,0,#10309) -#10310=@"signature;15" -type_contains_signature(#10043,0,0,#10310) -type_contains_signature(#10042,0,0,#10310) -#10311=@"signature;17" -type_contains_signature(#10049,0,0,#10311) -#10312=@"signature;16" -type_contains_signature(#10048,0,0,#10312) -#10313=@"signature;19" -type_contains_signature(#10052,0,0,#10313) -#10314=@"signature;18" -type_contains_signature(#10051,0,0,#10314) -#10315=@"signature;1" -type_contains_signature(#10050,0,0,#10315) -#10316=@"signature;7" -type_contains_signature(#10050,0,1,#10316) -#10317=@"signature;21" -type_contains_signature(#10055,0,0,#10317) -#10318=@"signature;43" -type_contains_signature(#10088,0,0,#10318) -#10319=@"signature;44" -type_contains_signature(#10088,0,1,#10319) -#10320=@"signature;46" -type_contains_signature(#10088,0,2,#10320) -#10321=@"signature;45" -type_contains_signature(#10087,0,0,#10321) -#10322=@"signature;42" -type_contains_signature(#10086,0,0,#10322) -#10323=@"signature;39" -type_contains_signature(#10085,0,0,#10323) -#10324=@"signature;41" -type_contains_signature(#10085,0,1,#10324) -#10325=@"signature;40" -type_contains_signature(#10084,0,0,#10325) -#10326=@"signature;38" -type_contains_signature(#10081,0,0,#10326) -#10327=@"signature;37" -type_contains_signature(#10080,0,0,#10327) -#10328=@"signature;36" -type_contains_signature(#10077,0,0,#10328) -#10329=@"signature;35" -type_contains_signature(#10076,0,0,#10329) -#10330=@"signature;34" -type_contains_signature(#10074,0,0,#10330) -#10331=@"signature;33" -type_contains_signature(#10073,0,0,#10331) -#10332=@"signature;32" -type_contains_signature(#10072,0,0,#10332) -#10333=@"signature;30" -type_contains_signature(#10071,0,0,#10333) -#10334=@"signature;31" -type_contains_signature(#10071,0,1,#10334) -#10335=@"signature;29" -type_contains_signature(#10070,0,0,#10335) -#10336=@"signature;28" -type_contains_signature(#10069,0,0,#10336) -#10337=@"signature;27" -type_contains_signature(#10068,0,0,#10337) -#10338=@"signature;26" -type_contains_signature(#10067,0,0,#10338) -#10339=@"signature;25" -type_contains_signature(#10066,0,0,#10339) -#10340=@"signature;23" -type_contains_signature(#10065,0,0,#10340) -#10341=@"signature;24" -type_contains_signature(#10065,0,1,#10341) -#10342=@"signature;22" -type_contains_signature(#10062,0,0,#10342) -#10343=@"signature;47" -type_contains_signature(#10090,0,0,#10343) -#10344=@"signature;69" -type_contains_signature(#10114,0,0,#10344) -#10345=@"signature;70" -type_contains_signature(#10114,0,1,#10345) -#10346=@"signature;72" -type_contains_signature(#10114,0,2,#10346) -#10347=@"signature;71" -type_contains_signature(#10113,0,0,#10347) -#10348=@"signature;68" -type_contains_signature(#10112,0,0,#10348) -#10349=@"signature;65" -type_contains_signature(#10111,0,0,#10349) -#10350=@"signature;67" -type_contains_signature(#10111,0,1,#10350) -#10351=@"signature;66" -type_contains_signature(#10110,0,0,#10351) -#10352=@"signature;64" -type_contains_signature(#10109,0,0,#10352) -#10353=@"signature;63" -type_contains_signature(#10108,0,0,#10353) -#10354=@"signature;62" -type_contains_signature(#10107,0,0,#10354) -#10355=@"signature;61" -type_contains_signature(#10106,0,0,#10355) -#10356=@"signature;60" -type_contains_signature(#10105,0,0,#10356) -#10357=@"signature;59" -type_contains_signature(#10104,0,0,#10357) -#10358=@"signature;58" -type_contains_signature(#10103,0,0,#10358) -#10359=@"signature;56" -type_contains_signature(#10102,0,0,#10359) -#10360=@"signature;57" -type_contains_signature(#10102,0,1,#10360) -#10361=@"signature;55" -type_contains_signature(#10101,0,0,#10361) -#10362=@"signature;54" -type_contains_signature(#10100,0,0,#10362) -#10363=@"signature;53" -type_contains_signature(#10099,0,0,#10363) -#10364=@"signature;52" -type_contains_signature(#10098,0,0,#10364) -#10365=@"signature;50" -type_contains_signature(#10097,0,0,#10365) -#10366=@"signature;51" -type_contains_signature(#10097,0,1,#10366) -#10367=@"signature;49" -type_contains_signature(#10092,0,0,#10367) -#10368=@"signature;48" -type_contains_signature(#10091,0,0,#10368) -#10369=@"signature;20" -type_contains_signature(#10053,0,0,#10369) -#10370=@"signature;73" -type_contains_signature(#10039,0,0,#10370) -#10371=@"signature;14" -type_contains_signature(#10038,0,0,#10371) -#10372=@"signature;13" -type_contains_signature(#10037,0,0,#10372) -#10373=@"signature;11" -type_contains_signature(#10036,0,0,#10373) -#10374=@"signature;12" -type_contains_signature(#10035,0,0,#10374) -type_contains_signature(#10034,0,0,#10373) -#10375=@"signature;74" -type_contains_signature(#10033,0,0,#10375) -#10376=@"signature;9" -type_contains_signature(#10032,0,0,#10376) -#10377=@"signature;10" -type_contains_signature(#10032,0,1,#10377) -#10378=@"signature;96" -type_contains_signature(#10138,0,0,#10378) -#10379=@"signature;97" -type_contains_signature(#10138,0,1,#10379) -#10380=@"signature;99" -type_contains_signature(#10138,0,2,#10380) -#10381=@"signature;98" -type_contains_signature(#10137,0,0,#10381) -#10382=@"signature;95" -type_contains_signature(#10136,0,0,#10382) -#10383=@"signature;92" -type_contains_signature(#10135,0,0,#10383) -#10384=@"signature;94" -type_contains_signature(#10135,0,1,#10384) -#10385=@"signature;93" -type_contains_signature(#10134,0,0,#10385) -#10386=@"signature;91" -type_contains_signature(#10133,0,0,#10386) -#10387=@"signature;90" -type_contains_signature(#10132,0,0,#10387) -#10388=@"signature;89" -type_contains_signature(#10131,0,0,#10388) -#10389=@"signature;88" -type_contains_signature(#10130,0,0,#10389) -#10390=@"signature;87" -type_contains_signature(#10129,0,0,#10390) -#10391=@"signature;86" -type_contains_signature(#10128,0,0,#10391) -#10392=@"signature;85" -type_contains_signature(#10127,0,0,#10392) -#10393=@"signature;83" -type_contains_signature(#10126,0,0,#10393) -#10394=@"signature;84" -type_contains_signature(#10126,0,1,#10394) -#10395=@"signature;82" -type_contains_signature(#10125,0,0,#10395) -#10396=@"signature;81" -type_contains_signature(#10124,0,0,#10396) -#10397=@"signature;80" -type_contains_signature(#10123,0,0,#10397) -#10398=@"signature;79" -type_contains_signature(#10122,0,0,#10398) -#10399=@"signature;77" -type_contains_signature(#10121,0,0,#10399) -#10400=@"signature;78" -type_contains_signature(#10121,0,1,#10400) -#10401=@"signature;100" -type_contains_signature(#10139,0,0,#10401) -type_contains_signature(#10143,0,0,#10401) -type_contains_signature(#10142,0,0,#10373) -#10402=@"signature;101" -type_contains_signature(#10141,0,0,#10402) -#10403=@"signature;76" -type_contains_signature(#10116,0,0,#10403) -#10404=@"signature;75" -type_contains_signature(#10115,0,0,#10404) -#10405=@"signature;123" -type_contains_signature(#10167,0,0,#10405) -#10406=@"signature;124" -type_contains_signature(#10167,0,1,#10406) -#10407=@"signature;126" -type_contains_signature(#10167,0,2,#10407) -#10408=@"signature;125" -type_contains_signature(#10166,0,0,#10408) -#10409=@"signature;122" -type_contains_signature(#10165,0,0,#10409) -#10410=@"signature;119" -type_contains_signature(#10164,0,0,#10410) -#10411=@"signature;121" -type_contains_signature(#10164,0,1,#10411) -#10412=@"signature;120" -type_contains_signature(#10163,0,0,#10412) -#10413=@"signature;118" -type_contains_signature(#10162,0,0,#10413) -#10414=@"signature;117" -type_contains_signature(#10161,0,0,#10414) -#10415=@"signature;116" -type_contains_signature(#10160,0,0,#10415) -#10416=@"signature;115" -type_contains_signature(#10159,0,0,#10416) -#10417=@"signature;114" -type_contains_signature(#10158,0,0,#10417) -#10418=@"signature;113" -type_contains_signature(#10157,0,0,#10418) -#10419=@"signature;112" -type_contains_signature(#10156,0,0,#10419) -#10420=@"signature;110" -type_contains_signature(#10155,0,0,#10420) -#10421=@"signature;111" -type_contains_signature(#10155,0,1,#10421) -#10422=@"signature;109" -type_contains_signature(#10154,0,0,#10422) -#10423=@"signature;108" -type_contains_signature(#10153,0,0,#10423) -#10424=@"signature;107" -type_contains_signature(#10152,0,0,#10424) -#10425=@"signature;106" -type_contains_signature(#10151,0,0,#10425) -#10426=@"signature;104" -type_contains_signature(#10150,0,0,#10426) -#10427=@"signature;105" -type_contains_signature(#10150,0,1,#10427) -#10428=@"signature;127" -type_contains_signature(#10169,0,0,#10428) -#10429=@"signature;144" -type_contains_signature(#10198,0,0,#10429) -#10430=@"signature;145" -type_contains_signature(#10198,0,1,#10430) -#10431=@"signature;147" -type_contains_signature(#10198,0,2,#10431) -#10432=@"signature;146" -type_contains_signature(#10197,0,0,#10432) -#10433=@"signature;143" -type_contains_signature(#10196,0,0,#10433) -#10434=@"signature;140" -type_contains_signature(#10194,0,0,#10434) -#10435=@"signature;142" -type_contains_signature(#10194,0,1,#10435) -#10436=@"signature;141" -type_contains_signature(#10193,0,0,#10436) -#10437=@"signature;139" -type_contains_signature(#10191,0,0,#10437) -#10438=@"signature;138" -type_contains_signature(#10190,0,0,#10438) -#10439=@"signature;137" -type_contains_signature(#10188,0,0,#10439) -#10440=@"signature;136" -type_contains_signature(#10187,0,0,#10440) -#10441=@"signature;135" -type_contains_signature(#10185,0,0,#10441) -#10442=@"signature;134" -type_contains_signature(#10184,0,0,#10442) -#10443=@"signature;148" -type_contains_signature(#10182,0,0,#10443) -#10444=@"signature;149" -type_contains_signature(#10182,0,1,#10444) -#10445=@"signature;150" -type_contains_signature(#10182,0,2,#10445) -#10446=@"signature;132" -type_contains_signature(#10181,0,0,#10446) -#10447=@"signature;133" -type_contains_signature(#10181,0,1,#10447) -#10448=@"signature;131" -type_contains_signature(#10179,0,0,#10448) -#10449=@"signature;130" -type_contains_signature(#10178,0,0,#10449) -type_contains_signature(#10177,0,0,#10404) -#10450=@"signature;151" -type_contains_signature(#10176,0,0,#10450) -#10451=@"signature;129" -type_contains_signature(#10175,0,0,#10451) -#10452=@"signature;152" -type_contains_signature(#10174,0,0,#10452) -#10453=@"signature;128" -type_contains_signature(#10172,0,0,#10453) -type_contains_signature(#10171,0,0,#10404) -type_contains_signature(#10168,0,0,#10339) -#10454=@"signature;103" -type_contains_signature(#10145,0,0,#10454) -#10455=@"signature;102" -type_contains_signature(#10144,0,0,#10455) -#10456=@"signature;8" -type_contains_signature(#10026,0,0,#10456) -type_contains_signature(#10025,0,0,#10316) -type_contains_signature(#10024,0,0,#10316) -#10457=@"signature;4" -type_contains_signature(#10013,0,0,#10457) -#10458=@"signature;3" -type_contains_signature(#10012,0,0,#10458) -#10459=@"signature;2" -type_contains_signature(#10011,0,0,#10459) -type_contains_signature(#10010,0,0,#10315) -#10460=@"signature;163" -type_contains_signature(#10215,0,0,#10460) -#10461=@"signature;162" -type_contains_signature(#10214,0,0,#10461) -#10462=@"signature;161" -type_contains_signature(#10213,0,0,#10462) -#10463=@"signature;158" -type_contains_signature(#10212,0,0,#10463) -#10464=@"signature;160" -type_contains_signature(#10212,0,1,#10464) -#10465=@"signature;159" -type_contains_signature(#10211,0,0,#10465) -#10466=@"signature;157" -type_contains_signature(#10210,0,0,#10466) -#10467=@"signature;166" -type_contains_signature(#10220,0,0,#10467) -#10468=@"signature;165" -type_contains_signature(#10219,0,0,#10468) -#10469=@"signature;164" -type_contains_signature(#10218,0,0,#10469) -#10470=@"signature;189" -type_contains_signature(#10245,0,0,#10470) -#10471=@"signature;190" -type_contains_signature(#10245,0,1,#10471) -#10472=@"signature;192" -type_contains_signature(#10245,0,2,#10472) -#10473=@"signature;191" -type_contains_signature(#10244,0,0,#10473) -#10474=@"signature;188" -type_contains_signature(#10243,0,0,#10474) -#10475=@"signature;185" -type_contains_signature(#10242,0,0,#10475) -#10476=@"signature;187" -type_contains_signature(#10242,0,1,#10476) -#10477=@"signature;186" -type_contains_signature(#10241,0,0,#10477) -#10478=@"signature;184" -type_contains_signature(#10240,0,0,#10478) -#10479=@"signature;183" -type_contains_signature(#10239,0,0,#10479) -#10480=@"signature;182" -type_contains_signature(#10238,0,0,#10480) -#10481=@"signature;181" -type_contains_signature(#10237,0,0,#10481) -#10482=@"signature;180" -type_contains_signature(#10236,0,0,#10482) -#10483=@"signature;179" -type_contains_signature(#10235,0,0,#10483) -#10484=@"signature;178" -type_contains_signature(#10234,0,0,#10484) -#10485=@"signature;176" -type_contains_signature(#10233,0,0,#10485) -#10486=@"signature;177" -type_contains_signature(#10233,0,1,#10486) -#10487=@"signature;175" -type_contains_signature(#10232,0,0,#10487) -#10488=@"signature;174" -type_contains_signature(#10231,0,0,#10488) -#10489=@"signature;173" -type_contains_signature(#10230,0,0,#10489) -#10490=@"signature;172" -type_contains_signature(#10229,0,0,#10490) -#10491=@"signature;170" -type_contains_signature(#10228,0,0,#10491) -#10492=@"signature;171" -type_contains_signature(#10228,0,1,#10492) -#10493=@"signature;193" -type_contains_signature(#10246,0,0,#10493) -type_contains_signature(#10249,0,0,#10484) -#10494=@"signature;169" -type_contains_signature(#10223,0,0,#10494) -#10495=@"signature;168" -type_contains_signature(#10222,0,0,#10495) -#10496=@"signature;215" -type_contains_signature(#10272,0,0,#10496) -#10497=@"signature;216" -type_contains_signature(#10272,0,1,#10497) -#10498=@"signature;217" -type_contains_signature(#10272,0,2,#10498) -#10499=@"signature;214" -type_contains_signature(#10271,0,0,#10499) -#10500=@"signature;211" -type_contains_signature(#10270,0,0,#10500) -#10501=@"signature;213" -type_contains_signature(#10270,0,1,#10501) -#10502=@"signature;212" -type_contains_signature(#10269,0,0,#10502) -#10503=@"signature;210" -type_contains_signature(#10268,0,0,#10503) -#10504=@"signature;209" -type_contains_signature(#10267,0,0,#10504) -#10505=@"signature;208" -type_contains_signature(#10266,0,0,#10505) -#10506=@"signature;207" -type_contains_signature(#10265,0,0,#10506) -#10507=@"signature;206" -type_contains_signature(#10264,0,0,#10507) -#10508=@"signature;205" -type_contains_signature(#10263,0,0,#10508) -#10509=@"signature;204" -type_contains_signature(#10262,0,0,#10509) -#10510=@"signature;202" -type_contains_signature(#10261,0,0,#10510) -#10511=@"signature;203" -type_contains_signature(#10261,0,1,#10511) -#10512=@"signature;201" -type_contains_signature(#10260,0,0,#10512) -#10513=@"signature;200" -type_contains_signature(#10259,0,0,#10513) -#10514=@"signature;199" -type_contains_signature(#10258,0,0,#10514) -#10515=@"signature;198" -type_contains_signature(#10257,0,0,#10515) -#10516=@"signature;196" -type_contains_signature(#10256,0,0,#10516) -#10517=@"signature;197" -type_contains_signature(#10256,0,1,#10517) -#10518=@"signature;195" -type_contains_signature(#10251,0,0,#10518) -#10519=@"signature;194" -type_contains_signature(#10250,0,0,#10519) -#10520=@"signature;167" -type_contains_signature(#10221,0,0,#10520) -#10521=@"signature;218" -type_contains_signature(#10273,0,0,#10521) -#10522=@"signature;155" -type_contains_signature(#10204,0,0,#10522) -#10523=@"signature;156" -type_contains_signature(#10204,0,1,#10523) -#10524=@"signature;154" -type_contains_signature(#10201,0,0,#10524) -#10525=@"signature;153" -type_contains_signature(#10200,0,0,#10525) -#10526=@"signature;239" -type_contains_signature(#10297,0,0,#10526) -#10527=@"signature;240" -type_contains_signature(#10297,0,1,#10527) -#10528=@"signature;242" -type_contains_signature(#10297,0,2,#10528) -#10529=@"signature;241" -type_contains_signature(#10296,0,0,#10529) -#10530=@"signature;238" -type_contains_signature(#10295,0,0,#10530) -#10531=@"signature;235" -type_contains_signature(#10294,0,0,#10531) -#10532=@"signature;237" -type_contains_signature(#10294,0,1,#10532) -#10533=@"signature;236" -type_contains_signature(#10293,0,0,#10533) -#10534=@"signature;234" -type_contains_signature(#10292,0,0,#10534) -#10535=@"signature;233" -type_contains_signature(#10291,0,0,#10535) -#10536=@"signature;232" -type_contains_signature(#10290,0,0,#10536) -#10537=@"signature;231" -type_contains_signature(#10289,0,0,#10537) -#10538=@"signature;230" -type_contains_signature(#10288,0,0,#10538) -#10539=@"signature;229" -type_contains_signature(#10287,0,0,#10539) -#10540=@"signature;228" -type_contains_signature(#10286,0,0,#10540) -#10541=@"signature;226" -type_contains_signature(#10285,0,0,#10541) -#10542=@"signature;227" -type_contains_signature(#10285,0,1,#10542) -#10543=@"signature;225" -type_contains_signature(#10284,0,0,#10543) -#10544=@"signature;224" -type_contains_signature(#10283,0,0,#10544) -#10545=@"signature;223" -type_contains_signature(#10282,0,0,#10545) -#10546=@"signature;222" -type_contains_signature(#10281,0,0,#10546) -#10547=@"signature;220" -type_contains_signature(#10280,0,0,#10547) -#10548=@"signature;221" -type_contains_signature(#10280,0,1,#10548) -type_contains_signature(#10300,0,0,#10308) -type_contains_signature(#10300,0,1,#10316) -type_contains_signature(#10299,0,0,#10310) -type_contains_signature(#10298,0,0,#10315) -type_contains_signature(#10298,0,1,#10316) -#10549=@"signature;219" -type_contains_signature(#10275,0,0,#10549) -#10550=@"signature;243" -type_contains_signature(#10301,0,0,#10550) -#10551=@"signature;244" -type_contains_signature(#10302,1,0,#10551) -signature_types(#10307,0,"(): any",0,0) -signature_contains_type(#10002,#10307,-1) -signature_types(#10315,0,"(radix?: number): string",0,1) -signature_contains_type(#10008,#10315,-1) -signature_contains_type(#10009,#10315,0) -signature_parameter_name(#10315,0,"radix") -signature_types(#10459,0,"(fractionDigits?: number): string",0,1) -signature_contains_type(#10008,#10459,-1) -signature_contains_type(#10009,#10459,0) -signature_parameter_name(#10459,0,"fractionDigits") -signature_types(#10458,0,"(precision?: number): string",0,1) -signature_contains_type(#10008,#10458,-1) -signature_contains_type(#10009,#10458,0) -signature_parameter_name(#10458,0,"precision") -signature_types(#10457,0,"(): number",0,0) -signature_contains_type(#10009,#10457,-1) -signature_types(#10308,0,"(locales?: string | string[], options?: Intl.NumberFormatOptions): st...",0,2) -signature_contains_type(#10008,#10308,-1) -signature_contains_type(#10016,#10308,0) -signature_parameter_name(#10308,0,"locales") -signature_contains_type(#10017,#10308,1) -signature_parameter_name(#10308,1,"options") -signature_types(#10309,0,"(): boolean",0,0) -signature_contains_type(#10022,#10309,-1) -signature_types(#10316,0,"(): string",0,0) -signature_contains_type(#10008,#10316,-1) -signature_types(#10456,0,"(...strings: string[]): string",0,1) -signature_contains_type(#10008,#10456,-1) -signature_contains_type(#10014,#10456,0) -signature_parameter_name(#10456,0,"strings") -signature_types(#10376,0,"(...items: ConcatArray[]): string[]",0,1) -signature_contains_type(#10014,#10376,-1) -signature_contains_type(#10029,#10376,0) -signature_parameter_name(#10376,0,"items") -signature_types(#10377,0,"(...items: (string | ConcatArray)[]): string[]",0,1) -signature_contains_type(#10014,#10377,-1) -signature_contains_type(#10031,#10377,0) -signature_parameter_name(#10377,0,"items") -signature_types(#10373,0,"(searchString: string, position?: number): number",0,2) -signature_contains_type(#10009,#10373,-1) -signature_contains_type(#10008,#10373,0) -signature_parameter_name(#10373,0,"searchString") -signature_contains_type(#10009,#10373,1) -signature_parameter_name(#10373,1,"position") -signature_types(#10374,0,"(searchElement: string, fromIndex?: number): number",0,2) -signature_contains_type(#10009,#10374,-1) -signature_contains_type(#10008,#10374,0) -signature_parameter_name(#10374,0,"searchElement") -signature_contains_type(#10009,#10374,1) -signature_parameter_name(#10374,1,"fromIndex") -signature_types(#10372,0,"(start?: number, end?: number): string",0,2) -signature_contains_type(#10008,#10372,-1) -signature_contains_type(#10009,#10372,0) -signature_parameter_name(#10372,0,"start") -signature_contains_type(#10009,#10372,1) -signature_parameter_name(#10372,1,"end") -signature_types(#10371,0,"(start?: number, end?: number): string[]",0,2) -signature_contains_type(#10014,#10371,-1) -signature_contains_type(#10009,#10371,0) -signature_parameter_name(#10371,0,"start") -signature_contains_type(#10009,#10371,1) -signature_parameter_name(#10371,1,"end") -signature_types(#10310,0,"(): Object",0,0) -signature_contains_type(#10040,#10310,-1) -signature_types(#10312,0,"(v: string | number | symbol): boolean",0,1) -signature_contains_type(#10022,#10312,-1) -signature_contains_type(#10047,#10312,0) -signature_parameter_name(#10312,0,"v") -signature_types(#10311,0,"(v: Object): boolean",0,1) -signature_contains_type(#10022,#10311,-1) -signature_contains_type(#10040,#10311,0) -signature_parameter_name(#10311,0,"v") -signature_types(#10314,0,"(): symbol",0,0) -signature_contains_type(#10046,#10314,-1) -signature_types(#10313,0,"(): string | number | symbol",0,0) -signature_contains_type(#10047,#10313,-1) -signature_types(#10369,0,"(this: Function, thisArg: any, argArray?: any): any",0,2) -signature_contains_type(#10002,#10369,-1) -signature_contains_type(#10002,#10369,0) -signature_parameter_name(#10369,0,"thisArg") -signature_contains_type(#10002,#10369,1) -signature_parameter_name(#10369,1,"argArray") -signature_types(#10317,0,"(this: Function, thisArg: any, ...argArray: any[]): any",0,2) -signature_contains_type(#10002,#10317,-1) -signature_contains_type(#10002,#10317,0) -signature_parameter_name(#10317,0,"thisArg") -signature_contains_type(#10054,#10317,1) -signature_parameter_name(#10317,1,"argArray") -signature_types(#10342,0,"(...items: any[]): number",0,1) -signature_contains_type(#10009,#10342,-1) -signature_contains_type(#10054,#10342,0) -signature_parameter_name(#10342,0,"items") -signature_types(#10340,0,"(...items: ConcatArray[]): any[]",0,1) -signature_contains_type(#10054,#10340,-1) -signature_contains_type(#10064,#10340,0) -signature_parameter_name(#10340,0,"items") -signature_types(#10341,0,"(...items: any[]): any[]",0,1) -signature_contains_type(#10054,#10341,-1) -signature_contains_type(#10054,#10341,0) -signature_parameter_name(#10341,0,"items") -signature_types(#10339,0,"(separator?: string): string",0,1) -signature_contains_type(#10008,#10339,-1) -signature_contains_type(#10008,#10339,0) -signature_parameter_name(#10339,0,"separator") -signature_types(#10338,0,"(): any[]",0,0) -signature_contains_type(#10054,#10338,-1) -signature_types(#10337,0,"(start?: number, end?: number): any[]",0,2) -signature_contains_type(#10054,#10337,-1) -signature_contains_type(#10009,#10337,0) -signature_parameter_name(#10337,0,"start") -signature_contains_type(#10009,#10337,1) -signature_parameter_name(#10337,1,"end") -signature_types(#10336,0,"(a: any, b: any): number",0,2) -signature_contains_type(#10009,#10336,-1) -signature_contains_type(#10002,#10336,0) -signature_parameter_name(#10336,0,"a") -signature_contains_type(#10002,#10336,1) -signature_parameter_name(#10336,1,"b") -signature_types(#10335,0,"(compareFn?: (a: any, b: any) => number): any[]",0,1) -signature_contains_type(#10054,#10335,-1) -signature_contains_type(#10069,#10335,0) -signature_parameter_name(#10335,0,"compareFn") -signature_types(#10333,0,"(start: number, deleteCount?: number): any[]",0,2) -signature_contains_type(#10054,#10333,-1) -signature_contains_type(#10009,#10333,0) -signature_parameter_name(#10333,0,"start") -signature_contains_type(#10009,#10333,1) -signature_parameter_name(#10333,1,"deleteCount") -signature_types(#10334,0,"(start: number, deleteCount: number, ...items: any[]): any[]",0,3) -signature_contains_type(#10054,#10334,-1) -signature_contains_type(#10009,#10334,0) -signature_parameter_name(#10334,0,"start") -signature_contains_type(#10009,#10334,1) -signature_parameter_name(#10334,1,"deleteCount") -signature_contains_type(#10054,#10334,2) -signature_parameter_name(#10334,2,"items") -signature_types(#10332,0,"(searchElement: any, fromIndex?: number): number",0,2) -signature_contains_type(#10009,#10332,-1) -signature_contains_type(#10002,#10332,0) -signature_parameter_name(#10332,0,"searchElement") -signature_contains_type(#10009,#10332,1) -signature_parameter_name(#10332,1,"fromIndex") -signature_types(#10331,0,"(value: any, index: number, array: any[]): boolean",0,3) -signature_contains_type(#10022,#10331,-1) -signature_contains_type(#10002,#10331,0) -signature_parameter_name(#10331,0,"value") -signature_contains_type(#10009,#10331,1) -signature_parameter_name(#10331,1,"index") -signature_contains_type(#10054,#10331,2) -signature_parameter_name(#10331,2,"array") -signature_types(#10330,0,"(callbackfn: (value: any, index: number, array: any[]) => boolean, th...",0,2) -signature_contains_type(#10022,#10330,-1) -signature_contains_type(#10073,#10330,0) -signature_parameter_name(#10330,0,"callbackfn") -signature_contains_type(#10002,#10330,1) -signature_parameter_name(#10330,1,"thisArg") -signature_types(#10329,0,"(value: any, index: number, array: any[]): void",0,3) -signature_contains_type(#10075,#10329,-1) -signature_contains_type(#10002,#10329,0) -signature_parameter_name(#10329,0,"value") -signature_contains_type(#10009,#10329,1) -signature_parameter_name(#10329,1,"index") -signature_contains_type(#10054,#10329,2) -signature_parameter_name(#10329,2,"array") -signature_types(#10328,0,"(callbackfn: (value: any, index: number, array: any[]) => void, thisA...",0,2) -signature_contains_type(#10075,#10328,-1) -signature_contains_type(#10076,#10328,0) -signature_parameter_name(#10328,0,"callbackfn") -signature_contains_type(#10002,#10328,1) -signature_parameter_name(#10328,1,"thisArg") -signature_types(#10327,0,"(value: any, index: number, array: any[]): U",0,3) -signature_contains_type(#10078,#10327,-1) -signature_contains_type(#10002,#10327,0) -signature_parameter_name(#10327,0,"value") -signature_contains_type(#10009,#10327,1) -signature_parameter_name(#10327,1,"index") -signature_contains_type(#10054,#10327,2) -signature_parameter_name(#10327,2,"array") -signature_types(#10326,0,"(callbackfn: (value: any, index: number, array: any[]) => U, thisA...",1,2) -signature_contains_type(#10079,#10326,-1) -signature_parameter_name(#10326,0,"U") -signature_contains_type(#10080,#10326,1) -signature_parameter_name(#10326,1,"callbackfn") -signature_contains_type(#10002,#10326,2) -signature_parameter_name(#10326,2,"thisArg") -signature_types(#10323,0,"(callbackfn: (value: any, index: number, array: any[])...",1,2) -signature_contains_type(#10083,#10323,-1) -signature_contains_type(#10002,#10323,0) -signature_parameter_name(#10323,0,"S") -signature_contains_type(#10073,#10323,1) -signature_parameter_name(#10323,1,"callbackfn") -signature_contains_type(#10002,#10323,2) -signature_parameter_name(#10323,2,"thisArg") -signature_types(#10325,0,"(value: any, index: number, array: any[]): any",0,3) -signature_contains_type(#10002,#10325,-1) -signature_contains_type(#10002,#10325,0) -signature_parameter_name(#10325,0,"value") -signature_contains_type(#10009,#10325,1) -signature_parameter_name(#10325,1,"index") -signature_contains_type(#10054,#10325,2) -signature_parameter_name(#10325,2,"array") -signature_types(#10324,0,"(callbackfn: (value: any, index: number, array: any[]) => any, thisAr...",0,2) -signature_contains_type(#10054,#10324,-1) -signature_contains_type(#10084,#10324,0) -signature_parameter_name(#10324,0,"callbackfn") -signature_contains_type(#10002,#10324,1) -signature_parameter_name(#10324,1,"thisArg") -signature_types(#10322,0,"(previousValue: any, currentValue: any, currentIndex: number, array: ...",0,4) -signature_contains_type(#10002,#10322,-1) -signature_contains_type(#10002,#10322,0) -signature_parameter_name(#10322,0,"previousValue") -signature_contains_type(#10002,#10322,1) -signature_parameter_name(#10322,1,"currentValue") -signature_contains_type(#10009,#10322,2) -signature_parameter_name(#10322,2,"currentIndex") -signature_contains_type(#10054,#10322,3) -signature_parameter_name(#10322,3,"array") -signature_types(#10318,0,"(callbackfn: (previousValue: any, currentValue: any, currentIndex: nu...",0,1) -signature_contains_type(#10002,#10318,-1) -signature_contains_type(#10086,#10318,0) -signature_parameter_name(#10318,0,"callbackfn") -signature_types(#10319,0,"(callbackfn: (previousValue: any, currentValue: any, currentIndex: nu...",0,2) -signature_contains_type(#10002,#10319,-1) -signature_contains_type(#10086,#10319,0) -signature_parameter_name(#10319,0,"callbackfn") -signature_contains_type(#10002,#10319,1) -signature_parameter_name(#10319,1,"initialValue") -signature_types(#10321,0,"(previousValue: U, currentValue: any, currentIndex: number, array: an...",0,4) -signature_contains_type(#10078,#10321,-1) -signature_contains_type(#10078,#10321,0) -signature_parameter_name(#10321,0,"previousValue") -signature_contains_type(#10002,#10321,1) -signature_parameter_name(#10321,1,"currentValue") -signature_contains_type(#10009,#10321,2) -signature_parameter_name(#10321,2,"currentIndex") -signature_contains_type(#10054,#10321,3) -signature_parameter_name(#10321,3,"array") -signature_types(#10320,0,"(callbackfn: (previousValue: U, currentValue: any, currentIndex: n...",1,2) -signature_contains_type(#10078,#10320,-1) -signature_parameter_name(#10320,0,"U") -signature_contains_type(#10087,#10320,1) -signature_parameter_name(#10320,1,"callbackfn") -signature_contains_type(#10078,#10320,2) -signature_parameter_name(#10320,2,"initialValue") -signature_types(#10343,0,"(start?: number, end?: number): T[]",0,2) -signature_contains_type(#10089,#10343,-1) -signature_contains_type(#10009,#10343,0) -signature_parameter_name(#10343,0,"start") -signature_contains_type(#10009,#10343,1) -signature_parameter_name(#10343,1,"end") -signature_types(#10368,0,"(): T",0,0) -signature_contains_type(#10056,#10368,-1) -signature_types(#10367,0,"(...items: T[]): number",0,1) -signature_contains_type(#10009,#10367,-1) -signature_contains_type(#10058,#10367,0) -signature_parameter_name(#10367,0,"items") -signature_types(#10365,0,"(...items: ConcatArray[]): T[]",0,1) -signature_contains_type(#10058,#10365,-1) -signature_contains_type(#10094,#10365,0) -signature_parameter_name(#10365,0,"items") -signature_types(#10366,0,"(...items: (T | ConcatArray)[]): T[]",0,1) -signature_contains_type(#10058,#10366,-1) -signature_contains_type(#10096,#10366,0) -signature_parameter_name(#10366,0,"items") -signature_types(#10364,0,"(): T[]",0,0) -signature_contains_type(#10058,#10364,-1) -signature_types(#10363,0,"(start?: number, end?: number): T[]",0,2) -signature_contains_type(#10058,#10363,-1) -signature_contains_type(#10009,#10363,0) -signature_parameter_name(#10363,0,"start") -signature_contains_type(#10009,#10363,1) -signature_parameter_name(#10363,1,"end") -signature_types(#10362,0,"(a: T, b: T): number",0,2) -signature_contains_type(#10009,#10362,-1) -signature_contains_type(#10056,#10362,0) -signature_parameter_name(#10362,0,"a") -signature_contains_type(#10056,#10362,1) -signature_parameter_name(#10362,1,"b") -signature_types(#10361,0,"(compareFn?: (a: T, b: T) => number): T[]",0,1) -signature_contains_type(#10058,#10361,-1) -signature_contains_type(#10100,#10361,0) -signature_parameter_name(#10361,0,"compareFn") -signature_types(#10359,0,"(start: number, deleteCount?: number): T[]",0,2) -signature_contains_type(#10058,#10359,-1) -signature_contains_type(#10009,#10359,0) -signature_parameter_name(#10359,0,"start") -signature_contains_type(#10009,#10359,1) -signature_parameter_name(#10359,1,"deleteCount") -signature_types(#10360,0,"(start: number, deleteCount: number, ...items: T[]): T[]",0,3) -signature_contains_type(#10058,#10360,-1) -signature_contains_type(#10009,#10360,0) -signature_parameter_name(#10360,0,"start") -signature_contains_type(#10009,#10360,1) -signature_parameter_name(#10360,1,"deleteCount") -signature_contains_type(#10058,#10360,2) -signature_parameter_name(#10360,2,"items") -signature_types(#10358,0,"(searchElement: T, fromIndex?: number): number",0,2) -signature_contains_type(#10009,#10358,-1) -signature_contains_type(#10056,#10358,0) -signature_parameter_name(#10358,0,"searchElement") -signature_contains_type(#10009,#10358,1) -signature_parameter_name(#10358,1,"fromIndex") -signature_types(#10357,0,"(value: T, index: number, array: T[]): boolean",0,3) -signature_contains_type(#10022,#10357,-1) -signature_contains_type(#10056,#10357,0) -signature_parameter_name(#10357,0,"value") -signature_contains_type(#10009,#10357,1) -signature_parameter_name(#10357,1,"index") -signature_contains_type(#10058,#10357,2) -signature_parameter_name(#10357,2,"array") -signature_types(#10356,0,"(callbackfn: (value: T, index: number, array: T[]) => boolean, thisAr...",0,2) -signature_contains_type(#10022,#10356,-1) -signature_contains_type(#10104,#10356,0) -signature_parameter_name(#10356,0,"callbackfn") -signature_contains_type(#10002,#10356,1) -signature_parameter_name(#10356,1,"thisArg") -signature_types(#10355,0,"(value: T, index: number, array: T[]): void",0,3) -signature_contains_type(#10075,#10355,-1) -signature_contains_type(#10056,#10355,0) -signature_parameter_name(#10355,0,"value") -signature_contains_type(#10009,#10355,1) -signature_parameter_name(#10355,1,"index") -signature_contains_type(#10058,#10355,2) -signature_parameter_name(#10355,2,"array") -signature_types(#10354,0,"(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?:...",0,2) -signature_contains_type(#10075,#10354,-1) -signature_contains_type(#10106,#10354,0) -signature_parameter_name(#10354,0,"callbackfn") -signature_contains_type(#10002,#10354,1) -signature_parameter_name(#10354,1,"thisArg") -signature_types(#10353,0,"(value: T, index: number, array: T[]): U",0,3) -signature_contains_type(#10078,#10353,-1) -signature_contains_type(#10056,#10353,0) -signature_parameter_name(#10353,0,"value") -signature_contains_type(#10009,#10353,1) -signature_parameter_name(#10353,1,"index") -signature_contains_type(#10058,#10353,2) -signature_parameter_name(#10353,2,"array") -signature_types(#10352,0,"(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?:...",1,2) -signature_contains_type(#10079,#10352,-1) -signature_parameter_name(#10352,0,"U") -signature_contains_type(#10108,#10352,1) -signature_parameter_name(#10352,1,"callbackfn") -signature_contains_type(#10002,#10352,2) -signature_parameter_name(#10352,2,"thisArg") -signature_types(#10349,0,"(callbackfn: (value: T, index: number, array: T[]) => va...",1,2) -signature_contains_type(#10083,#10349,-1) -signature_parameter_name(#10349,0,"S") -signature_contains_type(#10104,#10349,1) -signature_parameter_name(#10349,1,"callbackfn") -signature_contains_type(#10002,#10349,2) -signature_parameter_name(#10349,2,"thisArg") -signature_types(#10351,0,"(value: T, index: number, array: T[]): any",0,3) -signature_contains_type(#10002,#10351,-1) -signature_contains_type(#10056,#10351,0) -signature_parameter_name(#10351,0,"value") -signature_contains_type(#10009,#10351,1) -signature_parameter_name(#10351,1,"index") -signature_contains_type(#10058,#10351,2) -signature_parameter_name(#10351,2,"array") -signature_types(#10350,0,"(callbackfn: (value: T, index: number, array: T[]) => any, thisArg?: ...",0,2) -signature_contains_type(#10058,#10350,-1) -signature_contains_type(#10110,#10350,0) -signature_parameter_name(#10350,0,"callbackfn") -signature_contains_type(#10002,#10350,1) -signature_parameter_name(#10350,1,"thisArg") -signature_types(#10348,0,"(previousValue: T, currentValue: T, currentIndex: number, array: T[])...",0,4) -signature_contains_type(#10056,#10348,-1) -signature_contains_type(#10056,#10348,0) -signature_parameter_name(#10348,0,"previousValue") -signature_contains_type(#10056,#10348,1) -signature_parameter_name(#10348,1,"currentValue") -signature_contains_type(#10009,#10348,2) -signature_parameter_name(#10348,2,"currentIndex") -signature_contains_type(#10058,#10348,3) -signature_parameter_name(#10348,3,"array") -signature_types(#10344,0,"(callbackfn: (previousValue: T, currentValue: T, currentIndex: number...",0,1) -signature_contains_type(#10056,#10344,-1) -signature_contains_type(#10112,#10344,0) -signature_parameter_name(#10344,0,"callbackfn") -signature_types(#10345,0,"(callbackfn: (previousValue: T, currentValue: T, currentIndex: number...",0,2) -signature_contains_type(#10056,#10345,-1) -signature_contains_type(#10112,#10345,0) -signature_parameter_name(#10345,0,"callbackfn") -signature_contains_type(#10056,#10345,1) -signature_parameter_name(#10345,1,"initialValue") -signature_types(#10347,0,"(previousValue: U, currentValue: T, currentIndex: number, array: T[])...",0,4) -signature_contains_type(#10078,#10347,-1) -signature_contains_type(#10078,#10347,0) -signature_parameter_name(#10347,0,"previousValue") -signature_contains_type(#10056,#10347,1) -signature_parameter_name(#10347,1,"currentValue") -signature_contains_type(#10009,#10347,2) -signature_parameter_name(#10347,2,"currentIndex") -signature_contains_type(#10058,#10347,3) -signature_parameter_name(#10347,3,"array") -signature_types(#10346,0,"(callbackfn: (previousValue: U, currentValue: T, currentIndex: num...",1,2) -signature_contains_type(#10078,#10346,-1) -signature_parameter_name(#10346,0,"U") -signature_contains_type(#10113,#10346,1) -signature_parameter_name(#10346,1,"callbackfn") -signature_contains_type(#10078,#10346,2) -signature_parameter_name(#10346,2,"initialValue") -signature_types(#10370,0,"(start?: number, end?: number): string | string[]",0,2) -signature_contains_type(#10016,#10370,-1) -signature_contains_type(#10009,#10370,0) -signature_parameter_name(#10370,0,"start") -signature_contains_type(#10009,#10370,1) -signature_parameter_name(#10370,1,"end") -signature_types(#10375,0,"(...strings: string[]): string | string[]",0,1) -signature_contains_type(#10016,#10375,-1) -signature_contains_type(#10014,#10375,0) -signature_parameter_name(#10375,0,"strings") -signature_types(#10404,0,"(): string | ConcatArray",0,0) -signature_contains_type(#10030,#10404,-1) -signature_types(#10403,0,"(...items: (string | ConcatArray)[]): number",0,1) -signature_contains_type(#10009,#10403,-1) -signature_contains_type(#10031,#10403,0) -signature_parameter_name(#10403,0,"items") -signature_types(#10399,0,"(...items: ConcatArray>[]): (string | Co...",0,1) -signature_contains_type(#10031,#10399,-1) -signature_contains_type(#10118,#10399,0) -signature_parameter_name(#10399,0,"items") -signature_types(#10400,0,"(...items: (string | ConcatArray | ConcatArray)[]",0,0) -signature_contains_type(#10031,#10398,-1) -signature_types(#10397,0,"(start?: number, end?: number): (string | ConcatArray)[]",0,2) -signature_contains_type(#10031,#10397,-1) -signature_contains_type(#10009,#10397,0) -signature_parameter_name(#10397,0,"start") -signature_contains_type(#10009,#10397,1) -signature_parameter_name(#10397,1,"end") -signature_types(#10396,0,"(a: string | ConcatArray, b: string | ConcatArray): n...",0,2) -signature_contains_type(#10009,#10396,-1) -signature_contains_type(#10030,#10396,0) -signature_parameter_name(#10396,0,"a") -signature_contains_type(#10030,#10396,1) -signature_parameter_name(#10396,1,"b") -signature_types(#10395,0,"(compareFn?: (a: string | ConcatArray, b: string | ConcatArra...",0,1) -signature_contains_type(#10031,#10395,-1) -signature_contains_type(#10124,#10395,0) -signature_parameter_name(#10395,0,"compareFn") -signature_types(#10393,0,"(start: number, deleteCount?: number): (string | ConcatArray)...",0,2) -signature_contains_type(#10031,#10393,-1) -signature_contains_type(#10009,#10393,0) -signature_parameter_name(#10393,0,"start") -signature_contains_type(#10009,#10393,1) -signature_parameter_name(#10393,1,"deleteCount") -signature_types(#10394,0,"(start: number, deleteCount: number, ...items: (string | ConcatArray<...",0,3) -signature_contains_type(#10031,#10394,-1) -signature_contains_type(#10009,#10394,0) -signature_parameter_name(#10394,0,"start") -signature_contains_type(#10009,#10394,1) -signature_parameter_name(#10394,1,"deleteCount") -signature_contains_type(#10031,#10394,2) -signature_parameter_name(#10394,2,"items") -signature_types(#10392,0,"(searchElement: string | ConcatArray, fromIndex?: number): nu...",0,2) -signature_contains_type(#10009,#10392,-1) -signature_contains_type(#10030,#10392,0) -signature_parameter_name(#10392,0,"searchElement") -signature_contains_type(#10009,#10392,1) -signature_parameter_name(#10392,1,"fromIndex") -signature_types(#10391,0,"(value: string | ConcatArray, index: number, array: (string |...",0,3) -signature_contains_type(#10022,#10391,-1) -signature_contains_type(#10030,#10391,0) -signature_parameter_name(#10391,0,"value") -signature_contains_type(#10009,#10391,1) -signature_parameter_name(#10391,1,"index") -signature_contains_type(#10031,#10391,2) -signature_parameter_name(#10391,2,"array") -signature_types(#10390,0,"(callbackfn: (value: string | ConcatArray, index: number, arr...",0,2) -signature_contains_type(#10022,#10390,-1) -signature_contains_type(#10128,#10390,0) -signature_parameter_name(#10390,0,"callbackfn") -signature_contains_type(#10002,#10390,1) -signature_parameter_name(#10390,1,"thisArg") -signature_types(#10389,0,"(value: string | ConcatArray, index: number, array: (string |...",0,3) -signature_contains_type(#10075,#10389,-1) -signature_contains_type(#10030,#10389,0) -signature_parameter_name(#10389,0,"value") -signature_contains_type(#10009,#10389,1) -signature_parameter_name(#10389,1,"index") -signature_contains_type(#10031,#10389,2) -signature_parameter_name(#10389,2,"array") -signature_types(#10388,0,"(callbackfn: (value: string | ConcatArray, index: number, arr...",0,2) -signature_contains_type(#10075,#10388,-1) -signature_contains_type(#10130,#10388,0) -signature_parameter_name(#10388,0,"callbackfn") -signature_contains_type(#10002,#10388,1) -signature_parameter_name(#10388,1,"thisArg") -signature_types(#10387,0,"(value: string | ConcatArray, index: number, array: (string |...",0,3) -signature_contains_type(#10078,#10387,-1) -signature_contains_type(#10030,#10387,0) -signature_parameter_name(#10387,0,"value") -signature_contains_type(#10009,#10387,1) -signature_parameter_name(#10387,1,"index") -signature_contains_type(#10031,#10387,2) -signature_parameter_name(#10387,2,"array") -signature_types(#10386,0,"(callbackfn: (value: string | ConcatArray, index: number, ...",1,2) -signature_contains_type(#10079,#10386,-1) -signature_parameter_name(#10386,0,"U") -signature_contains_type(#10132,#10386,1) -signature_parameter_name(#10386,1,"callbackfn") -signature_contains_type(#10002,#10386,2) -signature_parameter_name(#10386,2,"thisArg") -signature_types(#10383,0,">(callbackfn: (value: string |...",1,2) -signature_contains_type(#10083,#10383,-1) -signature_contains_type(#10030,#10383,0) -signature_parameter_name(#10383,0,"S") -signature_contains_type(#10128,#10383,1) -signature_parameter_name(#10383,1,"callbackfn") -signature_contains_type(#10002,#10383,2) -signature_parameter_name(#10383,2,"thisArg") -signature_types(#10385,0,"(value: string | ConcatArray, index: number, array: (string |...",0,3) -signature_contains_type(#10002,#10385,-1) -signature_contains_type(#10030,#10385,0) -signature_parameter_name(#10385,0,"value") -signature_contains_type(#10009,#10385,1) -signature_parameter_name(#10385,1,"index") -signature_contains_type(#10031,#10385,2) -signature_parameter_name(#10385,2,"array") -signature_types(#10384,0,"(callbackfn: (value: string | ConcatArray, index: number, arr...",0,2) -signature_contains_type(#10031,#10384,-1) -signature_contains_type(#10134,#10384,0) -signature_parameter_name(#10384,0,"callbackfn") -signature_contains_type(#10002,#10384,1) -signature_parameter_name(#10384,1,"thisArg") -signature_types(#10382,0,"(previousValue: string | ConcatArray, currentValue: string | ...",0,4) -signature_contains_type(#10030,#10382,-1) -signature_contains_type(#10030,#10382,0) -signature_parameter_name(#10382,0,"previousValue") -signature_contains_type(#10030,#10382,1) -signature_parameter_name(#10382,1,"currentValue") -signature_contains_type(#10009,#10382,2) -signature_parameter_name(#10382,2,"currentIndex") -signature_contains_type(#10031,#10382,3) -signature_parameter_name(#10382,3,"array") -signature_types(#10378,0,"(callbackfn: (previousValue: string | ConcatArray, currentVal...",0,1) -signature_contains_type(#10030,#10378,-1) -signature_contains_type(#10136,#10378,0) -signature_parameter_name(#10378,0,"callbackfn") -signature_types(#10379,0,"(callbackfn: (previousValue: string | ConcatArray, currentVal...",0,2) -signature_contains_type(#10030,#10379,-1) -signature_contains_type(#10136,#10379,0) -signature_parameter_name(#10379,0,"callbackfn") -signature_contains_type(#10030,#10379,1) -signature_parameter_name(#10379,1,"initialValue") -signature_types(#10381,0,"(previousValue: U, currentValue: string | ConcatArray, curren...",0,4) -signature_contains_type(#10078,#10381,-1) -signature_contains_type(#10078,#10381,0) -signature_parameter_name(#10381,0,"previousValue") -signature_contains_type(#10030,#10381,1) -signature_parameter_name(#10381,1,"currentValue") -signature_contains_type(#10009,#10381,2) -signature_parameter_name(#10381,2,"currentIndex") -signature_contains_type(#10031,#10381,3) -signature_parameter_name(#10381,3,"array") -signature_types(#10380,0,"(callbackfn: (previousValue: U, currentValue: string | ConcatArray...",1,2) -signature_contains_type(#10078,#10380,-1) -signature_parameter_name(#10380,0,"U") -signature_contains_type(#10137,#10380,1) -signature_parameter_name(#10380,1,"callbackfn") -signature_contains_type(#10078,#10380,2) -signature_parameter_name(#10380,2,"initialValue") -signature_types(#10401,0,"(start?: number, end?: number): string | (string | ConcatArray)[]",0,1) -signature_contains_type(#10140,#10402,-1) -signature_contains_type(#10014,#10402,0) -signature_parameter_name(#10402,0,"strings") -signature_types(#10455,0,"(): ConcatArray",0,0) -signature_contains_type(#10027,#10455,-1) -signature_types(#10454,0,"(...items: ConcatArray[]): number",0,1) -signature_contains_type(#10009,#10454,-1) -signature_contains_type(#10029,#10454,0) -signature_parameter_name(#10454,0,"items") -signature_types(#10426,0,"(...items: ConcatArray>[]): ConcatArray[]",0,1) -signature_contains_type(#10029,#10426,-1) -signature_contains_type(#10147,#10426,0) -signature_parameter_name(#10426,0,"items") -signature_types(#10427,0,"(...items: (ConcatArray | ConcatArray>)[]...",0,1) -signature_contains_type(#10029,#10427,-1) -signature_contains_type(#10149,#10427,0) -signature_parameter_name(#10427,0,"items") -signature_types(#10425,0,"(): ConcatArray[]",0,0) -signature_contains_type(#10029,#10425,-1) -signature_types(#10424,0,"(start?: number, end?: number): ConcatArray[]",0,2) -signature_contains_type(#10029,#10424,-1) -signature_contains_type(#10009,#10424,0) -signature_parameter_name(#10424,0,"start") -signature_contains_type(#10009,#10424,1) -signature_parameter_name(#10424,1,"end") -signature_types(#10423,0,"(a: ConcatArray, b: ConcatArray): number",0,2) -signature_contains_type(#10009,#10423,-1) -signature_contains_type(#10027,#10423,0) -signature_parameter_name(#10423,0,"a") -signature_contains_type(#10027,#10423,1) -signature_parameter_name(#10423,1,"b") -signature_types(#10422,0,"(compareFn?: (a: ConcatArray, b: ConcatArray) => numb...",0,1) -signature_contains_type(#10029,#10422,-1) -signature_contains_type(#10153,#10422,0) -signature_parameter_name(#10422,0,"compareFn") -signature_types(#10420,0,"(start: number, deleteCount?: number): ConcatArray[]",0,2) -signature_contains_type(#10029,#10420,-1) -signature_contains_type(#10009,#10420,0) -signature_parameter_name(#10420,0,"start") -signature_contains_type(#10009,#10420,1) -signature_parameter_name(#10420,1,"deleteCount") -signature_types(#10421,0,"(start: number, deleteCount: number, ...items: ConcatArray[])...",0,3) -signature_contains_type(#10029,#10421,-1) -signature_contains_type(#10009,#10421,0) -signature_parameter_name(#10421,0,"start") -signature_contains_type(#10009,#10421,1) -signature_parameter_name(#10421,1,"deleteCount") -signature_contains_type(#10029,#10421,2) -signature_parameter_name(#10421,2,"items") -signature_types(#10419,0,"(searchElement: ConcatArray, fromIndex?: number): number",0,2) -signature_contains_type(#10009,#10419,-1) -signature_contains_type(#10027,#10419,0) -signature_parameter_name(#10419,0,"searchElement") -signature_contains_type(#10009,#10419,1) -signature_parameter_name(#10419,1,"fromIndex") -signature_types(#10418,0,"(value: ConcatArray, index: number, array: ConcatArray, index: number, array: Conca...",0,2) -signature_contains_type(#10022,#10417,-1) -signature_contains_type(#10157,#10417,0) -signature_parameter_name(#10417,0,"callbackfn") -signature_contains_type(#10002,#10417,1) -signature_parameter_name(#10417,1,"thisArg") -signature_types(#10416,0,"(value: ConcatArray, index: number, array: ConcatArray, index: number, array: Conca...",0,2) -signature_contains_type(#10075,#10415,-1) -signature_contains_type(#10159,#10415,0) -signature_parameter_name(#10415,0,"callbackfn") -signature_contains_type(#10002,#10415,1) -signature_parameter_name(#10415,1,"thisArg") -signature_types(#10414,0,"(value: ConcatArray, index: number, array: ConcatArray(callbackfn: (value: ConcatArray, index: number, array: Co...",1,2) -signature_contains_type(#10079,#10413,-1) -signature_parameter_name(#10413,0,"U") -signature_contains_type(#10161,#10413,1) -signature_parameter_name(#10413,1,"callbackfn") -signature_contains_type(#10002,#10413,2) -signature_parameter_name(#10413,2,"thisArg") -signature_types(#10410,0,">(callbackfn: (value: ConcatArray, index: number, array: ConcatArray, index: number, array: Conca...",0,2) -signature_contains_type(#10029,#10411,-1) -signature_contains_type(#10163,#10411,0) -signature_parameter_name(#10411,0,"callbackfn") -signature_contains_type(#10002,#10411,1) -signature_parameter_name(#10411,1,"thisArg") -signature_types(#10409,0,"(previousValue: ConcatArray, currentValue: ConcatArray, currentValue: Conca...",0,1) -signature_contains_type(#10027,#10405,-1) -signature_contains_type(#10165,#10405,0) -signature_parameter_name(#10405,0,"callbackfn") -signature_types(#10406,0,"(callbackfn: (previousValue: ConcatArray, currentValue: Conca...",0,2) -signature_contains_type(#10027,#10406,-1) -signature_contains_type(#10165,#10406,0) -signature_parameter_name(#10406,0,"callbackfn") -signature_contains_type(#10027,#10406,1) -signature_parameter_name(#10406,1,"initialValue") -signature_types(#10408,0,"(previousValue: U, currentValue: ConcatArray, currentIndex: n...",0,4) -signature_contains_type(#10078,#10408,-1) -signature_contains_type(#10078,#10408,0) -signature_parameter_name(#10408,0,"previousValue") -signature_contains_type(#10027,#10408,1) -signature_parameter_name(#10408,1,"currentValue") -signature_contains_type(#10009,#10408,2) -signature_parameter_name(#10408,2,"currentIndex") -signature_contains_type(#10029,#10408,3) -signature_parameter_name(#10408,3,"array") -signature_types(#10407,0,"(callbackfn: (previousValue: U, currentValue: ConcatArray,...",1,2) -signature_contains_type(#10078,#10407,-1) -signature_parameter_name(#10407,0,"U") -signature_contains_type(#10166,#10407,1) -signature_parameter_name(#10407,1,"callbackfn") -signature_contains_type(#10078,#10407,2) -signature_parameter_name(#10407,2,"initialValue") -signature_types(#10428,0,"(start?: number, end?: number): string[] | ConcatArray[]",0,2) -signature_contains_type(#10170,#10428,-1) -signature_contains_type(#10009,#10428,0) -signature_parameter_name(#10428,0,"start") -signature_contains_type(#10009,#10428,1) -signature_parameter_name(#10428,1,"end") -signature_types(#10453,0,"(...items: string[]): number",0,1) -signature_contains_type(#10009,#10453,-1) -signature_contains_type(#10014,#10453,0) -signature_parameter_name(#10453,0,"items") -signature_types(#10451,0,"(): string[]",0,0) -signature_contains_type(#10014,#10451,-1) -signature_types(#10449,0,"(a: string, b: string): number",0,2) -signature_contains_type(#10009,#10449,-1) -signature_contains_type(#10008,#10449,0) -signature_parameter_name(#10449,0,"a") -signature_contains_type(#10008,#10449,1) -signature_parameter_name(#10449,1,"b") -signature_types(#10448,0,"(compareFn?: (a: string, b: string) => number): string[]",0,1) -signature_contains_type(#10014,#10448,-1) -signature_contains_type(#10178,#10448,0) -signature_parameter_name(#10448,0,"compareFn") -signature_types(#10446,0,"(start: number, deleteCount?: number): string[]",0,2) -signature_contains_type(#10014,#10446,-1) -signature_contains_type(#10009,#10446,0) -signature_parameter_name(#10446,0,"start") -signature_contains_type(#10009,#10446,1) -signature_parameter_name(#10446,1,"deleteCount") -signature_types(#10447,0,"(start: number, deleteCount: number, ...items: string[]): string[]",0,3) -signature_contains_type(#10014,#10447,-1) -signature_contains_type(#10009,#10447,0) -signature_parameter_name(#10447,0,"start") -signature_contains_type(#10009,#10447,1) -signature_parameter_name(#10447,1,"deleteCount") -signature_contains_type(#10014,#10447,2) -signature_parameter_name(#10447,2,"items") -signature_types(#10442,0,"(value: string, index: number, array: string[]): boolean",0,3) -signature_contains_type(#10022,#10442,-1) -signature_contains_type(#10008,#10442,0) -signature_parameter_name(#10442,0,"value") -signature_contains_type(#10009,#10442,1) -signature_parameter_name(#10442,1,"index") -signature_contains_type(#10014,#10442,2) -signature_parameter_name(#10442,2,"array") -signature_types(#10441,0,"(callbackfn: (value: string, index: number, array: string[]) => boole...",0,2) -signature_contains_type(#10022,#10441,-1) -signature_contains_type(#10184,#10441,0) -signature_parameter_name(#10441,0,"callbackfn") -signature_contains_type(#10002,#10441,1) -signature_parameter_name(#10441,1,"thisArg") -signature_types(#10440,0,"(value: string, index: number, array: string[]): void",0,3) -signature_contains_type(#10075,#10440,-1) -signature_contains_type(#10008,#10440,0) -signature_parameter_name(#10440,0,"value") -signature_contains_type(#10009,#10440,1) -signature_parameter_name(#10440,1,"index") -signature_contains_type(#10014,#10440,2) -signature_parameter_name(#10440,2,"array") -signature_types(#10439,0,"(callbackfn: (value: string, index: number, array: string[]) => void,...",0,2) -signature_contains_type(#10075,#10439,-1) -signature_contains_type(#10187,#10439,0) -signature_parameter_name(#10439,0,"callbackfn") -signature_contains_type(#10002,#10439,1) -signature_parameter_name(#10439,1,"thisArg") -signature_types(#10438,0,"(value: string, index: number, array: string[]): U",0,3) -signature_contains_type(#10078,#10438,-1) -signature_contains_type(#10008,#10438,0) -signature_parameter_name(#10438,0,"value") -signature_contains_type(#10009,#10438,1) -signature_parameter_name(#10438,1,"index") -signature_contains_type(#10014,#10438,2) -signature_parameter_name(#10438,2,"array") -signature_types(#10437,0,"(callbackfn: (value: string, index: number, array: string[]) => U,...",1,2) -signature_contains_type(#10079,#10437,-1) -signature_parameter_name(#10437,0,"U") -signature_contains_type(#10190,#10437,1) -signature_parameter_name(#10437,1,"callbackfn") -signature_contains_type(#10002,#10437,2) -signature_parameter_name(#10437,2,"thisArg") -signature_types(#10434,0,"(callbackfn: (value: string, index: number, array: ...",1,2) -signature_contains_type(#10083,#10434,-1) -signature_contains_type(#10008,#10434,0) -signature_parameter_name(#10434,0,"S") -signature_contains_type(#10184,#10434,1) -signature_parameter_name(#10434,1,"callbackfn") -signature_contains_type(#10002,#10434,2) -signature_parameter_name(#10434,2,"thisArg") -signature_types(#10436,0,"(value: string, index: number, array: string[]): any",0,3) -signature_contains_type(#10002,#10436,-1) -signature_contains_type(#10008,#10436,0) -signature_parameter_name(#10436,0,"value") -signature_contains_type(#10009,#10436,1) -signature_parameter_name(#10436,1,"index") -signature_contains_type(#10014,#10436,2) -signature_parameter_name(#10436,2,"array") -signature_types(#10435,0,"(callbackfn: (value: string, index: number, array: string[]) => any, ...",0,2) -signature_contains_type(#10014,#10435,-1) -signature_contains_type(#10193,#10435,0) -signature_parameter_name(#10435,0,"callbackfn") -signature_contains_type(#10002,#10435,1) -signature_parameter_name(#10435,1,"thisArg") -signature_types(#10433,0,"(previousValue: string, currentValue: string, currentIndex: number, a...",0,4) -signature_contains_type(#10008,#10433,-1) -signature_contains_type(#10008,#10433,0) -signature_parameter_name(#10433,0,"previousValue") -signature_contains_type(#10008,#10433,1) -signature_parameter_name(#10433,1,"currentValue") -signature_contains_type(#10009,#10433,2) -signature_parameter_name(#10433,2,"currentIndex") -signature_contains_type(#10014,#10433,3) -signature_parameter_name(#10433,3,"array") -signature_types(#10429,0,"(callbackfn: (previousValue: string, currentValue: string, currentInd...",0,1) -signature_contains_type(#10008,#10429,-1) -signature_contains_type(#10196,#10429,0) -signature_parameter_name(#10429,0,"callbackfn") -signature_types(#10430,0,"(callbackfn: (previousValue: string, currentValue: string, currentInd...",0,2) -signature_contains_type(#10008,#10430,-1) -signature_contains_type(#10196,#10430,0) -signature_parameter_name(#10430,0,"callbackfn") -signature_contains_type(#10008,#10430,1) -signature_parameter_name(#10430,1,"initialValue") -signature_types(#10432,0,"(previousValue: U, currentValue: string, currentIndex: number, array:...",0,4) -signature_contains_type(#10078,#10432,-1) -signature_contains_type(#10078,#10432,0) -signature_parameter_name(#10432,0,"previousValue") -signature_contains_type(#10008,#10432,1) -signature_parameter_name(#10432,1,"currentValue") -signature_contains_type(#10009,#10432,2) -signature_parameter_name(#10432,2,"currentIndex") -signature_contains_type(#10014,#10432,3) -signature_parameter_name(#10432,3,"array") -signature_types(#10431,0,"(callbackfn: (previousValue: U, currentValue: string, currentIndex...",1,2) -signature_contains_type(#10078,#10431,-1) -signature_parameter_name(#10431,0,"U") -signature_contains_type(#10197,#10431,1) -signature_parameter_name(#10431,1,"callbackfn") -signature_contains_type(#10078,#10431,2) -signature_parameter_name(#10431,2,"initialValue") -signature_types(#10443,0,"(start: number, deleteCount?: number): string[] | ConcatArray...",0,2) -signature_contains_type(#10170,#10443,-1) -signature_contains_type(#10009,#10443,0) -signature_parameter_name(#10443,0,"start") -signature_contains_type(#10009,#10443,1) -signature_parameter_name(#10443,1,"deleteCount") -signature_types(#10444,0,"(start: number, deleteCount: number, ...items: ConcatArray[])...",0,3) -signature_contains_type(#10170,#10444,-1) -signature_contains_type(#10009,#10444,0) -signature_parameter_name(#10444,0,"start") -signature_contains_type(#10009,#10444,1) -signature_parameter_name(#10444,1,"deleteCount") -signature_contains_type(#10029,#10444,2) -signature_parameter_name(#10444,2,"items") -signature_types(#10445,0,"(start: number, deleteCount: number, ...items: string[]): string[] | ...",0,3) -signature_contains_type(#10170,#10445,-1) -signature_contains_type(#10009,#10445,0) -signature_parameter_name(#10445,0,"start") -signature_contains_type(#10009,#10445,1) -signature_parameter_name(#10445,1,"deleteCount") -signature_contains_type(#10014,#10445,2) -signature_parameter_name(#10445,2,"items") -signature_types(#10450,0,"(): string[] | ConcatArray[]",0,0) -signature_contains_type(#10170,#10450,-1) -signature_types(#10452,0,"(...items: ConcatArray[]): string[] | ConcatArray[]",0,1) -signature_contains_type(#10170,#10452,-1) -signature_contains_type(#10029,#10452,0) -signature_parameter_name(#10452,0,"items") -signature_types(#10525,0,"(pos: number): string",0,1) -signature_contains_type(#10008,#10525,-1) -signature_contains_type(#10009,#10525,0) -signature_parameter_name(#10525,0,"pos") -signature_types(#10524,0,"(index: number): number",0,1) -signature_contains_type(#10009,#10524,-1) -signature_contains_type(#10009,#10524,0) -signature_parameter_name(#10524,0,"index") -signature_types(#10522,0,"(that: string): number",0,1) -signature_contains_type(#10009,#10522,-1) -signature_contains_type(#10008,#10522,0) -signature_parameter_name(#10522,0,"that") -signature_types(#10523,0,"(that: string, locales?: string | string[], options?: Intl.CollatorOp...",0,3) -signature_contains_type(#10009,#10523,-1) -signature_contains_type(#10008,#10523,0) -signature_parameter_name(#10523,0,"that") -signature_contains_type(#10016,#10523,1) -signature_parameter_name(#10523,1,"locales") -signature_contains_type(#10202,#10523,2) -signature_parameter_name(#10523,2,"options") -signature_types(#10466,0,"(regexp: string | RegExp): RegExpMatchArray",0,1) -signature_contains_type(#10205,#10466,-1) -signature_contains_type(#10209,#10466,0) -signature_parameter_name(#10466,0,"regexp") -signature_types(#10463,0,"(searchValue: string | RegExp, replaceValue: string): string",0,2) -signature_contains_type(#10008,#10463,-1) -signature_contains_type(#10209,#10463,0) -signature_parameter_name(#10463,0,"searchValue") -signature_contains_type(#10008,#10463,1) -signature_parameter_name(#10463,1,"replaceValue") -signature_types(#10465,0,"(substring: string, ...args: any[]): string",0,2) -signature_contains_type(#10008,#10465,-1) -signature_contains_type(#10008,#10465,0) -signature_parameter_name(#10465,0,"substring") -signature_contains_type(#10054,#10465,1) -signature_parameter_name(#10465,1,"args") -signature_types(#10464,0,"(searchValue: string | RegExp, replacer: (substring: string, ...args:...",0,2) -signature_contains_type(#10008,#10464,-1) -signature_contains_type(#10209,#10464,0) -signature_parameter_name(#10464,0,"searchValue") -signature_contains_type(#10211,#10464,1) -signature_parameter_name(#10464,1,"replacer") -signature_types(#10462,0,"(regexp: string | RegExp): number",0,1) -signature_contains_type(#10009,#10462,-1) -signature_contains_type(#10209,#10462,0) -signature_parameter_name(#10462,0,"regexp") -signature_types(#10461,0,"(separator: string | RegExp, limit?: number): string[]",0,2) -signature_contains_type(#10014,#10461,-1) -signature_contains_type(#10209,#10461,0) -signature_parameter_name(#10461,0,"separator") -signature_contains_type(#10009,#10461,1) -signature_parameter_name(#10461,1,"limit") -signature_types(#10460,0,"(from: number, length?: number): string",0,2) -signature_contains_type(#10008,#10460,-1) -signature_contains_type(#10009,#10460,0) -signature_parameter_name(#10460,0,"from") -signature_contains_type(#10009,#10460,1) -signature_parameter_name(#10460,1,"length") -signature_types(#10469,0,"(string: string): RegExpExecArray",0,1) -signature_contains_type(#10216,#10469,-1) -signature_contains_type(#10008,#10469,0) -signature_parameter_name(#10469,0,"string") -signature_types(#10468,0,"(string: string): boolean",0,1) -signature_contains_type(#10022,#10468,-1) -signature_contains_type(#10008,#10468,0) -signature_parameter_name(#10468,0,"string") -signature_types(#10467,0,"(): RegExp",0,0) -signature_contains_type(#10207,#10467,-1) -signature_types(#10520,0,"(compareFn?: (a: string, b: string) => number): RegExpExecArray",0,1) -signature_contains_type(#10216,#10520,-1) -signature_contains_type(#10178,#10520,0) -signature_parameter_name(#10520,0,"compareFn") -signature_types(#10495,0,"(): S",0,0) -signature_contains_type(#10082,#10495,-1) -signature_types(#10494,0,"(...items: S[]): number",0,1) -signature_contains_type(#10009,#10494,-1) -signature_contains_type(#10083,#10494,0) -signature_parameter_name(#10494,0,"items") -signature_types(#10491,0,"(...items: ConcatArray[]): S[]",0,1) -signature_contains_type(#10083,#10491,-1) -signature_contains_type(#10225,#10491,0) -signature_parameter_name(#10491,0,"items") -signature_types(#10492,0,"(...items: (S | ConcatArray)[]): S[]",0,1) -signature_contains_type(#10083,#10492,-1) -signature_contains_type(#10227,#10492,0) -signature_parameter_name(#10492,0,"items") -signature_types(#10490,0,"(): S[]",0,0) -signature_contains_type(#10083,#10490,-1) -signature_types(#10489,0,"(start?: number, end?: number): S[]",0,2) -signature_contains_type(#10083,#10489,-1) -signature_contains_type(#10009,#10489,0) -signature_parameter_name(#10489,0,"start") -signature_contains_type(#10009,#10489,1) -signature_parameter_name(#10489,1,"end") -signature_types(#10488,0,"(a: S, b: S): number",0,2) -signature_contains_type(#10009,#10488,-1) -signature_contains_type(#10082,#10488,0) -signature_parameter_name(#10488,0,"a") -signature_contains_type(#10082,#10488,1) -signature_parameter_name(#10488,1,"b") -signature_types(#10487,0,"(compareFn?: (a: S, b: S) => number): S[]",0,1) -signature_contains_type(#10083,#10487,-1) -signature_contains_type(#10231,#10487,0) -signature_parameter_name(#10487,0,"compareFn") -signature_types(#10485,0,"(start: number, deleteCount?: number): S[]",0,2) -signature_contains_type(#10083,#10485,-1) -signature_contains_type(#10009,#10485,0) -signature_parameter_name(#10485,0,"start") -signature_contains_type(#10009,#10485,1) -signature_parameter_name(#10485,1,"deleteCount") -signature_types(#10486,0,"(start: number, deleteCount: number, ...items: S[]): S[]",0,3) -signature_contains_type(#10083,#10486,-1) -signature_contains_type(#10009,#10486,0) -signature_parameter_name(#10486,0,"start") -signature_contains_type(#10009,#10486,1) -signature_parameter_name(#10486,1,"deleteCount") -signature_contains_type(#10083,#10486,2) -signature_parameter_name(#10486,2,"items") -signature_types(#10484,0,"(searchElement: S, fromIndex?: number): number",0,2) -signature_contains_type(#10009,#10484,-1) -signature_contains_type(#10082,#10484,0) -signature_parameter_name(#10484,0,"searchElement") -signature_contains_type(#10009,#10484,1) -signature_parameter_name(#10484,1,"fromIndex") -signature_types(#10483,0,"(value: S, index: number, array: S[]): boolean",0,3) -signature_contains_type(#10022,#10483,-1) -signature_contains_type(#10082,#10483,0) -signature_parameter_name(#10483,0,"value") -signature_contains_type(#10009,#10483,1) -signature_parameter_name(#10483,1,"index") -signature_contains_type(#10083,#10483,2) -signature_parameter_name(#10483,2,"array") -signature_types(#10482,0,"(callbackfn: (value: S, index: number, array: S[]) => boolean, thisAr...",0,2) -signature_contains_type(#10022,#10482,-1) -signature_contains_type(#10235,#10482,0) -signature_parameter_name(#10482,0,"callbackfn") -signature_contains_type(#10002,#10482,1) -signature_parameter_name(#10482,1,"thisArg") -signature_types(#10481,0,"(value: S, index: number, array: S[]): void",0,3) -signature_contains_type(#10075,#10481,-1) -signature_contains_type(#10082,#10481,0) -signature_parameter_name(#10481,0,"value") -signature_contains_type(#10009,#10481,1) -signature_parameter_name(#10481,1,"index") -signature_contains_type(#10083,#10481,2) -signature_parameter_name(#10481,2,"array") -signature_types(#10480,0,"(callbackfn: (value: S, index: number, array: S[]) => void, thisArg?:...",0,2) -signature_contains_type(#10075,#10480,-1) -signature_contains_type(#10237,#10480,0) -signature_parameter_name(#10480,0,"callbackfn") -signature_contains_type(#10002,#10480,1) -signature_parameter_name(#10480,1,"thisArg") -signature_types(#10479,0,"(value: S, index: number, array: S[]): U",0,3) -signature_contains_type(#10078,#10479,-1) -signature_contains_type(#10082,#10479,0) -signature_parameter_name(#10479,0,"value") -signature_contains_type(#10009,#10479,1) -signature_parameter_name(#10479,1,"index") -signature_contains_type(#10083,#10479,2) -signature_parameter_name(#10479,2,"array") -signature_types(#10478,0,"(callbackfn: (value: S, index: number, array: S[]) => U, thisArg?:...",1,2) -signature_contains_type(#10079,#10478,-1) -signature_parameter_name(#10478,0,"U") -signature_contains_type(#10239,#10478,1) -signature_parameter_name(#10478,1,"callbackfn") -signature_contains_type(#10002,#10478,2) -signature_parameter_name(#10478,2,"thisArg") -signature_types(#10475,0,"(callbackfn: (value: S, index: number, array: S[]) => va...",1,2) -signature_contains_type(#10083,#10475,-1) -signature_contains_type(#10008,#10475,0) -signature_parameter_name(#10475,0,"S") -signature_contains_type(#10235,#10475,1) -signature_parameter_name(#10475,1,"callbackfn") -signature_contains_type(#10002,#10475,2) -signature_parameter_name(#10475,2,"thisArg") -signature_types(#10477,0,"(value: S, index: number, array: S[]): any",0,3) -signature_contains_type(#10002,#10477,-1) -signature_contains_type(#10082,#10477,0) -signature_parameter_name(#10477,0,"value") -signature_contains_type(#10009,#10477,1) -signature_parameter_name(#10477,1,"index") -signature_contains_type(#10083,#10477,2) -signature_parameter_name(#10477,2,"array") -signature_types(#10476,0,"(callbackfn: (value: S, index: number, array: S[]) => any, thisArg?: ...",0,2) -signature_contains_type(#10083,#10476,-1) -signature_contains_type(#10241,#10476,0) -signature_parameter_name(#10476,0,"callbackfn") -signature_contains_type(#10002,#10476,1) -signature_parameter_name(#10476,1,"thisArg") -signature_types(#10474,0,"(previousValue: S, currentValue: S, currentIndex: number, array: S[])...",0,4) -signature_contains_type(#10082,#10474,-1) -signature_contains_type(#10082,#10474,0) -signature_parameter_name(#10474,0,"previousValue") -signature_contains_type(#10082,#10474,1) -signature_parameter_name(#10474,1,"currentValue") -signature_contains_type(#10009,#10474,2) -signature_parameter_name(#10474,2,"currentIndex") -signature_contains_type(#10083,#10474,3) -signature_parameter_name(#10474,3,"array") -signature_types(#10470,0,"(callbackfn: (previousValue: S, currentValue: S, currentIndex: number...",0,1) -signature_contains_type(#10082,#10470,-1) -signature_contains_type(#10243,#10470,0) -signature_parameter_name(#10470,0,"callbackfn") -signature_types(#10471,0,"(callbackfn: (previousValue: S, currentValue: S, currentIndex: number...",0,2) -signature_contains_type(#10082,#10471,-1) -signature_contains_type(#10243,#10471,0) -signature_parameter_name(#10471,0,"callbackfn") -signature_contains_type(#10082,#10471,1) -signature_parameter_name(#10471,1,"initialValue") -signature_types(#10473,0,"(previousValue: U, currentValue: S, currentIndex: number, array: S[])...",0,4) -signature_contains_type(#10078,#10473,-1) -signature_contains_type(#10078,#10473,0) -signature_parameter_name(#10473,0,"previousValue") -signature_contains_type(#10082,#10473,1) -signature_parameter_name(#10473,1,"currentValue") -signature_contains_type(#10009,#10473,2) -signature_parameter_name(#10473,2,"currentIndex") -signature_contains_type(#10083,#10473,3) -signature_parameter_name(#10473,3,"array") -signature_types(#10472,0,"(callbackfn: (previousValue: U, currentValue: S, currentIndex: num...",1,2) -signature_contains_type(#10078,#10472,-1) -signature_parameter_name(#10472,0,"U") -signature_contains_type(#10244,#10472,1) -signature_parameter_name(#10472,1,"callbackfn") -signature_contains_type(#10078,#10472,2) -signature_parameter_name(#10472,2,"initialValue") -signature_types(#10493,0,"(start?: number, end?: number): string | S[]",0,2) -signature_contains_type(#10247,#10493,-1) -signature_contains_type(#10009,#10493,0) -signature_parameter_name(#10493,0,"start") -signature_contains_type(#10009,#10493,1) -signature_parameter_name(#10493,1,"end") -signature_types(#10519,0,"(): U",0,0) -signature_contains_type(#10078,#10519,-1) -signature_types(#10518,0,"(...items: U[]): number",0,1) -signature_contains_type(#10009,#10518,-1) -signature_contains_type(#10079,#10518,0) -signature_parameter_name(#10518,0,"items") -signature_types(#10516,0,"(...items: ConcatArray[]): U[]",0,1) -signature_contains_type(#10079,#10516,-1) -signature_contains_type(#10253,#10516,0) -signature_parameter_name(#10516,0,"items") -signature_types(#10517,0,"(...items: (U | ConcatArray)[]): U[]",0,1) -signature_contains_type(#10079,#10517,-1) -signature_contains_type(#10255,#10517,0) -signature_parameter_name(#10517,0,"items") -signature_types(#10515,0,"(): U[]",0,0) -signature_contains_type(#10079,#10515,-1) -signature_types(#10514,0,"(start?: number, end?: number): U[]",0,2) -signature_contains_type(#10079,#10514,-1) -signature_contains_type(#10009,#10514,0) -signature_parameter_name(#10514,0,"start") -signature_contains_type(#10009,#10514,1) -signature_parameter_name(#10514,1,"end") -signature_types(#10513,0,"(a: U, b: U): number",0,2) -signature_contains_type(#10009,#10513,-1) -signature_contains_type(#10078,#10513,0) -signature_parameter_name(#10513,0,"a") -signature_contains_type(#10078,#10513,1) -signature_parameter_name(#10513,1,"b") -signature_types(#10512,0,"(compareFn?: (a: U, b: U) => number): U[]",0,1) -signature_contains_type(#10079,#10512,-1) -signature_contains_type(#10259,#10512,0) -signature_parameter_name(#10512,0,"compareFn") -signature_types(#10510,0,"(start: number, deleteCount?: number): U[]",0,2) -signature_contains_type(#10079,#10510,-1) -signature_contains_type(#10009,#10510,0) -signature_parameter_name(#10510,0,"start") -signature_contains_type(#10009,#10510,1) -signature_parameter_name(#10510,1,"deleteCount") -signature_types(#10511,0,"(start: number, deleteCount: number, ...items: U[]): U[]",0,3) -signature_contains_type(#10079,#10511,-1) -signature_contains_type(#10009,#10511,0) -signature_parameter_name(#10511,0,"start") -signature_contains_type(#10009,#10511,1) -signature_parameter_name(#10511,1,"deleteCount") -signature_contains_type(#10079,#10511,2) -signature_parameter_name(#10511,2,"items") -signature_types(#10509,0,"(searchElement: U, fromIndex?: number): number",0,2) -signature_contains_type(#10009,#10509,-1) -signature_contains_type(#10078,#10509,0) -signature_parameter_name(#10509,0,"searchElement") -signature_contains_type(#10009,#10509,1) -signature_parameter_name(#10509,1,"fromIndex") -signature_types(#10508,0,"(value: U, index: number, array: U[]): boolean",0,3) -signature_contains_type(#10022,#10508,-1) -signature_contains_type(#10078,#10508,0) -signature_parameter_name(#10508,0,"value") -signature_contains_type(#10009,#10508,1) -signature_parameter_name(#10508,1,"index") -signature_contains_type(#10079,#10508,2) -signature_parameter_name(#10508,2,"array") -signature_types(#10507,0,"(callbackfn: (value: U, index: number, array: U[]) => boolean, thisAr...",0,2) -signature_contains_type(#10022,#10507,-1) -signature_contains_type(#10263,#10507,0) -signature_parameter_name(#10507,0,"callbackfn") -signature_contains_type(#10002,#10507,1) -signature_parameter_name(#10507,1,"thisArg") -signature_types(#10506,0,"(value: U, index: number, array: U[]): void",0,3) -signature_contains_type(#10075,#10506,-1) -signature_contains_type(#10078,#10506,0) -signature_parameter_name(#10506,0,"value") -signature_contains_type(#10009,#10506,1) -signature_parameter_name(#10506,1,"index") -signature_contains_type(#10079,#10506,2) -signature_parameter_name(#10506,2,"array") -signature_types(#10505,0,"(callbackfn: (value: U, index: number, array: U[]) => void, thisArg?:...",0,2) -signature_contains_type(#10075,#10505,-1) -signature_contains_type(#10265,#10505,0) -signature_parameter_name(#10505,0,"callbackfn") -signature_contains_type(#10002,#10505,1) -signature_parameter_name(#10505,1,"thisArg") -signature_types(#10504,0,"(value: U, index: number, array: U[]): U",0,3) -signature_contains_type(#10078,#10504,-1) -signature_contains_type(#10078,#10504,0) -signature_parameter_name(#10504,0,"value") -signature_contains_type(#10009,#10504,1) -signature_parameter_name(#10504,1,"index") -signature_contains_type(#10079,#10504,2) -signature_parameter_name(#10504,2,"array") -signature_types(#10503,0,"(callbackfn: (value: U, index: number, array: U[]) => U, thisArg?:...",1,2) -signature_contains_type(#10079,#10503,-1) -signature_parameter_name(#10503,0,"U") -signature_contains_type(#10267,#10503,1) -signature_parameter_name(#10503,1,"callbackfn") -signature_contains_type(#10002,#10503,2) -signature_parameter_name(#10503,2,"thisArg") -signature_types(#10500,0,"(callbackfn: (value: U, index: number, array: U[]) => va...",1,2) -signature_contains_type(#10083,#10500,-1) -signature_parameter_name(#10500,0,"S") -signature_contains_type(#10263,#10500,1) -signature_parameter_name(#10500,1,"callbackfn") -signature_contains_type(#10002,#10500,2) -signature_parameter_name(#10500,2,"thisArg") -signature_types(#10502,0,"(value: U, index: number, array: U[]): any",0,3) -signature_contains_type(#10002,#10502,-1) -signature_contains_type(#10078,#10502,0) -signature_parameter_name(#10502,0,"value") -signature_contains_type(#10009,#10502,1) -signature_parameter_name(#10502,1,"index") -signature_contains_type(#10079,#10502,2) -signature_parameter_name(#10502,2,"array") -signature_types(#10501,0,"(callbackfn: (value: U, index: number, array: U[]) => any, thisArg?: ...",0,2) -signature_contains_type(#10079,#10501,-1) -signature_contains_type(#10269,#10501,0) -signature_parameter_name(#10501,0,"callbackfn") -signature_contains_type(#10002,#10501,1) -signature_parameter_name(#10501,1,"thisArg") -signature_types(#10499,0,"(previousValue: U, currentValue: U, currentIndex: number, array: U[])...",0,4) -signature_contains_type(#10078,#10499,-1) -signature_contains_type(#10078,#10499,0) -signature_parameter_name(#10499,0,"previousValue") -signature_contains_type(#10078,#10499,1) -signature_parameter_name(#10499,1,"currentValue") -signature_contains_type(#10009,#10499,2) -signature_parameter_name(#10499,2,"currentIndex") -signature_contains_type(#10079,#10499,3) -signature_parameter_name(#10499,3,"array") -signature_types(#10496,0,"(callbackfn: (previousValue: U, currentValue: U, currentIndex: number...",0,1) -signature_contains_type(#10078,#10496,-1) -signature_contains_type(#10271,#10496,0) -signature_parameter_name(#10496,0,"callbackfn") -signature_types(#10497,0,"(callbackfn: (previousValue: U, currentValue: U, currentIndex: number...",0,2) -signature_contains_type(#10078,#10497,-1) -signature_contains_type(#10271,#10497,0) -signature_parameter_name(#10497,0,"callbackfn") -signature_contains_type(#10078,#10497,1) -signature_parameter_name(#10497,1,"initialValue") -signature_types(#10498,0,"(callbackfn: (previousValue: U, currentValue: U, currentIndex: num...",1,2) -signature_contains_type(#10078,#10498,-1) -signature_parameter_name(#10498,0,"U") -signature_contains_type(#10271,#10498,1) -signature_parameter_name(#10498,1,"callbackfn") -signature_contains_type(#10078,#10498,2) -signature_parameter_name(#10498,2,"initialValue") -signature_types(#10521,0,"(compareFn?: (a: string, b: string) => number): RegExpMatchArray",0,1) -signature_contains_type(#10205,#10521,-1) -signature_contains_type(#10178,#10521,0) -signature_parameter_name(#10521,0,"compareFn") -signature_types(#10549,0,"(...items: number[]): number",0,1) -signature_contains_type(#10009,#10549,-1) -signature_contains_type(#10274,#10549,0) -signature_parameter_name(#10549,0,"items") -signature_types(#10547,0,"(...items: ConcatArray[]): number[]",0,1) -signature_contains_type(#10274,#10547,-1) -signature_contains_type(#10277,#10547,0) -signature_parameter_name(#10547,0,"items") -signature_types(#10548,0,"(...items: (number | ConcatArray)[]): number[]",0,1) -signature_contains_type(#10274,#10548,-1) -signature_contains_type(#10279,#10548,0) -signature_parameter_name(#10548,0,"items") -signature_types(#10546,0,"(): number[]",0,0) -signature_contains_type(#10274,#10546,-1) -signature_types(#10545,0,"(start?: number, end?: number): number[]",0,2) -signature_contains_type(#10274,#10545,-1) -signature_contains_type(#10009,#10545,0) -signature_parameter_name(#10545,0,"start") -signature_contains_type(#10009,#10545,1) -signature_parameter_name(#10545,1,"end") -signature_types(#10544,0,"(a: number, b: number): number",0,2) -signature_contains_type(#10009,#10544,-1) -signature_contains_type(#10009,#10544,0) -signature_parameter_name(#10544,0,"a") -signature_contains_type(#10009,#10544,1) -signature_parameter_name(#10544,1,"b") -signature_types(#10543,0,"(compareFn?: (a: number, b: number) => number): number[]",0,1) -signature_contains_type(#10274,#10543,-1) -signature_contains_type(#10283,#10543,0) -signature_parameter_name(#10543,0,"compareFn") -signature_types(#10541,0,"(start: number, deleteCount?: number): number[]",0,2) -signature_contains_type(#10274,#10541,-1) -signature_contains_type(#10009,#10541,0) -signature_parameter_name(#10541,0,"start") -signature_contains_type(#10009,#10541,1) -signature_parameter_name(#10541,1,"deleteCount") -signature_types(#10542,0,"(start: number, deleteCount: number, ...items: number[]): number[]",0,3) -signature_contains_type(#10274,#10542,-1) -signature_contains_type(#10009,#10542,0) -signature_parameter_name(#10542,0,"start") -signature_contains_type(#10009,#10542,1) -signature_parameter_name(#10542,1,"deleteCount") -signature_contains_type(#10274,#10542,2) -signature_parameter_name(#10542,2,"items") -signature_types(#10540,0,"(searchElement: number, fromIndex?: number): number",0,2) -signature_contains_type(#10009,#10540,-1) -signature_contains_type(#10009,#10540,0) -signature_parameter_name(#10540,0,"searchElement") -signature_contains_type(#10009,#10540,1) -signature_parameter_name(#10540,1,"fromIndex") -signature_types(#10539,0,"(value: number, index: number, array: number[]): boolean",0,3) -signature_contains_type(#10022,#10539,-1) -signature_contains_type(#10009,#10539,0) -signature_parameter_name(#10539,0,"value") -signature_contains_type(#10009,#10539,1) -signature_parameter_name(#10539,1,"index") -signature_contains_type(#10274,#10539,2) -signature_parameter_name(#10539,2,"array") -signature_types(#10538,0,"(callbackfn: (value: number, index: number, array: number[]) => boole...",0,2) -signature_contains_type(#10022,#10538,-1) -signature_contains_type(#10287,#10538,0) -signature_parameter_name(#10538,0,"callbackfn") -signature_contains_type(#10002,#10538,1) -signature_parameter_name(#10538,1,"thisArg") -signature_types(#10537,0,"(value: number, index: number, array: number[]): void",0,3) -signature_contains_type(#10075,#10537,-1) -signature_contains_type(#10009,#10537,0) -signature_parameter_name(#10537,0,"value") -signature_contains_type(#10009,#10537,1) -signature_parameter_name(#10537,1,"index") -signature_contains_type(#10274,#10537,2) -signature_parameter_name(#10537,2,"array") -signature_types(#10536,0,"(callbackfn: (value: number, index: number, array: number[]) => void,...",0,2) -signature_contains_type(#10075,#10536,-1) -signature_contains_type(#10289,#10536,0) -signature_parameter_name(#10536,0,"callbackfn") -signature_contains_type(#10002,#10536,1) -signature_parameter_name(#10536,1,"thisArg") -signature_types(#10535,0,"(value: number, index: number, array: number[]): U",0,3) -signature_contains_type(#10078,#10535,-1) -signature_contains_type(#10009,#10535,0) -signature_parameter_name(#10535,0,"value") -signature_contains_type(#10009,#10535,1) -signature_parameter_name(#10535,1,"index") -signature_contains_type(#10274,#10535,2) -signature_parameter_name(#10535,2,"array") -signature_types(#10534,0,"(callbackfn: (value: number, index: number, array: number[]) => U,...",1,2) -signature_contains_type(#10079,#10534,-1) -signature_parameter_name(#10534,0,"U") -signature_contains_type(#10291,#10534,1) -signature_parameter_name(#10534,1,"callbackfn") -signature_contains_type(#10002,#10534,2) -signature_parameter_name(#10534,2,"thisArg") -signature_types(#10531,0,"(callbackfn: (value: number, index: number, array: ...",1,2) -signature_contains_type(#10083,#10531,-1) -signature_contains_type(#10009,#10531,0) -signature_parameter_name(#10531,0,"S") -signature_contains_type(#10287,#10531,1) -signature_parameter_name(#10531,1,"callbackfn") -signature_contains_type(#10002,#10531,2) -signature_parameter_name(#10531,2,"thisArg") -signature_types(#10533,0,"(value: number, index: number, array: number[]): any",0,3) -signature_contains_type(#10002,#10533,-1) -signature_contains_type(#10009,#10533,0) -signature_parameter_name(#10533,0,"value") -signature_contains_type(#10009,#10533,1) -signature_parameter_name(#10533,1,"index") -signature_contains_type(#10274,#10533,2) -signature_parameter_name(#10533,2,"array") -signature_types(#10532,0,"(callbackfn: (value: number, index: number, array: number[]) => any, ...",0,2) -signature_contains_type(#10274,#10532,-1) -signature_contains_type(#10293,#10532,0) -signature_parameter_name(#10532,0,"callbackfn") -signature_contains_type(#10002,#10532,1) -signature_parameter_name(#10532,1,"thisArg") -signature_types(#10530,0,"(previousValue: number, currentValue: number, currentIndex: number, a...",0,4) -signature_contains_type(#10009,#10530,-1) -signature_contains_type(#10009,#10530,0) -signature_parameter_name(#10530,0,"previousValue") -signature_contains_type(#10009,#10530,1) -signature_parameter_name(#10530,1,"currentValue") -signature_contains_type(#10009,#10530,2) -signature_parameter_name(#10530,2,"currentIndex") -signature_contains_type(#10274,#10530,3) -signature_parameter_name(#10530,3,"array") -signature_types(#10526,0,"(callbackfn: (previousValue: number, currentValue: number, currentInd...",0,1) -signature_contains_type(#10009,#10526,-1) -signature_contains_type(#10295,#10526,0) -signature_parameter_name(#10526,0,"callbackfn") -signature_types(#10527,0,"(callbackfn: (previousValue: number, currentValue: number, currentInd...",0,2) -signature_contains_type(#10009,#10527,-1) -signature_contains_type(#10295,#10527,0) -signature_parameter_name(#10527,0,"callbackfn") -signature_contains_type(#10009,#10527,1) -signature_parameter_name(#10527,1,"initialValue") -signature_types(#10529,0,"(previousValue: U, currentValue: number, currentIndex: number, array:...",0,4) -signature_contains_type(#10078,#10529,-1) -signature_contains_type(#10078,#10529,0) -signature_parameter_name(#10529,0,"previousValue") -signature_contains_type(#10009,#10529,1) -signature_parameter_name(#10529,1,"currentValue") -signature_contains_type(#10009,#10529,2) -signature_parameter_name(#10529,2,"currentIndex") -signature_contains_type(#10274,#10529,3) -signature_parameter_name(#10529,3,"array") -signature_types(#10528,0,"(callbackfn: (previousValue: U, currentValue: number, currentIndex...",1,2) -signature_contains_type(#10078,#10528,-1) -signature_parameter_name(#10528,0,"U") -signature_contains_type(#10296,#10528,1) -signature_parameter_name(#10528,1,"callbackfn") -signature_contains_type(#10078,#10528,2) -signature_parameter_name(#10528,2,"initialValue") -signature_types(#10550,0,"(): void",0,0) -signature_contains_type(#10075,#10550,-1) -signature_types(#10551,1,"new (): Class",0,0) -signature_contains_type(#10000,#10551,-1) -number_index_type(#10016,#10008) -number_index_type(#10054,#10002) -number_index_type(#10061,#10059) -number_index_type(#10058,#10056) -number_index_type(#10031,#10030) -number_index_type(#10119,#10030) -number_index_type(#10140,#10030) -number_index_type(#10030,#10008) -number_index_type(#10029,#10027) -number_index_type(#10148,#10030) -number_index_type(#10170,#10030) -number_index_type(#10027,#10008) -number_index_type(#10014,#10008) -number_index_type(#10008,#10008) -number_index_type(#10216,#10008) -number_index_type(#10083,#10082) -number_index_type(#10226,#10008) -number_index_type(#10247,#10008) -number_index_type(#10079,#10078) -number_index_type(#10205,#10008) -number_index_type(#10274,#10009) -base_type_names(#10206,#10015) -base_type_names(#10217,#10015) -self_types(#10001,#10000) -self_types(#10005,#10004) -self_types(#10007,#10006) -self_types(#10018,#10017) -self_types(#10041,#10040) -self_types(#10045,#10044) -self_types(#10015,#10058) -self_types(#10028,#10061) -self_types(#10203,#10202) -self_types(#10206,#10205) -self_types(#10208,#10207) -self_types(#10217,#10216) diff --git a/javascript/extractor/tests/ts-full/output/trap/tst.ts.trap b/javascript/extractor/tests/ts-full/output/trap/tst.ts.trap deleted file mode 100644 index e48596e18c8..00000000000 --- a/javascript/extractor/tests/ts-full/output/trap/tst.ts.trap +++ /dev/null @@ -1,917 +0,0 @@ -#10000=@"/tst.ts;sourcefile" -files(#10000,"/tst.ts","tst","ts",0) -#10001=@"/;folder" -folders(#10001,"/","") -containerparent(#10001,#10000) -#10002=@"loc,{#10000},0,0,0,0" -locations_default(#10002,#10000,0,0,0,0) -hasLocation(#10000,#10002) -#20000=@"global_scope" -scopes(#20000,0) -#20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,16,0" -locations_default(#20002,#10000,1,1,16,0) -hasLocation(#20001,#20002) -#20003=@"var;{fun};{#20000}" -variables(#20003,"fun",#20000) -#20004=@"local_namespace_name;{Namespace};{#20000}" -local_namespace_names(#20004,"Namespace",#20000) -#20005=@"var;{Class};{#20000}" -variables(#20005,"Class",#20000) -#20006=@"var;{Enum};{#20000}" -variables(#20006,"Enum",#20000) -#20007=@"var;{class_};{#20000}" -variables(#20007,"class_",#20000) -#20008=@"var;{interface_};{#20000}" -variables(#20008,"interface_",#20000) -#20009=@"var;{namespace_};{#20000}" -variables(#20009,"namespace_",#20000) -#20010=@"var;{enum_};{#20000}" -variables(#20010,"enum_",#20000) -#20011=@"var;{numberArray};{#20000}" -variables(#20011,"numberArray",#20000) -#20012=@"local_type_name;{Class};{#20000}" -local_type_names(#20012,"Class",#20000) -#20013=@"local_type_name;{Interface};{#20000}" -local_type_names(#20013,"Interface",#20000) -#20014=@"local_type_name;{Enum};{#20000}" -local_type_names(#20014,"Enum",#20000) -#20015=@"local_namespace_name;{Enum};{#20000}" -local_namespace_names(#20015,"Enum",#20000) -#20016=* -stmts(#20016,26,#20001,0,"class Class { m(); }") -#20017=@"loc,{#10000},1,1,1,20" -locations_default(#20017,#10000,1,1,1,20) -hasLocation(#20016,#20017) -stmtContainers(#20016,#20001) -#20018=* -exprs(#20018,78,#20016,0,"Class") -#20019=@"loc,{#10000},1,7,1,11" -locations_default(#20019,#10000,1,7,1,11) -hasLocation(#20018,#20019) -enclosingStmt(#20018,#20016) -exprContainers(#20018,#20001) -#20020=@"type;0" -ast_node_type(#20018,#20020) -literals("Class","Class",#20018) -decl(#20018,#20005) -typedecl(#20018,#20012) -#20021=* -scopes(#20021,10) -scopenodes(#20016,#20021) -scopenesting(#20021,#20000) -#20022=* -properties(#20022,#20016,2,0,"m();") -#20023=@"loc,{#10000},1,15,1,18" -locations_default(#20023,#10000,1,15,1,18) -hasLocation(#20022,#20023) -#20024=* -exprs(#20024,0,#20022,0,"m") -#20025=@"loc,{#10000},1,15,1,15" -locations_default(#20025,#10000,1,15,1,15) -hasLocation(#20024,#20025) -enclosingStmt(#20024,#20016) -exprContainers(#20024,#20001) -#20026=@"type;2" -ast_node_type(#20024,#20026) -literals("m","m",#20024) -#20027=* -exprs(#20027,9,#20022,1,"m();") -hasLocation(#20027,#20023) -enclosingStmt(#20027,#20016) -exprContainers(#20027,#20001) -#20028=* -scopes(#20028,1) -scopenodes(#20027,#20028) -scopenesting(#20028,#20021) -#20029=@"var;{arguments};{#20028}" -variables(#20029,"arguments",#20028) -isArgumentsObject(#20029) -#20030=@"symbol;1" -ast_node_symbol(#20027,#20030) -numlines(#20027,1,1,0) -isMethod(#20022) -#20031=* -properties(#20031,#20016,3,0,"constructor() {}") -#20032=@"loc,{#10000},1,13,1,12" -locations_default(#20032,#10000,1,13,1,12) -hasLocation(#20031,#20032) -#20033=* -exprs(#20033,0,#20031,0,"constructor") -hasLocation(#20033,#20032) -enclosingStmt(#20033,#20016) -exprContainers(#20033,#20001) -literals("constructor","constructor",#20033) -#20034=* -exprs(#20034,9,#20031,1,"() {}") -hasLocation(#20034,#20032) -enclosingStmt(#20034,#20016) -exprContainers(#20034,#20001) -#20035=* -scopes(#20035,1) -scopenodes(#20034,#20035) -scopenesting(#20035,#20021) -#20036=@"var;{arguments};{#20035}" -variables(#20036,"arguments",#20035) -isArgumentsObject(#20036) -#20037=* -stmts(#20037,1,#20034,-2,"{}") -hasLocation(#20037,#20032) -stmtContainers(#20037,#20034) -numlines(#20034,1,0,0) -isMethod(#20031) -#20038=@"symbol;0" -ast_node_symbol(#20016,#20038) -#20039=* -stmts(#20039,34,#20001,1,"interfa ... face {}") -#20040=@"loc,{#10000},2,1,2,22" -locations_default(#20040,#10000,2,1,2,22) -hasLocation(#20039,#20040) -stmtContainers(#20039,#20001) -#20041=* -typeexprs(#20041,1,#20039,0,"Interface") -#20042=@"loc,{#10000},2,11,2,19" -locations_default(#20042,#10000,2,11,2,19) -hasLocation(#20041,#20042) -enclosingStmt(#20041,#20039) -exprContainers(#20041,#20001) -#20043=@"type;3" -ast_node_type(#20041,#20043) -literals("Interface","Interface",#20041) -typedecl(#20041,#20013) -#20044=@"symbol;2" -ast_node_symbol(#20039,#20044) -#20045=* -stmts(#20045,31,#20001,2,"namespa ... pace {}") -#20046=@"loc,{#10000},3,1,3,22" -locations_default(#20046,#10000,3,1,3,22) -hasLocation(#20045,#20046) -stmtContainers(#20045,#20001) -#20047=@"symbol;3" -ast_node_symbol(#20045,#20047) -#20048=* -exprs(#20048,78,#20045,-1,"Namespace") -#20049=@"loc,{#10000},3,11,3,19" -locations_default(#20049,#10000,3,11,3,19) -hasLocation(#20048,#20049) -enclosingStmt(#20048,#20045) -exprContainers(#20048,#20001) -#20050=@"type;1" -ast_node_type(#20048,#20050) -literals("Namespace","Namespace",#20048) -namespacedecl(#20048,#20004) -#20051=* -scopes(#20051,9) -scopenodes(#20045,#20051) -scopenesting(#20051,#20000) -#20052=* -stmts(#20052,36,#20001,3,"enum Enum {}") -#20053=@"loc,{#10000},4,1,4,12" -locations_default(#20053,#10000,4,1,4,12) -hasLocation(#20052,#20053) -stmtContainers(#20052,#20001) -#20054=* -exprs(#20054,78,#20052,0,"Enum") -#20055=@"loc,{#10000},4,6,4,9" -locations_default(#20055,#10000,4,6,4,9) -hasLocation(#20054,#20055) -enclosingStmt(#20054,#20052) -exprContainers(#20054,#20001) -#20056=@"type;4" -ast_node_type(#20054,#20056) -literals("Enum","Enum",#20054) -decl(#20054,#20006) -typedecl(#20054,#20014) -namespacedecl(#20054,#20015) -#20057=* -scopes(#20057,14) -scopenodes(#20052,#20057) -scopenesting(#20057,#20000) -#20058=@"symbol;4" -ast_node_symbol(#20052,#20058) -#20059=* -stmts(#20059,23,#20001,4,"let class_: Class;") -#20060=@"loc,{#10000},6,1,6,18" -locations_default(#20060,#10000,6,1,6,18) -hasLocation(#20059,#20060) -stmtContainers(#20059,#20001) -#20061=* -exprs(#20061,64,#20059,0,"class_: Class") -#20062=@"loc,{#10000},6,5,6,17" -locations_default(#20062,#10000,6,5,6,17) -hasLocation(#20061,#20062) -enclosingStmt(#20061,#20059) -exprContainers(#20061,#20001) -#20063=* -exprs(#20063,78,#20061,0,"class_") -#20064=@"loc,{#10000},6,5,6,10" -locations_default(#20064,#10000,6,5,6,10) -hasLocation(#20063,#20064) -enclosingStmt(#20063,#20059) -exprContainers(#20063,#20001) -ast_node_type(#20063,#20020) -literals("class_","class_",#20063) -decl(#20063,#20007) -#20065=* -typeexprs(#20065,0,#20061,2,"Class") -#20066=@"loc,{#10000},6,13,6,17" -locations_default(#20066,#10000,6,13,6,17) -hasLocation(#20065,#20066) -enclosingStmt(#20065,#20059) -exprContainers(#20065,#20001) -ast_node_type(#20065,#20020) -ast_node_symbol(#20065,#20038) -literals("Class","Class",#20065) -typebind(#20065,#20012) -#20067=* -stmts(#20067,23,#20001,5,"let int ... erface;") -#20068=@"loc,{#10000},7,1,7,26" -locations_default(#20068,#10000,7,1,7,26) -hasLocation(#20067,#20068) -stmtContainers(#20067,#20001) -#20069=* -exprs(#20069,64,#20067,0,"interfa ... terface") -#20070=@"loc,{#10000},7,5,7,25" -locations_default(#20070,#10000,7,5,7,25) -hasLocation(#20069,#20070) -enclosingStmt(#20069,#20067) -exprContainers(#20069,#20001) -#20071=* -exprs(#20071,78,#20069,0,"interface_") -#20072=@"loc,{#10000},7,5,7,14" -locations_default(#20072,#10000,7,5,7,14) -hasLocation(#20071,#20072) -enclosingStmt(#20071,#20067) -exprContainers(#20071,#20001) -ast_node_type(#20071,#20043) -literals("interface_","interface_",#20071) -decl(#20071,#20008) -#20073=* -typeexprs(#20073,0,#20069,2,"Interface") -#20074=@"loc,{#10000},7,17,7,25" -locations_default(#20074,#10000,7,17,7,25) -hasLocation(#20073,#20074) -enclosingStmt(#20073,#20067) -exprContainers(#20073,#20001) -ast_node_type(#20073,#20043) -ast_node_symbol(#20073,#20044) -literals("Interface","Interface",#20073) -typebind(#20073,#20013) -#20075=* -stmts(#20075,23,#20001,6,"let nam ... espace;") -#20076=@"loc,{#10000},8,1,8,26" -locations_default(#20076,#10000,8,1,8,26) -hasLocation(#20075,#20076) -stmtContainers(#20075,#20001) -#20077=* -exprs(#20077,64,#20075,0,"namespa ... mespace") -#20078=@"loc,{#10000},8,5,8,25" -locations_default(#20078,#10000,8,5,8,25) -hasLocation(#20077,#20078) -enclosingStmt(#20077,#20075) -exprContainers(#20077,#20001) -#20079=* -exprs(#20079,78,#20077,0,"namespace_") -#20080=@"loc,{#10000},8,5,8,14" -locations_default(#20080,#10000,8,5,8,14) -hasLocation(#20079,#20080) -enclosingStmt(#20079,#20075) -exprContainers(#20079,#20001) -ast_node_type(#20079,#20050) -literals("namespace_","namespace_",#20079) -decl(#20079,#20009) -#20081=* -typeexprs(#20081,0,#20077,2,"Namespace") -#20082=@"loc,{#10000},8,17,8,25" -locations_default(#20082,#10000,8,17,8,25) -hasLocation(#20081,#20082) -enclosingStmt(#20081,#20075) -exprContainers(#20081,#20001) -ast_node_type(#20081,#20050) -literals("Namespace","Namespace",#20081) -#20083=* -stmts(#20083,23,#20001,7,"let enum_: Enum;") -#20084=@"loc,{#10000},9,1,9,16" -locations_default(#20084,#10000,9,1,9,16) -hasLocation(#20083,#20084) -stmtContainers(#20083,#20001) -#20085=* -exprs(#20085,64,#20083,0,"enum_: Enum") -#20086=@"loc,{#10000},9,5,9,15" -locations_default(#20086,#10000,9,5,9,15) -hasLocation(#20085,#20086) -enclosingStmt(#20085,#20083) -exprContainers(#20085,#20001) -#20087=* -exprs(#20087,78,#20085,0,"enum_") -#20088=@"loc,{#10000},9,5,9,9" -locations_default(#20088,#10000,9,5,9,9) -hasLocation(#20087,#20088) -enclosingStmt(#20087,#20083) -exprContainers(#20087,#20001) -ast_node_type(#20087,#20056) -literals("enum_","enum_",#20087) -decl(#20087,#20010) -#20089=* -typeexprs(#20089,0,#20085,2,"Enum") -#20090=@"loc,{#10000},9,12,9,15" -locations_default(#20090,#10000,9,12,9,15) -hasLocation(#20089,#20090) -enclosingStmt(#20089,#20083) -exprContainers(#20089,#20001) -ast_node_type(#20089,#20056) -ast_node_symbol(#20089,#20058) -literals("Enum","Enum",#20089) -typebind(#20089,#20014) -#20091=* -stmts(#20091,23,#20001,8,"let num ... mber[];") -#20092=@"loc,{#10000},11,1,11,26" -locations_default(#20092,#10000,11,1,11,26) -hasLocation(#20091,#20092) -stmtContainers(#20091,#20001) -#20093=* -exprs(#20093,64,#20091,0,"numberA ... umber[]") -#20094=@"loc,{#10000},11,5,11,25" -locations_default(#20094,#10000,11,5,11,25) -hasLocation(#20093,#20094) -enclosingStmt(#20093,#20091) -exprContainers(#20093,#20001) -#20095=* -exprs(#20095,78,#20093,0,"numberArray") -#20096=@"loc,{#10000},11,5,11,15" -locations_default(#20096,#10000,11,5,11,15) -hasLocation(#20095,#20096) -enclosingStmt(#20095,#20091) -exprContainers(#20095,#20001) -#20097=@"type;260" -ast_node_type(#20095,#20097) -literals("numberArray","numberArray",#20095) -decl(#20095,#20011) -#20098=* -typeexprs(#20098,6,#20093,2,"number[]") -#20099=@"loc,{#10000},11,18,11,25" -locations_default(#20099,#10000,11,18,11,25) -hasLocation(#20098,#20099) -enclosingStmt(#20098,#20091) -exprContainers(#20098,#20001) -ast_node_type(#20098,#20097) -#20100=* -typeexprs(#20100,2,#20098,0,"number") -#20101=@"loc,{#10000},11,18,11,23" -locations_default(#20101,#10000,11,18,11,23) -hasLocation(#20100,#20101) -enclosingStmt(#20100,#20091) -exprContainers(#20100,#20001) -#20102=@"type;6" -ast_node_type(#20100,#20102) -literals("number","number",#20100) -#20103=* -stmts(#20103,17,#20001,9,"function fun() {}") -#20104=@"loc,{#10000},13,1,13,17" -locations_default(#20104,#10000,13,1,13,17) -hasLocation(#20103,#20104) -stmtContainers(#20103,#20001) -#20105=* -exprs(#20105,78,#20103,-1,"fun") -#20106=@"loc,{#10000},13,10,13,12" -locations_default(#20106,#10000,13,10,13,12) -hasLocation(#20105,#20106) -exprContainers(#20105,#20103) -#20107=@"type;287" -ast_node_type(#20105,#20107) -literals("fun","fun",#20105) -decl(#20105,#20003) -#20108=* -scopes(#20108,1) -scopenodes(#20103,#20108) -scopenesting(#20108,#20000) -#20109=@"var;{arguments};{#20108}" -variables(#20109,"arguments",#20108) -isArgumentsObject(#20109) -#20110=@"symbol;17" -ast_node_symbol(#20103,#20110) -#20111=* -stmts(#20111,1,#20103,-2,"{}") -#20112=@"loc,{#10000},13,16,13,17" -locations_default(#20112,#10000,13,16,13,17) -hasLocation(#20111,#20112) -stmtContainers(#20111,#20103) -numlines(#20103,1,1,0) -#20113=* -stmts(#20113,2,#20001,10,"fun();") -#20114=@"loc,{#10000},14,1,14,6" -locations_default(#20114,#10000,14,1,14,6) -hasLocation(#20113,#20114) -stmtContainers(#20113,#20001) -#20115=* -exprs(#20115,13,#20113,0,"fun()") -#20116=@"loc,{#10000},14,1,14,5" -locations_default(#20116,#10000,14,1,14,5) -hasLocation(#20115,#20116) -enclosingStmt(#20115,#20113) -exprContainers(#20115,#20001) -#20117=@"type;65" -ast_node_type(#20115,#20117) -#20118=* -exprs(#20118,79,#20115,-1,"fun") -#20119=@"loc,{#10000},14,1,14,3" -locations_default(#20119,#10000,14,1,14,3) -hasLocation(#20118,#20119) -enclosingStmt(#20118,#20113) -exprContainers(#20118,#20001) -ast_node_type(#20118,#20107) -literals("fun","fun",#20118) -bind(#20118,#20003) -#20120=@"signature;243" -invoke_expr_signature(#20115,#20120) -invoke_expr_overload_index(#20115,0) -ast_node_symbol(#20115,#20110) -#20121=* -stmts(#20121,2,#20001,11,"new Class().m();") -#20122=@"loc,{#10000},15,1,15,16" -locations_default(#20122,#10000,15,1,15,16) -hasLocation(#20121,#20122) -stmtContainers(#20121,#20001) -#20123=* -exprs(#20123,13,#20121,0,"new Class().m()") -#20124=@"loc,{#10000},15,1,15,15" -locations_default(#20124,#10000,15,1,15,15) -hasLocation(#20123,#20124) -enclosingStmt(#20123,#20121) -exprContainers(#20123,#20001) -ast_node_type(#20123,#20050) -#20125=* -exprs(#20125,14,#20123,-1,"new Class().m") -#20126=@"loc,{#10000},15,1,15,13" -locations_default(#20126,#10000,15,1,15,13) -hasLocation(#20125,#20126) -enclosingStmt(#20125,#20121) -exprContainers(#20125,#20001) -ast_node_type(#20125,#20026) -#20127=* -exprs(#20127,12,#20125,0,"new Class()") -#20128=@"loc,{#10000},15,1,15,11" -locations_default(#20128,#10000,15,1,15,11) -hasLocation(#20127,#20128) -enclosingStmt(#20127,#20121) -exprContainers(#20127,#20001) -ast_node_type(#20127,#20020) -#20129=* -exprs(#20129,79,#20127,-1,"Class") -#20130=@"loc,{#10000},15,5,15,9" -locations_default(#20130,#10000,15,5,15,9) -hasLocation(#20129,#20130) -enclosingStmt(#20129,#20121) -exprContainers(#20129,#20001) -#20131=@"type;288" -ast_node_type(#20129,#20131) -literals("Class","Class",#20129) -bind(#20129,#20005) -#20132=@"signature;244" -invoke_expr_signature(#20127,#20132) -#20133=* -exprs(#20133,0,#20125,1,"m") -#20134=@"loc,{#10000},15,13,15,13" -locations_default(#20134,#10000,15,13,15,13) -hasLocation(#20133,#20134) -enclosingStmt(#20133,#20121) -exprContainers(#20133,#20001) -ast_node_type(#20133,#20026) -literals("m","m",#20133) -#20135=@"signature;0" -invoke_expr_signature(#20123,#20135) -invoke_expr_overload_index(#20123,0) -ast_node_symbol(#20123,#20030) -#20136=* -lines(#20136,#20001,"class Class { m(); }"," -") -hasLocation(#20136,#20017) -#20137=* -lines(#20137,#20001,"interface Interface {}"," -") -hasLocation(#20137,#20040) -#20138=* -lines(#20138,#20001,"namespace Namespace {}"," -") -hasLocation(#20138,#20046) -#20139=* -lines(#20139,#20001,"enum Enum {}"," -") -hasLocation(#20139,#20053) -#20140=* -lines(#20140,#20001,""," -") -#20141=@"loc,{#10000},5,1,5,0" -locations_default(#20141,#10000,5,1,5,0) -hasLocation(#20140,#20141) -#20142=* -lines(#20142,#20001,"let class_: Class;"," -") -hasLocation(#20142,#20060) -#20143=* -lines(#20143,#20001,"let interface_: Interface;"," -") -hasLocation(#20143,#20068) -#20144=* -lines(#20144,#20001,"let namespace_: Namespace;"," -") -hasLocation(#20144,#20076) -#20145=* -lines(#20145,#20001,"let enum_: Enum;"," -") -hasLocation(#20145,#20084) -#20146=* -lines(#20146,#20001,""," -") -#20147=@"loc,{#10000},10,1,10,0" -locations_default(#20147,#10000,10,1,10,0) -hasLocation(#20146,#20147) -#20148=* -lines(#20148,#20001,"let numberArray: number[];"," -") -hasLocation(#20148,#20092) -#20149=* -lines(#20149,#20001,""," -") -#20150=@"loc,{#10000},12,1,12,0" -locations_default(#20150,#10000,12,1,12,0) -hasLocation(#20149,#20150) -#20151=* -lines(#20151,#20001,"function fun() {}"," -") -hasLocation(#20151,#20104) -#20152=* -lines(#20152,#20001,"fun();"," -") -hasLocation(#20152,#20114) -#20153=* -lines(#20153,#20001,"new Class().m();"," -") -hasLocation(#20153,#20122) -numlines(#20001,15,12,0) -#20154=* -tokeninfo(#20154,7,#20001,0,"class") -#20155=@"loc,{#10000},1,1,1,5" -locations_default(#20155,#10000,1,1,1,5) -hasLocation(#20154,#20155) -#20156=* -tokeninfo(#20156,6,#20001,1,"Class") -hasLocation(#20156,#20019) -#20157=* -tokeninfo(#20157,8,#20001,2,"{") -#20158=@"loc,{#10000},1,13,1,13" -locations_default(#20158,#10000,1,13,1,13) -hasLocation(#20157,#20158) -#20159=* -tokeninfo(#20159,6,#20001,3,"m") -hasLocation(#20159,#20025) -#20160=* -tokeninfo(#20160,8,#20001,4,"(") -#20161=@"loc,{#10000},1,16,1,16" -locations_default(#20161,#10000,1,16,1,16) -hasLocation(#20160,#20161) -#20162=* -tokeninfo(#20162,8,#20001,5,")") -#20163=@"loc,{#10000},1,17,1,17" -locations_default(#20163,#10000,1,17,1,17) -hasLocation(#20162,#20163) -#20164=* -tokeninfo(#20164,8,#20001,6,";") -#20165=@"loc,{#10000},1,18,1,18" -locations_default(#20165,#10000,1,18,1,18) -hasLocation(#20164,#20165) -#20166=* -tokeninfo(#20166,8,#20001,7,"}") -#20167=@"loc,{#10000},1,20,1,20" -locations_default(#20167,#10000,1,20,1,20) -hasLocation(#20166,#20167) -#20168=* -tokeninfo(#20168,7,#20001,8,"interface") -#20169=@"loc,{#10000},2,1,2,9" -locations_default(#20169,#10000,2,1,2,9) -hasLocation(#20168,#20169) -#20170=* -tokeninfo(#20170,6,#20001,9,"Interface") -hasLocation(#20170,#20042) -#20171=* -tokeninfo(#20171,8,#20001,10,"{") -#20172=@"loc,{#10000},2,21,2,21" -locations_default(#20172,#10000,2,21,2,21) -hasLocation(#20171,#20172) -#20173=* -tokeninfo(#20173,8,#20001,11,"}") -#20174=@"loc,{#10000},2,22,2,22" -locations_default(#20174,#10000,2,22,2,22) -hasLocation(#20173,#20174) -#20175=* -tokeninfo(#20175,7,#20001,12,"namespace") -#20176=@"loc,{#10000},3,1,3,9" -locations_default(#20176,#10000,3,1,3,9) -hasLocation(#20175,#20176) -#20177=* -tokeninfo(#20177,6,#20001,13,"Namespace") -hasLocation(#20177,#20049) -#20178=* -tokeninfo(#20178,8,#20001,14,"{") -#20179=@"loc,{#10000},3,21,3,21" -locations_default(#20179,#10000,3,21,3,21) -hasLocation(#20178,#20179) -#20180=* -tokeninfo(#20180,8,#20001,15,"}") -#20181=@"loc,{#10000},3,22,3,22" -locations_default(#20181,#10000,3,22,3,22) -hasLocation(#20180,#20181) -#20182=* -tokeninfo(#20182,7,#20001,16,"enum") -#20183=@"loc,{#10000},4,1,4,4" -locations_default(#20183,#10000,4,1,4,4) -hasLocation(#20182,#20183) -#20184=* -tokeninfo(#20184,6,#20001,17,"Enum") -hasLocation(#20184,#20055) -#20185=* -tokeninfo(#20185,8,#20001,18,"{") -#20186=@"loc,{#10000},4,11,4,11" -locations_default(#20186,#10000,4,11,4,11) -hasLocation(#20185,#20186) -#20187=* -tokeninfo(#20187,8,#20001,19,"}") -#20188=@"loc,{#10000},4,12,4,12" -locations_default(#20188,#10000,4,12,4,12) -hasLocation(#20187,#20188) -#20189=* -tokeninfo(#20189,7,#20001,20,"let") -#20190=@"loc,{#10000},6,1,6,3" -locations_default(#20190,#10000,6,1,6,3) -hasLocation(#20189,#20190) -#20191=* -tokeninfo(#20191,6,#20001,21,"class_") -hasLocation(#20191,#20064) -#20192=* -tokeninfo(#20192,8,#20001,22,":") -#20193=@"loc,{#10000},6,11,6,11" -locations_default(#20193,#10000,6,11,6,11) -hasLocation(#20192,#20193) -#20194=* -tokeninfo(#20194,6,#20001,23,"Class") -hasLocation(#20194,#20066) -#20195=* -tokeninfo(#20195,8,#20001,24,";") -#20196=@"loc,{#10000},6,18,6,18" -locations_default(#20196,#10000,6,18,6,18) -hasLocation(#20195,#20196) -#20197=* -tokeninfo(#20197,7,#20001,25,"let") -#20198=@"loc,{#10000},7,1,7,3" -locations_default(#20198,#10000,7,1,7,3) -hasLocation(#20197,#20198) -#20199=* -tokeninfo(#20199,6,#20001,26,"interface_") -hasLocation(#20199,#20072) -#20200=* -tokeninfo(#20200,8,#20001,27,":") -#20201=@"loc,{#10000},7,15,7,15" -locations_default(#20201,#10000,7,15,7,15) -hasLocation(#20200,#20201) -#20202=* -tokeninfo(#20202,6,#20001,28,"Interface") -hasLocation(#20202,#20074) -#20203=* -tokeninfo(#20203,8,#20001,29,";") -#20204=@"loc,{#10000},7,26,7,26" -locations_default(#20204,#10000,7,26,7,26) -hasLocation(#20203,#20204) -#20205=* -tokeninfo(#20205,7,#20001,30,"let") -#20206=@"loc,{#10000},8,1,8,3" -locations_default(#20206,#10000,8,1,8,3) -hasLocation(#20205,#20206) -#20207=* -tokeninfo(#20207,6,#20001,31,"namespace_") -hasLocation(#20207,#20080) -#20208=* -tokeninfo(#20208,8,#20001,32,":") -#20209=@"loc,{#10000},8,15,8,15" -locations_default(#20209,#10000,8,15,8,15) -hasLocation(#20208,#20209) -#20210=* -tokeninfo(#20210,6,#20001,33,"Namespace") -hasLocation(#20210,#20082) -#20211=* -tokeninfo(#20211,8,#20001,34,";") -#20212=@"loc,{#10000},8,26,8,26" -locations_default(#20212,#10000,8,26,8,26) -hasLocation(#20211,#20212) -#20213=* -tokeninfo(#20213,7,#20001,35,"let") -#20214=@"loc,{#10000},9,1,9,3" -locations_default(#20214,#10000,9,1,9,3) -hasLocation(#20213,#20214) -#20215=* -tokeninfo(#20215,6,#20001,36,"enum_") -hasLocation(#20215,#20088) -#20216=* -tokeninfo(#20216,8,#20001,37,":") -#20217=@"loc,{#10000},9,10,9,10" -locations_default(#20217,#10000,9,10,9,10) -hasLocation(#20216,#20217) -#20218=* -tokeninfo(#20218,6,#20001,38,"Enum") -hasLocation(#20218,#20090) -#20219=* -tokeninfo(#20219,8,#20001,39,";") -#20220=@"loc,{#10000},9,16,9,16" -locations_default(#20220,#10000,9,16,9,16) -hasLocation(#20219,#20220) -#20221=* -tokeninfo(#20221,7,#20001,40,"let") -#20222=@"loc,{#10000},11,1,11,3" -locations_default(#20222,#10000,11,1,11,3) -hasLocation(#20221,#20222) -#20223=* -tokeninfo(#20223,6,#20001,41,"numberArray") -hasLocation(#20223,#20096) -#20224=* -tokeninfo(#20224,8,#20001,42,":") -#20225=@"loc,{#10000},11,16,11,16" -locations_default(#20225,#10000,11,16,11,16) -hasLocation(#20224,#20225) -#20226=* -tokeninfo(#20226,7,#20001,43,"number") -hasLocation(#20226,#20101) -#20227=* -tokeninfo(#20227,8,#20001,44,"[") -#20228=@"loc,{#10000},11,24,11,24" -locations_default(#20228,#10000,11,24,11,24) -hasLocation(#20227,#20228) -#20229=* -tokeninfo(#20229,8,#20001,45,"]") -#20230=@"loc,{#10000},11,25,11,25" -locations_default(#20230,#10000,11,25,11,25) -hasLocation(#20229,#20230) -#20231=* -tokeninfo(#20231,8,#20001,46,";") -#20232=@"loc,{#10000},11,26,11,26" -locations_default(#20232,#10000,11,26,11,26) -hasLocation(#20231,#20232) -#20233=* -tokeninfo(#20233,7,#20001,47,"function") -#20234=@"loc,{#10000},13,1,13,8" -locations_default(#20234,#10000,13,1,13,8) -hasLocation(#20233,#20234) -#20235=* -tokeninfo(#20235,6,#20001,48,"fun") -hasLocation(#20235,#20106) -#20236=* -tokeninfo(#20236,8,#20001,49,"(") -#20237=@"loc,{#10000},13,13,13,13" -locations_default(#20237,#10000,13,13,13,13) -hasLocation(#20236,#20237) -#20238=* -tokeninfo(#20238,8,#20001,50,")") -#20239=@"loc,{#10000},13,14,13,14" -locations_default(#20239,#10000,13,14,13,14) -hasLocation(#20238,#20239) -#20240=* -tokeninfo(#20240,8,#20001,51,"{") -#20241=@"loc,{#10000},13,16,13,16" -locations_default(#20241,#10000,13,16,13,16) -hasLocation(#20240,#20241) -#20242=* -tokeninfo(#20242,8,#20001,52,"}") -#20243=@"loc,{#10000},13,17,13,17" -locations_default(#20243,#10000,13,17,13,17) -hasLocation(#20242,#20243) -#20244=* -tokeninfo(#20244,6,#20001,53,"fun") -hasLocation(#20244,#20119) -#20245=* -tokeninfo(#20245,8,#20001,54,"(") -#20246=@"loc,{#10000},14,4,14,4" -locations_default(#20246,#10000,14,4,14,4) -hasLocation(#20245,#20246) -#20247=* -tokeninfo(#20247,8,#20001,55,")") -#20248=@"loc,{#10000},14,5,14,5" -locations_default(#20248,#10000,14,5,14,5) -hasLocation(#20247,#20248) -#20249=* -tokeninfo(#20249,8,#20001,56,";") -#20250=@"loc,{#10000},14,6,14,6" -locations_default(#20250,#10000,14,6,14,6) -hasLocation(#20249,#20250) -#20251=* -tokeninfo(#20251,7,#20001,57,"new") -#20252=@"loc,{#10000},15,1,15,3" -locations_default(#20252,#10000,15,1,15,3) -hasLocation(#20251,#20252) -#20253=* -tokeninfo(#20253,6,#20001,58,"Class") -hasLocation(#20253,#20130) -#20254=* -tokeninfo(#20254,8,#20001,59,"(") -#20255=@"loc,{#10000},15,10,15,10" -locations_default(#20255,#10000,15,10,15,10) -hasLocation(#20254,#20255) -#20256=* -tokeninfo(#20256,8,#20001,60,")") -#20257=@"loc,{#10000},15,11,15,11" -locations_default(#20257,#10000,15,11,15,11) -hasLocation(#20256,#20257) -#20258=* -tokeninfo(#20258,8,#20001,61,".") -#20259=@"loc,{#10000},15,12,15,12" -locations_default(#20259,#10000,15,12,15,12) -hasLocation(#20258,#20259) -#20260=* -tokeninfo(#20260,6,#20001,62,"m") -hasLocation(#20260,#20134) -#20261=* -tokeninfo(#20261,8,#20001,63,"(") -#20262=@"loc,{#10000},15,14,15,14" -locations_default(#20262,#10000,15,14,15,14) -hasLocation(#20261,#20262) -#20263=* -tokeninfo(#20263,8,#20001,64,")") -#20264=@"loc,{#10000},15,15,15,15" -locations_default(#20264,#10000,15,15,15,15) -hasLocation(#20263,#20264) -#20265=* -tokeninfo(#20265,8,#20001,65,";") -#20266=@"loc,{#10000},15,16,15,16" -locations_default(#20266,#10000,15,16,15,16) -hasLocation(#20265,#20266) -#20267=* -tokeninfo(#20267,0,#20001,66,"") -#20268=@"loc,{#10000},16,1,16,0" -locations_default(#20268,#10000,16,1,16,0) -hasLocation(#20267,#20268) -#20269=* -entry_cfg_node(#20269,#20001) -#20270=@"loc,{#10000},1,1,1,0" -locations_default(#20270,#10000,1,1,1,0) -hasLocation(#20269,#20270) -#20271=* -exit_cfg_node(#20271,#20001) -hasLocation(#20271,#20268) -successor(#20121,#20129) -successor(#20133,#20125) -successor(#20129,#20127) -successor(#20127,#20133) -successor(#20125,#20123) -successor(#20123,#20271) -successor(#20113,#20118) -successor(#20118,#20115) -successor(#20115,#20121) -successor(#20103,#20113) -#20272=* -entry_cfg_node(#20272,#20103) -#20273=@"loc,{#10000},13,1,13,0" -locations_default(#20273,#10000,13,1,13,0) -hasLocation(#20272,#20273) -#20274=* -exit_cfg_node(#20274,#20103) -#20275=@"loc,{#10000},13,18,13,17" -locations_default(#20275,#10000,13,18,13,17) -hasLocation(#20274,#20275) -successor(#20111,#20274) -successor(#20272,#20111) -successor(#20091,#20095) -successor(#20095,#20093) -successor(#20093,#20103) -successor(#20083,#20087) -successor(#20087,#20085) -successor(#20085,#20091) -successor(#20075,#20079) -successor(#20079,#20077) -successor(#20077,#20083) -successor(#20067,#20071) -successor(#20071,#20069) -successor(#20069,#20075) -successor(#20059,#20063) -successor(#20063,#20061) -successor(#20061,#20067) -successor(#20054,#20052) -successor(#20052,#20059) -successor(#20048,#20045) -successor(#20045,#20054) -successor(#20039,#20048) -successor(#20034,#20031) -#20276=* -entry_cfg_node(#20276,#20034) -hasLocation(#20276,#20032) -#20277=* -exit_cfg_node(#20277,#20034) -hasLocation(#20277,#20032) -successor(#20037,#20277) -successor(#20276,#20037) -successor(#20033,#20034) -successor(#20031,#20016) -successor(#20022,#20033) -successor(#20018,#20022) -successor(#20016,#20039) -successor(#20105,#20018) -successor(#20269,#20105) -numlines(#10000,15,12,0) -filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/arrayBindingPattern.ts.trap b/javascript/extractor/tests/ts/output/trap/arrayBindingPattern.ts.trap index 2b7fba39b8e..7b3238de8ba 100644 --- a/javascript/extractor/tests/ts/output/trap/arrayBindingPattern.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/arrayBindingPattern.ts.trap @@ -9,139 +9,139 @@ 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) -#20004=@"var;{y};{#20000}" -variables(#20004,"y",#20000) -#20005=* -stmts(#20005,23,#20001,0,"let [x,y] = [1,2]") -#20006=@"loc,{#10000},1,1,1,17" -locations_default(#20006,#10000,1,1,1,17) -hasLocation(#20005,#20006) -stmtContainers(#20005,#20001) -#20007=* -exprs(#20007,64,#20005,0,"[x,y] = [1,2]") -#20008=@"loc,{#10000},1,5,1,17" -locations_default(#20008,#10000,1,5,1,17) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20005) -exprContainers(#20007,#20001) -#20009=* -exprs(#20009,67,#20007,0,"[x,y]") -#20010=@"loc,{#10000},1,5,1,9" -locations_default(#20010,#10000,1,5,1,9) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20005) -exprContainers(#20009,#20001) -#20011=* -exprs(#20011,78,#20009,0,"x") -#20012=@"loc,{#10000},1,6,1,6" -locations_default(#20012,#10000,1,6,1,6) -hasLocation(#20011,#20012) -enclosingStmt(#20011,#20005) -exprContainers(#20011,#20001) -literals("x","x",#20011) -decl(#20011,#20003) -#20013=* -exprs(#20013,78,#20009,1,"y") -#20014=@"loc,{#10000},1,8,1,8" -locations_default(#20014,#10000,1,8,1,8) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20005) -exprContainers(#20013,#20001) -literals("y","y",#20013) -decl(#20013,#20004) -arraySize(#20009,2) -#20015=* -exprs(#20015,7,#20007,1,"[1,2]") -#20016=@"loc,{#10000},1,13,1,17" -locations_default(#20016,#10000,1,13,1,17) -hasLocation(#20015,#20016) -enclosingStmt(#20015,#20005) -exprContainers(#20015,#20001) -#20017=* -exprs(#20017,3,#20015,0,"1") -#20018=@"loc,{#10000},1,14,1,14" -locations_default(#20018,#10000,1,14,1,14) -hasLocation(#20017,#20018) -enclosingStmt(#20017,#20005) -exprContainers(#20017,#20001) -literals("1","1",#20017) -#20019=* -exprs(#20019,3,#20015,1,"2") -#20020=@"loc,{#10000},1,16,1,16" -locations_default(#20020,#10000,1,16,1,16) -hasLocation(#20019,#20020) -enclosingStmt(#20019,#20005) -exprContainers(#20019,#20001) -literals("2","2",#20019) -arraySize(#20015,2) -#20021=* -lines(#20021,#20001,"let [x,y] = [1,2]"," +#20002=* +lines(#20002,#20001,"let [x,y] = [1,2]"," ") -hasLocation(#20021,#20006) +#20003=@"loc,{#10000},1,1,1,17" +locations_default(#20003,#10000,1,1,1,17) +hasLocation(#20002,#20003) numlines(#20001,1,1,0) +#20004=* +tokeninfo(#20004,7,#20001,0,"let") +#20005=@"loc,{#10000},1,1,1,3" +locations_default(#20005,#10000,1,1,1,3) +hasLocation(#20004,#20005) +#20006=* +tokeninfo(#20006,8,#20001,1,"[") +#20007=@"loc,{#10000},1,5,1,5" +locations_default(#20007,#10000,1,5,1,5) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,6,#20001,2,"x") +#20009=@"loc,{#10000},1,6,1,6" +locations_default(#20009,#10000,1,6,1,6) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,3,",") +#20011=@"loc,{#10000},1,7,1,7" +locations_default(#20011,#10000,1,7,1,7) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,6,#20001,4,"y") +#20013=@"loc,{#10000},1,8,1,8" +locations_default(#20013,#10000,1,8,1,8) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,5,"]") +#20015=@"loc,{#10000},1,9,1,9" +locations_default(#20015,#10000,1,9,1,9) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,6,"=") +#20017=@"loc,{#10000},1,11,1,11" +locations_default(#20017,#10000,1,11,1,11) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,7,"[") +#20019=@"loc,{#10000},1,13,1,13" +locations_default(#20019,#10000,1,13,1,13) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,3,#20001,8,"1") +#20021=@"loc,{#10000},1,14,1,14" +locations_default(#20021,#10000,1,14,1,14) +hasLocation(#20020,#20021) #20022=* -tokeninfo(#20022,7,#20001,0,"let") -#20023=@"loc,{#10000},1,1,1,3" -locations_default(#20023,#10000,1,1,1,3) +tokeninfo(#20022,8,#20001,9,",") +#20023=@"loc,{#10000},1,15,1,15" +locations_default(#20023,#10000,1,15,1,15) hasLocation(#20022,#20023) #20024=* -tokeninfo(#20024,8,#20001,1,"[") -#20025=@"loc,{#10000},1,5,1,5" -locations_default(#20025,#10000,1,5,1,5) +tokeninfo(#20024,3,#20001,10,"2") +#20025=@"loc,{#10000},1,16,1,16" +locations_default(#20025,#10000,1,16,1,16) hasLocation(#20024,#20025) #20026=* -tokeninfo(#20026,6,#20001,2,"x") -hasLocation(#20026,#20012) -#20027=* -tokeninfo(#20027,8,#20001,3,",") -#20028=@"loc,{#10000},1,7,1,7" -locations_default(#20028,#10000,1,7,1,7) -hasLocation(#20027,#20028) -#20029=* -tokeninfo(#20029,6,#20001,4,"y") -hasLocation(#20029,#20014) -#20030=* -tokeninfo(#20030,8,#20001,5,"]") -#20031=@"loc,{#10000},1,9,1,9" -locations_default(#20031,#10000,1,9,1,9) -hasLocation(#20030,#20031) -#20032=* -tokeninfo(#20032,8,#20001,6,"=") -#20033=@"loc,{#10000},1,11,1,11" -locations_default(#20033,#10000,1,11,1,11) -hasLocation(#20032,#20033) +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},2,1,2,0" +locations_default(#20029,#10000,2,1,2,0) +hasLocation(#20028,#20029) +toplevels(#20001,0) +#20030=@"loc,{#10000},1,1,2,0" +locations_default(#20030,#10000,1,1,2,0) +hasLocation(#20001,#20030) +#20031=@"var;{x};{#20000}" +variables(#20031,"x",#20000) +#20032=@"var;{y};{#20000}" +variables(#20032,"y",#20000) +#20033=* +stmts(#20033,23,#20001,0,"let [x,y] = [1,2]") +hasLocation(#20033,#20003) +stmtContainers(#20033,#20001) #20034=* -tokeninfo(#20034,8,#20001,7,"[") -#20035=@"loc,{#10000},1,13,1,13" -locations_default(#20035,#10000,1,13,1,13) +exprs(#20034,64,#20033,0,"[x,y] = [1,2]") +#20035=@"loc,{#10000},1,5,1,17" +locations_default(#20035,#10000,1,5,1,17) hasLocation(#20034,#20035) +enclosingStmt(#20034,#20033) +exprContainers(#20034,#20001) #20036=* -tokeninfo(#20036,3,#20001,8,"1") -hasLocation(#20036,#20018) -#20037=* -tokeninfo(#20037,8,#20001,9,",") -#20038=@"loc,{#10000},1,15,1,15" -locations_default(#20038,#10000,1,15,1,15) -hasLocation(#20037,#20038) +exprs(#20036,67,#20034,0,"[x,y]") +#20037=@"loc,{#10000},1,5,1,9" +locations_default(#20037,#10000,1,5,1,9) +hasLocation(#20036,#20037) +enclosingStmt(#20036,#20033) +exprContainers(#20036,#20001) +#20038=* +exprs(#20038,78,#20036,0,"x") +hasLocation(#20038,#20009) +enclosingStmt(#20038,#20033) +exprContainers(#20038,#20001) +literals("x","x",#20038) +decl(#20038,#20031) #20039=* -tokeninfo(#20039,3,#20001,10,"2") -hasLocation(#20039,#20020) +exprs(#20039,78,#20036,1,"y") +hasLocation(#20039,#20013) +enclosingStmt(#20039,#20033) +exprContainers(#20039,#20001) +literals("y","y",#20039) +decl(#20039,#20032) +arraySize(#20036,2) #20040=* -tokeninfo(#20040,8,#20001,11,"]") -#20041=@"loc,{#10000},1,17,1,17" -locations_default(#20041,#10000,1,17,1,17) +exprs(#20040,7,#20034,1,"[1,2]") +#20041=@"loc,{#10000},1,13,1,17" +locations_default(#20041,#10000,1,13,1,17) hasLocation(#20040,#20041) +enclosingStmt(#20040,#20033) +exprContainers(#20040,#20001) #20042=* -tokeninfo(#20042,0,#20001,12,"") -#20043=@"loc,{#10000},2,1,2,0" -locations_default(#20043,#10000,2,1,2,0) -hasLocation(#20042,#20043) +exprs(#20042,3,#20040,0,"1") +hasLocation(#20042,#20021) +enclosingStmt(#20042,#20033) +exprContainers(#20042,#20001) +literals("1","1",#20042) +#20043=* +exprs(#20043,3,#20040,1,"2") +hasLocation(#20043,#20025) +enclosingStmt(#20043,#20033) +exprContainers(#20043,#20001) +literals("2","2",#20043) +arraySize(#20040,2) #20044=* entry_cfg_node(#20044,#20001) #20045=@"loc,{#10000},1,1,1,0" @@ -149,15 +149,15 @@ locations_default(#20045,#10000,1,1,1,0) hasLocation(#20044,#20045) #20046=* exit_cfg_node(#20046,#20001) -hasLocation(#20046,#20043) -successor(#20005,#20015) -successor(#20009,#20011) -successor(#20013,#20007) -successor(#20011,#20013) -successor(#20015,#20017) -successor(#20019,#20009) -successor(#20017,#20019) -successor(#20007,#20046) -successor(#20044,#20005) +hasLocation(#20046,#20029) +successor(#20033,#20040) +successor(#20036,#20038) +successor(#20039,#20034) +successor(#20038,#20039) +successor(#20040,#20042) +successor(#20043,#20036) +successor(#20042,#20043) +successor(#20034,#20046) +successor(#20044,#20033) numlines(#10000,1,1,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/bindingpattern.ts.trap b/javascript/extractor/tests/ts/output/trap/bindingpattern.ts.trap index 1ec2efaa8a0..1be570f6f85 100644 --- a/javascript/extractor/tests/ts/output/trap/bindingpattern.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/bindingpattern.ts.trap @@ -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=@"var;{foo};{#20000}" -variables(#20003,"foo",#20000) +#20002=* +lines(#20002,#20001,"function foo({x, y}) {}"," +") +#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,17,#20001,0,"functio ... y}) {}") -#20005=@"loc,{#10000},1,1,1,23" -locations_default(#20005,#10000,1,1,1,23) +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,"foo") +tokeninfo(#20006,6,#20001,1,"foo") #20007=@"loc,{#10000},1,10,1,12" locations_default(#20007,#10000,1,10,1,12) hasLocation(#20006,#20007) -exprContainers(#20006,#20004) -literals("foo","foo",#20006) -decl(#20006,#20003) #20008=* -scopes(#20008,1) -scopenodes(#20004,#20008) -scopenesting(#20008,#20000) -#20009=@"var;{x};{#20008}" -variables(#20009,"x",#20008) -#20010=@"var;{y};{#20008}" -variables(#20010,"y",#20008) -#20011=* -exprs(#20011,68,#20004,0,"{x, y}") -#20012=@"loc,{#10000},1,14,1,19" -locations_default(#20012,#10000,1,14,1,19) -hasLocation(#20011,#20012) -exprContainers(#20011,#20004) -#20013=* -properties(#20013,#20011,0,0,"x") -#20014=@"loc,{#10000},1,15,1,15" -locations_default(#20014,#10000,1,15,1,15) -hasLocation(#20013,#20014) -#20015=* -exprs(#20015,0,#20013,0,"x") -hasLocation(#20015,#20014) -exprContainers(#20015,#20004) -literals("x","x",#20015) +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=* +tokeninfo(#20012,6,#20001,4,"x") +#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,16,1,16" +locations_default(#20015,#10000,1,16,1,16) +hasLocation(#20014,#20015) #20016=* -exprs(#20016,78,#20013,1,"x") -hasLocation(#20016,#20014) -exprContainers(#20016,#20004) -literals("x","x",#20016) -decl(#20016,#20009) -#20017=* -properties(#20017,#20011,1,0,"y") -#20018=@"loc,{#10000},1,18,1,18" -locations_default(#20018,#10000,1,18,1,18) -hasLocation(#20017,#20018) -#20019=* -exprs(#20019,0,#20017,0,"y") -hasLocation(#20019,#20018) -exprContainers(#20019,#20004) -literals("y","y",#20019) +tokeninfo(#20016,6,#20001,6,"y") +#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,19,1,19" +locations_default(#20019,#10000,1,19,1,19) +hasLocation(#20018,#20019) #20020=* -exprs(#20020,78,#20017,1,"y") -hasLocation(#20020,#20018) -exprContainers(#20020,#20004) -literals("y","y",#20020) -decl(#20020,#20010) -#20021=@"var;{arguments};{#20008}" -variables(#20021,"arguments",#20008) -isArgumentsObject(#20021) +tokeninfo(#20020,8,#20001,8,")") +#20021=@"loc,{#10000},1,20,1,20" +locations_default(#20021,#10000,1,20,1,20) +hasLocation(#20020,#20021) #20022=* -stmts(#20022,1,#20004,-2,"{}") -#20023=@"loc,{#10000},1,22,1,23" -locations_default(#20023,#10000,1,22,1,23) +tokeninfo(#20022,8,#20001,9,"{") +#20023=@"loc,{#10000},1,22,1,22" +locations_default(#20023,#10000,1,22,1,22) hasLocation(#20022,#20023) -stmtContainers(#20022,#20004) -numlines(#20004,1,1,0) #20024=* -lines(#20024,#20001,"function foo({x, y}) {}"," -") -hasLocation(#20024,#20005) -numlines(#20001,1,1,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,"foo") -hasLocation(#20027,#20007) -#20028=* -tokeninfo(#20028,8,#20001,2,"(") -#20029=@"loc,{#10000},1,13,1,13" -locations_default(#20029,#10000,1,13,1,13) -hasLocation(#20028,#20029) +tokeninfo(#20024,8,#20001,10,"}") +#20025=@"loc,{#10000},1,23,1,23" +locations_default(#20025,#10000,1,23,1,23) +hasLocation(#20024,#20025) +#20026=* +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=@"var;{foo};{#20000}" +variables(#20029,"foo",#20000) #20030=* -tokeninfo(#20030,8,#20001,3,"{") -#20031=@"loc,{#10000},1,14,1,14" -locations_default(#20031,#10000,1,14,1,14) -hasLocation(#20030,#20031) +stmts(#20030,17,#20001,0,"functio ... y}) {}") +hasLocation(#20030,#20003) +stmtContainers(#20030,#20001) +#20031=* +exprs(#20031,78,#20030,-1,"foo") +hasLocation(#20031,#20007) +exprContainers(#20031,#20030) +literals("foo","foo",#20031) +decl(#20031,#20029) #20032=* -tokeninfo(#20032,6,#20001,4,"x") -hasLocation(#20032,#20014) -#20033=* -tokeninfo(#20033,8,#20001,5,",") -#20034=@"loc,{#10000},1,16,1,16" -locations_default(#20034,#10000,1,16,1,16) -hasLocation(#20033,#20034) +scopes(#20032,1) +scopenodes(#20030,#20032) +scopenesting(#20032,#20000) +#20033=@"var;{x};{#20032}" +variables(#20033,"x",#20032) +#20034=@"var;{y};{#20032}" +variables(#20034,"y",#20032) #20035=* -tokeninfo(#20035,6,#20001,6,"y") -hasLocation(#20035,#20018) -#20036=* -tokeninfo(#20036,8,#20001,7,"}") -#20037=@"loc,{#10000},1,19,1,19" -locations_default(#20037,#10000,1,19,1,19) -hasLocation(#20036,#20037) +exprs(#20035,68,#20030,0,"{x, y}") +#20036=@"loc,{#10000},1,14,1,19" +locations_default(#20036,#10000,1,14,1,19) +hasLocation(#20035,#20036) +exprContainers(#20035,#20030) +#20037=* +properties(#20037,#20035,0,0,"x") +hasLocation(#20037,#20013) #20038=* -tokeninfo(#20038,8,#20001,8,")") -#20039=@"loc,{#10000},1,20,1,20" -locations_default(#20039,#10000,1,20,1,20) -hasLocation(#20038,#20039) +exprs(#20038,0,#20037,0,"x") +hasLocation(#20038,#20013) +exprContainers(#20038,#20030) +literals("x","x",#20038) +#20039=* +exprs(#20039,78,#20037,1,"x") +hasLocation(#20039,#20013) +exprContainers(#20039,#20030) +literals("x","x",#20039) +decl(#20039,#20033) #20040=* -tokeninfo(#20040,8,#20001,9,"{") -#20041=@"loc,{#10000},1,22,1,22" -locations_default(#20041,#10000,1,22,1,22) -hasLocation(#20040,#20041) +properties(#20040,#20035,1,0,"y") +hasLocation(#20040,#20017) +#20041=* +exprs(#20041,0,#20040,0,"y") +hasLocation(#20041,#20017) +exprContainers(#20041,#20030) +literals("y","y",#20041) #20042=* -tokeninfo(#20042,8,#20001,10,"}") -#20043=@"loc,{#10000},1,23,1,23" -locations_default(#20043,#10000,1,23,1,23) -hasLocation(#20042,#20043) +exprs(#20042,78,#20040,1,"y") +hasLocation(#20042,#20017) +exprContainers(#20042,#20030) +literals("y","y",#20042) +decl(#20042,#20034) +#20043=@"var;{arguments};{#20032}" +variables(#20043,"arguments",#20032) +isArgumentsObject(#20043) #20044=* -tokeninfo(#20044,0,#20001,11,"") -#20045=@"loc,{#10000},2,1,2,0" -locations_default(#20045,#10000,2,1,2,0) +stmts(#20044,1,#20030,-2,"{}") +#20045=@"loc,{#10000},1,22,1,23" +locations_default(#20045,#10000,1,22,1,23) hasLocation(#20044,#20045) +stmtContainers(#20044,#20030) #20046=* entry_cfg_node(#20046,#20001) #20047=@"loc,{#10000},1,1,1,0" @@ -151,26 +150,26 @@ locations_default(#20047,#10000,1,1,1,0) hasLocation(#20046,#20047) #20048=* exit_cfg_node(#20048,#20001) -hasLocation(#20048,#20045) -successor(#20004,#20048) +hasLocation(#20048,#20027) +successor(#20030,#20048) #20049=* -entry_cfg_node(#20049,#20004) +entry_cfg_node(#20049,#20030) hasLocation(#20049,#20047) #20050=* -exit_cfg_node(#20050,#20004) +exit_cfg_node(#20050,#20030) #20051=@"loc,{#10000},1,24,1,23" locations_default(#20051,#10000,1,24,1,23) hasLocation(#20050,#20051) -successor(#20022,#20050) -successor(#20011,#20015) -successor(#20020,#20017) -successor(#20019,#20020) -successor(#20017,#20022) -successor(#20016,#20013) -successor(#20015,#20016) -successor(#20013,#20019) -successor(#20049,#20011) -successor(#20006,#20004) -successor(#20046,#20006) +successor(#20044,#20050) +successor(#20035,#20038) +successor(#20042,#20040) +successor(#20041,#20042) +successor(#20040,#20044) +successor(#20039,#20037) +successor(#20038,#20039) +successor(#20037,#20041) +successor(#20049,#20035) +successor(#20031,#20030) +successor(#20046,#20031) numlines(#10000,1,1,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/bom.ts.trap b/javascript/extractor/tests/ts/output/trap/bom.ts.trap index 055df232847..5bfe8c02cc2 100644 --- a/javascript/extractor/tests/ts/output/trap/bom.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/bom.ts.trap @@ -9,35 +9,35 @@ 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,"42") -#20004=@"loc,{#10000},1,1,1,2" -locations_default(#20004,#10000,1,1,1,2) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,3,#20003,0,"42") -hasLocation(#20005,#20004) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -literals("42","42",#20005) -#20006=* -lines(#20006,#20001,"42"," +#20002=* +lines(#20002,#20001,"42"," ") -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,3,#20001,0,"42") -hasLocation(#20007,#20004) +#20004=* +tokeninfo(#20004,3,#20001,0,"42") +hasLocation(#20004,#20003) +#20005=* +tokeninfo(#20005,0,#20001,1,"") +#20006=@"loc,{#10000},2,1,2,0" +locations_default(#20006,#10000,2,1,2,0) +hasLocation(#20005,#20006) +toplevels(#20001,0) +#20007=@"loc,{#10000},1,1,2,0" +locations_default(#20007,#10000,1,1,2,0) +hasLocation(#20001,#20007) #20008=* -tokeninfo(#20008,0,#20001,1,"") -#20009=@"loc,{#10000},2,1,2,0" -locations_default(#20009,#10000,2,1,2,0) -hasLocation(#20008,#20009) +stmts(#20008,2,#20001,0,"42") +hasLocation(#20008,#20003) +stmtContainers(#20008,#20001) +#20009=* +exprs(#20009,3,#20008,0,"42") +hasLocation(#20009,#20003) +enclosingStmt(#20009,#20008) +exprContainers(#20009,#20001) +literals("42","42",#20009) #20010=* entry_cfg_node(#20010,#20001) #20011=@"loc,{#10000},1,1,1,0" @@ -45,9 +45,9 @@ locations_default(#20011,#10000,1,1,1,0) hasLocation(#20010,#20011) #20012=* exit_cfg_node(#20012,#20001) -hasLocation(#20012,#20009) -successor(#20003,#20005) -successor(#20005,#20012) -successor(#20010,#20003) +hasLocation(#20012,#20006) +successor(#20008,#20009) +successor(#20009,#20012) +successor(#20010,#20008) numlines(#10000,1,1,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/classes.ts.trap b/javascript/extractor/tests/ts/output/trap/classes.ts.trap index a9c8742782f..49cecd9ecce 100644 --- a/javascript/extractor/tests/ts/output/trap/classes.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/classes.ts.trap @@ -9,209 +9,208 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,3,0" -locations_default(#20002,#10000,1,1,3,0) -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,"abstrac ... F>\n {}") -#20006=@"loc,{#10000},1,1,2,4" -locations_default(#20006,#10000,1,1,2,4) -hasLocation(#20005,#20006) -stmtContainers(#20005,#20001) -isAbstractClass(#20005) -#20007=* -exprs(#20007,78,#20005,0,"C") -#20008=@"loc,{#10000},1,16,1,16" -locations_default(#20008,#10000,1,16,1,16) -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) -#20010=* -typeexprs(#20010,14,#20005,-1,"E") -#20011=@"loc,{#10000},1,40,1,43" -locations_default(#20011,#10000,1,40,1,43) -hasLocation(#20010,#20011) -enclosingStmt(#20010,#20005) -exprContainers(#20010,#20001) -#20012=* -typeexprs(#20012,0,#20010,-1,"E") -#20013=@"loc,{#10000},1,40,1,40" -locations_default(#20013,#10000,1,40,1,40) -hasLocation(#20012,#20013) -enclosingStmt(#20012,#20005) -exprContainers(#20012,#20001) -literals("E","E",#20012) -#20014=* -typeexprs(#20014,0,#20010,0,"F") -#20015=@"loc,{#10000},1,42,1,42" -locations_default(#20015,#10000,1,42,1,42) -hasLocation(#20014,#20015) -enclosingStmt(#20014,#20005) -exprContainers(#20014,#20001) -literals("F","F",#20014) -#20016=* -exprs(#20016,79,#20005,1,"D") -#20017=@"loc,{#10000},1,26,1,26" -locations_default(#20017,#10000,1,26,1,26) -hasLocation(#20016,#20017) -enclosingStmt(#20016,#20005) -exprContainers(#20016,#20001) -literals("D","D",#20016) -#20018=@"var;{D};{#20000}" -variables(#20018,"D",#20000) -bind(#20016,#20018) -#20019=* -properties(#20019,#20005,2,0,"constru ... rgs); }") -#20020=@"loc,{#10000},2,3,2,2" -locations_default(#20020,#10000,2,3,2,2) -hasLocation(#20019,#20020) -#20021=* -exprs(#20021,0,#20019,0,"constructor") -hasLocation(#20021,#20020) -enclosingStmt(#20021,#20005) -exprContainers(#20021,#20001) -literals("constructor","constructor",#20021) -#20022=* -exprs(#20022,9,#20019,1,"(...arg ... rgs); }") -hasLocation(#20022,#20020) -enclosingStmt(#20022,#20005) -exprContainers(#20022,#20001) -#20023=* -scopes(#20023,1) -scopenodes(#20022,#20023) -scopenesting(#20023,#20009) -#20024=@"var;{args};{#20023}" -variables(#20024,"args",#20023) -#20025=* -exprs(#20025,78,#20022,0,"args") -hasLocation(#20025,#20020) -exprContainers(#20025,#20022) -literals("args","args",#20025) -decl(#20025,#20024) -#20026=@"var;{arguments};{#20023}" -variables(#20026,"arguments",#20023) -isArgumentsObject(#20026) -hasRestParameter(#20022) -#20027=* -stmts(#20027,1,#20022,-2,"{ super(...args); }") -hasLocation(#20027,#20020) -stmtContainers(#20027,#20022) -#20028=* -stmts(#20028,2,#20027,0,"super(...args);") -hasLocation(#20028,#20020) -stmtContainers(#20028,#20022) -#20029=* -exprs(#20029,13,#20028,0,"super(...args)") -hasLocation(#20029,#20020) -enclosingStmt(#20029,#20028) -exprContainers(#20029,#20022) -#20030=* -exprs(#20030,81,#20029,-1,"super") -hasLocation(#20030,#20020) -enclosingStmt(#20030,#20028) -exprContainers(#20030,#20022) -#20031=* -exprs(#20031,66,#20029,0,"...args") -hasLocation(#20031,#20020) -enclosingStmt(#20031,#20028) -exprContainers(#20031,#20022) -#20032=* -exprs(#20032,79,#20031,0,"args") -hasLocation(#20032,#20020) -enclosingStmt(#20032,#20028) -exprContainers(#20032,#20022) -literals("args","args",#20032) -bind(#20032,#20024) -numlines(#20022,1,0,0) -isMethod(#20019) -#20033=* -lines(#20033,#20001,"abstract class C extends D, implements E"," +#20002=* +lines(#20002,#20001,"abstract class C extends D, implements E"," ") -#20034=@"loc,{#10000},1,1,1,43" -locations_default(#20034,#10000,1,1,1,43) -hasLocation(#20033,#20034) -#20035=* -lines(#20035,#20001," {}"," +#20003=@"loc,{#10000},1,1,1,43" +locations_default(#20003,#10000,1,1,1,43) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," {}"," ") -#20036=@"loc,{#10000},2,1,2,4" -locations_default(#20036,#10000,2,1,2,4) -hasLocation(#20035,#20036) +#20005=@"loc,{#10000},2,1,2,4" +locations_default(#20005,#10000,2,1,2,4) +hasLocation(#20004,#20005) indentation(#10000,2," ",2) numlines(#20001,2,2,0) +#20006=* +tokeninfo(#20006,7,#20001,0,"abstract") +#20007=@"loc,{#10000},1,1,1,8" +locations_default(#20007,#10000,1,1,1,8) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,7,#20001,1,"class") +#20009=@"loc,{#10000},1,10,1,14" +locations_default(#20009,#10000,1,10,1,14) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,6,#20001,2,"C") +#20011=@"loc,{#10000},1,16,1,16" +locations_default(#20011,#10000,1,16,1,16) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,7,#20001,3,"extends") +#20013=@"loc,{#10000},1,18,1,24" +locations_default(#20013,#10000,1,18,1,24) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,6,#20001,4,"D") +#20015=@"loc,{#10000},1,26,1,26" +locations_default(#20015,#10000,1,26,1,26) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,5,",") +#20017=@"loc,{#10000},1,27,1,27" +locations_default(#20017,#10000,1,27,1,27) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,7,#20001,6,"implements") +#20019=@"loc,{#10000},1,29,1,38" +locations_default(#20019,#10000,1,29,1,38) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,6,#20001,7,"E") +#20021=@"loc,{#10000},1,40,1,40" +locations_default(#20021,#10000,1,40,1,40) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,8,"<") +#20023=@"loc,{#10000},1,41,1,41" +locations_default(#20023,#10000,1,41,1,41) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,6,#20001,9,"F") +#20025=@"loc,{#10000},1,42,1,42" +locations_default(#20025,#10000,1,42,1,42) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,10,">") +#20027=@"loc,{#10000},1,43,1,43" +locations_default(#20027,#10000,1,43,1,43) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,11,"{") +#20029=@"loc,{#10000},2,3,2,3" +locations_default(#20029,#10000,2,3,2,3) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,12,"}") +#20031=@"loc,{#10000},2,4,2,4" +locations_default(#20031,#10000,2,4,2,4) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,0,#20001,13,"") +#20033=@"loc,{#10000},3,1,3,0" +locations_default(#20033,#10000,3,1,3,0) +hasLocation(#20032,#20033) +toplevels(#20001,0) +#20034=@"loc,{#10000},1,1,3,0" +locations_default(#20034,#10000,1,1,3,0) +hasLocation(#20001,#20034) +#20035=@"var;{C};{#20000}" +variables(#20035,"C",#20000) +#20036=@"local_type_name;{C};{#20000}" +local_type_names(#20036,"C",#20000) #20037=* -tokeninfo(#20037,7,#20001,0,"abstract") -#20038=@"loc,{#10000},1,1,1,8" -locations_default(#20038,#10000,1,1,1,8) +stmts(#20037,26,#20001,0,"abstrac ... F>\n {}") +#20038=@"loc,{#10000},1,1,2,4" +locations_default(#20038,#10000,1,1,2,4) hasLocation(#20037,#20038) +stmtContainers(#20037,#20001) +isAbstractClass(#20037) #20039=* -tokeninfo(#20039,7,#20001,1,"class") -#20040=@"loc,{#10000},1,10,1,14" -locations_default(#20040,#10000,1,10,1,14) -hasLocation(#20039,#20040) +exprs(#20039,78,#20037,0,"C") +hasLocation(#20039,#20011) +enclosingStmt(#20039,#20037) +exprContainers(#20039,#20001) +literals("C","C",#20039) +decl(#20039,#20035) +typedecl(#20039,#20036) +#20040=* +scopes(#20040,10) +scopenodes(#20037,#20040) +scopenesting(#20040,#20000) #20041=* -tokeninfo(#20041,6,#20001,2,"C") -hasLocation(#20041,#20008) -#20042=* -tokeninfo(#20042,7,#20001,3,"extends") -#20043=@"loc,{#10000},1,18,1,24" -locations_default(#20043,#10000,1,18,1,24) -hasLocation(#20042,#20043) +typeexprs(#20041,14,#20037,-1,"E") +#20042=@"loc,{#10000},1,40,1,43" +locations_default(#20042,#10000,1,40,1,43) +hasLocation(#20041,#20042) +enclosingStmt(#20041,#20037) +exprContainers(#20041,#20001) +#20043=* +typeexprs(#20043,0,#20041,-1,"E") +hasLocation(#20043,#20021) +enclosingStmt(#20043,#20037) +exprContainers(#20043,#20001) +literals("E","E",#20043) #20044=* -tokeninfo(#20044,6,#20001,4,"D") -hasLocation(#20044,#20017) +typeexprs(#20044,0,#20041,0,"F") +hasLocation(#20044,#20025) +enclosingStmt(#20044,#20037) +exprContainers(#20044,#20001) +literals("F","F",#20044) #20045=* -tokeninfo(#20045,8,#20001,5,",") -#20046=@"loc,{#10000},1,27,1,27" -locations_default(#20046,#10000,1,27,1,27) -hasLocation(#20045,#20046) +exprs(#20045,79,#20037,1,"D") +hasLocation(#20045,#20015) +enclosingStmt(#20045,#20037) +exprContainers(#20045,#20001) +literals("D","D",#20045) +#20046=@"var;{D};{#20000}" +variables(#20046,"D",#20000) +bind(#20045,#20046) #20047=* -tokeninfo(#20047,7,#20001,6,"implements") -#20048=@"loc,{#10000},1,29,1,38" -locations_default(#20048,#10000,1,29,1,38) +properties(#20047,#20037,2,0,"constru ... rgs); }") +#20048=@"loc,{#10000},2,3,2,2" +locations_default(#20048,#10000,2,3,2,2) hasLocation(#20047,#20048) #20049=* -tokeninfo(#20049,6,#20001,7,"E") -hasLocation(#20049,#20013) +exprs(#20049,0,#20047,0,"constructor") +hasLocation(#20049,#20048) +enclosingStmt(#20049,#20037) +exprContainers(#20049,#20001) +literals("constructor","constructor",#20049) #20050=* -tokeninfo(#20050,8,#20001,8,"<") -#20051=@"loc,{#10000},1,41,1,41" -locations_default(#20051,#10000,1,41,1,41) -hasLocation(#20050,#20051) -#20052=* -tokeninfo(#20052,6,#20001,9,"F") -hasLocation(#20052,#20015) +exprs(#20050,9,#20047,1,"(...arg ... rgs); }") +hasLocation(#20050,#20048) +enclosingStmt(#20050,#20037) +exprContainers(#20050,#20001) +#20051=* +scopes(#20051,1) +scopenodes(#20050,#20051) +scopenesting(#20051,#20040) +#20052=@"var;{args};{#20051}" +variables(#20052,"args",#20051) #20053=* -tokeninfo(#20053,8,#20001,10,">") -#20054=@"loc,{#10000},1,43,1,43" -locations_default(#20054,#10000,1,43,1,43) -hasLocation(#20053,#20054) +exprs(#20053,78,#20050,0,"args") +hasLocation(#20053,#20048) +exprContainers(#20053,#20050) +literals("args","args",#20053) +decl(#20053,#20052) +#20054=@"var;{arguments};{#20051}" +variables(#20054,"arguments",#20051) +isArgumentsObject(#20054) +hasRestParameter(#20050) #20055=* -tokeninfo(#20055,8,#20001,11,"{") -#20056=@"loc,{#10000},2,3,2,3" -locations_default(#20056,#10000,2,3,2,3) -hasLocation(#20055,#20056) +stmts(#20055,1,#20050,-2,"{ super(...args); }") +hasLocation(#20055,#20048) +stmtContainers(#20055,#20050) +#20056=* +stmts(#20056,2,#20055,0,"super(...args);") +hasLocation(#20056,#20048) +stmtContainers(#20056,#20050) #20057=* -tokeninfo(#20057,8,#20001,12,"}") -#20058=@"loc,{#10000},2,4,2,4" -locations_default(#20058,#10000,2,4,2,4) -hasLocation(#20057,#20058) +exprs(#20057,13,#20056,0,"super(...args)") +hasLocation(#20057,#20048) +enclosingStmt(#20057,#20056) +exprContainers(#20057,#20050) +#20058=* +exprs(#20058,81,#20057,-1,"super") +hasLocation(#20058,#20048) +enclosingStmt(#20058,#20056) +exprContainers(#20058,#20050) #20059=* -tokeninfo(#20059,0,#20001,13,"") -#20060=@"loc,{#10000},3,1,3,0" -locations_default(#20060,#10000,3,1,3,0) -hasLocation(#20059,#20060) +exprs(#20059,66,#20057,0,"...args") +hasLocation(#20059,#20048) +enclosingStmt(#20059,#20056) +exprContainers(#20059,#20050) +#20060=* +exprs(#20060,79,#20059,0,"args") +hasLocation(#20060,#20048) +enclosingStmt(#20060,#20056) +exprContainers(#20060,#20050) +literals("args","args",#20060) +bind(#20060,#20052) +isMethod(#20047) #20061=* entry_cfg_node(#20061,#20001) #20062=@"loc,{#10000},1,1,1,0" @@ -219,27 +218,27 @@ locations_default(#20062,#10000,1,1,1,0) hasLocation(#20061,#20062) #20063=* exit_cfg_node(#20063,#20001) -hasLocation(#20063,#20060) -successor(#20022,#20019) +hasLocation(#20063,#20033) +successor(#20050,#20047) #20064=* -entry_cfg_node(#20064,#20022) -hasLocation(#20064,#20020) +entry_cfg_node(#20064,#20050) +hasLocation(#20064,#20048) #20065=* -exit_cfg_node(#20065,#20022) -hasLocation(#20065,#20020) -successor(#20027,#20028) -successor(#20028,#20030) -successor(#20032,#20031) -successor(#20031,#20029) -successor(#20030,#20032) -successor(#20029,#20065) -successor(#20025,#20027) -successor(#20064,#20025) -successor(#20021,#20022) -successor(#20019,#20005) -successor(#20016,#20021) -successor(#20007,#20016) -successor(#20005,#20063) -successor(#20061,#20007) +exit_cfg_node(#20065,#20050) +hasLocation(#20065,#20048) +successor(#20055,#20056) +successor(#20056,#20058) +successor(#20060,#20059) +successor(#20059,#20057) +successor(#20058,#20060) +successor(#20057,#20065) +successor(#20053,#20055) +successor(#20064,#20053) +successor(#20049,#20050) +successor(#20047,#20037) +successor(#20045,#20049) +successor(#20039,#20045) +successor(#20037,#20063) +successor(#20061,#20039) numlines(#10000,2,2,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/comments.ts.trap b/javascript/extractor/tests/ts/output/trap/comments.ts.trap index d544a077e82..52be74eb227 100644 --- a/javascript/extractor/tests/ts/output/trap/comments.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/comments.ts.trap @@ -9,106 +9,107 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},2,1,4,4" -locations_default(#20002,#10000,2,1,4,4) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"a /* b */ + c") -#20004=@"loc,{#10000},2,1,2,13" -locations_default(#20004,#10000,2,1,2,13) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,34,#20003,0,"a /* b */ + c") -hasLocation(#20005,#20004) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) +#20002=* +comments(#20002,0,#20001," c1","// c1") +#20003=@"loc,{#10000},1,1,1,5" +locations_default(#20003,#10000,1,1,1,5) +hasLocation(#20002,#20003) +#20004=* +comments(#20004,1,#20001," b ","/* b */") +#20005=@"loc,{#10000},2,3,2,9" +locations_default(#20005,#10000,2,3,2,9) +hasLocation(#20004,#20005) #20006=* -exprs(#20006,79,#20005,0,"a") -#20007=@"loc,{#10000},2,1,2,1" -locations_default(#20007,#10000,2,1,2,1) +comments(#20006,0,#20001," d","// d") +#20007=@"loc,{#10000},2,15,2,18" +locations_default(#20007,#10000,2,15,2,18) hasLocation(#20006,#20007) -enclosingStmt(#20006,#20003) -exprContainers(#20006,#20001) -literals("a","a",#20006) -#20008=@"var;{a};{#20000}" -variables(#20008,"a",#20000) -bind(#20006,#20008) -#20009=* -exprs(#20009,79,#20005,1,"c") -#20010=@"loc,{#10000},2,13,2,13" -locations_default(#20010,#10000,2,13,2,13) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20003) -exprContainers(#20009,#20001) -literals("c","c",#20009) -#20011=@"var;{c};{#20000}" -variables(#20011,"c",#20000) -bind(#20009,#20011) +#20008=* +comments(#20008,1,#20001," e ","/* e */") +#20009=@"loc,{#10000},3,1,3,7" +locations_default(#20009,#10000,3,1,3,7) +hasLocation(#20008,#20009) +#20010=* +comments(#20010,0,#20001," f","// f") +#20011=@"loc,{#10000},4,1,4,4" +locations_default(#20011,#10000,4,1,4,4) +hasLocation(#20010,#20011) #20012=* -comments(#20012,0,#20001," c1","// c1") -#20013=@"loc,{#10000},1,1,1,5" -locations_default(#20013,#10000,1,1,1,5) -hasLocation(#20012,#20013) -#20014=* -comments(#20014,1,#20001," b ","/* b */") -#20015=@"loc,{#10000},2,3,2,9" -locations_default(#20015,#10000,2,3,2,9) -hasLocation(#20014,#20015) +lines(#20012,#20001,"// c1"," +") +hasLocation(#20012,#20003) +#20013=* +lines(#20013,#20001,"a /* b */ + c // d"," +") +#20014=@"loc,{#10000},2,1,2,18" +locations_default(#20014,#10000,2,1,2,18) +hasLocation(#20013,#20014) +#20015=* +lines(#20015,#20001,"/* e */"," +") +hasLocation(#20015,#20009) #20016=* -comments(#20016,0,#20001," d","// d") -#20017=@"loc,{#10000},2,15,2,18" -locations_default(#20017,#10000,2,15,2,18) -hasLocation(#20016,#20017) -#20018=* -comments(#20018,1,#20001," e ","/* e */") -#20019=@"loc,{#10000},3,1,3,7" -locations_default(#20019,#10000,3,1,3,7) -hasLocation(#20018,#20019) -#20020=* -comments(#20020,0,#20001," f","// f") -#20021=@"loc,{#10000},4,1,4,4" -locations_default(#20021,#10000,4,1,4,4) -hasLocation(#20020,#20021) -#20022=* -lines(#20022,#20001,"// c1"," -") -hasLocation(#20022,#20013) -#20023=* -lines(#20023,#20001,"a /* b */ + c // d"," -") -#20024=@"loc,{#10000},2,1,2,18" -locations_default(#20024,#10000,2,1,2,18) -hasLocation(#20023,#20024) -#20025=* -lines(#20025,#20001,"/* e */"," -") -hasLocation(#20025,#20019) -#20026=* -lines(#20026,#20001,"// f","") -hasLocation(#20026,#20021) +lines(#20016,#20001,"// f","") +hasLocation(#20016,#20011) numlines(#20001,4,1,4) -#20027=* -tokeninfo(#20027,6,#20001,0,"a") -hasLocation(#20027,#20007) -next_token(#20012,#20027) +#20017=* +tokeninfo(#20017,6,#20001,0,"a") +#20018=@"loc,{#10000},2,1,2,1" +locations_default(#20018,#10000,2,1,2,1) +hasLocation(#20017,#20018) +next_token(#20002,#20017) +#20019=* +tokeninfo(#20019,8,#20001,1,"+") +#20020=@"loc,{#10000},2,11,2,11" +locations_default(#20020,#10000,2,11,2,11) +hasLocation(#20019,#20020) +next_token(#20004,#20019) +#20021=* +tokeninfo(#20021,6,#20001,2,"c") +#20022=@"loc,{#10000},2,13,2,13" +locations_default(#20022,#10000,2,13,2,13) +hasLocation(#20021,#20022) +#20023=* +tokeninfo(#20023,0,#20001,3,"") +#20024=@"loc,{#10000},4,5,4,4" +locations_default(#20024,#10000,4,5,4,4) +hasLocation(#20023,#20024) +next_token(#20006,#20023) +next_token(#20008,#20023) +next_token(#20010,#20023) +toplevels(#20001,0) +#20025=@"loc,{#10000},2,1,4,4" +locations_default(#20025,#10000,2,1,4,4) +hasLocation(#20001,#20025) +#20026=* +stmts(#20026,2,#20001,0,"a /* b */ + c") +#20027=@"loc,{#10000},2,1,2,13" +locations_default(#20027,#10000,2,1,2,13) +hasLocation(#20026,#20027) +stmtContainers(#20026,#20001) #20028=* -tokeninfo(#20028,8,#20001,1,"+") -#20029=@"loc,{#10000},2,11,2,11" -locations_default(#20029,#10000,2,11,2,11) -hasLocation(#20028,#20029) -next_token(#20014,#20028) -#20030=* -tokeninfo(#20030,6,#20001,2,"c") -hasLocation(#20030,#20010) +exprs(#20028,34,#20026,0,"a /* b */ + c") +hasLocation(#20028,#20027) +enclosingStmt(#20028,#20026) +exprContainers(#20028,#20001) +#20029=* +exprs(#20029,79,#20028,0,"a") +hasLocation(#20029,#20018) +enclosingStmt(#20029,#20026) +exprContainers(#20029,#20001) +literals("a","a",#20029) +#20030=@"var;{a};{#20000}" +variables(#20030,"a",#20000) +bind(#20029,#20030) #20031=* -tokeninfo(#20031,0,#20001,3,"") -#20032=@"loc,{#10000},4,5,4,4" -locations_default(#20032,#10000,4,5,4,4) -hasLocation(#20031,#20032) -next_token(#20016,#20031) -next_token(#20018,#20031) +exprs(#20031,79,#20028,1,"c") +hasLocation(#20031,#20022) +enclosingStmt(#20031,#20026) +exprContainers(#20031,#20001) +literals("c","c",#20031) +#20032=@"var;{c};{#20000}" +variables(#20032,"c",#20000) +bind(#20031,#20032) #20033=* entry_cfg_node(#20033,#20001) #20034=@"loc,{#10000},2,1,2,0" @@ -116,11 +117,11 @@ locations_default(#20034,#10000,2,1,2,0) hasLocation(#20033,#20034) #20035=* exit_cfg_node(#20035,#20001) -hasLocation(#20035,#20032) -successor(#20003,#20006) -successor(#20009,#20005) -successor(#20006,#20009) -successor(#20005,#20035) -successor(#20033,#20003) +hasLocation(#20035,#20024) +successor(#20026,#20029) +successor(#20031,#20028) +successor(#20029,#20031) +successor(#20028,#20035) +successor(#20033,#20026) numlines(#10000,4,1,4) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap b/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap index be1b834003d..cd2d3a64d1f 100644 --- a/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap @@ -9,10088 +9,10067 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,103,0" -locations_default(#20002,#10000,1,1,103,0) -hasLocation(#20001,#20002) -#20003=@"var;{ConditionalTypes1};{#20000}" -variables(#20003,"ConditionalTypes1",#20000) -#20004=@"var;{ConditionalTypes2};{#20000}" -variables(#20004,"ConditionalTypes2",#20000) -#20005=@"local_namespace_name;{ConditionalTypes1};{#20000}" -local_namespace_names(#20005,"ConditionalTypes1",#20000) -#20006=@"local_namespace_name;{ConditionalTypes2};{#20000}" -local_namespace_names(#20006,"ConditionalTypes2",#20000) -#20007=* -stmts(#20007,31,#20001,0,"namespa ... any;\n}") -#20008=@"loc,{#10000},1,1,70,1" -locations_default(#20008,#10000,1,1,70,1) -hasLocation(#20007,#20008) -stmtContainers(#20007,#20001) -#20009=* -exprs(#20009,78,#20007,-1,"ConditionalTypes1") -#20010=@"loc,{#10000},1,11,1,27" -locations_default(#20010,#10000,1,11,1,27) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20007) -exprContainers(#20009,#20001) -literals("ConditionalTypes1","ConditionalTypes1",#20009) -decl(#20009,#20003) -namespacedecl(#20009,#20005) -#20011=* -scopes(#20011,9) -scopenodes(#20007,#20011) -scopenesting(#20011,#20000) -#20012=@"var;{f1};{#20011}" -variables(#20012,"f1",#20011) -#20013=@"var;{f2};{#20011}" -variables(#20013,"f2",#20011) -#20014=@"local_type_name;{TypeName};{#20011}" -local_type_names(#20014,"TypeName",#20011) -#20015=@"local_type_name;{T0};{#20011}" -local_type_names(#20015,"T0",#20011) -#20016=@"local_type_name;{T1};{#20011}" -local_type_names(#20016,"T1",#20011) -#20017=@"local_type_name;{T2};{#20011}" -local_type_names(#20017,"T2",#20011) -#20018=@"local_type_name;{T3};{#20011}" -local_type_names(#20018,"T3",#20011) -#20019=@"local_type_name;{T4};{#20011}" -local_type_names(#20019,"T4",#20011) -#20020=@"local_type_name;{T10};{#20011}" -local_type_names(#20020,"T10",#20011) -#20021=@"local_type_name;{T12};{#20011}" -local_type_names(#20021,"T12",#20011) -#20022=@"local_type_name;{T11};{#20011}" -local_type_names(#20022,"T11",#20011) -#20023=@"local_type_name;{BoxedValue};{#20011}" -local_type_names(#20023,"BoxedValue",#20011) -#20024=@"local_type_name;{BoxedArray};{#20011}" -local_type_names(#20024,"BoxedArray",#20011) -#20025=@"local_type_name;{Boxed};{#20011}" -local_type_names(#20025,"Boxed",#20011) -#20026=@"local_type_name;{T20};{#20011}" -local_type_names(#20026,"T20",#20011) -#20027=@"local_type_name;{T21};{#20011}" -local_type_names(#20027,"T21",#20011) -#20028=@"local_type_name;{T22};{#20011}" -local_type_names(#20028,"T22",#20011) -#20029=@"local_type_name;{Diff};{#20011}" -local_type_names(#20029,"Diff",#20011) -#20030=@"local_type_name;{Filter};{#20011}" -local_type_names(#20030,"Filter",#20011) -#20031=@"local_type_name;{T30};{#20011}" -local_type_names(#20031,"T30",#20011) -#20032=@"local_type_name;{T31};{#20011}" -local_type_names(#20032,"T31",#20011) -#20033=@"local_type_name;{T32};{#20011}" -local_type_names(#20033,"T32",#20011) -#20034=@"local_type_name;{T33};{#20011}" -local_type_names(#20034,"T33",#20011) -#20035=@"local_type_name;{NonNullable};{#20011}" -local_type_names(#20035,"NonNullable",#20011) -#20036=@"local_type_name;{T34};{#20011}" -local_type_names(#20036,"T34",#20011) -#20037=@"local_type_name;{T35};{#20011}" -local_type_names(#20037,"T35",#20011) -#20038=@"local_type_name;{FunctionPropertyNames};{#20011}" -local_type_names(#20038,"FunctionPropertyNames",#20011) -#20039=@"local_type_name;{FunctionProperties};{#20011}" -local_type_names(#20039,"FunctionProperties",#20011) -#20040=@"local_type_name;{NonFunctionPropertyNames};{#20011}" -local_type_names(#20040,"NonFunctionPropertyNames",#20011) -#20041=@"local_type_name;{NonFunctionProperties};{#20011}" -local_type_names(#20041,"NonFunctionProperties",#20011) -#20042=@"local_type_name;{Part};{#20011}" -local_type_names(#20042,"Part",#20011) -#20043=@"local_type_name;{T40};{#20011}" -local_type_names(#20043,"T40",#20011) -#20044=@"local_type_name;{T41};{#20011}" -local_type_names(#20044,"T41",#20011) -#20045=@"local_type_name;{T42};{#20011}" -local_type_names(#20045,"T42",#20011) -#20046=@"local_type_name;{T43};{#20011}" -local_type_names(#20046,"T43",#20011) -#20047=@"local_type_name;{ReturnType};{#20011}" -local_type_names(#20047,"ReturnType",#20011) +#20002=* +comments(#20002,0,#20001," ""string""","// ""string""") +#20003=@"loc,{#10000},10,32,10,42" +locations_default(#20003,#10000,10,32,10,42) +hasLocation(#20002,#20003) +#20004=* +comments(#20004,0,#20001," ""string""","// ""string""") +#20005=@"loc,{#10000},11,29,11,39" +locations_default(#20005,#10000,11,29,11,39) +hasLocation(#20004,#20005) +#20006=* +comments(#20006,0,#20001," ""boolean""","// ""boolean""") +#20007=@"loc,{#10000},12,30,12,41" +locations_default(#20007,#10000,12,30,12,41) +hasLocation(#20006,#20007) +#20008=* +comments(#20008,0,#20001," ""function""","// ""function""") +#20009=@"loc,{#10000},13,36,13,48" +locations_default(#20009,#10000,13,36,13,48) +hasLocation(#20008,#20009) +#20010=* +comments(#20010,0,#20001," ""object""","// ""object""") +#20011=@"loc,{#10000},14,34,14,44" +locations_default(#20011,#10000,14,34,14,44) +hasLocation(#20010,#20011) +#20012=* +comments(#20012,0,#20001," ""string"" | ""function""","// ""str ... nction""") +#20013=@"loc,{#10000},17,48,17,71" +locations_default(#20013,#10000,17,48,17,71) +hasLocation(#20012,#20013) +#20014=* +comments(#20014,0,#20001," ""string"" | ""object"" | ""undefined""","// ""str ... efined""") +#20015=@"loc,{#10000},18,56,18,91" +locations_default(#20015,#10000,18,56,18,91) +hasLocation(#20014,#20015) +#20016=* +comments(#20016,0,#20001," ""object""","// ""object""") +#20017=@"loc,{#10000},19,46,19,56" +locations_default(#20017,#10000,19,46,19,56) +hasLocation(#20016,#20017) +#20018=* +comments(#20018,0,#20001," BoxedValue;","// Boxe ... tring>;") +#20019=@"loc,{#10000},25,30,25,51" +locations_default(#20019,#10000,25,30,25,51) +hasLocation(#20018,#20019) +#20020=* +comments(#20020,0,#20001," BoxedArray;","// Boxe ... umber>;") +#20021=@"loc,{#10000},26,32,26,53" +locations_default(#20021,#10000,26,32,26,53) +hasLocation(#20020,#20021) +#20022=* +comments(#20022,0,#20001," BoxedValue | BoxedArray;","// Boxe ... umber>;") +#20023=@"loc,{#10000},27,41,27,83" +locations_default(#20023,#10000,27,41,27,83) +hasLocation(#20022,#20023) +#20024=* +comments(#20024,0,#20001," Remove types from T that are assignable to U","// Remo ... le to U") +#20025=@"loc,{#10000},29,47,29,93" +locations_default(#20025,#10000,29,47,29,93) +hasLocation(#20024,#20025) +#20026=* +comments(#20026,0,#20001," Remove types from T that are not assignable to U","// Remo ... le to U") +#20027=@"loc,{#10000},30,49,30,99" +locations_default(#20027,#10000,30,49,30,99) +hasLocation(#20026,#20027) +#20028=* +comments(#20028,0,#20001," ""b"" | ""d""","// ""b"" | ""d""") +#20029=@"loc,{#10000},32,61,32,72" +locations_default(#20029,#10000,32,61,32,72) +hasLocation(#20028,#20029) +#20030=* +comments(#20030,0,#20001," ""a"" | ""c""","// ""a"" | ""c""") +#20031=@"loc,{#10000},33,63,33,74" +locations_default(#20031,#10000,33,63,33,74) +hasLocation(#20030,#20031) +#20032=* +comments(#20032,0,#20001," string | number","// string | number") +#20033=@"loc,{#10000},34,63,34,80" +locations_default(#20033,#10000,34,63,34,80) +hasLocation(#20032,#20033) +#20034=* +comments(#20034,0,#20001," () => void","// () => void") +#20035=@"loc,{#10000},35,65,35,77" +locations_default(#20035,#10000,35,65,35,77) +hasLocation(#20034,#20035) +#20036=* +comments(#20036,0,#20001," Remove null and undefined from T","// Remo ... from T") +#20037=@"loc,{#10000},37,53,37,87" +locations_default(#20037,#10000,37,53,37,87) +hasLocation(#20036,#20037) +#20038=* +comments(#20038,0,#20001," string | number","// string | number") +#20039=@"loc,{#10000},39,57,39,74" +locations_default(#20039,#10000,39,57,39,74) +hasLocation(#20038,#20039) +#20040=* +comments(#20040,0,#20001," string | string[]","// string | string[]") +#20041=@"loc,{#10000},40,66,40,85" +locations_default(#20041,#10000,40,66,40,85) +hasLocation(#20040,#20041) +#20042=* +comments(#20042,0,#20001," Ok","// Ok") +#20043=@"loc,{#10000},43,15,43,19" +locations_default(#20043,#10000,43,15,43,19) +hasLocation(#20042,#20043) +#20044=* +comments(#20044,0,#20001," Ok","// Ok") +#20045=@"loc,{#10000},47,15,47,19" +locations_default(#20045,#10000,47,15,47,19) +hasLocation(#20044,#20045) +#20046=* +comments(#20046,0,#20001," Ok","// Ok") +#20047=@"loc,{#10000},48,28,48,32" +locations_default(#20047,#10000,48,28,48,32) +hasLocation(#20046,#20047) #20048=* -stmts(#20048,35,#20007,0,"type Ty ... bject"";") -#20049=@"loc,{#10000},2,3,8,15" -locations_default(#20049,#10000,2,3,8,15) +comments(#20048,0,#20001," ""updatePart""","// ""updatePart""") +#20049=@"loc,{#10000},64,44,64,58" +locations_default(#20049,#10000,64,44,64,58) hasLocation(#20048,#20049) -stmtContainers(#20048,#20007) #20050=* -typeexprs(#20050,1,#20048,0,"TypeName") -#20051=@"loc,{#10000},2,8,2,15" -locations_default(#20051,#10000,2,8,2,15) +comments(#20050,0,#20001," ""id"" | ""name"" | ""subparts""","// ""id"" ... bparts""") +#20051=@"loc,{#10000},65,47,65,75" +locations_default(#20051,#10000,65,47,65,75) hasLocation(#20050,#20051) -enclosingStmt(#20050,#20048) -exprContainers(#20050,#20007) -literals("TypeName","TypeName",#20050) -typedecl(#20050,#20014) #20052=* -scopes(#20052,12) -scopenodes(#20048,#20052) -scopenesting(#20052,#20011) -#20053=@"local_type_name;{T};{#20052}" -local_type_names(#20053,"T",#20052) +comments(#20052,0,#20001," { updatePart(newName: string): void }","// { up ... void }") +#20053=@"loc,{#10000},66,41,66,80" +locations_default(#20053,#10000,66,41,66,80) +hasLocation(#20052,#20053) #20054=* -typeexprs(#20054,22,#20048,2,"T") -#20055=@"loc,{#10000},2,17,2,17" -locations_default(#20055,#10000,2,17,2,17) +comments(#20054,0,#20001," { id: number, name: string, subparts: Part[] }","// { id ... art[] }") +#20055=@"loc,{#10000},67,44,67,92" +locations_default(#20055,#10000,67,44,67,92) hasLocation(#20054,#20055) -enclosingStmt(#20054,#20048) -exprContainers(#20054,#20007) #20056=* -typeexprs(#20056,1,#20054,0,"T") -hasLocation(#20056,#20055) -enclosingStmt(#20056,#20048) -exprContainers(#20056,#20007) -literals("T","T",#20056) -typedecl(#20056,#20053) -#20057=* -typeexprs(#20057,28,#20048,1,"T exten ... object""") -#20058=@"loc,{#10000},3,7,8,14" -locations_default(#20058,#10000,3,7,8,14) -hasLocation(#20057,#20058) -enclosingStmt(#20057,#20048) -exprContainers(#20057,#20007) -#20059=* -typeexprs(#20059,0,#20057,0,"T") -#20060=@"loc,{#10000},3,7,3,7" -locations_default(#20060,#10000,3,7,3,7) -hasLocation(#20059,#20060) -enclosingStmt(#20059,#20048) -exprContainers(#20059,#20007) -literals("T","T",#20059) -typebind(#20059,#20053) -#20061=* -typeexprs(#20061,2,#20057,1,"string") -#20062=@"loc,{#10000},3,17,3,22" -locations_default(#20062,#10000,3,17,3,22) -hasLocation(#20061,#20062) -enclosingStmt(#20061,#20048) -exprContainers(#20061,#20007) -literals("string","string",#20061) -#20063=* -typeexprs(#20063,3,#20057,2,"""string""") -#20064=@"loc,{#10000},3,26,3,33" -locations_default(#20064,#10000,3,26,3,33) -hasLocation(#20063,#20064) -enclosingStmt(#20063,#20048) -exprContainers(#20063,#20007) -literals("string","""string""",#20063) -#20065=* -typeexprs(#20065,28,#20057,3,"T exten ... object""") -#20066=@"loc,{#10000},4,7,8,14" -locations_default(#20066,#10000,4,7,8,14) -hasLocation(#20065,#20066) -enclosingStmt(#20065,#20048) -exprContainers(#20065,#20007) -#20067=* -typeexprs(#20067,0,#20065,0,"T") -#20068=@"loc,{#10000},4,7,4,7" -locations_default(#20068,#10000,4,7,4,7) -hasLocation(#20067,#20068) -enclosingStmt(#20067,#20048) -exprContainers(#20067,#20007) -literals("T","T",#20067) -typebind(#20067,#20053) -#20069=* -typeexprs(#20069,2,#20065,1,"number") -#20070=@"loc,{#10000},4,17,4,22" -locations_default(#20070,#10000,4,17,4,22) -hasLocation(#20069,#20070) -enclosingStmt(#20069,#20048) -exprContainers(#20069,#20007) -literals("number","number",#20069) -#20071=* -typeexprs(#20071,3,#20065,2,"""number""") -#20072=@"loc,{#10000},4,26,4,33" -locations_default(#20072,#10000,4,26,4,33) -hasLocation(#20071,#20072) -enclosingStmt(#20071,#20048) -exprContainers(#20071,#20007) -literals("number","""number""",#20071) -#20073=* -typeexprs(#20073,28,#20065,3,"T exten ... object""") -#20074=@"loc,{#10000},5,7,8,14" -locations_default(#20074,#10000,5,7,8,14) -hasLocation(#20073,#20074) -enclosingStmt(#20073,#20048) -exprContainers(#20073,#20007) -#20075=* -typeexprs(#20075,0,#20073,0,"T") -#20076=@"loc,{#10000},5,7,5,7" -locations_default(#20076,#10000,5,7,5,7) -hasLocation(#20075,#20076) -enclosingStmt(#20075,#20048) -exprContainers(#20075,#20007) -literals("T","T",#20075) -typebind(#20075,#20053) -#20077=* -typeexprs(#20077,2,#20073,1,"boolean") -#20078=@"loc,{#10000},5,17,5,23" -locations_default(#20078,#10000,5,17,5,23) -hasLocation(#20077,#20078) -enclosingStmt(#20077,#20048) -exprContainers(#20077,#20007) -literals("boolean","boolean",#20077) -#20079=* -typeexprs(#20079,3,#20073,2,"""boolean""") -#20080=@"loc,{#10000},5,27,5,35" -locations_default(#20080,#10000,5,27,5,35) -hasLocation(#20079,#20080) -enclosingStmt(#20079,#20048) -exprContainers(#20079,#20007) -literals("boolean","""boolean""",#20079) -#20081=* -typeexprs(#20081,28,#20073,3,"T exten ... object""") -#20082=@"loc,{#10000},6,7,8,14" -locations_default(#20082,#10000,6,7,8,14) -hasLocation(#20081,#20082) -enclosingStmt(#20081,#20048) -exprContainers(#20081,#20007) -#20083=* -typeexprs(#20083,0,#20081,0,"T") -#20084=@"loc,{#10000},6,7,6,7" -locations_default(#20084,#10000,6,7,6,7) -hasLocation(#20083,#20084) -enclosingStmt(#20083,#20048) -exprContainers(#20083,#20007) -literals("T","T",#20083) -typebind(#20083,#20053) -#20085=* -typeexprs(#20085,2,#20081,1,"undefined") -#20086=@"loc,{#10000},6,17,6,25" -locations_default(#20086,#10000,6,17,6,25) -hasLocation(#20085,#20086) -enclosingStmt(#20085,#20048) -exprContainers(#20085,#20007) -literals("undefined","undefined",#20085) -#20087=* -typeexprs(#20087,3,#20081,2,"""undefined""") -#20088=@"loc,{#10000},6,29,6,39" -locations_default(#20088,#10000,6,29,6,39) -hasLocation(#20087,#20088) -enclosingStmt(#20087,#20048) -exprContainers(#20087,#20007) -literals("undefined","""undefined""",#20087) -#20089=* -typeexprs(#20089,28,#20081,3,"T exten ... object""") -#20090=@"loc,{#10000},7,7,8,14" -locations_default(#20090,#10000,7,7,8,14) -hasLocation(#20089,#20090) -enclosingStmt(#20089,#20048) -exprContainers(#20089,#20007) -#20091=* -typeexprs(#20091,0,#20089,0,"T") -#20092=@"loc,{#10000},7,7,7,7" -locations_default(#20092,#10000,7,7,7,7) -hasLocation(#20091,#20092) -enclosingStmt(#20091,#20048) -exprContainers(#20091,#20007) -literals("T","T",#20091) -typebind(#20091,#20053) -#20093=* -typeexprs(#20093,0,#20089,1,"Function") -#20094=@"loc,{#10000},7,17,7,24" -locations_default(#20094,#10000,7,17,7,24) -hasLocation(#20093,#20094) -enclosingStmt(#20093,#20048) -exprContainers(#20093,#20007) -literals("Function","Function",#20093) -#20095=* -typeexprs(#20095,3,#20089,2,"""function""") -#20096=@"loc,{#10000},7,28,7,37" -locations_default(#20096,#10000,7,28,7,37) -hasLocation(#20095,#20096) -enclosingStmt(#20095,#20048) -exprContainers(#20095,#20007) -literals("function","""function""",#20095) -#20097=* -typeexprs(#20097,3,#20089,3,"""object""") -#20098=@"loc,{#10000},8,7,8,14" -locations_default(#20098,#10000,8,7,8,14) -hasLocation(#20097,#20098) -enclosingStmt(#20097,#20048) -exprContainers(#20097,#20007) -literals("object","""object""",#20097) -#20099=* -stmts(#20099,35,#20007,1,"type T0 ... tring>;") -#20100=@"loc,{#10000},10,3,10,29" -locations_default(#20100,#10000,10,3,10,29) -hasLocation(#20099,#20100) -stmtContainers(#20099,#20007) -#20101=* -typeexprs(#20101,1,#20099,0,"T0") -#20102=@"loc,{#10000},10,8,10,9" -locations_default(#20102,#10000,10,8,10,9) -hasLocation(#20101,#20102) -enclosingStmt(#20101,#20099) -exprContainers(#20101,#20007) -literals("T0","T0",#20101) -typedecl(#20101,#20015) -#20103=* -typeexprs(#20103,14,#20099,1,"TypeName") -#20104=@"loc,{#10000},10,13,10,28" -locations_default(#20104,#10000,10,13,10,28) -hasLocation(#20103,#20104) -enclosingStmt(#20103,#20099) -exprContainers(#20103,#20007) -#20105=* -typeexprs(#20105,0,#20103,-1,"TypeName") -#20106=@"loc,{#10000},10,13,10,20" -locations_default(#20106,#10000,10,13,10,20) -hasLocation(#20105,#20106) -enclosingStmt(#20105,#20099) -exprContainers(#20105,#20007) -literals("TypeName","TypeName",#20105) -typebind(#20105,#20014) -#20107=* -typeexprs(#20107,2,#20103,0,"string") -#20108=@"loc,{#10000},10,22,10,27" -locations_default(#20108,#10000,10,22,10,27) -hasLocation(#20107,#20108) -enclosingStmt(#20107,#20099) -exprContainers(#20107,#20007) -literals("string","string",#20107) -#20109=* -stmts(#20109,35,#20007,2,"type T1 ... e<""a"">;") -#20110=@"loc,{#10000},11,3,11,26" -locations_default(#20110,#10000,11,3,11,26) -hasLocation(#20109,#20110) -stmtContainers(#20109,#20007) -#20111=* -typeexprs(#20111,1,#20109,0,"T1") -#20112=@"loc,{#10000},11,8,11,9" -locations_default(#20112,#10000,11,8,11,9) -hasLocation(#20111,#20112) -enclosingStmt(#20111,#20109) -exprContainers(#20111,#20007) -literals("T1","T1",#20111) -typedecl(#20111,#20016) -#20113=* -typeexprs(#20113,14,#20109,1,"TypeName<""a"">") -#20114=@"loc,{#10000},11,13,11,25" -locations_default(#20114,#10000,11,13,11,25) -hasLocation(#20113,#20114) -enclosingStmt(#20113,#20109) -exprContainers(#20113,#20007) -#20115=* -typeexprs(#20115,0,#20113,-1,"TypeName") -#20116=@"loc,{#10000},11,13,11,20" -locations_default(#20116,#10000,11,13,11,20) -hasLocation(#20115,#20116) -enclosingStmt(#20115,#20109) -exprContainers(#20115,#20007) -literals("TypeName","TypeName",#20115) -typebind(#20115,#20014) -#20117=* -typeexprs(#20117,3,#20113,0,"""a""") -#20118=@"loc,{#10000},11,22,11,24" -locations_default(#20118,#10000,11,22,11,24) -hasLocation(#20117,#20118) -enclosingStmt(#20117,#20109) -exprContainers(#20117,#20007) -literals("a","""a""",#20117) -#20119=* -stmts(#20119,35,#20007,3,"type T2 ... ;") -#20120=@"loc,{#10000},12,3,12,27" -locations_default(#20120,#10000,12,3,12,27) -hasLocation(#20119,#20120) -stmtContainers(#20119,#20007) -#20121=* -typeexprs(#20121,1,#20119,0,"T2") -#20122=@"loc,{#10000},12,8,12,9" -locations_default(#20122,#10000,12,8,12,9) -hasLocation(#20121,#20122) -enclosingStmt(#20121,#20119) -exprContainers(#20121,#20007) -literals("T2","T2",#20121) -typedecl(#20121,#20017) -#20123=* -typeexprs(#20123,14,#20119,1,"TypeName") -#20124=@"loc,{#10000},12,13,12,26" -locations_default(#20124,#10000,12,13,12,26) -hasLocation(#20123,#20124) -enclosingStmt(#20123,#20119) -exprContainers(#20123,#20007) -#20125=* -typeexprs(#20125,0,#20123,-1,"TypeName") -#20126=@"loc,{#10000},12,13,12,20" -locations_default(#20126,#10000,12,13,12,20) -hasLocation(#20125,#20126) -enclosingStmt(#20125,#20119) -exprContainers(#20125,#20007) -literals("TypeName","TypeName",#20125) -typebind(#20125,#20014) -#20127=* -typeexprs(#20127,5,#20123,0,"true") -#20128=@"loc,{#10000},12,22,12,25" -locations_default(#20128,#10000,12,22,12,25) -hasLocation(#20127,#20128) -enclosingStmt(#20127,#20119) -exprContainers(#20127,#20007) -literals("true","true",#20127) -#20129=* -stmts(#20129,35,#20007,4,"type T3 ... void>;") -#20130=@"loc,{#10000},13,3,13,33" -locations_default(#20130,#10000,13,3,13,33) -hasLocation(#20129,#20130) -stmtContainers(#20129,#20007) -#20131=* -typeexprs(#20131,1,#20129,0,"T3") -#20132=@"loc,{#10000},13,8,13,9" -locations_default(#20132,#10000,13,8,13,9) -hasLocation(#20131,#20132) -enclosingStmt(#20131,#20129) -exprContainers(#20131,#20007) -literals("T3","T3",#20131) -typedecl(#20131,#20018) -#20133=* -typeexprs(#20133,14,#20129,1,"TypeName<() => void>") -#20134=@"loc,{#10000},13,13,13,32" -locations_default(#20134,#10000,13,13,13,32) -hasLocation(#20133,#20134) -enclosingStmt(#20133,#20129) -exprContainers(#20133,#20007) -#20135=* -typeexprs(#20135,0,#20133,-1,"TypeName") -#20136=@"loc,{#10000},13,13,13,20" -locations_default(#20136,#10000,13,13,13,20) -hasLocation(#20135,#20136) -enclosingStmt(#20135,#20129) -exprContainers(#20135,#20007) -literals("TypeName","TypeName",#20135) -typebind(#20135,#20014) -#20137=* -typeexprs(#20137,23,#20133,0,"() => void") -#20138=@"loc,{#10000},13,22,13,31" -locations_default(#20138,#10000,13,22,13,31) -hasLocation(#20137,#20138) -enclosingStmt(#20137,#20129) -exprContainers(#20137,#20007) -#20139=* -exprs(#20139,9,#20137,0,"() => void") -hasLocation(#20139,#20138) -enclosingStmt(#20139,#20129) -exprContainers(#20139,#20007) +comments(#20056,0,#20001," string","// string") +#20057=@"loc,{#10000},79,32,79,40" +locations_default(#20057,#10000,79,32,79,40) +hasLocation(#20056,#20057) +#20058=* +comments(#20058,0,#20001," string","// string") +#20059=@"loc,{#10000},80,34,80,42" +locations_default(#20059,#10000,80,34,80,42) +hasLocation(#20058,#20059) +#20060=* +comments(#20060,0,#20001," string","// string") +#20061=@"loc,{#10000},81,38,81,46" +locations_default(#20061,#10000,81,38,81,46) +hasLocation(#20060,#20061) +#20062=* +comments(#20062,0,#20001," string","// string") +#20063=@"loc,{#10000},82,41,82,49" +locations_default(#20063,#10000,82,41,82,49) +hasLocation(#20062,#20063) +#20064=* +comments(#20064,0,#20001," Promise","// Promise") +#20065=@"loc,{#10000},83,43,83,60" +locations_default(#20065,#10000,83,43,83,60) +hasLocation(#20064,#20065) +#20066=* +comments(#20066,0,#20001," string","// string") +#20067=@"loc,{#10000},84,53,84,61" +locations_default(#20067,#10000,84,53,84,61) +hasLocation(#20066,#20067) +#20068=* +comments(#20068,0,#20001," string","// string") +#20069=@"loc,{#10000},87,46,87,54" +locations_default(#20069,#10000,87,46,87,54) +hasLocation(#20068,#20069) +#20070=* +comments(#20070,0,#20001," string | number","// string | number") +#20071=@"loc,{#10000},88,46,88,63" +locations_default(#20071,#10000,88,46,88,63) +hasLocation(#20070,#20071) +#20072=* +comments(#20072,0,#20001," string","// string") +#20073=@"loc,{#10000},91,72,91,80" +locations_default(#20073,#10000,91,72,91,80) +hasLocation(#20072,#20073) +#20074=* +comments(#20074,0,#20001," string & number","// string & number") +#20075=@"loc,{#10000},92,72,92,89" +locations_default(#20075,#10000,92,72,92,89) +hasLocation(#20074,#20075) +#20076=* +comments(#20076,0,#20001," string | number","// string | number") +#20077=@"loc,{#10000},97,39,97,56" +locations_default(#20077,#10000,97,39,97,56) +hasLocation(#20076,#20077) +#20078=* +lines(#20078,#20001,"namespace ConditionalTypes1 {"," +") +#20079=@"loc,{#10000},1,1,1,29" +locations_default(#20079,#10000,1,1,1,29) +hasLocation(#20078,#20079) +#20080=* +lines(#20080,#20001," type TypeName ="," +") +#20081=@"loc,{#10000},2,1,2,20" +locations_default(#20081,#10000,2,1,2,20) +hasLocation(#20080,#20081) +indentation(#10000,2," ",2) +#20082=* +lines(#20082,#20001," T extends string ? ""string"" :"," +") +#20083=@"loc,{#10000},3,1,3,35" +locations_default(#20083,#10000,3,1,3,35) +hasLocation(#20082,#20083) +indentation(#10000,3," ",6) +#20084=* +lines(#20084,#20001," T extends number ? ""number"" :"," +") +#20085=@"loc,{#10000},4,1,4,35" +locations_default(#20085,#10000,4,1,4,35) +hasLocation(#20084,#20085) +indentation(#10000,4," ",6) +#20086=* +lines(#20086,#20001," T extends boolean ? ""boolean"" :"," +") +#20087=@"loc,{#10000},5,1,5,37" +locations_default(#20087,#10000,5,1,5,37) +hasLocation(#20086,#20087) +indentation(#10000,5," ",6) +#20088=* +lines(#20088,#20001," T extends undefined ? ""undefined"" :"," +") +#20089=@"loc,{#10000},6,1,6,41" +locations_default(#20089,#10000,6,1,6,41) +hasLocation(#20088,#20089) +indentation(#10000,6," ",6) +#20090=* +lines(#20090,#20001," T extends Function ? ""function"" :"," +") +#20091=@"loc,{#10000},7,1,7,39" +locations_default(#20091,#10000,7,1,7,39) +hasLocation(#20090,#20091) +indentation(#10000,7," ",6) +#20092=* +lines(#20092,#20001," ""object"";"," +") +#20093=@"loc,{#10000},8,1,8,15" +locations_default(#20093,#10000,8,1,8,15) +hasLocation(#20092,#20093) +indentation(#10000,8," ",6) +#20094=* +lines(#20094,#20001," "," +") +#20095=@"loc,{#10000},9,1,9,2" +locations_default(#20095,#10000,9,1,9,2) +hasLocation(#20094,#20095) +#20096=* +lines(#20096,#20001," type T0 = TypeName; // ""string"""," +") +#20097=@"loc,{#10000},10,1,10,42" +locations_default(#20097,#10000,10,1,10,42) +hasLocation(#20096,#20097) +indentation(#10000,10," ",2) +#20098=* +lines(#20098,#20001," type T1 = TypeName<""a"">; // ""string"""," +") +#20099=@"loc,{#10000},11,1,11,39" +locations_default(#20099,#10000,11,1,11,39) +hasLocation(#20098,#20099) +indentation(#10000,11," ",2) +#20100=* +lines(#20100,#20001," type T2 = TypeName; // ""boolean"""," +") +#20101=@"loc,{#10000},12,1,12,41" +locations_default(#20101,#10000,12,1,12,41) +hasLocation(#20100,#20101) +indentation(#10000,12," ",2) +#20102=* +lines(#20102,#20001," type T3 = TypeName<() => void>; // ""function"""," +") +#20103=@"loc,{#10000},13,1,13,48" +locations_default(#20103,#10000,13,1,13,48) +hasLocation(#20102,#20103) +indentation(#10000,13," ",2) +#20104=* +lines(#20104,#20001," type T4 = TypeName; // ""object"""," +") +#20105=@"loc,{#10000},14,1,14,44" +locations_default(#20105,#10000,14,1,14,44) +hasLocation(#20104,#20105) +indentation(#10000,14," ",2) +#20106=* +lines(#20106,#20001," "," +") +#20107=@"loc,{#10000},15,1,15,2" +locations_default(#20107,#10000,15,1,15,2) +hasLocation(#20106,#20107) +#20108=* +lines(#20108,#20001," "," +") +#20109=@"loc,{#10000},16,1,16,2" +locations_default(#20109,#10000,16,1,16,2) +hasLocation(#20108,#20109) +#20110=* +lines(#20110,#20001," type T10 = TypeName void)>; // ""string"" | ""function"""," +") +#20111=@"loc,{#10000},17,1,17,71" +locations_default(#20111,#10000,17,1,17,71) +hasLocation(#20110,#20111) +indentation(#10000,17," ",2) +#20112=* +lines(#20112,#20001," type T12 = TypeName; // ""string"" | ""object"" | ""undefined"""," +") +#20113=@"loc,{#10000},18,1,18,91" +locations_default(#20113,#10000,18,1,18,91) +hasLocation(#20112,#20113) +indentation(#10000,18," ",2) +#20114=* +lines(#20114,#20001," type T11 = TypeName; // ""object"""," +") +#20115=@"loc,{#10000},19,1,19,56" +locations_default(#20115,#10000,19,1,19,56) +hasLocation(#20114,#20115) +indentation(#10000,19," ",2) +#20116=* +lines(#20116,#20001," "," +") +#20117=@"loc,{#10000},20,1,20,2" +locations_default(#20117,#10000,20,1,20,2) +hasLocation(#20116,#20117) +#20118=* +lines(#20118,#20001," type BoxedValue = { value: T };"," +") +#20119=@"loc,{#10000},21,1,21,36" +locations_default(#20119,#10000,21,1,21,36) +hasLocation(#20118,#20119) +indentation(#10000,21," ",2) +#20120=* +lines(#20120,#20001," type BoxedArray = { array: T[] };"," +") +#20121=@"loc,{#10000},22,1,22,38" +locations_default(#20121,#10000,22,1,22,38) +hasLocation(#20120,#20121) +indentation(#10000,22," ",2) +#20122=* +lines(#20122,#20001," type Boxed = T extends any[] ? BoxedArray : BoxedValue;"," +") +#20123=@"loc,{#10000},23,1,23,74" +locations_default(#20123,#10000,23,1,23,74) +hasLocation(#20122,#20123) +indentation(#10000,23," ",2) +#20124=* +lines(#20124,#20001," "," +") +#20125=@"loc,{#10000},24,1,24,2" +locations_default(#20125,#10000,24,1,24,2) +hasLocation(#20124,#20125) +#20126=* +lines(#20126,#20001," type T20 = Boxed; // BoxedValue;"," +") +#20127=@"loc,{#10000},25,1,25,51" +locations_default(#20127,#10000,25,1,25,51) +hasLocation(#20126,#20127) +indentation(#10000,25," ",2) +#20128=* +lines(#20128,#20001," type T21 = Boxed; // BoxedArray;"," +") +#20129=@"loc,{#10000},26,1,26,53" +locations_default(#20129,#10000,26,1,26,53) +hasLocation(#20128,#20129) +indentation(#10000,26," ",2) +#20130=* +lines(#20130,#20001," type T22 = Boxed; // BoxedValue | BoxedArray;"," +") +#20131=@"loc,{#10000},27,1,27,83" +locations_default(#20131,#10000,27,1,27,83) +hasLocation(#20130,#20131) +indentation(#10000,27," ",2) +#20132=* +lines(#20132,#20001," "," +") +#20133=@"loc,{#10000},28,1,28,2" +locations_default(#20133,#10000,28,1,28,2) +hasLocation(#20132,#20133) +#20134=* +lines(#20134,#20001," type Diff = T extends U ? never : T; // Remove types from T that are assignable to U"," +") +#20135=@"loc,{#10000},29,1,29,93" +locations_default(#20135,#10000,29,1,29,93) +hasLocation(#20134,#20135) +indentation(#10000,29," ",2) +#20136=* +lines(#20136,#20001," type Filter = T extends U ? T : never; // Remove types from T that are not assignable to U"," +") +#20137=@"loc,{#10000},30,1,30,99" +locations_default(#20137,#10000,30,1,30,99) +hasLocation(#20136,#20137) +indentation(#10000,30," ",2) +#20138=* +lines(#20138,#20001," "," +") +#20139=@"loc,{#10000},31,1,31,2" +locations_default(#20139,#10000,31,1,31,2) +hasLocation(#20138,#20139) #20140=* -scopes(#20140,1) -scopenodes(#20139,#20140) -scopenesting(#20140,#20011) -#20141=@"var;{arguments};{#20140}" -variables(#20141,"arguments",#20140) -isArgumentsObject(#20141) +lines(#20140,#20001," type T30 = Diff<""a"" | ""b"" | ""c"" | ""d"", ""a"" | ""c"" | ""f"">; // ""b"" | ""d"""," +") +#20141=@"loc,{#10000},32,1,32,72" +locations_default(#20141,#10000,32,1,32,72) +hasLocation(#20140,#20141) +indentation(#10000,32," ",2) #20142=* -typeexprs(#20142,2,#20139,-3,"void") -#20143=@"loc,{#10000},13,28,13,31" -locations_default(#20143,#10000,13,28,13,31) +lines(#20142,#20001," type T31 = Filter<""a"" | ""b"" | ""c"" | ""d"", ""a"" | ""c"" | ""f"">; // ""a"" | ""c"""," +") +#20143=@"loc,{#10000},33,1,33,74" +locations_default(#20143,#10000,33,1,33,74) hasLocation(#20142,#20143) -exprContainers(#20142,#20139) -literals("void","void",#20142) -numlines(#20139,1,1,0) +indentation(#10000,33," ",2) #20144=* -stmts(#20144,35,#20007,5,"type T4 ... ing[]>;") -#20145=@"loc,{#10000},14,3,14,31" -locations_default(#20145,#10000,14,3,14,31) +lines(#20144,#20001," type T32 = Diff void), Function>; // string | number"," +") +#20145=@"loc,{#10000},34,1,34,80" +locations_default(#20145,#10000,34,1,34,80) hasLocation(#20144,#20145) -stmtContainers(#20144,#20007) +indentation(#10000,34," ",2) #20146=* -typeexprs(#20146,1,#20144,0,"T4") -#20147=@"loc,{#10000},14,8,14,9" -locations_default(#20147,#10000,14,8,14,9) +lines(#20146,#20001," type T33 = Filter void), Function>; // () => void"," +") +#20147=@"loc,{#10000},35,1,35,77" +locations_default(#20147,#10000,35,1,35,77) hasLocation(#20146,#20147) -enclosingStmt(#20146,#20144) -exprContainers(#20146,#20007) -literals("T4","T4",#20146) -typedecl(#20146,#20019) +indentation(#10000,35," ",2) #20148=* -typeexprs(#20148,14,#20144,1,"TypeName") -#20149=@"loc,{#10000},14,13,14,30" -locations_default(#20149,#10000,14,13,14,30) +lines(#20148,#20001," "," +") +#20149=@"loc,{#10000},36,1,36,2" +locations_default(#20149,#10000,36,1,36,2) hasLocation(#20148,#20149) -enclosingStmt(#20148,#20144) -exprContainers(#20148,#20007) #20150=* -typeexprs(#20150,0,#20148,-1,"TypeName") -#20151=@"loc,{#10000},14,13,14,20" -locations_default(#20151,#10000,14,13,14,20) +lines(#20150,#20001," type NonNullable = Diff; // Remove null and undefined from T"," +") +#20151=@"loc,{#10000},37,1,37,87" +locations_default(#20151,#10000,37,1,37,87) hasLocation(#20150,#20151) -enclosingStmt(#20150,#20144) -exprContainers(#20150,#20007) -literals("TypeName","TypeName",#20150) -typebind(#20150,#20014) +indentation(#10000,37," ",2) #20152=* -typeexprs(#20152,6,#20148,0,"string[]") -#20153=@"loc,{#10000},14,22,14,29" -locations_default(#20153,#10000,14,22,14,29) +lines(#20152,#20001," "," +") +#20153=@"loc,{#10000},38,1,38,2" +locations_default(#20153,#10000,38,1,38,2) hasLocation(#20152,#20153) -enclosingStmt(#20152,#20144) -exprContainers(#20152,#20007) #20154=* -typeexprs(#20154,2,#20152,0,"string") -#20155=@"loc,{#10000},14,22,14,27" -locations_default(#20155,#10000,14,22,14,27) +lines(#20154,#20001," type T34 = NonNullable; // string | number"," +") +#20155=@"loc,{#10000},39,1,39,74" +locations_default(#20155,#10000,39,1,39,74) hasLocation(#20154,#20155) -enclosingStmt(#20154,#20144) -exprContainers(#20154,#20007) -literals("string","string",#20154) +indentation(#10000,39," ",2) #20156=* -stmts(#20156,35,#20007,6,"type T1 ... void)>;") -#20157=@"loc,{#10000},17,3,17,45" -locations_default(#20157,#10000,17,3,17,45) +lines(#20156,#20001," type T35 = NonNullable; // string | string[]"," +") +#20157=@"loc,{#10000},40,1,40,85" +locations_default(#20157,#10000,40,1,40,85) hasLocation(#20156,#20157) -stmtContainers(#20156,#20007) +indentation(#10000,40," ",2) #20158=* -typeexprs(#20158,1,#20156,0,"T10") -#20159=@"loc,{#10000},17,8,17,10" -locations_default(#20159,#10000,17,8,17,10) +lines(#20158,#20001," "," +") +#20159=@"loc,{#10000},41,1,41,2" +locations_default(#20159,#10000,41,1,41,2) hasLocation(#20158,#20159) -enclosingStmt(#20158,#20156) -exprContainers(#20158,#20007) -literals("T10","T10",#20158) -typedecl(#20158,#20020) #20160=* -typeexprs(#20160,14,#20156,1,"TypeNam ... void)>") -#20161=@"loc,{#10000},17,14,17,44" -locations_default(#20161,#10000,17,14,17,44) +lines(#20160,#20001," function f1(x: T, y: NonNullable) {"," +") +#20161=@"loc,{#10000},42,1,42,43" +locations_default(#20161,#10000,42,1,42,43) hasLocation(#20160,#20161) -enclosingStmt(#20160,#20156) -exprContainers(#20160,#20007) +indentation(#10000,42," ",2) #20162=* -typeexprs(#20162,0,#20160,-1,"TypeName") -#20163=@"loc,{#10000},17,14,17,21" -locations_default(#20163,#10000,17,14,17,21) +lines(#20162,#20001," x = y; // Ok"," +") +#20163=@"loc,{#10000},43,1,43,19" +locations_default(#20163,#10000,43,1,43,19) hasLocation(#20162,#20163) -enclosingStmt(#20162,#20156) -exprContainers(#20162,#20007) -literals("TypeName","TypeName",#20162) -typebind(#20162,#20014) +indentation(#10000,43," ",6) #20164=* -typeexprs(#20164,7,#20160,0,"string ... > void)") -#20165=@"loc,{#10000},17,23,17,43" -locations_default(#20165,#10000,17,23,17,43) +lines(#20164,#20001," }"," +") +#20165=@"loc,{#10000},44,1,44,3" +locations_default(#20165,#10000,44,1,44,3) hasLocation(#20164,#20165) -enclosingStmt(#20164,#20156) -exprContainers(#20164,#20007) +indentation(#10000,44," ",2) #20166=* -typeexprs(#20166,2,#20164,0,"string") -#20167=@"loc,{#10000},17,23,17,28" -locations_default(#20167,#10000,17,23,17,28) +lines(#20166,#20001," "," +") +#20167=@"loc,{#10000},45,1,45,2" +locations_default(#20167,#10000,45,1,45,2) hasLocation(#20166,#20167) -enclosingStmt(#20166,#20156) -exprContainers(#20166,#20007) -literals("string","string",#20166) #20168=* -typeexprs(#20168,10,#20164,1,"(() => void)") -#20169=@"loc,{#10000},17,32,17,43" -locations_default(#20169,#10000,17,32,17,43) +lines(#20168,#20001," function f2(x: T, y: NonNullable) {"," +") +#20169=@"loc,{#10000},46,1,46,70" +locations_default(#20169,#10000,46,1,46,70) hasLocation(#20168,#20169) -enclosingStmt(#20168,#20156) -exprContainers(#20168,#20007) +indentation(#10000,46," ",2) #20170=* -typeexprs(#20170,23,#20168,0,"() => void") -#20171=@"loc,{#10000},17,33,17,42" -locations_default(#20171,#10000,17,33,17,42) +lines(#20170,#20001," x = y; // Ok"," +") +#20171=@"loc,{#10000},47,1,47,19" +locations_default(#20171,#10000,47,1,47,19) hasLocation(#20170,#20171) -enclosingStmt(#20170,#20156) -exprContainers(#20170,#20007) +indentation(#10000,47," ",6) #20172=* -exprs(#20172,9,#20170,0,"() => void") -hasLocation(#20172,#20171) -enclosingStmt(#20172,#20156) -exprContainers(#20172,#20007) -#20173=* -scopes(#20173,1) -scopenodes(#20172,#20173) -scopenesting(#20173,#20011) -#20174=@"var;{arguments};{#20173}" -variables(#20174,"arguments",#20173) -isArgumentsObject(#20174) -#20175=* -typeexprs(#20175,2,#20172,-3,"void") -#20176=@"loc,{#10000},17,39,17,42" -locations_default(#20176,#10000,17,39,17,42) -hasLocation(#20175,#20176) -exprContainers(#20175,#20172) -literals("void","void",#20175) -numlines(#20172,1,1,0) -#20177=* -stmts(#20177,35,#20007,7,"type T1 ... fined>;") -#20178=@"loc,{#10000},18,3,18,53" -locations_default(#20178,#10000,18,3,18,53) -hasLocation(#20177,#20178) -stmtContainers(#20177,#20007) -#20179=* -typeexprs(#20179,1,#20177,0,"T12") -#20180=@"loc,{#10000},18,8,18,10" -locations_default(#20180,#10000,18,8,18,10) -hasLocation(#20179,#20180) -enclosingStmt(#20179,#20177) -exprContainers(#20179,#20007) -literals("T12","T12",#20179) -typedecl(#20179,#20021) -#20181=* -typeexprs(#20181,14,#20177,1,"TypeNam ... efined>") -#20182=@"loc,{#10000},18,14,18,52" -locations_default(#20182,#10000,18,14,18,52) -hasLocation(#20181,#20182) -enclosingStmt(#20181,#20177) -exprContainers(#20181,#20007) -#20183=* -typeexprs(#20183,0,#20181,-1,"TypeName") -#20184=@"loc,{#10000},18,14,18,21" -locations_default(#20184,#10000,18,14,18,21) -hasLocation(#20183,#20184) -enclosingStmt(#20183,#20177) -exprContainers(#20183,#20007) -literals("TypeName","TypeName",#20183) -typebind(#20183,#20014) -#20185=* -typeexprs(#20185,7,#20181,0,"string ... defined") -#20186=@"loc,{#10000},18,23,18,51" -locations_default(#20186,#10000,18,23,18,51) -hasLocation(#20185,#20186) -enclosingStmt(#20185,#20177) -exprContainers(#20185,#20007) -#20187=* -typeexprs(#20187,2,#20185,0,"string") -#20188=@"loc,{#10000},18,23,18,28" -locations_default(#20188,#10000,18,23,18,28) -hasLocation(#20187,#20188) -enclosingStmt(#20187,#20177) -exprContainers(#20187,#20007) -literals("string","string",#20187) -#20189=* -typeexprs(#20189,6,#20185,1,"string[]") -#20190=@"loc,{#10000},18,32,18,39" -locations_default(#20190,#10000,18,32,18,39) -hasLocation(#20189,#20190) -enclosingStmt(#20189,#20177) -exprContainers(#20189,#20007) -#20191=* -typeexprs(#20191,2,#20189,0,"string") -#20192=@"loc,{#10000},18,32,18,37" -locations_default(#20192,#10000,18,32,18,37) -hasLocation(#20191,#20192) -enclosingStmt(#20191,#20177) -exprContainers(#20191,#20007) -literals("string","string",#20191) -#20193=* -typeexprs(#20193,2,#20185,2,"undefined") -#20194=@"loc,{#10000},18,43,18,51" -locations_default(#20194,#10000,18,43,18,51) -hasLocation(#20193,#20194) -enclosingStmt(#20193,#20177) -exprContainers(#20193,#20007) -literals("undefined","undefined",#20193) -#20195=* -stmts(#20195,35,#20007,8,"type T1 ... ber[]>;") -#20196=@"loc,{#10000},19,3,19,43" -locations_default(#20196,#10000,19,3,19,43) -hasLocation(#20195,#20196) -stmtContainers(#20195,#20007) -#20197=* -typeexprs(#20197,1,#20195,0,"T11") -#20198=@"loc,{#10000},19,8,19,10" -locations_default(#20198,#10000,19,8,19,10) -hasLocation(#20197,#20198) -enclosingStmt(#20197,#20195) -exprContainers(#20197,#20007) -literals("T11","T11",#20197) -typedecl(#20197,#20022) -#20199=* -typeexprs(#20199,14,#20195,1,"TypeNam ... mber[]>") -#20200=@"loc,{#10000},19,14,19,42" -locations_default(#20200,#10000,19,14,19,42) -hasLocation(#20199,#20200) -enclosingStmt(#20199,#20195) -exprContainers(#20199,#20007) -#20201=* -typeexprs(#20201,0,#20199,-1,"TypeName") -#20202=@"loc,{#10000},19,14,19,21" -locations_default(#20202,#10000,19,14,19,21) -hasLocation(#20201,#20202) -enclosingStmt(#20201,#20195) -exprContainers(#20201,#20007) -literals("TypeName","TypeName",#20201) -typebind(#20201,#20014) -#20203=* -typeexprs(#20203,7,#20199,0,"string[] | number[]") -#20204=@"loc,{#10000},19,23,19,41" -locations_default(#20204,#10000,19,23,19,41) -hasLocation(#20203,#20204) -enclosingStmt(#20203,#20195) -exprContainers(#20203,#20007) -#20205=* -typeexprs(#20205,6,#20203,0,"string[]") -#20206=@"loc,{#10000},19,23,19,30" -locations_default(#20206,#10000,19,23,19,30) -hasLocation(#20205,#20206) -enclosingStmt(#20205,#20195) -exprContainers(#20205,#20007) -#20207=* -typeexprs(#20207,2,#20205,0,"string") -#20208=@"loc,{#10000},19,23,19,28" -locations_default(#20208,#10000,19,23,19,28) -hasLocation(#20207,#20208) -enclosingStmt(#20207,#20195) -exprContainers(#20207,#20007) -literals("string","string",#20207) -#20209=* -typeexprs(#20209,6,#20203,1,"number[]") -#20210=@"loc,{#10000},19,34,19,41" -locations_default(#20210,#10000,19,34,19,41) -hasLocation(#20209,#20210) -enclosingStmt(#20209,#20195) -exprContainers(#20209,#20007) -#20211=* -typeexprs(#20211,2,#20209,0,"number") -#20212=@"loc,{#10000},19,34,19,39" -locations_default(#20212,#10000,19,34,19,39) -hasLocation(#20211,#20212) -enclosingStmt(#20211,#20195) -exprContainers(#20211,#20007) -literals("number","number",#20211) -#20213=* -stmts(#20213,35,#20007,9,"type Bo ... e: T };") -#20214=@"loc,{#10000},21,3,21,36" -locations_default(#20214,#10000,21,3,21,36) -hasLocation(#20213,#20214) -stmtContainers(#20213,#20007) -#20215=* -typeexprs(#20215,1,#20213,0,"BoxedValue") -#20216=@"loc,{#10000},21,8,21,17" -locations_default(#20216,#10000,21,8,21,17) -hasLocation(#20215,#20216) -enclosingStmt(#20215,#20213) -exprContainers(#20215,#20007) -literals("BoxedValue","BoxedValue",#20215) -typedecl(#20215,#20023) -#20217=* -scopes(#20217,12) -scopenodes(#20213,#20217) -scopenesting(#20217,#20011) -#20218=@"local_type_name;{T};{#20217}" -local_type_names(#20218,"T",#20217) -#20219=* -typeexprs(#20219,22,#20213,2,"T") -#20220=@"loc,{#10000},21,19,21,19" -locations_default(#20220,#10000,21,19,21,19) -hasLocation(#20219,#20220) -enclosingStmt(#20219,#20213) -exprContainers(#20219,#20007) -#20221=* -typeexprs(#20221,1,#20219,0,"T") -hasLocation(#20221,#20220) -enclosingStmt(#20221,#20213) -exprContainers(#20221,#20007) -literals("T","T",#20221) -typedecl(#20221,#20218) +lines(#20172,#20001," let s2: string = y; // Ok"," +") +#20173=@"loc,{#10000},48,1,48,32" +locations_default(#20173,#10000,48,1,48,32) +hasLocation(#20172,#20173) +indentation(#10000,48," ",6) +#20174=* +lines(#20174,#20001," }"," +") +#20175=@"loc,{#10000},49,1,49,3" +locations_default(#20175,#10000,49,1,49,3) +hasLocation(#20174,#20175) +indentation(#10000,49," ",2) +#20176=* +lines(#20176,#20001," "," +") +#20177=@"loc,{#10000},50,1,50,2" +locations_default(#20177,#10000,50,1,50,2) +hasLocation(#20176,#20177) +#20178=* +lines(#20178,#20001," type FunctionPropertyNames = { [K in keyof T]: T[K] extends Function ? K : never }[keyof T];"," +") +#20179=@"loc,{#10000},51,1,51,97" +locations_default(#20179,#10000,51,1,51,97) +hasLocation(#20178,#20179) +indentation(#10000,51," ",2) +#20180=* +lines(#20180,#20001," type FunctionProperties = Pick>;"," +") +#20181=@"loc,{#10000},52,1,52,65" +locations_default(#20181,#10000,52,1,52,65) +hasLocation(#20180,#20181) +indentation(#10000,52," ",2) +#20182=* +lines(#20182,#20001," "," +") +#20183=@"loc,{#10000},53,1,53,2" +locations_default(#20183,#10000,53,1,53,2) +hasLocation(#20182,#20183) +#20184=* +lines(#20184,#20001," type NonFunctionPropertyNames = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T];"," +") +#20185=@"loc,{#10000},54,1,54,100" +locations_default(#20185,#10000,54,1,54,100) +hasLocation(#20184,#20185) +indentation(#10000,54," ",2) +#20186=* +lines(#20186,#20001," type NonFunctionProperties = Pick>;"," +") +#20187=@"loc,{#10000},55,1,55,71" +locations_default(#20187,#10000,55,1,55,71) +hasLocation(#20186,#20187) +indentation(#10000,55," ",2) +#20188=* +lines(#20188,#20001," "," +") +#20189=@"loc,{#10000},56,1,56,2" +locations_default(#20189,#10000,56,1,56,2) +hasLocation(#20188,#20189) +#20190=* +lines(#20190,#20001," interface Part {"," +") +#20191=@"loc,{#10000},57,1,57,18" +locations_default(#20191,#10000,57,1,57,18) +hasLocation(#20190,#20191) +indentation(#10000,57," ",2) +#20192=* +lines(#20192,#20001," id: number;"," +") +#20193=@"loc,{#10000},58,1,58,17" +locations_default(#20193,#10000,58,1,58,17) +hasLocation(#20192,#20193) +indentation(#10000,58," ",6) +#20194=* +lines(#20194,#20001," name: string;"," +") +#20195=@"loc,{#10000},59,1,59,19" +locations_default(#20195,#10000,59,1,59,19) +hasLocation(#20194,#20195) +indentation(#10000,59," ",6) +#20196=* +lines(#20196,#20001," subparts: Part[];"," +") +#20197=@"loc,{#10000},60,1,60,23" +locations_default(#20197,#10000,60,1,60,23) +hasLocation(#20196,#20197) +indentation(#10000,60," ",6) +#20198=* +lines(#20198,#20001," updatePart(newName: string): void;"," +") +#20199=@"loc,{#10000},61,1,61,40" +locations_default(#20199,#10000,61,1,61,40) +hasLocation(#20198,#20199) +indentation(#10000,61," ",6) +#20200=* +lines(#20200,#20001," }"," +") +#20201=@"loc,{#10000},62,1,62,3" +locations_default(#20201,#10000,62,1,62,3) +hasLocation(#20200,#20201) +indentation(#10000,62," ",2) +#20202=* +lines(#20202,#20001," "," +") +#20203=@"loc,{#10000},63,1,63,2" +locations_default(#20203,#10000,63,1,63,2) +hasLocation(#20202,#20203) +#20204=* +lines(#20204,#20001," type T40 = FunctionPropertyNames; // ""updatePart"""," +") +#20205=@"loc,{#10000},64,1,64,58" +locations_default(#20205,#10000,64,1,64,58) +hasLocation(#20204,#20205) +indentation(#10000,64," ",2) +#20206=* +lines(#20206,#20001," type T41 = NonFunctionPropertyNames; // ""id"" | ""name"" | ""subparts"""," +") +#20207=@"loc,{#10000},65,1,65,75" +locations_default(#20207,#10000,65,1,65,75) +hasLocation(#20206,#20207) +indentation(#10000,65," ",2) +#20208=* +lines(#20208,#20001," type T42 = FunctionProperties; // { updatePart(newName: string): void }"," +") +#20209=@"loc,{#10000},66,1,66,80" +locations_default(#20209,#10000,66,1,66,80) +hasLocation(#20208,#20209) +indentation(#10000,66," ",2) +#20210=* +lines(#20210,#20001," type T43 = NonFunctionProperties; // { id: number, name: string, subparts: Part[] }"," +") +#20211=@"loc,{#10000},67,1,67,92" +locations_default(#20211,#10000,67,1,67,92) +hasLocation(#20210,#20211) +indentation(#10000,67," ",2) +#20212=* +lines(#20212,#20001," "," +") +#20213=@"loc,{#10000},68,1,68,2" +locations_default(#20213,#10000,68,1,68,2) +hasLocation(#20212,#20213) +#20214=* +lines(#20214,#20001," type ReturnType = T extends (...args: any[]) => infer R ? R : any;"," +") +#20215=@"loc,{#10000},69,1,69,71" +locations_default(#20215,#10000,69,1,69,71) +hasLocation(#20214,#20215) +indentation(#10000,69," ",2) +#20216=* +lines(#20216,#20001,"}"," +") +#20217=@"loc,{#10000},70,1,70,1" +locations_default(#20217,#10000,70,1,70,1) +hasLocation(#20216,#20217) +#20218=* +lines(#20218,#20001,""," +") +#20219=@"loc,{#10000},71,1,71,0" +locations_default(#20219,#10000,71,1,71,0) +hasLocation(#20218,#20219) +#20220=* +lines(#20220,#20001,"namespace ConditionalTypes2 {"," +") +#20221=@"loc,{#10000},72,1,72,29" +locations_default(#20221,#10000,72,1,72,29) +hasLocation(#20220,#20221) #20222=* -typeexprs(#20222,21,#20213,1,"{ value: T }") -#20223=@"loc,{#10000},21,24,21,35" -locations_default(#20223,#10000,21,24,21,35) +lines(#20222,#20001," type Unpacked ="," +") +#20223=@"loc,{#10000},73,1,73,20" +locations_default(#20223,#10000,73,1,73,20) hasLocation(#20222,#20223) -enclosingStmt(#20222,#20213) -exprContainers(#20222,#20007) +indentation(#10000,73," ",2) #20224=* -properties(#20224,#20222,0,8,"value: T") -#20225=@"loc,{#10000},21,26,21,33" -locations_default(#20225,#10000,21,26,21,33) +lines(#20224,#20001," T extends (infer U)[] ? U :"," +") +#20225=@"loc,{#10000},74,1,74,31" +locations_default(#20225,#10000,74,1,74,31) hasLocation(#20224,#20225) +indentation(#10000,74," ",4) #20226=* -exprs(#20226,0,#20224,0,"value") -#20227=@"loc,{#10000},21,26,21,30" -locations_default(#20227,#10000,21,26,21,30) +lines(#20226,#20001," T extends (...args: any[]) => infer U ? U :"," +") +#20227=@"loc,{#10000},75,1,75,47" +locations_default(#20227,#10000,75,1,75,47) hasLocation(#20226,#20227) -enclosingStmt(#20226,#20213) -exprContainers(#20226,#20007) -literals("value","value",#20226) -isAbstractMember(#20224) +indentation(#10000,75," ",4) #20228=* -typeexprs(#20228,0,#20224,2,"T") -#20229=@"loc,{#10000},21,33,21,33" -locations_default(#20229,#10000,21,33,21,33) +lines(#20228,#20001," T extends Promise ? U :"," +") +#20229=@"loc,{#10000},76,1,76,36" +locations_default(#20229,#10000,76,1,76,36) hasLocation(#20228,#20229) -enclosingStmt(#20228,#20213) -exprContainers(#20228,#20007) -literals("T","T",#20228) -typebind(#20228,#20218) +indentation(#10000,76," ",4) #20230=* -stmts(#20230,35,#20007,10,"type Bo ... T[] };") -#20231=@"loc,{#10000},22,3,22,38" -locations_default(#20231,#10000,22,3,22,38) +lines(#20230,#20001," T;"," +") +#20231=@"loc,{#10000},77,1,77,6" +locations_default(#20231,#10000,77,1,77,6) hasLocation(#20230,#20231) -stmtContainers(#20230,#20007) +indentation(#10000,77," ",4) #20232=* -typeexprs(#20232,1,#20230,0,"BoxedArray") -#20233=@"loc,{#10000},22,8,22,17" -locations_default(#20233,#10000,22,8,22,17) +lines(#20232,#20001," "," +") +#20233=@"loc,{#10000},78,1,78,2" +locations_default(#20233,#10000,78,1,78,2) hasLocation(#20232,#20233) -enclosingStmt(#20232,#20230) -exprContainers(#20232,#20007) -literals("BoxedArray","BoxedArray",#20232) -typedecl(#20232,#20024) #20234=* -scopes(#20234,12) -scopenodes(#20230,#20234) -scopenesting(#20234,#20011) -#20235=@"local_type_name;{T};{#20234}" -local_type_names(#20235,"T",#20234) +lines(#20234,#20001," type T0 = Unpacked; // string"," +") +#20235=@"loc,{#10000},79,1,79,40" +locations_default(#20235,#10000,79,1,79,40) +hasLocation(#20234,#20235) +indentation(#10000,79," ",2) #20236=* -typeexprs(#20236,22,#20230,2,"T") -#20237=@"loc,{#10000},22,19,22,19" -locations_default(#20237,#10000,22,19,22,19) +lines(#20236,#20001," type T1 = Unpacked; // string"," +") +#20237=@"loc,{#10000},80,1,80,42" +locations_default(#20237,#10000,80,1,80,42) hasLocation(#20236,#20237) -enclosingStmt(#20236,#20230) -exprContainers(#20236,#20007) +indentation(#10000,80," ",2) #20238=* -typeexprs(#20238,1,#20236,0,"T") -hasLocation(#20238,#20237) -enclosingStmt(#20238,#20230) -exprContainers(#20238,#20007) -literals("T","T",#20238) -typedecl(#20238,#20235) -#20239=* -typeexprs(#20239,21,#20230,1,"{ array: T[] }") -#20240=@"loc,{#10000},22,24,22,37" -locations_default(#20240,#10000,22,24,22,37) -hasLocation(#20239,#20240) -enclosingStmt(#20239,#20230) -exprContainers(#20239,#20007) -#20241=* -properties(#20241,#20239,0,8,"array: T[]") -#20242=@"loc,{#10000},22,26,22,35" -locations_default(#20242,#10000,22,26,22,35) -hasLocation(#20241,#20242) -#20243=* -exprs(#20243,0,#20241,0,"array") -#20244=@"loc,{#10000},22,26,22,30" -locations_default(#20244,#10000,22,26,22,30) -hasLocation(#20243,#20244) -enclosingStmt(#20243,#20230) -exprContainers(#20243,#20007) -literals("array","array",#20243) -isAbstractMember(#20241) -#20245=* -typeexprs(#20245,6,#20241,2,"T[]") -#20246=@"loc,{#10000},22,33,22,35" -locations_default(#20246,#10000,22,33,22,35) -hasLocation(#20245,#20246) -enclosingStmt(#20245,#20230) -exprContainers(#20245,#20007) -#20247=* -typeexprs(#20247,0,#20245,0,"T") -#20248=@"loc,{#10000},22,33,22,33" -locations_default(#20248,#10000,22,33,22,33) -hasLocation(#20247,#20248) -enclosingStmt(#20247,#20230) -exprContainers(#20247,#20007) -literals("T","T",#20247) -typebind(#20247,#20235) -#20249=* -stmts(#20249,35,#20007,11,"type Bo ... lue;") -#20250=@"loc,{#10000},23,3,23,74" -locations_default(#20250,#10000,23,3,23,74) -hasLocation(#20249,#20250) -stmtContainers(#20249,#20007) -#20251=* -typeexprs(#20251,1,#20249,0,"Boxed") -#20252=@"loc,{#10000},23,8,23,12" -locations_default(#20252,#10000,23,8,23,12) -hasLocation(#20251,#20252) -enclosingStmt(#20251,#20249) -exprContainers(#20251,#20007) -literals("Boxed","Boxed",#20251) -typedecl(#20251,#20025) -#20253=* -scopes(#20253,12) -scopenodes(#20249,#20253) -scopenesting(#20253,#20011) -#20254=@"local_type_name;{T};{#20253}" -local_type_names(#20254,"T",#20253) -#20255=* -typeexprs(#20255,22,#20249,2,"T") -#20256=@"loc,{#10000},23,14,23,14" -locations_default(#20256,#10000,23,14,23,14) -hasLocation(#20255,#20256) -enclosingStmt(#20255,#20249) -exprContainers(#20255,#20007) -#20257=* -typeexprs(#20257,1,#20255,0,"T") -hasLocation(#20257,#20256) -enclosingStmt(#20257,#20249) -exprContainers(#20257,#20007) -literals("T","T",#20257) -typedecl(#20257,#20254) +lines(#20238,#20001," type T2 = Unpacked<() => string>; // string"," +") +#20239=@"loc,{#10000},81,1,81,46" +locations_default(#20239,#10000,81,1,81,46) +hasLocation(#20238,#20239) +indentation(#10000,81," ",2) +#20240=* +lines(#20240,#20001," type T3 = Unpacked>; // string"," +") +#20241=@"loc,{#10000},82,1,82,49" +locations_default(#20241,#10000,82,1,82,49) +hasLocation(#20240,#20241) +indentation(#10000,82," ",2) +#20242=* +lines(#20242,#20001," type T4 = Unpacked[]>; // Promise"," +") +#20243=@"loc,{#10000},83,1,83,60" +locations_default(#20243,#10000,83,1,83,60) +hasLocation(#20242,#20243) +indentation(#10000,83," ",2) +#20244=* +lines(#20244,#20001," type T5 = Unpacked[]>>; // string"," +") +#20245=@"loc,{#10000},84,1,84,61" +locations_default(#20245,#10000,84,1,84,61) +hasLocation(#20244,#20245) +indentation(#10000,84," ",2) +#20246=* +lines(#20246,#20001," "," +") +#20247=@"loc,{#10000},85,1,85,2" +locations_default(#20247,#10000,85,1,85,2) +hasLocation(#20246,#20247) +#20248=* +lines(#20248,#20001," type Foo = T extends { a: infer U, b: infer U } ? U : never;"," +") +#20249=@"loc,{#10000},86,1,86,65" +locations_default(#20249,#10000,86,1,86,65) +hasLocation(#20248,#20249) +indentation(#10000,86," ",2) +#20250=* +lines(#20250,#20001," type T10 = Foo<{ a: string, b: string }>; // string"," +") +#20251=@"loc,{#10000},87,1,87,54" +locations_default(#20251,#10000,87,1,87,54) +hasLocation(#20250,#20251) +indentation(#10000,87," ",2) +#20252=* +lines(#20252,#20001," type T11 = Foo<{ a: string, b: number }>; // string | number"," +") +#20253=@"loc,{#10000},88,1,88,63" +locations_default(#20253,#10000,88,1,88,63) +hasLocation(#20252,#20253) +indentation(#10000,88," ",2) +#20254=* +lines(#20254,#20001," "," +") +#20255=@"loc,{#10000},89,1,89,2" +locations_default(#20255,#10000,89,1,89,2) +hasLocation(#20254,#20255) +#20256=* +lines(#20256,#20001," type Bar = T extends { a: (x: infer U) => void, b: (x: infer U) => void } ? U : never;"," +") +#20257=@"loc,{#10000},90,1,90,91" +locations_default(#20257,#10000,90,1,90,91) +hasLocation(#20256,#20257) +indentation(#10000,90," ",2) #20258=* -typeexprs(#20258,28,#20249,1,"T exten ... alue") -#20259=@"loc,{#10000},23,19,23,73" -locations_default(#20259,#10000,23,19,23,73) +lines(#20258,#20001," type T20 = Bar<{ a: (x: string) => void, b: (x: string) => void }>; // string"," +") +#20259=@"loc,{#10000},91,1,91,80" +locations_default(#20259,#10000,91,1,91,80) hasLocation(#20258,#20259) -enclosingStmt(#20258,#20249) -exprContainers(#20258,#20007) +indentation(#10000,91," ",2) #20260=* -typeexprs(#20260,0,#20258,0,"T") -#20261=@"loc,{#10000},23,19,23,19" -locations_default(#20261,#10000,23,19,23,19) +lines(#20260,#20001," type T21 = Bar<{ a: (x: string) => void, b: (x: number) => void }>; // string & number"," +") +#20261=@"loc,{#10000},92,1,92,89" +locations_default(#20261,#10000,92,1,92,89) hasLocation(#20260,#20261) -enclosingStmt(#20260,#20249) -exprContainers(#20260,#20007) -literals("T","T",#20260) -typebind(#20260,#20254) +indentation(#10000,92," ",2) #20262=* -typeexprs(#20262,6,#20258,1,"any[]") -#20263=@"loc,{#10000},23,29,23,33" -locations_default(#20263,#10000,23,29,23,33) +lines(#20262,#20001," "," +") +#20263=@"loc,{#10000},93,1,93,2" +locations_default(#20263,#10000,93,1,93,2) hasLocation(#20262,#20263) -enclosingStmt(#20262,#20249) -exprContainers(#20262,#20007) #20264=* -typeexprs(#20264,2,#20262,0,"any") -#20265=@"loc,{#10000},23,29,23,31" -locations_default(#20265,#10000,23,29,23,31) +lines(#20264,#20001," declare function foo(x: string): number;"," +") +#20265=@"loc,{#10000},94,1,94,42" +locations_default(#20265,#10000,94,1,94,42) hasLocation(#20264,#20265) -enclosingStmt(#20264,#20249) -exprContainers(#20264,#20007) -literals("any","any",#20264) +indentation(#10000,94," ",2) #20266=* -typeexprs(#20266,14,#20258,2,"BoxedAr ... umber]>") -#20267=@"loc,{#10000},23,37,23,57" -locations_default(#20267,#10000,23,37,23,57) +lines(#20266,#20001," declare function foo(x: number): string;"," +") +#20267=@"loc,{#10000},95,1,95,42" +locations_default(#20267,#10000,95,1,95,42) hasLocation(#20266,#20267) -enclosingStmt(#20266,#20249) -exprContainers(#20266,#20007) +indentation(#10000,95," ",2) #20268=* -typeexprs(#20268,0,#20266,-1,"BoxedArray") -#20269=@"loc,{#10000},23,37,23,46" -locations_default(#20269,#10000,23,37,23,46) +lines(#20268,#20001," declare function foo(x: string | number): string | number;"," +") +#20269=@"loc,{#10000},96,1,96,60" +locations_default(#20269,#10000,96,1,96,60) hasLocation(#20268,#20269) -enclosingStmt(#20268,#20249) -exprContainers(#20268,#20007) -literals("BoxedArray","BoxedArray",#20268) -typebind(#20268,#20024) +indentation(#10000,96," ",2) #20270=* -typeexprs(#20270,8,#20266,0,"T[number]") -#20271=@"loc,{#10000},23,48,23,56" -locations_default(#20271,#10000,23,48,23,56) +lines(#20270,#20001," type T30 = ReturnType; // string | number"," +") +#20271=@"loc,{#10000},97,1,97,56" +locations_default(#20271,#10000,97,1,97,56) hasLocation(#20270,#20271) -enclosingStmt(#20270,#20249) -exprContainers(#20270,#20007) +indentation(#10000,97," ",2) #20272=* -typeexprs(#20272,0,#20270,0,"T") -#20273=@"loc,{#10000},23,48,23,48" -locations_default(#20273,#10000,23,48,23,48) +lines(#20272,#20001," "," +") +#20273=@"loc,{#10000},98,1,98,2" +locations_default(#20273,#10000,98,1,98,2) hasLocation(#20272,#20273) -enclosingStmt(#20272,#20249) -exprContainers(#20272,#20007) -literals("T","T",#20272) -typebind(#20272,#20254) #20274=* -typeexprs(#20274,2,#20270,1,"number") -#20275=@"loc,{#10000},23,50,23,55" -locations_default(#20275,#10000,23,50,23,55) +lines(#20274,#20001," type AnyFunction = (...args: any[]) => any;"," +") +#20275=@"loc,{#10000},99,1,99,45" +locations_default(#20275,#10000,99,1,99,45) hasLocation(#20274,#20275) -enclosingStmt(#20274,#20249) -exprContainers(#20274,#20007) -literals("number","number",#20274) +indentation(#10000,99," ",2) #20276=* -typeexprs(#20276,14,#20258,3,"BoxedValue") -#20277=@"loc,{#10000},23,61,23,73" -locations_default(#20277,#10000,23,61,23,73) +lines(#20276,#20001," type ReturnType = T extends (...args: any[]) => infer R ? R : any;"," +") +#20277=@"loc,{#10000},100,1,100,91" +locations_default(#20277,#10000,100,1,100,91) hasLocation(#20276,#20277) -enclosingStmt(#20276,#20249) -exprContainers(#20276,#20007) +indentation(#10000,100," ",2) #20278=* -typeexprs(#20278,0,#20276,-1,"BoxedValue") -#20279=@"loc,{#10000},23,61,23,70" -locations_default(#20279,#10000,23,61,23,70) +lines(#20278,#20001,"}"," +") +#20279=@"loc,{#10000},101,1,101,1" +locations_default(#20279,#10000,101,1,101,1) hasLocation(#20278,#20279) -enclosingStmt(#20278,#20249) -exprContainers(#20278,#20007) -literals("BoxedValue","BoxedValue",#20278) -typebind(#20278,#20023) #20280=* -typeexprs(#20280,0,#20276,0,"T") -#20281=@"loc,{#10000},23,72,23,72" -locations_default(#20281,#10000,23,72,23,72) +lines(#20280,#20001,""," +") +#20281=@"loc,{#10000},102,1,102,0" +locations_default(#20281,#10000,102,1,102,0) hasLocation(#20280,#20281) -enclosingStmt(#20280,#20249) -exprContainers(#20280,#20007) -literals("T","T",#20280) -typebind(#20280,#20254) +numlines(#20001,102,79,38) #20282=* -stmts(#20282,35,#20007,12,"type T2 ... tring>;") -#20283=@"loc,{#10000},25,3,25,27" -locations_default(#20283,#10000,25,3,25,27) +tokeninfo(#20282,7,#20001,0,"namespace") +#20283=@"loc,{#10000},1,1,1,9" +locations_default(#20283,#10000,1,1,1,9) hasLocation(#20282,#20283) -stmtContainers(#20282,#20007) #20284=* -typeexprs(#20284,1,#20282,0,"T20") -#20285=@"loc,{#10000},25,8,25,10" -locations_default(#20285,#10000,25,8,25,10) +tokeninfo(#20284,6,#20001,1,"ConditionalTypes1") +#20285=@"loc,{#10000},1,11,1,27" +locations_default(#20285,#10000,1,11,1,27) hasLocation(#20284,#20285) -enclosingStmt(#20284,#20282) -exprContainers(#20284,#20007) -literals("T20","T20",#20284) -typedecl(#20284,#20026) #20286=* -typeexprs(#20286,14,#20282,1,"Boxed") -#20287=@"loc,{#10000},25,14,25,26" -locations_default(#20287,#10000,25,14,25,26) +tokeninfo(#20286,8,#20001,2,"{") +#20287=@"loc,{#10000},1,29,1,29" +locations_default(#20287,#10000,1,29,1,29) hasLocation(#20286,#20287) -enclosingStmt(#20286,#20282) -exprContainers(#20286,#20007) #20288=* -typeexprs(#20288,0,#20286,-1,"Boxed") -#20289=@"loc,{#10000},25,14,25,18" -locations_default(#20289,#10000,25,14,25,18) +tokeninfo(#20288,7,#20001,3,"type") +#20289=@"loc,{#10000},2,3,2,6" +locations_default(#20289,#10000,2,3,2,6) hasLocation(#20288,#20289) -enclosingStmt(#20288,#20282) -exprContainers(#20288,#20007) -literals("Boxed","Boxed",#20288) -typebind(#20288,#20025) #20290=* -typeexprs(#20290,2,#20286,0,"string") -#20291=@"loc,{#10000},25,20,25,25" -locations_default(#20291,#10000,25,20,25,25) +tokeninfo(#20290,6,#20001,4,"TypeName") +#20291=@"loc,{#10000},2,8,2,15" +locations_default(#20291,#10000,2,8,2,15) hasLocation(#20290,#20291) -enclosingStmt(#20290,#20282) -exprContainers(#20290,#20007) -literals("string","string",#20290) #20292=* -stmts(#20292,35,#20007,13,"type T2 ... ber[]>;") -#20293=@"loc,{#10000},26,3,26,29" -locations_default(#20293,#10000,26,3,26,29) +tokeninfo(#20292,8,#20001,5,"<") +#20293=@"loc,{#10000},2,16,2,16" +locations_default(#20293,#10000,2,16,2,16) hasLocation(#20292,#20293) -stmtContainers(#20292,#20007) #20294=* -typeexprs(#20294,1,#20292,0,"T21") -#20295=@"loc,{#10000},26,8,26,10" -locations_default(#20295,#10000,26,8,26,10) +tokeninfo(#20294,6,#20001,6,"T") +#20295=@"loc,{#10000},2,17,2,17" +locations_default(#20295,#10000,2,17,2,17) hasLocation(#20294,#20295) -enclosingStmt(#20294,#20292) -exprContainers(#20294,#20007) -literals("T21","T21",#20294) -typedecl(#20294,#20027) #20296=* -typeexprs(#20296,14,#20292,1,"Boxed") -#20297=@"loc,{#10000},26,14,26,28" -locations_default(#20297,#10000,26,14,26,28) +tokeninfo(#20296,8,#20001,7,">") +#20297=@"loc,{#10000},2,18,2,18" +locations_default(#20297,#10000,2,18,2,18) hasLocation(#20296,#20297) -enclosingStmt(#20296,#20292) -exprContainers(#20296,#20007) #20298=* -typeexprs(#20298,0,#20296,-1,"Boxed") -#20299=@"loc,{#10000},26,14,26,18" -locations_default(#20299,#10000,26,14,26,18) +tokeninfo(#20298,8,#20001,8,"=") +#20299=@"loc,{#10000},2,20,2,20" +locations_default(#20299,#10000,2,20,2,20) hasLocation(#20298,#20299) -enclosingStmt(#20298,#20292) -exprContainers(#20298,#20007) -literals("Boxed","Boxed",#20298) -typebind(#20298,#20025) #20300=* -typeexprs(#20300,6,#20296,0,"number[]") -#20301=@"loc,{#10000},26,20,26,27" -locations_default(#20301,#10000,26,20,26,27) +tokeninfo(#20300,6,#20001,9,"T") +#20301=@"loc,{#10000},3,7,3,7" +locations_default(#20301,#10000,3,7,3,7) hasLocation(#20300,#20301) -enclosingStmt(#20300,#20292) -exprContainers(#20300,#20007) #20302=* -typeexprs(#20302,2,#20300,0,"number") -#20303=@"loc,{#10000},26,20,26,25" -locations_default(#20303,#10000,26,20,26,25) +tokeninfo(#20302,7,#20001,10,"extends") +#20303=@"loc,{#10000},3,9,3,15" +locations_default(#20303,#10000,3,9,3,15) hasLocation(#20302,#20303) -enclosingStmt(#20302,#20292) -exprContainers(#20302,#20007) -literals("number","number",#20302) #20304=* -stmts(#20304,35,#20007,14,"type T2 ... ber[]>;") -#20305=@"loc,{#10000},27,3,27,38" -locations_default(#20305,#10000,27,3,27,38) +tokeninfo(#20304,7,#20001,11,"string") +#20305=@"loc,{#10000},3,17,3,22" +locations_default(#20305,#10000,3,17,3,22) hasLocation(#20304,#20305) -stmtContainers(#20304,#20007) #20306=* -typeexprs(#20306,1,#20304,0,"T22") -#20307=@"loc,{#10000},27,8,27,10" -locations_default(#20307,#10000,27,8,27,10) +tokeninfo(#20306,8,#20001,12,"?") +#20307=@"loc,{#10000},3,24,3,24" +locations_default(#20307,#10000,3,24,3,24) hasLocation(#20306,#20307) -enclosingStmt(#20306,#20304) -exprContainers(#20306,#20007) -literals("T22","T22",#20306) -typedecl(#20306,#20028) #20308=* -typeexprs(#20308,14,#20304,1,"Boxed") -#20309=@"loc,{#10000},27,14,27,37" -locations_default(#20309,#10000,27,14,27,37) +tokeninfo(#20308,4,#20001,13,"""string""") +#20309=@"loc,{#10000},3,26,3,33" +locations_default(#20309,#10000,3,26,3,33) hasLocation(#20308,#20309) -enclosingStmt(#20308,#20304) -exprContainers(#20308,#20007) #20310=* -typeexprs(#20310,0,#20308,-1,"Boxed") -#20311=@"loc,{#10000},27,14,27,18" -locations_default(#20311,#10000,27,14,27,18) +tokeninfo(#20310,8,#20001,14,":") +#20311=@"loc,{#10000},3,35,3,35" +locations_default(#20311,#10000,3,35,3,35) hasLocation(#20310,#20311) -enclosingStmt(#20310,#20304) -exprContainers(#20310,#20007) -literals("Boxed","Boxed",#20310) -typebind(#20310,#20025) #20312=* -typeexprs(#20312,7,#20308,0,"string | number[]") -#20313=@"loc,{#10000},27,20,27,36" -locations_default(#20313,#10000,27,20,27,36) +tokeninfo(#20312,6,#20001,15,"T") +#20313=@"loc,{#10000},4,7,4,7" +locations_default(#20313,#10000,4,7,4,7) hasLocation(#20312,#20313) -enclosingStmt(#20312,#20304) -exprContainers(#20312,#20007) #20314=* -typeexprs(#20314,2,#20312,0,"string") -#20315=@"loc,{#10000},27,20,27,25" -locations_default(#20315,#10000,27,20,27,25) +tokeninfo(#20314,7,#20001,16,"extends") +#20315=@"loc,{#10000},4,9,4,15" +locations_default(#20315,#10000,4,9,4,15) hasLocation(#20314,#20315) -enclosingStmt(#20314,#20304) -exprContainers(#20314,#20007) -literals("string","string",#20314) #20316=* -typeexprs(#20316,6,#20312,1,"number[]") -#20317=@"loc,{#10000},27,29,27,36" -locations_default(#20317,#10000,27,29,27,36) +tokeninfo(#20316,7,#20001,17,"number") +#20317=@"loc,{#10000},4,17,4,22" +locations_default(#20317,#10000,4,17,4,22) hasLocation(#20316,#20317) -enclosingStmt(#20316,#20304) -exprContainers(#20316,#20007) #20318=* -typeexprs(#20318,2,#20316,0,"number") -#20319=@"loc,{#10000},27,29,27,34" -locations_default(#20319,#10000,27,29,27,34) +tokeninfo(#20318,8,#20001,18,"?") +#20319=@"loc,{#10000},4,24,4,24" +locations_default(#20319,#10000,4,24,4,24) hasLocation(#20318,#20319) -enclosingStmt(#20318,#20304) -exprContainers(#20318,#20007) -literals("number","number",#20318) #20320=* -stmts(#20320,35,#20007,15,"type Di ... er : T;") -#20321=@"loc,{#10000},29,3,29,44" -locations_default(#20321,#10000,29,3,29,44) +tokeninfo(#20320,4,#20001,19,"""number""") +#20321=@"loc,{#10000},4,26,4,33" +locations_default(#20321,#10000,4,26,4,33) hasLocation(#20320,#20321) -stmtContainers(#20320,#20007) #20322=* -typeexprs(#20322,1,#20320,0,"Diff") -#20323=@"loc,{#10000},29,8,29,11" -locations_default(#20323,#10000,29,8,29,11) +tokeninfo(#20322,8,#20001,20,":") +#20323=@"loc,{#10000},4,35,4,35" +locations_default(#20323,#10000,4,35,4,35) hasLocation(#20322,#20323) -enclosingStmt(#20322,#20320) -exprContainers(#20322,#20007) -literals("Diff","Diff",#20322) -typedecl(#20322,#20029) #20324=* -scopes(#20324,12) -scopenodes(#20320,#20324) -scopenesting(#20324,#20011) -#20325=@"local_type_name;{T};{#20324}" -local_type_names(#20325,"T",#20324) -#20326=@"local_type_name;{U};{#20324}" -local_type_names(#20326,"U",#20324) -#20327=* -typeexprs(#20327,22,#20320,2,"T") -#20328=@"loc,{#10000},29,13,29,13" -locations_default(#20328,#10000,29,13,29,13) -hasLocation(#20327,#20328) -enclosingStmt(#20327,#20320) -exprContainers(#20327,#20007) -#20329=* -typeexprs(#20329,1,#20327,0,"T") -hasLocation(#20329,#20328) -enclosingStmt(#20329,#20320) -exprContainers(#20329,#20007) -literals("T","T",#20329) -typedecl(#20329,#20325) +tokeninfo(#20324,6,#20001,21,"T") +#20325=@"loc,{#10000},5,7,5,7" +locations_default(#20325,#10000,5,7,5,7) +hasLocation(#20324,#20325) +#20326=* +tokeninfo(#20326,7,#20001,22,"extends") +#20327=@"loc,{#10000},5,9,5,15" +locations_default(#20327,#10000,5,9,5,15) +hasLocation(#20326,#20327) +#20328=* +tokeninfo(#20328,7,#20001,23,"boolean") +#20329=@"loc,{#10000},5,17,5,23" +locations_default(#20329,#10000,5,17,5,23) +hasLocation(#20328,#20329) #20330=* -typeexprs(#20330,22,#20320,3,"U") -#20331=@"loc,{#10000},29,16,29,16" -locations_default(#20331,#10000,29,16,29,16) +tokeninfo(#20330,8,#20001,24,"?") +#20331=@"loc,{#10000},5,25,5,25" +locations_default(#20331,#10000,5,25,5,25) hasLocation(#20330,#20331) -enclosingStmt(#20330,#20320) -exprContainers(#20330,#20007) #20332=* -typeexprs(#20332,1,#20330,0,"U") -hasLocation(#20332,#20331) -enclosingStmt(#20332,#20320) -exprContainers(#20332,#20007) -literals("U","U",#20332) -typedecl(#20332,#20326) -#20333=* -typeexprs(#20333,28,#20320,1,"T exten ... ver : T") -#20334=@"loc,{#10000},29,21,29,43" -locations_default(#20334,#10000,29,21,29,43) -hasLocation(#20333,#20334) -enclosingStmt(#20333,#20320) -exprContainers(#20333,#20007) -#20335=* -typeexprs(#20335,0,#20333,0,"T") -#20336=@"loc,{#10000},29,21,29,21" -locations_default(#20336,#10000,29,21,29,21) -hasLocation(#20335,#20336) -enclosingStmt(#20335,#20320) -exprContainers(#20335,#20007) -literals("T","T",#20335) -typebind(#20335,#20325) -#20337=* -typeexprs(#20337,0,#20333,1,"U") -#20338=@"loc,{#10000},29,31,29,31" -locations_default(#20338,#10000,29,31,29,31) -hasLocation(#20337,#20338) -enclosingStmt(#20337,#20320) -exprContainers(#20337,#20007) -literals("U","U",#20337) -typebind(#20337,#20326) -#20339=* -typeexprs(#20339,2,#20333,2,"never") -#20340=@"loc,{#10000},29,35,29,39" -locations_default(#20340,#10000,29,35,29,39) -hasLocation(#20339,#20340) -enclosingStmt(#20339,#20320) -exprContainers(#20339,#20007) -literals("never","never",#20339) -#20341=* -typeexprs(#20341,0,#20333,3,"T") -#20342=@"loc,{#10000},29,43,29,43" -locations_default(#20342,#10000,29,43,29,43) -hasLocation(#20341,#20342) -enclosingStmt(#20341,#20320) -exprContainers(#20341,#20007) -literals("T","T",#20341) -typebind(#20341,#20325) -#20343=* -stmts(#20343,35,#20007,16,"type Fi ... never;") -#20344=@"loc,{#10000},30,3,30,46" -locations_default(#20344,#10000,30,3,30,46) -hasLocation(#20343,#20344) -stmtContainers(#20343,#20007) -#20345=* -typeexprs(#20345,1,#20343,0,"Filter") -#20346=@"loc,{#10000},30,8,30,13" -locations_default(#20346,#10000,30,8,30,13) -hasLocation(#20345,#20346) -enclosingStmt(#20345,#20343) -exprContainers(#20345,#20007) -literals("Filter","Filter",#20345) -typedecl(#20345,#20030) -#20347=* -scopes(#20347,12) -scopenodes(#20343,#20347) -scopenesting(#20347,#20011) -#20348=@"local_type_name;{T};{#20347}" -local_type_names(#20348,"T",#20347) -#20349=@"local_type_name;{U};{#20347}" -local_type_names(#20349,"U",#20347) +tokeninfo(#20332,4,#20001,25,"""boolean""") +#20333=@"loc,{#10000},5,27,5,35" +locations_default(#20333,#10000,5,27,5,35) +hasLocation(#20332,#20333) +#20334=* +tokeninfo(#20334,8,#20001,26,":") +#20335=@"loc,{#10000},5,37,5,37" +locations_default(#20335,#10000,5,37,5,37) +hasLocation(#20334,#20335) +#20336=* +tokeninfo(#20336,6,#20001,27,"T") +#20337=@"loc,{#10000},6,7,6,7" +locations_default(#20337,#10000,6,7,6,7) +hasLocation(#20336,#20337) +#20338=* +tokeninfo(#20338,7,#20001,28,"extends") +#20339=@"loc,{#10000},6,9,6,15" +locations_default(#20339,#10000,6,9,6,15) +hasLocation(#20338,#20339) +#20340=* +tokeninfo(#20340,7,#20001,29,"undefined") +#20341=@"loc,{#10000},6,17,6,25" +locations_default(#20341,#10000,6,17,6,25) +hasLocation(#20340,#20341) +#20342=* +tokeninfo(#20342,8,#20001,30,"?") +#20343=@"loc,{#10000},6,27,6,27" +locations_default(#20343,#10000,6,27,6,27) +hasLocation(#20342,#20343) +#20344=* +tokeninfo(#20344,4,#20001,31,"""undefined""") +#20345=@"loc,{#10000},6,29,6,39" +locations_default(#20345,#10000,6,29,6,39) +hasLocation(#20344,#20345) +#20346=* +tokeninfo(#20346,8,#20001,32,":") +#20347=@"loc,{#10000},6,41,6,41" +locations_default(#20347,#10000,6,41,6,41) +hasLocation(#20346,#20347) +#20348=* +tokeninfo(#20348,6,#20001,33,"T") +#20349=@"loc,{#10000},7,7,7,7" +locations_default(#20349,#10000,7,7,7,7) +hasLocation(#20348,#20349) #20350=* -typeexprs(#20350,22,#20343,2,"T") -#20351=@"loc,{#10000},30,15,30,15" -locations_default(#20351,#10000,30,15,30,15) +tokeninfo(#20350,7,#20001,34,"extends") +#20351=@"loc,{#10000},7,9,7,15" +locations_default(#20351,#10000,7,9,7,15) hasLocation(#20350,#20351) -enclosingStmt(#20350,#20343) -exprContainers(#20350,#20007) #20352=* -typeexprs(#20352,1,#20350,0,"T") -hasLocation(#20352,#20351) -enclosingStmt(#20352,#20343) -exprContainers(#20352,#20007) -literals("T","T",#20352) -typedecl(#20352,#20348) -#20353=* -typeexprs(#20353,22,#20343,3,"U") -#20354=@"loc,{#10000},30,18,30,18" -locations_default(#20354,#10000,30,18,30,18) -hasLocation(#20353,#20354) -enclosingStmt(#20353,#20343) -exprContainers(#20353,#20007) -#20355=* -typeexprs(#20355,1,#20353,0,"U") -hasLocation(#20355,#20354) -enclosingStmt(#20355,#20343) -exprContainers(#20355,#20007) -literals("U","U",#20355) -typedecl(#20355,#20349) +tokeninfo(#20352,6,#20001,35,"Function") +#20353=@"loc,{#10000},7,17,7,24" +locations_default(#20353,#10000,7,17,7,24) +hasLocation(#20352,#20353) +#20354=* +tokeninfo(#20354,8,#20001,36,"?") +#20355=@"loc,{#10000},7,26,7,26" +locations_default(#20355,#10000,7,26,7,26) +hasLocation(#20354,#20355) #20356=* -typeexprs(#20356,28,#20343,1,"T exten ... : never") -#20357=@"loc,{#10000},30,23,30,45" -locations_default(#20357,#10000,30,23,30,45) +tokeninfo(#20356,4,#20001,37,"""function""") +#20357=@"loc,{#10000},7,28,7,37" +locations_default(#20357,#10000,7,28,7,37) hasLocation(#20356,#20357) -enclosingStmt(#20356,#20343) -exprContainers(#20356,#20007) #20358=* -typeexprs(#20358,0,#20356,0,"T") -#20359=@"loc,{#10000},30,23,30,23" -locations_default(#20359,#10000,30,23,30,23) +tokeninfo(#20358,8,#20001,38,":") +#20359=@"loc,{#10000},7,39,7,39" +locations_default(#20359,#10000,7,39,7,39) hasLocation(#20358,#20359) -enclosingStmt(#20358,#20343) -exprContainers(#20358,#20007) -literals("T","T",#20358) -typebind(#20358,#20348) #20360=* -typeexprs(#20360,0,#20356,1,"U") -#20361=@"loc,{#10000},30,33,30,33" -locations_default(#20361,#10000,30,33,30,33) +tokeninfo(#20360,4,#20001,39,"""object""") +#20361=@"loc,{#10000},8,7,8,14" +locations_default(#20361,#10000,8,7,8,14) hasLocation(#20360,#20361) -enclosingStmt(#20360,#20343) -exprContainers(#20360,#20007) -literals("U","U",#20360) -typebind(#20360,#20349) #20362=* -typeexprs(#20362,0,#20356,2,"T") -#20363=@"loc,{#10000},30,37,30,37" -locations_default(#20363,#10000,30,37,30,37) +tokeninfo(#20362,8,#20001,40,";") +#20363=@"loc,{#10000},8,15,8,15" +locations_default(#20363,#10000,8,15,8,15) hasLocation(#20362,#20363) -enclosingStmt(#20362,#20343) -exprContainers(#20362,#20007) -literals("T","T",#20362) -typebind(#20362,#20348) #20364=* -typeexprs(#20364,2,#20356,3,"never") -#20365=@"loc,{#10000},30,41,30,45" -locations_default(#20365,#10000,30,41,30,45) +tokeninfo(#20364,7,#20001,41,"type") +#20365=@"loc,{#10000},10,3,10,6" +locations_default(#20365,#10000,10,3,10,6) hasLocation(#20364,#20365) -enclosingStmt(#20364,#20343) -exprContainers(#20364,#20007) -literals("never","never",#20364) #20366=* -stmts(#20366,35,#20007,17,"type T3 ... | ""f"">;") -#20367=@"loc,{#10000},32,3,32,58" -locations_default(#20367,#10000,32,3,32,58) +tokeninfo(#20366,6,#20001,42,"T0") +#20367=@"loc,{#10000},10,8,10,9" +locations_default(#20367,#10000,10,8,10,9) hasLocation(#20366,#20367) -stmtContainers(#20366,#20007) #20368=* -typeexprs(#20368,1,#20366,0,"T30") -#20369=@"loc,{#10000},32,8,32,10" -locations_default(#20369,#10000,32,8,32,10) +tokeninfo(#20368,8,#20001,43,"=") +#20369=@"loc,{#10000},10,11,10,11" +locations_default(#20369,#10000,10,11,10,11) hasLocation(#20368,#20369) -enclosingStmt(#20368,#20366) -exprContainers(#20368,#20007) -literals("T30","T30",#20368) -typedecl(#20368,#20031) #20370=* -typeexprs(#20370,14,#20366,1,"Diff<""a ... | ""f"">") -#20371=@"loc,{#10000},32,14,32,57" -locations_default(#20371,#10000,32,14,32,57) +tokeninfo(#20370,6,#20001,44,"TypeName") +#20371=@"loc,{#10000},10,13,10,20" +locations_default(#20371,#10000,10,13,10,20) hasLocation(#20370,#20371) -enclosingStmt(#20370,#20366) -exprContainers(#20370,#20007) #20372=* -typeexprs(#20372,0,#20370,-1,"Diff") -#20373=@"loc,{#10000},32,14,32,17" -locations_default(#20373,#10000,32,14,32,17) +tokeninfo(#20372,8,#20001,45,"<") +#20373=@"loc,{#10000},10,21,10,21" +locations_default(#20373,#10000,10,21,10,21) hasLocation(#20372,#20373) -enclosingStmt(#20372,#20366) -exprContainers(#20372,#20007) -literals("Diff","Diff",#20372) -typebind(#20372,#20029) #20374=* -typeexprs(#20374,7,#20370,0,"""a"" | "" ... "" | ""d""") -#20375=@"loc,{#10000},32,19,32,39" -locations_default(#20375,#10000,32,19,32,39) +tokeninfo(#20374,7,#20001,46,"string") +#20375=@"loc,{#10000},10,22,10,27" +locations_default(#20375,#10000,10,22,10,27) hasLocation(#20374,#20375) -enclosingStmt(#20374,#20366) -exprContainers(#20374,#20007) #20376=* -typeexprs(#20376,3,#20374,0,"""a""") -#20377=@"loc,{#10000},32,19,32,21" -locations_default(#20377,#10000,32,19,32,21) +tokeninfo(#20376,8,#20001,47,">") +#20377=@"loc,{#10000},10,28,10,28" +locations_default(#20377,#10000,10,28,10,28) hasLocation(#20376,#20377) -enclosingStmt(#20376,#20366) -exprContainers(#20376,#20007) -literals("a","""a""",#20376) #20378=* -typeexprs(#20378,3,#20374,1,"""b""") -#20379=@"loc,{#10000},32,25,32,27" -locations_default(#20379,#10000,32,25,32,27) +tokeninfo(#20378,8,#20001,48,";") +#20379=@"loc,{#10000},10,29,10,29" +locations_default(#20379,#10000,10,29,10,29) hasLocation(#20378,#20379) -enclosingStmt(#20378,#20366) -exprContainers(#20378,#20007) -literals("b","""b""",#20378) #20380=* -typeexprs(#20380,3,#20374,2,"""c""") -#20381=@"loc,{#10000},32,31,32,33" -locations_default(#20381,#10000,32,31,32,33) +tokeninfo(#20380,7,#20001,49,"type") +#20381=@"loc,{#10000},11,3,11,6" +locations_default(#20381,#10000,11,3,11,6) hasLocation(#20380,#20381) -enclosingStmt(#20380,#20366) -exprContainers(#20380,#20007) -literals("c","""c""",#20380) +next_token(#20002,#20380) #20382=* -typeexprs(#20382,3,#20374,3,"""d""") -#20383=@"loc,{#10000},32,37,32,39" -locations_default(#20383,#10000,32,37,32,39) +tokeninfo(#20382,6,#20001,50,"T1") +#20383=@"loc,{#10000},11,8,11,9" +locations_default(#20383,#10000,11,8,11,9) hasLocation(#20382,#20383) -enclosingStmt(#20382,#20366) -exprContainers(#20382,#20007) -literals("d","""d""",#20382) #20384=* -typeexprs(#20384,7,#20370,1,"""a"" | ""c"" | ""f""") -#20385=@"loc,{#10000},32,42,32,56" -locations_default(#20385,#10000,32,42,32,56) +tokeninfo(#20384,8,#20001,51,"=") +#20385=@"loc,{#10000},11,11,11,11" +locations_default(#20385,#10000,11,11,11,11) hasLocation(#20384,#20385) -enclosingStmt(#20384,#20366) -exprContainers(#20384,#20007) #20386=* -typeexprs(#20386,3,#20384,0,"""a""") -#20387=@"loc,{#10000},32,42,32,44" -locations_default(#20387,#10000,32,42,32,44) +tokeninfo(#20386,6,#20001,52,"TypeName") +#20387=@"loc,{#10000},11,13,11,20" +locations_default(#20387,#10000,11,13,11,20) hasLocation(#20386,#20387) -enclosingStmt(#20386,#20366) -exprContainers(#20386,#20007) -literals("a","""a""",#20386) #20388=* -typeexprs(#20388,3,#20384,1,"""c""") -#20389=@"loc,{#10000},32,48,32,50" -locations_default(#20389,#10000,32,48,32,50) +tokeninfo(#20388,8,#20001,53,"<") +#20389=@"loc,{#10000},11,21,11,21" +locations_default(#20389,#10000,11,21,11,21) hasLocation(#20388,#20389) -enclosingStmt(#20388,#20366) -exprContainers(#20388,#20007) -literals("c","""c""",#20388) #20390=* -typeexprs(#20390,3,#20384,2,"""f""") -#20391=@"loc,{#10000},32,54,32,56" -locations_default(#20391,#10000,32,54,32,56) +tokeninfo(#20390,4,#20001,54,"""a""") +#20391=@"loc,{#10000},11,22,11,24" +locations_default(#20391,#10000,11,22,11,24) hasLocation(#20390,#20391) -enclosingStmt(#20390,#20366) -exprContainers(#20390,#20007) -literals("f","""f""",#20390) #20392=* -stmts(#20392,35,#20007,18,"type T3 ... | ""f"">;") -#20393=@"loc,{#10000},33,3,33,60" -locations_default(#20393,#10000,33,3,33,60) +tokeninfo(#20392,8,#20001,55,">") +#20393=@"loc,{#10000},11,25,11,25" +locations_default(#20393,#10000,11,25,11,25) hasLocation(#20392,#20393) -stmtContainers(#20392,#20007) #20394=* -typeexprs(#20394,1,#20392,0,"T31") -#20395=@"loc,{#10000},33,8,33,10" -locations_default(#20395,#10000,33,8,33,10) +tokeninfo(#20394,8,#20001,56,";") +#20395=@"loc,{#10000},11,26,11,26" +locations_default(#20395,#10000,11,26,11,26) hasLocation(#20394,#20395) -enclosingStmt(#20394,#20392) -exprContainers(#20394,#20007) -literals("T31","T31",#20394) -typedecl(#20394,#20032) #20396=* -typeexprs(#20396,14,#20392,1,"Filter< ... | ""f"">") -#20397=@"loc,{#10000},33,14,33,59" -locations_default(#20397,#10000,33,14,33,59) +tokeninfo(#20396,7,#20001,57,"type") +#20397=@"loc,{#10000},12,3,12,6" +locations_default(#20397,#10000,12,3,12,6) hasLocation(#20396,#20397) -enclosingStmt(#20396,#20392) -exprContainers(#20396,#20007) +next_token(#20004,#20396) #20398=* -typeexprs(#20398,0,#20396,-1,"Filter") -#20399=@"loc,{#10000},33,14,33,19" -locations_default(#20399,#10000,33,14,33,19) +tokeninfo(#20398,6,#20001,58,"T2") +#20399=@"loc,{#10000},12,8,12,9" +locations_default(#20399,#10000,12,8,12,9) hasLocation(#20398,#20399) -enclosingStmt(#20398,#20392) -exprContainers(#20398,#20007) -literals("Filter","Filter",#20398) -typebind(#20398,#20030) #20400=* -typeexprs(#20400,7,#20396,0,"""a"" | "" ... "" | ""d""") -#20401=@"loc,{#10000},33,21,33,41" -locations_default(#20401,#10000,33,21,33,41) +tokeninfo(#20400,8,#20001,59,"=") +#20401=@"loc,{#10000},12,11,12,11" +locations_default(#20401,#10000,12,11,12,11) hasLocation(#20400,#20401) -enclosingStmt(#20400,#20392) -exprContainers(#20400,#20007) #20402=* -typeexprs(#20402,3,#20400,0,"""a""") -#20403=@"loc,{#10000},33,21,33,23" -locations_default(#20403,#10000,33,21,33,23) +tokeninfo(#20402,6,#20001,60,"TypeName") +#20403=@"loc,{#10000},12,13,12,20" +locations_default(#20403,#10000,12,13,12,20) hasLocation(#20402,#20403) -enclosingStmt(#20402,#20392) -exprContainers(#20402,#20007) -literals("a","""a""",#20402) #20404=* -typeexprs(#20404,3,#20400,1,"""b""") -#20405=@"loc,{#10000},33,27,33,29" -locations_default(#20405,#10000,33,27,33,29) +tokeninfo(#20404,8,#20001,61,"<") +#20405=@"loc,{#10000},12,21,12,21" +locations_default(#20405,#10000,12,21,12,21) hasLocation(#20404,#20405) -enclosingStmt(#20404,#20392) -exprContainers(#20404,#20007) -literals("b","""b""",#20404) #20406=* -typeexprs(#20406,3,#20400,2,"""c""") -#20407=@"loc,{#10000},33,33,33,35" -locations_default(#20407,#10000,33,33,33,35) +tokeninfo(#20406,2,#20001,62,"true") +#20407=@"loc,{#10000},12,22,12,25" +locations_default(#20407,#10000,12,22,12,25) hasLocation(#20406,#20407) -enclosingStmt(#20406,#20392) -exprContainers(#20406,#20007) -literals("c","""c""",#20406) #20408=* -typeexprs(#20408,3,#20400,3,"""d""") -#20409=@"loc,{#10000},33,39,33,41" -locations_default(#20409,#10000,33,39,33,41) +tokeninfo(#20408,8,#20001,63,">") +#20409=@"loc,{#10000},12,26,12,26" +locations_default(#20409,#10000,12,26,12,26) hasLocation(#20408,#20409) -enclosingStmt(#20408,#20392) -exprContainers(#20408,#20007) -literals("d","""d""",#20408) #20410=* -typeexprs(#20410,7,#20396,1,"""a"" | ""c"" | ""f""") -#20411=@"loc,{#10000},33,44,33,58" -locations_default(#20411,#10000,33,44,33,58) +tokeninfo(#20410,8,#20001,64,";") +#20411=@"loc,{#10000},12,27,12,27" +locations_default(#20411,#10000,12,27,12,27) hasLocation(#20410,#20411) -enclosingStmt(#20410,#20392) -exprContainers(#20410,#20007) #20412=* -typeexprs(#20412,3,#20410,0,"""a""") -#20413=@"loc,{#10000},33,44,33,46" -locations_default(#20413,#10000,33,44,33,46) +tokeninfo(#20412,7,#20001,65,"type") +#20413=@"loc,{#10000},13,3,13,6" +locations_default(#20413,#10000,13,3,13,6) hasLocation(#20412,#20413) -enclosingStmt(#20412,#20392) -exprContainers(#20412,#20007) -literals("a","""a""",#20412) +next_token(#20006,#20412) #20414=* -typeexprs(#20414,3,#20410,1,"""c""") -#20415=@"loc,{#10000},33,50,33,52" -locations_default(#20415,#10000,33,50,33,52) +tokeninfo(#20414,6,#20001,66,"T3") +#20415=@"loc,{#10000},13,8,13,9" +locations_default(#20415,#10000,13,8,13,9) hasLocation(#20414,#20415) -enclosingStmt(#20414,#20392) -exprContainers(#20414,#20007) -literals("c","""c""",#20414) #20416=* -typeexprs(#20416,3,#20410,2,"""f""") -#20417=@"loc,{#10000},33,56,33,58" -locations_default(#20417,#10000,33,56,33,58) +tokeninfo(#20416,8,#20001,67,"=") +#20417=@"loc,{#10000},13,11,13,11" +locations_default(#20417,#10000,13,11,13,11) hasLocation(#20416,#20417) -enclosingStmt(#20416,#20392) -exprContainers(#20416,#20007) -literals("f","""f""",#20416) #20418=* -stmts(#20418,35,#20007,19,"type T3 ... ction>;") -#20419=@"loc,{#10000},34,3,34,60" -locations_default(#20419,#10000,34,3,34,60) +tokeninfo(#20418,6,#20001,68,"TypeName") +#20419=@"loc,{#10000},13,13,13,20" +locations_default(#20419,#10000,13,13,13,20) hasLocation(#20418,#20419) -stmtContainers(#20418,#20007) #20420=* -typeexprs(#20420,1,#20418,0,"T32") -#20421=@"loc,{#10000},34,8,34,10" -locations_default(#20421,#10000,34,8,34,10) +tokeninfo(#20420,8,#20001,69,"<") +#20421=@"loc,{#10000},13,21,13,21" +locations_default(#20421,#10000,13,21,13,21) hasLocation(#20420,#20421) -enclosingStmt(#20420,#20418) -exprContainers(#20420,#20007) -literals("T32","T32",#20420) -typedecl(#20420,#20033) #20422=* -typeexprs(#20422,14,#20418,1,"Diff") -#20423=@"loc,{#10000},34,14,34,59" -locations_default(#20423,#10000,34,14,34,59) +tokeninfo(#20422,8,#20001,70,"(") +#20423=@"loc,{#10000},13,22,13,22" +locations_default(#20423,#10000,13,22,13,22) hasLocation(#20422,#20423) -enclosingStmt(#20422,#20418) -exprContainers(#20422,#20007) #20424=* -typeexprs(#20424,0,#20422,-1,"Diff") -#20425=@"loc,{#10000},34,14,34,17" -locations_default(#20425,#10000,34,14,34,17) +tokeninfo(#20424,8,#20001,71,")") +#20425=@"loc,{#10000},13,23,13,23" +locations_default(#20425,#10000,13,23,13,23) hasLocation(#20424,#20425) -enclosingStmt(#20424,#20418) -exprContainers(#20424,#20007) -literals("Diff","Diff",#20424) -typebind(#20424,#20029) #20426=* -typeexprs(#20426,7,#20422,0,"string ... > void)") -#20427=@"loc,{#10000},34,19,34,48" -locations_default(#20427,#10000,34,19,34,48) +tokeninfo(#20426,8,#20001,72,"=>") +#20427=@"loc,{#10000},13,25,13,26" +locations_default(#20427,#10000,13,25,13,26) hasLocation(#20426,#20427) -enclosingStmt(#20426,#20418) -exprContainers(#20426,#20007) #20428=* -typeexprs(#20428,2,#20426,0,"string") -#20429=@"loc,{#10000},34,19,34,24" -locations_default(#20429,#10000,34,19,34,24) +tokeninfo(#20428,7,#20001,73,"void") +#20429=@"loc,{#10000},13,28,13,31" +locations_default(#20429,#10000,13,28,13,31) hasLocation(#20428,#20429) -enclosingStmt(#20428,#20418) -exprContainers(#20428,#20007) -literals("string","string",#20428) #20430=* -typeexprs(#20430,2,#20426,1,"number") -#20431=@"loc,{#10000},34,28,34,33" -locations_default(#20431,#10000,34,28,34,33) +tokeninfo(#20430,8,#20001,74,">") +#20431=@"loc,{#10000},13,32,13,32" +locations_default(#20431,#10000,13,32,13,32) hasLocation(#20430,#20431) -enclosingStmt(#20430,#20418) -exprContainers(#20430,#20007) -literals("number","number",#20430) #20432=* -typeexprs(#20432,10,#20426,2,"(() => void)") -#20433=@"loc,{#10000},34,37,34,48" -locations_default(#20433,#10000,34,37,34,48) +tokeninfo(#20432,8,#20001,75,";") +#20433=@"loc,{#10000},13,33,13,33" +locations_default(#20433,#10000,13,33,13,33) hasLocation(#20432,#20433) -enclosingStmt(#20432,#20418) -exprContainers(#20432,#20007) #20434=* -typeexprs(#20434,23,#20432,0,"() => void") -#20435=@"loc,{#10000},34,38,34,47" -locations_default(#20435,#10000,34,38,34,47) +tokeninfo(#20434,7,#20001,76,"type") +#20435=@"loc,{#10000},14,3,14,6" +locations_default(#20435,#10000,14,3,14,6) hasLocation(#20434,#20435) -enclosingStmt(#20434,#20418) -exprContainers(#20434,#20007) +next_token(#20008,#20434) #20436=* -exprs(#20436,9,#20434,0,"() => void") -hasLocation(#20436,#20435) -enclosingStmt(#20436,#20418) -exprContainers(#20436,#20007) -#20437=* -scopes(#20437,1) -scopenodes(#20436,#20437) -scopenesting(#20437,#20011) -#20438=@"var;{arguments};{#20437}" -variables(#20438,"arguments",#20437) -isArgumentsObject(#20438) -#20439=* -typeexprs(#20439,2,#20436,-3,"void") -#20440=@"loc,{#10000},34,44,34,47" -locations_default(#20440,#10000,34,44,34,47) -hasLocation(#20439,#20440) -exprContainers(#20439,#20436) -literals("void","void",#20439) -numlines(#20436,1,1,0) -#20441=* -typeexprs(#20441,0,#20422,1,"Function") -#20442=@"loc,{#10000},34,51,34,58" -locations_default(#20442,#10000,34,51,34,58) -hasLocation(#20441,#20442) -enclosingStmt(#20441,#20418) -exprContainers(#20441,#20007) -literals("Function","Function",#20441) -#20443=* -stmts(#20443,35,#20007,20,"type T3 ... ction>;") -#20444=@"loc,{#10000},35,3,35,62" -locations_default(#20444,#10000,35,3,35,62) -hasLocation(#20443,#20444) -stmtContainers(#20443,#20007) -#20445=* -typeexprs(#20445,1,#20443,0,"T33") -#20446=@"loc,{#10000},35,8,35,10" -locations_default(#20446,#10000,35,8,35,10) -hasLocation(#20445,#20446) -enclosingStmt(#20445,#20443) -exprContainers(#20445,#20007) -literals("T33","T33",#20445) -typedecl(#20445,#20034) -#20447=* -typeexprs(#20447,14,#20443,1,"Filter< ... nction>") -#20448=@"loc,{#10000},35,14,35,61" -locations_default(#20448,#10000,35,14,35,61) -hasLocation(#20447,#20448) -enclosingStmt(#20447,#20443) -exprContainers(#20447,#20007) -#20449=* -typeexprs(#20449,0,#20447,-1,"Filter") -#20450=@"loc,{#10000},35,14,35,19" -locations_default(#20450,#10000,35,14,35,19) -hasLocation(#20449,#20450) -enclosingStmt(#20449,#20443) -exprContainers(#20449,#20007) -literals("Filter","Filter",#20449) -typebind(#20449,#20030) -#20451=* -typeexprs(#20451,7,#20447,0,"string ... > void)") -#20452=@"loc,{#10000},35,21,35,50" -locations_default(#20452,#10000,35,21,35,50) -hasLocation(#20451,#20452) -enclosingStmt(#20451,#20443) -exprContainers(#20451,#20007) -#20453=* -typeexprs(#20453,2,#20451,0,"string") -#20454=@"loc,{#10000},35,21,35,26" -locations_default(#20454,#10000,35,21,35,26) -hasLocation(#20453,#20454) -enclosingStmt(#20453,#20443) -exprContainers(#20453,#20007) -literals("string","string",#20453) -#20455=* -typeexprs(#20455,2,#20451,1,"number") -#20456=@"loc,{#10000},35,30,35,35" -locations_default(#20456,#10000,35,30,35,35) -hasLocation(#20455,#20456) -enclosingStmt(#20455,#20443) -exprContainers(#20455,#20007) -literals("number","number",#20455) -#20457=* -typeexprs(#20457,10,#20451,2,"(() => void)") -#20458=@"loc,{#10000},35,39,35,50" -locations_default(#20458,#10000,35,39,35,50) -hasLocation(#20457,#20458) -enclosingStmt(#20457,#20443) -exprContainers(#20457,#20007) -#20459=* -typeexprs(#20459,23,#20457,0,"() => void") -#20460=@"loc,{#10000},35,40,35,49" -locations_default(#20460,#10000,35,40,35,49) -hasLocation(#20459,#20460) -enclosingStmt(#20459,#20443) -exprContainers(#20459,#20007) -#20461=* -exprs(#20461,9,#20459,0,"() => void") -hasLocation(#20461,#20460) -enclosingStmt(#20461,#20443) -exprContainers(#20461,#20007) +tokeninfo(#20436,6,#20001,77,"T4") +#20437=@"loc,{#10000},14,8,14,9" +locations_default(#20437,#10000,14,8,14,9) +hasLocation(#20436,#20437) +#20438=* +tokeninfo(#20438,8,#20001,78,"=") +#20439=@"loc,{#10000},14,11,14,11" +locations_default(#20439,#10000,14,11,14,11) +hasLocation(#20438,#20439) +#20440=* +tokeninfo(#20440,6,#20001,79,"TypeName") +#20441=@"loc,{#10000},14,13,14,20" +locations_default(#20441,#10000,14,13,14,20) +hasLocation(#20440,#20441) +#20442=* +tokeninfo(#20442,8,#20001,80,"<") +#20443=@"loc,{#10000},14,21,14,21" +locations_default(#20443,#10000,14,21,14,21) +hasLocation(#20442,#20443) +#20444=* +tokeninfo(#20444,7,#20001,81,"string") +#20445=@"loc,{#10000},14,22,14,27" +locations_default(#20445,#10000,14,22,14,27) +hasLocation(#20444,#20445) +#20446=* +tokeninfo(#20446,8,#20001,82,"[") +#20447=@"loc,{#10000},14,28,14,28" +locations_default(#20447,#10000,14,28,14,28) +hasLocation(#20446,#20447) +#20448=* +tokeninfo(#20448,8,#20001,83,"]") +#20449=@"loc,{#10000},14,29,14,29" +locations_default(#20449,#10000,14,29,14,29) +hasLocation(#20448,#20449) +#20450=* +tokeninfo(#20450,8,#20001,84,">") +#20451=@"loc,{#10000},14,30,14,30" +locations_default(#20451,#10000,14,30,14,30) +hasLocation(#20450,#20451) +#20452=* +tokeninfo(#20452,8,#20001,85,";") +#20453=@"loc,{#10000},14,31,14,31" +locations_default(#20453,#10000,14,31,14,31) +hasLocation(#20452,#20453) +#20454=* +tokeninfo(#20454,7,#20001,86,"type") +#20455=@"loc,{#10000},17,3,17,6" +locations_default(#20455,#10000,17,3,17,6) +hasLocation(#20454,#20455) +next_token(#20010,#20454) +#20456=* +tokeninfo(#20456,6,#20001,87,"T10") +#20457=@"loc,{#10000},17,8,17,10" +locations_default(#20457,#10000,17,8,17,10) +hasLocation(#20456,#20457) +#20458=* +tokeninfo(#20458,8,#20001,88,"=") +#20459=@"loc,{#10000},17,12,17,12" +locations_default(#20459,#10000,17,12,17,12) +hasLocation(#20458,#20459) +#20460=* +tokeninfo(#20460,6,#20001,89,"TypeName") +#20461=@"loc,{#10000},17,14,17,21" +locations_default(#20461,#10000,17,14,17,21) +hasLocation(#20460,#20461) #20462=* -scopes(#20462,1) -scopenodes(#20461,#20462) -scopenesting(#20462,#20011) -#20463=@"var;{arguments};{#20462}" -variables(#20463,"arguments",#20462) -isArgumentsObject(#20463) +tokeninfo(#20462,8,#20001,90,"<") +#20463=@"loc,{#10000},17,22,17,22" +locations_default(#20463,#10000,17,22,17,22) +hasLocation(#20462,#20463) #20464=* -typeexprs(#20464,2,#20461,-3,"void") -#20465=@"loc,{#10000},35,46,35,49" -locations_default(#20465,#10000,35,46,35,49) +tokeninfo(#20464,7,#20001,91,"string") +#20465=@"loc,{#10000},17,23,17,28" +locations_default(#20465,#10000,17,23,17,28) hasLocation(#20464,#20465) -exprContainers(#20464,#20461) -literals("void","void",#20464) -numlines(#20461,1,1,0) #20466=* -typeexprs(#20466,0,#20447,1,"Function") -#20467=@"loc,{#10000},35,53,35,60" -locations_default(#20467,#10000,35,53,35,60) +tokeninfo(#20466,8,#20001,92,"|") +#20467=@"loc,{#10000},17,30,17,30" +locations_default(#20467,#10000,17,30,17,30) hasLocation(#20466,#20467) -enclosingStmt(#20466,#20443) -exprContainers(#20466,#20007) -literals("Function","Function",#20466) #20468=* -stmts(#20468,35,#20007,21,"type No ... fined>;") -#20469=@"loc,{#10000},37,3,37,50" -locations_default(#20469,#10000,37,3,37,50) +tokeninfo(#20468,8,#20001,93,"(") +#20469=@"loc,{#10000},17,32,17,32" +locations_default(#20469,#10000,17,32,17,32) hasLocation(#20468,#20469) -stmtContainers(#20468,#20007) #20470=* -typeexprs(#20470,1,#20468,0,"NonNullable") -#20471=@"loc,{#10000},37,8,37,18" -locations_default(#20471,#10000,37,8,37,18) +tokeninfo(#20470,8,#20001,94,"(") +#20471=@"loc,{#10000},17,33,17,33" +locations_default(#20471,#10000,17,33,17,33) hasLocation(#20470,#20471) -enclosingStmt(#20470,#20468) -exprContainers(#20470,#20007) -literals("NonNullable","NonNullable",#20470) -typedecl(#20470,#20035) #20472=* -scopes(#20472,12) -scopenodes(#20468,#20472) -scopenesting(#20472,#20011) -#20473=@"local_type_name;{T};{#20472}" -local_type_names(#20473,"T",#20472) +tokeninfo(#20472,8,#20001,95,")") +#20473=@"loc,{#10000},17,34,17,34" +locations_default(#20473,#10000,17,34,17,34) +hasLocation(#20472,#20473) #20474=* -typeexprs(#20474,22,#20468,2,"T") -#20475=@"loc,{#10000},37,20,37,20" -locations_default(#20475,#10000,37,20,37,20) +tokeninfo(#20474,8,#20001,96,"=>") +#20475=@"loc,{#10000},17,36,17,37" +locations_default(#20475,#10000,17,36,17,37) hasLocation(#20474,#20475) -enclosingStmt(#20474,#20468) -exprContainers(#20474,#20007) #20476=* -typeexprs(#20476,1,#20474,0,"T") -hasLocation(#20476,#20475) -enclosingStmt(#20476,#20468) -exprContainers(#20476,#20007) -literals("T","T",#20476) -typedecl(#20476,#20473) -#20477=* -typeexprs(#20477,14,#20468,1,"Diff") -#20478=@"loc,{#10000},37,25,37,49" -locations_default(#20478,#10000,37,25,37,49) -hasLocation(#20477,#20478) -enclosingStmt(#20477,#20468) -exprContainers(#20477,#20007) -#20479=* -typeexprs(#20479,0,#20477,-1,"Diff") -#20480=@"loc,{#10000},37,25,37,28" -locations_default(#20480,#10000,37,25,37,28) -hasLocation(#20479,#20480) -enclosingStmt(#20479,#20468) -exprContainers(#20479,#20007) -literals("Diff","Diff",#20479) -typebind(#20479,#20029) -#20481=* -typeexprs(#20481,0,#20477,0,"T") -#20482=@"loc,{#10000},37,30,37,30" -locations_default(#20482,#10000,37,30,37,30) -hasLocation(#20481,#20482) -enclosingStmt(#20481,#20468) -exprContainers(#20481,#20007) -literals("T","T",#20481) -typebind(#20481,#20473) -#20483=* -typeexprs(#20483,7,#20477,1,"null | undefined") -#20484=@"loc,{#10000},37,33,37,48" -locations_default(#20484,#10000,37,33,37,48) -hasLocation(#20483,#20484) -enclosingStmt(#20483,#20468) -exprContainers(#20483,#20007) -#20485=* -typeexprs(#20485,2,#20483,0,"null") -#20486=@"loc,{#10000},37,33,37,36" -locations_default(#20486,#10000,37,33,37,36) -hasLocation(#20485,#20486) -enclosingStmt(#20485,#20468) -exprContainers(#20485,#20007) -literals("null","null",#20485) -#20487=* -typeexprs(#20487,2,#20483,1,"undefined") -#20488=@"loc,{#10000},37,40,37,48" -locations_default(#20488,#10000,37,40,37,48) -hasLocation(#20487,#20488) -enclosingStmt(#20487,#20468) -exprContainers(#20487,#20007) -literals("undefined","undefined",#20487) -#20489=* -stmts(#20489,35,#20007,22,"type T3 ... fined>;") -#20490=@"loc,{#10000},39,3,39,54" -locations_default(#20490,#10000,39,3,39,54) -hasLocation(#20489,#20490) -stmtContainers(#20489,#20007) -#20491=* -typeexprs(#20491,1,#20489,0,"T34") -#20492=@"loc,{#10000},39,8,39,10" -locations_default(#20492,#10000,39,8,39,10) -hasLocation(#20491,#20492) -enclosingStmt(#20491,#20489) -exprContainers(#20491,#20007) -literals("T34","T34",#20491) -typedecl(#20491,#20036) -#20493=* -typeexprs(#20493,14,#20489,1,"NonNull ... efined>") -#20494=@"loc,{#10000},39,14,39,53" -locations_default(#20494,#10000,39,14,39,53) -hasLocation(#20493,#20494) -enclosingStmt(#20493,#20489) -exprContainers(#20493,#20007) -#20495=* -typeexprs(#20495,0,#20493,-1,"NonNullable") -#20496=@"loc,{#10000},39,14,39,24" -locations_default(#20496,#10000,39,14,39,24) -hasLocation(#20495,#20496) -enclosingStmt(#20495,#20489) -exprContainers(#20495,#20007) -literals("NonNullable","NonNullable",#20495) -typebind(#20495,#20035) -#20497=* -typeexprs(#20497,7,#20493,0,"string ... defined") -#20498=@"loc,{#10000},39,26,39,52" -locations_default(#20498,#10000,39,26,39,52) -hasLocation(#20497,#20498) -enclosingStmt(#20497,#20489) -exprContainers(#20497,#20007) -#20499=* -typeexprs(#20499,2,#20497,0,"string") -#20500=@"loc,{#10000},39,26,39,31" -locations_default(#20500,#10000,39,26,39,31) -hasLocation(#20499,#20500) -enclosingStmt(#20499,#20489) -exprContainers(#20499,#20007) -literals("string","string",#20499) -#20501=* -typeexprs(#20501,2,#20497,1,"number") -#20502=@"loc,{#10000},39,35,39,40" -locations_default(#20502,#10000,39,35,39,40) -hasLocation(#20501,#20502) -enclosingStmt(#20501,#20489) -exprContainers(#20501,#20007) -literals("number","number",#20501) -#20503=* -typeexprs(#20503,2,#20497,2,"undefined") -#20504=@"loc,{#10000},39,44,39,52" -locations_default(#20504,#10000,39,44,39,52) -hasLocation(#20503,#20504) -enclosingStmt(#20503,#20489) -exprContainers(#20503,#20007) -literals("undefined","undefined",#20503) -#20505=* -stmts(#20505,35,#20007,23,"type T3 ... fined>;") -#20506=@"loc,{#10000},40,3,40,63" -locations_default(#20506,#10000,40,3,40,63) -hasLocation(#20505,#20506) -stmtContainers(#20505,#20007) -#20507=* -typeexprs(#20507,1,#20505,0,"T35") -#20508=@"loc,{#10000},40,8,40,10" -locations_default(#20508,#10000,40,8,40,10) -hasLocation(#20507,#20508) -enclosingStmt(#20507,#20505) -exprContainers(#20507,#20007) -literals("T35","T35",#20507) -typedecl(#20507,#20037) -#20509=* -typeexprs(#20509,14,#20505,1,"NonNull ... efined>") -#20510=@"loc,{#10000},40,14,40,62" -locations_default(#20510,#10000,40,14,40,62) -hasLocation(#20509,#20510) -enclosingStmt(#20509,#20505) -exprContainers(#20509,#20007) -#20511=* -typeexprs(#20511,0,#20509,-1,"NonNullable") -#20512=@"loc,{#10000},40,14,40,24" -locations_default(#20512,#10000,40,14,40,24) -hasLocation(#20511,#20512) -enclosingStmt(#20511,#20505) -exprContainers(#20511,#20007) -literals("NonNullable","NonNullable",#20511) -typebind(#20511,#20035) -#20513=* -typeexprs(#20513,7,#20509,0,"string ... defined") -#20514=@"loc,{#10000},40,26,40,61" -locations_default(#20514,#10000,40,26,40,61) -hasLocation(#20513,#20514) -enclosingStmt(#20513,#20505) -exprContainers(#20513,#20007) -#20515=* -typeexprs(#20515,2,#20513,0,"string") -#20516=@"loc,{#10000},40,26,40,31" -locations_default(#20516,#10000,40,26,40,31) -hasLocation(#20515,#20516) -enclosingStmt(#20515,#20505) -exprContainers(#20515,#20007) -literals("string","string",#20515) -#20517=* -typeexprs(#20517,6,#20513,1,"string[]") -#20518=@"loc,{#10000},40,35,40,42" -locations_default(#20518,#10000,40,35,40,42) -hasLocation(#20517,#20518) -enclosingStmt(#20517,#20505) -exprContainers(#20517,#20007) -#20519=* -typeexprs(#20519,2,#20517,0,"string") -#20520=@"loc,{#10000},40,35,40,40" -locations_default(#20520,#10000,40,35,40,40) -hasLocation(#20519,#20520) -enclosingStmt(#20519,#20505) -exprContainers(#20519,#20007) -literals("string","string",#20519) -#20521=* -typeexprs(#20521,2,#20513,2,"null") -#20522=@"loc,{#10000},40,46,40,49" -locations_default(#20522,#10000,40,46,40,49) -hasLocation(#20521,#20522) -enclosingStmt(#20521,#20505) -exprContainers(#20521,#20007) -literals("null","null",#20521) -#20523=* -typeexprs(#20523,2,#20513,3,"undefined") -#20524=@"loc,{#10000},40,53,40,61" -locations_default(#20524,#10000,40,53,40,61) -hasLocation(#20523,#20524) -enclosingStmt(#20523,#20505) -exprContainers(#20523,#20007) -literals("undefined","undefined",#20523) -#20525=* -stmts(#20525,17,#20007,24,"functio ... Ok\n }") -#20526=@"loc,{#10000},42,3,44,3" -locations_default(#20526,#10000,42,3,44,3) -hasLocation(#20525,#20526) -stmtContainers(#20525,#20007) -#20527=* -exprs(#20527,78,#20525,-1,"f1") -#20528=@"loc,{#10000},42,12,42,13" -locations_default(#20528,#10000,42,12,42,13) -hasLocation(#20527,#20528) -exprContainers(#20527,#20525) -literals("f1","f1",#20527) -decl(#20527,#20012) -#20529=* -scopes(#20529,1) -scopenodes(#20525,#20529) -scopenesting(#20529,#20011) -#20530=@"local_type_name;{T};{#20529}" -local_type_names(#20530,"T",#20529) -#20531=@"var;{x};{#20529}" -variables(#20531,"x",#20529) +tokeninfo(#20476,7,#20001,97,"void") +#20477=@"loc,{#10000},17,39,17,42" +locations_default(#20477,#10000,17,39,17,42) +hasLocation(#20476,#20477) +#20478=* +tokeninfo(#20478,8,#20001,98,")") +#20479=@"loc,{#10000},17,43,17,43" +locations_default(#20479,#10000,17,43,17,43) +hasLocation(#20478,#20479) +#20480=* +tokeninfo(#20480,8,#20001,99,">") +#20481=@"loc,{#10000},17,44,17,44" +locations_default(#20481,#10000,17,44,17,44) +hasLocation(#20480,#20481) +#20482=* +tokeninfo(#20482,8,#20001,100,";") +#20483=@"loc,{#10000},17,45,17,45" +locations_default(#20483,#10000,17,45,17,45) +hasLocation(#20482,#20483) +#20484=* +tokeninfo(#20484,7,#20001,101,"type") +#20485=@"loc,{#10000},18,3,18,6" +locations_default(#20485,#10000,18,3,18,6) +hasLocation(#20484,#20485) +next_token(#20012,#20484) +#20486=* +tokeninfo(#20486,6,#20001,102,"T12") +#20487=@"loc,{#10000},18,8,18,10" +locations_default(#20487,#10000,18,8,18,10) +hasLocation(#20486,#20487) +#20488=* +tokeninfo(#20488,8,#20001,103,"=") +#20489=@"loc,{#10000},18,12,18,12" +locations_default(#20489,#10000,18,12,18,12) +hasLocation(#20488,#20489) +#20490=* +tokeninfo(#20490,6,#20001,104,"TypeName") +#20491=@"loc,{#10000},18,14,18,21" +locations_default(#20491,#10000,18,14,18,21) +hasLocation(#20490,#20491) +#20492=* +tokeninfo(#20492,8,#20001,105,"<") +#20493=@"loc,{#10000},18,22,18,22" +locations_default(#20493,#10000,18,22,18,22) +hasLocation(#20492,#20493) +#20494=* +tokeninfo(#20494,7,#20001,106,"string") +#20495=@"loc,{#10000},18,23,18,28" +locations_default(#20495,#10000,18,23,18,28) +hasLocation(#20494,#20495) +#20496=* +tokeninfo(#20496,8,#20001,107,"|") +#20497=@"loc,{#10000},18,30,18,30" +locations_default(#20497,#10000,18,30,18,30) +hasLocation(#20496,#20497) +#20498=* +tokeninfo(#20498,7,#20001,108,"string") +#20499=@"loc,{#10000},18,32,18,37" +locations_default(#20499,#10000,18,32,18,37) +hasLocation(#20498,#20499) +#20500=* +tokeninfo(#20500,8,#20001,109,"[") +#20501=@"loc,{#10000},18,38,18,38" +locations_default(#20501,#10000,18,38,18,38) +hasLocation(#20500,#20501) +#20502=* +tokeninfo(#20502,8,#20001,110,"]") +#20503=@"loc,{#10000},18,39,18,39" +locations_default(#20503,#10000,18,39,18,39) +hasLocation(#20502,#20503) +#20504=* +tokeninfo(#20504,8,#20001,111,"|") +#20505=@"loc,{#10000},18,41,18,41" +locations_default(#20505,#10000,18,41,18,41) +hasLocation(#20504,#20505) +#20506=* +tokeninfo(#20506,7,#20001,112,"undefined") +#20507=@"loc,{#10000},18,43,18,51" +locations_default(#20507,#10000,18,43,18,51) +hasLocation(#20506,#20507) +#20508=* +tokeninfo(#20508,8,#20001,113,">") +#20509=@"loc,{#10000},18,52,18,52" +locations_default(#20509,#10000,18,52,18,52) +hasLocation(#20508,#20509) +#20510=* +tokeninfo(#20510,8,#20001,114,";") +#20511=@"loc,{#10000},18,53,18,53" +locations_default(#20511,#10000,18,53,18,53) +hasLocation(#20510,#20511) +#20512=* +tokeninfo(#20512,7,#20001,115,"type") +#20513=@"loc,{#10000},19,3,19,6" +locations_default(#20513,#10000,19,3,19,6) +hasLocation(#20512,#20513) +next_token(#20014,#20512) +#20514=* +tokeninfo(#20514,6,#20001,116,"T11") +#20515=@"loc,{#10000},19,8,19,10" +locations_default(#20515,#10000,19,8,19,10) +hasLocation(#20514,#20515) +#20516=* +tokeninfo(#20516,8,#20001,117,"=") +#20517=@"loc,{#10000},19,12,19,12" +locations_default(#20517,#10000,19,12,19,12) +hasLocation(#20516,#20517) +#20518=* +tokeninfo(#20518,6,#20001,118,"TypeName") +#20519=@"loc,{#10000},19,14,19,21" +locations_default(#20519,#10000,19,14,19,21) +hasLocation(#20518,#20519) +#20520=* +tokeninfo(#20520,8,#20001,119,"<") +#20521=@"loc,{#10000},19,22,19,22" +locations_default(#20521,#10000,19,22,19,22) +hasLocation(#20520,#20521) +#20522=* +tokeninfo(#20522,7,#20001,120,"string") +#20523=@"loc,{#10000},19,23,19,28" +locations_default(#20523,#10000,19,23,19,28) +hasLocation(#20522,#20523) +#20524=* +tokeninfo(#20524,8,#20001,121,"[") +#20525=@"loc,{#10000},19,29,19,29" +locations_default(#20525,#10000,19,29,19,29) +hasLocation(#20524,#20525) +#20526=* +tokeninfo(#20526,8,#20001,122,"]") +#20527=@"loc,{#10000},19,30,19,30" +locations_default(#20527,#10000,19,30,19,30) +hasLocation(#20526,#20527) +#20528=* +tokeninfo(#20528,8,#20001,123,"|") +#20529=@"loc,{#10000},19,32,19,32" +locations_default(#20529,#10000,19,32,19,32) +hasLocation(#20528,#20529) +#20530=* +tokeninfo(#20530,7,#20001,124,"number") +#20531=@"loc,{#10000},19,34,19,39" +locations_default(#20531,#10000,19,34,19,39) +hasLocation(#20530,#20531) #20532=* -exprs(#20532,78,#20525,0,"x") -#20533=@"loc,{#10000},42,18,42,18" -locations_default(#20533,#10000,42,18,42,18) +tokeninfo(#20532,8,#20001,125,"[") +#20533=@"loc,{#10000},19,40,19,40" +locations_default(#20533,#10000,19,40,19,40) hasLocation(#20532,#20533) -exprContainers(#20532,#20525) -literals("x","x",#20532) -decl(#20532,#20531) -#20534=@"var;{y};{#20529}" -variables(#20534,"y",#20529) -#20535=* -exprs(#20535,78,#20525,1,"y") -#20536=@"loc,{#10000},42,24,42,24" -locations_default(#20536,#10000,42,24,42,24) -hasLocation(#20535,#20536) -exprContainers(#20535,#20525) -literals("y","y",#20535) -decl(#20535,#20534) -#20537=@"var;{arguments};{#20529}" -variables(#20537,"arguments",#20529) -isArgumentsObject(#20537) +#20534=* +tokeninfo(#20534,8,#20001,126,"]") +#20535=@"loc,{#10000},19,41,19,41" +locations_default(#20535,#10000,19,41,19,41) +hasLocation(#20534,#20535) +#20536=* +tokeninfo(#20536,8,#20001,127,">") +#20537=@"loc,{#10000},19,42,19,42" +locations_default(#20537,#10000,19,42,19,42) +hasLocation(#20536,#20537) #20538=* -typeexprs(#20538,0,#20525,-6,"T") -#20539=@"loc,{#10000},42,21,42,21" -locations_default(#20539,#10000,42,21,42,21) +tokeninfo(#20538,8,#20001,128,";") +#20539=@"loc,{#10000},19,43,19,43" +locations_default(#20539,#10000,19,43,19,43) hasLocation(#20538,#20539) -exprContainers(#20538,#20525) -literals("T","T",#20538) -typebind(#20538,#20530) #20540=* -typeexprs(#20540,14,#20525,-10,"NonNullable") -#20541=@"loc,{#10000},42,27,42,40" -locations_default(#20541,#10000,42,27,42,40) +tokeninfo(#20540,7,#20001,129,"type") +#20541=@"loc,{#10000},21,3,21,6" +locations_default(#20541,#10000,21,3,21,6) hasLocation(#20540,#20541) -exprContainers(#20540,#20525) +next_token(#20016,#20540) #20542=* -typeexprs(#20542,0,#20540,-1,"NonNullable") -#20543=@"loc,{#10000},42,27,42,37" -locations_default(#20543,#10000,42,27,42,37) +tokeninfo(#20542,6,#20001,130,"BoxedValue") +#20543=@"loc,{#10000},21,8,21,17" +locations_default(#20543,#10000,21,8,21,17) hasLocation(#20542,#20543) -exprContainers(#20542,#20525) -literals("NonNullable","NonNullable",#20542) -typebind(#20542,#20035) #20544=* -typeexprs(#20544,0,#20540,0,"T") -#20545=@"loc,{#10000},42,39,42,39" -locations_default(#20545,#10000,42,39,42,39) +tokeninfo(#20544,8,#20001,131,"<") +#20545=@"loc,{#10000},21,18,21,18" +locations_default(#20545,#10000,21,18,21,18) hasLocation(#20544,#20545) -exprContainers(#20544,#20525) -literals("T","T",#20544) -typebind(#20544,#20530) #20546=* -typeexprs(#20546,22,#20525,-7,"T") -#20547=@"loc,{#10000},42,15,42,15" -locations_default(#20547,#10000,42,15,42,15) +tokeninfo(#20546,6,#20001,132,"T") +#20547=@"loc,{#10000},21,19,21,19" +locations_default(#20547,#10000,21,19,21,19) hasLocation(#20546,#20547) -exprContainers(#20546,#20525) #20548=* -typeexprs(#20548,1,#20546,0,"T") -hasLocation(#20548,#20547) -exprContainers(#20548,#20525) -literals("T","T",#20548) -typedecl(#20548,#20530) -#20549=* -stmts(#20549,1,#20525,-2,"{\n ... Ok\n }") -#20550=@"loc,{#10000},42,43,44,3" -locations_default(#20550,#10000,42,43,44,3) -hasLocation(#20549,#20550) -stmtContainers(#20549,#20525) -#20551=* -stmts(#20551,2,#20549,0,"x = y;") -#20552=@"loc,{#10000},43,7,43,12" -locations_default(#20552,#10000,43,7,43,12) -hasLocation(#20551,#20552) -stmtContainers(#20551,#20525) -#20553=* -exprs(#20553,47,#20551,0,"x = y") -#20554=@"loc,{#10000},43,7,43,11" -locations_default(#20554,#10000,43,7,43,11) -hasLocation(#20553,#20554) -enclosingStmt(#20553,#20551) -exprContainers(#20553,#20525) -#20555=* -exprs(#20555,79,#20553,0,"x") -#20556=@"loc,{#10000},43,7,43,7" -locations_default(#20556,#10000,43,7,43,7) -hasLocation(#20555,#20556) -enclosingStmt(#20555,#20551) -exprContainers(#20555,#20525) -literals("x","x",#20555) -bind(#20555,#20531) -#20557=* -exprs(#20557,79,#20553,1,"y") -#20558=@"loc,{#10000},43,11,43,11" -locations_default(#20558,#10000,43,11,43,11) -hasLocation(#20557,#20558) -enclosingStmt(#20557,#20551) -exprContainers(#20557,#20525) -literals("y","y",#20557) -bind(#20557,#20534) -numlines(#20525,3,3,1) -#20559=* -stmts(#20559,17,#20007,25,"functio ... Ok\n }") -#20560=@"loc,{#10000},46,3,49,3" -locations_default(#20560,#10000,46,3,49,3) -hasLocation(#20559,#20560) -stmtContainers(#20559,#20007) -#20561=* -exprs(#20561,78,#20559,-1,"f2") -#20562=@"loc,{#10000},46,12,46,13" -locations_default(#20562,#10000,46,12,46,13) -hasLocation(#20561,#20562) -exprContainers(#20561,#20559) -literals("f2","f2",#20561) -decl(#20561,#20013) -#20563=* -scopes(#20563,1) -scopenodes(#20559,#20563) -scopenesting(#20563,#20011) -#20564=@"local_type_name;{T};{#20563}" -local_type_names(#20564,"T",#20563) -#20565=@"var;{x};{#20563}" -variables(#20565,"x",#20563) +tokeninfo(#20548,8,#20001,133,">") +#20549=@"loc,{#10000},21,20,21,20" +locations_default(#20549,#10000,21,20,21,20) +hasLocation(#20548,#20549) +#20550=* +tokeninfo(#20550,8,#20001,134,"=") +#20551=@"loc,{#10000},21,22,21,22" +locations_default(#20551,#10000,21,22,21,22) +hasLocation(#20550,#20551) +#20552=* +tokeninfo(#20552,8,#20001,135,"{") +#20553=@"loc,{#10000},21,24,21,24" +locations_default(#20553,#10000,21,24,21,24) +hasLocation(#20552,#20553) +#20554=* +tokeninfo(#20554,6,#20001,136,"value") +#20555=@"loc,{#10000},21,26,21,30" +locations_default(#20555,#10000,21,26,21,30) +hasLocation(#20554,#20555) +#20556=* +tokeninfo(#20556,8,#20001,137,":") +#20557=@"loc,{#10000},21,31,21,31" +locations_default(#20557,#10000,21,31,21,31) +hasLocation(#20556,#20557) +#20558=* +tokeninfo(#20558,6,#20001,138,"T") +#20559=@"loc,{#10000},21,33,21,33" +locations_default(#20559,#10000,21,33,21,33) +hasLocation(#20558,#20559) +#20560=* +tokeninfo(#20560,8,#20001,139,"}") +#20561=@"loc,{#10000},21,35,21,35" +locations_default(#20561,#10000,21,35,21,35) +hasLocation(#20560,#20561) +#20562=* +tokeninfo(#20562,8,#20001,140,";") +#20563=@"loc,{#10000},21,36,21,36" +locations_default(#20563,#10000,21,36,21,36) +hasLocation(#20562,#20563) +#20564=* +tokeninfo(#20564,7,#20001,141,"type") +#20565=@"loc,{#10000},22,3,22,6" +locations_default(#20565,#10000,22,3,22,6) +hasLocation(#20564,#20565) #20566=* -exprs(#20566,78,#20559,0,"x") -#20567=@"loc,{#10000},46,45,46,45" -locations_default(#20567,#10000,46,45,46,45) +tokeninfo(#20566,6,#20001,142,"BoxedArray") +#20567=@"loc,{#10000},22,8,22,17" +locations_default(#20567,#10000,22,8,22,17) hasLocation(#20566,#20567) -exprContainers(#20566,#20559) -literals("x","x",#20566) -decl(#20566,#20565) -#20568=@"var;{y};{#20563}" -variables(#20568,"y",#20563) -#20569=* -exprs(#20569,78,#20559,1,"y") -#20570=@"loc,{#10000},46,51,46,51" -locations_default(#20570,#10000,46,51,46,51) -hasLocation(#20569,#20570) -exprContainers(#20569,#20559) -literals("y","y",#20569) -decl(#20569,#20568) -#20571=@"var;{arguments};{#20563}" -variables(#20571,"arguments",#20563) -isArgumentsObject(#20571) +#20568=* +tokeninfo(#20568,8,#20001,143,"<") +#20569=@"loc,{#10000},22,18,22,18" +locations_default(#20569,#10000,22,18,22,18) +hasLocation(#20568,#20569) +#20570=* +tokeninfo(#20570,6,#20001,144,"T") +#20571=@"loc,{#10000},22,19,22,19" +locations_default(#20571,#10000,22,19,22,19) +hasLocation(#20570,#20571) #20572=* -typeexprs(#20572,0,#20559,-6,"T") -#20573=@"loc,{#10000},46,48,46,48" -locations_default(#20573,#10000,46,48,46,48) +tokeninfo(#20572,8,#20001,145,">") +#20573=@"loc,{#10000},22,20,22,20" +locations_default(#20573,#10000,22,20,22,20) hasLocation(#20572,#20573) -exprContainers(#20572,#20559) -literals("T","T",#20572) -typebind(#20572,#20564) #20574=* -typeexprs(#20574,14,#20559,-10,"NonNullable") -#20575=@"loc,{#10000},46,54,46,67" -locations_default(#20575,#10000,46,54,46,67) +tokeninfo(#20574,8,#20001,146,"=") +#20575=@"loc,{#10000},22,22,22,22" +locations_default(#20575,#10000,22,22,22,22) hasLocation(#20574,#20575) -exprContainers(#20574,#20559) #20576=* -typeexprs(#20576,0,#20574,-1,"NonNullable") -#20577=@"loc,{#10000},46,54,46,64" -locations_default(#20577,#10000,46,54,46,64) +tokeninfo(#20576,8,#20001,147,"{") +#20577=@"loc,{#10000},22,24,22,24" +locations_default(#20577,#10000,22,24,22,24) hasLocation(#20576,#20577) -exprContainers(#20576,#20559) -literals("NonNullable","NonNullable",#20576) -typebind(#20576,#20035) #20578=* -typeexprs(#20578,0,#20574,0,"T") -#20579=@"loc,{#10000},46,66,46,66" -locations_default(#20579,#10000,46,66,46,66) +tokeninfo(#20578,6,#20001,148,"array") +#20579=@"loc,{#10000},22,26,22,30" +locations_default(#20579,#10000,22,26,22,30) hasLocation(#20578,#20579) -exprContainers(#20578,#20559) -literals("T","T",#20578) -typebind(#20578,#20564) #20580=* -typeexprs(#20580,22,#20559,-7,"T exten ... defined") -#20581=@"loc,{#10000},46,15,46,42" -locations_default(#20581,#10000,46,15,46,42) +tokeninfo(#20580,8,#20001,149,":") +#20581=@"loc,{#10000},22,31,22,31" +locations_default(#20581,#10000,22,31,22,31) hasLocation(#20580,#20581) -exprContainers(#20580,#20559) #20582=* -typeexprs(#20582,1,#20580,0,"T") -#20583=@"loc,{#10000},46,15,46,15" -locations_default(#20583,#10000,46,15,46,15) +tokeninfo(#20582,6,#20001,150,"T") +#20583=@"loc,{#10000},22,33,22,33" +locations_default(#20583,#10000,22,33,22,33) hasLocation(#20582,#20583) -exprContainers(#20582,#20559) -literals("T","T",#20582) -typedecl(#20582,#20564) #20584=* -typeexprs(#20584,7,#20580,1,"string | undefined") -#20585=@"loc,{#10000},46,25,46,42" -locations_default(#20585,#10000,46,25,46,42) +tokeninfo(#20584,8,#20001,151,"[") +#20585=@"loc,{#10000},22,34,22,34" +locations_default(#20585,#10000,22,34,22,34) hasLocation(#20584,#20585) -exprContainers(#20584,#20559) #20586=* -typeexprs(#20586,2,#20584,0,"string") -#20587=@"loc,{#10000},46,25,46,30" -locations_default(#20587,#10000,46,25,46,30) +tokeninfo(#20586,8,#20001,152,"]") +#20587=@"loc,{#10000},22,35,22,35" +locations_default(#20587,#10000,22,35,22,35) hasLocation(#20586,#20587) -exprContainers(#20586,#20559) -literals("string","string",#20586) #20588=* -typeexprs(#20588,2,#20584,1,"undefined") -#20589=@"loc,{#10000},46,34,46,42" -locations_default(#20589,#10000,46,34,46,42) +tokeninfo(#20588,8,#20001,153,"}") +#20589=@"loc,{#10000},22,37,22,37" +locations_default(#20589,#10000,22,37,22,37) hasLocation(#20588,#20589) -exprContainers(#20588,#20559) -literals("undefined","undefined",#20588) #20590=* -stmts(#20590,1,#20559,-2,"{\n ... Ok\n }") -#20591=@"loc,{#10000},46,70,49,3" -locations_default(#20591,#10000,46,70,49,3) +tokeninfo(#20590,8,#20001,154,";") +#20591=@"loc,{#10000},22,38,22,38" +locations_default(#20591,#10000,22,38,22,38) hasLocation(#20590,#20591) -stmtContainers(#20590,#20559) #20592=* -scopes(#20592,4) -scopenodes(#20590,#20592) -scopenesting(#20592,#20563) -#20593=@"var;{s2};{#20592}" -variables(#20593,"s2",#20592) +tokeninfo(#20592,7,#20001,155,"type") +#20593=@"loc,{#10000},23,3,23,6" +locations_default(#20593,#10000,23,3,23,6) +hasLocation(#20592,#20593) #20594=* -stmts(#20594,2,#20590,0,"x = y;") -#20595=@"loc,{#10000},47,7,47,12" -locations_default(#20595,#10000,47,7,47,12) +tokeninfo(#20594,6,#20001,156,"Boxed") +#20595=@"loc,{#10000},23,8,23,12" +locations_default(#20595,#10000,23,8,23,12) hasLocation(#20594,#20595) -stmtContainers(#20594,#20559) #20596=* -exprs(#20596,47,#20594,0,"x = y") -#20597=@"loc,{#10000},47,7,47,11" -locations_default(#20597,#10000,47,7,47,11) +tokeninfo(#20596,8,#20001,157,"<") +#20597=@"loc,{#10000},23,13,23,13" +locations_default(#20597,#10000,23,13,23,13) hasLocation(#20596,#20597) -enclosingStmt(#20596,#20594) -exprContainers(#20596,#20559) #20598=* -exprs(#20598,79,#20596,0,"x") -#20599=@"loc,{#10000},47,7,47,7" -locations_default(#20599,#10000,47,7,47,7) +tokeninfo(#20598,6,#20001,158,"T") +#20599=@"loc,{#10000},23,14,23,14" +locations_default(#20599,#10000,23,14,23,14) hasLocation(#20598,#20599) -enclosingStmt(#20598,#20594) -exprContainers(#20598,#20559) -literals("x","x",#20598) -bind(#20598,#20565) #20600=* -exprs(#20600,79,#20596,1,"y") -#20601=@"loc,{#10000},47,11,47,11" -locations_default(#20601,#10000,47,11,47,11) +tokeninfo(#20600,8,#20001,159,">") +#20601=@"loc,{#10000},23,15,23,15" +locations_default(#20601,#10000,23,15,23,15) hasLocation(#20600,#20601) -enclosingStmt(#20600,#20594) -exprContainers(#20600,#20559) -literals("y","y",#20600) -bind(#20600,#20568) #20602=* -stmts(#20602,23,#20590,1,"let s2: string = y;") -#20603=@"loc,{#10000},48,7,48,25" -locations_default(#20603,#10000,48,7,48,25) +tokeninfo(#20602,8,#20001,160,"=") +#20603=@"loc,{#10000},23,17,23,17" +locations_default(#20603,#10000,23,17,23,17) hasLocation(#20602,#20603) -stmtContainers(#20602,#20559) #20604=* -exprs(#20604,64,#20602,0,"s2: string = y") -#20605=@"loc,{#10000},48,11,48,24" -locations_default(#20605,#10000,48,11,48,24) +tokeninfo(#20604,6,#20001,161,"T") +#20605=@"loc,{#10000},23,19,23,19" +locations_default(#20605,#10000,23,19,23,19) hasLocation(#20604,#20605) -enclosingStmt(#20604,#20602) -exprContainers(#20604,#20559) #20606=* -exprs(#20606,78,#20604,0,"s2") -#20607=@"loc,{#10000},48,11,48,12" -locations_default(#20607,#10000,48,11,48,12) +tokeninfo(#20606,7,#20001,162,"extends") +#20607=@"loc,{#10000},23,21,23,27" +locations_default(#20607,#10000,23,21,23,27) hasLocation(#20606,#20607) -enclosingStmt(#20606,#20602) -exprContainers(#20606,#20559) -literals("s2","s2",#20606) -decl(#20606,#20593) #20608=* -exprs(#20608,79,#20604,1,"y") -#20609=@"loc,{#10000},48,24,48,24" -locations_default(#20609,#10000,48,24,48,24) +tokeninfo(#20608,7,#20001,163,"any") +#20609=@"loc,{#10000},23,29,23,31" +locations_default(#20609,#10000,23,29,23,31) hasLocation(#20608,#20609) -enclosingStmt(#20608,#20602) -exprContainers(#20608,#20559) -literals("y","y",#20608) -bind(#20608,#20568) #20610=* -typeexprs(#20610,2,#20604,2,"string") -#20611=@"loc,{#10000},48,15,48,20" -locations_default(#20611,#10000,48,15,48,20) +tokeninfo(#20610,8,#20001,164,"[") +#20611=@"loc,{#10000},23,32,23,32" +locations_default(#20611,#10000,23,32,23,32) hasLocation(#20610,#20611) -enclosingStmt(#20610,#20602) -exprContainers(#20610,#20559) -literals("string","string",#20610) -numlines(#20559,4,4,2) #20612=* -stmts(#20612,35,#20007,26,"type Fu ... yof T];") -#20613=@"loc,{#10000},51,3,51,97" -locations_default(#20613,#10000,51,3,51,97) +tokeninfo(#20612,8,#20001,165,"]") +#20613=@"loc,{#10000},23,33,23,33" +locations_default(#20613,#10000,23,33,23,33) hasLocation(#20612,#20613) -stmtContainers(#20612,#20007) #20614=* -typeexprs(#20614,1,#20612,0,"Functio ... tyNames") -#20615=@"loc,{#10000},51,8,51,28" -locations_default(#20615,#10000,51,8,51,28) +tokeninfo(#20614,8,#20001,166,"?") +#20615=@"loc,{#10000},23,35,23,35" +locations_default(#20615,#10000,23,35,23,35) hasLocation(#20614,#20615) -enclosingStmt(#20614,#20612) -exprContainers(#20614,#20007) -literals("FunctionPropertyNames","FunctionPropertyNames",#20614) -typedecl(#20614,#20038) #20616=* -scopes(#20616,12) -scopenodes(#20612,#20616) -scopenesting(#20616,#20011) -#20617=@"local_type_name;{T};{#20616}" -local_type_names(#20617,"T",#20616) +tokeninfo(#20616,6,#20001,167,"BoxedArray") +#20617=@"loc,{#10000},23,37,23,46" +locations_default(#20617,#10000,23,37,23,46) +hasLocation(#20616,#20617) #20618=* -typeexprs(#20618,22,#20612,2,"T") -#20619=@"loc,{#10000},51,30,51,30" -locations_default(#20619,#10000,51,30,51,30) +tokeninfo(#20618,8,#20001,168,"<") +#20619=@"loc,{#10000},23,47,23,47" +locations_default(#20619,#10000,23,47,23,47) hasLocation(#20618,#20619) -enclosingStmt(#20618,#20612) -exprContainers(#20618,#20007) #20620=* -typeexprs(#20620,1,#20618,0,"T") -hasLocation(#20620,#20619) -enclosingStmt(#20620,#20612) -exprContainers(#20620,#20007) -literals("T","T",#20620) -typedecl(#20620,#20617) -#20621=* -typeexprs(#20621,8,#20612,1,"{ [K in ... eyof T]") -#20622=@"loc,{#10000},51,35,51,96" -locations_default(#20622,#10000,51,35,51,96) -hasLocation(#20621,#20622) -enclosingStmt(#20621,#20612) -exprContainers(#20621,#20007) -#20623=* -typeexprs(#20623,27,#20621,0,"{ [K in ... never }") -#20624=@"loc,{#10000},51,35,51,87" -locations_default(#20624,#10000,51,35,51,87) -hasLocation(#20623,#20624) -enclosingStmt(#20623,#20612) -exprContainers(#20623,#20007) -#20625=* -scopes(#20625,13) -scopenodes(#20623,#20625) -scopenesting(#20625,#20616) -#20626=@"local_type_name;{K};{#20625}" -local_type_names(#20626,"K",#20625) -#20627=* -typeexprs(#20627,22,#20623,0,"K in keyof T") -#20628=@"loc,{#10000},51,38,51,49" -locations_default(#20628,#10000,51,38,51,49) -hasLocation(#20627,#20628) -enclosingStmt(#20627,#20612) -exprContainers(#20627,#20007) -#20629=* -typeexprs(#20629,1,#20627,0,"K") -#20630=@"loc,{#10000},51,38,51,38" -locations_default(#20630,#10000,51,38,51,38) -hasLocation(#20629,#20630) -enclosingStmt(#20629,#20612) -exprContainers(#20629,#20007) -literals("K","K",#20629) -typedecl(#20629,#20626) -#20631=* -typeexprs(#20631,12,#20627,1,"keyof T") -#20632=@"loc,{#10000},51,43,51,49" -locations_default(#20632,#10000,51,43,51,49) -hasLocation(#20631,#20632) -enclosingStmt(#20631,#20612) -exprContainers(#20631,#20007) -#20633=* -typeexprs(#20633,0,#20631,0,"T") -#20634=@"loc,{#10000},51,49,51,49" -locations_default(#20634,#10000,51,49,51,49) -hasLocation(#20633,#20634) -enclosingStmt(#20633,#20612) -exprContainers(#20633,#20007) -literals("T","T",#20633) -typebind(#20633,#20617) -#20635=* -typeexprs(#20635,28,#20623,1,"T[K] ex ... : never") -#20636=@"loc,{#10000},51,53,51,85" -locations_default(#20636,#10000,51,53,51,85) -hasLocation(#20635,#20636) -enclosingStmt(#20635,#20612) -exprContainers(#20635,#20007) -#20637=* -typeexprs(#20637,8,#20635,0,"T[K]") -#20638=@"loc,{#10000},51,53,51,56" -locations_default(#20638,#10000,51,53,51,56) -hasLocation(#20637,#20638) -enclosingStmt(#20637,#20612) -exprContainers(#20637,#20007) -#20639=* -typeexprs(#20639,0,#20637,0,"T") -#20640=@"loc,{#10000},51,53,51,53" -locations_default(#20640,#10000,51,53,51,53) -hasLocation(#20639,#20640) -enclosingStmt(#20639,#20612) -exprContainers(#20639,#20007) -literals("T","T",#20639) -typebind(#20639,#20617) -#20641=* -typeexprs(#20641,0,#20637,1,"K") -#20642=@"loc,{#10000},51,55,51,55" -locations_default(#20642,#10000,51,55,51,55) -hasLocation(#20641,#20642) -enclosingStmt(#20641,#20612) -exprContainers(#20641,#20007) -literals("K","K",#20641) -typebind(#20641,#20626) -#20643=* -typeexprs(#20643,0,#20635,1,"Function") -#20644=@"loc,{#10000},51,66,51,73" -locations_default(#20644,#10000,51,66,51,73) -hasLocation(#20643,#20644) -enclosingStmt(#20643,#20612) -exprContainers(#20643,#20007) -literals("Function","Function",#20643) -#20645=* -typeexprs(#20645,0,#20635,2,"K") -#20646=@"loc,{#10000},51,77,51,77" -locations_default(#20646,#10000,51,77,51,77) -hasLocation(#20645,#20646) -enclosingStmt(#20645,#20612) -exprContainers(#20645,#20007) -literals("K","K",#20645) -typebind(#20645,#20626) -#20647=* -typeexprs(#20647,2,#20635,3,"never") -#20648=@"loc,{#10000},51,81,51,85" -locations_default(#20648,#10000,51,81,51,85) -hasLocation(#20647,#20648) -enclosingStmt(#20647,#20612) -exprContainers(#20647,#20007) -literals("never","never",#20647) -#20649=* -typeexprs(#20649,12,#20621,1,"keyof T") -#20650=@"loc,{#10000},51,89,51,95" -locations_default(#20650,#10000,51,89,51,95) -hasLocation(#20649,#20650) -enclosingStmt(#20649,#20612) -exprContainers(#20649,#20007) -#20651=* -typeexprs(#20651,0,#20649,0,"T") -#20652=@"loc,{#10000},51,95,51,95" -locations_default(#20652,#10000,51,95,51,95) -hasLocation(#20651,#20652) -enclosingStmt(#20651,#20612) -exprContainers(#20651,#20007) -literals("T","T",#20651) -typebind(#20651,#20617) -#20653=* -stmts(#20653,35,#20007,27,"type Fu ... es>;") -#20654=@"loc,{#10000},52,3,52,65" -locations_default(#20654,#10000,52,3,52,65) -hasLocation(#20653,#20654) -stmtContainers(#20653,#20007) -#20655=* -typeexprs(#20655,1,#20653,0,"FunctionProperties") -#20656=@"loc,{#10000},52,8,52,25" -locations_default(#20656,#10000,52,8,52,25) -hasLocation(#20655,#20656) -enclosingStmt(#20655,#20653) -exprContainers(#20655,#20007) -literals("FunctionProperties","FunctionProperties",#20655) -typedecl(#20655,#20039) -#20657=* -scopes(#20657,12) -scopenodes(#20653,#20657) -scopenesting(#20657,#20011) -#20658=@"local_type_name;{T};{#20657}" -local_type_names(#20658,"T",#20657) -#20659=* -typeexprs(#20659,22,#20653,2,"T") -#20660=@"loc,{#10000},52,27,52,27" -locations_default(#20660,#10000,52,27,52,27) -hasLocation(#20659,#20660) -enclosingStmt(#20659,#20653) -exprContainers(#20659,#20007) -#20661=* -typeexprs(#20661,1,#20659,0,"T") -hasLocation(#20661,#20660) -enclosingStmt(#20661,#20653) -exprContainers(#20661,#20007) -literals("T","T",#20661) -typedecl(#20661,#20658) +tokeninfo(#20620,6,#20001,169,"T") +#20621=@"loc,{#10000},23,48,23,48" +locations_default(#20621,#10000,23,48,23,48) +hasLocation(#20620,#20621) +#20622=* +tokeninfo(#20622,8,#20001,170,"[") +#20623=@"loc,{#10000},23,49,23,49" +locations_default(#20623,#10000,23,49,23,49) +hasLocation(#20622,#20623) +#20624=* +tokeninfo(#20624,7,#20001,171,"number") +#20625=@"loc,{#10000},23,50,23,55" +locations_default(#20625,#10000,23,50,23,55) +hasLocation(#20624,#20625) +#20626=* +tokeninfo(#20626,8,#20001,172,"]") +#20627=@"loc,{#10000},23,56,23,56" +locations_default(#20627,#10000,23,56,23,56) +hasLocation(#20626,#20627) +#20628=* +tokeninfo(#20628,8,#20001,173,">") +#20629=@"loc,{#10000},23,57,23,57" +locations_default(#20629,#10000,23,57,23,57) +hasLocation(#20628,#20629) +#20630=* +tokeninfo(#20630,8,#20001,174,":") +#20631=@"loc,{#10000},23,59,23,59" +locations_default(#20631,#10000,23,59,23,59) +hasLocation(#20630,#20631) +#20632=* +tokeninfo(#20632,6,#20001,175,"BoxedValue") +#20633=@"loc,{#10000},23,61,23,70" +locations_default(#20633,#10000,23,61,23,70) +hasLocation(#20632,#20633) +#20634=* +tokeninfo(#20634,8,#20001,176,"<") +#20635=@"loc,{#10000},23,71,23,71" +locations_default(#20635,#10000,23,71,23,71) +hasLocation(#20634,#20635) +#20636=* +tokeninfo(#20636,6,#20001,177,"T") +#20637=@"loc,{#10000},23,72,23,72" +locations_default(#20637,#10000,23,72,23,72) +hasLocation(#20636,#20637) +#20638=* +tokeninfo(#20638,8,#20001,178,">") +#20639=@"loc,{#10000},23,73,23,73" +locations_default(#20639,#10000,23,73,23,73) +hasLocation(#20638,#20639) +#20640=* +tokeninfo(#20640,8,#20001,179,";") +#20641=@"loc,{#10000},23,74,23,74" +locations_default(#20641,#10000,23,74,23,74) +hasLocation(#20640,#20641) +#20642=* +tokeninfo(#20642,7,#20001,180,"type") +#20643=@"loc,{#10000},25,3,25,6" +locations_default(#20643,#10000,25,3,25,6) +hasLocation(#20642,#20643) +#20644=* +tokeninfo(#20644,6,#20001,181,"T20") +#20645=@"loc,{#10000},25,8,25,10" +locations_default(#20645,#10000,25,8,25,10) +hasLocation(#20644,#20645) +#20646=* +tokeninfo(#20646,8,#20001,182,"=") +#20647=@"loc,{#10000},25,12,25,12" +locations_default(#20647,#10000,25,12,25,12) +hasLocation(#20646,#20647) +#20648=* +tokeninfo(#20648,6,#20001,183,"Boxed") +#20649=@"loc,{#10000},25,14,25,18" +locations_default(#20649,#10000,25,14,25,18) +hasLocation(#20648,#20649) +#20650=* +tokeninfo(#20650,8,#20001,184,"<") +#20651=@"loc,{#10000},25,19,25,19" +locations_default(#20651,#10000,25,19,25,19) +hasLocation(#20650,#20651) +#20652=* +tokeninfo(#20652,7,#20001,185,"string") +#20653=@"loc,{#10000},25,20,25,25" +locations_default(#20653,#10000,25,20,25,25) +hasLocation(#20652,#20653) +#20654=* +tokeninfo(#20654,8,#20001,186,">") +#20655=@"loc,{#10000},25,26,25,26" +locations_default(#20655,#10000,25,26,25,26) +hasLocation(#20654,#20655) +#20656=* +tokeninfo(#20656,8,#20001,187,";") +#20657=@"loc,{#10000},25,27,25,27" +locations_default(#20657,#10000,25,27,25,27) +hasLocation(#20656,#20657) +#20658=* +tokeninfo(#20658,7,#20001,188,"type") +#20659=@"loc,{#10000},26,3,26,6" +locations_default(#20659,#10000,26,3,26,6) +hasLocation(#20658,#20659) +next_token(#20018,#20658) +#20660=* +tokeninfo(#20660,6,#20001,189,"T21") +#20661=@"loc,{#10000},26,8,26,10" +locations_default(#20661,#10000,26,8,26,10) +hasLocation(#20660,#20661) #20662=* -typeexprs(#20662,14,#20653,1,"Pick>") -#20663=@"loc,{#10000},52,32,52,64" -locations_default(#20663,#10000,52,32,52,64) +tokeninfo(#20662,8,#20001,190,"=") +#20663=@"loc,{#10000},26,12,26,12" +locations_default(#20663,#10000,26,12,26,12) hasLocation(#20662,#20663) -enclosingStmt(#20662,#20653) -exprContainers(#20662,#20007) #20664=* -typeexprs(#20664,0,#20662,-1,"Pick") -#20665=@"loc,{#10000},52,32,52,35" -locations_default(#20665,#10000,52,32,52,35) +tokeninfo(#20664,6,#20001,191,"Boxed") +#20665=@"loc,{#10000},26,14,26,18" +locations_default(#20665,#10000,26,14,26,18) hasLocation(#20664,#20665) -enclosingStmt(#20664,#20653) -exprContainers(#20664,#20007) -literals("Pick","Pick",#20664) #20666=* -typeexprs(#20666,0,#20662,0,"T") -#20667=@"loc,{#10000},52,37,52,37" -locations_default(#20667,#10000,52,37,52,37) +tokeninfo(#20666,8,#20001,192,"<") +#20667=@"loc,{#10000},26,19,26,19" +locations_default(#20667,#10000,26,19,26,19) hasLocation(#20666,#20667) -enclosingStmt(#20666,#20653) -exprContainers(#20666,#20007) -literals("T","T",#20666) -typebind(#20666,#20658) #20668=* -typeexprs(#20668,14,#20662,1,"Functio ... ames") -#20669=@"loc,{#10000},52,40,52,63" -locations_default(#20669,#10000,52,40,52,63) +tokeninfo(#20668,7,#20001,193,"number") +#20669=@"loc,{#10000},26,20,26,25" +locations_default(#20669,#10000,26,20,26,25) hasLocation(#20668,#20669) -enclosingStmt(#20668,#20653) -exprContainers(#20668,#20007) #20670=* -typeexprs(#20670,0,#20668,-1,"Functio ... tyNames") -#20671=@"loc,{#10000},52,40,52,60" -locations_default(#20671,#10000,52,40,52,60) +tokeninfo(#20670,8,#20001,194,"[") +#20671=@"loc,{#10000},26,26,26,26" +locations_default(#20671,#10000,26,26,26,26) hasLocation(#20670,#20671) -enclosingStmt(#20670,#20653) -exprContainers(#20670,#20007) -literals("FunctionPropertyNames","FunctionPropertyNames",#20670) -typebind(#20670,#20038) #20672=* -typeexprs(#20672,0,#20668,0,"T") -#20673=@"loc,{#10000},52,62,52,62" -locations_default(#20673,#10000,52,62,52,62) +tokeninfo(#20672,8,#20001,195,"]") +#20673=@"loc,{#10000},26,27,26,27" +locations_default(#20673,#10000,26,27,26,27) hasLocation(#20672,#20673) -enclosingStmt(#20672,#20653) -exprContainers(#20672,#20007) -literals("T","T",#20672) -typebind(#20672,#20658) #20674=* -stmts(#20674,35,#20007,28,"type No ... yof T];") -#20675=@"loc,{#10000},54,3,54,100" -locations_default(#20675,#10000,54,3,54,100) +tokeninfo(#20674,8,#20001,196,">") +#20675=@"loc,{#10000},26,28,26,28" +locations_default(#20675,#10000,26,28,26,28) hasLocation(#20674,#20675) -stmtContainers(#20674,#20007) #20676=* -typeexprs(#20676,1,#20674,0,"NonFunc ... tyNames") -#20677=@"loc,{#10000},54,8,54,31" -locations_default(#20677,#10000,54,8,54,31) +tokeninfo(#20676,8,#20001,197,";") +#20677=@"loc,{#10000},26,29,26,29" +locations_default(#20677,#10000,26,29,26,29) hasLocation(#20676,#20677) -enclosingStmt(#20676,#20674) -exprContainers(#20676,#20007) -literals("NonFunctionPropertyNames","NonFunctionPropertyNames",#20676) -typedecl(#20676,#20040) #20678=* -scopes(#20678,12) -scopenodes(#20674,#20678) -scopenesting(#20678,#20011) -#20679=@"local_type_name;{T};{#20678}" -local_type_names(#20679,"T",#20678) +tokeninfo(#20678,7,#20001,198,"type") +#20679=@"loc,{#10000},27,3,27,6" +locations_default(#20679,#10000,27,3,27,6) +hasLocation(#20678,#20679) +next_token(#20020,#20678) #20680=* -typeexprs(#20680,22,#20674,2,"T") -#20681=@"loc,{#10000},54,33,54,33" -locations_default(#20681,#10000,54,33,54,33) +tokeninfo(#20680,6,#20001,199,"T22") +#20681=@"loc,{#10000},27,8,27,10" +locations_default(#20681,#10000,27,8,27,10) hasLocation(#20680,#20681) -enclosingStmt(#20680,#20674) -exprContainers(#20680,#20007) #20682=* -typeexprs(#20682,1,#20680,0,"T") -hasLocation(#20682,#20681) -enclosingStmt(#20682,#20674) -exprContainers(#20682,#20007) -literals("T","T",#20682) -typedecl(#20682,#20679) -#20683=* -typeexprs(#20683,8,#20674,1,"{ [K in ... eyof T]") -#20684=@"loc,{#10000},54,38,54,99" -locations_default(#20684,#10000,54,38,54,99) -hasLocation(#20683,#20684) -enclosingStmt(#20683,#20674) -exprContainers(#20683,#20007) -#20685=* -typeexprs(#20685,27,#20683,0,"{ [K in ... r : K }") -#20686=@"loc,{#10000},54,38,54,90" -locations_default(#20686,#10000,54,38,54,90) -hasLocation(#20685,#20686) -enclosingStmt(#20685,#20674) -exprContainers(#20685,#20007) -#20687=* -scopes(#20687,13) -scopenodes(#20685,#20687) -scopenesting(#20687,#20678) -#20688=@"local_type_name;{K};{#20687}" -local_type_names(#20688,"K",#20687) -#20689=* -typeexprs(#20689,22,#20685,0,"K in keyof T") -#20690=@"loc,{#10000},54,41,54,52" -locations_default(#20690,#10000,54,41,54,52) -hasLocation(#20689,#20690) -enclosingStmt(#20689,#20674) -exprContainers(#20689,#20007) -#20691=* -typeexprs(#20691,1,#20689,0,"K") -#20692=@"loc,{#10000},54,41,54,41" -locations_default(#20692,#10000,54,41,54,41) -hasLocation(#20691,#20692) -enclosingStmt(#20691,#20674) -exprContainers(#20691,#20007) -literals("K","K",#20691) -typedecl(#20691,#20688) -#20693=* -typeexprs(#20693,12,#20689,1,"keyof T") -#20694=@"loc,{#10000},54,46,54,52" -locations_default(#20694,#10000,54,46,54,52) -hasLocation(#20693,#20694) -enclosingStmt(#20693,#20674) -exprContainers(#20693,#20007) -#20695=* -typeexprs(#20695,0,#20693,0,"T") -#20696=@"loc,{#10000},54,52,54,52" -locations_default(#20696,#10000,54,52,54,52) -hasLocation(#20695,#20696) -enclosingStmt(#20695,#20674) -exprContainers(#20695,#20007) -literals("T","T",#20695) -typebind(#20695,#20679) -#20697=* -typeexprs(#20697,28,#20685,1,"T[K] ex ... ver : K") -#20698=@"loc,{#10000},54,56,54,88" -locations_default(#20698,#10000,54,56,54,88) -hasLocation(#20697,#20698) -enclosingStmt(#20697,#20674) -exprContainers(#20697,#20007) -#20699=* -typeexprs(#20699,8,#20697,0,"T[K]") -#20700=@"loc,{#10000},54,56,54,59" -locations_default(#20700,#10000,54,56,54,59) -hasLocation(#20699,#20700) -enclosingStmt(#20699,#20674) -exprContainers(#20699,#20007) -#20701=* -typeexprs(#20701,0,#20699,0,"T") -#20702=@"loc,{#10000},54,56,54,56" -locations_default(#20702,#10000,54,56,54,56) -hasLocation(#20701,#20702) -enclosingStmt(#20701,#20674) -exprContainers(#20701,#20007) -literals("T","T",#20701) -typebind(#20701,#20679) -#20703=* -typeexprs(#20703,0,#20699,1,"K") -#20704=@"loc,{#10000},54,58,54,58" -locations_default(#20704,#10000,54,58,54,58) -hasLocation(#20703,#20704) -enclosingStmt(#20703,#20674) -exprContainers(#20703,#20007) -literals("K","K",#20703) -typebind(#20703,#20688) -#20705=* -typeexprs(#20705,0,#20697,1,"Function") -#20706=@"loc,{#10000},54,69,54,76" -locations_default(#20706,#10000,54,69,54,76) -hasLocation(#20705,#20706) -enclosingStmt(#20705,#20674) -exprContainers(#20705,#20007) -literals("Function","Function",#20705) -#20707=* -typeexprs(#20707,2,#20697,2,"never") -#20708=@"loc,{#10000},54,80,54,84" -locations_default(#20708,#10000,54,80,54,84) -hasLocation(#20707,#20708) -enclosingStmt(#20707,#20674) -exprContainers(#20707,#20007) -literals("never","never",#20707) -#20709=* -typeexprs(#20709,0,#20697,3,"K") -#20710=@"loc,{#10000},54,88,54,88" -locations_default(#20710,#10000,54,88,54,88) -hasLocation(#20709,#20710) -enclosingStmt(#20709,#20674) -exprContainers(#20709,#20007) -literals("K","K",#20709) -typebind(#20709,#20688) -#20711=* -typeexprs(#20711,12,#20683,1,"keyof T") -#20712=@"loc,{#10000},54,92,54,98" -locations_default(#20712,#10000,54,92,54,98) -hasLocation(#20711,#20712) -enclosingStmt(#20711,#20674) -exprContainers(#20711,#20007) -#20713=* -typeexprs(#20713,0,#20711,0,"T") -#20714=@"loc,{#10000},54,98,54,98" -locations_default(#20714,#10000,54,98,54,98) -hasLocation(#20713,#20714) -enclosingStmt(#20713,#20674) -exprContainers(#20713,#20007) -literals("T","T",#20713) -typebind(#20713,#20679) -#20715=* -stmts(#20715,35,#20007,29,"type No ... es>;") -#20716=@"loc,{#10000},55,3,55,71" -locations_default(#20716,#10000,55,3,55,71) -hasLocation(#20715,#20716) -stmtContainers(#20715,#20007) -#20717=* -typeexprs(#20717,1,#20715,0,"NonFunc ... perties") -#20718=@"loc,{#10000},55,8,55,28" -locations_default(#20718,#10000,55,8,55,28) -hasLocation(#20717,#20718) -enclosingStmt(#20717,#20715) -exprContainers(#20717,#20007) -literals("NonFunctionProperties","NonFunctionProperties",#20717) -typedecl(#20717,#20041) -#20719=* -scopes(#20719,12) -scopenodes(#20715,#20719) -scopenesting(#20719,#20011) -#20720=@"local_type_name;{T};{#20719}" -local_type_names(#20720,"T",#20719) -#20721=* -typeexprs(#20721,22,#20715,2,"T") -#20722=@"loc,{#10000},55,30,55,30" -locations_default(#20722,#10000,55,30,55,30) -hasLocation(#20721,#20722) -enclosingStmt(#20721,#20715) -exprContainers(#20721,#20007) -#20723=* -typeexprs(#20723,1,#20721,0,"T") -hasLocation(#20723,#20722) -enclosingStmt(#20723,#20715) -exprContainers(#20723,#20007) -literals("T","T",#20723) -typedecl(#20723,#20720) +tokeninfo(#20682,8,#20001,200,"=") +#20683=@"loc,{#10000},27,12,27,12" +locations_default(#20683,#10000,27,12,27,12) +hasLocation(#20682,#20683) +#20684=* +tokeninfo(#20684,6,#20001,201,"Boxed") +#20685=@"loc,{#10000},27,14,27,18" +locations_default(#20685,#10000,27,14,27,18) +hasLocation(#20684,#20685) +#20686=* +tokeninfo(#20686,8,#20001,202,"<") +#20687=@"loc,{#10000},27,19,27,19" +locations_default(#20687,#10000,27,19,27,19) +hasLocation(#20686,#20687) +#20688=* +tokeninfo(#20688,7,#20001,203,"string") +#20689=@"loc,{#10000},27,20,27,25" +locations_default(#20689,#10000,27,20,27,25) +hasLocation(#20688,#20689) +#20690=* +tokeninfo(#20690,8,#20001,204,"|") +#20691=@"loc,{#10000},27,27,27,27" +locations_default(#20691,#10000,27,27,27,27) +hasLocation(#20690,#20691) +#20692=* +tokeninfo(#20692,7,#20001,205,"number") +#20693=@"loc,{#10000},27,29,27,34" +locations_default(#20693,#10000,27,29,27,34) +hasLocation(#20692,#20693) +#20694=* +tokeninfo(#20694,8,#20001,206,"[") +#20695=@"loc,{#10000},27,35,27,35" +locations_default(#20695,#10000,27,35,27,35) +hasLocation(#20694,#20695) +#20696=* +tokeninfo(#20696,8,#20001,207,"]") +#20697=@"loc,{#10000},27,36,27,36" +locations_default(#20697,#10000,27,36,27,36) +hasLocation(#20696,#20697) +#20698=* +tokeninfo(#20698,8,#20001,208,">") +#20699=@"loc,{#10000},27,37,27,37" +locations_default(#20699,#10000,27,37,27,37) +hasLocation(#20698,#20699) +#20700=* +tokeninfo(#20700,8,#20001,209,";") +#20701=@"loc,{#10000},27,38,27,38" +locations_default(#20701,#10000,27,38,27,38) +hasLocation(#20700,#20701) +#20702=* +tokeninfo(#20702,7,#20001,210,"type") +#20703=@"loc,{#10000},29,3,29,6" +locations_default(#20703,#10000,29,3,29,6) +hasLocation(#20702,#20703) +next_token(#20022,#20702) +#20704=* +tokeninfo(#20704,6,#20001,211,"Diff") +#20705=@"loc,{#10000},29,8,29,11" +locations_default(#20705,#10000,29,8,29,11) +hasLocation(#20704,#20705) +#20706=* +tokeninfo(#20706,8,#20001,212,"<") +#20707=@"loc,{#10000},29,12,29,12" +locations_default(#20707,#10000,29,12,29,12) +hasLocation(#20706,#20707) +#20708=* +tokeninfo(#20708,6,#20001,213,"T") +#20709=@"loc,{#10000},29,13,29,13" +locations_default(#20709,#10000,29,13,29,13) +hasLocation(#20708,#20709) +#20710=* +tokeninfo(#20710,8,#20001,214,",") +#20711=@"loc,{#10000},29,14,29,14" +locations_default(#20711,#10000,29,14,29,14) +hasLocation(#20710,#20711) +#20712=* +tokeninfo(#20712,6,#20001,215,"U") +#20713=@"loc,{#10000},29,16,29,16" +locations_default(#20713,#10000,29,16,29,16) +hasLocation(#20712,#20713) +#20714=* +tokeninfo(#20714,8,#20001,216,">") +#20715=@"loc,{#10000},29,17,29,17" +locations_default(#20715,#10000,29,17,29,17) +hasLocation(#20714,#20715) +#20716=* +tokeninfo(#20716,8,#20001,217,"=") +#20717=@"loc,{#10000},29,19,29,19" +locations_default(#20717,#10000,29,19,29,19) +hasLocation(#20716,#20717) +#20718=* +tokeninfo(#20718,6,#20001,218,"T") +#20719=@"loc,{#10000},29,21,29,21" +locations_default(#20719,#10000,29,21,29,21) +hasLocation(#20718,#20719) +#20720=* +tokeninfo(#20720,7,#20001,219,"extends") +#20721=@"loc,{#10000},29,23,29,29" +locations_default(#20721,#10000,29,23,29,29) +hasLocation(#20720,#20721) +#20722=* +tokeninfo(#20722,6,#20001,220,"U") +#20723=@"loc,{#10000},29,31,29,31" +locations_default(#20723,#10000,29,31,29,31) +hasLocation(#20722,#20723) #20724=* -typeexprs(#20724,14,#20715,1,"Pick>") -#20725=@"loc,{#10000},55,35,55,70" -locations_default(#20725,#10000,55,35,55,70) +tokeninfo(#20724,8,#20001,221,"?") +#20725=@"loc,{#10000},29,33,29,33" +locations_default(#20725,#10000,29,33,29,33) hasLocation(#20724,#20725) -enclosingStmt(#20724,#20715) -exprContainers(#20724,#20007) #20726=* -typeexprs(#20726,0,#20724,-1,"Pick") -#20727=@"loc,{#10000},55,35,55,38" -locations_default(#20727,#10000,55,35,55,38) +tokeninfo(#20726,7,#20001,222,"never") +#20727=@"loc,{#10000},29,35,29,39" +locations_default(#20727,#10000,29,35,29,39) hasLocation(#20726,#20727) -enclosingStmt(#20726,#20715) -exprContainers(#20726,#20007) -literals("Pick","Pick",#20726) #20728=* -typeexprs(#20728,0,#20724,0,"T") -#20729=@"loc,{#10000},55,40,55,40" -locations_default(#20729,#10000,55,40,55,40) +tokeninfo(#20728,8,#20001,223,":") +#20729=@"loc,{#10000},29,41,29,41" +locations_default(#20729,#10000,29,41,29,41) hasLocation(#20728,#20729) -enclosingStmt(#20728,#20715) -exprContainers(#20728,#20007) -literals("T","T",#20728) -typebind(#20728,#20720) #20730=* -typeexprs(#20730,14,#20724,1,"NonFunc ... ames") -#20731=@"loc,{#10000},55,43,55,69" -locations_default(#20731,#10000,55,43,55,69) +tokeninfo(#20730,6,#20001,224,"T") +#20731=@"loc,{#10000},29,43,29,43" +locations_default(#20731,#10000,29,43,29,43) hasLocation(#20730,#20731) -enclosingStmt(#20730,#20715) -exprContainers(#20730,#20007) #20732=* -typeexprs(#20732,0,#20730,-1,"NonFunc ... tyNames") -#20733=@"loc,{#10000},55,43,55,66" -locations_default(#20733,#10000,55,43,55,66) +tokeninfo(#20732,8,#20001,225,";") +#20733=@"loc,{#10000},29,44,29,44" +locations_default(#20733,#10000,29,44,29,44) hasLocation(#20732,#20733) -enclosingStmt(#20732,#20715) -exprContainers(#20732,#20007) -literals("NonFunctionPropertyNames","NonFunctionPropertyNames",#20732) -typebind(#20732,#20040) #20734=* -typeexprs(#20734,0,#20730,0,"T") -#20735=@"loc,{#10000},55,68,55,68" -locations_default(#20735,#10000,55,68,55,68) +tokeninfo(#20734,7,#20001,226,"type") +#20735=@"loc,{#10000},30,3,30,6" +locations_default(#20735,#10000,30,3,30,6) hasLocation(#20734,#20735) -enclosingStmt(#20734,#20715) -exprContainers(#20734,#20007) -literals("T","T",#20734) -typebind(#20734,#20720) +next_token(#20024,#20734) #20736=* -stmts(#20736,34,#20007,30,"interfa ... id;\n }") -#20737=@"loc,{#10000},57,3,62,3" -locations_default(#20737,#10000,57,3,62,3) +tokeninfo(#20736,6,#20001,227,"Filter") +#20737=@"loc,{#10000},30,8,30,13" +locations_default(#20737,#10000,30,8,30,13) hasLocation(#20736,#20737) -stmtContainers(#20736,#20007) #20738=* -typeexprs(#20738,1,#20736,0,"Part") -#20739=@"loc,{#10000},57,13,57,16" -locations_default(#20739,#10000,57,13,57,16) +tokeninfo(#20738,8,#20001,228,"<") +#20739=@"loc,{#10000},30,14,30,14" +locations_default(#20739,#10000,30,14,30,14) hasLocation(#20738,#20739) -enclosingStmt(#20738,#20736) -exprContainers(#20738,#20007) -literals("Part","Part",#20738) -typedecl(#20738,#20042) #20740=* -properties(#20740,#20736,2,8,"id: number;") -#20741=@"loc,{#10000},58,7,58,17" -locations_default(#20741,#10000,58,7,58,17) +tokeninfo(#20740,6,#20001,229,"T") +#20741=@"loc,{#10000},30,15,30,15" +locations_default(#20741,#10000,30,15,30,15) hasLocation(#20740,#20741) #20742=* -exprs(#20742,0,#20740,0,"id") -#20743=@"loc,{#10000},58,7,58,8" -locations_default(#20743,#10000,58,7,58,8) +tokeninfo(#20742,8,#20001,230,",") +#20743=@"loc,{#10000},30,16,30,16" +locations_default(#20743,#10000,30,16,30,16) hasLocation(#20742,#20743) -enclosingStmt(#20742,#20736) -exprContainers(#20742,#20007) -literals("id","id",#20742) -isAbstractMember(#20740) #20744=* -typeexprs(#20744,2,#20740,2,"number") -#20745=@"loc,{#10000},58,11,58,16" -locations_default(#20745,#10000,58,11,58,16) +tokeninfo(#20744,6,#20001,231,"U") +#20745=@"loc,{#10000},30,18,30,18" +locations_default(#20745,#10000,30,18,30,18) hasLocation(#20744,#20745) -enclosingStmt(#20744,#20736) -exprContainers(#20744,#20007) -literals("number","number",#20744) #20746=* -properties(#20746,#20736,3,8,"name: string;") -#20747=@"loc,{#10000},59,7,59,19" -locations_default(#20747,#10000,59,7,59,19) +tokeninfo(#20746,8,#20001,232,">") +#20747=@"loc,{#10000},30,19,30,19" +locations_default(#20747,#10000,30,19,30,19) hasLocation(#20746,#20747) #20748=* -exprs(#20748,0,#20746,0,"name") -#20749=@"loc,{#10000},59,7,59,10" -locations_default(#20749,#10000,59,7,59,10) +tokeninfo(#20748,8,#20001,233,"=") +#20749=@"loc,{#10000},30,21,30,21" +locations_default(#20749,#10000,30,21,30,21) hasLocation(#20748,#20749) -enclosingStmt(#20748,#20736) -exprContainers(#20748,#20007) -literals("name","name",#20748) -isAbstractMember(#20746) #20750=* -typeexprs(#20750,2,#20746,2,"string") -#20751=@"loc,{#10000},59,13,59,18" -locations_default(#20751,#10000,59,13,59,18) +tokeninfo(#20750,6,#20001,234,"T") +#20751=@"loc,{#10000},30,23,30,23" +locations_default(#20751,#10000,30,23,30,23) hasLocation(#20750,#20751) -enclosingStmt(#20750,#20736) -exprContainers(#20750,#20007) -literals("string","string",#20750) #20752=* -properties(#20752,#20736,4,8,"subparts: Part[];") -#20753=@"loc,{#10000},60,7,60,23" -locations_default(#20753,#10000,60,7,60,23) +tokeninfo(#20752,7,#20001,235,"extends") +#20753=@"loc,{#10000},30,25,30,31" +locations_default(#20753,#10000,30,25,30,31) hasLocation(#20752,#20753) #20754=* -exprs(#20754,0,#20752,0,"subparts") -#20755=@"loc,{#10000},60,7,60,14" -locations_default(#20755,#10000,60,7,60,14) +tokeninfo(#20754,6,#20001,236,"U") +#20755=@"loc,{#10000},30,33,30,33" +locations_default(#20755,#10000,30,33,30,33) hasLocation(#20754,#20755) -enclosingStmt(#20754,#20736) -exprContainers(#20754,#20007) -literals("subparts","subparts",#20754) -isAbstractMember(#20752) #20756=* -typeexprs(#20756,6,#20752,2,"Part[]") -#20757=@"loc,{#10000},60,17,60,22" -locations_default(#20757,#10000,60,17,60,22) +tokeninfo(#20756,8,#20001,237,"?") +#20757=@"loc,{#10000},30,35,30,35" +locations_default(#20757,#10000,30,35,30,35) hasLocation(#20756,#20757) -enclosingStmt(#20756,#20736) -exprContainers(#20756,#20007) #20758=* -typeexprs(#20758,0,#20756,0,"Part") -#20759=@"loc,{#10000},60,17,60,20" -locations_default(#20759,#10000,60,17,60,20) +tokeninfo(#20758,6,#20001,238,"T") +#20759=@"loc,{#10000},30,37,30,37" +locations_default(#20759,#10000,30,37,30,37) hasLocation(#20758,#20759) -enclosingStmt(#20758,#20736) -exprContainers(#20758,#20007) -literals("Part","Part",#20758) -typebind(#20758,#20042) #20760=* -properties(#20760,#20736,5,0,"updateP ... : void;") -#20761=@"loc,{#10000},61,7,61,40" -locations_default(#20761,#10000,61,7,61,40) +tokeninfo(#20760,8,#20001,239,":") +#20761=@"loc,{#10000},30,39,30,39" +locations_default(#20761,#10000,30,39,30,39) hasLocation(#20760,#20761) #20762=* -exprs(#20762,0,#20760,0,"updatePart") -#20763=@"loc,{#10000},61,7,61,16" -locations_default(#20763,#10000,61,7,61,16) +tokeninfo(#20762,7,#20001,240,"never") +#20763=@"loc,{#10000},30,41,30,45" +locations_default(#20763,#10000,30,41,30,45) hasLocation(#20762,#20763) -enclosingStmt(#20762,#20736) -exprContainers(#20762,#20007) -literals("updatePart","updatePart",#20762) #20764=* -exprs(#20764,9,#20760,1,"updateP ... : void;") -hasLocation(#20764,#20761) -enclosingStmt(#20764,#20736) -exprContainers(#20764,#20007) -#20765=* -scopes(#20765,1) -scopenodes(#20764,#20765) -scopenesting(#20765,#20011) -#20766=@"var;{newName};{#20765}" -variables(#20766,"newName",#20765) -#20767=* -exprs(#20767,78,#20764,0,"newName") -#20768=@"loc,{#10000},61,18,61,24" -locations_default(#20768,#10000,61,18,61,24) -hasLocation(#20767,#20768) -exprContainers(#20767,#20764) -literals("newName","newName",#20767) -decl(#20767,#20766) -#20769=@"var;{arguments};{#20765}" -variables(#20769,"arguments",#20765) -isArgumentsObject(#20769) +tokeninfo(#20764,8,#20001,241,";") +#20765=@"loc,{#10000},30,46,30,46" +locations_default(#20765,#10000,30,46,30,46) +hasLocation(#20764,#20765) +#20766=* +tokeninfo(#20766,7,#20001,242,"type") +#20767=@"loc,{#10000},32,3,32,6" +locations_default(#20767,#10000,32,3,32,6) +hasLocation(#20766,#20767) +next_token(#20026,#20766) +#20768=* +tokeninfo(#20768,6,#20001,243,"T30") +#20769=@"loc,{#10000},32,8,32,10" +locations_default(#20769,#10000,32,8,32,10) +hasLocation(#20768,#20769) #20770=* -typeexprs(#20770,2,#20764,-3,"void") -#20771=@"loc,{#10000},61,36,61,39" -locations_default(#20771,#10000,61,36,61,39) +tokeninfo(#20770,8,#20001,244,"=") +#20771=@"loc,{#10000},32,12,32,12" +locations_default(#20771,#10000,32,12,32,12) hasLocation(#20770,#20771) -exprContainers(#20770,#20764) -literals("void","void",#20770) #20772=* -typeexprs(#20772,2,#20764,-6,"string") -#20773=@"loc,{#10000},61,27,61,32" -locations_default(#20773,#10000,61,27,61,32) +tokeninfo(#20772,6,#20001,245,"Diff") +#20773=@"loc,{#10000},32,14,32,17" +locations_default(#20773,#10000,32,14,32,17) hasLocation(#20772,#20773) -exprContainers(#20772,#20764) -literals("string","string",#20772) -numlines(#20764,1,1,0) -isMethod(#20760) -isAbstractMember(#20760) #20774=* -stmts(#20774,35,#20007,31,"type T4 ... ;") -#20775=@"loc,{#10000},64,3,64,41" -locations_default(#20775,#10000,64,3,64,41) +tokeninfo(#20774,8,#20001,246,"<") +#20775=@"loc,{#10000},32,18,32,18" +locations_default(#20775,#10000,32,18,32,18) hasLocation(#20774,#20775) -stmtContainers(#20774,#20007) #20776=* -typeexprs(#20776,1,#20774,0,"T40") -#20777=@"loc,{#10000},64,8,64,10" -locations_default(#20777,#10000,64,8,64,10) +tokeninfo(#20776,4,#20001,247,"""a""") +#20777=@"loc,{#10000},32,19,32,21" +locations_default(#20777,#10000,32,19,32,21) hasLocation(#20776,#20777) -enclosingStmt(#20776,#20774) -exprContainers(#20776,#20007) -literals("T40","T40",#20776) -typedecl(#20776,#20043) #20778=* -typeexprs(#20778,14,#20774,1,"Functio ... s") -#20779=@"loc,{#10000},64,14,64,40" -locations_default(#20779,#10000,64,14,64,40) +tokeninfo(#20778,8,#20001,248,"|") +#20779=@"loc,{#10000},32,23,32,23" +locations_default(#20779,#10000,32,23,32,23) hasLocation(#20778,#20779) -enclosingStmt(#20778,#20774) -exprContainers(#20778,#20007) #20780=* -typeexprs(#20780,0,#20778,-1,"Functio ... tyNames") -#20781=@"loc,{#10000},64,14,64,34" -locations_default(#20781,#10000,64,14,64,34) +tokeninfo(#20780,4,#20001,249,"""b""") +#20781=@"loc,{#10000},32,25,32,27" +locations_default(#20781,#10000,32,25,32,27) hasLocation(#20780,#20781) -enclosingStmt(#20780,#20774) -exprContainers(#20780,#20007) -literals("FunctionPropertyNames","FunctionPropertyNames",#20780) -typebind(#20780,#20038) #20782=* -typeexprs(#20782,0,#20778,0,"Part") -#20783=@"loc,{#10000},64,36,64,39" -locations_default(#20783,#10000,64,36,64,39) +tokeninfo(#20782,8,#20001,250,"|") +#20783=@"loc,{#10000},32,29,32,29" +locations_default(#20783,#10000,32,29,32,29) hasLocation(#20782,#20783) -enclosingStmt(#20782,#20774) -exprContainers(#20782,#20007) -literals("Part","Part",#20782) -typebind(#20782,#20042) #20784=* -stmts(#20784,35,#20007,32,"type T4 ... ;") -#20785=@"loc,{#10000},65,3,65,44" -locations_default(#20785,#10000,65,3,65,44) +tokeninfo(#20784,4,#20001,251,"""c""") +#20785=@"loc,{#10000},32,31,32,33" +locations_default(#20785,#10000,32,31,32,33) hasLocation(#20784,#20785) -stmtContainers(#20784,#20007) #20786=* -typeexprs(#20786,1,#20784,0,"T41") -#20787=@"loc,{#10000},65,8,65,10" -locations_default(#20787,#10000,65,8,65,10) +tokeninfo(#20786,8,#20001,252,"|") +#20787=@"loc,{#10000},32,35,32,35" +locations_default(#20787,#10000,32,35,32,35) hasLocation(#20786,#20787) -enclosingStmt(#20786,#20784) -exprContainers(#20786,#20007) -literals("T41","T41",#20786) -typedecl(#20786,#20044) #20788=* -typeexprs(#20788,14,#20784,1,"NonFunc ... s") -#20789=@"loc,{#10000},65,14,65,43" -locations_default(#20789,#10000,65,14,65,43) +tokeninfo(#20788,4,#20001,253,"""d""") +#20789=@"loc,{#10000},32,37,32,39" +locations_default(#20789,#10000,32,37,32,39) hasLocation(#20788,#20789) -enclosingStmt(#20788,#20784) -exprContainers(#20788,#20007) #20790=* -typeexprs(#20790,0,#20788,-1,"NonFunc ... tyNames") -#20791=@"loc,{#10000},65,14,65,37" -locations_default(#20791,#10000,65,14,65,37) +tokeninfo(#20790,8,#20001,254,",") +#20791=@"loc,{#10000},32,40,32,40" +locations_default(#20791,#10000,32,40,32,40) hasLocation(#20790,#20791) -enclosingStmt(#20790,#20784) -exprContainers(#20790,#20007) -literals("NonFunctionPropertyNames","NonFunctionPropertyNames",#20790) -typebind(#20790,#20040) #20792=* -typeexprs(#20792,0,#20788,0,"Part") -#20793=@"loc,{#10000},65,39,65,42" -locations_default(#20793,#10000,65,39,65,42) +tokeninfo(#20792,4,#20001,255,"""a""") +#20793=@"loc,{#10000},32,42,32,44" +locations_default(#20793,#10000,32,42,32,44) hasLocation(#20792,#20793) -enclosingStmt(#20792,#20784) -exprContainers(#20792,#20007) -literals("Part","Part",#20792) -typebind(#20792,#20042) #20794=* -stmts(#20794,35,#20007,33,"type T4 ... ;") -#20795=@"loc,{#10000},66,3,66,38" -locations_default(#20795,#10000,66,3,66,38) +tokeninfo(#20794,8,#20001,256,"|") +#20795=@"loc,{#10000},32,46,32,46" +locations_default(#20795,#10000,32,46,32,46) hasLocation(#20794,#20795) -stmtContainers(#20794,#20007) #20796=* -typeexprs(#20796,1,#20794,0,"T42") -#20797=@"loc,{#10000},66,8,66,10" -locations_default(#20797,#10000,66,8,66,10) +tokeninfo(#20796,4,#20001,257,"""c""") +#20797=@"loc,{#10000},32,48,32,50" +locations_default(#20797,#10000,32,48,32,50) hasLocation(#20796,#20797) -enclosingStmt(#20796,#20794) -exprContainers(#20796,#20007) -literals("T42","T42",#20796) -typedecl(#20796,#20045) #20798=* -typeexprs(#20798,14,#20794,1,"Functio ... s") -#20799=@"loc,{#10000},66,14,66,37" -locations_default(#20799,#10000,66,14,66,37) +tokeninfo(#20798,8,#20001,258,"|") +#20799=@"loc,{#10000},32,52,32,52" +locations_default(#20799,#10000,32,52,32,52) hasLocation(#20798,#20799) -enclosingStmt(#20798,#20794) -exprContainers(#20798,#20007) #20800=* -typeexprs(#20800,0,#20798,-1,"FunctionProperties") -#20801=@"loc,{#10000},66,14,66,31" -locations_default(#20801,#10000,66,14,66,31) +tokeninfo(#20800,4,#20001,259,"""f""") +#20801=@"loc,{#10000},32,54,32,56" +locations_default(#20801,#10000,32,54,32,56) hasLocation(#20800,#20801) -enclosingStmt(#20800,#20794) -exprContainers(#20800,#20007) -literals("FunctionProperties","FunctionProperties",#20800) -typebind(#20800,#20039) #20802=* -typeexprs(#20802,0,#20798,0,"Part") -#20803=@"loc,{#10000},66,33,66,36" -locations_default(#20803,#10000,66,33,66,36) +tokeninfo(#20802,8,#20001,260,">") +#20803=@"loc,{#10000},32,57,32,57" +locations_default(#20803,#10000,32,57,32,57) hasLocation(#20802,#20803) -enclosingStmt(#20802,#20794) -exprContainers(#20802,#20007) -literals("Part","Part",#20802) -typebind(#20802,#20042) #20804=* -stmts(#20804,35,#20007,34,"type T4 ... ;") -#20805=@"loc,{#10000},67,3,67,41" -locations_default(#20805,#10000,67,3,67,41) +tokeninfo(#20804,8,#20001,261,";") +#20805=@"loc,{#10000},32,58,32,58" +locations_default(#20805,#10000,32,58,32,58) hasLocation(#20804,#20805) -stmtContainers(#20804,#20007) #20806=* -typeexprs(#20806,1,#20804,0,"T43") -#20807=@"loc,{#10000},67,8,67,10" -locations_default(#20807,#10000,67,8,67,10) +tokeninfo(#20806,7,#20001,262,"type") +#20807=@"loc,{#10000},33,3,33,6" +locations_default(#20807,#10000,33,3,33,6) hasLocation(#20806,#20807) -enclosingStmt(#20806,#20804) -exprContainers(#20806,#20007) -literals("T43","T43",#20806) -typedecl(#20806,#20046) +next_token(#20028,#20806) #20808=* -typeexprs(#20808,14,#20804,1,"NonFunc ... s") -#20809=@"loc,{#10000},67,14,67,40" -locations_default(#20809,#10000,67,14,67,40) +tokeninfo(#20808,6,#20001,263,"T31") +#20809=@"loc,{#10000},33,8,33,10" +locations_default(#20809,#10000,33,8,33,10) hasLocation(#20808,#20809) -enclosingStmt(#20808,#20804) -exprContainers(#20808,#20007) #20810=* -typeexprs(#20810,0,#20808,-1,"NonFunc ... perties") -#20811=@"loc,{#10000},67,14,67,34" -locations_default(#20811,#10000,67,14,67,34) +tokeninfo(#20810,8,#20001,264,"=") +#20811=@"loc,{#10000},33,12,33,12" +locations_default(#20811,#10000,33,12,33,12) hasLocation(#20810,#20811) -enclosingStmt(#20810,#20804) -exprContainers(#20810,#20007) -literals("NonFunctionProperties","NonFunctionProperties",#20810) -typebind(#20810,#20041) #20812=* -typeexprs(#20812,0,#20808,0,"Part") -#20813=@"loc,{#10000},67,36,67,39" -locations_default(#20813,#10000,67,36,67,39) +tokeninfo(#20812,6,#20001,265,"Filter") +#20813=@"loc,{#10000},33,14,33,19" +locations_default(#20813,#10000,33,14,33,19) hasLocation(#20812,#20813) -enclosingStmt(#20812,#20804) -exprContainers(#20812,#20007) -literals("Part","Part",#20812) -typebind(#20812,#20042) #20814=* -stmts(#20814,35,#20007,35,"type Re ... : any;") -#20815=@"loc,{#10000},69,3,69,71" -locations_default(#20815,#10000,69,3,69,71) +tokeninfo(#20814,8,#20001,266,"<") +#20815=@"loc,{#10000},33,20,33,20" +locations_default(#20815,#10000,33,20,33,20) hasLocation(#20814,#20815) -stmtContainers(#20814,#20007) #20816=* -typeexprs(#20816,1,#20814,0,"ReturnType") -#20817=@"loc,{#10000},69,8,69,17" -locations_default(#20817,#10000,69,8,69,17) +tokeninfo(#20816,4,#20001,267,"""a""") +#20817=@"loc,{#10000},33,21,33,23" +locations_default(#20817,#10000,33,21,33,23) hasLocation(#20816,#20817) -enclosingStmt(#20816,#20814) -exprContainers(#20816,#20007) -literals("ReturnType","ReturnType",#20816) -typedecl(#20816,#20047) #20818=* -scopes(#20818,12) -scopenodes(#20814,#20818) -scopenesting(#20818,#20011) -#20819=@"local_type_name;{T};{#20818}" -local_type_names(#20819,"T",#20818) +tokeninfo(#20818,8,#20001,268,"|") +#20819=@"loc,{#10000},33,25,33,25" +locations_default(#20819,#10000,33,25,33,25) +hasLocation(#20818,#20819) #20820=* -typeexprs(#20820,22,#20814,2,"T") -#20821=@"loc,{#10000},69,19,69,19" -locations_default(#20821,#10000,69,19,69,19) +tokeninfo(#20820,4,#20001,269,"""b""") +#20821=@"loc,{#10000},33,27,33,29" +locations_default(#20821,#10000,33,27,33,29) hasLocation(#20820,#20821) -enclosingStmt(#20820,#20814) -exprContainers(#20820,#20007) #20822=* -typeexprs(#20822,1,#20820,0,"T") -hasLocation(#20822,#20821) -enclosingStmt(#20822,#20814) -exprContainers(#20822,#20007) -literals("T","T",#20822) -typedecl(#20822,#20819) -#20823=* -typeexprs(#20823,28,#20814,1,"T exten ... R : any") -#20824=@"loc,{#10000},69,24,69,70" -locations_default(#20824,#10000,69,24,69,70) -hasLocation(#20823,#20824) -enclosingStmt(#20823,#20814) -exprContainers(#20823,#20007) -#20825=* -typeexprs(#20825,0,#20823,0,"T") -#20826=@"loc,{#10000},69,24,69,24" -locations_default(#20826,#10000,69,24,69,24) -hasLocation(#20825,#20826) -enclosingStmt(#20825,#20814) -exprContainers(#20825,#20007) -literals("T","T",#20825) -typebind(#20825,#20819) -#20827=* -scopes(#20827,16) -scopenodes(#20823,#20827) -scopenesting(#20827,#20818) -#20828=@"local_type_name;{R};{#20827}" -local_type_names(#20828,"R",#20827) -#20829=* -typeexprs(#20829,23,#20823,1,"(...arg ... infer R") -#20830=@"loc,{#10000},69,34,69,60" -locations_default(#20830,#10000,69,34,69,60) -hasLocation(#20829,#20830) -enclosingStmt(#20829,#20814) -exprContainers(#20829,#20007) -#20831=* -exprs(#20831,9,#20829,0,"(...arg ... infer R") -hasLocation(#20831,#20830) -enclosingStmt(#20831,#20814) -exprContainers(#20831,#20007) +tokeninfo(#20822,8,#20001,270,"|") +#20823=@"loc,{#10000},33,31,33,31" +locations_default(#20823,#10000,33,31,33,31) +hasLocation(#20822,#20823) +#20824=* +tokeninfo(#20824,4,#20001,271,"""c""") +#20825=@"loc,{#10000},33,33,33,35" +locations_default(#20825,#10000,33,33,33,35) +hasLocation(#20824,#20825) +#20826=* +tokeninfo(#20826,8,#20001,272,"|") +#20827=@"loc,{#10000},33,37,33,37" +locations_default(#20827,#10000,33,37,33,37) +hasLocation(#20826,#20827) +#20828=* +tokeninfo(#20828,4,#20001,273,"""d""") +#20829=@"loc,{#10000},33,39,33,41" +locations_default(#20829,#10000,33,39,33,41) +hasLocation(#20828,#20829) +#20830=* +tokeninfo(#20830,8,#20001,274,",") +#20831=@"loc,{#10000},33,42,33,42" +locations_default(#20831,#10000,33,42,33,42) +hasLocation(#20830,#20831) #20832=* -scopes(#20832,1) -scopenodes(#20831,#20832) -scopenesting(#20832,#20827) -#20833=@"var;{args};{#20832}" -variables(#20833,"args",#20832) +tokeninfo(#20832,4,#20001,275,"""a""") +#20833=@"loc,{#10000},33,44,33,46" +locations_default(#20833,#10000,33,44,33,46) +hasLocation(#20832,#20833) #20834=* -exprs(#20834,78,#20831,0,"args") -#20835=@"loc,{#10000},69,38,69,41" -locations_default(#20835,#10000,69,38,69,41) +tokeninfo(#20834,8,#20001,276,"|") +#20835=@"loc,{#10000},33,48,33,48" +locations_default(#20835,#10000,33,48,33,48) hasLocation(#20834,#20835) -exprContainers(#20834,#20831) -literals("args","args",#20834) -decl(#20834,#20833) -#20836=@"var;{arguments};{#20832}" -variables(#20836,"arguments",#20832) -isArgumentsObject(#20836) -#20837=* -typeexprs(#20837,29,#20831,-3,"infer R") -#20838=@"loc,{#10000},69,54,69,60" -locations_default(#20838,#10000,69,54,69,60) -hasLocation(#20837,#20838) -exprContainers(#20837,#20831) -#20839=* -typeexprs(#20839,22,#20837,0,"R") -#20840=@"loc,{#10000},69,60,69,60" -locations_default(#20840,#10000,69,60,69,60) -hasLocation(#20839,#20840) -exprContainers(#20839,#20831) -#20841=* -typeexprs(#20841,1,#20839,0,"R") -hasLocation(#20841,#20840) -exprContainers(#20841,#20831) -literals("R","R",#20841) -typedecl(#20841,#20828) +#20836=* +tokeninfo(#20836,4,#20001,277,"""c""") +#20837=@"loc,{#10000},33,50,33,52" +locations_default(#20837,#10000,33,50,33,52) +hasLocation(#20836,#20837) +#20838=* +tokeninfo(#20838,8,#20001,278,"|") +#20839=@"loc,{#10000},33,54,33,54" +locations_default(#20839,#10000,33,54,33,54) +hasLocation(#20838,#20839) +#20840=* +tokeninfo(#20840,4,#20001,279,"""f""") +#20841=@"loc,{#10000},33,56,33,58" +locations_default(#20841,#10000,33,56,33,58) +hasLocation(#20840,#20841) #20842=* -typeexprs(#20842,6,#20831,-6,"any[]") -#20843=@"loc,{#10000},69,44,69,48" -locations_default(#20843,#10000,69,44,69,48) +tokeninfo(#20842,8,#20001,280,">") +#20843=@"loc,{#10000},33,59,33,59" +locations_default(#20843,#10000,33,59,33,59) hasLocation(#20842,#20843) -exprContainers(#20842,#20831) #20844=* -typeexprs(#20844,2,#20842,0,"any") -#20845=@"loc,{#10000},69,44,69,46" -locations_default(#20845,#10000,69,44,69,46) +tokeninfo(#20844,8,#20001,281,";") +#20845=@"loc,{#10000},33,60,33,60" +locations_default(#20845,#10000,33,60,33,60) hasLocation(#20844,#20845) -exprContainers(#20844,#20831) -literals("any","any",#20844) -hasRestParameter(#20831) -numlines(#20831,1,1,0) #20846=* -typeexprs(#20846,0,#20823,2,"R") -#20847=@"loc,{#10000},69,64,69,64" -locations_default(#20847,#10000,69,64,69,64) +tokeninfo(#20846,7,#20001,282,"type") +#20847=@"loc,{#10000},34,3,34,6" +locations_default(#20847,#10000,34,3,34,6) hasLocation(#20846,#20847) -enclosingStmt(#20846,#20814) -exprContainers(#20846,#20007) -literals("R","R",#20846) -typebind(#20846,#20828) +next_token(#20030,#20846) #20848=* -typeexprs(#20848,2,#20823,3,"any") -#20849=@"loc,{#10000},69,68,69,70" -locations_default(#20849,#10000,69,68,69,70) +tokeninfo(#20848,6,#20001,283,"T32") +#20849=@"loc,{#10000},34,8,34,10" +locations_default(#20849,#10000,34,8,34,10) hasLocation(#20848,#20849) -enclosingStmt(#20848,#20814) -exprContainers(#20848,#20007) -literals("any","any",#20848) -isInstantiated(#20007) #20850=* -stmts(#20850,31,#20001,1,"namespa ... any;\n}") -#20851=@"loc,{#10000},72,1,101,1" -locations_default(#20851,#10000,72,1,101,1) +tokeninfo(#20850,8,#20001,284,"=") +#20851=@"loc,{#10000},34,12,34,12" +locations_default(#20851,#10000,34,12,34,12) hasLocation(#20850,#20851) -stmtContainers(#20850,#20001) #20852=* -exprs(#20852,78,#20850,-1,"ConditionalTypes2") -#20853=@"loc,{#10000},72,11,72,27" -locations_default(#20853,#10000,72,11,72,27) +tokeninfo(#20852,6,#20001,285,"Diff") +#20853=@"loc,{#10000},34,14,34,17" +locations_default(#20853,#10000,34,14,34,17) hasLocation(#20852,#20853) -enclosingStmt(#20852,#20850) -exprContainers(#20852,#20001) -literals("ConditionalTypes2","ConditionalTypes2",#20852) -decl(#20852,#20004) -namespacedecl(#20852,#20006) #20854=* -scopes(#20854,9) -scopenodes(#20850,#20854) -scopenesting(#20854,#20000) -#20855=@"local_type_name;{Unpacked};{#20854}" -local_type_names(#20855,"Unpacked",#20854) -#20856=@"local_type_name;{T0};{#20854}" -local_type_names(#20856,"T0",#20854) -#20857=@"local_type_name;{T1};{#20854}" -local_type_names(#20857,"T1",#20854) -#20858=@"local_type_name;{T2};{#20854}" -local_type_names(#20858,"T2",#20854) -#20859=@"local_type_name;{T3};{#20854}" -local_type_names(#20859,"T3",#20854) -#20860=@"local_type_name;{T4};{#20854}" -local_type_names(#20860,"T4",#20854) -#20861=@"local_type_name;{T5};{#20854}" -local_type_names(#20861,"T5",#20854) -#20862=@"local_type_name;{Foo};{#20854}" -local_type_names(#20862,"Foo",#20854) -#20863=@"local_type_name;{T10};{#20854}" -local_type_names(#20863,"T10",#20854) -#20864=@"local_type_name;{T11};{#20854}" -local_type_names(#20864,"T11",#20854) -#20865=@"local_type_name;{Bar};{#20854}" -local_type_names(#20865,"Bar",#20854) -#20866=@"local_type_name;{T20};{#20854}" -local_type_names(#20866,"T20",#20854) -#20867=@"local_type_name;{T21};{#20854}" -local_type_names(#20867,"T21",#20854) -#20868=@"local_type_name;{T30};{#20854}" -local_type_names(#20868,"T30",#20854) -#20869=@"local_type_name;{AnyFunction};{#20854}" -local_type_names(#20869,"AnyFunction",#20854) -#20870=@"local_type_name;{ReturnType};{#20854}" -local_type_names(#20870,"ReturnType",#20854) -#20871=* -stmts(#20871,35,#20850,0,"type Un ... \n T;") -#20872=@"loc,{#10000},73,3,77,6" -locations_default(#20872,#10000,73,3,77,6) -hasLocation(#20871,#20872) -stmtContainers(#20871,#20850) -#20873=* -typeexprs(#20873,1,#20871,0,"Unpacked") -#20874=@"loc,{#10000},73,8,73,15" -locations_default(#20874,#10000,73,8,73,15) -hasLocation(#20873,#20874) -enclosingStmt(#20873,#20871) -exprContainers(#20873,#20850) -literals("Unpacked","Unpacked",#20873) -typedecl(#20873,#20855) -#20875=* -scopes(#20875,12) -scopenodes(#20871,#20875) -scopenesting(#20875,#20854) -#20876=@"local_type_name;{T};{#20875}" -local_type_names(#20876,"T",#20875) -#20877=* -typeexprs(#20877,22,#20871,2,"T") -#20878=@"loc,{#10000},73,17,73,17" -locations_default(#20878,#10000,73,17,73,17) -hasLocation(#20877,#20878) -enclosingStmt(#20877,#20871) -exprContainers(#20877,#20850) -#20879=* -typeexprs(#20879,1,#20877,0,"T") -hasLocation(#20879,#20878) -enclosingStmt(#20879,#20871) -exprContainers(#20879,#20850) -literals("T","T",#20879) -typedecl(#20879,#20876) +tokeninfo(#20854,8,#20001,286,"<") +#20855=@"loc,{#10000},34,18,34,18" +locations_default(#20855,#10000,34,18,34,18) +hasLocation(#20854,#20855) +#20856=* +tokeninfo(#20856,7,#20001,287,"string") +#20857=@"loc,{#10000},34,19,34,24" +locations_default(#20857,#10000,34,19,34,24) +hasLocation(#20856,#20857) +#20858=* +tokeninfo(#20858,8,#20001,288,"|") +#20859=@"loc,{#10000},34,26,34,26" +locations_default(#20859,#10000,34,26,34,26) +hasLocation(#20858,#20859) +#20860=* +tokeninfo(#20860,7,#20001,289,"number") +#20861=@"loc,{#10000},34,28,34,33" +locations_default(#20861,#10000,34,28,34,33) +hasLocation(#20860,#20861) +#20862=* +tokeninfo(#20862,8,#20001,290,"|") +#20863=@"loc,{#10000},34,35,34,35" +locations_default(#20863,#10000,34,35,34,35) +hasLocation(#20862,#20863) +#20864=* +tokeninfo(#20864,8,#20001,291,"(") +#20865=@"loc,{#10000},34,37,34,37" +locations_default(#20865,#10000,34,37,34,37) +hasLocation(#20864,#20865) +#20866=* +tokeninfo(#20866,8,#20001,292,"(") +#20867=@"loc,{#10000},34,38,34,38" +locations_default(#20867,#10000,34,38,34,38) +hasLocation(#20866,#20867) +#20868=* +tokeninfo(#20868,8,#20001,293,")") +#20869=@"loc,{#10000},34,39,34,39" +locations_default(#20869,#10000,34,39,34,39) +hasLocation(#20868,#20869) +#20870=* +tokeninfo(#20870,8,#20001,294,"=>") +#20871=@"loc,{#10000},34,41,34,42" +locations_default(#20871,#10000,34,41,34,42) +hasLocation(#20870,#20871) +#20872=* +tokeninfo(#20872,7,#20001,295,"void") +#20873=@"loc,{#10000},34,44,34,47" +locations_default(#20873,#10000,34,44,34,47) +hasLocation(#20872,#20873) +#20874=* +tokeninfo(#20874,8,#20001,296,")") +#20875=@"loc,{#10000},34,48,34,48" +locations_default(#20875,#10000,34,48,34,48) +hasLocation(#20874,#20875) +#20876=* +tokeninfo(#20876,8,#20001,297,",") +#20877=@"loc,{#10000},34,49,34,49" +locations_default(#20877,#10000,34,49,34,49) +hasLocation(#20876,#20877) +#20878=* +tokeninfo(#20878,6,#20001,298,"Function") +#20879=@"loc,{#10000},34,51,34,58" +locations_default(#20879,#10000,34,51,34,58) +hasLocation(#20878,#20879) #20880=* -typeexprs(#20880,28,#20871,1,"T exten ... :\n T") -#20881=@"loc,{#10000},74,5,77,5" -locations_default(#20881,#10000,74,5,77,5) +tokeninfo(#20880,8,#20001,299,">") +#20881=@"loc,{#10000},34,59,34,59" +locations_default(#20881,#10000,34,59,34,59) hasLocation(#20880,#20881) -enclosingStmt(#20880,#20871) -exprContainers(#20880,#20850) #20882=* -typeexprs(#20882,0,#20880,0,"T") -#20883=@"loc,{#10000},74,5,74,5" -locations_default(#20883,#10000,74,5,74,5) +tokeninfo(#20882,8,#20001,300,";") +#20883=@"loc,{#10000},34,60,34,60" +locations_default(#20883,#10000,34,60,34,60) hasLocation(#20882,#20883) -enclosingStmt(#20882,#20871) -exprContainers(#20882,#20850) -literals("T","T",#20882) -typebind(#20882,#20876) #20884=* -scopes(#20884,16) -scopenodes(#20880,#20884) -scopenesting(#20884,#20875) -#20885=@"local_type_name;{U};{#20884}" -local_type_names(#20885,"U",#20884) +tokeninfo(#20884,7,#20001,301,"type") +#20885=@"loc,{#10000},35,3,35,6" +locations_default(#20885,#10000,35,3,35,6) +hasLocation(#20884,#20885) +next_token(#20032,#20884) #20886=* -typeexprs(#20886,6,#20880,1,"(infer U)[]") -#20887=@"loc,{#10000},74,15,74,25" -locations_default(#20887,#10000,74,15,74,25) +tokeninfo(#20886,6,#20001,302,"T33") +#20887=@"loc,{#10000},35,8,35,10" +locations_default(#20887,#10000,35,8,35,10) hasLocation(#20886,#20887) -enclosingStmt(#20886,#20871) -exprContainers(#20886,#20850) #20888=* -typeexprs(#20888,10,#20886,0,"(infer U)") -#20889=@"loc,{#10000},74,15,74,23" -locations_default(#20889,#10000,74,15,74,23) +tokeninfo(#20888,8,#20001,303,"=") +#20889=@"loc,{#10000},35,12,35,12" +locations_default(#20889,#10000,35,12,35,12) hasLocation(#20888,#20889) -enclosingStmt(#20888,#20871) -exprContainers(#20888,#20850) #20890=* -typeexprs(#20890,29,#20888,0,"infer U") -#20891=@"loc,{#10000},74,16,74,22" -locations_default(#20891,#10000,74,16,74,22) +tokeninfo(#20890,6,#20001,304,"Filter") +#20891=@"loc,{#10000},35,14,35,19" +locations_default(#20891,#10000,35,14,35,19) hasLocation(#20890,#20891) -enclosingStmt(#20890,#20871) -exprContainers(#20890,#20850) #20892=* -typeexprs(#20892,22,#20890,0,"U") -#20893=@"loc,{#10000},74,22,74,22" -locations_default(#20893,#10000,74,22,74,22) +tokeninfo(#20892,8,#20001,305,"<") +#20893=@"loc,{#10000},35,20,35,20" +locations_default(#20893,#10000,35,20,35,20) hasLocation(#20892,#20893) -enclosingStmt(#20892,#20871) -exprContainers(#20892,#20850) #20894=* -typeexprs(#20894,1,#20892,0,"U") -hasLocation(#20894,#20893) -enclosingStmt(#20894,#20871) -exprContainers(#20894,#20850) -literals("U","U",#20894) -typedecl(#20894,#20885) -#20895=* -typeexprs(#20895,0,#20880,2,"U") -#20896=@"loc,{#10000},74,29,74,29" -locations_default(#20896,#10000,74,29,74,29) -hasLocation(#20895,#20896) -enclosingStmt(#20895,#20871) -exprContainers(#20895,#20850) -literals("U","U",#20895) -typebind(#20895,#20885) -#20897=* -typeexprs(#20897,28,#20880,3,"T exten ... :\n T") -#20898=@"loc,{#10000},75,5,77,5" -locations_default(#20898,#10000,75,5,77,5) -hasLocation(#20897,#20898) -enclosingStmt(#20897,#20871) -exprContainers(#20897,#20850) -#20899=* -typeexprs(#20899,0,#20897,0,"T") -#20900=@"loc,{#10000},75,5,75,5" -locations_default(#20900,#10000,75,5,75,5) -hasLocation(#20899,#20900) -enclosingStmt(#20899,#20871) -exprContainers(#20899,#20850) -literals("T","T",#20899) -typebind(#20899,#20876) -#20901=* -scopes(#20901,16) -scopenodes(#20897,#20901) -scopenesting(#20901,#20875) -#20902=@"local_type_name;{U};{#20901}" -local_type_names(#20902,"U",#20901) -#20903=* -typeexprs(#20903,23,#20897,1,"(...arg ... infer U") -#20904=@"loc,{#10000},75,15,75,41" -locations_default(#20904,#10000,75,15,75,41) -hasLocation(#20903,#20904) -enclosingStmt(#20903,#20871) -exprContainers(#20903,#20850) -#20905=* -exprs(#20905,9,#20903,0,"(...arg ... infer U") -hasLocation(#20905,#20904) -enclosingStmt(#20905,#20871) -exprContainers(#20905,#20850) +tokeninfo(#20894,7,#20001,306,"string") +#20895=@"loc,{#10000},35,21,35,26" +locations_default(#20895,#10000,35,21,35,26) +hasLocation(#20894,#20895) +#20896=* +tokeninfo(#20896,8,#20001,307,"|") +#20897=@"loc,{#10000},35,28,35,28" +locations_default(#20897,#10000,35,28,35,28) +hasLocation(#20896,#20897) +#20898=* +tokeninfo(#20898,7,#20001,308,"number") +#20899=@"loc,{#10000},35,30,35,35" +locations_default(#20899,#10000,35,30,35,35) +hasLocation(#20898,#20899) +#20900=* +tokeninfo(#20900,8,#20001,309,"|") +#20901=@"loc,{#10000},35,37,35,37" +locations_default(#20901,#10000,35,37,35,37) +hasLocation(#20900,#20901) +#20902=* +tokeninfo(#20902,8,#20001,310,"(") +#20903=@"loc,{#10000},35,39,35,39" +locations_default(#20903,#10000,35,39,35,39) +hasLocation(#20902,#20903) +#20904=* +tokeninfo(#20904,8,#20001,311,"(") +#20905=@"loc,{#10000},35,40,35,40" +locations_default(#20905,#10000,35,40,35,40) +hasLocation(#20904,#20905) #20906=* -scopes(#20906,1) -scopenodes(#20905,#20906) -scopenesting(#20906,#20901) -#20907=@"var;{args};{#20906}" -variables(#20907,"args",#20906) +tokeninfo(#20906,8,#20001,312,")") +#20907=@"loc,{#10000},35,41,35,41" +locations_default(#20907,#10000,35,41,35,41) +hasLocation(#20906,#20907) #20908=* -exprs(#20908,78,#20905,0,"args") -#20909=@"loc,{#10000},75,19,75,22" -locations_default(#20909,#10000,75,19,75,22) +tokeninfo(#20908,8,#20001,313,"=>") +#20909=@"loc,{#10000},35,43,35,44" +locations_default(#20909,#10000,35,43,35,44) hasLocation(#20908,#20909) -exprContainers(#20908,#20905) -literals("args","args",#20908) -decl(#20908,#20907) -#20910=@"var;{arguments};{#20906}" -variables(#20910,"arguments",#20906) -isArgumentsObject(#20910) -#20911=* -typeexprs(#20911,29,#20905,-3,"infer U") -#20912=@"loc,{#10000},75,35,75,41" -locations_default(#20912,#10000,75,35,75,41) -hasLocation(#20911,#20912) -exprContainers(#20911,#20905) -#20913=* -typeexprs(#20913,22,#20911,0,"U") -#20914=@"loc,{#10000},75,41,75,41" -locations_default(#20914,#10000,75,41,75,41) -hasLocation(#20913,#20914) -exprContainers(#20913,#20905) -#20915=* -typeexprs(#20915,1,#20913,0,"U") -hasLocation(#20915,#20914) -exprContainers(#20915,#20905) -literals("U","U",#20915) -typedecl(#20915,#20902) +#20910=* +tokeninfo(#20910,7,#20001,314,"void") +#20911=@"loc,{#10000},35,46,35,49" +locations_default(#20911,#10000,35,46,35,49) +hasLocation(#20910,#20911) +#20912=* +tokeninfo(#20912,8,#20001,315,")") +#20913=@"loc,{#10000},35,50,35,50" +locations_default(#20913,#10000,35,50,35,50) +hasLocation(#20912,#20913) +#20914=* +tokeninfo(#20914,8,#20001,316,",") +#20915=@"loc,{#10000},35,51,35,51" +locations_default(#20915,#10000,35,51,35,51) +hasLocation(#20914,#20915) #20916=* -typeexprs(#20916,6,#20905,-6,"any[]") -#20917=@"loc,{#10000},75,25,75,29" -locations_default(#20917,#10000,75,25,75,29) +tokeninfo(#20916,6,#20001,317,"Function") +#20917=@"loc,{#10000},35,53,35,60" +locations_default(#20917,#10000,35,53,35,60) hasLocation(#20916,#20917) -exprContainers(#20916,#20905) #20918=* -typeexprs(#20918,2,#20916,0,"any") -#20919=@"loc,{#10000},75,25,75,27" -locations_default(#20919,#10000,75,25,75,27) +tokeninfo(#20918,8,#20001,318,">") +#20919=@"loc,{#10000},35,61,35,61" +locations_default(#20919,#10000,35,61,35,61) hasLocation(#20918,#20919) -exprContainers(#20918,#20905) -literals("any","any",#20918) -hasRestParameter(#20905) -numlines(#20905,1,1,0) #20920=* -typeexprs(#20920,0,#20897,2,"U") -#20921=@"loc,{#10000},75,45,75,45" -locations_default(#20921,#10000,75,45,75,45) +tokeninfo(#20920,8,#20001,319,";") +#20921=@"loc,{#10000},35,62,35,62" +locations_default(#20921,#10000,35,62,35,62) hasLocation(#20920,#20921) -enclosingStmt(#20920,#20871) -exprContainers(#20920,#20850) -literals("U","U",#20920) -typebind(#20920,#20902) #20922=* -typeexprs(#20922,28,#20897,3,"T exten ... :\n T") -#20923=@"loc,{#10000},76,5,77,5" -locations_default(#20923,#10000,76,5,77,5) +tokeninfo(#20922,7,#20001,320,"type") +#20923=@"loc,{#10000},37,3,37,6" +locations_default(#20923,#10000,37,3,37,6) hasLocation(#20922,#20923) -enclosingStmt(#20922,#20871) -exprContainers(#20922,#20850) +next_token(#20034,#20922) #20924=* -typeexprs(#20924,0,#20922,0,"T") -#20925=@"loc,{#10000},76,5,76,5" -locations_default(#20925,#10000,76,5,76,5) +tokeninfo(#20924,6,#20001,321,"NonNullable") +#20925=@"loc,{#10000},37,8,37,18" +locations_default(#20925,#10000,37,8,37,18) hasLocation(#20924,#20925) -enclosingStmt(#20924,#20871) -exprContainers(#20924,#20850) -literals("T","T",#20924) -typebind(#20924,#20876) #20926=* -scopes(#20926,16) -scopenodes(#20922,#20926) -scopenesting(#20926,#20875) -#20927=@"local_type_name;{U};{#20926}" -local_type_names(#20927,"U",#20926) +tokeninfo(#20926,8,#20001,322,"<") +#20927=@"loc,{#10000},37,19,37,19" +locations_default(#20927,#10000,37,19,37,19) +hasLocation(#20926,#20927) #20928=* -typeexprs(#20928,14,#20922,1,"Promise") -#20929=@"loc,{#10000},76,15,76,30" -locations_default(#20929,#10000,76,15,76,30) +tokeninfo(#20928,6,#20001,323,"T") +#20929=@"loc,{#10000},37,20,37,20" +locations_default(#20929,#10000,37,20,37,20) hasLocation(#20928,#20929) -enclosingStmt(#20928,#20871) -exprContainers(#20928,#20850) #20930=* -typeexprs(#20930,0,#20928,-1,"Promise") -#20931=@"loc,{#10000},76,15,76,21" -locations_default(#20931,#10000,76,15,76,21) +tokeninfo(#20930,8,#20001,324,">") +#20931=@"loc,{#10000},37,21,37,21" +locations_default(#20931,#10000,37,21,37,21) hasLocation(#20930,#20931) -enclosingStmt(#20930,#20871) -exprContainers(#20930,#20850) -literals("Promise","Promise",#20930) #20932=* -typeexprs(#20932,29,#20928,0,"infer U") -#20933=@"loc,{#10000},76,23,76,29" -locations_default(#20933,#10000,76,23,76,29) +tokeninfo(#20932,8,#20001,325,"=") +#20933=@"loc,{#10000},37,23,37,23" +locations_default(#20933,#10000,37,23,37,23) hasLocation(#20932,#20933) -enclosingStmt(#20932,#20871) -exprContainers(#20932,#20850) #20934=* -typeexprs(#20934,22,#20932,0,"U") -#20935=@"loc,{#10000},76,29,76,29" -locations_default(#20935,#10000,76,29,76,29) +tokeninfo(#20934,6,#20001,326,"Diff") +#20935=@"loc,{#10000},37,25,37,28" +locations_default(#20935,#10000,37,25,37,28) hasLocation(#20934,#20935) -enclosingStmt(#20934,#20871) -exprContainers(#20934,#20850) #20936=* -typeexprs(#20936,1,#20934,0,"U") -hasLocation(#20936,#20935) -enclosingStmt(#20936,#20871) -exprContainers(#20936,#20850) -literals("U","U",#20936) -typedecl(#20936,#20927) -#20937=* -typeexprs(#20937,0,#20922,2,"U") -#20938=@"loc,{#10000},76,34,76,34" -locations_default(#20938,#10000,76,34,76,34) -hasLocation(#20937,#20938) -enclosingStmt(#20937,#20871) -exprContainers(#20937,#20850) -literals("U","U",#20937) -typebind(#20937,#20927) -#20939=* -typeexprs(#20939,0,#20922,3,"T") -#20940=@"loc,{#10000},77,5,77,5" -locations_default(#20940,#10000,77,5,77,5) -hasLocation(#20939,#20940) -enclosingStmt(#20939,#20871) -exprContainers(#20939,#20850) -literals("T","T",#20939) -typebind(#20939,#20876) -#20941=* -stmts(#20941,35,#20850,1,"type T0 ... tring>;") -#20942=@"loc,{#10000},79,3,79,29" -locations_default(#20942,#10000,79,3,79,29) -hasLocation(#20941,#20942) -stmtContainers(#20941,#20850) -#20943=* -typeexprs(#20943,1,#20941,0,"T0") -#20944=@"loc,{#10000},79,8,79,9" -locations_default(#20944,#10000,79,8,79,9) -hasLocation(#20943,#20944) -enclosingStmt(#20943,#20941) -exprContainers(#20943,#20850) -literals("T0","T0",#20943) -typedecl(#20943,#20856) -#20945=* -typeexprs(#20945,14,#20941,1,"Unpacked") -#20946=@"loc,{#10000},79,13,79,28" -locations_default(#20946,#10000,79,13,79,28) -hasLocation(#20945,#20946) -enclosingStmt(#20945,#20941) -exprContainers(#20945,#20850) -#20947=* -typeexprs(#20947,0,#20945,-1,"Unpacked") -#20948=@"loc,{#10000},79,13,79,20" -locations_default(#20948,#10000,79,13,79,20) -hasLocation(#20947,#20948) -enclosingStmt(#20947,#20941) -exprContainers(#20947,#20850) -literals("Unpacked","Unpacked",#20947) -typebind(#20947,#20855) -#20949=* -typeexprs(#20949,2,#20945,0,"string") -#20950=@"loc,{#10000},79,22,79,27" -locations_default(#20950,#10000,79,22,79,27) -hasLocation(#20949,#20950) -enclosingStmt(#20949,#20941) -exprContainers(#20949,#20850) -literals("string","string",#20949) -#20951=* -stmts(#20951,35,#20850,2,"type T1 ... ing[]>;") -#20952=@"loc,{#10000},80,3,80,31" -locations_default(#20952,#10000,80,3,80,31) -hasLocation(#20951,#20952) -stmtContainers(#20951,#20850) -#20953=* -typeexprs(#20953,1,#20951,0,"T1") -#20954=@"loc,{#10000},80,8,80,9" -locations_default(#20954,#10000,80,8,80,9) -hasLocation(#20953,#20954) -enclosingStmt(#20953,#20951) -exprContainers(#20953,#20850) -literals("T1","T1",#20953) -typedecl(#20953,#20857) -#20955=* -typeexprs(#20955,14,#20951,1,"Unpacked") -#20956=@"loc,{#10000},80,13,80,30" -locations_default(#20956,#10000,80,13,80,30) -hasLocation(#20955,#20956) -enclosingStmt(#20955,#20951) -exprContainers(#20955,#20850) -#20957=* -typeexprs(#20957,0,#20955,-1,"Unpacked") -#20958=@"loc,{#10000},80,13,80,20" -locations_default(#20958,#10000,80,13,80,20) -hasLocation(#20957,#20958) -enclosingStmt(#20957,#20951) -exprContainers(#20957,#20850) -literals("Unpacked","Unpacked",#20957) -typebind(#20957,#20855) -#20959=* -typeexprs(#20959,6,#20955,0,"string[]") -#20960=@"loc,{#10000},80,22,80,29" -locations_default(#20960,#10000,80,22,80,29) -hasLocation(#20959,#20960) -enclosingStmt(#20959,#20951) -exprContainers(#20959,#20850) -#20961=* -typeexprs(#20961,2,#20959,0,"string") -#20962=@"loc,{#10000},80,22,80,27" -locations_default(#20962,#10000,80,22,80,27) -hasLocation(#20961,#20962) -enclosingStmt(#20961,#20951) -exprContainers(#20961,#20850) -literals("string","string",#20961) -#20963=* -stmts(#20963,35,#20850,3,"type T2 ... tring>;") -#20964=@"loc,{#10000},81,3,81,35" -locations_default(#20964,#10000,81,3,81,35) -hasLocation(#20963,#20964) -stmtContainers(#20963,#20850) -#20965=* -typeexprs(#20965,1,#20963,0,"T2") -#20966=@"loc,{#10000},81,8,81,9" -locations_default(#20966,#10000,81,8,81,9) -hasLocation(#20965,#20966) -enclosingStmt(#20965,#20963) -exprContainers(#20965,#20850) -literals("T2","T2",#20965) -typedecl(#20965,#20858) -#20967=* -typeexprs(#20967,14,#20963,1,"Unpacke ... string>") -#20968=@"loc,{#10000},81,13,81,34" -locations_default(#20968,#10000,81,13,81,34) -hasLocation(#20967,#20968) -enclosingStmt(#20967,#20963) -exprContainers(#20967,#20850) -#20969=* -typeexprs(#20969,0,#20967,-1,"Unpacked") -#20970=@"loc,{#10000},81,13,81,20" -locations_default(#20970,#10000,81,13,81,20) -hasLocation(#20969,#20970) -enclosingStmt(#20969,#20963) -exprContainers(#20969,#20850) -literals("Unpacked","Unpacked",#20969) -typebind(#20969,#20855) -#20971=* -typeexprs(#20971,23,#20967,0,"() => string") -#20972=@"loc,{#10000},81,22,81,33" -locations_default(#20972,#10000,81,22,81,33) -hasLocation(#20971,#20972) -enclosingStmt(#20971,#20963) -exprContainers(#20971,#20850) -#20973=* -exprs(#20973,9,#20971,0,"() => string") -hasLocation(#20973,#20972) -enclosingStmt(#20973,#20963) -exprContainers(#20973,#20850) +tokeninfo(#20936,8,#20001,327,"<") +#20937=@"loc,{#10000},37,29,37,29" +locations_default(#20937,#10000,37,29,37,29) +hasLocation(#20936,#20937) +#20938=* +tokeninfo(#20938,6,#20001,328,"T") +#20939=@"loc,{#10000},37,30,37,30" +locations_default(#20939,#10000,37,30,37,30) +hasLocation(#20938,#20939) +#20940=* +tokeninfo(#20940,8,#20001,329,",") +#20941=@"loc,{#10000},37,31,37,31" +locations_default(#20941,#10000,37,31,37,31) +hasLocation(#20940,#20941) +#20942=* +tokeninfo(#20942,1,#20001,330,"null") +#20943=@"loc,{#10000},37,33,37,36" +locations_default(#20943,#10000,37,33,37,36) +hasLocation(#20942,#20943) +#20944=* +tokeninfo(#20944,8,#20001,331,"|") +#20945=@"loc,{#10000},37,38,37,38" +locations_default(#20945,#10000,37,38,37,38) +hasLocation(#20944,#20945) +#20946=* +tokeninfo(#20946,7,#20001,332,"undefined") +#20947=@"loc,{#10000},37,40,37,48" +locations_default(#20947,#10000,37,40,37,48) +hasLocation(#20946,#20947) +#20948=* +tokeninfo(#20948,8,#20001,333,">") +#20949=@"loc,{#10000},37,49,37,49" +locations_default(#20949,#10000,37,49,37,49) +hasLocation(#20948,#20949) +#20950=* +tokeninfo(#20950,8,#20001,334,";") +#20951=@"loc,{#10000},37,50,37,50" +locations_default(#20951,#10000,37,50,37,50) +hasLocation(#20950,#20951) +#20952=* +tokeninfo(#20952,7,#20001,335,"type") +#20953=@"loc,{#10000},39,3,39,6" +locations_default(#20953,#10000,39,3,39,6) +hasLocation(#20952,#20953) +next_token(#20036,#20952) +#20954=* +tokeninfo(#20954,6,#20001,336,"T34") +#20955=@"loc,{#10000},39,8,39,10" +locations_default(#20955,#10000,39,8,39,10) +hasLocation(#20954,#20955) +#20956=* +tokeninfo(#20956,8,#20001,337,"=") +#20957=@"loc,{#10000},39,12,39,12" +locations_default(#20957,#10000,39,12,39,12) +hasLocation(#20956,#20957) +#20958=* +tokeninfo(#20958,6,#20001,338,"NonNullable") +#20959=@"loc,{#10000},39,14,39,24" +locations_default(#20959,#10000,39,14,39,24) +hasLocation(#20958,#20959) +#20960=* +tokeninfo(#20960,8,#20001,339,"<") +#20961=@"loc,{#10000},39,25,39,25" +locations_default(#20961,#10000,39,25,39,25) +hasLocation(#20960,#20961) +#20962=* +tokeninfo(#20962,7,#20001,340,"string") +#20963=@"loc,{#10000},39,26,39,31" +locations_default(#20963,#10000,39,26,39,31) +hasLocation(#20962,#20963) +#20964=* +tokeninfo(#20964,8,#20001,341,"|") +#20965=@"loc,{#10000},39,33,39,33" +locations_default(#20965,#10000,39,33,39,33) +hasLocation(#20964,#20965) +#20966=* +tokeninfo(#20966,7,#20001,342,"number") +#20967=@"loc,{#10000},39,35,39,40" +locations_default(#20967,#10000,39,35,39,40) +hasLocation(#20966,#20967) +#20968=* +tokeninfo(#20968,8,#20001,343,"|") +#20969=@"loc,{#10000},39,42,39,42" +locations_default(#20969,#10000,39,42,39,42) +hasLocation(#20968,#20969) +#20970=* +tokeninfo(#20970,7,#20001,344,"undefined") +#20971=@"loc,{#10000},39,44,39,52" +locations_default(#20971,#10000,39,44,39,52) +hasLocation(#20970,#20971) +#20972=* +tokeninfo(#20972,8,#20001,345,">") +#20973=@"loc,{#10000},39,53,39,53" +locations_default(#20973,#10000,39,53,39,53) +hasLocation(#20972,#20973) #20974=* -scopes(#20974,1) -scopenodes(#20973,#20974) -scopenesting(#20974,#20854) -#20975=@"var;{arguments};{#20974}" -variables(#20975,"arguments",#20974) -isArgumentsObject(#20975) +tokeninfo(#20974,8,#20001,346,";") +#20975=@"loc,{#10000},39,54,39,54" +locations_default(#20975,#10000,39,54,39,54) +hasLocation(#20974,#20975) #20976=* -typeexprs(#20976,2,#20973,-3,"string") -#20977=@"loc,{#10000},81,28,81,33" -locations_default(#20977,#10000,81,28,81,33) +tokeninfo(#20976,7,#20001,347,"type") +#20977=@"loc,{#10000},40,3,40,6" +locations_default(#20977,#10000,40,3,40,6) hasLocation(#20976,#20977) -exprContainers(#20976,#20973) -literals("string","string",#20976) -numlines(#20973,1,1,0) +next_token(#20038,#20976) #20978=* -stmts(#20978,35,#20850,4,"type T3 ... ring>>;") -#20979=@"loc,{#10000},82,3,82,38" -locations_default(#20979,#10000,82,3,82,38) +tokeninfo(#20978,6,#20001,348,"T35") +#20979=@"loc,{#10000},40,8,40,10" +locations_default(#20979,#10000,40,8,40,10) hasLocation(#20978,#20979) -stmtContainers(#20978,#20850) #20980=* -typeexprs(#20980,1,#20978,0,"T3") -#20981=@"loc,{#10000},82,8,82,9" -locations_default(#20981,#10000,82,8,82,9) +tokeninfo(#20980,8,#20001,349,"=") +#20981=@"loc,{#10000},40,12,40,12" +locations_default(#20981,#10000,40,12,40,12) hasLocation(#20980,#20981) -enclosingStmt(#20980,#20978) -exprContainers(#20980,#20850) -literals("T3","T3",#20980) -typedecl(#20980,#20859) #20982=* -typeexprs(#20982,14,#20978,1,"Unpacke ... tring>>") -#20983=@"loc,{#10000},82,13,82,37" -locations_default(#20983,#10000,82,13,82,37) +tokeninfo(#20982,6,#20001,350,"NonNullable") +#20983=@"loc,{#10000},40,14,40,24" +locations_default(#20983,#10000,40,14,40,24) hasLocation(#20982,#20983) -enclosingStmt(#20982,#20978) -exprContainers(#20982,#20850) #20984=* -typeexprs(#20984,0,#20982,-1,"Unpacked") -#20985=@"loc,{#10000},82,13,82,20" -locations_default(#20985,#10000,82,13,82,20) +tokeninfo(#20984,8,#20001,351,"<") +#20985=@"loc,{#10000},40,25,40,25" +locations_default(#20985,#10000,40,25,40,25) hasLocation(#20984,#20985) -enclosingStmt(#20984,#20978) -exprContainers(#20984,#20850) -literals("Unpacked","Unpacked",#20984) -typebind(#20984,#20855) #20986=* -typeexprs(#20986,14,#20982,0,"Promise") -#20987=@"loc,{#10000},82,22,82,36" -locations_default(#20987,#10000,82,22,82,36) +tokeninfo(#20986,7,#20001,352,"string") +#20987=@"loc,{#10000},40,26,40,31" +locations_default(#20987,#10000,40,26,40,31) hasLocation(#20986,#20987) -enclosingStmt(#20986,#20978) -exprContainers(#20986,#20850) #20988=* -typeexprs(#20988,0,#20986,-1,"Promise") -#20989=@"loc,{#10000},82,22,82,28" -locations_default(#20989,#10000,82,22,82,28) +tokeninfo(#20988,8,#20001,353,"|") +#20989=@"loc,{#10000},40,33,40,33" +locations_default(#20989,#10000,40,33,40,33) hasLocation(#20988,#20989) -enclosingStmt(#20988,#20978) -exprContainers(#20988,#20850) -literals("Promise","Promise",#20988) #20990=* -typeexprs(#20990,2,#20986,0,"string") -#20991=@"loc,{#10000},82,30,82,35" -locations_default(#20991,#10000,82,30,82,35) +tokeninfo(#20990,7,#20001,354,"string") +#20991=@"loc,{#10000},40,35,40,40" +locations_default(#20991,#10000,40,35,40,40) hasLocation(#20990,#20991) -enclosingStmt(#20990,#20978) -exprContainers(#20990,#20850) -literals("string","string",#20990) #20992=* -stmts(#20992,35,#20850,5,"type T4 ... ng>[]>;") -#20993=@"loc,{#10000},83,3,83,40" -locations_default(#20993,#10000,83,3,83,40) +tokeninfo(#20992,8,#20001,355,"[") +#20993=@"loc,{#10000},40,41,40,41" +locations_default(#20993,#10000,40,41,40,41) hasLocation(#20992,#20993) -stmtContainers(#20992,#20850) #20994=* -typeexprs(#20994,1,#20992,0,"T4") -#20995=@"loc,{#10000},83,8,83,9" -locations_default(#20995,#10000,83,8,83,9) +tokeninfo(#20994,8,#20001,356,"]") +#20995=@"loc,{#10000},40,42,40,42" +locations_default(#20995,#10000,40,42,40,42) hasLocation(#20994,#20995) -enclosingStmt(#20994,#20992) -exprContainers(#20994,#20850) -literals("T4","T4",#20994) -typedecl(#20994,#20860) #20996=* -typeexprs(#20996,14,#20992,1,"Unpacke ... ing>[]>") -#20997=@"loc,{#10000},83,13,83,39" -locations_default(#20997,#10000,83,13,83,39) +tokeninfo(#20996,8,#20001,357,"|") +#20997=@"loc,{#10000},40,44,40,44" +locations_default(#20997,#10000,40,44,40,44) hasLocation(#20996,#20997) -enclosingStmt(#20996,#20992) -exprContainers(#20996,#20850) #20998=* -typeexprs(#20998,0,#20996,-1,"Unpacked") -#20999=@"loc,{#10000},83,13,83,20" -locations_default(#20999,#10000,83,13,83,20) +tokeninfo(#20998,1,#20001,358,"null") +#20999=@"loc,{#10000},40,46,40,49" +locations_default(#20999,#10000,40,46,40,49) hasLocation(#20998,#20999) -enclosingStmt(#20998,#20992) -exprContainers(#20998,#20850) -literals("Unpacked","Unpacked",#20998) -typebind(#20998,#20855) #21000=* -typeexprs(#21000,6,#20996,0,"Promise[]") -#21001=@"loc,{#10000},83,22,83,38" -locations_default(#21001,#10000,83,22,83,38) +tokeninfo(#21000,8,#20001,359,"|") +#21001=@"loc,{#10000},40,51,40,51" +locations_default(#21001,#10000,40,51,40,51) hasLocation(#21000,#21001) -enclosingStmt(#21000,#20992) -exprContainers(#21000,#20850) #21002=* -typeexprs(#21002,14,#21000,0,"Promise") -#21003=@"loc,{#10000},83,22,83,36" -locations_default(#21003,#10000,83,22,83,36) +tokeninfo(#21002,7,#20001,360,"undefined") +#21003=@"loc,{#10000},40,53,40,61" +locations_default(#21003,#10000,40,53,40,61) hasLocation(#21002,#21003) -enclosingStmt(#21002,#20992) -exprContainers(#21002,#20850) #21004=* -typeexprs(#21004,0,#21002,-1,"Promise") -#21005=@"loc,{#10000},83,22,83,28" -locations_default(#21005,#10000,83,22,83,28) +tokeninfo(#21004,8,#20001,361,">") +#21005=@"loc,{#10000},40,62,40,62" +locations_default(#21005,#10000,40,62,40,62) hasLocation(#21004,#21005) -enclosingStmt(#21004,#20992) -exprContainers(#21004,#20850) -literals("Promise","Promise",#21004) #21006=* -typeexprs(#21006,2,#21002,0,"string") -#21007=@"loc,{#10000},83,30,83,35" -locations_default(#21007,#10000,83,30,83,35) +tokeninfo(#21006,8,#20001,362,";") +#21007=@"loc,{#10000},40,63,40,63" +locations_default(#21007,#10000,40,63,40,63) hasLocation(#21006,#21007) -enclosingStmt(#21006,#20992) -exprContainers(#21006,#20850) -literals("string","string",#21006) #21008=* -stmts(#21008,35,#20850,6,"type T5 ... g>[]>>;") -#21009=@"loc,{#10000},84,3,84,50" -locations_default(#21009,#10000,84,3,84,50) +tokeninfo(#21008,7,#20001,363,"function") +#21009=@"loc,{#10000},42,3,42,10" +locations_default(#21009,#10000,42,3,42,10) hasLocation(#21008,#21009) -stmtContainers(#21008,#20850) +next_token(#20040,#21008) #21010=* -typeexprs(#21010,1,#21008,0,"T5") -#21011=@"loc,{#10000},84,8,84,9" -locations_default(#21011,#10000,84,8,84,9) +tokeninfo(#21010,6,#20001,364,"f1") +#21011=@"loc,{#10000},42,12,42,13" +locations_default(#21011,#10000,42,12,42,13) hasLocation(#21010,#21011) -enclosingStmt(#21010,#21008) -exprContainers(#21010,#20850) -literals("T5","T5",#21010) -typedecl(#21010,#20861) #21012=* -typeexprs(#21012,14,#21008,1,"Unpacke ... ng>[]>>") -#21013=@"loc,{#10000},84,13,84,49" -locations_default(#21013,#10000,84,13,84,49) +tokeninfo(#21012,8,#20001,365,"<") +#21013=@"loc,{#10000},42,14,42,14" +locations_default(#21013,#10000,42,14,42,14) hasLocation(#21012,#21013) -enclosingStmt(#21012,#21008) -exprContainers(#21012,#20850) #21014=* -typeexprs(#21014,0,#21012,-1,"Unpacked") -#21015=@"loc,{#10000},84,13,84,20" -locations_default(#21015,#10000,84,13,84,20) +tokeninfo(#21014,6,#20001,366,"T") +#21015=@"loc,{#10000},42,15,42,15" +locations_default(#21015,#10000,42,15,42,15) hasLocation(#21014,#21015) -enclosingStmt(#21014,#21008) -exprContainers(#21014,#20850) -literals("Unpacked","Unpacked",#21014) -typebind(#21014,#20855) #21016=* -typeexprs(#21016,14,#21012,0,"Unpacke ... ing>[]>") -#21017=@"loc,{#10000},84,22,84,48" -locations_default(#21017,#10000,84,22,84,48) +tokeninfo(#21016,8,#20001,367,">") +#21017=@"loc,{#10000},42,16,42,16" +locations_default(#21017,#10000,42,16,42,16) hasLocation(#21016,#21017) -enclosingStmt(#21016,#21008) -exprContainers(#21016,#20850) #21018=* -typeexprs(#21018,0,#21016,-1,"Unpacked") -#21019=@"loc,{#10000},84,22,84,29" -locations_default(#21019,#10000,84,22,84,29) +tokeninfo(#21018,8,#20001,368,"(") +#21019=@"loc,{#10000},42,17,42,17" +locations_default(#21019,#10000,42,17,42,17) hasLocation(#21018,#21019) -enclosingStmt(#21018,#21008) -exprContainers(#21018,#20850) -literals("Unpacked","Unpacked",#21018) -typebind(#21018,#20855) #21020=* -typeexprs(#21020,6,#21016,0,"Promise[]") -#21021=@"loc,{#10000},84,31,84,47" -locations_default(#21021,#10000,84,31,84,47) +tokeninfo(#21020,6,#20001,369,"x") +#21021=@"loc,{#10000},42,18,42,18" +locations_default(#21021,#10000,42,18,42,18) hasLocation(#21020,#21021) -enclosingStmt(#21020,#21008) -exprContainers(#21020,#20850) #21022=* -typeexprs(#21022,14,#21020,0,"Promise") -#21023=@"loc,{#10000},84,31,84,45" -locations_default(#21023,#10000,84,31,84,45) +tokeninfo(#21022,8,#20001,370,":") +#21023=@"loc,{#10000},42,19,42,19" +locations_default(#21023,#10000,42,19,42,19) hasLocation(#21022,#21023) -enclosingStmt(#21022,#21008) -exprContainers(#21022,#20850) #21024=* -typeexprs(#21024,0,#21022,-1,"Promise") -#21025=@"loc,{#10000},84,31,84,37" -locations_default(#21025,#10000,84,31,84,37) +tokeninfo(#21024,6,#20001,371,"T") +#21025=@"loc,{#10000},42,21,42,21" +locations_default(#21025,#10000,42,21,42,21) hasLocation(#21024,#21025) -enclosingStmt(#21024,#21008) -exprContainers(#21024,#20850) -literals("Promise","Promise",#21024) #21026=* -typeexprs(#21026,2,#21022,0,"string") -#21027=@"loc,{#10000},84,39,84,44" -locations_default(#21027,#10000,84,39,84,44) +tokeninfo(#21026,8,#20001,372,",") +#21027=@"loc,{#10000},42,22,42,22" +locations_default(#21027,#10000,42,22,42,22) hasLocation(#21026,#21027) -enclosingStmt(#21026,#21008) -exprContainers(#21026,#20850) -literals("string","string",#21026) #21028=* -stmts(#21028,35,#20850,7,"type Fo ... never;") -#21029=@"loc,{#10000},86,3,86,65" -locations_default(#21029,#10000,86,3,86,65) +tokeninfo(#21028,6,#20001,373,"y") +#21029=@"loc,{#10000},42,24,42,24" +locations_default(#21029,#10000,42,24,42,24) hasLocation(#21028,#21029) -stmtContainers(#21028,#20850) #21030=* -typeexprs(#21030,1,#21028,0,"Foo") -#21031=@"loc,{#10000},86,8,86,10" -locations_default(#21031,#10000,86,8,86,10) +tokeninfo(#21030,8,#20001,374,":") +#21031=@"loc,{#10000},42,25,42,25" +locations_default(#21031,#10000,42,25,42,25) hasLocation(#21030,#21031) -enclosingStmt(#21030,#21028) -exprContainers(#21030,#20850) -literals("Foo","Foo",#21030) -typedecl(#21030,#20862) #21032=* -scopes(#21032,12) -scopenodes(#21028,#21032) -scopenesting(#21032,#20854) -#21033=@"local_type_name;{T};{#21032}" -local_type_names(#21033,"T",#21032) +tokeninfo(#21032,6,#20001,375,"NonNullable") +#21033=@"loc,{#10000},42,27,42,37" +locations_default(#21033,#10000,42,27,42,37) +hasLocation(#21032,#21033) #21034=* -typeexprs(#21034,22,#21028,2,"T") -#21035=@"loc,{#10000},86,12,86,12" -locations_default(#21035,#10000,86,12,86,12) +tokeninfo(#21034,8,#20001,376,"<") +#21035=@"loc,{#10000},42,38,42,38" +locations_default(#21035,#10000,42,38,42,38) hasLocation(#21034,#21035) -enclosingStmt(#21034,#21028) -exprContainers(#21034,#20850) #21036=* -typeexprs(#21036,1,#21034,0,"T") -hasLocation(#21036,#21035) -enclosingStmt(#21036,#21028) -exprContainers(#21036,#20850) -literals("T","T",#21036) -typedecl(#21036,#21033) -#21037=* -typeexprs(#21037,28,#21028,1,"T exten ... : never") -#21038=@"loc,{#10000},86,17,86,64" -locations_default(#21038,#10000,86,17,86,64) -hasLocation(#21037,#21038) -enclosingStmt(#21037,#21028) -exprContainers(#21037,#20850) -#21039=* -typeexprs(#21039,0,#21037,0,"T") -#21040=@"loc,{#10000},86,17,86,17" -locations_default(#21040,#10000,86,17,86,17) -hasLocation(#21039,#21040) -enclosingStmt(#21039,#21028) -exprContainers(#21039,#20850) -literals("T","T",#21039) -typebind(#21039,#21033) -#21041=* -typeexprs(#21041,21,#21037,1,"{ a: in ... fer U }") -#21042=@"loc,{#10000},86,27,86,52" -locations_default(#21042,#10000,86,27,86,52) -hasLocation(#21041,#21042) -enclosingStmt(#21041,#21028) -exprContainers(#21041,#20850) -#21043=* -properties(#21043,#21041,0,8,"a: infer U,") -#21044=@"loc,{#10000},86,29,86,39" -locations_default(#21044,#10000,86,29,86,39) -hasLocation(#21043,#21044) -#21045=* -exprs(#21045,0,#21043,0,"a") -#21046=@"loc,{#10000},86,29,86,29" -locations_default(#21046,#10000,86,29,86,29) -hasLocation(#21045,#21046) -enclosingStmt(#21045,#21028) -exprContainers(#21045,#20850) -literals("a","a",#21045) -isAbstractMember(#21043) -#21047=* -typeexprs(#21047,29,#21043,2,"infer U") -#21048=@"loc,{#10000},86,32,86,38" -locations_default(#21048,#10000,86,32,86,38) -hasLocation(#21047,#21048) -enclosingStmt(#21047,#21028) -exprContainers(#21047,#20850) -#21049=* -typeexprs(#21049,22,#21047,0,"U") -#21050=@"loc,{#10000},86,38,86,38" -locations_default(#21050,#10000,86,38,86,38) -hasLocation(#21049,#21050) -enclosingStmt(#21049,#21028) -exprContainers(#21049,#20850) -#21051=* -typeexprs(#21051,1,#21049,0,"U") -hasLocation(#21051,#21050) -enclosingStmt(#21051,#21028) -exprContainers(#21051,#20850) -literals("U","U",#21051) +tokeninfo(#21036,6,#20001,377,"T") +#21037=@"loc,{#10000},42,39,42,39" +locations_default(#21037,#10000,42,39,42,39) +hasLocation(#21036,#21037) +#21038=* +tokeninfo(#21038,8,#20001,378,">") +#21039=@"loc,{#10000},42,40,42,40" +locations_default(#21039,#10000,42,40,42,40) +hasLocation(#21038,#21039) +#21040=* +tokeninfo(#21040,8,#20001,379,")") +#21041=@"loc,{#10000},42,41,42,41" +locations_default(#21041,#10000,42,41,42,41) +hasLocation(#21040,#21041) +#21042=* +tokeninfo(#21042,8,#20001,380,"{") +#21043=@"loc,{#10000},42,43,42,43" +locations_default(#21043,#10000,42,43,42,43) +hasLocation(#21042,#21043) +#21044=* +tokeninfo(#21044,6,#20001,381,"x") +#21045=@"loc,{#10000},43,7,43,7" +locations_default(#21045,#10000,43,7,43,7) +hasLocation(#21044,#21045) +#21046=* +tokeninfo(#21046,8,#20001,382,"=") +#21047=@"loc,{#10000},43,9,43,9" +locations_default(#21047,#10000,43,9,43,9) +hasLocation(#21046,#21047) +#21048=* +tokeninfo(#21048,6,#20001,383,"y") +#21049=@"loc,{#10000},43,11,43,11" +locations_default(#21049,#10000,43,11,43,11) +hasLocation(#21048,#21049) +#21050=* +tokeninfo(#21050,8,#20001,384,";") +#21051=@"loc,{#10000},43,12,43,12" +locations_default(#21051,#10000,43,12,43,12) +hasLocation(#21050,#21051) #21052=* -properties(#21052,#21041,1,8,"b: infer U") -#21053=@"loc,{#10000},86,41,86,50" -locations_default(#21053,#10000,86,41,86,50) +tokeninfo(#21052,8,#20001,385,"}") +#21053=@"loc,{#10000},44,3,44,3" +locations_default(#21053,#10000,44,3,44,3) hasLocation(#21052,#21053) +next_token(#20042,#21052) #21054=* -exprs(#21054,0,#21052,0,"b") -#21055=@"loc,{#10000},86,41,86,41" -locations_default(#21055,#10000,86,41,86,41) +tokeninfo(#21054,7,#20001,386,"function") +#21055=@"loc,{#10000},46,3,46,10" +locations_default(#21055,#10000,46,3,46,10) hasLocation(#21054,#21055) -enclosingStmt(#21054,#21028) -exprContainers(#21054,#20850) -literals("b","b",#21054) -isAbstractMember(#21052) #21056=* -typeexprs(#21056,29,#21052,2,"infer U") -#21057=@"loc,{#10000},86,44,86,50" -locations_default(#21057,#10000,86,44,86,50) +tokeninfo(#21056,6,#20001,387,"f2") +#21057=@"loc,{#10000},46,12,46,13" +locations_default(#21057,#10000,46,12,46,13) hasLocation(#21056,#21057) -enclosingStmt(#21056,#21028) -exprContainers(#21056,#20850) #21058=* -typeexprs(#21058,22,#21056,0,"U") -#21059=@"loc,{#10000},86,50,86,50" -locations_default(#21059,#10000,86,50,86,50) +tokeninfo(#21058,8,#20001,388,"<") +#21059=@"loc,{#10000},46,14,46,14" +locations_default(#21059,#10000,46,14,46,14) hasLocation(#21058,#21059) -enclosingStmt(#21058,#21028) -exprContainers(#21058,#20850) #21060=* -typeexprs(#21060,1,#21058,0,"U") -hasLocation(#21060,#21059) -enclosingStmt(#21060,#21028) -exprContainers(#21060,#20850) -literals("U","U",#21060) -#21061=* -typeexprs(#21061,0,#21037,2,"U") -#21062=@"loc,{#10000},86,56,86,56" -locations_default(#21062,#10000,86,56,86,56) -hasLocation(#21061,#21062) -enclosingStmt(#21061,#21028) -exprContainers(#21061,#20850) -literals("U","U",#21061) -#21063=* -typeexprs(#21063,2,#21037,3,"never") -#21064=@"loc,{#10000},86,60,86,64" -locations_default(#21064,#10000,86,60,86,64) -hasLocation(#21063,#21064) -enclosingStmt(#21063,#21028) -exprContainers(#21063,#20850) -literals("never","never",#21063) -#21065=* -stmts(#21065,35,#20850,8,"type T1 ... ing }>;") -#21066=@"loc,{#10000},87,3,87,43" -locations_default(#21066,#10000,87,3,87,43) -hasLocation(#21065,#21066) -stmtContainers(#21065,#20850) -#21067=* -typeexprs(#21067,1,#21065,0,"T10") -#21068=@"loc,{#10000},87,8,87,10" -locations_default(#21068,#10000,87,8,87,10) -hasLocation(#21067,#21068) -enclosingStmt(#21067,#21065) -exprContainers(#21067,#20850) -literals("T10","T10",#21067) -typedecl(#21067,#20863) -#21069=* -typeexprs(#21069,14,#21065,1,"Foo<{ a ... ring }>") -#21070=@"loc,{#10000},87,14,87,42" -locations_default(#21070,#10000,87,14,87,42) -hasLocation(#21069,#21070) -enclosingStmt(#21069,#21065) -exprContainers(#21069,#20850) -#21071=* -typeexprs(#21071,0,#21069,-1,"Foo") -#21072=@"loc,{#10000},87,14,87,16" -locations_default(#21072,#10000,87,14,87,16) -hasLocation(#21071,#21072) -enclosingStmt(#21071,#21065) -exprContainers(#21071,#20850) -literals("Foo","Foo",#21071) -typebind(#21071,#20862) -#21073=* -typeexprs(#21073,21,#21069,0,"{ a: st ... tring }") -#21074=@"loc,{#10000},87,18,87,41" -locations_default(#21074,#10000,87,18,87,41) -hasLocation(#21073,#21074) -enclosingStmt(#21073,#21065) -exprContainers(#21073,#20850) -#21075=* -properties(#21075,#21073,0,8,"a: string,") -#21076=@"loc,{#10000},87,20,87,29" -locations_default(#21076,#10000,87,20,87,29) -hasLocation(#21075,#21076) -#21077=* -exprs(#21077,0,#21075,0,"a") -#21078=@"loc,{#10000},87,20,87,20" -locations_default(#21078,#10000,87,20,87,20) -hasLocation(#21077,#21078) -enclosingStmt(#21077,#21065) -exprContainers(#21077,#20850) -literals("a","a",#21077) -isAbstractMember(#21075) -#21079=* -typeexprs(#21079,2,#21075,2,"string") -#21080=@"loc,{#10000},87,23,87,28" -locations_default(#21080,#10000,87,23,87,28) -hasLocation(#21079,#21080) -enclosingStmt(#21079,#21065) -exprContainers(#21079,#20850) -literals("string","string",#21079) -#21081=* -properties(#21081,#21073,1,8,"b: string") -#21082=@"loc,{#10000},87,31,87,39" -locations_default(#21082,#10000,87,31,87,39) -hasLocation(#21081,#21082) -#21083=* -exprs(#21083,0,#21081,0,"b") -#21084=@"loc,{#10000},87,31,87,31" -locations_default(#21084,#10000,87,31,87,31) -hasLocation(#21083,#21084) -enclosingStmt(#21083,#21065) -exprContainers(#21083,#20850) -literals("b","b",#21083) -isAbstractMember(#21081) -#21085=* -typeexprs(#21085,2,#21081,2,"string") -#21086=@"loc,{#10000},87,34,87,39" -locations_default(#21086,#10000,87,34,87,39) -hasLocation(#21085,#21086) -enclosingStmt(#21085,#21065) -exprContainers(#21085,#20850) -literals("string","string",#21085) -#21087=* -stmts(#21087,35,#20850,9,"type T1 ... ber }>;") -#21088=@"loc,{#10000},88,3,88,43" -locations_default(#21088,#10000,88,3,88,43) -hasLocation(#21087,#21088) -stmtContainers(#21087,#20850) -#21089=* -typeexprs(#21089,1,#21087,0,"T11") -#21090=@"loc,{#10000},88,8,88,10" -locations_default(#21090,#10000,88,8,88,10) -hasLocation(#21089,#21090) -enclosingStmt(#21089,#21087) -exprContainers(#21089,#20850) -literals("T11","T11",#21089) -typedecl(#21089,#20864) -#21091=* -typeexprs(#21091,14,#21087,1,"Foo<{ a ... mber }>") -#21092=@"loc,{#10000},88,14,88,42" -locations_default(#21092,#10000,88,14,88,42) -hasLocation(#21091,#21092) -enclosingStmt(#21091,#21087) -exprContainers(#21091,#20850) -#21093=* -typeexprs(#21093,0,#21091,-1,"Foo") -#21094=@"loc,{#10000},88,14,88,16" -locations_default(#21094,#10000,88,14,88,16) -hasLocation(#21093,#21094) -enclosingStmt(#21093,#21087) -exprContainers(#21093,#20850) -literals("Foo","Foo",#21093) -typebind(#21093,#20862) -#21095=* -typeexprs(#21095,21,#21091,0,"{ a: st ... umber }") -#21096=@"loc,{#10000},88,18,88,41" -locations_default(#21096,#10000,88,18,88,41) -hasLocation(#21095,#21096) -enclosingStmt(#21095,#21087) -exprContainers(#21095,#20850) -#21097=* -properties(#21097,#21095,0,8,"a: string,") -#21098=@"loc,{#10000},88,20,88,29" -locations_default(#21098,#10000,88,20,88,29) -hasLocation(#21097,#21098) -#21099=* -exprs(#21099,0,#21097,0,"a") -#21100=@"loc,{#10000},88,20,88,20" -locations_default(#21100,#10000,88,20,88,20) -hasLocation(#21099,#21100) -enclosingStmt(#21099,#21087) -exprContainers(#21099,#20850) -literals("a","a",#21099) -isAbstractMember(#21097) -#21101=* -typeexprs(#21101,2,#21097,2,"string") -#21102=@"loc,{#10000},88,23,88,28" -locations_default(#21102,#10000,88,23,88,28) -hasLocation(#21101,#21102) -enclosingStmt(#21101,#21087) -exprContainers(#21101,#20850) -literals("string","string",#21101) -#21103=* -properties(#21103,#21095,1,8,"b: number") -#21104=@"loc,{#10000},88,31,88,39" -locations_default(#21104,#10000,88,31,88,39) -hasLocation(#21103,#21104) -#21105=* -exprs(#21105,0,#21103,0,"b") -#21106=@"loc,{#10000},88,31,88,31" -locations_default(#21106,#10000,88,31,88,31) -hasLocation(#21105,#21106) -enclosingStmt(#21105,#21087) -exprContainers(#21105,#20850) -literals("b","b",#21105) -isAbstractMember(#21103) -#21107=* -typeexprs(#21107,2,#21103,2,"number") -#21108=@"loc,{#10000},88,34,88,39" -locations_default(#21108,#10000,88,34,88,39) -hasLocation(#21107,#21108) -enclosingStmt(#21107,#21087) -exprContainers(#21107,#20850) -literals("number","number",#21107) -#21109=* -stmts(#21109,35,#20850,10,"type Ba ... never;") -#21110=@"loc,{#10000},90,3,90,91" -locations_default(#21110,#10000,90,3,90,91) -hasLocation(#21109,#21110) -stmtContainers(#21109,#20850) -#21111=* -typeexprs(#21111,1,#21109,0,"Bar") -#21112=@"loc,{#10000},90,8,90,10" -locations_default(#21112,#10000,90,8,90,10) -hasLocation(#21111,#21112) -enclosingStmt(#21111,#21109) -exprContainers(#21111,#20850) -literals("Bar","Bar",#21111) -typedecl(#21111,#20865) -#21113=* -scopes(#21113,12) -scopenodes(#21109,#21113) -scopenesting(#21113,#20854) -#21114=@"local_type_name;{T};{#21113}" -local_type_names(#21114,"T",#21113) -#21115=* -typeexprs(#21115,22,#21109,2,"T") -#21116=@"loc,{#10000},90,12,90,12" -locations_default(#21116,#10000,90,12,90,12) -hasLocation(#21115,#21116) -enclosingStmt(#21115,#21109) -exprContainers(#21115,#20850) -#21117=* -typeexprs(#21117,1,#21115,0,"T") -hasLocation(#21117,#21116) -enclosingStmt(#21117,#21109) -exprContainers(#21117,#20850) -literals("T","T",#21117) -typedecl(#21117,#21114) +tokeninfo(#21060,6,#20001,389,"T") +#21061=@"loc,{#10000},46,15,46,15" +locations_default(#21061,#10000,46,15,46,15) +hasLocation(#21060,#21061) +#21062=* +tokeninfo(#21062,7,#20001,390,"extends") +#21063=@"loc,{#10000},46,17,46,23" +locations_default(#21063,#10000,46,17,46,23) +hasLocation(#21062,#21063) +#21064=* +tokeninfo(#21064,7,#20001,391,"string") +#21065=@"loc,{#10000},46,25,46,30" +locations_default(#21065,#10000,46,25,46,30) +hasLocation(#21064,#21065) +#21066=* +tokeninfo(#21066,8,#20001,392,"|") +#21067=@"loc,{#10000},46,32,46,32" +locations_default(#21067,#10000,46,32,46,32) +hasLocation(#21066,#21067) +#21068=* +tokeninfo(#21068,7,#20001,393,"undefined") +#21069=@"loc,{#10000},46,34,46,42" +locations_default(#21069,#10000,46,34,46,42) +hasLocation(#21068,#21069) +#21070=* +tokeninfo(#21070,8,#20001,394,">") +#21071=@"loc,{#10000},46,43,46,43" +locations_default(#21071,#10000,46,43,46,43) +hasLocation(#21070,#21071) +#21072=* +tokeninfo(#21072,8,#20001,395,"(") +#21073=@"loc,{#10000},46,44,46,44" +locations_default(#21073,#10000,46,44,46,44) +hasLocation(#21072,#21073) +#21074=* +tokeninfo(#21074,6,#20001,396,"x") +#21075=@"loc,{#10000},46,45,46,45" +locations_default(#21075,#10000,46,45,46,45) +hasLocation(#21074,#21075) +#21076=* +tokeninfo(#21076,8,#20001,397,":") +#21077=@"loc,{#10000},46,46,46,46" +locations_default(#21077,#10000,46,46,46,46) +hasLocation(#21076,#21077) +#21078=* +tokeninfo(#21078,6,#20001,398,"T") +#21079=@"loc,{#10000},46,48,46,48" +locations_default(#21079,#10000,46,48,46,48) +hasLocation(#21078,#21079) +#21080=* +tokeninfo(#21080,8,#20001,399,",") +#21081=@"loc,{#10000},46,49,46,49" +locations_default(#21081,#10000,46,49,46,49) +hasLocation(#21080,#21081) +#21082=* +tokeninfo(#21082,6,#20001,400,"y") +#21083=@"loc,{#10000},46,51,46,51" +locations_default(#21083,#10000,46,51,46,51) +hasLocation(#21082,#21083) +#21084=* +tokeninfo(#21084,8,#20001,401,":") +#21085=@"loc,{#10000},46,52,46,52" +locations_default(#21085,#10000,46,52,46,52) +hasLocation(#21084,#21085) +#21086=* +tokeninfo(#21086,6,#20001,402,"NonNullable") +#21087=@"loc,{#10000},46,54,46,64" +locations_default(#21087,#10000,46,54,46,64) +hasLocation(#21086,#21087) +#21088=* +tokeninfo(#21088,8,#20001,403,"<") +#21089=@"loc,{#10000},46,65,46,65" +locations_default(#21089,#10000,46,65,46,65) +hasLocation(#21088,#21089) +#21090=* +tokeninfo(#21090,6,#20001,404,"T") +#21091=@"loc,{#10000},46,66,46,66" +locations_default(#21091,#10000,46,66,46,66) +hasLocation(#21090,#21091) +#21092=* +tokeninfo(#21092,8,#20001,405,">") +#21093=@"loc,{#10000},46,67,46,67" +locations_default(#21093,#10000,46,67,46,67) +hasLocation(#21092,#21093) +#21094=* +tokeninfo(#21094,8,#20001,406,")") +#21095=@"loc,{#10000},46,68,46,68" +locations_default(#21095,#10000,46,68,46,68) +hasLocation(#21094,#21095) +#21096=* +tokeninfo(#21096,8,#20001,407,"{") +#21097=@"loc,{#10000},46,70,46,70" +locations_default(#21097,#10000,46,70,46,70) +hasLocation(#21096,#21097) +#21098=* +tokeninfo(#21098,6,#20001,408,"x") +#21099=@"loc,{#10000},47,7,47,7" +locations_default(#21099,#10000,47,7,47,7) +hasLocation(#21098,#21099) +#21100=* +tokeninfo(#21100,8,#20001,409,"=") +#21101=@"loc,{#10000},47,9,47,9" +locations_default(#21101,#10000,47,9,47,9) +hasLocation(#21100,#21101) +#21102=* +tokeninfo(#21102,6,#20001,410,"y") +#21103=@"loc,{#10000},47,11,47,11" +locations_default(#21103,#10000,47,11,47,11) +hasLocation(#21102,#21103) +#21104=* +tokeninfo(#21104,8,#20001,411,";") +#21105=@"loc,{#10000},47,12,47,12" +locations_default(#21105,#10000,47,12,47,12) +hasLocation(#21104,#21105) +#21106=* +tokeninfo(#21106,7,#20001,412,"let") +#21107=@"loc,{#10000},48,7,48,9" +locations_default(#21107,#10000,48,7,48,9) +hasLocation(#21106,#21107) +next_token(#20044,#21106) +#21108=* +tokeninfo(#21108,6,#20001,413,"s2") +#21109=@"loc,{#10000},48,11,48,12" +locations_default(#21109,#10000,48,11,48,12) +hasLocation(#21108,#21109) +#21110=* +tokeninfo(#21110,8,#20001,414,":") +#21111=@"loc,{#10000},48,13,48,13" +locations_default(#21111,#10000,48,13,48,13) +hasLocation(#21110,#21111) +#21112=* +tokeninfo(#21112,7,#20001,415,"string") +#21113=@"loc,{#10000},48,15,48,20" +locations_default(#21113,#10000,48,15,48,20) +hasLocation(#21112,#21113) +#21114=* +tokeninfo(#21114,8,#20001,416,"=") +#21115=@"loc,{#10000},48,22,48,22" +locations_default(#21115,#10000,48,22,48,22) +hasLocation(#21114,#21115) +#21116=* +tokeninfo(#21116,6,#20001,417,"y") +#21117=@"loc,{#10000},48,24,48,24" +locations_default(#21117,#10000,48,24,48,24) +hasLocation(#21116,#21117) #21118=* -typeexprs(#21118,28,#21109,1,"T exten ... : never") -#21119=@"loc,{#10000},90,17,90,90" -locations_default(#21119,#10000,90,17,90,90) +tokeninfo(#21118,8,#20001,418,";") +#21119=@"loc,{#10000},48,25,48,25" +locations_default(#21119,#10000,48,25,48,25) hasLocation(#21118,#21119) -enclosingStmt(#21118,#21109) -exprContainers(#21118,#20850) #21120=* -typeexprs(#21120,0,#21118,0,"T") -#21121=@"loc,{#10000},90,17,90,17" -locations_default(#21121,#10000,90,17,90,17) +tokeninfo(#21120,8,#20001,419,"}") +#21121=@"loc,{#10000},49,3,49,3" +locations_default(#21121,#10000,49,3,49,3) hasLocation(#21120,#21121) -enclosingStmt(#21120,#21109) -exprContainers(#21120,#20850) -literals("T","T",#21120) -typebind(#21120,#21114) +next_token(#20046,#21120) #21122=* -typeexprs(#21122,21,#21118,1,"{ a: (x ... void }") -#21123=@"loc,{#10000},90,27,90,78" -locations_default(#21123,#10000,90,27,90,78) +tokeninfo(#21122,7,#20001,420,"type") +#21123=@"loc,{#10000},51,3,51,6" +locations_default(#21123,#10000,51,3,51,6) hasLocation(#21122,#21123) -enclosingStmt(#21122,#21109) -exprContainers(#21122,#20850) #21124=* -properties(#21124,#21122,0,8,"a: (x: ... > void,") -#21125=@"loc,{#10000},90,29,90,52" -locations_default(#21125,#10000,90,29,90,52) +tokeninfo(#21124,6,#20001,421,"FunctionPropertyNames") +#21125=@"loc,{#10000},51,8,51,28" +locations_default(#21125,#10000,51,8,51,28) hasLocation(#21124,#21125) #21126=* -exprs(#21126,0,#21124,0,"a") -#21127=@"loc,{#10000},90,29,90,29" -locations_default(#21127,#10000,90,29,90,29) +tokeninfo(#21126,8,#20001,422,"<") +#21127=@"loc,{#10000},51,29,51,29" +locations_default(#21127,#10000,51,29,51,29) hasLocation(#21126,#21127) -enclosingStmt(#21126,#21109) -exprContainers(#21126,#20850) -literals("a","a",#21126) -isAbstractMember(#21124) #21128=* -typeexprs(#21128,23,#21124,2,"(x: infer U) => void") -#21129=@"loc,{#10000},90,32,90,51" -locations_default(#21129,#10000,90,32,90,51) +tokeninfo(#21128,6,#20001,423,"T") +#21129=@"loc,{#10000},51,30,51,30" +locations_default(#21129,#10000,51,30,51,30) hasLocation(#21128,#21129) -enclosingStmt(#21128,#21109) -exprContainers(#21128,#20850) #21130=* -exprs(#21130,9,#21128,0,"(x: infer U) => void") -hasLocation(#21130,#21129) -enclosingStmt(#21130,#21109) -exprContainers(#21130,#20850) -#21131=* -scopes(#21131,1) -scopenodes(#21130,#21131) -scopenesting(#21131,#21113) -#21132=@"var;{x};{#21131}" -variables(#21132,"x",#21131) -#21133=* -exprs(#21133,78,#21130,0,"x") -#21134=@"loc,{#10000},90,33,90,33" -locations_default(#21134,#10000,90,33,90,33) -hasLocation(#21133,#21134) -exprContainers(#21133,#21130) -literals("x","x",#21133) -decl(#21133,#21132) -#21135=@"var;{arguments};{#21131}" -variables(#21135,"arguments",#21131) -isArgumentsObject(#21135) +tokeninfo(#21130,8,#20001,424,">") +#21131=@"loc,{#10000},51,31,51,31" +locations_default(#21131,#10000,51,31,51,31) +hasLocation(#21130,#21131) +#21132=* +tokeninfo(#21132,8,#20001,425,"=") +#21133=@"loc,{#10000},51,33,51,33" +locations_default(#21133,#10000,51,33,51,33) +hasLocation(#21132,#21133) +#21134=* +tokeninfo(#21134,8,#20001,426,"{") +#21135=@"loc,{#10000},51,35,51,35" +locations_default(#21135,#10000,51,35,51,35) +hasLocation(#21134,#21135) #21136=* -typeexprs(#21136,2,#21130,-3,"void") -#21137=@"loc,{#10000},90,48,90,51" -locations_default(#21137,#10000,90,48,90,51) +tokeninfo(#21136,8,#20001,427,"[") +#21137=@"loc,{#10000},51,37,51,37" +locations_default(#21137,#10000,51,37,51,37) hasLocation(#21136,#21137) -exprContainers(#21136,#21130) -literals("void","void",#21136) #21138=* -typeexprs(#21138,29,#21130,-6,"infer U") -#21139=@"loc,{#10000},90,36,90,42" -locations_default(#21139,#10000,90,36,90,42) +tokeninfo(#21138,6,#20001,428,"K") +#21139=@"loc,{#10000},51,38,51,38" +locations_default(#21139,#10000,51,38,51,38) hasLocation(#21138,#21139) -exprContainers(#21138,#21130) #21140=* -typeexprs(#21140,22,#21138,0,"U") -#21141=@"loc,{#10000},90,42,90,42" -locations_default(#21141,#10000,90,42,90,42) +tokeninfo(#21140,7,#20001,429,"in") +#21141=@"loc,{#10000},51,40,51,41" +locations_default(#21141,#10000,51,40,51,41) hasLocation(#21140,#21141) -exprContainers(#21140,#21130) #21142=* -typeexprs(#21142,1,#21140,0,"U") -hasLocation(#21142,#21141) -exprContainers(#21142,#21130) -literals("U","U",#21142) -numlines(#21130,1,1,0) -#21143=* -properties(#21143,#21122,1,8,"b: (x: ... => void") -#21144=@"loc,{#10000},90,54,90,76" -locations_default(#21144,#10000,90,54,90,76) -hasLocation(#21143,#21144) -#21145=* -exprs(#21145,0,#21143,0,"b") -#21146=@"loc,{#10000},90,54,90,54" -locations_default(#21146,#10000,90,54,90,54) -hasLocation(#21145,#21146) -enclosingStmt(#21145,#21109) -exprContainers(#21145,#20850) -literals("b","b",#21145) -isAbstractMember(#21143) -#21147=* -typeexprs(#21147,23,#21143,2,"(x: infer U) => void") -#21148=@"loc,{#10000},90,57,90,76" -locations_default(#21148,#10000,90,57,90,76) -hasLocation(#21147,#21148) -enclosingStmt(#21147,#21109) -exprContainers(#21147,#20850) -#21149=* -exprs(#21149,9,#21147,0,"(x: infer U) => void") -hasLocation(#21149,#21148) -enclosingStmt(#21149,#21109) -exprContainers(#21149,#20850) +tokeninfo(#21142,7,#20001,430,"keyof") +#21143=@"loc,{#10000},51,43,51,47" +locations_default(#21143,#10000,51,43,51,47) +hasLocation(#21142,#21143) +#21144=* +tokeninfo(#21144,6,#20001,431,"T") +#21145=@"loc,{#10000},51,49,51,49" +locations_default(#21145,#10000,51,49,51,49) +hasLocation(#21144,#21145) +#21146=* +tokeninfo(#21146,8,#20001,432,"]") +#21147=@"loc,{#10000},51,50,51,50" +locations_default(#21147,#10000,51,50,51,50) +hasLocation(#21146,#21147) +#21148=* +tokeninfo(#21148,8,#20001,433,":") +#21149=@"loc,{#10000},51,51,51,51" +locations_default(#21149,#10000,51,51,51,51) +hasLocation(#21148,#21149) #21150=* -scopes(#21150,1) -scopenodes(#21149,#21150) -scopenesting(#21150,#21113) -#21151=@"var;{x};{#21150}" -variables(#21151,"x",#21150) +tokeninfo(#21150,6,#20001,434,"T") +#21151=@"loc,{#10000},51,53,51,53" +locations_default(#21151,#10000,51,53,51,53) +hasLocation(#21150,#21151) #21152=* -exprs(#21152,78,#21149,0,"x") -#21153=@"loc,{#10000},90,58,90,58" -locations_default(#21153,#10000,90,58,90,58) +tokeninfo(#21152,8,#20001,435,"[") +#21153=@"loc,{#10000},51,54,51,54" +locations_default(#21153,#10000,51,54,51,54) hasLocation(#21152,#21153) -exprContainers(#21152,#21149) -literals("x","x",#21152) -decl(#21152,#21151) -#21154=@"var;{arguments};{#21150}" -variables(#21154,"arguments",#21150) -isArgumentsObject(#21154) -#21155=* -typeexprs(#21155,2,#21149,-3,"void") -#21156=@"loc,{#10000},90,73,90,76" -locations_default(#21156,#10000,90,73,90,76) -hasLocation(#21155,#21156) -exprContainers(#21155,#21149) -literals("void","void",#21155) -#21157=* -typeexprs(#21157,29,#21149,-6,"infer U") -#21158=@"loc,{#10000},90,61,90,67" -locations_default(#21158,#10000,90,61,90,67) -hasLocation(#21157,#21158) -exprContainers(#21157,#21149) -#21159=* -typeexprs(#21159,22,#21157,0,"U") -#21160=@"loc,{#10000},90,67,90,67" -locations_default(#21160,#10000,90,67,90,67) -hasLocation(#21159,#21160) -exprContainers(#21159,#21149) -#21161=* -typeexprs(#21161,1,#21159,0,"U") -hasLocation(#21161,#21160) -exprContainers(#21161,#21149) -literals("U","U",#21161) -numlines(#21149,1,1,0) +#21154=* +tokeninfo(#21154,6,#20001,436,"K") +#21155=@"loc,{#10000},51,55,51,55" +locations_default(#21155,#10000,51,55,51,55) +hasLocation(#21154,#21155) +#21156=* +tokeninfo(#21156,8,#20001,437,"]") +#21157=@"loc,{#10000},51,56,51,56" +locations_default(#21157,#10000,51,56,51,56) +hasLocation(#21156,#21157) +#21158=* +tokeninfo(#21158,7,#20001,438,"extends") +#21159=@"loc,{#10000},51,58,51,64" +locations_default(#21159,#10000,51,58,51,64) +hasLocation(#21158,#21159) +#21160=* +tokeninfo(#21160,6,#20001,439,"Function") +#21161=@"loc,{#10000},51,66,51,73" +locations_default(#21161,#10000,51,66,51,73) +hasLocation(#21160,#21161) #21162=* -typeexprs(#21162,0,#21118,2,"U") -#21163=@"loc,{#10000},90,82,90,82" -locations_default(#21163,#10000,90,82,90,82) +tokeninfo(#21162,8,#20001,440,"?") +#21163=@"loc,{#10000},51,75,51,75" +locations_default(#21163,#10000,51,75,51,75) hasLocation(#21162,#21163) -enclosingStmt(#21162,#21109) -exprContainers(#21162,#20850) -literals("U","U",#21162) #21164=* -typeexprs(#21164,2,#21118,3,"never") -#21165=@"loc,{#10000},90,86,90,90" -locations_default(#21165,#10000,90,86,90,90) +tokeninfo(#21164,6,#20001,441,"K") +#21165=@"loc,{#10000},51,77,51,77" +locations_default(#21165,#10000,51,77,51,77) hasLocation(#21164,#21165) -enclosingStmt(#21164,#21109) -exprContainers(#21164,#20850) -literals("never","never",#21164) #21166=* -stmts(#21166,35,#20850,11,"type T2 ... oid }>;") -#21167=@"loc,{#10000},91,3,91,69" -locations_default(#21167,#10000,91,3,91,69) +tokeninfo(#21166,8,#20001,442,":") +#21167=@"loc,{#10000},51,79,51,79" +locations_default(#21167,#10000,51,79,51,79) hasLocation(#21166,#21167) -stmtContainers(#21166,#20850) #21168=* -typeexprs(#21168,1,#21166,0,"T20") -#21169=@"loc,{#10000},91,8,91,10" -locations_default(#21169,#10000,91,8,91,10) +tokeninfo(#21168,7,#20001,443,"never") +#21169=@"loc,{#10000},51,81,51,85" +locations_default(#21169,#10000,51,81,51,85) hasLocation(#21168,#21169) -enclosingStmt(#21168,#21166) -exprContainers(#21168,#20850) -literals("T20","T20",#21168) -typedecl(#21168,#20866) #21170=* -typeexprs(#21170,14,#21166,1,"Bar<{ a ... void }>") -#21171=@"loc,{#10000},91,14,91,68" -locations_default(#21171,#10000,91,14,91,68) +tokeninfo(#21170,8,#20001,444,"}") +#21171=@"loc,{#10000},51,87,51,87" +locations_default(#21171,#10000,51,87,51,87) hasLocation(#21170,#21171) -enclosingStmt(#21170,#21166) -exprContainers(#21170,#20850) #21172=* -typeexprs(#21172,0,#21170,-1,"Bar") -#21173=@"loc,{#10000},91,14,91,16" -locations_default(#21173,#10000,91,14,91,16) +tokeninfo(#21172,8,#20001,445,"[") +#21173=@"loc,{#10000},51,88,51,88" +locations_default(#21173,#10000,51,88,51,88) hasLocation(#21172,#21173) -enclosingStmt(#21172,#21166) -exprContainers(#21172,#20850) -literals("Bar","Bar",#21172) -typebind(#21172,#20865) #21174=* -typeexprs(#21174,21,#21170,0,"{ a: (x ... void }") -#21175=@"loc,{#10000},91,18,91,67" -locations_default(#21175,#10000,91,18,91,67) +tokeninfo(#21174,7,#20001,446,"keyof") +#21175=@"loc,{#10000},51,89,51,93" +locations_default(#21175,#10000,51,89,51,93) hasLocation(#21174,#21175) -enclosingStmt(#21174,#21166) -exprContainers(#21174,#20850) #21176=* -properties(#21176,#21174,0,8,"a: (x: ... > void,") -#21177=@"loc,{#10000},91,20,91,42" -locations_default(#21177,#10000,91,20,91,42) +tokeninfo(#21176,6,#20001,447,"T") +#21177=@"loc,{#10000},51,95,51,95" +locations_default(#21177,#10000,51,95,51,95) hasLocation(#21176,#21177) #21178=* -exprs(#21178,0,#21176,0,"a") -#21179=@"loc,{#10000},91,20,91,20" -locations_default(#21179,#10000,91,20,91,20) +tokeninfo(#21178,8,#20001,448,"]") +#21179=@"loc,{#10000},51,96,51,96" +locations_default(#21179,#10000,51,96,51,96) hasLocation(#21178,#21179) -enclosingStmt(#21178,#21166) -exprContainers(#21178,#20850) -literals("a","a",#21178) -isAbstractMember(#21176) #21180=* -typeexprs(#21180,23,#21176,2,"(x: string) => void") -#21181=@"loc,{#10000},91,23,91,41" -locations_default(#21181,#10000,91,23,91,41) +tokeninfo(#21180,8,#20001,449,";") +#21181=@"loc,{#10000},51,97,51,97" +locations_default(#21181,#10000,51,97,51,97) hasLocation(#21180,#21181) -enclosingStmt(#21180,#21166) -exprContainers(#21180,#20850) #21182=* -exprs(#21182,9,#21180,0,"(x: string) => void") -hasLocation(#21182,#21181) -enclosingStmt(#21182,#21166) -exprContainers(#21182,#20850) -#21183=* -scopes(#21183,1) -scopenodes(#21182,#21183) -scopenesting(#21183,#20854) -#21184=@"var;{x};{#21183}" -variables(#21184,"x",#21183) -#21185=* -exprs(#21185,78,#21182,0,"x") -#21186=@"loc,{#10000},91,24,91,24" -locations_default(#21186,#10000,91,24,91,24) -hasLocation(#21185,#21186) -exprContainers(#21185,#21182) -literals("x","x",#21185) -decl(#21185,#21184) -#21187=@"var;{arguments};{#21183}" -variables(#21187,"arguments",#21183) -isArgumentsObject(#21187) +tokeninfo(#21182,7,#20001,450,"type") +#21183=@"loc,{#10000},52,3,52,6" +locations_default(#21183,#10000,52,3,52,6) +hasLocation(#21182,#21183) +#21184=* +tokeninfo(#21184,6,#20001,451,"FunctionProperties") +#21185=@"loc,{#10000},52,8,52,25" +locations_default(#21185,#10000,52,8,52,25) +hasLocation(#21184,#21185) +#21186=* +tokeninfo(#21186,8,#20001,452,"<") +#21187=@"loc,{#10000},52,26,52,26" +locations_default(#21187,#10000,52,26,52,26) +hasLocation(#21186,#21187) #21188=* -typeexprs(#21188,2,#21182,-3,"void") -#21189=@"loc,{#10000},91,38,91,41" -locations_default(#21189,#10000,91,38,91,41) +tokeninfo(#21188,6,#20001,453,"T") +#21189=@"loc,{#10000},52,27,52,27" +locations_default(#21189,#10000,52,27,52,27) hasLocation(#21188,#21189) -exprContainers(#21188,#21182) -literals("void","void",#21188) #21190=* -typeexprs(#21190,2,#21182,-6,"string") -#21191=@"loc,{#10000},91,27,91,32" -locations_default(#21191,#10000,91,27,91,32) +tokeninfo(#21190,8,#20001,454,">") +#21191=@"loc,{#10000},52,28,52,28" +locations_default(#21191,#10000,52,28,52,28) hasLocation(#21190,#21191) -exprContainers(#21190,#21182) -literals("string","string",#21190) -numlines(#21182,1,1,0) #21192=* -properties(#21192,#21174,1,8,"b: (x: ... => void") -#21193=@"loc,{#10000},91,44,91,65" -locations_default(#21193,#10000,91,44,91,65) +tokeninfo(#21192,8,#20001,455,"=") +#21193=@"loc,{#10000},52,30,52,30" +locations_default(#21193,#10000,52,30,52,30) hasLocation(#21192,#21193) #21194=* -exprs(#21194,0,#21192,0,"b") -#21195=@"loc,{#10000},91,44,91,44" -locations_default(#21195,#10000,91,44,91,44) +tokeninfo(#21194,6,#20001,456,"Pick") +#21195=@"loc,{#10000},52,32,52,35" +locations_default(#21195,#10000,52,32,52,35) hasLocation(#21194,#21195) -enclosingStmt(#21194,#21166) -exprContainers(#21194,#20850) -literals("b","b",#21194) -isAbstractMember(#21192) #21196=* -typeexprs(#21196,23,#21192,2,"(x: string) => void") -#21197=@"loc,{#10000},91,47,91,65" -locations_default(#21197,#10000,91,47,91,65) +tokeninfo(#21196,8,#20001,457,"<") +#21197=@"loc,{#10000},52,36,52,36" +locations_default(#21197,#10000,52,36,52,36) hasLocation(#21196,#21197) -enclosingStmt(#21196,#21166) -exprContainers(#21196,#20850) #21198=* -exprs(#21198,9,#21196,0,"(x: string) => void") -hasLocation(#21198,#21197) -enclosingStmt(#21198,#21166) -exprContainers(#21198,#20850) -#21199=* -scopes(#21199,1) -scopenodes(#21198,#21199) -scopenesting(#21199,#20854) -#21200=@"var;{x};{#21199}" -variables(#21200,"x",#21199) -#21201=* -exprs(#21201,78,#21198,0,"x") -#21202=@"loc,{#10000},91,48,91,48" -locations_default(#21202,#10000,91,48,91,48) -hasLocation(#21201,#21202) -exprContainers(#21201,#21198) -literals("x","x",#21201) -decl(#21201,#21200) -#21203=@"var;{arguments};{#21199}" -variables(#21203,"arguments",#21199) -isArgumentsObject(#21203) +tokeninfo(#21198,6,#20001,458,"T") +#21199=@"loc,{#10000},52,37,52,37" +locations_default(#21199,#10000,52,37,52,37) +hasLocation(#21198,#21199) +#21200=* +tokeninfo(#21200,8,#20001,459,",") +#21201=@"loc,{#10000},52,38,52,38" +locations_default(#21201,#10000,52,38,52,38) +hasLocation(#21200,#21201) +#21202=* +tokeninfo(#21202,6,#20001,460,"FunctionPropertyNames") +#21203=@"loc,{#10000},52,40,52,60" +locations_default(#21203,#10000,52,40,52,60) +hasLocation(#21202,#21203) #21204=* -typeexprs(#21204,2,#21198,-3,"void") -#21205=@"loc,{#10000},91,62,91,65" -locations_default(#21205,#10000,91,62,91,65) +tokeninfo(#21204,8,#20001,461,"<") +#21205=@"loc,{#10000},52,61,52,61" +locations_default(#21205,#10000,52,61,52,61) hasLocation(#21204,#21205) -exprContainers(#21204,#21198) -literals("void","void",#21204) #21206=* -typeexprs(#21206,2,#21198,-6,"string") -#21207=@"loc,{#10000},91,51,91,56" -locations_default(#21207,#10000,91,51,91,56) +tokeninfo(#21206,6,#20001,462,"T") +#21207=@"loc,{#10000},52,62,52,62" +locations_default(#21207,#10000,52,62,52,62) hasLocation(#21206,#21207) -exprContainers(#21206,#21198) -literals("string","string",#21206) -numlines(#21198,1,1,0) #21208=* -stmts(#21208,35,#20850,12,"type T2 ... oid }>;") -#21209=@"loc,{#10000},92,3,92,69" -locations_default(#21209,#10000,92,3,92,69) +tokeninfo(#21208,8,#20001,463,">") +#21209=@"loc,{#10000},52,63,52,63" +locations_default(#21209,#10000,52,63,52,63) hasLocation(#21208,#21209) -stmtContainers(#21208,#20850) #21210=* -typeexprs(#21210,1,#21208,0,"T21") -#21211=@"loc,{#10000},92,8,92,10" -locations_default(#21211,#10000,92,8,92,10) +tokeninfo(#21210,8,#20001,464,">") +#21211=@"loc,{#10000},52,64,52,64" +locations_default(#21211,#10000,52,64,52,64) hasLocation(#21210,#21211) -enclosingStmt(#21210,#21208) -exprContainers(#21210,#20850) -literals("T21","T21",#21210) -typedecl(#21210,#20867) #21212=* -typeexprs(#21212,14,#21208,1,"Bar<{ a ... void }>") -#21213=@"loc,{#10000},92,14,92,68" -locations_default(#21213,#10000,92,14,92,68) +tokeninfo(#21212,8,#20001,465,";") +#21213=@"loc,{#10000},52,65,52,65" +locations_default(#21213,#10000,52,65,52,65) hasLocation(#21212,#21213) -enclosingStmt(#21212,#21208) -exprContainers(#21212,#20850) #21214=* -typeexprs(#21214,0,#21212,-1,"Bar") -#21215=@"loc,{#10000},92,14,92,16" -locations_default(#21215,#10000,92,14,92,16) +tokeninfo(#21214,7,#20001,466,"type") +#21215=@"loc,{#10000},54,3,54,6" +locations_default(#21215,#10000,54,3,54,6) hasLocation(#21214,#21215) -enclosingStmt(#21214,#21208) -exprContainers(#21214,#20850) -literals("Bar","Bar",#21214) -typebind(#21214,#20865) #21216=* -typeexprs(#21216,21,#21212,0,"{ a: (x ... void }") -#21217=@"loc,{#10000},92,18,92,67" -locations_default(#21217,#10000,92,18,92,67) +tokeninfo(#21216,6,#20001,467,"NonFunctionPropertyNames") +#21217=@"loc,{#10000},54,8,54,31" +locations_default(#21217,#10000,54,8,54,31) hasLocation(#21216,#21217) -enclosingStmt(#21216,#21208) -exprContainers(#21216,#20850) #21218=* -properties(#21218,#21216,0,8,"a: (x: ... > void,") -#21219=@"loc,{#10000},92,20,92,42" -locations_default(#21219,#10000,92,20,92,42) +tokeninfo(#21218,8,#20001,468,"<") +#21219=@"loc,{#10000},54,32,54,32" +locations_default(#21219,#10000,54,32,54,32) hasLocation(#21218,#21219) #21220=* -exprs(#21220,0,#21218,0,"a") -#21221=@"loc,{#10000},92,20,92,20" -locations_default(#21221,#10000,92,20,92,20) +tokeninfo(#21220,6,#20001,469,"T") +#21221=@"loc,{#10000},54,33,54,33" +locations_default(#21221,#10000,54,33,54,33) hasLocation(#21220,#21221) -enclosingStmt(#21220,#21208) -exprContainers(#21220,#20850) -literals("a","a",#21220) -isAbstractMember(#21218) #21222=* -typeexprs(#21222,23,#21218,2,"(x: string) => void") -#21223=@"loc,{#10000},92,23,92,41" -locations_default(#21223,#10000,92,23,92,41) +tokeninfo(#21222,8,#20001,470,">") +#21223=@"loc,{#10000},54,34,54,34" +locations_default(#21223,#10000,54,34,54,34) hasLocation(#21222,#21223) -enclosingStmt(#21222,#21208) -exprContainers(#21222,#20850) #21224=* -exprs(#21224,9,#21222,0,"(x: string) => void") -hasLocation(#21224,#21223) -enclosingStmt(#21224,#21208) -exprContainers(#21224,#20850) -#21225=* -scopes(#21225,1) -scopenodes(#21224,#21225) -scopenesting(#21225,#20854) -#21226=@"var;{x};{#21225}" -variables(#21226,"x",#21225) -#21227=* -exprs(#21227,78,#21224,0,"x") -#21228=@"loc,{#10000},92,24,92,24" -locations_default(#21228,#10000,92,24,92,24) -hasLocation(#21227,#21228) -exprContainers(#21227,#21224) -literals("x","x",#21227) -decl(#21227,#21226) -#21229=@"var;{arguments};{#21225}" -variables(#21229,"arguments",#21225) -isArgumentsObject(#21229) +tokeninfo(#21224,8,#20001,471,"=") +#21225=@"loc,{#10000},54,36,54,36" +locations_default(#21225,#10000,54,36,54,36) +hasLocation(#21224,#21225) +#21226=* +tokeninfo(#21226,8,#20001,472,"{") +#21227=@"loc,{#10000},54,38,54,38" +locations_default(#21227,#10000,54,38,54,38) +hasLocation(#21226,#21227) +#21228=* +tokeninfo(#21228,8,#20001,473,"[") +#21229=@"loc,{#10000},54,40,54,40" +locations_default(#21229,#10000,54,40,54,40) +hasLocation(#21228,#21229) #21230=* -typeexprs(#21230,2,#21224,-3,"void") -#21231=@"loc,{#10000},92,38,92,41" -locations_default(#21231,#10000,92,38,92,41) +tokeninfo(#21230,6,#20001,474,"K") +#21231=@"loc,{#10000},54,41,54,41" +locations_default(#21231,#10000,54,41,54,41) hasLocation(#21230,#21231) -exprContainers(#21230,#21224) -literals("void","void",#21230) #21232=* -typeexprs(#21232,2,#21224,-6,"string") -#21233=@"loc,{#10000},92,27,92,32" -locations_default(#21233,#10000,92,27,92,32) +tokeninfo(#21232,7,#20001,475,"in") +#21233=@"loc,{#10000},54,43,54,44" +locations_default(#21233,#10000,54,43,54,44) hasLocation(#21232,#21233) -exprContainers(#21232,#21224) -literals("string","string",#21232) -numlines(#21224,1,1,0) #21234=* -properties(#21234,#21216,1,8,"b: (x: ... => void") -#21235=@"loc,{#10000},92,44,92,65" -locations_default(#21235,#10000,92,44,92,65) +tokeninfo(#21234,7,#20001,476,"keyof") +#21235=@"loc,{#10000},54,46,54,50" +locations_default(#21235,#10000,54,46,54,50) hasLocation(#21234,#21235) #21236=* -exprs(#21236,0,#21234,0,"b") -#21237=@"loc,{#10000},92,44,92,44" -locations_default(#21237,#10000,92,44,92,44) +tokeninfo(#21236,6,#20001,477,"T") +#21237=@"loc,{#10000},54,52,54,52" +locations_default(#21237,#10000,54,52,54,52) hasLocation(#21236,#21237) -enclosingStmt(#21236,#21208) -exprContainers(#21236,#20850) -literals("b","b",#21236) -isAbstractMember(#21234) #21238=* -typeexprs(#21238,23,#21234,2,"(x: number) => void") -#21239=@"loc,{#10000},92,47,92,65" -locations_default(#21239,#10000,92,47,92,65) +tokeninfo(#21238,8,#20001,478,"]") +#21239=@"loc,{#10000},54,53,54,53" +locations_default(#21239,#10000,54,53,54,53) hasLocation(#21238,#21239) -enclosingStmt(#21238,#21208) -exprContainers(#21238,#20850) #21240=* -exprs(#21240,9,#21238,0,"(x: number) => void") -hasLocation(#21240,#21239) -enclosingStmt(#21240,#21208) -exprContainers(#21240,#20850) -#21241=* -scopes(#21241,1) -scopenodes(#21240,#21241) -scopenesting(#21241,#20854) -#21242=@"var;{x};{#21241}" -variables(#21242,"x",#21241) -#21243=* -exprs(#21243,78,#21240,0,"x") -#21244=@"loc,{#10000},92,48,92,48" -locations_default(#21244,#10000,92,48,92,48) -hasLocation(#21243,#21244) -exprContainers(#21243,#21240) -literals("x","x",#21243) -decl(#21243,#21242) -#21245=@"var;{arguments};{#21241}" -variables(#21245,"arguments",#21241) -isArgumentsObject(#21245) +tokeninfo(#21240,8,#20001,479,":") +#21241=@"loc,{#10000},54,54,54,54" +locations_default(#21241,#10000,54,54,54,54) +hasLocation(#21240,#21241) +#21242=* +tokeninfo(#21242,6,#20001,480,"T") +#21243=@"loc,{#10000},54,56,54,56" +locations_default(#21243,#10000,54,56,54,56) +hasLocation(#21242,#21243) +#21244=* +tokeninfo(#21244,8,#20001,481,"[") +#21245=@"loc,{#10000},54,57,54,57" +locations_default(#21245,#10000,54,57,54,57) +hasLocation(#21244,#21245) #21246=* -typeexprs(#21246,2,#21240,-3,"void") -#21247=@"loc,{#10000},92,62,92,65" -locations_default(#21247,#10000,92,62,92,65) +tokeninfo(#21246,6,#20001,482,"K") +#21247=@"loc,{#10000},54,58,54,58" +locations_default(#21247,#10000,54,58,54,58) hasLocation(#21246,#21247) -exprContainers(#21246,#21240) -literals("void","void",#21246) #21248=* -typeexprs(#21248,2,#21240,-6,"number") -#21249=@"loc,{#10000},92,51,92,56" -locations_default(#21249,#10000,92,51,92,56) +tokeninfo(#21248,8,#20001,483,"]") +#21249=@"loc,{#10000},54,59,54,59" +locations_default(#21249,#10000,54,59,54,59) hasLocation(#21248,#21249) -exprContainers(#21248,#21240) -literals("number","number",#21248) -numlines(#21240,1,1,0) #21250=* -stmts(#21250,17,#20850,13,"declare ... number;") -#21251=@"loc,{#10000},94,3,94,42" -locations_default(#21251,#10000,94,3,94,42) +tokeninfo(#21250,7,#20001,484,"extends") +#21251=@"loc,{#10000},54,61,54,67" +locations_default(#21251,#10000,54,61,54,67) hasLocation(#21250,#21251) -stmtContainers(#21250,#20850) -hasDeclareKeyword(#21250) #21252=* -exprs(#21252,78,#21250,-1,"foo") -#21253=@"loc,{#10000},94,20,94,22" -locations_default(#21253,#10000,94,20,94,22) +tokeninfo(#21252,6,#20001,485,"Function") +#21253=@"loc,{#10000},54,69,54,76" +locations_default(#21253,#10000,54,69,54,76) hasLocation(#21252,#21253) -exprContainers(#21252,#21250) -literals("foo","foo",#21252) -#21254=@"var;{foo};{#20000}" -variables(#21254,"foo",#20000) -decl(#21252,#21254) -#21255=* -scopes(#21255,1) -scopenodes(#21250,#21255) -scopenesting(#21255,#20854) -#21256=@"var;{x};{#21255}" -variables(#21256,"x",#21255) -#21257=* -exprs(#21257,78,#21250,0,"x") -#21258=@"loc,{#10000},94,24,94,24" -locations_default(#21258,#10000,94,24,94,24) -hasLocation(#21257,#21258) -exprContainers(#21257,#21250) -literals("x","x",#21257) -decl(#21257,#21256) -#21259=@"var;{arguments};{#21255}" -variables(#21259,"arguments",#21255) -isArgumentsObject(#21259) +#21254=* +tokeninfo(#21254,8,#20001,486,"?") +#21255=@"loc,{#10000},54,78,54,78" +locations_default(#21255,#10000,54,78,54,78) +hasLocation(#21254,#21255) +#21256=* +tokeninfo(#21256,7,#20001,487,"never") +#21257=@"loc,{#10000},54,80,54,84" +locations_default(#21257,#10000,54,80,54,84) +hasLocation(#21256,#21257) +#21258=* +tokeninfo(#21258,8,#20001,488,":") +#21259=@"loc,{#10000},54,86,54,86" +locations_default(#21259,#10000,54,86,54,86) +hasLocation(#21258,#21259) #21260=* -typeexprs(#21260,2,#21250,-3,"number") -#21261=@"loc,{#10000},94,36,94,41" -locations_default(#21261,#10000,94,36,94,41) +tokeninfo(#21260,6,#20001,489,"K") +#21261=@"loc,{#10000},54,88,54,88" +locations_default(#21261,#10000,54,88,54,88) hasLocation(#21260,#21261) -exprContainers(#21260,#21250) -literals("number","number",#21260) #21262=* -typeexprs(#21262,2,#21250,-6,"string") -#21263=@"loc,{#10000},94,27,94,32" -locations_default(#21263,#10000,94,27,94,32) +tokeninfo(#21262,8,#20001,490,"}") +#21263=@"loc,{#10000},54,90,54,90" +locations_default(#21263,#10000,54,90,54,90) hasLocation(#21262,#21263) -exprContainers(#21262,#21250) -literals("string","string",#21262) -numlines(#21250,1,1,0) #21264=* -stmts(#21264,17,#20850,14,"declare ... string;") -#21265=@"loc,{#10000},95,3,95,42" -locations_default(#21265,#10000,95,3,95,42) +tokeninfo(#21264,8,#20001,491,"[") +#21265=@"loc,{#10000},54,91,54,91" +locations_default(#21265,#10000,54,91,54,91) hasLocation(#21264,#21265) -stmtContainers(#21264,#20850) -hasDeclareKeyword(#21264) #21266=* -exprs(#21266,78,#21264,-1,"foo") -#21267=@"loc,{#10000},95,20,95,22" -locations_default(#21267,#10000,95,20,95,22) +tokeninfo(#21266,7,#20001,492,"keyof") +#21267=@"loc,{#10000},54,92,54,96" +locations_default(#21267,#10000,54,92,54,96) hasLocation(#21266,#21267) -exprContainers(#21266,#21264) -literals("foo","foo",#21266) -decl(#21266,#21254) #21268=* -scopes(#21268,1) -scopenodes(#21264,#21268) -scopenesting(#21268,#20854) -#21269=@"var;{x};{#21268}" -variables(#21269,"x",#21268) +tokeninfo(#21268,6,#20001,493,"T") +#21269=@"loc,{#10000},54,98,54,98" +locations_default(#21269,#10000,54,98,54,98) +hasLocation(#21268,#21269) #21270=* -exprs(#21270,78,#21264,0,"x") -#21271=@"loc,{#10000},95,24,95,24" -locations_default(#21271,#10000,95,24,95,24) +tokeninfo(#21270,8,#20001,494,"]") +#21271=@"loc,{#10000},54,99,54,99" +locations_default(#21271,#10000,54,99,54,99) hasLocation(#21270,#21271) -exprContainers(#21270,#21264) -literals("x","x",#21270) -decl(#21270,#21269) -#21272=@"var;{arguments};{#21268}" -variables(#21272,"arguments",#21268) -isArgumentsObject(#21272) -#21273=* -typeexprs(#21273,2,#21264,-3,"string") -#21274=@"loc,{#10000},95,36,95,41" -locations_default(#21274,#10000,95,36,95,41) -hasLocation(#21273,#21274) -exprContainers(#21273,#21264) -literals("string","string",#21273) -#21275=* -typeexprs(#21275,2,#21264,-6,"number") -#21276=@"loc,{#10000},95,27,95,32" -locations_default(#21276,#10000,95,27,95,32) -hasLocation(#21275,#21276) -exprContainers(#21275,#21264) -literals("number","number",#21275) -numlines(#21264,1,1,0) -#21277=* -stmts(#21277,17,#20850,15,"declare ... number;") -#21278=@"loc,{#10000},96,3,96,60" -locations_default(#21278,#10000,96,3,96,60) -hasLocation(#21277,#21278) -stmtContainers(#21277,#20850) -hasDeclareKeyword(#21277) -#21279=* -exprs(#21279,78,#21277,-1,"foo") -#21280=@"loc,{#10000},96,20,96,22" -locations_default(#21280,#10000,96,20,96,22) -hasLocation(#21279,#21280) -exprContainers(#21279,#21277) -literals("foo","foo",#21279) -decl(#21279,#21254) -#21281=* -scopes(#21281,1) -scopenodes(#21277,#21281) -scopenesting(#21281,#20854) -#21282=@"var;{x};{#21281}" -variables(#21282,"x",#21281) -#21283=* -exprs(#21283,78,#21277,0,"x") -#21284=@"loc,{#10000},96,24,96,24" -locations_default(#21284,#10000,96,24,96,24) -hasLocation(#21283,#21284) -exprContainers(#21283,#21277) -literals("x","x",#21283) -decl(#21283,#21282) -#21285=@"var;{arguments};{#21281}" -variables(#21285,"arguments",#21281) -isArgumentsObject(#21285) +#21272=* +tokeninfo(#21272,8,#20001,495,";") +#21273=@"loc,{#10000},54,100,54,100" +locations_default(#21273,#10000,54,100,54,100) +hasLocation(#21272,#21273) +#21274=* +tokeninfo(#21274,7,#20001,496,"type") +#21275=@"loc,{#10000},55,3,55,6" +locations_default(#21275,#10000,55,3,55,6) +hasLocation(#21274,#21275) +#21276=* +tokeninfo(#21276,6,#20001,497,"NonFunctionProperties") +#21277=@"loc,{#10000},55,8,55,28" +locations_default(#21277,#10000,55,8,55,28) +hasLocation(#21276,#21277) +#21278=* +tokeninfo(#21278,8,#20001,498,"<") +#21279=@"loc,{#10000},55,29,55,29" +locations_default(#21279,#10000,55,29,55,29) +hasLocation(#21278,#21279) +#21280=* +tokeninfo(#21280,6,#20001,499,"T") +#21281=@"loc,{#10000},55,30,55,30" +locations_default(#21281,#10000,55,30,55,30) +hasLocation(#21280,#21281) +#21282=* +tokeninfo(#21282,8,#20001,500,">") +#21283=@"loc,{#10000},55,31,55,31" +locations_default(#21283,#10000,55,31,55,31) +hasLocation(#21282,#21283) +#21284=* +tokeninfo(#21284,8,#20001,501,"=") +#21285=@"loc,{#10000},55,33,55,33" +locations_default(#21285,#10000,55,33,55,33) +hasLocation(#21284,#21285) #21286=* -typeexprs(#21286,7,#21277,-3,"string | number") -#21287=@"loc,{#10000},96,45,96,59" -locations_default(#21287,#10000,96,45,96,59) +tokeninfo(#21286,6,#20001,502,"Pick") +#21287=@"loc,{#10000},55,35,55,38" +locations_default(#21287,#10000,55,35,55,38) hasLocation(#21286,#21287) -exprContainers(#21286,#21277) #21288=* -typeexprs(#21288,2,#21286,0,"string") -#21289=@"loc,{#10000},96,45,96,50" -locations_default(#21289,#10000,96,45,96,50) +tokeninfo(#21288,8,#20001,503,"<") +#21289=@"loc,{#10000},55,39,55,39" +locations_default(#21289,#10000,55,39,55,39) hasLocation(#21288,#21289) -exprContainers(#21288,#21277) -literals("string","string",#21288) #21290=* -typeexprs(#21290,2,#21286,1,"number") -#21291=@"loc,{#10000},96,54,96,59" -locations_default(#21291,#10000,96,54,96,59) +tokeninfo(#21290,6,#20001,504,"T") +#21291=@"loc,{#10000},55,40,55,40" +locations_default(#21291,#10000,55,40,55,40) hasLocation(#21290,#21291) -exprContainers(#21290,#21277) -literals("number","number",#21290) #21292=* -typeexprs(#21292,7,#21277,-6,"string | number") -#21293=@"loc,{#10000},96,27,96,41" -locations_default(#21293,#10000,96,27,96,41) +tokeninfo(#21292,8,#20001,505,",") +#21293=@"loc,{#10000},55,41,55,41" +locations_default(#21293,#10000,55,41,55,41) hasLocation(#21292,#21293) -exprContainers(#21292,#21277) #21294=* -typeexprs(#21294,2,#21292,0,"string") -#21295=@"loc,{#10000},96,27,96,32" -locations_default(#21295,#10000,96,27,96,32) +tokeninfo(#21294,6,#20001,506,"NonFunctionPropertyNames") +#21295=@"loc,{#10000},55,43,55,66" +locations_default(#21295,#10000,55,43,55,66) hasLocation(#21294,#21295) -exprContainers(#21294,#21277) -literals("string","string",#21294) #21296=* -typeexprs(#21296,2,#21292,1,"number") -#21297=@"loc,{#10000},96,36,96,41" -locations_default(#21297,#10000,96,36,96,41) +tokeninfo(#21296,8,#20001,507,"<") +#21297=@"loc,{#10000},55,67,55,67" +locations_default(#21297,#10000,55,67,55,67) hasLocation(#21296,#21297) -exprContainers(#21296,#21277) -literals("number","number",#21296) -numlines(#21277,1,1,0) #21298=* -stmts(#21298,35,#20850,16,"type T3 ... f foo>;") -#21299=@"loc,{#10000},97,3,97,36" -locations_default(#21299,#10000,97,3,97,36) +tokeninfo(#21298,6,#20001,508,"T") +#21299=@"loc,{#10000},55,68,55,68" +locations_default(#21299,#10000,55,68,55,68) hasLocation(#21298,#21299) -stmtContainers(#21298,#20850) #21300=* -typeexprs(#21300,1,#21298,0,"T30") -#21301=@"loc,{#10000},97,8,97,10" -locations_default(#21301,#10000,97,8,97,10) +tokeninfo(#21300,8,#20001,509,">") +#21301=@"loc,{#10000},55,69,55,69" +locations_default(#21301,#10000,55,69,55,69) hasLocation(#21300,#21301) -enclosingStmt(#21300,#21298) -exprContainers(#21300,#20850) -literals("T30","T30",#21300) -typedecl(#21300,#20868) #21302=* -typeexprs(#21302,14,#21298,1,"ReturnT ... of foo>") -#21303=@"loc,{#10000},97,14,97,35" -locations_default(#21303,#10000,97,14,97,35) +tokeninfo(#21302,8,#20001,510,">") +#21303=@"loc,{#10000},55,70,55,70" +locations_default(#21303,#10000,55,70,55,70) hasLocation(#21302,#21303) -enclosingStmt(#21302,#21298) -exprContainers(#21302,#20850) #21304=* -typeexprs(#21304,0,#21302,-1,"ReturnType") -#21305=@"loc,{#10000},97,14,97,23" -locations_default(#21305,#10000,97,14,97,23) +tokeninfo(#21304,8,#20001,511,";") +#21305=@"loc,{#10000},55,71,55,71" +locations_default(#21305,#10000,55,71,55,71) hasLocation(#21304,#21305) -enclosingStmt(#21304,#21298) -exprContainers(#21304,#20850) -literals("ReturnType","ReturnType",#21304) -typebind(#21304,#20870) #21306=* -typeexprs(#21306,16,#21302,0,"typeof foo") -#21307=@"loc,{#10000},97,25,97,34" -locations_default(#21307,#10000,97,25,97,34) +tokeninfo(#21306,7,#20001,512,"interface") +#21307=@"loc,{#10000},57,3,57,11" +locations_default(#21307,#10000,57,3,57,11) hasLocation(#21306,#21307) -enclosingStmt(#21306,#21298) -exprContainers(#21306,#20850) #21308=* -typeexprs(#21308,17,#21306,0,"foo") -#21309=@"loc,{#10000},97,32,97,34" -locations_default(#21309,#10000,97,32,97,34) +tokeninfo(#21308,6,#20001,513,"Part") +#21309=@"loc,{#10000},57,13,57,16" +locations_default(#21309,#10000,57,13,57,16) hasLocation(#21308,#21309) -enclosingStmt(#21308,#21298) -exprContainers(#21308,#20850) -literals("foo","foo",#21308) -bind(#21308,#21254) #21310=* -stmts(#21310,35,#20850,17,"type An ... => any;") -#21311=@"loc,{#10000},99,3,99,45" -locations_default(#21311,#10000,99,3,99,45) +tokeninfo(#21310,8,#20001,514,"{") +#21311=@"loc,{#10000},57,18,57,18" +locations_default(#21311,#10000,57,18,57,18) hasLocation(#21310,#21311) -stmtContainers(#21310,#20850) #21312=* -typeexprs(#21312,1,#21310,0,"AnyFunction") -#21313=@"loc,{#10000},99,8,99,18" -locations_default(#21313,#10000,99,8,99,18) +tokeninfo(#21312,6,#20001,515,"id") +#21313=@"loc,{#10000},58,7,58,8" +locations_default(#21313,#10000,58,7,58,8) hasLocation(#21312,#21313) -enclosingStmt(#21312,#21310) -exprContainers(#21312,#20850) -literals("AnyFunction","AnyFunction",#21312) -typedecl(#21312,#20869) #21314=* -typeexprs(#21314,23,#21310,1,"(...arg ... => any") -#21315=@"loc,{#10000},99,22,99,44" -locations_default(#21315,#10000,99,22,99,44) +tokeninfo(#21314,8,#20001,516,":") +#21315=@"loc,{#10000},58,9,58,9" +locations_default(#21315,#10000,58,9,58,9) hasLocation(#21314,#21315) -enclosingStmt(#21314,#21310) -exprContainers(#21314,#20850) #21316=* -exprs(#21316,9,#21314,0,"(...arg ... => any") -hasLocation(#21316,#21315) -enclosingStmt(#21316,#21310) -exprContainers(#21316,#20850) -#21317=* -scopes(#21317,1) -scopenodes(#21316,#21317) -scopenesting(#21317,#20854) -#21318=@"var;{args};{#21317}" -variables(#21318,"args",#21317) -#21319=* -exprs(#21319,78,#21316,0,"args") -#21320=@"loc,{#10000},99,26,99,29" -locations_default(#21320,#10000,99,26,99,29) -hasLocation(#21319,#21320) -exprContainers(#21319,#21316) -literals("args","args",#21319) -decl(#21319,#21318) -#21321=@"var;{arguments};{#21317}" -variables(#21321,"arguments",#21317) -isArgumentsObject(#21321) +tokeninfo(#21316,7,#20001,517,"number") +#21317=@"loc,{#10000},58,11,58,16" +locations_default(#21317,#10000,58,11,58,16) +hasLocation(#21316,#21317) +#21318=* +tokeninfo(#21318,8,#20001,518,";") +#21319=@"loc,{#10000},58,17,58,17" +locations_default(#21319,#10000,58,17,58,17) +hasLocation(#21318,#21319) +#21320=* +tokeninfo(#21320,6,#20001,519,"name") +#21321=@"loc,{#10000},59,7,59,10" +locations_default(#21321,#10000,59,7,59,10) +hasLocation(#21320,#21321) #21322=* -typeexprs(#21322,2,#21316,-3,"any") -#21323=@"loc,{#10000},99,42,99,44" -locations_default(#21323,#10000,99,42,99,44) +tokeninfo(#21322,8,#20001,520,":") +#21323=@"loc,{#10000},59,11,59,11" +locations_default(#21323,#10000,59,11,59,11) hasLocation(#21322,#21323) -exprContainers(#21322,#21316) -literals("any","any",#21322) #21324=* -typeexprs(#21324,6,#21316,-6,"any[]") -#21325=@"loc,{#10000},99,32,99,36" -locations_default(#21325,#10000,99,32,99,36) +tokeninfo(#21324,7,#20001,521,"string") +#21325=@"loc,{#10000},59,13,59,18" +locations_default(#21325,#10000,59,13,59,18) hasLocation(#21324,#21325) -exprContainers(#21324,#21316) #21326=* -typeexprs(#21326,2,#21324,0,"any") -#21327=@"loc,{#10000},99,32,99,34" -locations_default(#21327,#10000,99,32,99,34) +tokeninfo(#21326,8,#20001,522,";") +#21327=@"loc,{#10000},59,19,59,19" +locations_default(#21327,#10000,59,19,59,19) hasLocation(#21326,#21327) -exprContainers(#21326,#21316) -literals("any","any",#21326) -hasRestParameter(#21316) -numlines(#21316,1,1,0) #21328=* -stmts(#21328,35,#20850,18,"type Re ... : any;") -#21329=@"loc,{#10000},100,3,100,91" -locations_default(#21329,#10000,100,3,100,91) +tokeninfo(#21328,6,#20001,523,"subparts") +#21329=@"loc,{#10000},60,7,60,14" +locations_default(#21329,#10000,60,7,60,14) hasLocation(#21328,#21329) -stmtContainers(#21328,#20850) #21330=* -typeexprs(#21330,1,#21328,0,"ReturnType") -#21331=@"loc,{#10000},100,8,100,17" -locations_default(#21331,#10000,100,8,100,17) +tokeninfo(#21330,8,#20001,524,":") +#21331=@"loc,{#10000},60,15,60,15" +locations_default(#21331,#10000,60,15,60,15) hasLocation(#21330,#21331) -enclosingStmt(#21330,#21328) -exprContainers(#21330,#20850) -literals("ReturnType","ReturnType",#21330) -typedecl(#21330,#20870) #21332=* -scopes(#21332,12) -scopenodes(#21328,#21332) -scopenesting(#21332,#20854) -#21333=@"local_type_name;{T};{#21332}" -local_type_names(#21333,"T",#21332) +tokeninfo(#21332,6,#20001,525,"Part") +#21333=@"loc,{#10000},60,17,60,20" +locations_default(#21333,#10000,60,17,60,20) +hasLocation(#21332,#21333) #21334=* -typeexprs(#21334,22,#21328,2,"T exten ... unction") -#21335=@"loc,{#10000},100,19,100,39" -locations_default(#21335,#10000,100,19,100,39) +tokeninfo(#21334,8,#20001,526,"[") +#21335=@"loc,{#10000},60,21,60,21" +locations_default(#21335,#10000,60,21,60,21) hasLocation(#21334,#21335) -enclosingStmt(#21334,#21328) -exprContainers(#21334,#20850) #21336=* -typeexprs(#21336,1,#21334,0,"T") -#21337=@"loc,{#10000},100,19,100,19" -locations_default(#21337,#10000,100,19,100,19) +tokeninfo(#21336,8,#20001,527,"]") +#21337=@"loc,{#10000},60,22,60,22" +locations_default(#21337,#10000,60,22,60,22) hasLocation(#21336,#21337) -enclosingStmt(#21336,#21328) -exprContainers(#21336,#20850) -literals("T","T",#21336) -typedecl(#21336,#21333) #21338=* -typeexprs(#21338,0,#21334,1,"AnyFunction") -#21339=@"loc,{#10000},100,29,100,39" -locations_default(#21339,#10000,100,29,100,39) +tokeninfo(#21338,8,#20001,528,";") +#21339=@"loc,{#10000},60,23,60,23" +locations_default(#21339,#10000,60,23,60,23) hasLocation(#21338,#21339) -enclosingStmt(#21338,#21328) -exprContainers(#21338,#20850) -literals("AnyFunction","AnyFunction",#21338) -typebind(#21338,#20869) #21340=* -typeexprs(#21340,28,#21328,1,"T exten ... R : any") -#21341=@"loc,{#10000},100,44,100,90" -locations_default(#21341,#10000,100,44,100,90) +tokeninfo(#21340,6,#20001,529,"updatePart") +#21341=@"loc,{#10000},61,7,61,16" +locations_default(#21341,#10000,61,7,61,16) hasLocation(#21340,#21341) -enclosingStmt(#21340,#21328) -exprContainers(#21340,#20850) #21342=* -typeexprs(#21342,0,#21340,0,"T") -#21343=@"loc,{#10000},100,44,100,44" -locations_default(#21343,#10000,100,44,100,44) +tokeninfo(#21342,8,#20001,530,"(") +#21343=@"loc,{#10000},61,17,61,17" +locations_default(#21343,#10000,61,17,61,17) hasLocation(#21342,#21343) -enclosingStmt(#21342,#21328) -exprContainers(#21342,#20850) -literals("T","T",#21342) -typebind(#21342,#21333) #21344=* -scopes(#21344,16) -scopenodes(#21340,#21344) -scopenesting(#21344,#21332) -#21345=@"local_type_name;{R};{#21344}" -local_type_names(#21345,"R",#21344) +tokeninfo(#21344,6,#20001,531,"newName") +#21345=@"loc,{#10000},61,18,61,24" +locations_default(#21345,#10000,61,18,61,24) +hasLocation(#21344,#21345) #21346=* -typeexprs(#21346,23,#21340,1,"(...arg ... infer R") -#21347=@"loc,{#10000},100,54,100,80" -locations_default(#21347,#10000,100,54,100,80) +tokeninfo(#21346,8,#20001,532,":") +#21347=@"loc,{#10000},61,25,61,25" +locations_default(#21347,#10000,61,25,61,25) hasLocation(#21346,#21347) -enclosingStmt(#21346,#21328) -exprContainers(#21346,#20850) #21348=* -exprs(#21348,9,#21346,0,"(...arg ... infer R") -hasLocation(#21348,#21347) -enclosingStmt(#21348,#21328) -exprContainers(#21348,#20850) -#21349=* -scopes(#21349,1) -scopenodes(#21348,#21349) -scopenesting(#21349,#21344) -#21350=@"var;{args};{#21349}" -variables(#21350,"args",#21349) -#21351=* -exprs(#21351,78,#21348,0,"args") -#21352=@"loc,{#10000},100,58,100,61" -locations_default(#21352,#10000,100,58,100,61) -hasLocation(#21351,#21352) -exprContainers(#21351,#21348) -literals("args","args",#21351) -decl(#21351,#21350) -#21353=@"var;{arguments};{#21349}" -variables(#21353,"arguments",#21349) -isArgumentsObject(#21353) +tokeninfo(#21348,7,#20001,533,"string") +#21349=@"loc,{#10000},61,27,61,32" +locations_default(#21349,#10000,61,27,61,32) +hasLocation(#21348,#21349) +#21350=* +tokeninfo(#21350,8,#20001,534,")") +#21351=@"loc,{#10000},61,33,61,33" +locations_default(#21351,#10000,61,33,61,33) +hasLocation(#21350,#21351) +#21352=* +tokeninfo(#21352,8,#20001,535,":") +#21353=@"loc,{#10000},61,34,61,34" +locations_default(#21353,#10000,61,34,61,34) +hasLocation(#21352,#21353) #21354=* -typeexprs(#21354,29,#21348,-3,"infer R") -#21355=@"loc,{#10000},100,74,100,80" -locations_default(#21355,#10000,100,74,100,80) +tokeninfo(#21354,7,#20001,536,"void") +#21355=@"loc,{#10000},61,36,61,39" +locations_default(#21355,#10000,61,36,61,39) hasLocation(#21354,#21355) -exprContainers(#21354,#21348) #21356=* -typeexprs(#21356,22,#21354,0,"R") -#21357=@"loc,{#10000},100,80,100,80" -locations_default(#21357,#10000,100,80,100,80) +tokeninfo(#21356,8,#20001,537,";") +#21357=@"loc,{#10000},61,40,61,40" +locations_default(#21357,#10000,61,40,61,40) hasLocation(#21356,#21357) -exprContainers(#21356,#21348) #21358=* -typeexprs(#21358,1,#21356,0,"R") -hasLocation(#21358,#21357) -exprContainers(#21358,#21348) -literals("R","R",#21358) -typedecl(#21358,#21345) -#21359=* -typeexprs(#21359,6,#21348,-6,"any[]") -#21360=@"loc,{#10000},100,64,100,68" -locations_default(#21360,#10000,100,64,100,68) -hasLocation(#21359,#21360) -exprContainers(#21359,#21348) -#21361=* -typeexprs(#21361,2,#21359,0,"any") -#21362=@"loc,{#10000},100,64,100,66" -locations_default(#21362,#10000,100,64,100,66) -hasLocation(#21361,#21362) -exprContainers(#21361,#21348) -literals("any","any",#21361) -hasRestParameter(#21348) -numlines(#21348,1,1,0) -#21363=* -typeexprs(#21363,0,#21340,2,"R") -#21364=@"loc,{#10000},100,84,100,84" -locations_default(#21364,#10000,100,84,100,84) -hasLocation(#21363,#21364) -enclosingStmt(#21363,#21328) -exprContainers(#21363,#20850) -literals("R","R",#21363) -typebind(#21363,#21345) -#21365=* -typeexprs(#21365,2,#21340,3,"any") -#21366=@"loc,{#10000},100,88,100,90" -locations_default(#21366,#10000,100,88,100,90) -hasLocation(#21365,#21366) -enclosingStmt(#21365,#21328) -exprContainers(#21365,#20850) -literals("any","any",#21365) -isInstantiated(#20850) -#21367=* -comments(#21367,0,#20001," ""string""","// ""string""") -#21368=@"loc,{#10000},10,32,10,42" -locations_default(#21368,#10000,10,32,10,42) -hasLocation(#21367,#21368) -#21369=* -comments(#21369,0,#20001," ""string""","// ""string""") -#21370=@"loc,{#10000},11,29,11,39" -locations_default(#21370,#10000,11,29,11,39) -hasLocation(#21369,#21370) -#21371=* -comments(#21371,0,#20001," ""boolean""","// ""boolean""") -#21372=@"loc,{#10000},12,30,12,41" -locations_default(#21372,#10000,12,30,12,41) -hasLocation(#21371,#21372) -#21373=* -comments(#21373,0,#20001," ""function""","// ""function""") -#21374=@"loc,{#10000},13,36,13,48" -locations_default(#21374,#10000,13,36,13,48) -hasLocation(#21373,#21374) -#21375=* -comments(#21375,0,#20001," ""object""","// ""object""") -#21376=@"loc,{#10000},14,34,14,44" -locations_default(#21376,#10000,14,34,14,44) -hasLocation(#21375,#21376) -#21377=* -comments(#21377,0,#20001," ""string"" | ""function""","// ""str ... nction""") -#21378=@"loc,{#10000},17,48,17,71" -locations_default(#21378,#10000,17,48,17,71) -hasLocation(#21377,#21378) -#21379=* -comments(#21379,0,#20001," ""string"" | ""object"" | ""undefined""","// ""str ... efined""") -#21380=@"loc,{#10000},18,56,18,91" -locations_default(#21380,#10000,18,56,18,91) -hasLocation(#21379,#21380) -#21381=* -comments(#21381,0,#20001," ""object""","// ""object""") -#21382=@"loc,{#10000},19,46,19,56" -locations_default(#21382,#10000,19,46,19,56) -hasLocation(#21381,#21382) -#21383=* -comments(#21383,0,#20001," BoxedValue;","// Boxe ... tring>;") -#21384=@"loc,{#10000},25,30,25,51" -locations_default(#21384,#10000,25,30,25,51) -hasLocation(#21383,#21384) -#21385=* -comments(#21385,0,#20001," BoxedArray;","// Boxe ... umber>;") -#21386=@"loc,{#10000},26,32,26,53" -locations_default(#21386,#10000,26,32,26,53) -hasLocation(#21385,#21386) -#21387=* -comments(#21387,0,#20001," BoxedValue | BoxedArray;","// Boxe ... umber>;") -#21388=@"loc,{#10000},27,41,27,83" -locations_default(#21388,#10000,27,41,27,83) -hasLocation(#21387,#21388) -#21389=* -comments(#21389,0,#20001," Remove types from T that are assignable to U","// Remo ... le to U") -#21390=@"loc,{#10000},29,47,29,93" -locations_default(#21390,#10000,29,47,29,93) -hasLocation(#21389,#21390) -#21391=* -comments(#21391,0,#20001," Remove types from T that are not assignable to U","// Remo ... le to U") -#21392=@"loc,{#10000},30,49,30,99" -locations_default(#21392,#10000,30,49,30,99) -hasLocation(#21391,#21392) -#21393=* -comments(#21393,0,#20001," ""b"" | ""d""","// ""b"" | ""d""") -#21394=@"loc,{#10000},32,61,32,72" -locations_default(#21394,#10000,32,61,32,72) -hasLocation(#21393,#21394) -#21395=* -comments(#21395,0,#20001," ""a"" | ""c""","// ""a"" | ""c""") -#21396=@"loc,{#10000},33,63,33,74" -locations_default(#21396,#10000,33,63,33,74) -hasLocation(#21395,#21396) -#21397=* -comments(#21397,0,#20001," string | number","// string | number") -#21398=@"loc,{#10000},34,63,34,80" -locations_default(#21398,#10000,34,63,34,80) -hasLocation(#21397,#21398) -#21399=* -comments(#21399,0,#20001," () => void","// () => void") -#21400=@"loc,{#10000},35,65,35,77" -locations_default(#21400,#10000,35,65,35,77) -hasLocation(#21399,#21400) -#21401=* -comments(#21401,0,#20001," Remove null and undefined from T","// Remo ... from T") -#21402=@"loc,{#10000},37,53,37,87" -locations_default(#21402,#10000,37,53,37,87) -hasLocation(#21401,#21402) -#21403=* -comments(#21403,0,#20001," string | number","// string | number") -#21404=@"loc,{#10000},39,57,39,74" -locations_default(#21404,#10000,39,57,39,74) -hasLocation(#21403,#21404) -#21405=* -comments(#21405,0,#20001," string | string[]","// string | string[]") -#21406=@"loc,{#10000},40,66,40,85" -locations_default(#21406,#10000,40,66,40,85) -hasLocation(#21405,#21406) -#21407=* -comments(#21407,0,#20001," Ok","// Ok") -#21408=@"loc,{#10000},43,15,43,19" -locations_default(#21408,#10000,43,15,43,19) -hasLocation(#21407,#21408) -#21409=* -comments(#21409,0,#20001," Ok","// Ok") -#21410=@"loc,{#10000},47,15,47,19" -locations_default(#21410,#10000,47,15,47,19) -hasLocation(#21409,#21410) -#21411=* -comments(#21411,0,#20001," Ok","// Ok") -#21412=@"loc,{#10000},48,28,48,32" -locations_default(#21412,#10000,48,28,48,32) -hasLocation(#21411,#21412) -#21413=* -comments(#21413,0,#20001," ""updatePart""","// ""updatePart""") -#21414=@"loc,{#10000},64,44,64,58" -locations_default(#21414,#10000,64,44,64,58) -hasLocation(#21413,#21414) -#21415=* -comments(#21415,0,#20001," ""id"" | ""name"" | ""subparts""","// ""id"" ... bparts""") -#21416=@"loc,{#10000},65,47,65,75" -locations_default(#21416,#10000,65,47,65,75) -hasLocation(#21415,#21416) -#21417=* -comments(#21417,0,#20001," { updatePart(newName: string): void }","// { up ... void }") -#21418=@"loc,{#10000},66,41,66,80" -locations_default(#21418,#10000,66,41,66,80) -hasLocation(#21417,#21418) -#21419=* -comments(#21419,0,#20001," { id: number, name: string, subparts: Part[] }","// { id ... art[] }") -#21420=@"loc,{#10000},67,44,67,92" -locations_default(#21420,#10000,67,44,67,92) -hasLocation(#21419,#21420) -#21421=* -comments(#21421,0,#20001," string","// string") -#21422=@"loc,{#10000},79,32,79,40" -locations_default(#21422,#10000,79,32,79,40) -hasLocation(#21421,#21422) -#21423=* -comments(#21423,0,#20001," string","// string") -#21424=@"loc,{#10000},80,34,80,42" -locations_default(#21424,#10000,80,34,80,42) -hasLocation(#21423,#21424) -#21425=* -comments(#21425,0,#20001," string","// string") -#21426=@"loc,{#10000},81,38,81,46" -locations_default(#21426,#10000,81,38,81,46) -hasLocation(#21425,#21426) -#21427=* -comments(#21427,0,#20001," string","// string") -#21428=@"loc,{#10000},82,41,82,49" -locations_default(#21428,#10000,82,41,82,49) -hasLocation(#21427,#21428) -#21429=* -comments(#21429,0,#20001," Promise","// Promise") -#21430=@"loc,{#10000},83,43,83,60" -locations_default(#21430,#10000,83,43,83,60) -hasLocation(#21429,#21430) -#21431=* -comments(#21431,0,#20001," string","// string") -#21432=@"loc,{#10000},84,53,84,61" -locations_default(#21432,#10000,84,53,84,61) -hasLocation(#21431,#21432) -#21433=* -comments(#21433,0,#20001," string","// string") -#21434=@"loc,{#10000},87,46,87,54" -locations_default(#21434,#10000,87,46,87,54) -hasLocation(#21433,#21434) -#21435=* -comments(#21435,0,#20001," string | number","// string | number") -#21436=@"loc,{#10000},88,46,88,63" -locations_default(#21436,#10000,88,46,88,63) -hasLocation(#21435,#21436) -#21437=* -comments(#21437,0,#20001," string","// string") -#21438=@"loc,{#10000},91,72,91,80" -locations_default(#21438,#10000,91,72,91,80) -hasLocation(#21437,#21438) -#21439=* -comments(#21439,0,#20001," string & number","// string & number") -#21440=@"loc,{#10000},92,72,92,89" -locations_default(#21440,#10000,92,72,92,89) -hasLocation(#21439,#21440) -#21441=* -comments(#21441,0,#20001," string | number","// string | number") -#21442=@"loc,{#10000},97,39,97,56" -locations_default(#21442,#10000,97,39,97,56) -hasLocation(#21441,#21442) -#21443=* -lines(#21443,#20001,"namespace ConditionalTypes1 {"," -") -#21444=@"loc,{#10000},1,1,1,29" -locations_default(#21444,#10000,1,1,1,29) -hasLocation(#21443,#21444) -#21445=* -lines(#21445,#20001," type TypeName ="," -") -#21446=@"loc,{#10000},2,1,2,20" -locations_default(#21446,#10000,2,1,2,20) -hasLocation(#21445,#21446) -indentation(#10000,2," ",2) -#21447=* -lines(#21447,#20001," T extends string ? ""string"" :"," -") -#21448=@"loc,{#10000},3,1,3,35" -locations_default(#21448,#10000,3,1,3,35) -hasLocation(#21447,#21448) -indentation(#10000,3," ",6) -#21449=* -lines(#21449,#20001," T extends number ? ""number"" :"," -") -#21450=@"loc,{#10000},4,1,4,35" -locations_default(#21450,#10000,4,1,4,35) -hasLocation(#21449,#21450) -indentation(#10000,4," ",6) -#21451=* -lines(#21451,#20001," T extends boolean ? ""boolean"" :"," -") -#21452=@"loc,{#10000},5,1,5,37" -locations_default(#21452,#10000,5,1,5,37) -hasLocation(#21451,#21452) -indentation(#10000,5," ",6) -#21453=* -lines(#21453,#20001," T extends undefined ? ""undefined"" :"," -") -#21454=@"loc,{#10000},6,1,6,41" -locations_default(#21454,#10000,6,1,6,41) -hasLocation(#21453,#21454) -indentation(#10000,6," ",6) -#21455=* -lines(#21455,#20001," T extends Function ? ""function"" :"," -") -#21456=@"loc,{#10000},7,1,7,39" -locations_default(#21456,#10000,7,1,7,39) -hasLocation(#21455,#21456) -indentation(#10000,7," ",6) -#21457=* -lines(#21457,#20001," ""object"";"," -") -#21458=@"loc,{#10000},8,1,8,15" -locations_default(#21458,#10000,8,1,8,15) -hasLocation(#21457,#21458) -indentation(#10000,8," ",6) -#21459=* -lines(#21459,#20001," "," -") -#21460=@"loc,{#10000},9,1,9,2" -locations_default(#21460,#10000,9,1,9,2) -hasLocation(#21459,#21460) -#21461=* -lines(#21461,#20001," type T0 = TypeName; // ""string"""," -") -#21462=@"loc,{#10000},10,1,10,42" -locations_default(#21462,#10000,10,1,10,42) -hasLocation(#21461,#21462) -indentation(#10000,10," ",2) -#21463=* -lines(#21463,#20001," type T1 = TypeName<""a"">; // ""string"""," -") -#21464=@"loc,{#10000},11,1,11,39" -locations_default(#21464,#10000,11,1,11,39) -hasLocation(#21463,#21464) -indentation(#10000,11," ",2) -#21465=* -lines(#21465,#20001," type T2 = TypeName; // ""boolean"""," -") -#21466=@"loc,{#10000},12,1,12,41" -locations_default(#21466,#10000,12,1,12,41) -hasLocation(#21465,#21466) -indentation(#10000,12," ",2) -#21467=* -lines(#21467,#20001," type T3 = TypeName<() => void>; // ""function"""," -") -#21468=@"loc,{#10000},13,1,13,48" -locations_default(#21468,#10000,13,1,13,48) -hasLocation(#21467,#21468) -indentation(#10000,13," ",2) -#21469=* -lines(#21469,#20001," type T4 = TypeName; // ""object"""," -") -#21470=@"loc,{#10000},14,1,14,44" -locations_default(#21470,#10000,14,1,14,44) -hasLocation(#21469,#21470) -indentation(#10000,14," ",2) -#21471=* -lines(#21471,#20001," "," -") -#21472=@"loc,{#10000},15,1,15,2" -locations_default(#21472,#10000,15,1,15,2) -hasLocation(#21471,#21472) +tokeninfo(#21358,8,#20001,538,"}") +#21359=@"loc,{#10000},62,3,62,3" +locations_default(#21359,#10000,62,3,62,3) +hasLocation(#21358,#21359) +#21360=* +tokeninfo(#21360,7,#20001,539,"type") +#21361=@"loc,{#10000},64,3,64,6" +locations_default(#21361,#10000,64,3,64,6) +hasLocation(#21360,#21361) +#21362=* +tokeninfo(#21362,6,#20001,540,"T40") +#21363=@"loc,{#10000},64,8,64,10" +locations_default(#21363,#10000,64,8,64,10) +hasLocation(#21362,#21363) +#21364=* +tokeninfo(#21364,8,#20001,541,"=") +#21365=@"loc,{#10000},64,12,64,12" +locations_default(#21365,#10000,64,12,64,12) +hasLocation(#21364,#21365) +#21366=* +tokeninfo(#21366,6,#20001,542,"FunctionPropertyNames") +#21367=@"loc,{#10000},64,14,64,34" +locations_default(#21367,#10000,64,14,64,34) +hasLocation(#21366,#21367) +#21368=* +tokeninfo(#21368,8,#20001,543,"<") +#21369=@"loc,{#10000},64,35,64,35" +locations_default(#21369,#10000,64,35,64,35) +hasLocation(#21368,#21369) +#21370=* +tokeninfo(#21370,6,#20001,544,"Part") +#21371=@"loc,{#10000},64,36,64,39" +locations_default(#21371,#10000,64,36,64,39) +hasLocation(#21370,#21371) +#21372=* +tokeninfo(#21372,8,#20001,545,">") +#21373=@"loc,{#10000},64,40,64,40" +locations_default(#21373,#10000,64,40,64,40) +hasLocation(#21372,#21373) +#21374=* +tokeninfo(#21374,8,#20001,546,";") +#21375=@"loc,{#10000},64,41,64,41" +locations_default(#21375,#10000,64,41,64,41) +hasLocation(#21374,#21375) +#21376=* +tokeninfo(#21376,7,#20001,547,"type") +#21377=@"loc,{#10000},65,3,65,6" +locations_default(#21377,#10000,65,3,65,6) +hasLocation(#21376,#21377) +next_token(#20048,#21376) +#21378=* +tokeninfo(#21378,6,#20001,548,"T41") +#21379=@"loc,{#10000},65,8,65,10" +locations_default(#21379,#10000,65,8,65,10) +hasLocation(#21378,#21379) +#21380=* +tokeninfo(#21380,8,#20001,549,"=") +#21381=@"loc,{#10000},65,12,65,12" +locations_default(#21381,#10000,65,12,65,12) +hasLocation(#21380,#21381) +#21382=* +tokeninfo(#21382,6,#20001,550,"NonFunctionPropertyNames") +#21383=@"loc,{#10000},65,14,65,37" +locations_default(#21383,#10000,65,14,65,37) +hasLocation(#21382,#21383) +#21384=* +tokeninfo(#21384,8,#20001,551,"<") +#21385=@"loc,{#10000},65,38,65,38" +locations_default(#21385,#10000,65,38,65,38) +hasLocation(#21384,#21385) +#21386=* +tokeninfo(#21386,6,#20001,552,"Part") +#21387=@"loc,{#10000},65,39,65,42" +locations_default(#21387,#10000,65,39,65,42) +hasLocation(#21386,#21387) +#21388=* +tokeninfo(#21388,8,#20001,553,">") +#21389=@"loc,{#10000},65,43,65,43" +locations_default(#21389,#10000,65,43,65,43) +hasLocation(#21388,#21389) +#21390=* +tokeninfo(#21390,8,#20001,554,";") +#21391=@"loc,{#10000},65,44,65,44" +locations_default(#21391,#10000,65,44,65,44) +hasLocation(#21390,#21391) +#21392=* +tokeninfo(#21392,7,#20001,555,"type") +#21393=@"loc,{#10000},66,3,66,6" +locations_default(#21393,#10000,66,3,66,6) +hasLocation(#21392,#21393) +next_token(#20050,#21392) +#21394=* +tokeninfo(#21394,6,#20001,556,"T42") +#21395=@"loc,{#10000},66,8,66,10" +locations_default(#21395,#10000,66,8,66,10) +hasLocation(#21394,#21395) +#21396=* +tokeninfo(#21396,8,#20001,557,"=") +#21397=@"loc,{#10000},66,12,66,12" +locations_default(#21397,#10000,66,12,66,12) +hasLocation(#21396,#21397) +#21398=* +tokeninfo(#21398,6,#20001,558,"FunctionProperties") +#21399=@"loc,{#10000},66,14,66,31" +locations_default(#21399,#10000,66,14,66,31) +hasLocation(#21398,#21399) +#21400=* +tokeninfo(#21400,8,#20001,559,"<") +#21401=@"loc,{#10000},66,32,66,32" +locations_default(#21401,#10000,66,32,66,32) +hasLocation(#21400,#21401) +#21402=* +tokeninfo(#21402,6,#20001,560,"Part") +#21403=@"loc,{#10000},66,33,66,36" +locations_default(#21403,#10000,66,33,66,36) +hasLocation(#21402,#21403) +#21404=* +tokeninfo(#21404,8,#20001,561,">") +#21405=@"loc,{#10000},66,37,66,37" +locations_default(#21405,#10000,66,37,66,37) +hasLocation(#21404,#21405) +#21406=* +tokeninfo(#21406,8,#20001,562,";") +#21407=@"loc,{#10000},66,38,66,38" +locations_default(#21407,#10000,66,38,66,38) +hasLocation(#21406,#21407) +#21408=* +tokeninfo(#21408,7,#20001,563,"type") +#21409=@"loc,{#10000},67,3,67,6" +locations_default(#21409,#10000,67,3,67,6) +hasLocation(#21408,#21409) +next_token(#20052,#21408) +#21410=* +tokeninfo(#21410,6,#20001,564,"T43") +#21411=@"loc,{#10000},67,8,67,10" +locations_default(#21411,#10000,67,8,67,10) +hasLocation(#21410,#21411) +#21412=* +tokeninfo(#21412,8,#20001,565,"=") +#21413=@"loc,{#10000},67,12,67,12" +locations_default(#21413,#10000,67,12,67,12) +hasLocation(#21412,#21413) +#21414=* +tokeninfo(#21414,6,#20001,566,"NonFunctionProperties") +#21415=@"loc,{#10000},67,14,67,34" +locations_default(#21415,#10000,67,14,67,34) +hasLocation(#21414,#21415) +#21416=* +tokeninfo(#21416,8,#20001,567,"<") +#21417=@"loc,{#10000},67,35,67,35" +locations_default(#21417,#10000,67,35,67,35) +hasLocation(#21416,#21417) +#21418=* +tokeninfo(#21418,6,#20001,568,"Part") +#21419=@"loc,{#10000},67,36,67,39" +locations_default(#21419,#10000,67,36,67,39) +hasLocation(#21418,#21419) +#21420=* +tokeninfo(#21420,8,#20001,569,">") +#21421=@"loc,{#10000},67,40,67,40" +locations_default(#21421,#10000,67,40,67,40) +hasLocation(#21420,#21421) +#21422=* +tokeninfo(#21422,8,#20001,570,";") +#21423=@"loc,{#10000},67,41,67,41" +locations_default(#21423,#10000,67,41,67,41) +hasLocation(#21422,#21423) +#21424=* +tokeninfo(#21424,7,#20001,571,"type") +#21425=@"loc,{#10000},69,3,69,6" +locations_default(#21425,#10000,69,3,69,6) +hasLocation(#21424,#21425) +next_token(#20054,#21424) +#21426=* +tokeninfo(#21426,6,#20001,572,"ReturnType") +#21427=@"loc,{#10000},69,8,69,17" +locations_default(#21427,#10000,69,8,69,17) +hasLocation(#21426,#21427) +#21428=* +tokeninfo(#21428,8,#20001,573,"<") +#21429=@"loc,{#10000},69,18,69,18" +locations_default(#21429,#10000,69,18,69,18) +hasLocation(#21428,#21429) +#21430=* +tokeninfo(#21430,6,#20001,574,"T") +#21431=@"loc,{#10000},69,19,69,19" +locations_default(#21431,#10000,69,19,69,19) +hasLocation(#21430,#21431) +#21432=* +tokeninfo(#21432,8,#20001,575,">") +#21433=@"loc,{#10000},69,20,69,20" +locations_default(#21433,#10000,69,20,69,20) +hasLocation(#21432,#21433) +#21434=* +tokeninfo(#21434,8,#20001,576,"=") +#21435=@"loc,{#10000},69,22,69,22" +locations_default(#21435,#10000,69,22,69,22) +hasLocation(#21434,#21435) +#21436=* +tokeninfo(#21436,6,#20001,577,"T") +#21437=@"loc,{#10000},69,24,69,24" +locations_default(#21437,#10000,69,24,69,24) +hasLocation(#21436,#21437) +#21438=* +tokeninfo(#21438,7,#20001,578,"extends") +#21439=@"loc,{#10000},69,26,69,32" +locations_default(#21439,#10000,69,26,69,32) +hasLocation(#21438,#21439) +#21440=* +tokeninfo(#21440,8,#20001,579,"(") +#21441=@"loc,{#10000},69,34,69,34" +locations_default(#21441,#10000,69,34,69,34) +hasLocation(#21440,#21441) +#21442=* +tokeninfo(#21442,8,#20001,580,"...") +#21443=@"loc,{#10000},69,35,69,37" +locations_default(#21443,#10000,69,35,69,37) +hasLocation(#21442,#21443) +#21444=* +tokeninfo(#21444,6,#20001,581,"args") +#21445=@"loc,{#10000},69,38,69,41" +locations_default(#21445,#10000,69,38,69,41) +hasLocation(#21444,#21445) +#21446=* +tokeninfo(#21446,8,#20001,582,":") +#21447=@"loc,{#10000},69,42,69,42" +locations_default(#21447,#10000,69,42,69,42) +hasLocation(#21446,#21447) +#21448=* +tokeninfo(#21448,7,#20001,583,"any") +#21449=@"loc,{#10000},69,44,69,46" +locations_default(#21449,#10000,69,44,69,46) +hasLocation(#21448,#21449) +#21450=* +tokeninfo(#21450,8,#20001,584,"[") +#21451=@"loc,{#10000},69,47,69,47" +locations_default(#21451,#10000,69,47,69,47) +hasLocation(#21450,#21451) +#21452=* +tokeninfo(#21452,8,#20001,585,"]") +#21453=@"loc,{#10000},69,48,69,48" +locations_default(#21453,#10000,69,48,69,48) +hasLocation(#21452,#21453) +#21454=* +tokeninfo(#21454,8,#20001,586,")") +#21455=@"loc,{#10000},69,49,69,49" +locations_default(#21455,#10000,69,49,69,49) +hasLocation(#21454,#21455) +#21456=* +tokeninfo(#21456,8,#20001,587,"=>") +#21457=@"loc,{#10000},69,51,69,52" +locations_default(#21457,#10000,69,51,69,52) +hasLocation(#21456,#21457) +#21458=* +tokeninfo(#21458,7,#20001,588,"infer") +#21459=@"loc,{#10000},69,54,69,58" +locations_default(#21459,#10000,69,54,69,58) +hasLocation(#21458,#21459) +#21460=* +tokeninfo(#21460,6,#20001,589,"R") +#21461=@"loc,{#10000},69,60,69,60" +locations_default(#21461,#10000,69,60,69,60) +hasLocation(#21460,#21461) +#21462=* +tokeninfo(#21462,8,#20001,590,"?") +#21463=@"loc,{#10000},69,62,69,62" +locations_default(#21463,#10000,69,62,69,62) +hasLocation(#21462,#21463) +#21464=* +tokeninfo(#21464,6,#20001,591,"R") +#21465=@"loc,{#10000},69,64,69,64" +locations_default(#21465,#10000,69,64,69,64) +hasLocation(#21464,#21465) +#21466=* +tokeninfo(#21466,8,#20001,592,":") +#21467=@"loc,{#10000},69,66,69,66" +locations_default(#21467,#10000,69,66,69,66) +hasLocation(#21466,#21467) +#21468=* +tokeninfo(#21468,7,#20001,593,"any") +#21469=@"loc,{#10000},69,68,69,70" +locations_default(#21469,#10000,69,68,69,70) +hasLocation(#21468,#21469) +#21470=* +tokeninfo(#21470,8,#20001,594,";") +#21471=@"loc,{#10000},69,71,69,71" +locations_default(#21471,#10000,69,71,69,71) +hasLocation(#21470,#21471) +#21472=* +tokeninfo(#21472,8,#20001,595,"}") +hasLocation(#21472,#20217) #21473=* -lines(#21473,#20001," "," -") -#21474=@"loc,{#10000},16,1,16,2" -locations_default(#21474,#10000,16,1,16,2) +tokeninfo(#21473,7,#20001,596,"namespace") +#21474=@"loc,{#10000},72,1,72,9" +locations_default(#21474,#10000,72,1,72,9) hasLocation(#21473,#21474) #21475=* -lines(#21475,#20001," type T10 = TypeName void)>; // ""string"" | ""function"""," -") -#21476=@"loc,{#10000},17,1,17,71" -locations_default(#21476,#10000,17,1,17,71) +tokeninfo(#21475,6,#20001,597,"ConditionalTypes2") +#21476=@"loc,{#10000},72,11,72,27" +locations_default(#21476,#10000,72,11,72,27) hasLocation(#21475,#21476) -indentation(#10000,17," ",2) #21477=* -lines(#21477,#20001," type T12 = TypeName; // ""string"" | ""object"" | ""undefined"""," -") -#21478=@"loc,{#10000},18,1,18,91" -locations_default(#21478,#10000,18,1,18,91) +tokeninfo(#21477,8,#20001,598,"{") +#21478=@"loc,{#10000},72,29,72,29" +locations_default(#21478,#10000,72,29,72,29) hasLocation(#21477,#21478) -indentation(#10000,18," ",2) #21479=* -lines(#21479,#20001," type T11 = TypeName; // ""object"""," -") -#21480=@"loc,{#10000},19,1,19,56" -locations_default(#21480,#10000,19,1,19,56) +tokeninfo(#21479,7,#20001,599,"type") +#21480=@"loc,{#10000},73,3,73,6" +locations_default(#21480,#10000,73,3,73,6) hasLocation(#21479,#21480) -indentation(#10000,19," ",2) #21481=* -lines(#21481,#20001," "," -") -#21482=@"loc,{#10000},20,1,20,2" -locations_default(#21482,#10000,20,1,20,2) +tokeninfo(#21481,6,#20001,600,"Unpacked") +#21482=@"loc,{#10000},73,8,73,15" +locations_default(#21482,#10000,73,8,73,15) hasLocation(#21481,#21482) #21483=* -lines(#21483,#20001," type BoxedValue = { value: T };"," -") -#21484=@"loc,{#10000},21,1,21,36" -locations_default(#21484,#10000,21,1,21,36) +tokeninfo(#21483,8,#20001,601,"<") +#21484=@"loc,{#10000},73,16,73,16" +locations_default(#21484,#10000,73,16,73,16) hasLocation(#21483,#21484) -indentation(#10000,21," ",2) #21485=* -lines(#21485,#20001," type BoxedArray = { array: T[] };"," -") -#21486=@"loc,{#10000},22,1,22,38" -locations_default(#21486,#10000,22,1,22,38) +tokeninfo(#21485,6,#20001,602,"T") +#21486=@"loc,{#10000},73,17,73,17" +locations_default(#21486,#10000,73,17,73,17) hasLocation(#21485,#21486) -indentation(#10000,22," ",2) #21487=* -lines(#21487,#20001," type Boxed = T extends any[] ? BoxedArray : BoxedValue;"," -") -#21488=@"loc,{#10000},23,1,23,74" -locations_default(#21488,#10000,23,1,23,74) +tokeninfo(#21487,8,#20001,603,">") +#21488=@"loc,{#10000},73,18,73,18" +locations_default(#21488,#10000,73,18,73,18) hasLocation(#21487,#21488) -indentation(#10000,23," ",2) #21489=* -lines(#21489,#20001," "," -") -#21490=@"loc,{#10000},24,1,24,2" -locations_default(#21490,#10000,24,1,24,2) +tokeninfo(#21489,8,#20001,604,"=") +#21490=@"loc,{#10000},73,20,73,20" +locations_default(#21490,#10000,73,20,73,20) hasLocation(#21489,#21490) #21491=* -lines(#21491,#20001," type T20 = Boxed; // BoxedValue;"," -") -#21492=@"loc,{#10000},25,1,25,51" -locations_default(#21492,#10000,25,1,25,51) +tokeninfo(#21491,6,#20001,605,"T") +#21492=@"loc,{#10000},74,5,74,5" +locations_default(#21492,#10000,74,5,74,5) hasLocation(#21491,#21492) -indentation(#10000,25," ",2) #21493=* -lines(#21493,#20001," type T21 = Boxed; // BoxedArray;"," -") -#21494=@"loc,{#10000},26,1,26,53" -locations_default(#21494,#10000,26,1,26,53) +tokeninfo(#21493,7,#20001,606,"extends") +#21494=@"loc,{#10000},74,7,74,13" +locations_default(#21494,#10000,74,7,74,13) hasLocation(#21493,#21494) -indentation(#10000,26," ",2) #21495=* -lines(#21495,#20001," type T22 = Boxed; // BoxedValue | BoxedArray;"," -") -#21496=@"loc,{#10000},27,1,27,83" -locations_default(#21496,#10000,27,1,27,83) +tokeninfo(#21495,8,#20001,607,"(") +#21496=@"loc,{#10000},74,15,74,15" +locations_default(#21496,#10000,74,15,74,15) hasLocation(#21495,#21496) -indentation(#10000,27," ",2) #21497=* -lines(#21497,#20001," "," -") -#21498=@"loc,{#10000},28,1,28,2" -locations_default(#21498,#10000,28,1,28,2) +tokeninfo(#21497,7,#20001,608,"infer") +#21498=@"loc,{#10000},74,16,74,20" +locations_default(#21498,#10000,74,16,74,20) hasLocation(#21497,#21498) #21499=* -lines(#21499,#20001," type Diff = T extends U ? never : T; // Remove types from T that are assignable to U"," -") -#21500=@"loc,{#10000},29,1,29,93" -locations_default(#21500,#10000,29,1,29,93) +tokeninfo(#21499,6,#20001,609,"U") +#21500=@"loc,{#10000},74,22,74,22" +locations_default(#21500,#10000,74,22,74,22) hasLocation(#21499,#21500) -indentation(#10000,29," ",2) #21501=* -lines(#21501,#20001," type Filter = T extends U ? T : never; // Remove types from T that are not assignable to U"," -") -#21502=@"loc,{#10000},30,1,30,99" -locations_default(#21502,#10000,30,1,30,99) +tokeninfo(#21501,8,#20001,610,")") +#21502=@"loc,{#10000},74,23,74,23" +locations_default(#21502,#10000,74,23,74,23) hasLocation(#21501,#21502) -indentation(#10000,30," ",2) #21503=* -lines(#21503,#20001," "," -") -#21504=@"loc,{#10000},31,1,31,2" -locations_default(#21504,#10000,31,1,31,2) +tokeninfo(#21503,8,#20001,611,"[") +#21504=@"loc,{#10000},74,24,74,24" +locations_default(#21504,#10000,74,24,74,24) hasLocation(#21503,#21504) #21505=* -lines(#21505,#20001," type T30 = Diff<""a"" | ""b"" | ""c"" | ""d"", ""a"" | ""c"" | ""f"">; // ""b"" | ""d"""," -") -#21506=@"loc,{#10000},32,1,32,72" -locations_default(#21506,#10000,32,1,32,72) +tokeninfo(#21505,8,#20001,612,"]") +#21506=@"loc,{#10000},74,25,74,25" +locations_default(#21506,#10000,74,25,74,25) hasLocation(#21505,#21506) -indentation(#10000,32," ",2) #21507=* -lines(#21507,#20001," type T31 = Filter<""a"" | ""b"" | ""c"" | ""d"", ""a"" | ""c"" | ""f"">; // ""a"" | ""c"""," -") -#21508=@"loc,{#10000},33,1,33,74" -locations_default(#21508,#10000,33,1,33,74) +tokeninfo(#21507,8,#20001,613,"?") +#21508=@"loc,{#10000},74,27,74,27" +locations_default(#21508,#10000,74,27,74,27) hasLocation(#21507,#21508) -indentation(#10000,33," ",2) #21509=* -lines(#21509,#20001," type T32 = Diff void), Function>; // string | number"," -") -#21510=@"loc,{#10000},34,1,34,80" -locations_default(#21510,#10000,34,1,34,80) +tokeninfo(#21509,6,#20001,614,"U") +#21510=@"loc,{#10000},74,29,74,29" +locations_default(#21510,#10000,74,29,74,29) hasLocation(#21509,#21510) -indentation(#10000,34," ",2) #21511=* -lines(#21511,#20001," type T33 = Filter void), Function>; // () => void"," -") -#21512=@"loc,{#10000},35,1,35,77" -locations_default(#21512,#10000,35,1,35,77) +tokeninfo(#21511,8,#20001,615,":") +#21512=@"loc,{#10000},74,31,74,31" +locations_default(#21512,#10000,74,31,74,31) hasLocation(#21511,#21512) -indentation(#10000,35," ",2) #21513=* -lines(#21513,#20001," "," -") -#21514=@"loc,{#10000},36,1,36,2" -locations_default(#21514,#10000,36,1,36,2) +tokeninfo(#21513,6,#20001,616,"T") +#21514=@"loc,{#10000},75,5,75,5" +locations_default(#21514,#10000,75,5,75,5) hasLocation(#21513,#21514) #21515=* -lines(#21515,#20001," type NonNullable = Diff; // Remove null and undefined from T"," -") -#21516=@"loc,{#10000},37,1,37,87" -locations_default(#21516,#10000,37,1,37,87) +tokeninfo(#21515,7,#20001,617,"extends") +#21516=@"loc,{#10000},75,7,75,13" +locations_default(#21516,#10000,75,7,75,13) hasLocation(#21515,#21516) -indentation(#10000,37," ",2) #21517=* -lines(#21517,#20001," "," -") -#21518=@"loc,{#10000},38,1,38,2" -locations_default(#21518,#10000,38,1,38,2) +tokeninfo(#21517,8,#20001,618,"(") +#21518=@"loc,{#10000},75,15,75,15" +locations_default(#21518,#10000,75,15,75,15) hasLocation(#21517,#21518) #21519=* -lines(#21519,#20001," type T34 = NonNullable; // string | number"," -") -#21520=@"loc,{#10000},39,1,39,74" -locations_default(#21520,#10000,39,1,39,74) +tokeninfo(#21519,8,#20001,619,"...") +#21520=@"loc,{#10000},75,16,75,18" +locations_default(#21520,#10000,75,16,75,18) hasLocation(#21519,#21520) -indentation(#10000,39," ",2) #21521=* -lines(#21521,#20001," type T35 = NonNullable; // string | string[]"," -") -#21522=@"loc,{#10000},40,1,40,85" -locations_default(#21522,#10000,40,1,40,85) +tokeninfo(#21521,6,#20001,620,"args") +#21522=@"loc,{#10000},75,19,75,22" +locations_default(#21522,#10000,75,19,75,22) hasLocation(#21521,#21522) -indentation(#10000,40," ",2) #21523=* -lines(#21523,#20001," "," -") -#21524=@"loc,{#10000},41,1,41,2" -locations_default(#21524,#10000,41,1,41,2) +tokeninfo(#21523,8,#20001,621,":") +#21524=@"loc,{#10000},75,23,75,23" +locations_default(#21524,#10000,75,23,75,23) hasLocation(#21523,#21524) #21525=* -lines(#21525,#20001," function f1(x: T, y: NonNullable) {"," -") -#21526=@"loc,{#10000},42,1,42,43" -locations_default(#21526,#10000,42,1,42,43) +tokeninfo(#21525,7,#20001,622,"any") +#21526=@"loc,{#10000},75,25,75,27" +locations_default(#21526,#10000,75,25,75,27) hasLocation(#21525,#21526) -indentation(#10000,42," ",2) #21527=* -lines(#21527,#20001," x = y; // Ok"," -") -#21528=@"loc,{#10000},43,1,43,19" -locations_default(#21528,#10000,43,1,43,19) +tokeninfo(#21527,8,#20001,623,"[") +#21528=@"loc,{#10000},75,28,75,28" +locations_default(#21528,#10000,75,28,75,28) hasLocation(#21527,#21528) -indentation(#10000,43," ",6) #21529=* -lines(#21529,#20001," }"," -") -#21530=@"loc,{#10000},44,1,44,3" -locations_default(#21530,#10000,44,1,44,3) +tokeninfo(#21529,8,#20001,624,"]") +#21530=@"loc,{#10000},75,29,75,29" +locations_default(#21530,#10000,75,29,75,29) hasLocation(#21529,#21530) -indentation(#10000,44," ",2) #21531=* -lines(#21531,#20001," "," -") -#21532=@"loc,{#10000},45,1,45,2" -locations_default(#21532,#10000,45,1,45,2) +tokeninfo(#21531,8,#20001,625,")") +#21532=@"loc,{#10000},75,30,75,30" +locations_default(#21532,#10000,75,30,75,30) hasLocation(#21531,#21532) #21533=* -lines(#21533,#20001," function f2(x: T, y: NonNullable) {"," -") -#21534=@"loc,{#10000},46,1,46,70" -locations_default(#21534,#10000,46,1,46,70) +tokeninfo(#21533,8,#20001,626,"=>") +#21534=@"loc,{#10000},75,32,75,33" +locations_default(#21534,#10000,75,32,75,33) hasLocation(#21533,#21534) -indentation(#10000,46," ",2) #21535=* -lines(#21535,#20001," x = y; // Ok"," -") -#21536=@"loc,{#10000},47,1,47,19" -locations_default(#21536,#10000,47,1,47,19) +tokeninfo(#21535,7,#20001,627,"infer") +#21536=@"loc,{#10000},75,35,75,39" +locations_default(#21536,#10000,75,35,75,39) hasLocation(#21535,#21536) -indentation(#10000,47," ",6) #21537=* -lines(#21537,#20001," let s2: string = y; // Ok"," -") -#21538=@"loc,{#10000},48,1,48,32" -locations_default(#21538,#10000,48,1,48,32) +tokeninfo(#21537,6,#20001,628,"U") +#21538=@"loc,{#10000},75,41,75,41" +locations_default(#21538,#10000,75,41,75,41) hasLocation(#21537,#21538) -indentation(#10000,48," ",6) #21539=* -lines(#21539,#20001," }"," -") -#21540=@"loc,{#10000},49,1,49,3" -locations_default(#21540,#10000,49,1,49,3) +tokeninfo(#21539,8,#20001,629,"?") +#21540=@"loc,{#10000},75,43,75,43" +locations_default(#21540,#10000,75,43,75,43) hasLocation(#21539,#21540) -indentation(#10000,49," ",2) #21541=* -lines(#21541,#20001," "," -") -#21542=@"loc,{#10000},50,1,50,2" -locations_default(#21542,#10000,50,1,50,2) +tokeninfo(#21541,6,#20001,630,"U") +#21542=@"loc,{#10000},75,45,75,45" +locations_default(#21542,#10000,75,45,75,45) hasLocation(#21541,#21542) #21543=* -lines(#21543,#20001," type FunctionPropertyNames = { [K in keyof T]: T[K] extends Function ? K : never }[keyof T];"," -") -#21544=@"loc,{#10000},51,1,51,97" -locations_default(#21544,#10000,51,1,51,97) +tokeninfo(#21543,8,#20001,631,":") +#21544=@"loc,{#10000},75,47,75,47" +locations_default(#21544,#10000,75,47,75,47) hasLocation(#21543,#21544) -indentation(#10000,51," ",2) #21545=* -lines(#21545,#20001," type FunctionProperties = Pick>;"," -") -#21546=@"loc,{#10000},52,1,52,65" -locations_default(#21546,#10000,52,1,52,65) +tokeninfo(#21545,6,#20001,632,"T") +#21546=@"loc,{#10000},76,5,76,5" +locations_default(#21546,#10000,76,5,76,5) hasLocation(#21545,#21546) -indentation(#10000,52," ",2) #21547=* -lines(#21547,#20001," "," -") -#21548=@"loc,{#10000},53,1,53,2" -locations_default(#21548,#10000,53,1,53,2) +tokeninfo(#21547,7,#20001,633,"extends") +#21548=@"loc,{#10000},76,7,76,13" +locations_default(#21548,#10000,76,7,76,13) hasLocation(#21547,#21548) #21549=* -lines(#21549,#20001," type NonFunctionPropertyNames = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T];"," -") -#21550=@"loc,{#10000},54,1,54,100" -locations_default(#21550,#10000,54,1,54,100) +tokeninfo(#21549,6,#20001,634,"Promise") +#21550=@"loc,{#10000},76,15,76,21" +locations_default(#21550,#10000,76,15,76,21) hasLocation(#21549,#21550) -indentation(#10000,54," ",2) #21551=* -lines(#21551,#20001," type NonFunctionProperties = Pick>;"," -") -#21552=@"loc,{#10000},55,1,55,71" -locations_default(#21552,#10000,55,1,55,71) +tokeninfo(#21551,8,#20001,635,"<") +#21552=@"loc,{#10000},76,22,76,22" +locations_default(#21552,#10000,76,22,76,22) hasLocation(#21551,#21552) -indentation(#10000,55," ",2) #21553=* -lines(#21553,#20001," "," -") -#21554=@"loc,{#10000},56,1,56,2" -locations_default(#21554,#10000,56,1,56,2) +tokeninfo(#21553,7,#20001,636,"infer") +#21554=@"loc,{#10000},76,23,76,27" +locations_default(#21554,#10000,76,23,76,27) hasLocation(#21553,#21554) #21555=* -lines(#21555,#20001," interface Part {"," -") -#21556=@"loc,{#10000},57,1,57,18" -locations_default(#21556,#10000,57,1,57,18) +tokeninfo(#21555,6,#20001,637,"U") +#21556=@"loc,{#10000},76,29,76,29" +locations_default(#21556,#10000,76,29,76,29) hasLocation(#21555,#21556) -indentation(#10000,57," ",2) #21557=* -lines(#21557,#20001," id: number;"," -") -#21558=@"loc,{#10000},58,1,58,17" -locations_default(#21558,#10000,58,1,58,17) +tokeninfo(#21557,8,#20001,638,">") +#21558=@"loc,{#10000},76,30,76,30" +locations_default(#21558,#10000,76,30,76,30) hasLocation(#21557,#21558) -indentation(#10000,58," ",6) #21559=* -lines(#21559,#20001," name: string;"," -") -#21560=@"loc,{#10000},59,1,59,19" -locations_default(#21560,#10000,59,1,59,19) +tokeninfo(#21559,8,#20001,639,"?") +#21560=@"loc,{#10000},76,32,76,32" +locations_default(#21560,#10000,76,32,76,32) hasLocation(#21559,#21560) -indentation(#10000,59," ",6) #21561=* -lines(#21561,#20001," subparts: Part[];"," -") -#21562=@"loc,{#10000},60,1,60,23" -locations_default(#21562,#10000,60,1,60,23) +tokeninfo(#21561,6,#20001,640,"U") +#21562=@"loc,{#10000},76,34,76,34" +locations_default(#21562,#10000,76,34,76,34) hasLocation(#21561,#21562) -indentation(#10000,60," ",6) #21563=* -lines(#21563,#20001," updatePart(newName: string): void;"," -") -#21564=@"loc,{#10000},61,1,61,40" -locations_default(#21564,#10000,61,1,61,40) +tokeninfo(#21563,8,#20001,641,":") +#21564=@"loc,{#10000},76,36,76,36" +locations_default(#21564,#10000,76,36,76,36) hasLocation(#21563,#21564) -indentation(#10000,61," ",6) #21565=* -lines(#21565,#20001," }"," -") -#21566=@"loc,{#10000},62,1,62,3" -locations_default(#21566,#10000,62,1,62,3) +tokeninfo(#21565,6,#20001,642,"T") +#21566=@"loc,{#10000},77,5,77,5" +locations_default(#21566,#10000,77,5,77,5) hasLocation(#21565,#21566) -indentation(#10000,62," ",2) #21567=* -lines(#21567,#20001," "," -") -#21568=@"loc,{#10000},63,1,63,2" -locations_default(#21568,#10000,63,1,63,2) +tokeninfo(#21567,8,#20001,643,";") +#21568=@"loc,{#10000},77,6,77,6" +locations_default(#21568,#10000,77,6,77,6) hasLocation(#21567,#21568) #21569=* -lines(#21569,#20001," type T40 = FunctionPropertyNames; // ""updatePart"""," -") -#21570=@"loc,{#10000},64,1,64,58" -locations_default(#21570,#10000,64,1,64,58) +tokeninfo(#21569,7,#20001,644,"type") +#21570=@"loc,{#10000},79,3,79,6" +locations_default(#21570,#10000,79,3,79,6) hasLocation(#21569,#21570) -indentation(#10000,64," ",2) #21571=* -lines(#21571,#20001," type T41 = NonFunctionPropertyNames; // ""id"" | ""name"" | ""subparts"""," -") -#21572=@"loc,{#10000},65,1,65,75" -locations_default(#21572,#10000,65,1,65,75) +tokeninfo(#21571,6,#20001,645,"T0") +#21572=@"loc,{#10000},79,8,79,9" +locations_default(#21572,#10000,79,8,79,9) hasLocation(#21571,#21572) -indentation(#10000,65," ",2) #21573=* -lines(#21573,#20001," type T42 = FunctionProperties; // { updatePart(newName: string): void }"," -") -#21574=@"loc,{#10000},66,1,66,80" -locations_default(#21574,#10000,66,1,66,80) +tokeninfo(#21573,8,#20001,646,"=") +#21574=@"loc,{#10000},79,11,79,11" +locations_default(#21574,#10000,79,11,79,11) hasLocation(#21573,#21574) -indentation(#10000,66," ",2) #21575=* -lines(#21575,#20001," type T43 = NonFunctionProperties; // { id: number, name: string, subparts: Part[] }"," -") -#21576=@"loc,{#10000},67,1,67,92" -locations_default(#21576,#10000,67,1,67,92) +tokeninfo(#21575,6,#20001,647,"Unpacked") +#21576=@"loc,{#10000},79,13,79,20" +locations_default(#21576,#10000,79,13,79,20) hasLocation(#21575,#21576) -indentation(#10000,67," ",2) #21577=* -lines(#21577,#20001," "," -") -#21578=@"loc,{#10000},68,1,68,2" -locations_default(#21578,#10000,68,1,68,2) +tokeninfo(#21577,8,#20001,648,"<") +#21578=@"loc,{#10000},79,21,79,21" +locations_default(#21578,#10000,79,21,79,21) hasLocation(#21577,#21578) #21579=* -lines(#21579,#20001," type ReturnType = T extends (...args: any[]) => infer R ? R : any;"," -") -#21580=@"loc,{#10000},69,1,69,71" -locations_default(#21580,#10000,69,1,69,71) +tokeninfo(#21579,7,#20001,649,"string") +#21580=@"loc,{#10000},79,22,79,27" +locations_default(#21580,#10000,79,22,79,27) hasLocation(#21579,#21580) -indentation(#10000,69," ",2) #21581=* -lines(#21581,#20001,"}"," -") -#21582=@"loc,{#10000},70,1,70,1" -locations_default(#21582,#10000,70,1,70,1) +tokeninfo(#21581,8,#20001,650,">") +#21582=@"loc,{#10000},79,28,79,28" +locations_default(#21582,#10000,79,28,79,28) hasLocation(#21581,#21582) #21583=* -lines(#21583,#20001,""," -") -#21584=@"loc,{#10000},71,1,71,0" -locations_default(#21584,#10000,71,1,71,0) +tokeninfo(#21583,8,#20001,651,";") +#21584=@"loc,{#10000},79,29,79,29" +locations_default(#21584,#10000,79,29,79,29) hasLocation(#21583,#21584) #21585=* -lines(#21585,#20001,"namespace ConditionalTypes2 {"," -") -#21586=@"loc,{#10000},72,1,72,29" -locations_default(#21586,#10000,72,1,72,29) +tokeninfo(#21585,7,#20001,652,"type") +#21586=@"loc,{#10000},80,3,80,6" +locations_default(#21586,#10000,80,3,80,6) hasLocation(#21585,#21586) +next_token(#20056,#21585) #21587=* -lines(#21587,#20001," type Unpacked ="," -") -#21588=@"loc,{#10000},73,1,73,20" -locations_default(#21588,#10000,73,1,73,20) +tokeninfo(#21587,6,#20001,653,"T1") +#21588=@"loc,{#10000},80,8,80,9" +locations_default(#21588,#10000,80,8,80,9) hasLocation(#21587,#21588) -indentation(#10000,73," ",2) #21589=* -lines(#21589,#20001," T extends (infer U)[] ? U :"," -") -#21590=@"loc,{#10000},74,1,74,31" -locations_default(#21590,#10000,74,1,74,31) +tokeninfo(#21589,8,#20001,654,"=") +#21590=@"loc,{#10000},80,11,80,11" +locations_default(#21590,#10000,80,11,80,11) hasLocation(#21589,#21590) -indentation(#10000,74," ",4) #21591=* -lines(#21591,#20001," T extends (...args: any[]) => infer U ? U :"," -") -#21592=@"loc,{#10000},75,1,75,47" -locations_default(#21592,#10000,75,1,75,47) +tokeninfo(#21591,6,#20001,655,"Unpacked") +#21592=@"loc,{#10000},80,13,80,20" +locations_default(#21592,#10000,80,13,80,20) hasLocation(#21591,#21592) -indentation(#10000,75," ",4) #21593=* -lines(#21593,#20001," T extends Promise ? U :"," -") -#21594=@"loc,{#10000},76,1,76,36" -locations_default(#21594,#10000,76,1,76,36) +tokeninfo(#21593,8,#20001,656,"<") +#21594=@"loc,{#10000},80,21,80,21" +locations_default(#21594,#10000,80,21,80,21) hasLocation(#21593,#21594) -indentation(#10000,76," ",4) #21595=* -lines(#21595,#20001," T;"," -") -#21596=@"loc,{#10000},77,1,77,6" -locations_default(#21596,#10000,77,1,77,6) +tokeninfo(#21595,7,#20001,657,"string") +#21596=@"loc,{#10000},80,22,80,27" +locations_default(#21596,#10000,80,22,80,27) hasLocation(#21595,#21596) -indentation(#10000,77," ",4) #21597=* -lines(#21597,#20001," "," -") -#21598=@"loc,{#10000},78,1,78,2" -locations_default(#21598,#10000,78,1,78,2) +tokeninfo(#21597,8,#20001,658,"[") +#21598=@"loc,{#10000},80,28,80,28" +locations_default(#21598,#10000,80,28,80,28) hasLocation(#21597,#21598) #21599=* -lines(#21599,#20001," type T0 = Unpacked; // string"," -") -#21600=@"loc,{#10000},79,1,79,40" -locations_default(#21600,#10000,79,1,79,40) +tokeninfo(#21599,8,#20001,659,"]") +#21600=@"loc,{#10000},80,29,80,29" +locations_default(#21600,#10000,80,29,80,29) hasLocation(#21599,#21600) -indentation(#10000,79," ",2) #21601=* -lines(#21601,#20001," type T1 = Unpacked; // string"," -") -#21602=@"loc,{#10000},80,1,80,42" -locations_default(#21602,#10000,80,1,80,42) +tokeninfo(#21601,8,#20001,660,">") +#21602=@"loc,{#10000},80,30,80,30" +locations_default(#21602,#10000,80,30,80,30) hasLocation(#21601,#21602) -indentation(#10000,80," ",2) #21603=* -lines(#21603,#20001," type T2 = Unpacked<() => string>; // string"," -") -#21604=@"loc,{#10000},81,1,81,46" -locations_default(#21604,#10000,81,1,81,46) +tokeninfo(#21603,8,#20001,661,";") +#21604=@"loc,{#10000},80,31,80,31" +locations_default(#21604,#10000,80,31,80,31) hasLocation(#21603,#21604) -indentation(#10000,81," ",2) #21605=* -lines(#21605,#20001," type T3 = Unpacked>; // string"," -") -#21606=@"loc,{#10000},82,1,82,49" -locations_default(#21606,#10000,82,1,82,49) +tokeninfo(#21605,7,#20001,662,"type") +#21606=@"loc,{#10000},81,3,81,6" +locations_default(#21606,#10000,81,3,81,6) hasLocation(#21605,#21606) -indentation(#10000,82," ",2) +next_token(#20058,#21605) #21607=* -lines(#21607,#20001," type T4 = Unpacked[]>; // Promise"," -") -#21608=@"loc,{#10000},83,1,83,60" -locations_default(#21608,#10000,83,1,83,60) +tokeninfo(#21607,6,#20001,663,"T2") +#21608=@"loc,{#10000},81,8,81,9" +locations_default(#21608,#10000,81,8,81,9) hasLocation(#21607,#21608) -indentation(#10000,83," ",2) #21609=* -lines(#21609,#20001," type T5 = Unpacked[]>>; // string"," -") -#21610=@"loc,{#10000},84,1,84,61" -locations_default(#21610,#10000,84,1,84,61) +tokeninfo(#21609,8,#20001,664,"=") +#21610=@"loc,{#10000},81,11,81,11" +locations_default(#21610,#10000,81,11,81,11) hasLocation(#21609,#21610) -indentation(#10000,84," ",2) #21611=* -lines(#21611,#20001," "," -") -#21612=@"loc,{#10000},85,1,85,2" -locations_default(#21612,#10000,85,1,85,2) +tokeninfo(#21611,6,#20001,665,"Unpacked") +#21612=@"loc,{#10000},81,13,81,20" +locations_default(#21612,#10000,81,13,81,20) hasLocation(#21611,#21612) #21613=* -lines(#21613,#20001," type Foo = T extends { a: infer U, b: infer U } ? U : never;"," -") -#21614=@"loc,{#10000},86,1,86,65" -locations_default(#21614,#10000,86,1,86,65) +tokeninfo(#21613,8,#20001,666,"<") +#21614=@"loc,{#10000},81,21,81,21" +locations_default(#21614,#10000,81,21,81,21) hasLocation(#21613,#21614) -indentation(#10000,86," ",2) #21615=* -lines(#21615,#20001," type T10 = Foo<{ a: string, b: string }>; // string"," -") -#21616=@"loc,{#10000},87,1,87,54" -locations_default(#21616,#10000,87,1,87,54) +tokeninfo(#21615,8,#20001,667,"(") +#21616=@"loc,{#10000},81,22,81,22" +locations_default(#21616,#10000,81,22,81,22) hasLocation(#21615,#21616) -indentation(#10000,87," ",2) #21617=* -lines(#21617,#20001," type T11 = Foo<{ a: string, b: number }>; // string | number"," -") -#21618=@"loc,{#10000},88,1,88,63" -locations_default(#21618,#10000,88,1,88,63) +tokeninfo(#21617,8,#20001,668,")") +#21618=@"loc,{#10000},81,23,81,23" +locations_default(#21618,#10000,81,23,81,23) hasLocation(#21617,#21618) -indentation(#10000,88," ",2) #21619=* -lines(#21619,#20001," "," -") -#21620=@"loc,{#10000},89,1,89,2" -locations_default(#21620,#10000,89,1,89,2) +tokeninfo(#21619,8,#20001,669,"=>") +#21620=@"loc,{#10000},81,25,81,26" +locations_default(#21620,#10000,81,25,81,26) hasLocation(#21619,#21620) #21621=* -lines(#21621,#20001," type Bar = T extends { a: (x: infer U) => void, b: (x: infer U) => void } ? U : never;"," -") -#21622=@"loc,{#10000},90,1,90,91" -locations_default(#21622,#10000,90,1,90,91) +tokeninfo(#21621,7,#20001,670,"string") +#21622=@"loc,{#10000},81,28,81,33" +locations_default(#21622,#10000,81,28,81,33) hasLocation(#21621,#21622) -indentation(#10000,90," ",2) #21623=* -lines(#21623,#20001," type T20 = Bar<{ a: (x: string) => void, b: (x: string) => void }>; // string"," -") -#21624=@"loc,{#10000},91,1,91,80" -locations_default(#21624,#10000,91,1,91,80) +tokeninfo(#21623,8,#20001,671,">") +#21624=@"loc,{#10000},81,34,81,34" +locations_default(#21624,#10000,81,34,81,34) hasLocation(#21623,#21624) -indentation(#10000,91," ",2) #21625=* -lines(#21625,#20001," type T21 = Bar<{ a: (x: string) => void, b: (x: number) => void }>; // string & number"," -") -#21626=@"loc,{#10000},92,1,92,89" -locations_default(#21626,#10000,92,1,92,89) +tokeninfo(#21625,8,#20001,672,";") +#21626=@"loc,{#10000},81,35,81,35" +locations_default(#21626,#10000,81,35,81,35) hasLocation(#21625,#21626) -indentation(#10000,92," ",2) #21627=* -lines(#21627,#20001," "," -") -#21628=@"loc,{#10000},93,1,93,2" -locations_default(#21628,#10000,93,1,93,2) +tokeninfo(#21627,7,#20001,673,"type") +#21628=@"loc,{#10000},82,3,82,6" +locations_default(#21628,#10000,82,3,82,6) hasLocation(#21627,#21628) +next_token(#20060,#21627) #21629=* -lines(#21629,#20001," declare function foo(x: string): number;"," -") -#21630=@"loc,{#10000},94,1,94,42" -locations_default(#21630,#10000,94,1,94,42) +tokeninfo(#21629,6,#20001,674,"T3") +#21630=@"loc,{#10000},82,8,82,9" +locations_default(#21630,#10000,82,8,82,9) hasLocation(#21629,#21630) -indentation(#10000,94," ",2) #21631=* -lines(#21631,#20001," declare function foo(x: number): string;"," -") -#21632=@"loc,{#10000},95,1,95,42" -locations_default(#21632,#10000,95,1,95,42) +tokeninfo(#21631,8,#20001,675,"=") +#21632=@"loc,{#10000},82,11,82,11" +locations_default(#21632,#10000,82,11,82,11) hasLocation(#21631,#21632) -indentation(#10000,95," ",2) #21633=* -lines(#21633,#20001," declare function foo(x: string | number): string | number;"," -") -#21634=@"loc,{#10000},96,1,96,60" -locations_default(#21634,#10000,96,1,96,60) +tokeninfo(#21633,6,#20001,676,"Unpacked") +#21634=@"loc,{#10000},82,13,82,20" +locations_default(#21634,#10000,82,13,82,20) hasLocation(#21633,#21634) -indentation(#10000,96," ",2) #21635=* -lines(#21635,#20001," type T30 = ReturnType; // string | number"," -") -#21636=@"loc,{#10000},97,1,97,56" -locations_default(#21636,#10000,97,1,97,56) +tokeninfo(#21635,8,#20001,677,"<") +#21636=@"loc,{#10000},82,21,82,21" +locations_default(#21636,#10000,82,21,82,21) hasLocation(#21635,#21636) -indentation(#10000,97," ",2) #21637=* -lines(#21637,#20001," "," -") -#21638=@"loc,{#10000},98,1,98,2" -locations_default(#21638,#10000,98,1,98,2) +tokeninfo(#21637,6,#20001,678,"Promise") +#21638=@"loc,{#10000},82,22,82,28" +locations_default(#21638,#10000,82,22,82,28) hasLocation(#21637,#21638) #21639=* -lines(#21639,#20001," type AnyFunction = (...args: any[]) => any;"," -") -#21640=@"loc,{#10000},99,1,99,45" -locations_default(#21640,#10000,99,1,99,45) +tokeninfo(#21639,8,#20001,679,"<") +#21640=@"loc,{#10000},82,29,82,29" +locations_default(#21640,#10000,82,29,82,29) hasLocation(#21639,#21640) -indentation(#10000,99," ",2) #21641=* -lines(#21641,#20001," type ReturnType = T extends (...args: any[]) => infer R ? R : any;"," -") -#21642=@"loc,{#10000},100,1,100,91" -locations_default(#21642,#10000,100,1,100,91) +tokeninfo(#21641,7,#20001,680,"string") +#21642=@"loc,{#10000},82,30,82,35" +locations_default(#21642,#10000,82,30,82,35) hasLocation(#21641,#21642) -indentation(#10000,100," ",2) #21643=* -lines(#21643,#20001,"}"," -") -#21644=@"loc,{#10000},101,1,101,1" -locations_default(#21644,#10000,101,1,101,1) +tokeninfo(#21643,8,#20001,681,">") +#21644=@"loc,{#10000},82,36,82,36" +locations_default(#21644,#10000,82,36,82,36) hasLocation(#21643,#21644) #21645=* -lines(#21645,#20001,""," -") -#21646=@"loc,{#10000},102,1,102,0" -locations_default(#21646,#10000,102,1,102,0) +tokeninfo(#21645,8,#20001,682,">") +#21646=@"loc,{#10000},82,37,82,37" +locations_default(#21646,#10000,82,37,82,37) hasLocation(#21645,#21646) -numlines(#20001,102,79,38) #21647=* -tokeninfo(#21647,7,#20001,0,"namespace") -#21648=@"loc,{#10000},1,1,1,9" -locations_default(#21648,#10000,1,1,1,9) +tokeninfo(#21647,8,#20001,683,";") +#21648=@"loc,{#10000},82,38,82,38" +locations_default(#21648,#10000,82,38,82,38) hasLocation(#21647,#21648) #21649=* -tokeninfo(#21649,6,#20001,1,"ConditionalTypes1") -hasLocation(#21649,#20010) -#21650=* -tokeninfo(#21650,8,#20001,2,"{") -#21651=@"loc,{#10000},1,29,1,29" -locations_default(#21651,#10000,1,29,1,29) -hasLocation(#21650,#21651) -#21652=* -tokeninfo(#21652,7,#20001,3,"type") -#21653=@"loc,{#10000},2,3,2,6" -locations_default(#21653,#10000,2,3,2,6) -hasLocation(#21652,#21653) -#21654=* -tokeninfo(#21654,6,#20001,4,"TypeName") -hasLocation(#21654,#20051) +tokeninfo(#21649,7,#20001,684,"type") +#21650=@"loc,{#10000},83,3,83,6" +locations_default(#21650,#10000,83,3,83,6) +hasLocation(#21649,#21650) +next_token(#20062,#21649) +#21651=* +tokeninfo(#21651,6,#20001,685,"T4") +#21652=@"loc,{#10000},83,8,83,9" +locations_default(#21652,#10000,83,8,83,9) +hasLocation(#21651,#21652) +#21653=* +tokeninfo(#21653,8,#20001,686,"=") +#21654=@"loc,{#10000},83,11,83,11" +locations_default(#21654,#10000,83,11,83,11) +hasLocation(#21653,#21654) #21655=* -tokeninfo(#21655,8,#20001,5,"<") -#21656=@"loc,{#10000},2,16,2,16" -locations_default(#21656,#10000,2,16,2,16) +tokeninfo(#21655,6,#20001,687,"Unpacked") +#21656=@"loc,{#10000},83,13,83,20" +locations_default(#21656,#10000,83,13,83,20) hasLocation(#21655,#21656) #21657=* -tokeninfo(#21657,6,#20001,6,"T") -hasLocation(#21657,#20055) -#21658=* -tokeninfo(#21658,8,#20001,7,">") -#21659=@"loc,{#10000},2,18,2,18" -locations_default(#21659,#10000,2,18,2,18) -hasLocation(#21658,#21659) -#21660=* -tokeninfo(#21660,8,#20001,8,"=") -#21661=@"loc,{#10000},2,20,2,20" -locations_default(#21661,#10000,2,20,2,20) -hasLocation(#21660,#21661) -#21662=* -tokeninfo(#21662,6,#20001,9,"T") -hasLocation(#21662,#20060) +tokeninfo(#21657,8,#20001,688,"<") +#21658=@"loc,{#10000},83,21,83,21" +locations_default(#21658,#10000,83,21,83,21) +hasLocation(#21657,#21658) +#21659=* +tokeninfo(#21659,6,#20001,689,"Promise") +#21660=@"loc,{#10000},83,22,83,28" +locations_default(#21660,#10000,83,22,83,28) +hasLocation(#21659,#21660) +#21661=* +tokeninfo(#21661,8,#20001,690,"<") +#21662=@"loc,{#10000},83,29,83,29" +locations_default(#21662,#10000,83,29,83,29) +hasLocation(#21661,#21662) #21663=* -tokeninfo(#21663,7,#20001,10,"extends") -#21664=@"loc,{#10000},3,9,3,15" -locations_default(#21664,#10000,3,9,3,15) +tokeninfo(#21663,7,#20001,691,"string") +#21664=@"loc,{#10000},83,30,83,35" +locations_default(#21664,#10000,83,30,83,35) hasLocation(#21663,#21664) #21665=* -tokeninfo(#21665,7,#20001,11,"string") -hasLocation(#21665,#20062) -#21666=* -tokeninfo(#21666,8,#20001,12,"?") -#21667=@"loc,{#10000},3,24,3,24" -locations_default(#21667,#10000,3,24,3,24) -hasLocation(#21666,#21667) -#21668=* -tokeninfo(#21668,4,#20001,13,"""string""") -hasLocation(#21668,#20064) +tokeninfo(#21665,8,#20001,692,">") +#21666=@"loc,{#10000},83,36,83,36" +locations_default(#21666,#10000,83,36,83,36) +hasLocation(#21665,#21666) +#21667=* +tokeninfo(#21667,8,#20001,693,"[") +#21668=@"loc,{#10000},83,37,83,37" +locations_default(#21668,#10000,83,37,83,37) +hasLocation(#21667,#21668) #21669=* -tokeninfo(#21669,8,#20001,14,":") -#21670=@"loc,{#10000},3,35,3,35" -locations_default(#21670,#10000,3,35,3,35) +tokeninfo(#21669,8,#20001,694,"]") +#21670=@"loc,{#10000},83,38,83,38" +locations_default(#21670,#10000,83,38,83,38) hasLocation(#21669,#21670) #21671=* -tokeninfo(#21671,6,#20001,15,"T") -hasLocation(#21671,#20068) -#21672=* -tokeninfo(#21672,7,#20001,16,"extends") -#21673=@"loc,{#10000},4,9,4,15" -locations_default(#21673,#10000,4,9,4,15) -hasLocation(#21672,#21673) -#21674=* -tokeninfo(#21674,7,#20001,17,"number") -hasLocation(#21674,#20070) +tokeninfo(#21671,8,#20001,695,">") +#21672=@"loc,{#10000},83,39,83,39" +locations_default(#21672,#10000,83,39,83,39) +hasLocation(#21671,#21672) +#21673=* +tokeninfo(#21673,8,#20001,696,";") +#21674=@"loc,{#10000},83,40,83,40" +locations_default(#21674,#10000,83,40,83,40) +hasLocation(#21673,#21674) #21675=* -tokeninfo(#21675,8,#20001,18,"?") -#21676=@"loc,{#10000},4,24,4,24" -locations_default(#21676,#10000,4,24,4,24) +tokeninfo(#21675,7,#20001,697,"type") +#21676=@"loc,{#10000},84,3,84,6" +locations_default(#21676,#10000,84,3,84,6) hasLocation(#21675,#21676) +next_token(#20064,#21675) #21677=* -tokeninfo(#21677,4,#20001,19,"""number""") -hasLocation(#21677,#20072) -#21678=* -tokeninfo(#21678,8,#20001,20,":") -#21679=@"loc,{#10000},4,35,4,35" -locations_default(#21679,#10000,4,35,4,35) -hasLocation(#21678,#21679) -#21680=* -tokeninfo(#21680,6,#20001,21,"T") -hasLocation(#21680,#20076) +tokeninfo(#21677,6,#20001,698,"T5") +#21678=@"loc,{#10000},84,8,84,9" +locations_default(#21678,#10000,84,8,84,9) +hasLocation(#21677,#21678) +#21679=* +tokeninfo(#21679,8,#20001,699,"=") +#21680=@"loc,{#10000},84,11,84,11" +locations_default(#21680,#10000,84,11,84,11) +hasLocation(#21679,#21680) #21681=* -tokeninfo(#21681,7,#20001,22,"extends") -#21682=@"loc,{#10000},5,9,5,15" -locations_default(#21682,#10000,5,9,5,15) +tokeninfo(#21681,6,#20001,700,"Unpacked") +#21682=@"loc,{#10000},84,13,84,20" +locations_default(#21682,#10000,84,13,84,20) hasLocation(#21681,#21682) #21683=* -tokeninfo(#21683,7,#20001,23,"boolean") -hasLocation(#21683,#20078) -#21684=* -tokeninfo(#21684,8,#20001,24,"?") -#21685=@"loc,{#10000},5,25,5,25" -locations_default(#21685,#10000,5,25,5,25) -hasLocation(#21684,#21685) -#21686=* -tokeninfo(#21686,4,#20001,25,"""boolean""") -hasLocation(#21686,#20080) +tokeninfo(#21683,8,#20001,701,"<") +#21684=@"loc,{#10000},84,21,84,21" +locations_default(#21684,#10000,84,21,84,21) +hasLocation(#21683,#21684) +#21685=* +tokeninfo(#21685,6,#20001,702,"Unpacked") +#21686=@"loc,{#10000},84,22,84,29" +locations_default(#21686,#10000,84,22,84,29) +hasLocation(#21685,#21686) #21687=* -tokeninfo(#21687,8,#20001,26,":") -#21688=@"loc,{#10000},5,37,5,37" -locations_default(#21688,#10000,5,37,5,37) +tokeninfo(#21687,8,#20001,703,"<") +#21688=@"loc,{#10000},84,30,84,30" +locations_default(#21688,#10000,84,30,84,30) hasLocation(#21687,#21688) #21689=* -tokeninfo(#21689,6,#20001,27,"T") -hasLocation(#21689,#20084) -#21690=* -tokeninfo(#21690,7,#20001,28,"extends") -#21691=@"loc,{#10000},6,9,6,15" -locations_default(#21691,#10000,6,9,6,15) -hasLocation(#21690,#21691) -#21692=* -tokeninfo(#21692,7,#20001,29,"undefined") -hasLocation(#21692,#20086) +tokeninfo(#21689,6,#20001,704,"Promise") +#21690=@"loc,{#10000},84,31,84,37" +locations_default(#21690,#10000,84,31,84,37) +hasLocation(#21689,#21690) +#21691=* +tokeninfo(#21691,8,#20001,705,"<") +#21692=@"loc,{#10000},84,38,84,38" +locations_default(#21692,#10000,84,38,84,38) +hasLocation(#21691,#21692) #21693=* -tokeninfo(#21693,8,#20001,30,"?") -#21694=@"loc,{#10000},6,27,6,27" -locations_default(#21694,#10000,6,27,6,27) +tokeninfo(#21693,7,#20001,706,"string") +#21694=@"loc,{#10000},84,39,84,44" +locations_default(#21694,#10000,84,39,84,44) hasLocation(#21693,#21694) #21695=* -tokeninfo(#21695,4,#20001,31,"""undefined""") -hasLocation(#21695,#20088) -#21696=* -tokeninfo(#21696,8,#20001,32,":") -#21697=@"loc,{#10000},6,41,6,41" -locations_default(#21697,#10000,6,41,6,41) -hasLocation(#21696,#21697) -#21698=* -tokeninfo(#21698,6,#20001,33,"T") -hasLocation(#21698,#20092) +tokeninfo(#21695,8,#20001,707,">") +#21696=@"loc,{#10000},84,45,84,45" +locations_default(#21696,#10000,84,45,84,45) +hasLocation(#21695,#21696) +#21697=* +tokeninfo(#21697,8,#20001,708,"[") +#21698=@"loc,{#10000},84,46,84,46" +locations_default(#21698,#10000,84,46,84,46) +hasLocation(#21697,#21698) #21699=* -tokeninfo(#21699,7,#20001,34,"extends") -#21700=@"loc,{#10000},7,9,7,15" -locations_default(#21700,#10000,7,9,7,15) +tokeninfo(#21699,8,#20001,709,"]") +#21700=@"loc,{#10000},84,47,84,47" +locations_default(#21700,#10000,84,47,84,47) hasLocation(#21699,#21700) #21701=* -tokeninfo(#21701,6,#20001,35,"Function") -hasLocation(#21701,#20094) -#21702=* -tokeninfo(#21702,8,#20001,36,"?") -#21703=@"loc,{#10000},7,26,7,26" -locations_default(#21703,#10000,7,26,7,26) -hasLocation(#21702,#21703) -#21704=* -tokeninfo(#21704,4,#20001,37,"""function""") -hasLocation(#21704,#20096) +tokeninfo(#21701,8,#20001,710,">") +#21702=@"loc,{#10000},84,48,84,48" +locations_default(#21702,#10000,84,48,84,48) +hasLocation(#21701,#21702) +#21703=* +tokeninfo(#21703,8,#20001,711,">") +#21704=@"loc,{#10000},84,49,84,49" +locations_default(#21704,#10000,84,49,84,49) +hasLocation(#21703,#21704) #21705=* -tokeninfo(#21705,8,#20001,38,":") -#21706=@"loc,{#10000},7,39,7,39" -locations_default(#21706,#10000,7,39,7,39) +tokeninfo(#21705,8,#20001,712,";") +#21706=@"loc,{#10000},84,50,84,50" +locations_default(#21706,#10000,84,50,84,50) hasLocation(#21705,#21706) #21707=* -tokeninfo(#21707,4,#20001,39,"""object""") -hasLocation(#21707,#20098) -#21708=* -tokeninfo(#21708,8,#20001,40,";") -#21709=@"loc,{#10000},8,15,8,15" -locations_default(#21709,#10000,8,15,8,15) -hasLocation(#21708,#21709) -#21710=* -tokeninfo(#21710,7,#20001,41,"type") -#21711=@"loc,{#10000},10,3,10,6" -locations_default(#21711,#10000,10,3,10,6) -hasLocation(#21710,#21711) -#21712=* -tokeninfo(#21712,6,#20001,42,"T0") -hasLocation(#21712,#20102) +tokeninfo(#21707,7,#20001,713,"type") +#21708=@"loc,{#10000},86,3,86,6" +locations_default(#21708,#10000,86,3,86,6) +hasLocation(#21707,#21708) +next_token(#20066,#21707) +#21709=* +tokeninfo(#21709,6,#20001,714,"Foo") +#21710=@"loc,{#10000},86,8,86,10" +locations_default(#21710,#10000,86,8,86,10) +hasLocation(#21709,#21710) +#21711=* +tokeninfo(#21711,8,#20001,715,"<") +#21712=@"loc,{#10000},86,11,86,11" +locations_default(#21712,#10000,86,11,86,11) +hasLocation(#21711,#21712) #21713=* -tokeninfo(#21713,8,#20001,43,"=") -#21714=@"loc,{#10000},10,11,10,11" -locations_default(#21714,#10000,10,11,10,11) +tokeninfo(#21713,6,#20001,716,"T") +#21714=@"loc,{#10000},86,12,86,12" +locations_default(#21714,#10000,86,12,86,12) hasLocation(#21713,#21714) #21715=* -tokeninfo(#21715,6,#20001,44,"TypeName") -hasLocation(#21715,#20106) -#21716=* -tokeninfo(#21716,8,#20001,45,"<") -#21717=@"loc,{#10000},10,21,10,21" -locations_default(#21717,#10000,10,21,10,21) -hasLocation(#21716,#21717) -#21718=* -tokeninfo(#21718,7,#20001,46,"string") -hasLocation(#21718,#20108) +tokeninfo(#21715,8,#20001,717,">") +#21716=@"loc,{#10000},86,13,86,13" +locations_default(#21716,#10000,86,13,86,13) +hasLocation(#21715,#21716) +#21717=* +tokeninfo(#21717,8,#20001,718,"=") +#21718=@"loc,{#10000},86,15,86,15" +locations_default(#21718,#10000,86,15,86,15) +hasLocation(#21717,#21718) #21719=* -tokeninfo(#21719,8,#20001,47,">") -#21720=@"loc,{#10000},10,28,10,28" -locations_default(#21720,#10000,10,28,10,28) +tokeninfo(#21719,6,#20001,719,"T") +#21720=@"loc,{#10000},86,17,86,17" +locations_default(#21720,#10000,86,17,86,17) hasLocation(#21719,#21720) #21721=* -tokeninfo(#21721,8,#20001,48,";") -#21722=@"loc,{#10000},10,29,10,29" -locations_default(#21722,#10000,10,29,10,29) +tokeninfo(#21721,7,#20001,720,"extends") +#21722=@"loc,{#10000},86,19,86,25" +locations_default(#21722,#10000,86,19,86,25) hasLocation(#21721,#21722) #21723=* -tokeninfo(#21723,7,#20001,49,"type") -#21724=@"loc,{#10000},11,3,11,6" -locations_default(#21724,#10000,11,3,11,6) +tokeninfo(#21723,8,#20001,721,"{") +#21724=@"loc,{#10000},86,27,86,27" +locations_default(#21724,#10000,86,27,86,27) hasLocation(#21723,#21724) -next_token(#21367,#21723) #21725=* -tokeninfo(#21725,6,#20001,50,"T1") -hasLocation(#21725,#20112) -#21726=* -tokeninfo(#21726,8,#20001,51,"=") -#21727=@"loc,{#10000},11,11,11,11" -locations_default(#21727,#10000,11,11,11,11) -hasLocation(#21726,#21727) -#21728=* -tokeninfo(#21728,6,#20001,52,"TypeName") -hasLocation(#21728,#20116) +tokeninfo(#21725,6,#20001,722,"a") +#21726=@"loc,{#10000},86,29,86,29" +locations_default(#21726,#10000,86,29,86,29) +hasLocation(#21725,#21726) +#21727=* +tokeninfo(#21727,8,#20001,723,":") +#21728=@"loc,{#10000},86,30,86,30" +locations_default(#21728,#10000,86,30,86,30) +hasLocation(#21727,#21728) #21729=* -tokeninfo(#21729,8,#20001,53,"<") -#21730=@"loc,{#10000},11,21,11,21" -locations_default(#21730,#10000,11,21,11,21) +tokeninfo(#21729,7,#20001,724,"infer") +#21730=@"loc,{#10000},86,32,86,36" +locations_default(#21730,#10000,86,32,86,36) hasLocation(#21729,#21730) #21731=* -tokeninfo(#21731,4,#20001,54,"""a""") -hasLocation(#21731,#20118) -#21732=* -tokeninfo(#21732,8,#20001,55,">") -#21733=@"loc,{#10000},11,25,11,25" -locations_default(#21733,#10000,11,25,11,25) -hasLocation(#21732,#21733) -#21734=* -tokeninfo(#21734,8,#20001,56,";") -#21735=@"loc,{#10000},11,26,11,26" -locations_default(#21735,#10000,11,26,11,26) -hasLocation(#21734,#21735) -#21736=* -tokeninfo(#21736,7,#20001,57,"type") -#21737=@"loc,{#10000},12,3,12,6" -locations_default(#21737,#10000,12,3,12,6) -hasLocation(#21736,#21737) -next_token(#21369,#21736) -#21738=* -tokeninfo(#21738,6,#20001,58,"T2") -hasLocation(#21738,#20122) +tokeninfo(#21731,6,#20001,725,"U") +#21732=@"loc,{#10000},86,38,86,38" +locations_default(#21732,#10000,86,38,86,38) +hasLocation(#21731,#21732) +#21733=* +tokeninfo(#21733,8,#20001,726,",") +#21734=@"loc,{#10000},86,39,86,39" +locations_default(#21734,#10000,86,39,86,39) +hasLocation(#21733,#21734) +#21735=* +tokeninfo(#21735,6,#20001,727,"b") +#21736=@"loc,{#10000},86,41,86,41" +locations_default(#21736,#10000,86,41,86,41) +hasLocation(#21735,#21736) +#21737=* +tokeninfo(#21737,8,#20001,728,":") +#21738=@"loc,{#10000},86,42,86,42" +locations_default(#21738,#10000,86,42,86,42) +hasLocation(#21737,#21738) #21739=* -tokeninfo(#21739,8,#20001,59,"=") -#21740=@"loc,{#10000},12,11,12,11" -locations_default(#21740,#10000,12,11,12,11) +tokeninfo(#21739,7,#20001,729,"infer") +#21740=@"loc,{#10000},86,44,86,48" +locations_default(#21740,#10000,86,44,86,48) hasLocation(#21739,#21740) #21741=* -tokeninfo(#21741,6,#20001,60,"TypeName") -hasLocation(#21741,#20126) -#21742=* -tokeninfo(#21742,8,#20001,61,"<") -#21743=@"loc,{#10000},12,21,12,21" -locations_default(#21743,#10000,12,21,12,21) -hasLocation(#21742,#21743) -#21744=* -tokeninfo(#21744,2,#20001,62,"true") -hasLocation(#21744,#20128) +tokeninfo(#21741,6,#20001,730,"U") +#21742=@"loc,{#10000},86,50,86,50" +locations_default(#21742,#10000,86,50,86,50) +hasLocation(#21741,#21742) +#21743=* +tokeninfo(#21743,8,#20001,731,"}") +#21744=@"loc,{#10000},86,52,86,52" +locations_default(#21744,#10000,86,52,86,52) +hasLocation(#21743,#21744) #21745=* -tokeninfo(#21745,8,#20001,63,">") -#21746=@"loc,{#10000},12,26,12,26" -locations_default(#21746,#10000,12,26,12,26) +tokeninfo(#21745,8,#20001,732,"?") +#21746=@"loc,{#10000},86,54,86,54" +locations_default(#21746,#10000,86,54,86,54) hasLocation(#21745,#21746) #21747=* -tokeninfo(#21747,8,#20001,64,";") -#21748=@"loc,{#10000},12,27,12,27" -locations_default(#21748,#10000,12,27,12,27) +tokeninfo(#21747,6,#20001,733,"U") +#21748=@"loc,{#10000},86,56,86,56" +locations_default(#21748,#10000,86,56,86,56) hasLocation(#21747,#21748) #21749=* -tokeninfo(#21749,7,#20001,65,"type") -#21750=@"loc,{#10000},13,3,13,6" -locations_default(#21750,#10000,13,3,13,6) +tokeninfo(#21749,8,#20001,734,":") +#21750=@"loc,{#10000},86,58,86,58" +locations_default(#21750,#10000,86,58,86,58) hasLocation(#21749,#21750) -next_token(#21371,#21749) #21751=* -tokeninfo(#21751,6,#20001,66,"T3") -hasLocation(#21751,#20132) -#21752=* -tokeninfo(#21752,8,#20001,67,"=") -#21753=@"loc,{#10000},13,11,13,11" -locations_default(#21753,#10000,13,11,13,11) -hasLocation(#21752,#21753) -#21754=* -tokeninfo(#21754,6,#20001,68,"TypeName") -hasLocation(#21754,#20136) +tokeninfo(#21751,7,#20001,735,"never") +#21752=@"loc,{#10000},86,60,86,64" +locations_default(#21752,#10000,86,60,86,64) +hasLocation(#21751,#21752) +#21753=* +tokeninfo(#21753,8,#20001,736,";") +#21754=@"loc,{#10000},86,65,86,65" +locations_default(#21754,#10000,86,65,86,65) +hasLocation(#21753,#21754) #21755=* -tokeninfo(#21755,8,#20001,69,"<") -#21756=@"loc,{#10000},13,21,13,21" -locations_default(#21756,#10000,13,21,13,21) +tokeninfo(#21755,7,#20001,737,"type") +#21756=@"loc,{#10000},87,3,87,6" +locations_default(#21756,#10000,87,3,87,6) hasLocation(#21755,#21756) #21757=* -tokeninfo(#21757,8,#20001,70,"(") -#21758=@"loc,{#10000},13,22,13,22" -locations_default(#21758,#10000,13,22,13,22) +tokeninfo(#21757,6,#20001,738,"T10") +#21758=@"loc,{#10000},87,8,87,10" +locations_default(#21758,#10000,87,8,87,10) hasLocation(#21757,#21758) #21759=* -tokeninfo(#21759,8,#20001,71,")") -#21760=@"loc,{#10000},13,23,13,23" -locations_default(#21760,#10000,13,23,13,23) +tokeninfo(#21759,8,#20001,739,"=") +#21760=@"loc,{#10000},87,12,87,12" +locations_default(#21760,#10000,87,12,87,12) hasLocation(#21759,#21760) #21761=* -tokeninfo(#21761,8,#20001,72,"=>") -#21762=@"loc,{#10000},13,25,13,26" -locations_default(#21762,#10000,13,25,13,26) +tokeninfo(#21761,6,#20001,740,"Foo") +#21762=@"loc,{#10000},87,14,87,16" +locations_default(#21762,#10000,87,14,87,16) hasLocation(#21761,#21762) #21763=* -tokeninfo(#21763,7,#20001,73,"void") -hasLocation(#21763,#20143) -#21764=* -tokeninfo(#21764,8,#20001,74,">") -#21765=@"loc,{#10000},13,32,13,32" -locations_default(#21765,#10000,13,32,13,32) -hasLocation(#21764,#21765) -#21766=* -tokeninfo(#21766,8,#20001,75,";") -#21767=@"loc,{#10000},13,33,13,33" -locations_default(#21767,#10000,13,33,13,33) -hasLocation(#21766,#21767) -#21768=* -tokeninfo(#21768,7,#20001,76,"type") -#21769=@"loc,{#10000},14,3,14,6" -locations_default(#21769,#10000,14,3,14,6) -hasLocation(#21768,#21769) -next_token(#21373,#21768) -#21770=* -tokeninfo(#21770,6,#20001,77,"T4") -hasLocation(#21770,#20147) +tokeninfo(#21763,8,#20001,741,"<") +#21764=@"loc,{#10000},87,17,87,17" +locations_default(#21764,#10000,87,17,87,17) +hasLocation(#21763,#21764) +#21765=* +tokeninfo(#21765,8,#20001,742,"{") +#21766=@"loc,{#10000},87,18,87,18" +locations_default(#21766,#10000,87,18,87,18) +hasLocation(#21765,#21766) +#21767=* +tokeninfo(#21767,6,#20001,743,"a") +#21768=@"loc,{#10000},87,20,87,20" +locations_default(#21768,#10000,87,20,87,20) +hasLocation(#21767,#21768) +#21769=* +tokeninfo(#21769,8,#20001,744,":") +#21770=@"loc,{#10000},87,21,87,21" +locations_default(#21770,#10000,87,21,87,21) +hasLocation(#21769,#21770) #21771=* -tokeninfo(#21771,8,#20001,78,"=") -#21772=@"loc,{#10000},14,11,14,11" -locations_default(#21772,#10000,14,11,14,11) +tokeninfo(#21771,7,#20001,745,"string") +#21772=@"loc,{#10000},87,23,87,28" +locations_default(#21772,#10000,87,23,87,28) hasLocation(#21771,#21772) #21773=* -tokeninfo(#21773,6,#20001,79,"TypeName") -hasLocation(#21773,#20151) -#21774=* -tokeninfo(#21774,8,#20001,80,"<") -#21775=@"loc,{#10000},14,21,14,21" -locations_default(#21775,#10000,14,21,14,21) -hasLocation(#21774,#21775) -#21776=* -tokeninfo(#21776,7,#20001,81,"string") -hasLocation(#21776,#20155) +tokeninfo(#21773,8,#20001,746,",") +#21774=@"loc,{#10000},87,29,87,29" +locations_default(#21774,#10000,87,29,87,29) +hasLocation(#21773,#21774) +#21775=* +tokeninfo(#21775,6,#20001,747,"b") +#21776=@"loc,{#10000},87,31,87,31" +locations_default(#21776,#10000,87,31,87,31) +hasLocation(#21775,#21776) #21777=* -tokeninfo(#21777,8,#20001,82,"[") -#21778=@"loc,{#10000},14,28,14,28" -locations_default(#21778,#10000,14,28,14,28) +tokeninfo(#21777,8,#20001,748,":") +#21778=@"loc,{#10000},87,32,87,32" +locations_default(#21778,#10000,87,32,87,32) hasLocation(#21777,#21778) #21779=* -tokeninfo(#21779,8,#20001,83,"]") -#21780=@"loc,{#10000},14,29,14,29" -locations_default(#21780,#10000,14,29,14,29) +tokeninfo(#21779,7,#20001,749,"string") +#21780=@"loc,{#10000},87,34,87,39" +locations_default(#21780,#10000,87,34,87,39) hasLocation(#21779,#21780) #21781=* -tokeninfo(#21781,8,#20001,84,">") -#21782=@"loc,{#10000},14,30,14,30" -locations_default(#21782,#10000,14,30,14,30) +tokeninfo(#21781,8,#20001,750,"}") +#21782=@"loc,{#10000},87,41,87,41" +locations_default(#21782,#10000,87,41,87,41) hasLocation(#21781,#21782) #21783=* -tokeninfo(#21783,8,#20001,85,";") -#21784=@"loc,{#10000},14,31,14,31" -locations_default(#21784,#10000,14,31,14,31) +tokeninfo(#21783,8,#20001,751,">") +#21784=@"loc,{#10000},87,42,87,42" +locations_default(#21784,#10000,87,42,87,42) hasLocation(#21783,#21784) #21785=* -tokeninfo(#21785,7,#20001,86,"type") -#21786=@"loc,{#10000},17,3,17,6" -locations_default(#21786,#10000,17,3,17,6) +tokeninfo(#21785,8,#20001,752,";") +#21786=@"loc,{#10000},87,43,87,43" +locations_default(#21786,#10000,87,43,87,43) hasLocation(#21785,#21786) -next_token(#21375,#21785) #21787=* -tokeninfo(#21787,6,#20001,87,"T10") -hasLocation(#21787,#20159) -#21788=* -tokeninfo(#21788,8,#20001,88,"=") -#21789=@"loc,{#10000},17,12,17,12" -locations_default(#21789,#10000,17,12,17,12) -hasLocation(#21788,#21789) -#21790=* -tokeninfo(#21790,6,#20001,89,"TypeName") -hasLocation(#21790,#20163) +tokeninfo(#21787,7,#20001,753,"type") +#21788=@"loc,{#10000},88,3,88,6" +locations_default(#21788,#10000,88,3,88,6) +hasLocation(#21787,#21788) +next_token(#20068,#21787) +#21789=* +tokeninfo(#21789,6,#20001,754,"T11") +#21790=@"loc,{#10000},88,8,88,10" +locations_default(#21790,#10000,88,8,88,10) +hasLocation(#21789,#21790) #21791=* -tokeninfo(#21791,8,#20001,90,"<") -#21792=@"loc,{#10000},17,22,17,22" -locations_default(#21792,#10000,17,22,17,22) +tokeninfo(#21791,8,#20001,755,"=") +#21792=@"loc,{#10000},88,12,88,12" +locations_default(#21792,#10000,88,12,88,12) hasLocation(#21791,#21792) #21793=* -tokeninfo(#21793,7,#20001,91,"string") -hasLocation(#21793,#20167) -#21794=* -tokeninfo(#21794,8,#20001,92,"|") -#21795=@"loc,{#10000},17,30,17,30" -locations_default(#21795,#10000,17,30,17,30) -hasLocation(#21794,#21795) -#21796=* -tokeninfo(#21796,8,#20001,93,"(") -#21797=@"loc,{#10000},17,32,17,32" -locations_default(#21797,#10000,17,32,17,32) -hasLocation(#21796,#21797) -#21798=* -tokeninfo(#21798,8,#20001,94,"(") -#21799=@"loc,{#10000},17,33,17,33" -locations_default(#21799,#10000,17,33,17,33) -hasLocation(#21798,#21799) -#21800=* -tokeninfo(#21800,8,#20001,95,")") -#21801=@"loc,{#10000},17,34,17,34" -locations_default(#21801,#10000,17,34,17,34) -hasLocation(#21800,#21801) -#21802=* -tokeninfo(#21802,8,#20001,96,"=>") -#21803=@"loc,{#10000},17,36,17,37" -locations_default(#21803,#10000,17,36,17,37) -hasLocation(#21802,#21803) -#21804=* -tokeninfo(#21804,7,#20001,97,"void") -hasLocation(#21804,#20176) +tokeninfo(#21793,6,#20001,756,"Foo") +#21794=@"loc,{#10000},88,14,88,16" +locations_default(#21794,#10000,88,14,88,16) +hasLocation(#21793,#21794) +#21795=* +tokeninfo(#21795,8,#20001,757,"<") +#21796=@"loc,{#10000},88,17,88,17" +locations_default(#21796,#10000,88,17,88,17) +hasLocation(#21795,#21796) +#21797=* +tokeninfo(#21797,8,#20001,758,"{") +#21798=@"loc,{#10000},88,18,88,18" +locations_default(#21798,#10000,88,18,88,18) +hasLocation(#21797,#21798) +#21799=* +tokeninfo(#21799,6,#20001,759,"a") +#21800=@"loc,{#10000},88,20,88,20" +locations_default(#21800,#10000,88,20,88,20) +hasLocation(#21799,#21800) +#21801=* +tokeninfo(#21801,8,#20001,760,":") +#21802=@"loc,{#10000},88,21,88,21" +locations_default(#21802,#10000,88,21,88,21) +hasLocation(#21801,#21802) +#21803=* +tokeninfo(#21803,7,#20001,761,"string") +#21804=@"loc,{#10000},88,23,88,28" +locations_default(#21804,#10000,88,23,88,28) +hasLocation(#21803,#21804) #21805=* -tokeninfo(#21805,8,#20001,98,")") -#21806=@"loc,{#10000},17,43,17,43" -locations_default(#21806,#10000,17,43,17,43) +tokeninfo(#21805,8,#20001,762,",") +#21806=@"loc,{#10000},88,29,88,29" +locations_default(#21806,#10000,88,29,88,29) hasLocation(#21805,#21806) #21807=* -tokeninfo(#21807,8,#20001,99,">") -#21808=@"loc,{#10000},17,44,17,44" -locations_default(#21808,#10000,17,44,17,44) +tokeninfo(#21807,6,#20001,763,"b") +#21808=@"loc,{#10000},88,31,88,31" +locations_default(#21808,#10000,88,31,88,31) hasLocation(#21807,#21808) #21809=* -tokeninfo(#21809,8,#20001,100,";") -#21810=@"loc,{#10000},17,45,17,45" -locations_default(#21810,#10000,17,45,17,45) +tokeninfo(#21809,8,#20001,764,":") +#21810=@"loc,{#10000},88,32,88,32" +locations_default(#21810,#10000,88,32,88,32) hasLocation(#21809,#21810) #21811=* -tokeninfo(#21811,7,#20001,101,"type") -#21812=@"loc,{#10000},18,3,18,6" -locations_default(#21812,#10000,18,3,18,6) +tokeninfo(#21811,7,#20001,765,"number") +#21812=@"loc,{#10000},88,34,88,39" +locations_default(#21812,#10000,88,34,88,39) hasLocation(#21811,#21812) -next_token(#21377,#21811) #21813=* -tokeninfo(#21813,6,#20001,102,"T12") -hasLocation(#21813,#20180) -#21814=* -tokeninfo(#21814,8,#20001,103,"=") -#21815=@"loc,{#10000},18,12,18,12" -locations_default(#21815,#10000,18,12,18,12) -hasLocation(#21814,#21815) -#21816=* -tokeninfo(#21816,6,#20001,104,"TypeName") -hasLocation(#21816,#20184) +tokeninfo(#21813,8,#20001,766,"}") +#21814=@"loc,{#10000},88,41,88,41" +locations_default(#21814,#10000,88,41,88,41) +hasLocation(#21813,#21814) +#21815=* +tokeninfo(#21815,8,#20001,767,">") +#21816=@"loc,{#10000},88,42,88,42" +locations_default(#21816,#10000,88,42,88,42) +hasLocation(#21815,#21816) #21817=* -tokeninfo(#21817,8,#20001,105,"<") -#21818=@"loc,{#10000},18,22,18,22" -locations_default(#21818,#10000,18,22,18,22) +tokeninfo(#21817,8,#20001,768,";") +#21818=@"loc,{#10000},88,43,88,43" +locations_default(#21818,#10000,88,43,88,43) hasLocation(#21817,#21818) #21819=* -tokeninfo(#21819,7,#20001,106,"string") -hasLocation(#21819,#20188) -#21820=* -tokeninfo(#21820,8,#20001,107,"|") -#21821=@"loc,{#10000},18,30,18,30" -locations_default(#21821,#10000,18,30,18,30) -hasLocation(#21820,#21821) -#21822=* -tokeninfo(#21822,7,#20001,108,"string") -hasLocation(#21822,#20192) +tokeninfo(#21819,7,#20001,769,"type") +#21820=@"loc,{#10000},90,3,90,6" +locations_default(#21820,#10000,90,3,90,6) +hasLocation(#21819,#21820) +next_token(#20070,#21819) +#21821=* +tokeninfo(#21821,6,#20001,770,"Bar") +#21822=@"loc,{#10000},90,8,90,10" +locations_default(#21822,#10000,90,8,90,10) +hasLocation(#21821,#21822) #21823=* -tokeninfo(#21823,8,#20001,109,"[") -#21824=@"loc,{#10000},18,38,18,38" -locations_default(#21824,#10000,18,38,18,38) +tokeninfo(#21823,8,#20001,771,"<") +#21824=@"loc,{#10000},90,11,90,11" +locations_default(#21824,#10000,90,11,90,11) hasLocation(#21823,#21824) #21825=* -tokeninfo(#21825,8,#20001,110,"]") -#21826=@"loc,{#10000},18,39,18,39" -locations_default(#21826,#10000,18,39,18,39) +tokeninfo(#21825,6,#20001,772,"T") +#21826=@"loc,{#10000},90,12,90,12" +locations_default(#21826,#10000,90,12,90,12) hasLocation(#21825,#21826) #21827=* -tokeninfo(#21827,8,#20001,111,"|") -#21828=@"loc,{#10000},18,41,18,41" -locations_default(#21828,#10000,18,41,18,41) +tokeninfo(#21827,8,#20001,773,">") +#21828=@"loc,{#10000},90,13,90,13" +locations_default(#21828,#10000,90,13,90,13) hasLocation(#21827,#21828) #21829=* -tokeninfo(#21829,7,#20001,112,"undefined") -hasLocation(#21829,#20194) -#21830=* -tokeninfo(#21830,8,#20001,113,">") -#21831=@"loc,{#10000},18,52,18,52" -locations_default(#21831,#10000,18,52,18,52) -hasLocation(#21830,#21831) -#21832=* -tokeninfo(#21832,8,#20001,114,";") -#21833=@"loc,{#10000},18,53,18,53" -locations_default(#21833,#10000,18,53,18,53) -hasLocation(#21832,#21833) -#21834=* -tokeninfo(#21834,7,#20001,115,"type") -#21835=@"loc,{#10000},19,3,19,6" -locations_default(#21835,#10000,19,3,19,6) -hasLocation(#21834,#21835) -next_token(#21379,#21834) -#21836=* -tokeninfo(#21836,6,#20001,116,"T11") -hasLocation(#21836,#20198) +tokeninfo(#21829,8,#20001,774,"=") +#21830=@"loc,{#10000},90,15,90,15" +locations_default(#21830,#10000,90,15,90,15) +hasLocation(#21829,#21830) +#21831=* +tokeninfo(#21831,6,#20001,775,"T") +#21832=@"loc,{#10000},90,17,90,17" +locations_default(#21832,#10000,90,17,90,17) +hasLocation(#21831,#21832) +#21833=* +tokeninfo(#21833,7,#20001,776,"extends") +#21834=@"loc,{#10000},90,19,90,25" +locations_default(#21834,#10000,90,19,90,25) +hasLocation(#21833,#21834) +#21835=* +tokeninfo(#21835,8,#20001,777,"{") +#21836=@"loc,{#10000},90,27,90,27" +locations_default(#21836,#10000,90,27,90,27) +hasLocation(#21835,#21836) #21837=* -tokeninfo(#21837,8,#20001,117,"=") -#21838=@"loc,{#10000},19,12,19,12" -locations_default(#21838,#10000,19,12,19,12) +tokeninfo(#21837,6,#20001,778,"a") +#21838=@"loc,{#10000},90,29,90,29" +locations_default(#21838,#10000,90,29,90,29) hasLocation(#21837,#21838) #21839=* -tokeninfo(#21839,6,#20001,118,"TypeName") -hasLocation(#21839,#20202) -#21840=* -tokeninfo(#21840,8,#20001,119,"<") -#21841=@"loc,{#10000},19,22,19,22" -locations_default(#21841,#10000,19,22,19,22) -hasLocation(#21840,#21841) -#21842=* -tokeninfo(#21842,7,#20001,120,"string") -hasLocation(#21842,#20208) +tokeninfo(#21839,8,#20001,779,":") +#21840=@"loc,{#10000},90,30,90,30" +locations_default(#21840,#10000,90,30,90,30) +hasLocation(#21839,#21840) +#21841=* +tokeninfo(#21841,8,#20001,780,"(") +#21842=@"loc,{#10000},90,32,90,32" +locations_default(#21842,#10000,90,32,90,32) +hasLocation(#21841,#21842) #21843=* -tokeninfo(#21843,8,#20001,121,"[") -#21844=@"loc,{#10000},19,29,19,29" -locations_default(#21844,#10000,19,29,19,29) +tokeninfo(#21843,6,#20001,781,"x") +#21844=@"loc,{#10000},90,33,90,33" +locations_default(#21844,#10000,90,33,90,33) hasLocation(#21843,#21844) #21845=* -tokeninfo(#21845,8,#20001,122,"]") -#21846=@"loc,{#10000},19,30,19,30" -locations_default(#21846,#10000,19,30,19,30) +tokeninfo(#21845,8,#20001,782,":") +#21846=@"loc,{#10000},90,34,90,34" +locations_default(#21846,#10000,90,34,90,34) hasLocation(#21845,#21846) #21847=* -tokeninfo(#21847,8,#20001,123,"|") -#21848=@"loc,{#10000},19,32,19,32" -locations_default(#21848,#10000,19,32,19,32) +tokeninfo(#21847,7,#20001,783,"infer") +#21848=@"loc,{#10000},90,36,90,40" +locations_default(#21848,#10000,90,36,90,40) hasLocation(#21847,#21848) #21849=* -tokeninfo(#21849,7,#20001,124,"number") -hasLocation(#21849,#20212) -#21850=* -tokeninfo(#21850,8,#20001,125,"[") -#21851=@"loc,{#10000},19,40,19,40" -locations_default(#21851,#10000,19,40,19,40) -hasLocation(#21850,#21851) -#21852=* -tokeninfo(#21852,8,#20001,126,"]") -#21853=@"loc,{#10000},19,41,19,41" -locations_default(#21853,#10000,19,41,19,41) -hasLocation(#21852,#21853) -#21854=* -tokeninfo(#21854,8,#20001,127,">") -#21855=@"loc,{#10000},19,42,19,42" -locations_default(#21855,#10000,19,42,19,42) -hasLocation(#21854,#21855) -#21856=* -tokeninfo(#21856,8,#20001,128,";") -#21857=@"loc,{#10000},19,43,19,43" -locations_default(#21857,#10000,19,43,19,43) -hasLocation(#21856,#21857) -#21858=* -tokeninfo(#21858,7,#20001,129,"type") -#21859=@"loc,{#10000},21,3,21,6" -locations_default(#21859,#10000,21,3,21,6) -hasLocation(#21858,#21859) -next_token(#21381,#21858) -#21860=* -tokeninfo(#21860,6,#20001,130,"BoxedValue") -hasLocation(#21860,#20216) +tokeninfo(#21849,6,#20001,784,"U") +#21850=@"loc,{#10000},90,42,90,42" +locations_default(#21850,#10000,90,42,90,42) +hasLocation(#21849,#21850) +#21851=* +tokeninfo(#21851,8,#20001,785,")") +#21852=@"loc,{#10000},90,43,90,43" +locations_default(#21852,#10000,90,43,90,43) +hasLocation(#21851,#21852) +#21853=* +tokeninfo(#21853,8,#20001,786,"=>") +#21854=@"loc,{#10000},90,45,90,46" +locations_default(#21854,#10000,90,45,90,46) +hasLocation(#21853,#21854) +#21855=* +tokeninfo(#21855,7,#20001,787,"void") +#21856=@"loc,{#10000},90,48,90,51" +locations_default(#21856,#10000,90,48,90,51) +hasLocation(#21855,#21856) +#21857=* +tokeninfo(#21857,8,#20001,788,",") +#21858=@"loc,{#10000},90,52,90,52" +locations_default(#21858,#10000,90,52,90,52) +hasLocation(#21857,#21858) +#21859=* +tokeninfo(#21859,6,#20001,789,"b") +#21860=@"loc,{#10000},90,54,90,54" +locations_default(#21860,#10000,90,54,90,54) +hasLocation(#21859,#21860) #21861=* -tokeninfo(#21861,8,#20001,131,"<") -#21862=@"loc,{#10000},21,18,21,18" -locations_default(#21862,#10000,21,18,21,18) +tokeninfo(#21861,8,#20001,790,":") +#21862=@"loc,{#10000},90,55,90,55" +locations_default(#21862,#10000,90,55,90,55) hasLocation(#21861,#21862) #21863=* -tokeninfo(#21863,6,#20001,132,"T") -hasLocation(#21863,#20220) -#21864=* -tokeninfo(#21864,8,#20001,133,">") -#21865=@"loc,{#10000},21,20,21,20" -locations_default(#21865,#10000,21,20,21,20) -hasLocation(#21864,#21865) -#21866=* -tokeninfo(#21866,8,#20001,134,"=") -#21867=@"loc,{#10000},21,22,21,22" -locations_default(#21867,#10000,21,22,21,22) -hasLocation(#21866,#21867) -#21868=* -tokeninfo(#21868,8,#20001,135,"{") -#21869=@"loc,{#10000},21,24,21,24" -locations_default(#21869,#10000,21,24,21,24) -hasLocation(#21868,#21869) -#21870=* -tokeninfo(#21870,6,#20001,136,"value") -hasLocation(#21870,#20227) +tokeninfo(#21863,8,#20001,791,"(") +#21864=@"loc,{#10000},90,57,90,57" +locations_default(#21864,#10000,90,57,90,57) +hasLocation(#21863,#21864) +#21865=* +tokeninfo(#21865,6,#20001,792,"x") +#21866=@"loc,{#10000},90,58,90,58" +locations_default(#21866,#10000,90,58,90,58) +hasLocation(#21865,#21866) +#21867=* +tokeninfo(#21867,8,#20001,793,":") +#21868=@"loc,{#10000},90,59,90,59" +locations_default(#21868,#10000,90,59,90,59) +hasLocation(#21867,#21868) +#21869=* +tokeninfo(#21869,7,#20001,794,"infer") +#21870=@"loc,{#10000},90,61,90,65" +locations_default(#21870,#10000,90,61,90,65) +hasLocation(#21869,#21870) #21871=* -tokeninfo(#21871,8,#20001,137,":") -#21872=@"loc,{#10000},21,31,21,31" -locations_default(#21872,#10000,21,31,21,31) +tokeninfo(#21871,6,#20001,795,"U") +#21872=@"loc,{#10000},90,67,90,67" +locations_default(#21872,#10000,90,67,90,67) hasLocation(#21871,#21872) #21873=* -tokeninfo(#21873,6,#20001,138,"T") -hasLocation(#21873,#20229) -#21874=* -tokeninfo(#21874,8,#20001,139,"}") -#21875=@"loc,{#10000},21,35,21,35" -locations_default(#21875,#10000,21,35,21,35) -hasLocation(#21874,#21875) -#21876=* -tokeninfo(#21876,8,#20001,140,";") -#21877=@"loc,{#10000},21,36,21,36" -locations_default(#21877,#10000,21,36,21,36) -hasLocation(#21876,#21877) -#21878=* -tokeninfo(#21878,7,#20001,141,"type") -#21879=@"loc,{#10000},22,3,22,6" -locations_default(#21879,#10000,22,3,22,6) -hasLocation(#21878,#21879) -#21880=* -tokeninfo(#21880,6,#20001,142,"BoxedArray") -hasLocation(#21880,#20233) +tokeninfo(#21873,8,#20001,796,")") +#21874=@"loc,{#10000},90,68,90,68" +locations_default(#21874,#10000,90,68,90,68) +hasLocation(#21873,#21874) +#21875=* +tokeninfo(#21875,8,#20001,797,"=>") +#21876=@"loc,{#10000},90,70,90,71" +locations_default(#21876,#10000,90,70,90,71) +hasLocation(#21875,#21876) +#21877=* +tokeninfo(#21877,7,#20001,798,"void") +#21878=@"loc,{#10000},90,73,90,76" +locations_default(#21878,#10000,90,73,90,76) +hasLocation(#21877,#21878) +#21879=* +tokeninfo(#21879,8,#20001,799,"}") +#21880=@"loc,{#10000},90,78,90,78" +locations_default(#21880,#10000,90,78,90,78) +hasLocation(#21879,#21880) #21881=* -tokeninfo(#21881,8,#20001,143,"<") -#21882=@"loc,{#10000},22,18,22,18" -locations_default(#21882,#10000,22,18,22,18) +tokeninfo(#21881,8,#20001,800,"?") +#21882=@"loc,{#10000},90,80,90,80" +locations_default(#21882,#10000,90,80,90,80) hasLocation(#21881,#21882) #21883=* -tokeninfo(#21883,6,#20001,144,"T") -hasLocation(#21883,#20237) -#21884=* -tokeninfo(#21884,8,#20001,145,">") -#21885=@"loc,{#10000},22,20,22,20" -locations_default(#21885,#10000,22,20,22,20) -hasLocation(#21884,#21885) -#21886=* -tokeninfo(#21886,8,#20001,146,"=") -#21887=@"loc,{#10000},22,22,22,22" -locations_default(#21887,#10000,22,22,22,22) -hasLocation(#21886,#21887) -#21888=* -tokeninfo(#21888,8,#20001,147,"{") -#21889=@"loc,{#10000},22,24,22,24" -locations_default(#21889,#10000,22,24,22,24) -hasLocation(#21888,#21889) -#21890=* -tokeninfo(#21890,6,#20001,148,"array") -hasLocation(#21890,#20244) +tokeninfo(#21883,6,#20001,801,"U") +#21884=@"loc,{#10000},90,82,90,82" +locations_default(#21884,#10000,90,82,90,82) +hasLocation(#21883,#21884) +#21885=* +tokeninfo(#21885,8,#20001,802,":") +#21886=@"loc,{#10000},90,84,90,84" +locations_default(#21886,#10000,90,84,90,84) +hasLocation(#21885,#21886) +#21887=* +tokeninfo(#21887,7,#20001,803,"never") +#21888=@"loc,{#10000},90,86,90,90" +locations_default(#21888,#10000,90,86,90,90) +hasLocation(#21887,#21888) +#21889=* +tokeninfo(#21889,8,#20001,804,";") +#21890=@"loc,{#10000},90,91,90,91" +locations_default(#21890,#10000,90,91,90,91) +hasLocation(#21889,#21890) #21891=* -tokeninfo(#21891,8,#20001,149,":") -#21892=@"loc,{#10000},22,31,22,31" -locations_default(#21892,#10000,22,31,22,31) +tokeninfo(#21891,7,#20001,805,"type") +#21892=@"loc,{#10000},91,3,91,6" +locations_default(#21892,#10000,91,3,91,6) hasLocation(#21891,#21892) #21893=* -tokeninfo(#21893,6,#20001,150,"T") -hasLocation(#21893,#20248) -#21894=* -tokeninfo(#21894,8,#20001,151,"[") -#21895=@"loc,{#10000},22,34,22,34" -locations_default(#21895,#10000,22,34,22,34) -hasLocation(#21894,#21895) -#21896=* -tokeninfo(#21896,8,#20001,152,"]") -#21897=@"loc,{#10000},22,35,22,35" -locations_default(#21897,#10000,22,35,22,35) -hasLocation(#21896,#21897) -#21898=* -tokeninfo(#21898,8,#20001,153,"}") -#21899=@"loc,{#10000},22,37,22,37" -locations_default(#21899,#10000,22,37,22,37) -hasLocation(#21898,#21899) -#21900=* -tokeninfo(#21900,8,#20001,154,";") -#21901=@"loc,{#10000},22,38,22,38" -locations_default(#21901,#10000,22,38,22,38) -hasLocation(#21900,#21901) -#21902=* -tokeninfo(#21902,7,#20001,155,"type") -#21903=@"loc,{#10000},23,3,23,6" -locations_default(#21903,#10000,23,3,23,6) -hasLocation(#21902,#21903) -#21904=* -tokeninfo(#21904,6,#20001,156,"Boxed") -hasLocation(#21904,#20252) +tokeninfo(#21893,6,#20001,806,"T20") +#21894=@"loc,{#10000},91,8,91,10" +locations_default(#21894,#10000,91,8,91,10) +hasLocation(#21893,#21894) +#21895=* +tokeninfo(#21895,8,#20001,807,"=") +#21896=@"loc,{#10000},91,12,91,12" +locations_default(#21896,#10000,91,12,91,12) +hasLocation(#21895,#21896) +#21897=* +tokeninfo(#21897,6,#20001,808,"Bar") +#21898=@"loc,{#10000},91,14,91,16" +locations_default(#21898,#10000,91,14,91,16) +hasLocation(#21897,#21898) +#21899=* +tokeninfo(#21899,8,#20001,809,"<") +#21900=@"loc,{#10000},91,17,91,17" +locations_default(#21900,#10000,91,17,91,17) +hasLocation(#21899,#21900) +#21901=* +tokeninfo(#21901,8,#20001,810,"{") +#21902=@"loc,{#10000},91,18,91,18" +locations_default(#21902,#10000,91,18,91,18) +hasLocation(#21901,#21902) +#21903=* +tokeninfo(#21903,6,#20001,811,"a") +#21904=@"loc,{#10000},91,20,91,20" +locations_default(#21904,#10000,91,20,91,20) +hasLocation(#21903,#21904) #21905=* -tokeninfo(#21905,8,#20001,157,"<") -#21906=@"loc,{#10000},23,13,23,13" -locations_default(#21906,#10000,23,13,23,13) +tokeninfo(#21905,8,#20001,812,":") +#21906=@"loc,{#10000},91,21,91,21" +locations_default(#21906,#10000,91,21,91,21) hasLocation(#21905,#21906) #21907=* -tokeninfo(#21907,6,#20001,158,"T") -hasLocation(#21907,#20256) -#21908=* -tokeninfo(#21908,8,#20001,159,">") -#21909=@"loc,{#10000},23,15,23,15" -locations_default(#21909,#10000,23,15,23,15) -hasLocation(#21908,#21909) -#21910=* -tokeninfo(#21910,8,#20001,160,"=") -#21911=@"loc,{#10000},23,17,23,17" -locations_default(#21911,#10000,23,17,23,17) -hasLocation(#21910,#21911) -#21912=* -tokeninfo(#21912,6,#20001,161,"T") -hasLocation(#21912,#20261) +tokeninfo(#21907,8,#20001,813,"(") +#21908=@"loc,{#10000},91,23,91,23" +locations_default(#21908,#10000,91,23,91,23) +hasLocation(#21907,#21908) +#21909=* +tokeninfo(#21909,6,#20001,814,"x") +#21910=@"loc,{#10000},91,24,91,24" +locations_default(#21910,#10000,91,24,91,24) +hasLocation(#21909,#21910) +#21911=* +tokeninfo(#21911,8,#20001,815,":") +#21912=@"loc,{#10000},91,25,91,25" +locations_default(#21912,#10000,91,25,91,25) +hasLocation(#21911,#21912) #21913=* -tokeninfo(#21913,7,#20001,162,"extends") -#21914=@"loc,{#10000},23,21,23,27" -locations_default(#21914,#10000,23,21,23,27) +tokeninfo(#21913,7,#20001,816,"string") +#21914=@"loc,{#10000},91,27,91,32" +locations_default(#21914,#10000,91,27,91,32) hasLocation(#21913,#21914) #21915=* -tokeninfo(#21915,7,#20001,163,"any") -hasLocation(#21915,#20265) -#21916=* -tokeninfo(#21916,8,#20001,164,"[") -#21917=@"loc,{#10000},23,32,23,32" -locations_default(#21917,#10000,23,32,23,32) -hasLocation(#21916,#21917) -#21918=* -tokeninfo(#21918,8,#20001,165,"]") -#21919=@"loc,{#10000},23,33,23,33" -locations_default(#21919,#10000,23,33,23,33) -hasLocation(#21918,#21919) -#21920=* -tokeninfo(#21920,8,#20001,166,"?") -#21921=@"loc,{#10000},23,35,23,35" -locations_default(#21921,#10000,23,35,23,35) -hasLocation(#21920,#21921) -#21922=* -tokeninfo(#21922,6,#20001,167,"BoxedArray") -hasLocation(#21922,#20269) +tokeninfo(#21915,8,#20001,817,")") +#21916=@"loc,{#10000},91,33,91,33" +locations_default(#21916,#10000,91,33,91,33) +hasLocation(#21915,#21916) +#21917=* +tokeninfo(#21917,8,#20001,818,"=>") +#21918=@"loc,{#10000},91,35,91,36" +locations_default(#21918,#10000,91,35,91,36) +hasLocation(#21917,#21918) +#21919=* +tokeninfo(#21919,7,#20001,819,"void") +#21920=@"loc,{#10000},91,38,91,41" +locations_default(#21920,#10000,91,38,91,41) +hasLocation(#21919,#21920) +#21921=* +tokeninfo(#21921,8,#20001,820,",") +#21922=@"loc,{#10000},91,42,91,42" +locations_default(#21922,#10000,91,42,91,42) +hasLocation(#21921,#21922) #21923=* -tokeninfo(#21923,8,#20001,168,"<") -#21924=@"loc,{#10000},23,47,23,47" -locations_default(#21924,#10000,23,47,23,47) +tokeninfo(#21923,6,#20001,821,"b") +#21924=@"loc,{#10000},91,44,91,44" +locations_default(#21924,#10000,91,44,91,44) hasLocation(#21923,#21924) #21925=* -tokeninfo(#21925,6,#20001,169,"T") -hasLocation(#21925,#20273) -#21926=* -tokeninfo(#21926,8,#20001,170,"[") -#21927=@"loc,{#10000},23,49,23,49" -locations_default(#21927,#10000,23,49,23,49) -hasLocation(#21926,#21927) -#21928=* -tokeninfo(#21928,7,#20001,171,"number") -hasLocation(#21928,#20275) +tokeninfo(#21925,8,#20001,822,":") +#21926=@"loc,{#10000},91,45,91,45" +locations_default(#21926,#10000,91,45,91,45) +hasLocation(#21925,#21926) +#21927=* +tokeninfo(#21927,8,#20001,823,"(") +#21928=@"loc,{#10000},91,47,91,47" +locations_default(#21928,#10000,91,47,91,47) +hasLocation(#21927,#21928) #21929=* -tokeninfo(#21929,8,#20001,172,"]") -#21930=@"loc,{#10000},23,56,23,56" -locations_default(#21930,#10000,23,56,23,56) +tokeninfo(#21929,6,#20001,824,"x") +#21930=@"loc,{#10000},91,48,91,48" +locations_default(#21930,#10000,91,48,91,48) hasLocation(#21929,#21930) #21931=* -tokeninfo(#21931,8,#20001,173,">") -#21932=@"loc,{#10000},23,57,23,57" -locations_default(#21932,#10000,23,57,23,57) +tokeninfo(#21931,8,#20001,825,":") +#21932=@"loc,{#10000},91,49,91,49" +locations_default(#21932,#10000,91,49,91,49) hasLocation(#21931,#21932) #21933=* -tokeninfo(#21933,8,#20001,174,":") -#21934=@"loc,{#10000},23,59,23,59" -locations_default(#21934,#10000,23,59,23,59) +tokeninfo(#21933,7,#20001,826,"string") +#21934=@"loc,{#10000},91,51,91,56" +locations_default(#21934,#10000,91,51,91,56) hasLocation(#21933,#21934) #21935=* -tokeninfo(#21935,6,#20001,175,"BoxedValue") -hasLocation(#21935,#20279) -#21936=* -tokeninfo(#21936,8,#20001,176,"<") -#21937=@"loc,{#10000},23,71,23,71" -locations_default(#21937,#10000,23,71,23,71) -hasLocation(#21936,#21937) -#21938=* -tokeninfo(#21938,6,#20001,177,"T") -hasLocation(#21938,#20281) +tokeninfo(#21935,8,#20001,827,")") +#21936=@"loc,{#10000},91,57,91,57" +locations_default(#21936,#10000,91,57,91,57) +hasLocation(#21935,#21936) +#21937=* +tokeninfo(#21937,8,#20001,828,"=>") +#21938=@"loc,{#10000},91,59,91,60" +locations_default(#21938,#10000,91,59,91,60) +hasLocation(#21937,#21938) #21939=* -tokeninfo(#21939,8,#20001,178,">") -#21940=@"loc,{#10000},23,73,23,73" -locations_default(#21940,#10000,23,73,23,73) +tokeninfo(#21939,7,#20001,829,"void") +#21940=@"loc,{#10000},91,62,91,65" +locations_default(#21940,#10000,91,62,91,65) hasLocation(#21939,#21940) #21941=* -tokeninfo(#21941,8,#20001,179,";") -#21942=@"loc,{#10000},23,74,23,74" -locations_default(#21942,#10000,23,74,23,74) +tokeninfo(#21941,8,#20001,830,"}") +#21942=@"loc,{#10000},91,67,91,67" +locations_default(#21942,#10000,91,67,91,67) hasLocation(#21941,#21942) #21943=* -tokeninfo(#21943,7,#20001,180,"type") -#21944=@"loc,{#10000},25,3,25,6" -locations_default(#21944,#10000,25,3,25,6) +tokeninfo(#21943,8,#20001,831,">") +#21944=@"loc,{#10000},91,68,91,68" +locations_default(#21944,#10000,91,68,91,68) hasLocation(#21943,#21944) #21945=* -tokeninfo(#21945,6,#20001,181,"T20") -hasLocation(#21945,#20285) -#21946=* -tokeninfo(#21946,8,#20001,182,"=") -#21947=@"loc,{#10000},25,12,25,12" -locations_default(#21947,#10000,25,12,25,12) -hasLocation(#21946,#21947) -#21948=* -tokeninfo(#21948,6,#20001,183,"Boxed") -hasLocation(#21948,#20289) +tokeninfo(#21945,8,#20001,832,";") +#21946=@"loc,{#10000},91,69,91,69" +locations_default(#21946,#10000,91,69,91,69) +hasLocation(#21945,#21946) +#21947=* +tokeninfo(#21947,7,#20001,833,"type") +#21948=@"loc,{#10000},92,3,92,6" +locations_default(#21948,#10000,92,3,92,6) +hasLocation(#21947,#21948) +next_token(#20072,#21947) #21949=* -tokeninfo(#21949,8,#20001,184,"<") -#21950=@"loc,{#10000},25,19,25,19" -locations_default(#21950,#10000,25,19,25,19) +tokeninfo(#21949,6,#20001,834,"T21") +#21950=@"loc,{#10000},92,8,92,10" +locations_default(#21950,#10000,92,8,92,10) hasLocation(#21949,#21950) #21951=* -tokeninfo(#21951,7,#20001,185,"string") -hasLocation(#21951,#20291) -#21952=* -tokeninfo(#21952,8,#20001,186,">") -#21953=@"loc,{#10000},25,26,25,26" -locations_default(#21953,#10000,25,26,25,26) -hasLocation(#21952,#21953) -#21954=* -tokeninfo(#21954,8,#20001,187,";") -#21955=@"loc,{#10000},25,27,25,27" -locations_default(#21955,#10000,25,27,25,27) -hasLocation(#21954,#21955) -#21956=* -tokeninfo(#21956,7,#20001,188,"type") -#21957=@"loc,{#10000},26,3,26,6" -locations_default(#21957,#10000,26,3,26,6) -hasLocation(#21956,#21957) -next_token(#21383,#21956) -#21958=* -tokeninfo(#21958,6,#20001,189,"T21") -hasLocation(#21958,#20295) +tokeninfo(#21951,8,#20001,835,"=") +#21952=@"loc,{#10000},92,12,92,12" +locations_default(#21952,#10000,92,12,92,12) +hasLocation(#21951,#21952) +#21953=* +tokeninfo(#21953,6,#20001,836,"Bar") +#21954=@"loc,{#10000},92,14,92,16" +locations_default(#21954,#10000,92,14,92,16) +hasLocation(#21953,#21954) +#21955=* +tokeninfo(#21955,8,#20001,837,"<") +#21956=@"loc,{#10000},92,17,92,17" +locations_default(#21956,#10000,92,17,92,17) +hasLocation(#21955,#21956) +#21957=* +tokeninfo(#21957,8,#20001,838,"{") +#21958=@"loc,{#10000},92,18,92,18" +locations_default(#21958,#10000,92,18,92,18) +hasLocation(#21957,#21958) #21959=* -tokeninfo(#21959,8,#20001,190,"=") -#21960=@"loc,{#10000},26,12,26,12" -locations_default(#21960,#10000,26,12,26,12) +tokeninfo(#21959,6,#20001,839,"a") +#21960=@"loc,{#10000},92,20,92,20" +locations_default(#21960,#10000,92,20,92,20) hasLocation(#21959,#21960) #21961=* -tokeninfo(#21961,6,#20001,191,"Boxed") -hasLocation(#21961,#20299) -#21962=* -tokeninfo(#21962,8,#20001,192,"<") -#21963=@"loc,{#10000},26,19,26,19" -locations_default(#21963,#10000,26,19,26,19) -hasLocation(#21962,#21963) -#21964=* -tokeninfo(#21964,7,#20001,193,"number") -hasLocation(#21964,#20303) +tokeninfo(#21961,8,#20001,840,":") +#21962=@"loc,{#10000},92,21,92,21" +locations_default(#21962,#10000,92,21,92,21) +hasLocation(#21961,#21962) +#21963=* +tokeninfo(#21963,8,#20001,841,"(") +#21964=@"loc,{#10000},92,23,92,23" +locations_default(#21964,#10000,92,23,92,23) +hasLocation(#21963,#21964) #21965=* -tokeninfo(#21965,8,#20001,194,"[") -#21966=@"loc,{#10000},26,26,26,26" -locations_default(#21966,#10000,26,26,26,26) +tokeninfo(#21965,6,#20001,842,"x") +#21966=@"loc,{#10000},92,24,92,24" +locations_default(#21966,#10000,92,24,92,24) hasLocation(#21965,#21966) #21967=* -tokeninfo(#21967,8,#20001,195,"]") -#21968=@"loc,{#10000},26,27,26,27" -locations_default(#21968,#10000,26,27,26,27) +tokeninfo(#21967,8,#20001,843,":") +#21968=@"loc,{#10000},92,25,92,25" +locations_default(#21968,#10000,92,25,92,25) hasLocation(#21967,#21968) #21969=* -tokeninfo(#21969,8,#20001,196,">") -#21970=@"loc,{#10000},26,28,26,28" -locations_default(#21970,#10000,26,28,26,28) +tokeninfo(#21969,7,#20001,844,"string") +#21970=@"loc,{#10000},92,27,92,32" +locations_default(#21970,#10000,92,27,92,32) hasLocation(#21969,#21970) #21971=* -tokeninfo(#21971,8,#20001,197,";") -#21972=@"loc,{#10000},26,29,26,29" -locations_default(#21972,#10000,26,29,26,29) +tokeninfo(#21971,8,#20001,845,")") +#21972=@"loc,{#10000},92,33,92,33" +locations_default(#21972,#10000,92,33,92,33) hasLocation(#21971,#21972) #21973=* -tokeninfo(#21973,7,#20001,198,"type") -#21974=@"loc,{#10000},27,3,27,6" -locations_default(#21974,#10000,27,3,27,6) +tokeninfo(#21973,8,#20001,846,"=>") +#21974=@"loc,{#10000},92,35,92,36" +locations_default(#21974,#10000,92,35,92,36) hasLocation(#21973,#21974) -next_token(#21385,#21973) #21975=* -tokeninfo(#21975,6,#20001,199,"T22") -hasLocation(#21975,#20307) -#21976=* -tokeninfo(#21976,8,#20001,200,"=") -#21977=@"loc,{#10000},27,12,27,12" -locations_default(#21977,#10000,27,12,27,12) -hasLocation(#21976,#21977) -#21978=* -tokeninfo(#21978,6,#20001,201,"Boxed") -hasLocation(#21978,#20311) +tokeninfo(#21975,7,#20001,847,"void") +#21976=@"loc,{#10000},92,38,92,41" +locations_default(#21976,#10000,92,38,92,41) +hasLocation(#21975,#21976) +#21977=* +tokeninfo(#21977,8,#20001,848,",") +#21978=@"loc,{#10000},92,42,92,42" +locations_default(#21978,#10000,92,42,92,42) +hasLocation(#21977,#21978) #21979=* -tokeninfo(#21979,8,#20001,202,"<") -#21980=@"loc,{#10000},27,19,27,19" -locations_default(#21980,#10000,27,19,27,19) +tokeninfo(#21979,6,#20001,849,"b") +#21980=@"loc,{#10000},92,44,92,44" +locations_default(#21980,#10000,92,44,92,44) hasLocation(#21979,#21980) #21981=* -tokeninfo(#21981,7,#20001,203,"string") -hasLocation(#21981,#20315) -#21982=* -tokeninfo(#21982,8,#20001,204,"|") -#21983=@"loc,{#10000},27,27,27,27" -locations_default(#21983,#10000,27,27,27,27) -hasLocation(#21982,#21983) -#21984=* -tokeninfo(#21984,7,#20001,205,"number") -hasLocation(#21984,#20319) +tokeninfo(#21981,8,#20001,850,":") +#21982=@"loc,{#10000},92,45,92,45" +locations_default(#21982,#10000,92,45,92,45) +hasLocation(#21981,#21982) +#21983=* +tokeninfo(#21983,8,#20001,851,"(") +#21984=@"loc,{#10000},92,47,92,47" +locations_default(#21984,#10000,92,47,92,47) +hasLocation(#21983,#21984) #21985=* -tokeninfo(#21985,8,#20001,206,"[") -#21986=@"loc,{#10000},27,35,27,35" -locations_default(#21986,#10000,27,35,27,35) +tokeninfo(#21985,6,#20001,852,"x") +#21986=@"loc,{#10000},92,48,92,48" +locations_default(#21986,#10000,92,48,92,48) hasLocation(#21985,#21986) #21987=* -tokeninfo(#21987,8,#20001,207,"]") -#21988=@"loc,{#10000},27,36,27,36" -locations_default(#21988,#10000,27,36,27,36) +tokeninfo(#21987,8,#20001,853,":") +#21988=@"loc,{#10000},92,49,92,49" +locations_default(#21988,#10000,92,49,92,49) hasLocation(#21987,#21988) #21989=* -tokeninfo(#21989,8,#20001,208,">") -#21990=@"loc,{#10000},27,37,27,37" -locations_default(#21990,#10000,27,37,27,37) +tokeninfo(#21989,7,#20001,854,"number") +#21990=@"loc,{#10000},92,51,92,56" +locations_default(#21990,#10000,92,51,92,56) hasLocation(#21989,#21990) #21991=* -tokeninfo(#21991,8,#20001,209,";") -#21992=@"loc,{#10000},27,38,27,38" -locations_default(#21992,#10000,27,38,27,38) +tokeninfo(#21991,8,#20001,855,")") +#21992=@"loc,{#10000},92,57,92,57" +locations_default(#21992,#10000,92,57,92,57) hasLocation(#21991,#21992) #21993=* -tokeninfo(#21993,7,#20001,210,"type") -#21994=@"loc,{#10000},29,3,29,6" -locations_default(#21994,#10000,29,3,29,6) +tokeninfo(#21993,8,#20001,856,"=>") +#21994=@"loc,{#10000},92,59,92,60" +locations_default(#21994,#10000,92,59,92,60) hasLocation(#21993,#21994) -next_token(#21387,#21993) #21995=* -tokeninfo(#21995,6,#20001,211,"Diff") -hasLocation(#21995,#20323) -#21996=* -tokeninfo(#21996,8,#20001,212,"<") -#21997=@"loc,{#10000},29,12,29,12" -locations_default(#21997,#10000,29,12,29,12) -hasLocation(#21996,#21997) -#21998=* -tokeninfo(#21998,6,#20001,213,"T") -hasLocation(#21998,#20328) +tokeninfo(#21995,7,#20001,857,"void") +#21996=@"loc,{#10000},92,62,92,65" +locations_default(#21996,#10000,92,62,92,65) +hasLocation(#21995,#21996) +#21997=* +tokeninfo(#21997,8,#20001,858,"}") +#21998=@"loc,{#10000},92,67,92,67" +locations_default(#21998,#10000,92,67,92,67) +hasLocation(#21997,#21998) #21999=* -tokeninfo(#21999,8,#20001,214,",") -#22000=@"loc,{#10000},29,14,29,14" -locations_default(#22000,#10000,29,14,29,14) +tokeninfo(#21999,8,#20001,859,">") +#22000=@"loc,{#10000},92,68,92,68" +locations_default(#22000,#10000,92,68,92,68) hasLocation(#21999,#22000) #22001=* -tokeninfo(#22001,6,#20001,215,"U") -hasLocation(#22001,#20331) -#22002=* -tokeninfo(#22002,8,#20001,216,">") -#22003=@"loc,{#10000},29,17,29,17" -locations_default(#22003,#10000,29,17,29,17) -hasLocation(#22002,#22003) -#22004=* -tokeninfo(#22004,8,#20001,217,"=") -#22005=@"loc,{#10000},29,19,29,19" -locations_default(#22005,#10000,29,19,29,19) -hasLocation(#22004,#22005) -#22006=* -tokeninfo(#22006,6,#20001,218,"T") -hasLocation(#22006,#20336) +tokeninfo(#22001,8,#20001,860,";") +#22002=@"loc,{#10000},92,69,92,69" +locations_default(#22002,#10000,92,69,92,69) +hasLocation(#22001,#22002) +#22003=* +tokeninfo(#22003,7,#20001,861,"declare") +#22004=@"loc,{#10000},94,3,94,9" +locations_default(#22004,#10000,94,3,94,9) +hasLocation(#22003,#22004) +next_token(#20074,#22003) +#22005=* +tokeninfo(#22005,7,#20001,862,"function") +#22006=@"loc,{#10000},94,11,94,18" +locations_default(#22006,#10000,94,11,94,18) +hasLocation(#22005,#22006) #22007=* -tokeninfo(#22007,7,#20001,219,"extends") -#22008=@"loc,{#10000},29,23,29,29" -locations_default(#22008,#10000,29,23,29,29) +tokeninfo(#22007,6,#20001,863,"foo") +#22008=@"loc,{#10000},94,20,94,22" +locations_default(#22008,#10000,94,20,94,22) hasLocation(#22007,#22008) #22009=* -tokeninfo(#22009,6,#20001,220,"U") -hasLocation(#22009,#20338) -#22010=* -tokeninfo(#22010,8,#20001,221,"?") -#22011=@"loc,{#10000},29,33,29,33" -locations_default(#22011,#10000,29,33,29,33) -hasLocation(#22010,#22011) -#22012=* -tokeninfo(#22012,7,#20001,222,"never") -hasLocation(#22012,#20340) +tokeninfo(#22009,8,#20001,864,"(") +#22010=@"loc,{#10000},94,23,94,23" +locations_default(#22010,#10000,94,23,94,23) +hasLocation(#22009,#22010) +#22011=* +tokeninfo(#22011,6,#20001,865,"x") +#22012=@"loc,{#10000},94,24,94,24" +locations_default(#22012,#10000,94,24,94,24) +hasLocation(#22011,#22012) #22013=* -tokeninfo(#22013,8,#20001,223,":") -#22014=@"loc,{#10000},29,41,29,41" -locations_default(#22014,#10000,29,41,29,41) +tokeninfo(#22013,8,#20001,866,":") +#22014=@"loc,{#10000},94,25,94,25" +locations_default(#22014,#10000,94,25,94,25) hasLocation(#22013,#22014) #22015=* -tokeninfo(#22015,6,#20001,224,"T") -hasLocation(#22015,#20342) -#22016=* -tokeninfo(#22016,8,#20001,225,";") -#22017=@"loc,{#10000},29,44,29,44" -locations_default(#22017,#10000,29,44,29,44) -hasLocation(#22016,#22017) -#22018=* -tokeninfo(#22018,7,#20001,226,"type") -#22019=@"loc,{#10000},30,3,30,6" -locations_default(#22019,#10000,30,3,30,6) -hasLocation(#22018,#22019) -next_token(#21389,#22018) -#22020=* -tokeninfo(#22020,6,#20001,227,"Filter") -hasLocation(#22020,#20346) +tokeninfo(#22015,7,#20001,867,"string") +#22016=@"loc,{#10000},94,27,94,32" +locations_default(#22016,#10000,94,27,94,32) +hasLocation(#22015,#22016) +#22017=* +tokeninfo(#22017,8,#20001,868,")") +#22018=@"loc,{#10000},94,33,94,33" +locations_default(#22018,#10000,94,33,94,33) +hasLocation(#22017,#22018) +#22019=* +tokeninfo(#22019,8,#20001,869,":") +#22020=@"loc,{#10000},94,34,94,34" +locations_default(#22020,#10000,94,34,94,34) +hasLocation(#22019,#22020) #22021=* -tokeninfo(#22021,8,#20001,228,"<") -#22022=@"loc,{#10000},30,14,30,14" -locations_default(#22022,#10000,30,14,30,14) +tokeninfo(#22021,7,#20001,870,"number") +#22022=@"loc,{#10000},94,36,94,41" +locations_default(#22022,#10000,94,36,94,41) hasLocation(#22021,#22022) #22023=* -tokeninfo(#22023,6,#20001,229,"T") -hasLocation(#22023,#20351) -#22024=* -tokeninfo(#22024,8,#20001,230,",") -#22025=@"loc,{#10000},30,16,30,16" -locations_default(#22025,#10000,30,16,30,16) -hasLocation(#22024,#22025) -#22026=* -tokeninfo(#22026,6,#20001,231,"U") -hasLocation(#22026,#20354) +tokeninfo(#22023,8,#20001,871,";") +#22024=@"loc,{#10000},94,42,94,42" +locations_default(#22024,#10000,94,42,94,42) +hasLocation(#22023,#22024) +#22025=* +tokeninfo(#22025,7,#20001,872,"declare") +#22026=@"loc,{#10000},95,3,95,9" +locations_default(#22026,#10000,95,3,95,9) +hasLocation(#22025,#22026) #22027=* -tokeninfo(#22027,8,#20001,232,">") -#22028=@"loc,{#10000},30,19,30,19" -locations_default(#22028,#10000,30,19,30,19) +tokeninfo(#22027,7,#20001,873,"function") +#22028=@"loc,{#10000},95,11,95,18" +locations_default(#22028,#10000,95,11,95,18) hasLocation(#22027,#22028) #22029=* -tokeninfo(#22029,8,#20001,233,"=") -#22030=@"loc,{#10000},30,21,30,21" -locations_default(#22030,#10000,30,21,30,21) +tokeninfo(#22029,6,#20001,874,"foo") +#22030=@"loc,{#10000},95,20,95,22" +locations_default(#22030,#10000,95,20,95,22) hasLocation(#22029,#22030) #22031=* -tokeninfo(#22031,6,#20001,234,"T") -hasLocation(#22031,#20359) -#22032=* -tokeninfo(#22032,7,#20001,235,"extends") -#22033=@"loc,{#10000},30,25,30,31" -locations_default(#22033,#10000,30,25,30,31) -hasLocation(#22032,#22033) -#22034=* -tokeninfo(#22034,6,#20001,236,"U") -hasLocation(#22034,#20361) +tokeninfo(#22031,8,#20001,875,"(") +#22032=@"loc,{#10000},95,23,95,23" +locations_default(#22032,#10000,95,23,95,23) +hasLocation(#22031,#22032) +#22033=* +tokeninfo(#22033,6,#20001,876,"x") +#22034=@"loc,{#10000},95,24,95,24" +locations_default(#22034,#10000,95,24,95,24) +hasLocation(#22033,#22034) #22035=* -tokeninfo(#22035,8,#20001,237,"?") -#22036=@"loc,{#10000},30,35,30,35" -locations_default(#22036,#10000,30,35,30,35) +tokeninfo(#22035,8,#20001,877,":") +#22036=@"loc,{#10000},95,25,95,25" +locations_default(#22036,#10000,95,25,95,25) hasLocation(#22035,#22036) #22037=* -tokeninfo(#22037,6,#20001,238,"T") -hasLocation(#22037,#20363) -#22038=* -tokeninfo(#22038,8,#20001,239,":") -#22039=@"loc,{#10000},30,39,30,39" -locations_default(#22039,#10000,30,39,30,39) -hasLocation(#22038,#22039) -#22040=* -tokeninfo(#22040,7,#20001,240,"never") -hasLocation(#22040,#20365) +tokeninfo(#22037,7,#20001,878,"number") +#22038=@"loc,{#10000},95,27,95,32" +locations_default(#22038,#10000,95,27,95,32) +hasLocation(#22037,#22038) +#22039=* +tokeninfo(#22039,8,#20001,879,")") +#22040=@"loc,{#10000},95,33,95,33" +locations_default(#22040,#10000,95,33,95,33) +hasLocation(#22039,#22040) #22041=* -tokeninfo(#22041,8,#20001,241,";") -#22042=@"loc,{#10000},30,46,30,46" -locations_default(#22042,#10000,30,46,30,46) +tokeninfo(#22041,8,#20001,880,":") +#22042=@"loc,{#10000},95,34,95,34" +locations_default(#22042,#10000,95,34,95,34) hasLocation(#22041,#22042) #22043=* -tokeninfo(#22043,7,#20001,242,"type") -#22044=@"loc,{#10000},32,3,32,6" -locations_default(#22044,#10000,32,3,32,6) +tokeninfo(#22043,7,#20001,881,"string") +#22044=@"loc,{#10000},95,36,95,41" +locations_default(#22044,#10000,95,36,95,41) hasLocation(#22043,#22044) -next_token(#21391,#22043) #22045=* -tokeninfo(#22045,6,#20001,243,"T30") -hasLocation(#22045,#20369) -#22046=* -tokeninfo(#22046,8,#20001,244,"=") -#22047=@"loc,{#10000},32,12,32,12" -locations_default(#22047,#10000,32,12,32,12) -hasLocation(#22046,#22047) -#22048=* -tokeninfo(#22048,6,#20001,245,"Diff") -hasLocation(#22048,#20373) +tokeninfo(#22045,8,#20001,882,";") +#22046=@"loc,{#10000},95,42,95,42" +locations_default(#22046,#10000,95,42,95,42) +hasLocation(#22045,#22046) +#22047=* +tokeninfo(#22047,7,#20001,883,"declare") +#22048=@"loc,{#10000},96,3,96,9" +locations_default(#22048,#10000,96,3,96,9) +hasLocation(#22047,#22048) #22049=* -tokeninfo(#22049,8,#20001,246,"<") -#22050=@"loc,{#10000},32,18,32,18" -locations_default(#22050,#10000,32,18,32,18) +tokeninfo(#22049,7,#20001,884,"function") +#22050=@"loc,{#10000},96,11,96,18" +locations_default(#22050,#10000,96,11,96,18) hasLocation(#22049,#22050) #22051=* -tokeninfo(#22051,4,#20001,247,"""a""") -hasLocation(#22051,#20377) -#22052=* -tokeninfo(#22052,8,#20001,248,"|") -#22053=@"loc,{#10000},32,23,32,23" -locations_default(#22053,#10000,32,23,32,23) -hasLocation(#22052,#22053) -#22054=* -tokeninfo(#22054,4,#20001,249,"""b""") -hasLocation(#22054,#20379) +tokeninfo(#22051,6,#20001,885,"foo") +#22052=@"loc,{#10000},96,20,96,22" +locations_default(#22052,#10000,96,20,96,22) +hasLocation(#22051,#22052) +#22053=* +tokeninfo(#22053,8,#20001,886,"(") +#22054=@"loc,{#10000},96,23,96,23" +locations_default(#22054,#10000,96,23,96,23) +hasLocation(#22053,#22054) #22055=* -tokeninfo(#22055,8,#20001,250,"|") -#22056=@"loc,{#10000},32,29,32,29" -locations_default(#22056,#10000,32,29,32,29) +tokeninfo(#22055,6,#20001,887,"x") +#22056=@"loc,{#10000},96,24,96,24" +locations_default(#22056,#10000,96,24,96,24) hasLocation(#22055,#22056) #22057=* -tokeninfo(#22057,4,#20001,251,"""c""") -hasLocation(#22057,#20381) -#22058=* -tokeninfo(#22058,8,#20001,252,"|") -#22059=@"loc,{#10000},32,35,32,35" -locations_default(#22059,#10000,32,35,32,35) -hasLocation(#22058,#22059) -#22060=* -tokeninfo(#22060,4,#20001,253,"""d""") -hasLocation(#22060,#20383) +tokeninfo(#22057,8,#20001,888,":") +#22058=@"loc,{#10000},96,25,96,25" +locations_default(#22058,#10000,96,25,96,25) +hasLocation(#22057,#22058) +#22059=* +tokeninfo(#22059,7,#20001,889,"string") +#22060=@"loc,{#10000},96,27,96,32" +locations_default(#22060,#10000,96,27,96,32) +hasLocation(#22059,#22060) #22061=* -tokeninfo(#22061,8,#20001,254,",") -#22062=@"loc,{#10000},32,40,32,40" -locations_default(#22062,#10000,32,40,32,40) +tokeninfo(#22061,8,#20001,890,"|") +#22062=@"loc,{#10000},96,34,96,34" +locations_default(#22062,#10000,96,34,96,34) hasLocation(#22061,#22062) #22063=* -tokeninfo(#22063,4,#20001,255,"""a""") -hasLocation(#22063,#20387) -#22064=* -tokeninfo(#22064,8,#20001,256,"|") -#22065=@"loc,{#10000},32,46,32,46" -locations_default(#22065,#10000,32,46,32,46) -hasLocation(#22064,#22065) -#22066=* -tokeninfo(#22066,4,#20001,257,"""c""") -hasLocation(#22066,#20389) +tokeninfo(#22063,7,#20001,891,"number") +#22064=@"loc,{#10000},96,36,96,41" +locations_default(#22064,#10000,96,36,96,41) +hasLocation(#22063,#22064) +#22065=* +tokeninfo(#22065,8,#20001,892,")") +#22066=@"loc,{#10000},96,42,96,42" +locations_default(#22066,#10000,96,42,96,42) +hasLocation(#22065,#22066) #22067=* -tokeninfo(#22067,8,#20001,258,"|") -#22068=@"loc,{#10000},32,52,32,52" -locations_default(#22068,#10000,32,52,32,52) +tokeninfo(#22067,8,#20001,893,":") +#22068=@"loc,{#10000},96,43,96,43" +locations_default(#22068,#10000,96,43,96,43) hasLocation(#22067,#22068) #22069=* -tokeninfo(#22069,4,#20001,259,"""f""") -hasLocation(#22069,#20391) -#22070=* -tokeninfo(#22070,8,#20001,260,">") -#22071=@"loc,{#10000},32,57,32,57" -locations_default(#22071,#10000,32,57,32,57) -hasLocation(#22070,#22071) -#22072=* -tokeninfo(#22072,8,#20001,261,";") -#22073=@"loc,{#10000},32,58,32,58" -locations_default(#22073,#10000,32,58,32,58) -hasLocation(#22072,#22073) -#22074=* -tokeninfo(#22074,7,#20001,262,"type") -#22075=@"loc,{#10000},33,3,33,6" -locations_default(#22075,#10000,33,3,33,6) -hasLocation(#22074,#22075) -next_token(#21393,#22074) -#22076=* -tokeninfo(#22076,6,#20001,263,"T31") -hasLocation(#22076,#20395) +tokeninfo(#22069,7,#20001,894,"string") +#22070=@"loc,{#10000},96,45,96,50" +locations_default(#22070,#10000,96,45,96,50) +hasLocation(#22069,#22070) +#22071=* +tokeninfo(#22071,8,#20001,895,"|") +#22072=@"loc,{#10000},96,52,96,52" +locations_default(#22072,#10000,96,52,96,52) +hasLocation(#22071,#22072) +#22073=* +tokeninfo(#22073,7,#20001,896,"number") +#22074=@"loc,{#10000},96,54,96,59" +locations_default(#22074,#10000,96,54,96,59) +hasLocation(#22073,#22074) +#22075=* +tokeninfo(#22075,8,#20001,897,";") +#22076=@"loc,{#10000},96,60,96,60" +locations_default(#22076,#10000,96,60,96,60) +hasLocation(#22075,#22076) #22077=* -tokeninfo(#22077,8,#20001,264,"=") -#22078=@"loc,{#10000},33,12,33,12" -locations_default(#22078,#10000,33,12,33,12) +tokeninfo(#22077,7,#20001,898,"type") +#22078=@"loc,{#10000},97,3,97,6" +locations_default(#22078,#10000,97,3,97,6) hasLocation(#22077,#22078) #22079=* -tokeninfo(#22079,6,#20001,265,"Filter") -hasLocation(#22079,#20399) -#22080=* -tokeninfo(#22080,8,#20001,266,"<") -#22081=@"loc,{#10000},33,20,33,20" -locations_default(#22081,#10000,33,20,33,20) -hasLocation(#22080,#22081) -#22082=* -tokeninfo(#22082,4,#20001,267,"""a""") -hasLocation(#22082,#20403) +tokeninfo(#22079,6,#20001,899,"T30") +#22080=@"loc,{#10000},97,8,97,10" +locations_default(#22080,#10000,97,8,97,10) +hasLocation(#22079,#22080) +#22081=* +tokeninfo(#22081,8,#20001,900,"=") +#22082=@"loc,{#10000},97,12,97,12" +locations_default(#22082,#10000,97,12,97,12) +hasLocation(#22081,#22082) #22083=* -tokeninfo(#22083,8,#20001,268,"|") -#22084=@"loc,{#10000},33,25,33,25" -locations_default(#22084,#10000,33,25,33,25) +tokeninfo(#22083,6,#20001,901,"ReturnType") +#22084=@"loc,{#10000},97,14,97,23" +locations_default(#22084,#10000,97,14,97,23) hasLocation(#22083,#22084) #22085=* -tokeninfo(#22085,4,#20001,269,"""b""") -hasLocation(#22085,#20405) -#22086=* -tokeninfo(#22086,8,#20001,270,"|") -#22087=@"loc,{#10000},33,31,33,31" -locations_default(#22087,#10000,33,31,33,31) -hasLocation(#22086,#22087) -#22088=* -tokeninfo(#22088,4,#20001,271,"""c""") -hasLocation(#22088,#20407) +tokeninfo(#22085,8,#20001,902,"<") +#22086=@"loc,{#10000},97,24,97,24" +locations_default(#22086,#10000,97,24,97,24) +hasLocation(#22085,#22086) +#22087=* +tokeninfo(#22087,7,#20001,903,"typeof") +#22088=@"loc,{#10000},97,25,97,30" +locations_default(#22088,#10000,97,25,97,30) +hasLocation(#22087,#22088) #22089=* -tokeninfo(#22089,8,#20001,272,"|") -#22090=@"loc,{#10000},33,37,33,37" -locations_default(#22090,#10000,33,37,33,37) +tokeninfo(#22089,6,#20001,904,"foo") +#22090=@"loc,{#10000},97,32,97,34" +locations_default(#22090,#10000,97,32,97,34) hasLocation(#22089,#22090) #22091=* -tokeninfo(#22091,4,#20001,273,"""d""") -hasLocation(#22091,#20409) -#22092=* -tokeninfo(#22092,8,#20001,274,",") -#22093=@"loc,{#10000},33,42,33,42" -locations_default(#22093,#10000,33,42,33,42) -hasLocation(#22092,#22093) -#22094=* -tokeninfo(#22094,4,#20001,275,"""a""") -hasLocation(#22094,#20413) +tokeninfo(#22091,8,#20001,905,">") +#22092=@"loc,{#10000},97,35,97,35" +locations_default(#22092,#10000,97,35,97,35) +hasLocation(#22091,#22092) +#22093=* +tokeninfo(#22093,8,#20001,906,";") +#22094=@"loc,{#10000},97,36,97,36" +locations_default(#22094,#10000,97,36,97,36) +hasLocation(#22093,#22094) #22095=* -tokeninfo(#22095,8,#20001,276,"|") -#22096=@"loc,{#10000},33,48,33,48" -locations_default(#22096,#10000,33,48,33,48) +tokeninfo(#22095,7,#20001,907,"type") +#22096=@"loc,{#10000},99,3,99,6" +locations_default(#22096,#10000,99,3,99,6) hasLocation(#22095,#22096) +next_token(#20076,#22095) #22097=* -tokeninfo(#22097,4,#20001,277,"""c""") -hasLocation(#22097,#20415) -#22098=* -tokeninfo(#22098,8,#20001,278,"|") -#22099=@"loc,{#10000},33,54,33,54" -locations_default(#22099,#10000,33,54,33,54) -hasLocation(#22098,#22099) -#22100=* -tokeninfo(#22100,4,#20001,279,"""f""") -hasLocation(#22100,#20417) +tokeninfo(#22097,6,#20001,908,"AnyFunction") +#22098=@"loc,{#10000},99,8,99,18" +locations_default(#22098,#10000,99,8,99,18) +hasLocation(#22097,#22098) +#22099=* +tokeninfo(#22099,8,#20001,909,"=") +#22100=@"loc,{#10000},99,20,99,20" +locations_default(#22100,#10000,99,20,99,20) +hasLocation(#22099,#22100) #22101=* -tokeninfo(#22101,8,#20001,280,">") -#22102=@"loc,{#10000},33,59,33,59" -locations_default(#22102,#10000,33,59,33,59) +tokeninfo(#22101,8,#20001,910,"(") +#22102=@"loc,{#10000},99,22,99,22" +locations_default(#22102,#10000,99,22,99,22) hasLocation(#22101,#22102) #22103=* -tokeninfo(#22103,8,#20001,281,";") -#22104=@"loc,{#10000},33,60,33,60" -locations_default(#22104,#10000,33,60,33,60) +tokeninfo(#22103,8,#20001,911,"...") +#22104=@"loc,{#10000},99,23,99,25" +locations_default(#22104,#10000,99,23,99,25) hasLocation(#22103,#22104) #22105=* -tokeninfo(#22105,7,#20001,282,"type") -#22106=@"loc,{#10000},34,3,34,6" -locations_default(#22106,#10000,34,3,34,6) +tokeninfo(#22105,6,#20001,912,"args") +#22106=@"loc,{#10000},99,26,99,29" +locations_default(#22106,#10000,99,26,99,29) hasLocation(#22105,#22106) -next_token(#21395,#22105) #22107=* -tokeninfo(#22107,6,#20001,283,"T32") -hasLocation(#22107,#20421) -#22108=* -tokeninfo(#22108,8,#20001,284,"=") -#22109=@"loc,{#10000},34,12,34,12" -locations_default(#22109,#10000,34,12,34,12) -hasLocation(#22108,#22109) -#22110=* -tokeninfo(#22110,6,#20001,285,"Diff") -hasLocation(#22110,#20425) +tokeninfo(#22107,8,#20001,913,":") +#22108=@"loc,{#10000},99,30,99,30" +locations_default(#22108,#10000,99,30,99,30) +hasLocation(#22107,#22108) +#22109=* +tokeninfo(#22109,7,#20001,914,"any") +#22110=@"loc,{#10000},99,32,99,34" +locations_default(#22110,#10000,99,32,99,34) +hasLocation(#22109,#22110) #22111=* -tokeninfo(#22111,8,#20001,286,"<") -#22112=@"loc,{#10000},34,18,34,18" -locations_default(#22112,#10000,34,18,34,18) +tokeninfo(#22111,8,#20001,915,"[") +#22112=@"loc,{#10000},99,35,99,35" +locations_default(#22112,#10000,99,35,99,35) hasLocation(#22111,#22112) #22113=* -tokeninfo(#22113,7,#20001,287,"string") -hasLocation(#22113,#20429) -#22114=* -tokeninfo(#22114,8,#20001,288,"|") -#22115=@"loc,{#10000},34,26,34,26" -locations_default(#22115,#10000,34,26,34,26) -hasLocation(#22114,#22115) -#22116=* -tokeninfo(#22116,7,#20001,289,"number") -hasLocation(#22116,#20431) +tokeninfo(#22113,8,#20001,916,"]") +#22114=@"loc,{#10000},99,36,99,36" +locations_default(#22114,#10000,99,36,99,36) +hasLocation(#22113,#22114) +#22115=* +tokeninfo(#22115,8,#20001,917,")") +#22116=@"loc,{#10000},99,37,99,37" +locations_default(#22116,#10000,99,37,99,37) +hasLocation(#22115,#22116) #22117=* -tokeninfo(#22117,8,#20001,290,"|") -#22118=@"loc,{#10000},34,35,34,35" -locations_default(#22118,#10000,34,35,34,35) +tokeninfo(#22117,8,#20001,918,"=>") +#22118=@"loc,{#10000},99,39,99,40" +locations_default(#22118,#10000,99,39,99,40) hasLocation(#22117,#22118) #22119=* -tokeninfo(#22119,8,#20001,291,"(") -#22120=@"loc,{#10000},34,37,34,37" -locations_default(#22120,#10000,34,37,34,37) +tokeninfo(#22119,7,#20001,919,"any") +#22120=@"loc,{#10000},99,42,99,44" +locations_default(#22120,#10000,99,42,99,44) hasLocation(#22119,#22120) #22121=* -tokeninfo(#22121,8,#20001,292,"(") -#22122=@"loc,{#10000},34,38,34,38" -locations_default(#22122,#10000,34,38,34,38) +tokeninfo(#22121,8,#20001,920,";") +#22122=@"loc,{#10000},99,45,99,45" +locations_default(#22122,#10000,99,45,99,45) hasLocation(#22121,#22122) #22123=* -tokeninfo(#22123,8,#20001,293,")") -#22124=@"loc,{#10000},34,39,34,39" -locations_default(#22124,#10000,34,39,34,39) +tokeninfo(#22123,7,#20001,921,"type") +#22124=@"loc,{#10000},100,3,100,6" +locations_default(#22124,#10000,100,3,100,6) hasLocation(#22123,#22124) #22125=* -tokeninfo(#22125,8,#20001,294,"=>") -#22126=@"loc,{#10000},34,41,34,42" -locations_default(#22126,#10000,34,41,34,42) +tokeninfo(#22125,6,#20001,922,"ReturnType") +#22126=@"loc,{#10000},100,8,100,17" +locations_default(#22126,#10000,100,8,100,17) hasLocation(#22125,#22126) #22127=* -tokeninfo(#22127,7,#20001,295,"void") -hasLocation(#22127,#20440) -#22128=* -tokeninfo(#22128,8,#20001,296,")") -#22129=@"loc,{#10000},34,48,34,48" -locations_default(#22129,#10000,34,48,34,48) -hasLocation(#22128,#22129) -#22130=* -tokeninfo(#22130,8,#20001,297,",") -#22131=@"loc,{#10000},34,49,34,49" -locations_default(#22131,#10000,34,49,34,49) -hasLocation(#22130,#22131) -#22132=* -tokeninfo(#22132,6,#20001,298,"Function") -hasLocation(#22132,#20442) +tokeninfo(#22127,8,#20001,923,"<") +#22128=@"loc,{#10000},100,18,100,18" +locations_default(#22128,#10000,100,18,100,18) +hasLocation(#22127,#22128) +#22129=* +tokeninfo(#22129,6,#20001,924,"T") +#22130=@"loc,{#10000},100,19,100,19" +locations_default(#22130,#10000,100,19,100,19) +hasLocation(#22129,#22130) +#22131=* +tokeninfo(#22131,7,#20001,925,"extends") +#22132=@"loc,{#10000},100,21,100,27" +locations_default(#22132,#10000,100,21,100,27) +hasLocation(#22131,#22132) #22133=* -tokeninfo(#22133,8,#20001,299,">") -#22134=@"loc,{#10000},34,59,34,59" -locations_default(#22134,#10000,34,59,34,59) +tokeninfo(#22133,6,#20001,926,"AnyFunction") +#22134=@"loc,{#10000},100,29,100,39" +locations_default(#22134,#10000,100,29,100,39) hasLocation(#22133,#22134) #22135=* -tokeninfo(#22135,8,#20001,300,";") -#22136=@"loc,{#10000},34,60,34,60" -locations_default(#22136,#10000,34,60,34,60) +tokeninfo(#22135,8,#20001,927,">") +#22136=@"loc,{#10000},100,40,100,40" +locations_default(#22136,#10000,100,40,100,40) hasLocation(#22135,#22136) #22137=* -tokeninfo(#22137,7,#20001,301,"type") -#22138=@"loc,{#10000},35,3,35,6" -locations_default(#22138,#10000,35,3,35,6) +tokeninfo(#22137,8,#20001,928,"=") +#22138=@"loc,{#10000},100,42,100,42" +locations_default(#22138,#10000,100,42,100,42) hasLocation(#22137,#22138) -next_token(#21397,#22137) #22139=* -tokeninfo(#22139,6,#20001,302,"T33") -hasLocation(#22139,#20446) -#22140=* -tokeninfo(#22140,8,#20001,303,"=") -#22141=@"loc,{#10000},35,12,35,12" -locations_default(#22141,#10000,35,12,35,12) -hasLocation(#22140,#22141) -#22142=* -tokeninfo(#22142,6,#20001,304,"Filter") -hasLocation(#22142,#20450) +tokeninfo(#22139,6,#20001,929,"T") +#22140=@"loc,{#10000},100,44,100,44" +locations_default(#22140,#10000,100,44,100,44) +hasLocation(#22139,#22140) +#22141=* +tokeninfo(#22141,7,#20001,930,"extends") +#22142=@"loc,{#10000},100,46,100,52" +locations_default(#22142,#10000,100,46,100,52) +hasLocation(#22141,#22142) #22143=* -tokeninfo(#22143,8,#20001,305,"<") -#22144=@"loc,{#10000},35,20,35,20" -locations_default(#22144,#10000,35,20,35,20) +tokeninfo(#22143,8,#20001,931,"(") +#22144=@"loc,{#10000},100,54,100,54" +locations_default(#22144,#10000,100,54,100,54) hasLocation(#22143,#22144) #22145=* -tokeninfo(#22145,7,#20001,306,"string") -hasLocation(#22145,#20454) -#22146=* -tokeninfo(#22146,8,#20001,307,"|") -#22147=@"loc,{#10000},35,28,35,28" -locations_default(#22147,#10000,35,28,35,28) -hasLocation(#22146,#22147) -#22148=* -tokeninfo(#22148,7,#20001,308,"number") -hasLocation(#22148,#20456) +tokeninfo(#22145,8,#20001,932,"...") +#22146=@"loc,{#10000},100,55,100,57" +locations_default(#22146,#10000,100,55,100,57) +hasLocation(#22145,#22146) +#22147=* +tokeninfo(#22147,6,#20001,933,"args") +#22148=@"loc,{#10000},100,58,100,61" +locations_default(#22148,#10000,100,58,100,61) +hasLocation(#22147,#22148) #22149=* -tokeninfo(#22149,8,#20001,309,"|") -#22150=@"loc,{#10000},35,37,35,37" -locations_default(#22150,#10000,35,37,35,37) +tokeninfo(#22149,8,#20001,934,":") +#22150=@"loc,{#10000},100,62,100,62" +locations_default(#22150,#10000,100,62,100,62) hasLocation(#22149,#22150) #22151=* -tokeninfo(#22151,8,#20001,310,"(") -#22152=@"loc,{#10000},35,39,35,39" -locations_default(#22152,#10000,35,39,35,39) +tokeninfo(#22151,7,#20001,935,"any") +#22152=@"loc,{#10000},100,64,100,66" +locations_default(#22152,#10000,100,64,100,66) hasLocation(#22151,#22152) #22153=* -tokeninfo(#22153,8,#20001,311,"(") -#22154=@"loc,{#10000},35,40,35,40" -locations_default(#22154,#10000,35,40,35,40) +tokeninfo(#22153,8,#20001,936,"[") +#22154=@"loc,{#10000},100,67,100,67" +locations_default(#22154,#10000,100,67,100,67) hasLocation(#22153,#22154) #22155=* -tokeninfo(#22155,8,#20001,312,")") -#22156=@"loc,{#10000},35,41,35,41" -locations_default(#22156,#10000,35,41,35,41) +tokeninfo(#22155,8,#20001,937,"]") +#22156=@"loc,{#10000},100,68,100,68" +locations_default(#22156,#10000,100,68,100,68) hasLocation(#22155,#22156) #22157=* -tokeninfo(#22157,8,#20001,313,"=>") -#22158=@"loc,{#10000},35,43,35,44" -locations_default(#22158,#10000,35,43,35,44) +tokeninfo(#22157,8,#20001,938,")") +#22158=@"loc,{#10000},100,69,100,69" +locations_default(#22158,#10000,100,69,100,69) hasLocation(#22157,#22158) #22159=* -tokeninfo(#22159,7,#20001,314,"void") -hasLocation(#22159,#20465) -#22160=* -tokeninfo(#22160,8,#20001,315,")") -#22161=@"loc,{#10000},35,50,35,50" -locations_default(#22161,#10000,35,50,35,50) -hasLocation(#22160,#22161) -#22162=* -tokeninfo(#22162,8,#20001,316,",") -#22163=@"loc,{#10000},35,51,35,51" -locations_default(#22163,#10000,35,51,35,51) -hasLocation(#22162,#22163) -#22164=* -tokeninfo(#22164,6,#20001,317,"Function") -hasLocation(#22164,#20467) +tokeninfo(#22159,8,#20001,939,"=>") +#22160=@"loc,{#10000},100,71,100,72" +locations_default(#22160,#10000,100,71,100,72) +hasLocation(#22159,#22160) +#22161=* +tokeninfo(#22161,7,#20001,940,"infer") +#22162=@"loc,{#10000},100,74,100,78" +locations_default(#22162,#10000,100,74,100,78) +hasLocation(#22161,#22162) +#22163=* +tokeninfo(#22163,6,#20001,941,"R") +#22164=@"loc,{#10000},100,80,100,80" +locations_default(#22164,#10000,100,80,100,80) +hasLocation(#22163,#22164) #22165=* -tokeninfo(#22165,8,#20001,318,">") -#22166=@"loc,{#10000},35,61,35,61" -locations_default(#22166,#10000,35,61,35,61) +tokeninfo(#22165,8,#20001,942,"?") +#22166=@"loc,{#10000},100,82,100,82" +locations_default(#22166,#10000,100,82,100,82) hasLocation(#22165,#22166) #22167=* -tokeninfo(#22167,8,#20001,319,";") -#22168=@"loc,{#10000},35,62,35,62" -locations_default(#22168,#10000,35,62,35,62) +tokeninfo(#22167,6,#20001,943,"R") +#22168=@"loc,{#10000},100,84,100,84" +locations_default(#22168,#10000,100,84,100,84) hasLocation(#22167,#22168) #22169=* -tokeninfo(#22169,7,#20001,320,"type") -#22170=@"loc,{#10000},37,3,37,6" -locations_default(#22170,#10000,37,3,37,6) +tokeninfo(#22169,8,#20001,944,":") +#22170=@"loc,{#10000},100,86,100,86" +locations_default(#22170,#10000,100,86,100,86) hasLocation(#22169,#22170) -next_token(#21399,#22169) #22171=* -tokeninfo(#22171,6,#20001,321,"NonNullable") -hasLocation(#22171,#20471) -#22172=* -tokeninfo(#22172,8,#20001,322,"<") -#22173=@"loc,{#10000},37,19,37,19" -locations_default(#22173,#10000,37,19,37,19) -hasLocation(#22172,#22173) -#22174=* -tokeninfo(#22174,6,#20001,323,"T") -hasLocation(#22174,#20475) +tokeninfo(#22171,7,#20001,945,"any") +#22172=@"loc,{#10000},100,88,100,90" +locations_default(#22172,#10000,100,88,100,90) +hasLocation(#22171,#22172) +#22173=* +tokeninfo(#22173,8,#20001,946,";") +#22174=@"loc,{#10000},100,91,100,91" +locations_default(#22174,#10000,100,91,100,91) +hasLocation(#22173,#22174) #22175=* -tokeninfo(#22175,8,#20001,324,">") -#22176=@"loc,{#10000},37,21,37,21" -locations_default(#22176,#10000,37,21,37,21) -hasLocation(#22175,#22176) -#22177=* -tokeninfo(#22177,8,#20001,325,"=") -#22178=@"loc,{#10000},37,23,37,23" -locations_default(#22178,#10000,37,23,37,23) -hasLocation(#22177,#22178) -#22179=* -tokeninfo(#22179,6,#20001,326,"Diff") -hasLocation(#22179,#20480) -#22180=* -tokeninfo(#22180,8,#20001,327,"<") -#22181=@"loc,{#10000},37,29,37,29" -locations_default(#22181,#10000,37,29,37,29) -hasLocation(#22180,#22181) -#22182=* -tokeninfo(#22182,6,#20001,328,"T") -hasLocation(#22182,#20482) +tokeninfo(#22175,8,#20001,947,"}") +hasLocation(#22175,#20279) +#22176=* +tokeninfo(#22176,0,#20001,948,"") +#22177=@"loc,{#10000},103,1,103,0" +locations_default(#22177,#10000,103,1,103,0) +hasLocation(#22176,#22177) +toplevels(#20001,0) +#22178=@"loc,{#10000},1,1,103,0" +locations_default(#22178,#10000,1,1,103,0) +hasLocation(#20001,#22178) +#22179=@"var;{ConditionalTypes1};{#20000}" +variables(#22179,"ConditionalTypes1",#20000) +#22180=@"var;{ConditionalTypes2};{#20000}" +variables(#22180,"ConditionalTypes2",#20000) +#22181=@"local_namespace_name;{ConditionalTypes1};{#20000}" +local_namespace_names(#22181,"ConditionalTypes1",#20000) +#22182=@"local_namespace_name;{ConditionalTypes2};{#20000}" +local_namespace_names(#22182,"ConditionalTypes2",#20000) #22183=* -tokeninfo(#22183,8,#20001,329,",") -#22184=@"loc,{#10000},37,31,37,31" -locations_default(#22184,#10000,37,31,37,31) +stmts(#22183,31,#20001,0,"namespa ... any;\n}") +#22184=@"loc,{#10000},1,1,70,1" +locations_default(#22184,#10000,1,1,70,1) hasLocation(#22183,#22184) +stmtContainers(#22183,#20001) #22185=* -tokeninfo(#22185,1,#20001,330,"null") -hasLocation(#22185,#20486) +exprs(#22185,78,#22183,-1,"ConditionalTypes1") +hasLocation(#22185,#20285) +enclosingStmt(#22185,#22183) +exprContainers(#22185,#20001) +literals("ConditionalTypes1","ConditionalTypes1",#22185) +decl(#22185,#22179) +namespacedecl(#22185,#22181) #22186=* -tokeninfo(#22186,8,#20001,331,"|") -#22187=@"loc,{#10000},37,38,37,38" -locations_default(#22187,#10000,37,38,37,38) -hasLocation(#22186,#22187) -#22188=* -tokeninfo(#22188,7,#20001,332,"undefined") -hasLocation(#22188,#20488) -#22189=* -tokeninfo(#22189,8,#20001,333,">") -#22190=@"loc,{#10000},37,49,37,49" -locations_default(#22190,#10000,37,49,37,49) -hasLocation(#22189,#22190) -#22191=* -tokeninfo(#22191,8,#20001,334,";") -#22192=@"loc,{#10000},37,50,37,50" -locations_default(#22192,#10000,37,50,37,50) -hasLocation(#22191,#22192) -#22193=* -tokeninfo(#22193,7,#20001,335,"type") -#22194=@"loc,{#10000},39,3,39,6" -locations_default(#22194,#10000,39,3,39,6) -hasLocation(#22193,#22194) -next_token(#21401,#22193) -#22195=* -tokeninfo(#22195,6,#20001,336,"T34") -hasLocation(#22195,#20492) -#22196=* -tokeninfo(#22196,8,#20001,337,"=") -#22197=@"loc,{#10000},39,12,39,12" -locations_default(#22197,#10000,39,12,39,12) -hasLocation(#22196,#22197) -#22198=* -tokeninfo(#22198,6,#20001,338,"NonNullable") -hasLocation(#22198,#20496) -#22199=* -tokeninfo(#22199,8,#20001,339,"<") -#22200=@"loc,{#10000},39,25,39,25" -locations_default(#22200,#10000,39,25,39,25) -hasLocation(#22199,#22200) -#22201=* -tokeninfo(#22201,7,#20001,340,"string") -hasLocation(#22201,#20500) -#22202=* -tokeninfo(#22202,8,#20001,341,"|") -#22203=@"loc,{#10000},39,33,39,33" -locations_default(#22203,#10000,39,33,39,33) -hasLocation(#22202,#22203) -#22204=* -tokeninfo(#22204,7,#20001,342,"number") -hasLocation(#22204,#20502) -#22205=* -tokeninfo(#22205,8,#20001,343,"|") -#22206=@"loc,{#10000},39,42,39,42" -locations_default(#22206,#10000,39,42,39,42) -hasLocation(#22205,#22206) -#22207=* -tokeninfo(#22207,7,#20001,344,"undefined") -hasLocation(#22207,#20504) -#22208=* -tokeninfo(#22208,8,#20001,345,">") -#22209=@"loc,{#10000},39,53,39,53" -locations_default(#22209,#10000,39,53,39,53) -hasLocation(#22208,#22209) -#22210=* -tokeninfo(#22210,8,#20001,346,";") -#22211=@"loc,{#10000},39,54,39,54" -locations_default(#22211,#10000,39,54,39,54) -hasLocation(#22210,#22211) -#22212=* -tokeninfo(#22212,7,#20001,347,"type") -#22213=@"loc,{#10000},40,3,40,6" -locations_default(#22213,#10000,40,3,40,6) -hasLocation(#22212,#22213) -next_token(#21403,#22212) -#22214=* -tokeninfo(#22214,6,#20001,348,"T35") -hasLocation(#22214,#20508) -#22215=* -tokeninfo(#22215,8,#20001,349,"=") -#22216=@"loc,{#10000},40,12,40,12" -locations_default(#22216,#10000,40,12,40,12) -hasLocation(#22215,#22216) -#22217=* -tokeninfo(#22217,6,#20001,350,"NonNullable") -hasLocation(#22217,#20512) -#22218=* -tokeninfo(#22218,8,#20001,351,"<") -#22219=@"loc,{#10000},40,25,40,25" -locations_default(#22219,#10000,40,25,40,25) -hasLocation(#22218,#22219) -#22220=* -tokeninfo(#22220,7,#20001,352,"string") -hasLocation(#22220,#20516) -#22221=* -tokeninfo(#22221,8,#20001,353,"|") -#22222=@"loc,{#10000},40,33,40,33" -locations_default(#22222,#10000,40,33,40,33) -hasLocation(#22221,#22222) +scopes(#22186,9) +scopenodes(#22183,#22186) +scopenesting(#22186,#20000) +#22187=@"var;{f1};{#22186}" +variables(#22187,"f1",#22186) +#22188=@"var;{f2};{#22186}" +variables(#22188,"f2",#22186) +#22189=@"local_type_name;{TypeName};{#22186}" +local_type_names(#22189,"TypeName",#22186) +#22190=@"local_type_name;{T0};{#22186}" +local_type_names(#22190,"T0",#22186) +#22191=@"local_type_name;{T1};{#22186}" +local_type_names(#22191,"T1",#22186) +#22192=@"local_type_name;{T2};{#22186}" +local_type_names(#22192,"T2",#22186) +#22193=@"local_type_name;{T3};{#22186}" +local_type_names(#22193,"T3",#22186) +#22194=@"local_type_name;{T4};{#22186}" +local_type_names(#22194,"T4",#22186) +#22195=@"local_type_name;{T10};{#22186}" +local_type_names(#22195,"T10",#22186) +#22196=@"local_type_name;{T12};{#22186}" +local_type_names(#22196,"T12",#22186) +#22197=@"local_type_name;{T11};{#22186}" +local_type_names(#22197,"T11",#22186) +#22198=@"local_type_name;{BoxedValue};{#22186}" +local_type_names(#22198,"BoxedValue",#22186) +#22199=@"local_type_name;{BoxedArray};{#22186}" +local_type_names(#22199,"BoxedArray",#22186) +#22200=@"local_type_name;{Boxed};{#22186}" +local_type_names(#22200,"Boxed",#22186) +#22201=@"local_type_name;{T20};{#22186}" +local_type_names(#22201,"T20",#22186) +#22202=@"local_type_name;{T21};{#22186}" +local_type_names(#22202,"T21",#22186) +#22203=@"local_type_name;{T22};{#22186}" +local_type_names(#22203,"T22",#22186) +#22204=@"local_type_name;{Diff};{#22186}" +local_type_names(#22204,"Diff",#22186) +#22205=@"local_type_name;{Filter};{#22186}" +local_type_names(#22205,"Filter",#22186) +#22206=@"local_type_name;{T30};{#22186}" +local_type_names(#22206,"T30",#22186) +#22207=@"local_type_name;{T31};{#22186}" +local_type_names(#22207,"T31",#22186) +#22208=@"local_type_name;{T32};{#22186}" +local_type_names(#22208,"T32",#22186) +#22209=@"local_type_name;{T33};{#22186}" +local_type_names(#22209,"T33",#22186) +#22210=@"local_type_name;{NonNullable};{#22186}" +local_type_names(#22210,"NonNullable",#22186) +#22211=@"local_type_name;{T34};{#22186}" +local_type_names(#22211,"T34",#22186) +#22212=@"local_type_name;{T35};{#22186}" +local_type_names(#22212,"T35",#22186) +#22213=@"local_type_name;{FunctionPropertyNames};{#22186}" +local_type_names(#22213,"FunctionPropertyNames",#22186) +#22214=@"local_type_name;{FunctionProperties};{#22186}" +local_type_names(#22214,"FunctionProperties",#22186) +#22215=@"local_type_name;{NonFunctionPropertyNames};{#22186}" +local_type_names(#22215,"NonFunctionPropertyNames",#22186) +#22216=@"local_type_name;{NonFunctionProperties};{#22186}" +local_type_names(#22216,"NonFunctionProperties",#22186) +#22217=@"local_type_name;{Part};{#22186}" +local_type_names(#22217,"Part",#22186) +#22218=@"local_type_name;{T40};{#22186}" +local_type_names(#22218,"T40",#22186) +#22219=@"local_type_name;{T41};{#22186}" +local_type_names(#22219,"T41",#22186) +#22220=@"local_type_name;{T42};{#22186}" +local_type_names(#22220,"T42",#22186) +#22221=@"local_type_name;{T43};{#22186}" +local_type_names(#22221,"T43",#22186) +#22222=@"local_type_name;{ReturnType};{#22186}" +local_type_names(#22222,"ReturnType",#22186) #22223=* -tokeninfo(#22223,7,#20001,354,"string") -hasLocation(#22223,#20520) -#22224=* -tokeninfo(#22224,8,#20001,355,"[") -#22225=@"loc,{#10000},40,41,40,41" -locations_default(#22225,#10000,40,41,40,41) -hasLocation(#22224,#22225) +stmts(#22223,35,#22183,0,"type Ty ... bject"";") +#22224=@"loc,{#10000},2,3,8,15" +locations_default(#22224,#10000,2,3,8,15) +hasLocation(#22223,#22224) +stmtContainers(#22223,#22183) +#22225=* +typeexprs(#22225,1,#22223,0,"TypeName") +hasLocation(#22225,#20291) +enclosingStmt(#22225,#22223) +exprContainers(#22225,#22183) +literals("TypeName","TypeName",#22225) +typedecl(#22225,#22189) #22226=* -tokeninfo(#22226,8,#20001,356,"]") -#22227=@"loc,{#10000},40,42,40,42" -locations_default(#22227,#10000,40,42,40,42) -hasLocation(#22226,#22227) +scopes(#22226,12) +scopenodes(#22223,#22226) +scopenesting(#22226,#22186) +#22227=@"local_type_name;{T};{#22226}" +local_type_names(#22227,"T",#22226) #22228=* -tokeninfo(#22228,8,#20001,357,"|") -#22229=@"loc,{#10000},40,44,40,44" -locations_default(#22229,#10000,40,44,40,44) -hasLocation(#22228,#22229) +typeexprs(#22228,22,#22223,2,"T") +hasLocation(#22228,#20295) +enclosingStmt(#22228,#22223) +exprContainers(#22228,#22183) +#22229=* +typeexprs(#22229,1,#22228,0,"T") +hasLocation(#22229,#20295) +enclosingStmt(#22229,#22223) +exprContainers(#22229,#22183) +literals("T","T",#22229) +typedecl(#22229,#22227) #22230=* -tokeninfo(#22230,1,#20001,358,"null") -hasLocation(#22230,#20522) -#22231=* -tokeninfo(#22231,8,#20001,359,"|") -#22232=@"loc,{#10000},40,51,40,51" -locations_default(#22232,#10000,40,51,40,51) -hasLocation(#22231,#22232) +typeexprs(#22230,28,#22223,1,"T exten ... object""") +#22231=@"loc,{#10000},3,7,8,14" +locations_default(#22231,#10000,3,7,8,14) +hasLocation(#22230,#22231) +enclosingStmt(#22230,#22223) +exprContainers(#22230,#22183) +#22232=* +typeexprs(#22232,0,#22230,0,"T") +hasLocation(#22232,#20301) +enclosingStmt(#22232,#22223) +exprContainers(#22232,#22183) +literals("T","T",#22232) +typebind(#22232,#22227) #22233=* -tokeninfo(#22233,7,#20001,360,"undefined") -hasLocation(#22233,#20524) +typeexprs(#22233,2,#22230,1,"string") +hasLocation(#22233,#20305) +enclosingStmt(#22233,#22223) +exprContainers(#22233,#22183) +literals("string","string",#22233) #22234=* -tokeninfo(#22234,8,#20001,361,">") -#22235=@"loc,{#10000},40,62,40,62" -locations_default(#22235,#10000,40,62,40,62) -hasLocation(#22234,#22235) -#22236=* -tokeninfo(#22236,8,#20001,362,";") -#22237=@"loc,{#10000},40,63,40,63" -locations_default(#22237,#10000,40,63,40,63) -hasLocation(#22236,#22237) +typeexprs(#22234,3,#22230,2,"""string""") +hasLocation(#22234,#20309) +enclosingStmt(#22234,#22223) +exprContainers(#22234,#22183) +literals("string","""string""",#22234) +#22235=* +typeexprs(#22235,28,#22230,3,"T exten ... object""") +#22236=@"loc,{#10000},4,7,8,14" +locations_default(#22236,#10000,4,7,8,14) +hasLocation(#22235,#22236) +enclosingStmt(#22235,#22223) +exprContainers(#22235,#22183) +#22237=* +typeexprs(#22237,0,#22235,0,"T") +hasLocation(#22237,#20313) +enclosingStmt(#22237,#22223) +exprContainers(#22237,#22183) +literals("T","T",#22237) +typebind(#22237,#22227) #22238=* -tokeninfo(#22238,7,#20001,363,"function") -#22239=@"loc,{#10000},42,3,42,10" -locations_default(#22239,#10000,42,3,42,10) -hasLocation(#22238,#22239) -next_token(#21405,#22238) +typeexprs(#22238,2,#22235,1,"number") +hasLocation(#22238,#20317) +enclosingStmt(#22238,#22223) +exprContainers(#22238,#22183) +literals("number","number",#22238) +#22239=* +typeexprs(#22239,3,#22235,2,"""number""") +hasLocation(#22239,#20321) +enclosingStmt(#22239,#22223) +exprContainers(#22239,#22183) +literals("number","""number""",#22239) #22240=* -tokeninfo(#22240,6,#20001,364,"f1") -hasLocation(#22240,#20528) -#22241=* -tokeninfo(#22241,8,#20001,365,"<") -#22242=@"loc,{#10000},42,14,42,14" -locations_default(#22242,#10000,42,14,42,14) -hasLocation(#22241,#22242) +typeexprs(#22240,28,#22235,3,"T exten ... object""") +#22241=@"loc,{#10000},5,7,8,14" +locations_default(#22241,#10000,5,7,8,14) +hasLocation(#22240,#22241) +enclosingStmt(#22240,#22223) +exprContainers(#22240,#22183) +#22242=* +typeexprs(#22242,0,#22240,0,"T") +hasLocation(#22242,#20325) +enclosingStmt(#22242,#22223) +exprContainers(#22242,#22183) +literals("T","T",#22242) +typebind(#22242,#22227) #22243=* -tokeninfo(#22243,6,#20001,366,"T") -hasLocation(#22243,#20547) +typeexprs(#22243,2,#22240,1,"boolean") +hasLocation(#22243,#20329) +enclosingStmt(#22243,#22223) +exprContainers(#22243,#22183) +literals("boolean","boolean",#22243) #22244=* -tokeninfo(#22244,8,#20001,367,">") -#22245=@"loc,{#10000},42,16,42,16" -locations_default(#22245,#10000,42,16,42,16) -hasLocation(#22244,#22245) -#22246=* -tokeninfo(#22246,8,#20001,368,"(") -#22247=@"loc,{#10000},42,17,42,17" -locations_default(#22247,#10000,42,17,42,17) -hasLocation(#22246,#22247) +typeexprs(#22244,3,#22240,2,"""boolean""") +hasLocation(#22244,#20333) +enclosingStmt(#22244,#22223) +exprContainers(#22244,#22183) +literals("boolean","""boolean""",#22244) +#22245=* +typeexprs(#22245,28,#22240,3,"T exten ... object""") +#22246=@"loc,{#10000},6,7,8,14" +locations_default(#22246,#10000,6,7,8,14) +hasLocation(#22245,#22246) +enclosingStmt(#22245,#22223) +exprContainers(#22245,#22183) +#22247=* +typeexprs(#22247,0,#22245,0,"T") +hasLocation(#22247,#20337) +enclosingStmt(#22247,#22223) +exprContainers(#22247,#22183) +literals("T","T",#22247) +typebind(#22247,#22227) #22248=* -tokeninfo(#22248,6,#20001,369,"x") -hasLocation(#22248,#20533) +typeexprs(#22248,2,#22245,1,"undefined") +hasLocation(#22248,#20341) +enclosingStmt(#22248,#22223) +exprContainers(#22248,#22183) +literals("undefined","undefined",#22248) #22249=* -tokeninfo(#22249,8,#20001,370,":") -#22250=@"loc,{#10000},42,19,42,19" -locations_default(#22250,#10000,42,19,42,19) -hasLocation(#22249,#22250) -#22251=* -tokeninfo(#22251,6,#20001,371,"T") -hasLocation(#22251,#20539) +typeexprs(#22249,3,#22245,2,"""undefined""") +hasLocation(#22249,#20345) +enclosingStmt(#22249,#22223) +exprContainers(#22249,#22183) +literals("undefined","""undefined""",#22249) +#22250=* +typeexprs(#22250,28,#22245,3,"T exten ... object""") +#22251=@"loc,{#10000},7,7,8,14" +locations_default(#22251,#10000,7,7,8,14) +hasLocation(#22250,#22251) +enclosingStmt(#22250,#22223) +exprContainers(#22250,#22183) #22252=* -tokeninfo(#22252,8,#20001,372,",") -#22253=@"loc,{#10000},42,22,42,22" -locations_default(#22253,#10000,42,22,42,22) -hasLocation(#22252,#22253) +typeexprs(#22252,0,#22250,0,"T") +hasLocation(#22252,#20349) +enclosingStmt(#22252,#22223) +exprContainers(#22252,#22183) +literals("T","T",#22252) +typebind(#22252,#22227) +#22253=* +typeexprs(#22253,0,#22250,1,"Function") +hasLocation(#22253,#20353) +enclosingStmt(#22253,#22223) +exprContainers(#22253,#22183) +literals("Function","Function",#22253) #22254=* -tokeninfo(#22254,6,#20001,373,"y") -hasLocation(#22254,#20536) +typeexprs(#22254,3,#22250,2,"""function""") +hasLocation(#22254,#20357) +enclosingStmt(#22254,#22223) +exprContainers(#22254,#22183) +literals("function","""function""",#22254) #22255=* -tokeninfo(#22255,8,#20001,374,":") -#22256=@"loc,{#10000},42,25,42,25" -locations_default(#22256,#10000,42,25,42,25) -hasLocation(#22255,#22256) -#22257=* -tokeninfo(#22257,6,#20001,375,"NonNullable") -hasLocation(#22257,#20543) +typeexprs(#22255,3,#22250,3,"""object""") +hasLocation(#22255,#20361) +enclosingStmt(#22255,#22223) +exprContainers(#22255,#22183) +literals("object","""object""",#22255) +#22256=* +stmts(#22256,35,#22183,1,"type T0 ... tring>;") +#22257=@"loc,{#10000},10,3,10,29" +locations_default(#22257,#10000,10,3,10,29) +hasLocation(#22256,#22257) +stmtContainers(#22256,#22183) #22258=* -tokeninfo(#22258,8,#20001,376,"<") -#22259=@"loc,{#10000},42,38,42,38" -locations_default(#22259,#10000,42,38,42,38) -hasLocation(#22258,#22259) -#22260=* -tokeninfo(#22260,6,#20001,377,"T") -hasLocation(#22260,#20545) +typeexprs(#22258,1,#22256,0,"T0") +hasLocation(#22258,#20367) +enclosingStmt(#22258,#22256) +exprContainers(#22258,#22183) +literals("T0","T0",#22258) +typedecl(#22258,#22190) +#22259=* +typeexprs(#22259,14,#22256,1,"TypeName") +#22260=@"loc,{#10000},10,13,10,28" +locations_default(#22260,#10000,10,13,10,28) +hasLocation(#22259,#22260) +enclosingStmt(#22259,#22256) +exprContainers(#22259,#22183) #22261=* -tokeninfo(#22261,8,#20001,378,">") -#22262=@"loc,{#10000},42,40,42,40" -locations_default(#22262,#10000,42,40,42,40) -hasLocation(#22261,#22262) +typeexprs(#22261,0,#22259,-1,"TypeName") +hasLocation(#22261,#20371) +enclosingStmt(#22261,#22256) +exprContainers(#22261,#22183) +literals("TypeName","TypeName",#22261) +typebind(#22261,#22189) +#22262=* +typeexprs(#22262,2,#22259,0,"string") +hasLocation(#22262,#20375) +enclosingStmt(#22262,#22256) +exprContainers(#22262,#22183) +literals("string","string",#22262) #22263=* -tokeninfo(#22263,8,#20001,379,")") -#22264=@"loc,{#10000},42,41,42,41" -locations_default(#22264,#10000,42,41,42,41) +stmts(#22263,35,#22183,2,"type T1 ... e<""a"">;") +#22264=@"loc,{#10000},11,3,11,26" +locations_default(#22264,#10000,11,3,11,26) hasLocation(#22263,#22264) +stmtContainers(#22263,#22183) #22265=* -tokeninfo(#22265,8,#20001,380,"{") -#22266=@"loc,{#10000},42,43,42,43" -locations_default(#22266,#10000,42,43,42,43) -hasLocation(#22265,#22266) -#22267=* -tokeninfo(#22267,6,#20001,381,"x") -hasLocation(#22267,#20556) +typeexprs(#22265,1,#22263,0,"T1") +hasLocation(#22265,#20383) +enclosingStmt(#22265,#22263) +exprContainers(#22265,#22183) +literals("T1","T1",#22265) +typedecl(#22265,#22191) +#22266=* +typeexprs(#22266,14,#22263,1,"TypeName<""a"">") +#22267=@"loc,{#10000},11,13,11,25" +locations_default(#22267,#10000,11,13,11,25) +hasLocation(#22266,#22267) +enclosingStmt(#22266,#22263) +exprContainers(#22266,#22183) #22268=* -tokeninfo(#22268,8,#20001,382,"=") -#22269=@"loc,{#10000},43,9,43,9" -locations_default(#22269,#10000,43,9,43,9) -hasLocation(#22268,#22269) +typeexprs(#22268,0,#22266,-1,"TypeName") +hasLocation(#22268,#20387) +enclosingStmt(#22268,#22263) +exprContainers(#22268,#22183) +literals("TypeName","TypeName",#22268) +typebind(#22268,#22189) +#22269=* +typeexprs(#22269,3,#22266,0,"""a""") +hasLocation(#22269,#20391) +enclosingStmt(#22269,#22263) +exprContainers(#22269,#22183) +literals("a","""a""",#22269) #22270=* -tokeninfo(#22270,6,#20001,383,"y") -hasLocation(#22270,#20558) -#22271=* -tokeninfo(#22271,8,#20001,384,";") -#22272=@"loc,{#10000},43,12,43,12" -locations_default(#22272,#10000,43,12,43,12) -hasLocation(#22271,#22272) +stmts(#22270,35,#22183,3,"type T2 ... ;") +#22271=@"loc,{#10000},12,3,12,27" +locations_default(#22271,#10000,12,3,12,27) +hasLocation(#22270,#22271) +stmtContainers(#22270,#22183) +#22272=* +typeexprs(#22272,1,#22270,0,"T2") +hasLocation(#22272,#20399) +enclosingStmt(#22272,#22270) +exprContainers(#22272,#22183) +literals("T2","T2",#22272) +typedecl(#22272,#22192) #22273=* -tokeninfo(#22273,8,#20001,385,"}") -#22274=@"loc,{#10000},44,3,44,3" -locations_default(#22274,#10000,44,3,44,3) +typeexprs(#22273,14,#22270,1,"TypeName") +#22274=@"loc,{#10000},12,13,12,26" +locations_default(#22274,#10000,12,13,12,26) hasLocation(#22273,#22274) -next_token(#21407,#22273) +enclosingStmt(#22273,#22270) +exprContainers(#22273,#22183) #22275=* -tokeninfo(#22275,7,#20001,386,"function") -#22276=@"loc,{#10000},46,3,46,10" -locations_default(#22276,#10000,46,3,46,10) -hasLocation(#22275,#22276) +typeexprs(#22275,0,#22273,-1,"TypeName") +hasLocation(#22275,#20403) +enclosingStmt(#22275,#22270) +exprContainers(#22275,#22183) +literals("TypeName","TypeName",#22275) +typebind(#22275,#22189) +#22276=* +typeexprs(#22276,5,#22273,0,"true") +hasLocation(#22276,#20407) +enclosingStmt(#22276,#22270) +exprContainers(#22276,#22183) +literals("true","true",#22276) #22277=* -tokeninfo(#22277,6,#20001,387,"f2") -hasLocation(#22277,#20562) -#22278=* -tokeninfo(#22278,8,#20001,388,"<") -#22279=@"loc,{#10000},46,14,46,14" -locations_default(#22279,#10000,46,14,46,14) -hasLocation(#22278,#22279) +stmts(#22277,35,#22183,4,"type T3 ... void>;") +#22278=@"loc,{#10000},13,3,13,33" +locations_default(#22278,#10000,13,3,13,33) +hasLocation(#22277,#22278) +stmtContainers(#22277,#22183) +#22279=* +typeexprs(#22279,1,#22277,0,"T3") +hasLocation(#22279,#20415) +enclosingStmt(#22279,#22277) +exprContainers(#22279,#22183) +literals("T3","T3",#22279) +typedecl(#22279,#22193) #22280=* -tokeninfo(#22280,6,#20001,389,"T") -hasLocation(#22280,#20583) -#22281=* -tokeninfo(#22281,7,#20001,390,"extends") -#22282=@"loc,{#10000},46,17,46,23" -locations_default(#22282,#10000,46,17,46,23) -hasLocation(#22281,#22282) +typeexprs(#22280,14,#22277,1,"TypeName<() => void>") +#22281=@"loc,{#10000},13,13,13,32" +locations_default(#22281,#10000,13,13,13,32) +hasLocation(#22280,#22281) +enclosingStmt(#22280,#22277) +exprContainers(#22280,#22183) +#22282=* +typeexprs(#22282,0,#22280,-1,"TypeName") +hasLocation(#22282,#20419) +enclosingStmt(#22282,#22277) +exprContainers(#22282,#22183) +literals("TypeName","TypeName",#22282) +typebind(#22282,#22189) #22283=* -tokeninfo(#22283,7,#20001,391,"string") -hasLocation(#22283,#20587) -#22284=* -tokeninfo(#22284,8,#20001,392,"|") -#22285=@"loc,{#10000},46,32,46,32" -locations_default(#22285,#10000,46,32,46,32) -hasLocation(#22284,#22285) +typeexprs(#22283,23,#22280,0,"() => void") +#22284=@"loc,{#10000},13,22,13,31" +locations_default(#22284,#10000,13,22,13,31) +hasLocation(#22283,#22284) +enclosingStmt(#22283,#22277) +exprContainers(#22283,#22183) +#22285=* +exprs(#22285,9,#22283,0,"() => void") +hasLocation(#22285,#22284) +enclosingStmt(#22285,#22277) +exprContainers(#22285,#22183) #22286=* -tokeninfo(#22286,7,#20001,393,"undefined") -hasLocation(#22286,#20589) -#22287=* -tokeninfo(#22287,8,#20001,394,">") -#22288=@"loc,{#10000},46,43,46,43" -locations_default(#22288,#10000,46,43,46,43) -hasLocation(#22287,#22288) +scopes(#22286,1) +scopenodes(#22285,#22286) +scopenesting(#22286,#22186) +#22287=@"var;{arguments};{#22286}" +variables(#22287,"arguments",#22286) +isArgumentsObject(#22287) +#22288=* +typeexprs(#22288,2,#22285,-3,"void") +hasLocation(#22288,#20429) +exprContainers(#22288,#22285) +literals("void","void",#22288) #22289=* -tokeninfo(#22289,8,#20001,395,"(") -#22290=@"loc,{#10000},46,44,46,44" -locations_default(#22290,#10000,46,44,46,44) +stmts(#22289,35,#22183,5,"type T4 ... ing[]>;") +#22290=@"loc,{#10000},14,3,14,31" +locations_default(#22290,#10000,14,3,14,31) hasLocation(#22289,#22290) +stmtContainers(#22289,#22183) #22291=* -tokeninfo(#22291,6,#20001,396,"x") -hasLocation(#22291,#20567) +typeexprs(#22291,1,#22289,0,"T4") +hasLocation(#22291,#20437) +enclosingStmt(#22291,#22289) +exprContainers(#22291,#22183) +literals("T4","T4",#22291) +typedecl(#22291,#22194) #22292=* -tokeninfo(#22292,8,#20001,397,":") -#22293=@"loc,{#10000},46,46,46,46" -locations_default(#22293,#10000,46,46,46,46) +typeexprs(#22292,14,#22289,1,"TypeName") +#22293=@"loc,{#10000},14,13,14,30" +locations_default(#22293,#10000,14,13,14,30) hasLocation(#22292,#22293) +enclosingStmt(#22292,#22289) +exprContainers(#22292,#22183) #22294=* -tokeninfo(#22294,6,#20001,398,"T") -hasLocation(#22294,#20573) +typeexprs(#22294,0,#22292,-1,"TypeName") +hasLocation(#22294,#20441) +enclosingStmt(#22294,#22289) +exprContainers(#22294,#22183) +literals("TypeName","TypeName",#22294) +typebind(#22294,#22189) #22295=* -tokeninfo(#22295,8,#20001,399,",") -#22296=@"loc,{#10000},46,49,46,49" -locations_default(#22296,#10000,46,49,46,49) +typeexprs(#22295,6,#22292,0,"string[]") +#22296=@"loc,{#10000},14,22,14,29" +locations_default(#22296,#10000,14,22,14,29) hasLocation(#22295,#22296) +enclosingStmt(#22295,#22289) +exprContainers(#22295,#22183) #22297=* -tokeninfo(#22297,6,#20001,400,"y") -hasLocation(#22297,#20570) +typeexprs(#22297,2,#22295,0,"string") +hasLocation(#22297,#20445) +enclosingStmt(#22297,#22289) +exprContainers(#22297,#22183) +literals("string","string",#22297) #22298=* -tokeninfo(#22298,8,#20001,401,":") -#22299=@"loc,{#10000},46,52,46,52" -locations_default(#22299,#10000,46,52,46,52) +stmts(#22298,35,#22183,6,"type T1 ... void)>;") +#22299=@"loc,{#10000},17,3,17,45" +locations_default(#22299,#10000,17,3,17,45) hasLocation(#22298,#22299) +stmtContainers(#22298,#22183) #22300=* -tokeninfo(#22300,6,#20001,402,"NonNullable") -hasLocation(#22300,#20577) +typeexprs(#22300,1,#22298,0,"T10") +hasLocation(#22300,#20457) +enclosingStmt(#22300,#22298) +exprContainers(#22300,#22183) +literals("T10","T10",#22300) +typedecl(#22300,#22195) #22301=* -tokeninfo(#22301,8,#20001,403,"<") -#22302=@"loc,{#10000},46,65,46,65" -locations_default(#22302,#10000,46,65,46,65) +typeexprs(#22301,14,#22298,1,"TypeNam ... void)>") +#22302=@"loc,{#10000},17,14,17,44" +locations_default(#22302,#10000,17,14,17,44) hasLocation(#22301,#22302) +enclosingStmt(#22301,#22298) +exprContainers(#22301,#22183) #22303=* -tokeninfo(#22303,6,#20001,404,"T") -hasLocation(#22303,#20579) +typeexprs(#22303,0,#22301,-1,"TypeName") +hasLocation(#22303,#20461) +enclosingStmt(#22303,#22298) +exprContainers(#22303,#22183) +literals("TypeName","TypeName",#22303) +typebind(#22303,#22189) #22304=* -tokeninfo(#22304,8,#20001,405,">") -#22305=@"loc,{#10000},46,67,46,67" -locations_default(#22305,#10000,46,67,46,67) +typeexprs(#22304,7,#22301,0,"string ... > void)") +#22305=@"loc,{#10000},17,23,17,43" +locations_default(#22305,#10000,17,23,17,43) hasLocation(#22304,#22305) +enclosingStmt(#22304,#22298) +exprContainers(#22304,#22183) #22306=* -tokeninfo(#22306,8,#20001,406,")") -#22307=@"loc,{#10000},46,68,46,68" -locations_default(#22307,#10000,46,68,46,68) -hasLocation(#22306,#22307) -#22308=* -tokeninfo(#22308,8,#20001,407,"{") -#22309=@"loc,{#10000},46,70,46,70" -locations_default(#22309,#10000,46,70,46,70) -hasLocation(#22308,#22309) -#22310=* -tokeninfo(#22310,6,#20001,408,"x") -hasLocation(#22310,#20599) +typeexprs(#22306,2,#22304,0,"string") +hasLocation(#22306,#20465) +enclosingStmt(#22306,#22298) +exprContainers(#22306,#22183) +literals("string","string",#22306) +#22307=* +typeexprs(#22307,10,#22304,1,"(() => void)") +#22308=@"loc,{#10000},17,32,17,43" +locations_default(#22308,#10000,17,32,17,43) +hasLocation(#22307,#22308) +enclosingStmt(#22307,#22298) +exprContainers(#22307,#22183) +#22309=* +typeexprs(#22309,23,#22307,0,"() => void") +#22310=@"loc,{#10000},17,33,17,42" +locations_default(#22310,#10000,17,33,17,42) +hasLocation(#22309,#22310) +enclosingStmt(#22309,#22298) +exprContainers(#22309,#22183) #22311=* -tokeninfo(#22311,8,#20001,409,"=") -#22312=@"loc,{#10000},47,9,47,9" -locations_default(#22312,#10000,47,9,47,9) -hasLocation(#22311,#22312) -#22313=* -tokeninfo(#22313,6,#20001,410,"y") -hasLocation(#22313,#20601) +exprs(#22311,9,#22309,0,"() => void") +hasLocation(#22311,#22310) +enclosingStmt(#22311,#22298) +exprContainers(#22311,#22183) +#22312=* +scopes(#22312,1) +scopenodes(#22311,#22312) +scopenesting(#22312,#22186) +#22313=@"var;{arguments};{#22312}" +variables(#22313,"arguments",#22312) +isArgumentsObject(#22313) #22314=* -tokeninfo(#22314,8,#20001,411,";") -#22315=@"loc,{#10000},47,12,47,12" -locations_default(#22315,#10000,47,12,47,12) -hasLocation(#22314,#22315) -#22316=* -tokeninfo(#22316,7,#20001,412,"let") -#22317=@"loc,{#10000},48,7,48,9" -locations_default(#22317,#10000,48,7,48,9) -hasLocation(#22316,#22317) -next_token(#21409,#22316) +typeexprs(#22314,2,#22311,-3,"void") +hasLocation(#22314,#20477) +exprContainers(#22314,#22311) +literals("void","void",#22314) +#22315=* +stmts(#22315,35,#22183,7,"type T1 ... fined>;") +#22316=@"loc,{#10000},18,3,18,53" +locations_default(#22316,#10000,18,3,18,53) +hasLocation(#22315,#22316) +stmtContainers(#22315,#22183) +#22317=* +typeexprs(#22317,1,#22315,0,"T12") +hasLocation(#22317,#20487) +enclosingStmt(#22317,#22315) +exprContainers(#22317,#22183) +literals("T12","T12",#22317) +typedecl(#22317,#22196) #22318=* -tokeninfo(#22318,6,#20001,413,"s2") -hasLocation(#22318,#20607) -#22319=* -tokeninfo(#22319,8,#20001,414,":") -#22320=@"loc,{#10000},48,13,48,13" -locations_default(#22320,#10000,48,13,48,13) -hasLocation(#22319,#22320) +typeexprs(#22318,14,#22315,1,"TypeNam ... efined>") +#22319=@"loc,{#10000},18,14,18,52" +locations_default(#22319,#10000,18,14,18,52) +hasLocation(#22318,#22319) +enclosingStmt(#22318,#22315) +exprContainers(#22318,#22183) +#22320=* +typeexprs(#22320,0,#22318,-1,"TypeName") +hasLocation(#22320,#20491) +enclosingStmt(#22320,#22315) +exprContainers(#22320,#22183) +literals("TypeName","TypeName",#22320) +typebind(#22320,#22189) #22321=* -tokeninfo(#22321,7,#20001,415,"string") -hasLocation(#22321,#20611) -#22322=* -tokeninfo(#22322,8,#20001,416,"=") -#22323=@"loc,{#10000},48,22,48,22" -locations_default(#22323,#10000,48,22,48,22) -hasLocation(#22322,#22323) +typeexprs(#22321,7,#22318,0,"string ... defined") +#22322=@"loc,{#10000},18,23,18,51" +locations_default(#22322,#10000,18,23,18,51) +hasLocation(#22321,#22322) +enclosingStmt(#22321,#22315) +exprContainers(#22321,#22183) +#22323=* +typeexprs(#22323,2,#22321,0,"string") +hasLocation(#22323,#20495) +enclosingStmt(#22323,#22315) +exprContainers(#22323,#22183) +literals("string","string",#22323) #22324=* -tokeninfo(#22324,6,#20001,417,"y") -hasLocation(#22324,#20609) -#22325=* -tokeninfo(#22325,8,#20001,418,";") -#22326=@"loc,{#10000},48,25,48,25" -locations_default(#22326,#10000,48,25,48,25) -hasLocation(#22325,#22326) +typeexprs(#22324,6,#22321,1,"string[]") +#22325=@"loc,{#10000},18,32,18,39" +locations_default(#22325,#10000,18,32,18,39) +hasLocation(#22324,#22325) +enclosingStmt(#22324,#22315) +exprContainers(#22324,#22183) +#22326=* +typeexprs(#22326,2,#22324,0,"string") +hasLocation(#22326,#20499) +enclosingStmt(#22326,#22315) +exprContainers(#22326,#22183) +literals("string","string",#22326) #22327=* -tokeninfo(#22327,8,#20001,419,"}") -#22328=@"loc,{#10000},49,3,49,3" -locations_default(#22328,#10000,49,3,49,3) -hasLocation(#22327,#22328) -next_token(#21411,#22327) -#22329=* -tokeninfo(#22329,7,#20001,420,"type") -#22330=@"loc,{#10000},51,3,51,6" -locations_default(#22330,#10000,51,3,51,6) -hasLocation(#22329,#22330) +typeexprs(#22327,2,#22321,2,"undefined") +hasLocation(#22327,#20507) +enclosingStmt(#22327,#22315) +exprContainers(#22327,#22183) +literals("undefined","undefined",#22327) +#22328=* +stmts(#22328,35,#22183,8,"type T1 ... ber[]>;") +#22329=@"loc,{#10000},19,3,19,43" +locations_default(#22329,#10000,19,3,19,43) +hasLocation(#22328,#22329) +stmtContainers(#22328,#22183) +#22330=* +typeexprs(#22330,1,#22328,0,"T11") +hasLocation(#22330,#20515) +enclosingStmt(#22330,#22328) +exprContainers(#22330,#22183) +literals("T11","T11",#22330) +typedecl(#22330,#22197) #22331=* -tokeninfo(#22331,6,#20001,421,"FunctionPropertyNames") -hasLocation(#22331,#20615) -#22332=* -tokeninfo(#22332,8,#20001,422,"<") -#22333=@"loc,{#10000},51,29,51,29" -locations_default(#22333,#10000,51,29,51,29) -hasLocation(#22332,#22333) +typeexprs(#22331,14,#22328,1,"TypeNam ... mber[]>") +#22332=@"loc,{#10000},19,14,19,42" +locations_default(#22332,#10000,19,14,19,42) +hasLocation(#22331,#22332) +enclosingStmt(#22331,#22328) +exprContainers(#22331,#22183) +#22333=* +typeexprs(#22333,0,#22331,-1,"TypeName") +hasLocation(#22333,#20519) +enclosingStmt(#22333,#22328) +exprContainers(#22333,#22183) +literals("TypeName","TypeName",#22333) +typebind(#22333,#22189) #22334=* -tokeninfo(#22334,6,#20001,423,"T") -hasLocation(#22334,#20619) -#22335=* -tokeninfo(#22335,8,#20001,424,">") -#22336=@"loc,{#10000},51,31,51,31" -locations_default(#22336,#10000,51,31,51,31) -hasLocation(#22335,#22336) -#22337=* -tokeninfo(#22337,8,#20001,425,"=") -#22338=@"loc,{#10000},51,33,51,33" -locations_default(#22338,#10000,51,33,51,33) -hasLocation(#22337,#22338) +typeexprs(#22334,7,#22331,0,"string[] | number[]") +#22335=@"loc,{#10000},19,23,19,41" +locations_default(#22335,#10000,19,23,19,41) +hasLocation(#22334,#22335) +enclosingStmt(#22334,#22328) +exprContainers(#22334,#22183) +#22336=* +typeexprs(#22336,6,#22334,0,"string[]") +#22337=@"loc,{#10000},19,23,19,30" +locations_default(#22337,#10000,19,23,19,30) +hasLocation(#22336,#22337) +enclosingStmt(#22336,#22328) +exprContainers(#22336,#22183) +#22338=* +typeexprs(#22338,2,#22336,0,"string") +hasLocation(#22338,#20523) +enclosingStmt(#22338,#22328) +exprContainers(#22338,#22183) +literals("string","string",#22338) #22339=* -tokeninfo(#22339,8,#20001,426,"{") -#22340=@"loc,{#10000},51,35,51,35" -locations_default(#22340,#10000,51,35,51,35) +typeexprs(#22339,6,#22334,1,"number[]") +#22340=@"loc,{#10000},19,34,19,41" +locations_default(#22340,#10000,19,34,19,41) hasLocation(#22339,#22340) +enclosingStmt(#22339,#22328) +exprContainers(#22339,#22183) #22341=* -tokeninfo(#22341,8,#20001,427,"[") -#22342=@"loc,{#10000},51,37,51,37" -locations_default(#22342,#10000,51,37,51,37) -hasLocation(#22341,#22342) -#22343=* -tokeninfo(#22343,6,#20001,428,"K") -hasLocation(#22343,#20630) +typeexprs(#22341,2,#22339,0,"number") +hasLocation(#22341,#20531) +enclosingStmt(#22341,#22328) +exprContainers(#22341,#22183) +literals("number","number",#22341) +#22342=* +stmts(#22342,35,#22183,9,"type Bo ... e: T };") +#22343=@"loc,{#10000},21,3,21,36" +locations_default(#22343,#10000,21,3,21,36) +hasLocation(#22342,#22343) +stmtContainers(#22342,#22183) #22344=* -tokeninfo(#22344,7,#20001,429,"in") -#22345=@"loc,{#10000},51,40,51,41" -locations_default(#22345,#10000,51,40,51,41) -hasLocation(#22344,#22345) -#22346=* -tokeninfo(#22346,7,#20001,430,"keyof") -#22347=@"loc,{#10000},51,43,51,47" -locations_default(#22347,#10000,51,43,51,47) -hasLocation(#22346,#22347) +typeexprs(#22344,1,#22342,0,"BoxedValue") +hasLocation(#22344,#20543) +enclosingStmt(#22344,#22342) +exprContainers(#22344,#22183) +literals("BoxedValue","BoxedValue",#22344) +typedecl(#22344,#22198) +#22345=* +scopes(#22345,12) +scopenodes(#22342,#22345) +scopenesting(#22345,#22186) +#22346=@"local_type_name;{T};{#22345}" +local_type_names(#22346,"T",#22345) +#22347=* +typeexprs(#22347,22,#22342,2,"T") +hasLocation(#22347,#20547) +enclosingStmt(#22347,#22342) +exprContainers(#22347,#22183) #22348=* -tokeninfo(#22348,6,#20001,431,"T") -hasLocation(#22348,#20634) +typeexprs(#22348,1,#22347,0,"T") +hasLocation(#22348,#20547) +enclosingStmt(#22348,#22342) +exprContainers(#22348,#22183) +literals("T","T",#22348) +typedecl(#22348,#22346) #22349=* -tokeninfo(#22349,8,#20001,432,"]") -#22350=@"loc,{#10000},51,50,51,50" -locations_default(#22350,#10000,51,50,51,50) +typeexprs(#22349,21,#22342,1,"{ value: T }") +#22350=@"loc,{#10000},21,24,21,35" +locations_default(#22350,#10000,21,24,21,35) hasLocation(#22349,#22350) +enclosingStmt(#22349,#22342) +exprContainers(#22349,#22183) #22351=* -tokeninfo(#22351,8,#20001,433,":") -#22352=@"loc,{#10000},51,51,51,51" -locations_default(#22352,#10000,51,51,51,51) +properties(#22351,#22349,0,8,"value: T") +#22352=@"loc,{#10000},21,26,21,33" +locations_default(#22352,#10000,21,26,21,33) hasLocation(#22351,#22352) #22353=* -tokeninfo(#22353,6,#20001,434,"T") -hasLocation(#22353,#20640) +exprs(#22353,0,#22351,0,"value") +hasLocation(#22353,#20555) +enclosingStmt(#22353,#22342) +exprContainers(#22353,#22183) +literals("value","value",#22353) +isAbstractMember(#22351) #22354=* -tokeninfo(#22354,8,#20001,435,"[") -#22355=@"loc,{#10000},51,54,51,54" -locations_default(#22355,#10000,51,54,51,54) -hasLocation(#22354,#22355) -#22356=* -tokeninfo(#22356,6,#20001,436,"K") -hasLocation(#22356,#20642) +typeexprs(#22354,0,#22351,2,"T") +hasLocation(#22354,#20559) +enclosingStmt(#22354,#22342) +exprContainers(#22354,#22183) +literals("T","T",#22354) +typebind(#22354,#22346) +#22355=* +stmts(#22355,35,#22183,10,"type Bo ... T[] };") +#22356=@"loc,{#10000},22,3,22,38" +locations_default(#22356,#10000,22,3,22,38) +hasLocation(#22355,#22356) +stmtContainers(#22355,#22183) #22357=* -tokeninfo(#22357,8,#20001,437,"]") -#22358=@"loc,{#10000},51,56,51,56" -locations_default(#22358,#10000,51,56,51,56) -hasLocation(#22357,#22358) -#22359=* -tokeninfo(#22359,7,#20001,438,"extends") -#22360=@"loc,{#10000},51,58,51,64" -locations_default(#22360,#10000,51,58,51,64) -hasLocation(#22359,#22360) +typeexprs(#22357,1,#22355,0,"BoxedArray") +hasLocation(#22357,#20567) +enclosingStmt(#22357,#22355) +exprContainers(#22357,#22183) +literals("BoxedArray","BoxedArray",#22357) +typedecl(#22357,#22199) +#22358=* +scopes(#22358,12) +scopenodes(#22355,#22358) +scopenesting(#22358,#22186) +#22359=@"local_type_name;{T};{#22358}" +local_type_names(#22359,"T",#22358) +#22360=* +typeexprs(#22360,22,#22355,2,"T") +hasLocation(#22360,#20571) +enclosingStmt(#22360,#22355) +exprContainers(#22360,#22183) #22361=* -tokeninfo(#22361,6,#20001,439,"Function") -hasLocation(#22361,#20644) +typeexprs(#22361,1,#22360,0,"T") +hasLocation(#22361,#20571) +enclosingStmt(#22361,#22355) +exprContainers(#22361,#22183) +literals("T","T",#22361) +typedecl(#22361,#22359) #22362=* -tokeninfo(#22362,8,#20001,440,"?") -#22363=@"loc,{#10000},51,75,51,75" -locations_default(#22363,#10000,51,75,51,75) +typeexprs(#22362,21,#22355,1,"{ array: T[] }") +#22363=@"loc,{#10000},22,24,22,37" +locations_default(#22363,#10000,22,24,22,37) hasLocation(#22362,#22363) +enclosingStmt(#22362,#22355) +exprContainers(#22362,#22183) #22364=* -tokeninfo(#22364,6,#20001,441,"K") -hasLocation(#22364,#20646) -#22365=* -tokeninfo(#22365,8,#20001,442,":") -#22366=@"loc,{#10000},51,79,51,79" -locations_default(#22366,#10000,51,79,51,79) -hasLocation(#22365,#22366) +properties(#22364,#22362,0,8,"array: T[]") +#22365=@"loc,{#10000},22,26,22,35" +locations_default(#22365,#10000,22,26,22,35) +hasLocation(#22364,#22365) +#22366=* +exprs(#22366,0,#22364,0,"array") +hasLocation(#22366,#20579) +enclosingStmt(#22366,#22355) +exprContainers(#22366,#22183) +literals("array","array",#22366) +isAbstractMember(#22364) #22367=* -tokeninfo(#22367,7,#20001,443,"never") -hasLocation(#22367,#20648) -#22368=* -tokeninfo(#22368,8,#20001,444,"}") -#22369=@"loc,{#10000},51,87,51,87" -locations_default(#22369,#10000,51,87,51,87) -hasLocation(#22368,#22369) +typeexprs(#22367,6,#22364,2,"T[]") +#22368=@"loc,{#10000},22,33,22,35" +locations_default(#22368,#10000,22,33,22,35) +hasLocation(#22367,#22368) +enclosingStmt(#22367,#22355) +exprContainers(#22367,#22183) +#22369=* +typeexprs(#22369,0,#22367,0,"T") +hasLocation(#22369,#20583) +enclosingStmt(#22369,#22355) +exprContainers(#22369,#22183) +literals("T","T",#22369) +typebind(#22369,#22359) #22370=* -tokeninfo(#22370,8,#20001,445,"[") -#22371=@"loc,{#10000},51,88,51,88" -locations_default(#22371,#10000,51,88,51,88) +stmts(#22370,35,#22183,11,"type Bo ... lue;") +#22371=@"loc,{#10000},23,3,23,74" +locations_default(#22371,#10000,23,3,23,74) hasLocation(#22370,#22371) +stmtContainers(#22370,#22183) #22372=* -tokeninfo(#22372,7,#20001,446,"keyof") -#22373=@"loc,{#10000},51,89,51,93" -locations_default(#22373,#10000,51,89,51,93) -hasLocation(#22372,#22373) -#22374=* -tokeninfo(#22374,6,#20001,447,"T") -hasLocation(#22374,#20652) +typeexprs(#22372,1,#22370,0,"Boxed") +hasLocation(#22372,#20595) +enclosingStmt(#22372,#22370) +exprContainers(#22372,#22183) +literals("Boxed","Boxed",#22372) +typedecl(#22372,#22200) +#22373=* +scopes(#22373,12) +scopenodes(#22370,#22373) +scopenesting(#22373,#22186) +#22374=@"local_type_name;{T};{#22373}" +local_type_names(#22374,"T",#22373) #22375=* -tokeninfo(#22375,8,#20001,448,"]") -#22376=@"loc,{#10000},51,96,51,96" -locations_default(#22376,#10000,51,96,51,96) -hasLocation(#22375,#22376) +typeexprs(#22375,22,#22370,2,"T") +hasLocation(#22375,#20599) +enclosingStmt(#22375,#22370) +exprContainers(#22375,#22183) +#22376=* +typeexprs(#22376,1,#22375,0,"T") +hasLocation(#22376,#20599) +enclosingStmt(#22376,#22370) +exprContainers(#22376,#22183) +literals("T","T",#22376) +typedecl(#22376,#22374) #22377=* -tokeninfo(#22377,8,#20001,449,";") -#22378=@"loc,{#10000},51,97,51,97" -locations_default(#22378,#10000,51,97,51,97) +typeexprs(#22377,28,#22370,1,"T exten ... alue") +#22378=@"loc,{#10000},23,19,23,73" +locations_default(#22378,#10000,23,19,23,73) hasLocation(#22377,#22378) +enclosingStmt(#22377,#22370) +exprContainers(#22377,#22183) #22379=* -tokeninfo(#22379,7,#20001,450,"type") -#22380=@"loc,{#10000},52,3,52,6" -locations_default(#22380,#10000,52,3,52,6) -hasLocation(#22379,#22380) -#22381=* -tokeninfo(#22381,6,#20001,451,"FunctionProperties") -hasLocation(#22381,#20656) +typeexprs(#22379,0,#22377,0,"T") +hasLocation(#22379,#20605) +enclosingStmt(#22379,#22370) +exprContainers(#22379,#22183) +literals("T","T",#22379) +typebind(#22379,#22374) +#22380=* +typeexprs(#22380,6,#22377,1,"any[]") +#22381=@"loc,{#10000},23,29,23,33" +locations_default(#22381,#10000,23,29,23,33) +hasLocation(#22380,#22381) +enclosingStmt(#22380,#22370) +exprContainers(#22380,#22183) #22382=* -tokeninfo(#22382,8,#20001,452,"<") -#22383=@"loc,{#10000},52,26,52,26" -locations_default(#22383,#10000,52,26,52,26) -hasLocation(#22382,#22383) -#22384=* -tokeninfo(#22384,6,#20001,453,"T") -hasLocation(#22384,#20660) +typeexprs(#22382,2,#22380,0,"any") +hasLocation(#22382,#20609) +enclosingStmt(#22382,#22370) +exprContainers(#22382,#22183) +literals("any","any",#22382) +#22383=* +typeexprs(#22383,14,#22377,2,"BoxedAr ... umber]>") +#22384=@"loc,{#10000},23,37,23,57" +locations_default(#22384,#10000,23,37,23,57) +hasLocation(#22383,#22384) +enclosingStmt(#22383,#22370) +exprContainers(#22383,#22183) #22385=* -tokeninfo(#22385,8,#20001,454,">") -#22386=@"loc,{#10000},52,28,52,28" -locations_default(#22386,#10000,52,28,52,28) -hasLocation(#22385,#22386) -#22387=* -tokeninfo(#22387,8,#20001,455,"=") -#22388=@"loc,{#10000},52,30,52,30" -locations_default(#22388,#10000,52,30,52,30) -hasLocation(#22387,#22388) +typeexprs(#22385,0,#22383,-1,"BoxedArray") +hasLocation(#22385,#20617) +enclosingStmt(#22385,#22370) +exprContainers(#22385,#22183) +literals("BoxedArray","BoxedArray",#22385) +typebind(#22385,#22199) +#22386=* +typeexprs(#22386,8,#22383,0,"T[number]") +#22387=@"loc,{#10000},23,48,23,56" +locations_default(#22387,#10000,23,48,23,56) +hasLocation(#22386,#22387) +enclosingStmt(#22386,#22370) +exprContainers(#22386,#22183) +#22388=* +typeexprs(#22388,0,#22386,0,"T") +hasLocation(#22388,#20621) +enclosingStmt(#22388,#22370) +exprContainers(#22388,#22183) +literals("T","T",#22388) +typebind(#22388,#22374) #22389=* -tokeninfo(#22389,6,#20001,456,"Pick") -hasLocation(#22389,#20665) +typeexprs(#22389,2,#22386,1,"number") +hasLocation(#22389,#20625) +enclosingStmt(#22389,#22370) +exprContainers(#22389,#22183) +literals("number","number",#22389) #22390=* -tokeninfo(#22390,8,#20001,457,"<") -#22391=@"loc,{#10000},52,36,52,36" -locations_default(#22391,#10000,52,36,52,36) +typeexprs(#22390,14,#22377,3,"BoxedValue") +#22391=@"loc,{#10000},23,61,23,73" +locations_default(#22391,#10000,23,61,23,73) hasLocation(#22390,#22391) +enclosingStmt(#22390,#22370) +exprContainers(#22390,#22183) #22392=* -tokeninfo(#22392,6,#20001,458,"T") -hasLocation(#22392,#20667) +typeexprs(#22392,0,#22390,-1,"BoxedValue") +hasLocation(#22392,#20633) +enclosingStmt(#22392,#22370) +exprContainers(#22392,#22183) +literals("BoxedValue","BoxedValue",#22392) +typebind(#22392,#22198) #22393=* -tokeninfo(#22393,8,#20001,459,",") -#22394=@"loc,{#10000},52,38,52,38" -locations_default(#22394,#10000,52,38,52,38) -hasLocation(#22393,#22394) -#22395=* -tokeninfo(#22395,6,#20001,460,"FunctionPropertyNames") -hasLocation(#22395,#20671) +typeexprs(#22393,0,#22390,0,"T") +hasLocation(#22393,#20637) +enclosingStmt(#22393,#22370) +exprContainers(#22393,#22183) +literals("T","T",#22393) +typebind(#22393,#22374) +#22394=* +stmts(#22394,35,#22183,12,"type T2 ... tring>;") +#22395=@"loc,{#10000},25,3,25,27" +locations_default(#22395,#10000,25,3,25,27) +hasLocation(#22394,#22395) +stmtContainers(#22394,#22183) #22396=* -tokeninfo(#22396,8,#20001,461,"<") -#22397=@"loc,{#10000},52,61,52,61" -locations_default(#22397,#10000,52,61,52,61) -hasLocation(#22396,#22397) -#22398=* -tokeninfo(#22398,6,#20001,462,"T") -hasLocation(#22398,#20673) +typeexprs(#22396,1,#22394,0,"T20") +hasLocation(#22396,#20645) +enclosingStmt(#22396,#22394) +exprContainers(#22396,#22183) +literals("T20","T20",#22396) +typedecl(#22396,#22201) +#22397=* +typeexprs(#22397,14,#22394,1,"Boxed") +#22398=@"loc,{#10000},25,14,25,26" +locations_default(#22398,#10000,25,14,25,26) +hasLocation(#22397,#22398) +enclosingStmt(#22397,#22394) +exprContainers(#22397,#22183) #22399=* -tokeninfo(#22399,8,#20001,463,">") -#22400=@"loc,{#10000},52,63,52,63" -locations_default(#22400,#10000,52,63,52,63) -hasLocation(#22399,#22400) +typeexprs(#22399,0,#22397,-1,"Boxed") +hasLocation(#22399,#20649) +enclosingStmt(#22399,#22394) +exprContainers(#22399,#22183) +literals("Boxed","Boxed",#22399) +typebind(#22399,#22200) +#22400=* +typeexprs(#22400,2,#22397,0,"string") +hasLocation(#22400,#20653) +enclosingStmt(#22400,#22394) +exprContainers(#22400,#22183) +literals("string","string",#22400) #22401=* -tokeninfo(#22401,8,#20001,464,">") -#22402=@"loc,{#10000},52,64,52,64" -locations_default(#22402,#10000,52,64,52,64) +stmts(#22401,35,#22183,13,"type T2 ... ber[]>;") +#22402=@"loc,{#10000},26,3,26,29" +locations_default(#22402,#10000,26,3,26,29) hasLocation(#22401,#22402) +stmtContainers(#22401,#22183) #22403=* -tokeninfo(#22403,8,#20001,465,";") -#22404=@"loc,{#10000},52,65,52,65" -locations_default(#22404,#10000,52,65,52,65) -hasLocation(#22403,#22404) -#22405=* -tokeninfo(#22405,7,#20001,466,"type") -#22406=@"loc,{#10000},54,3,54,6" -locations_default(#22406,#10000,54,3,54,6) -hasLocation(#22405,#22406) +typeexprs(#22403,1,#22401,0,"T21") +hasLocation(#22403,#20661) +enclosingStmt(#22403,#22401) +exprContainers(#22403,#22183) +literals("T21","T21",#22403) +typedecl(#22403,#22202) +#22404=* +typeexprs(#22404,14,#22401,1,"Boxed") +#22405=@"loc,{#10000},26,14,26,28" +locations_default(#22405,#10000,26,14,26,28) +hasLocation(#22404,#22405) +enclosingStmt(#22404,#22401) +exprContainers(#22404,#22183) +#22406=* +typeexprs(#22406,0,#22404,-1,"Boxed") +hasLocation(#22406,#20665) +enclosingStmt(#22406,#22401) +exprContainers(#22406,#22183) +literals("Boxed","Boxed",#22406) +typebind(#22406,#22200) #22407=* -tokeninfo(#22407,6,#20001,467,"NonFunctionPropertyNames") -hasLocation(#22407,#20677) -#22408=* -tokeninfo(#22408,8,#20001,468,"<") -#22409=@"loc,{#10000},54,32,54,32" -locations_default(#22409,#10000,54,32,54,32) -hasLocation(#22408,#22409) +typeexprs(#22407,6,#22404,0,"number[]") +#22408=@"loc,{#10000},26,20,26,27" +locations_default(#22408,#10000,26,20,26,27) +hasLocation(#22407,#22408) +enclosingStmt(#22407,#22401) +exprContainers(#22407,#22183) +#22409=* +typeexprs(#22409,2,#22407,0,"number") +hasLocation(#22409,#20669) +enclosingStmt(#22409,#22401) +exprContainers(#22409,#22183) +literals("number","number",#22409) #22410=* -tokeninfo(#22410,6,#20001,469,"T") -hasLocation(#22410,#20681) -#22411=* -tokeninfo(#22411,8,#20001,470,">") -#22412=@"loc,{#10000},54,34,54,34" -locations_default(#22412,#10000,54,34,54,34) -hasLocation(#22411,#22412) +stmts(#22410,35,#22183,14,"type T2 ... ber[]>;") +#22411=@"loc,{#10000},27,3,27,38" +locations_default(#22411,#10000,27,3,27,38) +hasLocation(#22410,#22411) +stmtContainers(#22410,#22183) +#22412=* +typeexprs(#22412,1,#22410,0,"T22") +hasLocation(#22412,#20681) +enclosingStmt(#22412,#22410) +exprContainers(#22412,#22183) +literals("T22","T22",#22412) +typedecl(#22412,#22203) #22413=* -tokeninfo(#22413,8,#20001,471,"=") -#22414=@"loc,{#10000},54,36,54,36" -locations_default(#22414,#10000,54,36,54,36) +typeexprs(#22413,14,#22410,1,"Boxed") +#22414=@"loc,{#10000},27,14,27,37" +locations_default(#22414,#10000,27,14,27,37) hasLocation(#22413,#22414) +enclosingStmt(#22413,#22410) +exprContainers(#22413,#22183) #22415=* -tokeninfo(#22415,8,#20001,472,"{") -#22416=@"loc,{#10000},54,38,54,38" -locations_default(#22416,#10000,54,38,54,38) -hasLocation(#22415,#22416) -#22417=* -tokeninfo(#22417,8,#20001,473,"[") -#22418=@"loc,{#10000},54,40,54,40" -locations_default(#22418,#10000,54,40,54,40) -hasLocation(#22417,#22418) +typeexprs(#22415,0,#22413,-1,"Boxed") +hasLocation(#22415,#20685) +enclosingStmt(#22415,#22410) +exprContainers(#22415,#22183) +literals("Boxed","Boxed",#22415) +typebind(#22415,#22200) +#22416=* +typeexprs(#22416,7,#22413,0,"string | number[]") +#22417=@"loc,{#10000},27,20,27,36" +locations_default(#22417,#10000,27,20,27,36) +hasLocation(#22416,#22417) +enclosingStmt(#22416,#22410) +exprContainers(#22416,#22183) +#22418=* +typeexprs(#22418,2,#22416,0,"string") +hasLocation(#22418,#20689) +enclosingStmt(#22418,#22410) +exprContainers(#22418,#22183) +literals("string","string",#22418) #22419=* -tokeninfo(#22419,6,#20001,474,"K") -hasLocation(#22419,#20692) -#22420=* -tokeninfo(#22420,7,#20001,475,"in") -#22421=@"loc,{#10000},54,43,54,44" -locations_default(#22421,#10000,54,43,54,44) -hasLocation(#22420,#22421) +typeexprs(#22419,6,#22416,1,"number[]") +#22420=@"loc,{#10000},27,29,27,36" +locations_default(#22420,#10000,27,29,27,36) +hasLocation(#22419,#22420) +enclosingStmt(#22419,#22410) +exprContainers(#22419,#22183) +#22421=* +typeexprs(#22421,2,#22419,0,"number") +hasLocation(#22421,#20693) +enclosingStmt(#22421,#22410) +exprContainers(#22421,#22183) +literals("number","number",#22421) #22422=* -tokeninfo(#22422,7,#20001,476,"keyof") -#22423=@"loc,{#10000},54,46,54,50" -locations_default(#22423,#10000,54,46,54,50) +stmts(#22422,35,#22183,15,"type Di ... er : T;") +#22423=@"loc,{#10000},29,3,29,44" +locations_default(#22423,#10000,29,3,29,44) hasLocation(#22422,#22423) +stmtContainers(#22422,#22183) #22424=* -tokeninfo(#22424,6,#20001,477,"T") -hasLocation(#22424,#20696) +typeexprs(#22424,1,#22422,0,"Diff") +hasLocation(#22424,#20705) +enclosingStmt(#22424,#22422) +exprContainers(#22424,#22183) +literals("Diff","Diff",#22424) +typedecl(#22424,#22204) #22425=* -tokeninfo(#22425,8,#20001,478,"]") -#22426=@"loc,{#10000},54,53,54,53" -locations_default(#22426,#10000,54,53,54,53) -hasLocation(#22425,#22426) -#22427=* -tokeninfo(#22427,8,#20001,479,":") -#22428=@"loc,{#10000},54,54,54,54" -locations_default(#22428,#10000,54,54,54,54) -hasLocation(#22427,#22428) +scopes(#22425,12) +scopenodes(#22422,#22425) +scopenesting(#22425,#22186) +#22426=@"local_type_name;{T};{#22425}" +local_type_names(#22426,"T",#22425) +#22427=@"local_type_name;{U};{#22425}" +local_type_names(#22427,"U",#22425) +#22428=* +typeexprs(#22428,22,#22422,2,"T") +hasLocation(#22428,#20709) +enclosingStmt(#22428,#22422) +exprContainers(#22428,#22183) #22429=* -tokeninfo(#22429,6,#20001,480,"T") -hasLocation(#22429,#20702) +typeexprs(#22429,1,#22428,0,"T") +hasLocation(#22429,#20709) +enclosingStmt(#22429,#22422) +exprContainers(#22429,#22183) +literals("T","T",#22429) +typedecl(#22429,#22426) #22430=* -tokeninfo(#22430,8,#20001,481,"[") -#22431=@"loc,{#10000},54,57,54,57" -locations_default(#22431,#10000,54,57,54,57) -hasLocation(#22430,#22431) +typeexprs(#22430,22,#22422,3,"U") +hasLocation(#22430,#20713) +enclosingStmt(#22430,#22422) +exprContainers(#22430,#22183) +#22431=* +typeexprs(#22431,1,#22430,0,"U") +hasLocation(#22431,#20713) +enclosingStmt(#22431,#22422) +exprContainers(#22431,#22183) +literals("U","U",#22431) +typedecl(#22431,#22427) #22432=* -tokeninfo(#22432,6,#20001,482,"K") -hasLocation(#22432,#20704) -#22433=* -tokeninfo(#22433,8,#20001,483,"]") -#22434=@"loc,{#10000},54,59,54,59" -locations_default(#22434,#10000,54,59,54,59) -hasLocation(#22433,#22434) +typeexprs(#22432,28,#22422,1,"T exten ... ver : T") +#22433=@"loc,{#10000},29,21,29,43" +locations_default(#22433,#10000,29,21,29,43) +hasLocation(#22432,#22433) +enclosingStmt(#22432,#22422) +exprContainers(#22432,#22183) +#22434=* +typeexprs(#22434,0,#22432,0,"T") +hasLocation(#22434,#20719) +enclosingStmt(#22434,#22422) +exprContainers(#22434,#22183) +literals("T","T",#22434) +typebind(#22434,#22426) #22435=* -tokeninfo(#22435,7,#20001,484,"extends") -#22436=@"loc,{#10000},54,61,54,67" -locations_default(#22436,#10000,54,61,54,67) -hasLocation(#22435,#22436) +typeexprs(#22435,0,#22432,1,"U") +hasLocation(#22435,#20723) +enclosingStmt(#22435,#22422) +exprContainers(#22435,#22183) +literals("U","U",#22435) +typebind(#22435,#22427) +#22436=* +typeexprs(#22436,2,#22432,2,"never") +hasLocation(#22436,#20727) +enclosingStmt(#22436,#22422) +exprContainers(#22436,#22183) +literals("never","never",#22436) #22437=* -tokeninfo(#22437,6,#20001,485,"Function") -hasLocation(#22437,#20706) +typeexprs(#22437,0,#22432,3,"T") +hasLocation(#22437,#20731) +enclosingStmt(#22437,#22422) +exprContainers(#22437,#22183) +literals("T","T",#22437) +typebind(#22437,#22426) #22438=* -tokeninfo(#22438,8,#20001,486,"?") -#22439=@"loc,{#10000},54,78,54,78" -locations_default(#22439,#10000,54,78,54,78) +stmts(#22438,35,#22183,16,"type Fi ... never;") +#22439=@"loc,{#10000},30,3,30,46" +locations_default(#22439,#10000,30,3,30,46) hasLocation(#22438,#22439) +stmtContainers(#22438,#22183) #22440=* -tokeninfo(#22440,7,#20001,487,"never") -hasLocation(#22440,#20708) +typeexprs(#22440,1,#22438,0,"Filter") +hasLocation(#22440,#20737) +enclosingStmt(#22440,#22438) +exprContainers(#22440,#22183) +literals("Filter","Filter",#22440) +typedecl(#22440,#22205) #22441=* -tokeninfo(#22441,8,#20001,488,":") -#22442=@"loc,{#10000},54,86,54,86" -locations_default(#22442,#10000,54,86,54,86) -hasLocation(#22441,#22442) -#22443=* -tokeninfo(#22443,6,#20001,489,"K") -hasLocation(#22443,#20710) +scopes(#22441,12) +scopenodes(#22438,#22441) +scopenesting(#22441,#22186) +#22442=@"local_type_name;{T};{#22441}" +local_type_names(#22442,"T",#22441) +#22443=@"local_type_name;{U};{#22441}" +local_type_names(#22443,"U",#22441) #22444=* -tokeninfo(#22444,8,#20001,490,"}") -#22445=@"loc,{#10000},54,90,54,90" -locations_default(#22445,#10000,54,90,54,90) -hasLocation(#22444,#22445) +typeexprs(#22444,22,#22438,2,"T") +hasLocation(#22444,#20741) +enclosingStmt(#22444,#22438) +exprContainers(#22444,#22183) +#22445=* +typeexprs(#22445,1,#22444,0,"T") +hasLocation(#22445,#20741) +enclosingStmt(#22445,#22438) +exprContainers(#22445,#22183) +literals("T","T",#22445) +typedecl(#22445,#22442) #22446=* -tokeninfo(#22446,8,#20001,491,"[") -#22447=@"loc,{#10000},54,91,54,91" -locations_default(#22447,#10000,54,91,54,91) -hasLocation(#22446,#22447) +typeexprs(#22446,22,#22438,3,"U") +hasLocation(#22446,#20745) +enclosingStmt(#22446,#22438) +exprContainers(#22446,#22183) +#22447=* +typeexprs(#22447,1,#22446,0,"U") +hasLocation(#22447,#20745) +enclosingStmt(#22447,#22438) +exprContainers(#22447,#22183) +literals("U","U",#22447) +typedecl(#22447,#22443) #22448=* -tokeninfo(#22448,7,#20001,492,"keyof") -#22449=@"loc,{#10000},54,92,54,96" -locations_default(#22449,#10000,54,92,54,96) +typeexprs(#22448,28,#22438,1,"T exten ... : never") +#22449=@"loc,{#10000},30,23,30,45" +locations_default(#22449,#10000,30,23,30,45) hasLocation(#22448,#22449) +enclosingStmt(#22448,#22438) +exprContainers(#22448,#22183) #22450=* -tokeninfo(#22450,6,#20001,493,"T") -hasLocation(#22450,#20714) +typeexprs(#22450,0,#22448,0,"T") +hasLocation(#22450,#20751) +enclosingStmt(#22450,#22438) +exprContainers(#22450,#22183) +literals("T","T",#22450) +typebind(#22450,#22442) #22451=* -tokeninfo(#22451,8,#20001,494,"]") -#22452=@"loc,{#10000},54,99,54,99" -locations_default(#22452,#10000,54,99,54,99) -hasLocation(#22451,#22452) +typeexprs(#22451,0,#22448,1,"U") +hasLocation(#22451,#20755) +enclosingStmt(#22451,#22438) +exprContainers(#22451,#22183) +literals("U","U",#22451) +typebind(#22451,#22443) +#22452=* +typeexprs(#22452,0,#22448,2,"T") +hasLocation(#22452,#20759) +enclosingStmt(#22452,#22438) +exprContainers(#22452,#22183) +literals("T","T",#22452) +typebind(#22452,#22442) #22453=* -tokeninfo(#22453,8,#20001,495,";") -#22454=@"loc,{#10000},54,100,54,100" -locations_default(#22454,#10000,54,100,54,100) -hasLocation(#22453,#22454) -#22455=* -tokeninfo(#22455,7,#20001,496,"type") -#22456=@"loc,{#10000},55,3,55,6" -locations_default(#22456,#10000,55,3,55,6) -hasLocation(#22455,#22456) +typeexprs(#22453,2,#22448,3,"never") +hasLocation(#22453,#20763) +enclosingStmt(#22453,#22438) +exprContainers(#22453,#22183) +literals("never","never",#22453) +#22454=* +stmts(#22454,35,#22183,17,"type T3 ... | ""f"">;") +#22455=@"loc,{#10000},32,3,32,58" +locations_default(#22455,#10000,32,3,32,58) +hasLocation(#22454,#22455) +stmtContainers(#22454,#22183) +#22456=* +typeexprs(#22456,1,#22454,0,"T30") +hasLocation(#22456,#20769) +enclosingStmt(#22456,#22454) +exprContainers(#22456,#22183) +literals("T30","T30",#22456) +typedecl(#22456,#22206) #22457=* -tokeninfo(#22457,6,#20001,497,"NonFunctionProperties") -hasLocation(#22457,#20718) -#22458=* -tokeninfo(#22458,8,#20001,498,"<") -#22459=@"loc,{#10000},55,29,55,29" -locations_default(#22459,#10000,55,29,55,29) -hasLocation(#22458,#22459) +typeexprs(#22457,14,#22454,1,"Diff<""a ... | ""f"">") +#22458=@"loc,{#10000},32,14,32,57" +locations_default(#22458,#10000,32,14,32,57) +hasLocation(#22457,#22458) +enclosingStmt(#22457,#22454) +exprContainers(#22457,#22183) +#22459=* +typeexprs(#22459,0,#22457,-1,"Diff") +hasLocation(#22459,#20773) +enclosingStmt(#22459,#22454) +exprContainers(#22459,#22183) +literals("Diff","Diff",#22459) +typebind(#22459,#22204) #22460=* -tokeninfo(#22460,6,#20001,499,"T") -hasLocation(#22460,#20722) -#22461=* -tokeninfo(#22461,8,#20001,500,">") -#22462=@"loc,{#10000},55,31,55,31" -locations_default(#22462,#10000,55,31,55,31) -hasLocation(#22461,#22462) +typeexprs(#22460,7,#22457,0,"""a"" | "" ... "" | ""d""") +#22461=@"loc,{#10000},32,19,32,39" +locations_default(#22461,#10000,32,19,32,39) +hasLocation(#22460,#22461) +enclosingStmt(#22460,#22454) +exprContainers(#22460,#22183) +#22462=* +typeexprs(#22462,3,#22460,0,"""a""") +hasLocation(#22462,#20777) +enclosingStmt(#22462,#22454) +exprContainers(#22462,#22183) +literals("a","""a""",#22462) #22463=* -tokeninfo(#22463,8,#20001,501,"=") -#22464=@"loc,{#10000},55,33,55,33" -locations_default(#22464,#10000,55,33,55,33) -hasLocation(#22463,#22464) +typeexprs(#22463,3,#22460,1,"""b""") +hasLocation(#22463,#20781) +enclosingStmt(#22463,#22454) +exprContainers(#22463,#22183) +literals("b","""b""",#22463) +#22464=* +typeexprs(#22464,3,#22460,2,"""c""") +hasLocation(#22464,#20785) +enclosingStmt(#22464,#22454) +exprContainers(#22464,#22183) +literals("c","""c""",#22464) #22465=* -tokeninfo(#22465,6,#20001,502,"Pick") -hasLocation(#22465,#20727) +typeexprs(#22465,3,#22460,3,"""d""") +hasLocation(#22465,#20789) +enclosingStmt(#22465,#22454) +exprContainers(#22465,#22183) +literals("d","""d""",#22465) #22466=* -tokeninfo(#22466,8,#20001,503,"<") -#22467=@"loc,{#10000},55,39,55,39" -locations_default(#22467,#10000,55,39,55,39) +typeexprs(#22466,7,#22457,1,"""a"" | ""c"" | ""f""") +#22467=@"loc,{#10000},32,42,32,56" +locations_default(#22467,#10000,32,42,32,56) hasLocation(#22466,#22467) +enclosingStmt(#22466,#22454) +exprContainers(#22466,#22183) #22468=* -tokeninfo(#22468,6,#20001,504,"T") -hasLocation(#22468,#20729) +typeexprs(#22468,3,#22466,0,"""a""") +hasLocation(#22468,#20793) +enclosingStmt(#22468,#22454) +exprContainers(#22468,#22183) +literals("a","""a""",#22468) #22469=* -tokeninfo(#22469,8,#20001,505,",") -#22470=@"loc,{#10000},55,41,55,41" -locations_default(#22470,#10000,55,41,55,41) -hasLocation(#22469,#22470) +typeexprs(#22469,3,#22466,1,"""c""") +hasLocation(#22469,#20797) +enclosingStmt(#22469,#22454) +exprContainers(#22469,#22183) +literals("c","""c""",#22469) +#22470=* +typeexprs(#22470,3,#22466,2,"""f""") +hasLocation(#22470,#20801) +enclosingStmt(#22470,#22454) +exprContainers(#22470,#22183) +literals("f","""f""",#22470) #22471=* -tokeninfo(#22471,6,#20001,506,"NonFunctionPropertyNames") -hasLocation(#22471,#20733) -#22472=* -tokeninfo(#22472,8,#20001,507,"<") -#22473=@"loc,{#10000},55,67,55,67" -locations_default(#22473,#10000,55,67,55,67) -hasLocation(#22472,#22473) +stmts(#22471,35,#22183,18,"type T3 ... | ""f"">;") +#22472=@"loc,{#10000},33,3,33,60" +locations_default(#22472,#10000,33,3,33,60) +hasLocation(#22471,#22472) +stmtContainers(#22471,#22183) +#22473=* +typeexprs(#22473,1,#22471,0,"T31") +hasLocation(#22473,#20809) +enclosingStmt(#22473,#22471) +exprContainers(#22473,#22183) +literals("T31","T31",#22473) +typedecl(#22473,#22207) #22474=* -tokeninfo(#22474,6,#20001,508,"T") -hasLocation(#22474,#20735) -#22475=* -tokeninfo(#22475,8,#20001,509,">") -#22476=@"loc,{#10000},55,69,55,69" -locations_default(#22476,#10000,55,69,55,69) -hasLocation(#22475,#22476) +typeexprs(#22474,14,#22471,1,"Filter< ... | ""f"">") +#22475=@"loc,{#10000},33,14,33,59" +locations_default(#22475,#10000,33,14,33,59) +hasLocation(#22474,#22475) +enclosingStmt(#22474,#22471) +exprContainers(#22474,#22183) +#22476=* +typeexprs(#22476,0,#22474,-1,"Filter") +hasLocation(#22476,#20813) +enclosingStmt(#22476,#22471) +exprContainers(#22476,#22183) +literals("Filter","Filter",#22476) +typebind(#22476,#22205) #22477=* -tokeninfo(#22477,8,#20001,510,">") -#22478=@"loc,{#10000},55,70,55,70" -locations_default(#22478,#10000,55,70,55,70) +typeexprs(#22477,7,#22474,0,"""a"" | "" ... "" | ""d""") +#22478=@"loc,{#10000},33,21,33,41" +locations_default(#22478,#10000,33,21,33,41) hasLocation(#22477,#22478) +enclosingStmt(#22477,#22471) +exprContainers(#22477,#22183) #22479=* -tokeninfo(#22479,8,#20001,511,";") -#22480=@"loc,{#10000},55,71,55,71" -locations_default(#22480,#10000,55,71,55,71) -hasLocation(#22479,#22480) +typeexprs(#22479,3,#22477,0,"""a""") +hasLocation(#22479,#20817) +enclosingStmt(#22479,#22471) +exprContainers(#22479,#22183) +literals("a","""a""",#22479) +#22480=* +typeexprs(#22480,3,#22477,1,"""b""") +hasLocation(#22480,#20821) +enclosingStmt(#22480,#22471) +exprContainers(#22480,#22183) +literals("b","""b""",#22480) #22481=* -tokeninfo(#22481,7,#20001,512,"interface") -#22482=@"loc,{#10000},57,3,57,11" -locations_default(#22482,#10000,57,3,57,11) -hasLocation(#22481,#22482) +typeexprs(#22481,3,#22477,2,"""c""") +hasLocation(#22481,#20825) +enclosingStmt(#22481,#22471) +exprContainers(#22481,#22183) +literals("c","""c""",#22481) +#22482=* +typeexprs(#22482,3,#22477,3,"""d""") +hasLocation(#22482,#20829) +enclosingStmt(#22482,#22471) +exprContainers(#22482,#22183) +literals("d","""d""",#22482) #22483=* -tokeninfo(#22483,6,#20001,513,"Part") -hasLocation(#22483,#20739) -#22484=* -tokeninfo(#22484,8,#20001,514,"{") -#22485=@"loc,{#10000},57,18,57,18" -locations_default(#22485,#10000,57,18,57,18) -hasLocation(#22484,#22485) +typeexprs(#22483,7,#22474,1,"""a"" | ""c"" | ""f""") +#22484=@"loc,{#10000},33,44,33,58" +locations_default(#22484,#10000,33,44,33,58) +hasLocation(#22483,#22484) +enclosingStmt(#22483,#22471) +exprContainers(#22483,#22183) +#22485=* +typeexprs(#22485,3,#22483,0,"""a""") +hasLocation(#22485,#20833) +enclosingStmt(#22485,#22471) +exprContainers(#22485,#22183) +literals("a","""a""",#22485) #22486=* -tokeninfo(#22486,6,#20001,515,"id") -hasLocation(#22486,#20743) +typeexprs(#22486,3,#22483,1,"""c""") +hasLocation(#22486,#20837) +enclosingStmt(#22486,#22471) +exprContainers(#22486,#22183) +literals("c","""c""",#22486) #22487=* -tokeninfo(#22487,8,#20001,516,":") -#22488=@"loc,{#10000},58,9,58,9" -locations_default(#22488,#10000,58,9,58,9) -hasLocation(#22487,#22488) -#22489=* -tokeninfo(#22489,7,#20001,517,"number") -hasLocation(#22489,#20745) +typeexprs(#22487,3,#22483,2,"""f""") +hasLocation(#22487,#20841) +enclosingStmt(#22487,#22471) +exprContainers(#22487,#22183) +literals("f","""f""",#22487) +#22488=* +stmts(#22488,35,#22183,19,"type T3 ... ction>;") +#22489=@"loc,{#10000},34,3,34,60" +locations_default(#22489,#10000,34,3,34,60) +hasLocation(#22488,#22489) +stmtContainers(#22488,#22183) #22490=* -tokeninfo(#22490,8,#20001,518,";") -#22491=@"loc,{#10000},58,17,58,17" -locations_default(#22491,#10000,58,17,58,17) -hasLocation(#22490,#22491) -#22492=* -tokeninfo(#22492,6,#20001,519,"name") -hasLocation(#22492,#20749) +typeexprs(#22490,1,#22488,0,"T32") +hasLocation(#22490,#20849) +enclosingStmt(#22490,#22488) +exprContainers(#22490,#22183) +literals("T32","T32",#22490) +typedecl(#22490,#22208) +#22491=* +typeexprs(#22491,14,#22488,1,"Diff") +#22492=@"loc,{#10000},34,14,34,59" +locations_default(#22492,#10000,34,14,34,59) +hasLocation(#22491,#22492) +enclosingStmt(#22491,#22488) +exprContainers(#22491,#22183) #22493=* -tokeninfo(#22493,8,#20001,520,":") -#22494=@"loc,{#10000},59,11,59,11" -locations_default(#22494,#10000,59,11,59,11) -hasLocation(#22493,#22494) -#22495=* -tokeninfo(#22495,7,#20001,521,"string") -hasLocation(#22495,#20751) +typeexprs(#22493,0,#22491,-1,"Diff") +hasLocation(#22493,#20853) +enclosingStmt(#22493,#22488) +exprContainers(#22493,#22183) +literals("Diff","Diff",#22493) +typebind(#22493,#22204) +#22494=* +typeexprs(#22494,7,#22491,0,"string ... > void)") +#22495=@"loc,{#10000},34,19,34,48" +locations_default(#22495,#10000,34,19,34,48) +hasLocation(#22494,#22495) +enclosingStmt(#22494,#22488) +exprContainers(#22494,#22183) #22496=* -tokeninfo(#22496,8,#20001,522,";") -#22497=@"loc,{#10000},59,19,59,19" -locations_default(#22497,#10000,59,19,59,19) -hasLocation(#22496,#22497) +typeexprs(#22496,2,#22494,0,"string") +hasLocation(#22496,#20857) +enclosingStmt(#22496,#22488) +exprContainers(#22496,#22183) +literals("string","string",#22496) +#22497=* +typeexprs(#22497,2,#22494,1,"number") +hasLocation(#22497,#20861) +enclosingStmt(#22497,#22488) +exprContainers(#22497,#22183) +literals("number","number",#22497) #22498=* -tokeninfo(#22498,6,#20001,523,"subparts") -hasLocation(#22498,#20755) -#22499=* -tokeninfo(#22499,8,#20001,524,":") -#22500=@"loc,{#10000},60,15,60,15" -locations_default(#22500,#10000,60,15,60,15) -hasLocation(#22499,#22500) -#22501=* -tokeninfo(#22501,6,#20001,525,"Part") -hasLocation(#22501,#20759) +typeexprs(#22498,10,#22494,2,"(() => void)") +#22499=@"loc,{#10000},34,37,34,48" +locations_default(#22499,#10000,34,37,34,48) +hasLocation(#22498,#22499) +enclosingStmt(#22498,#22488) +exprContainers(#22498,#22183) +#22500=* +typeexprs(#22500,23,#22498,0,"() => void") +#22501=@"loc,{#10000},34,38,34,47" +locations_default(#22501,#10000,34,38,34,47) +hasLocation(#22500,#22501) +enclosingStmt(#22500,#22488) +exprContainers(#22500,#22183) #22502=* -tokeninfo(#22502,8,#20001,526,"[") -#22503=@"loc,{#10000},60,21,60,21" -locations_default(#22503,#10000,60,21,60,21) -hasLocation(#22502,#22503) -#22504=* -tokeninfo(#22504,8,#20001,527,"]") -#22505=@"loc,{#10000},60,22,60,22" -locations_default(#22505,#10000,60,22,60,22) -hasLocation(#22504,#22505) +exprs(#22502,9,#22500,0,"() => void") +hasLocation(#22502,#22501) +enclosingStmt(#22502,#22488) +exprContainers(#22502,#22183) +#22503=* +scopes(#22503,1) +scopenodes(#22502,#22503) +scopenesting(#22503,#22186) +#22504=@"var;{arguments};{#22503}" +variables(#22504,"arguments",#22503) +isArgumentsObject(#22504) +#22505=* +typeexprs(#22505,2,#22502,-3,"void") +hasLocation(#22505,#20873) +exprContainers(#22505,#22502) +literals("void","void",#22505) #22506=* -tokeninfo(#22506,8,#20001,528,";") -#22507=@"loc,{#10000},60,23,60,23" -locations_default(#22507,#10000,60,23,60,23) -hasLocation(#22506,#22507) -#22508=* -tokeninfo(#22508,6,#20001,529,"updatePart") -hasLocation(#22508,#20763) +typeexprs(#22506,0,#22491,1,"Function") +hasLocation(#22506,#20879) +enclosingStmt(#22506,#22488) +exprContainers(#22506,#22183) +literals("Function","Function",#22506) +#22507=* +stmts(#22507,35,#22183,20,"type T3 ... ction>;") +#22508=@"loc,{#10000},35,3,35,62" +locations_default(#22508,#10000,35,3,35,62) +hasLocation(#22507,#22508) +stmtContainers(#22507,#22183) #22509=* -tokeninfo(#22509,8,#20001,530,"(") -#22510=@"loc,{#10000},61,17,61,17" -locations_default(#22510,#10000,61,17,61,17) -hasLocation(#22509,#22510) -#22511=* -tokeninfo(#22511,6,#20001,531,"newName") -hasLocation(#22511,#20768) +typeexprs(#22509,1,#22507,0,"T33") +hasLocation(#22509,#20887) +enclosingStmt(#22509,#22507) +exprContainers(#22509,#22183) +literals("T33","T33",#22509) +typedecl(#22509,#22209) +#22510=* +typeexprs(#22510,14,#22507,1,"Filter< ... nction>") +#22511=@"loc,{#10000},35,14,35,61" +locations_default(#22511,#10000,35,14,35,61) +hasLocation(#22510,#22511) +enclosingStmt(#22510,#22507) +exprContainers(#22510,#22183) #22512=* -tokeninfo(#22512,8,#20001,532,":") -#22513=@"loc,{#10000},61,25,61,25" -locations_default(#22513,#10000,61,25,61,25) -hasLocation(#22512,#22513) -#22514=* -tokeninfo(#22514,7,#20001,533,"string") -hasLocation(#22514,#20773) +typeexprs(#22512,0,#22510,-1,"Filter") +hasLocation(#22512,#20891) +enclosingStmt(#22512,#22507) +exprContainers(#22512,#22183) +literals("Filter","Filter",#22512) +typebind(#22512,#22205) +#22513=* +typeexprs(#22513,7,#22510,0,"string ... > void)") +#22514=@"loc,{#10000},35,21,35,50" +locations_default(#22514,#10000,35,21,35,50) +hasLocation(#22513,#22514) +enclosingStmt(#22513,#22507) +exprContainers(#22513,#22183) #22515=* -tokeninfo(#22515,8,#20001,534,")") -#22516=@"loc,{#10000},61,33,61,33" -locations_default(#22516,#10000,61,33,61,33) -hasLocation(#22515,#22516) +typeexprs(#22515,2,#22513,0,"string") +hasLocation(#22515,#20895) +enclosingStmt(#22515,#22507) +exprContainers(#22515,#22183) +literals("string","string",#22515) +#22516=* +typeexprs(#22516,2,#22513,1,"number") +hasLocation(#22516,#20899) +enclosingStmt(#22516,#22507) +exprContainers(#22516,#22183) +literals("number","number",#22516) #22517=* -tokeninfo(#22517,8,#20001,535,":") -#22518=@"loc,{#10000},61,34,61,34" -locations_default(#22518,#10000,61,34,61,34) +typeexprs(#22517,10,#22513,2,"(() => void)") +#22518=@"loc,{#10000},35,39,35,50" +locations_default(#22518,#10000,35,39,35,50) hasLocation(#22517,#22518) +enclosingStmt(#22517,#22507) +exprContainers(#22517,#22183) #22519=* -tokeninfo(#22519,7,#20001,536,"void") -hasLocation(#22519,#20771) -#22520=* -tokeninfo(#22520,8,#20001,537,";") -#22521=@"loc,{#10000},61,40,61,40" -locations_default(#22521,#10000,61,40,61,40) -hasLocation(#22520,#22521) +typeexprs(#22519,23,#22517,0,"() => void") +#22520=@"loc,{#10000},35,40,35,49" +locations_default(#22520,#10000,35,40,35,49) +hasLocation(#22519,#22520) +enclosingStmt(#22519,#22507) +exprContainers(#22519,#22183) +#22521=* +exprs(#22521,9,#22519,0,"() => void") +hasLocation(#22521,#22520) +enclosingStmt(#22521,#22507) +exprContainers(#22521,#22183) #22522=* -tokeninfo(#22522,8,#20001,538,"}") -#22523=@"loc,{#10000},62,3,62,3" -locations_default(#22523,#10000,62,3,62,3) -hasLocation(#22522,#22523) +scopes(#22522,1) +scopenodes(#22521,#22522) +scopenesting(#22522,#22186) +#22523=@"var;{arguments};{#22522}" +variables(#22523,"arguments",#22522) +isArgumentsObject(#22523) #22524=* -tokeninfo(#22524,7,#20001,539,"type") -#22525=@"loc,{#10000},64,3,64,6" -locations_default(#22525,#10000,64,3,64,6) -hasLocation(#22524,#22525) +typeexprs(#22524,2,#22521,-3,"void") +hasLocation(#22524,#20911) +exprContainers(#22524,#22521) +literals("void","void",#22524) +#22525=* +typeexprs(#22525,0,#22510,1,"Function") +hasLocation(#22525,#20917) +enclosingStmt(#22525,#22507) +exprContainers(#22525,#22183) +literals("Function","Function",#22525) #22526=* -tokeninfo(#22526,6,#20001,540,"T40") -hasLocation(#22526,#20777) -#22527=* -tokeninfo(#22527,8,#20001,541,"=") -#22528=@"loc,{#10000},64,12,64,12" -locations_default(#22528,#10000,64,12,64,12) -hasLocation(#22527,#22528) +stmts(#22526,35,#22183,21,"type No ... fined>;") +#22527=@"loc,{#10000},37,3,37,50" +locations_default(#22527,#10000,37,3,37,50) +hasLocation(#22526,#22527) +stmtContainers(#22526,#22183) +#22528=* +typeexprs(#22528,1,#22526,0,"NonNullable") +hasLocation(#22528,#20925) +enclosingStmt(#22528,#22526) +exprContainers(#22528,#22183) +literals("NonNullable","NonNullable",#22528) +typedecl(#22528,#22210) #22529=* -tokeninfo(#22529,6,#20001,542,"FunctionPropertyNames") -hasLocation(#22529,#20781) -#22530=* -tokeninfo(#22530,8,#20001,543,"<") -#22531=@"loc,{#10000},64,35,64,35" -locations_default(#22531,#10000,64,35,64,35) -hasLocation(#22530,#22531) +scopes(#22529,12) +scopenodes(#22526,#22529) +scopenesting(#22529,#22186) +#22530=@"local_type_name;{T};{#22529}" +local_type_names(#22530,"T",#22529) +#22531=* +typeexprs(#22531,22,#22526,2,"T") +hasLocation(#22531,#20929) +enclosingStmt(#22531,#22526) +exprContainers(#22531,#22183) #22532=* -tokeninfo(#22532,6,#20001,544,"Part") -hasLocation(#22532,#20783) +typeexprs(#22532,1,#22531,0,"T") +hasLocation(#22532,#20929) +enclosingStmt(#22532,#22526) +exprContainers(#22532,#22183) +literals("T","T",#22532) +typedecl(#22532,#22530) #22533=* -tokeninfo(#22533,8,#20001,545,">") -#22534=@"loc,{#10000},64,40,64,40" -locations_default(#22534,#10000,64,40,64,40) +typeexprs(#22533,14,#22526,1,"Diff") +#22534=@"loc,{#10000},37,25,37,49" +locations_default(#22534,#10000,37,25,37,49) hasLocation(#22533,#22534) +enclosingStmt(#22533,#22526) +exprContainers(#22533,#22183) #22535=* -tokeninfo(#22535,8,#20001,546,";") -#22536=@"loc,{#10000},64,41,64,41" -locations_default(#22536,#10000,64,41,64,41) -hasLocation(#22535,#22536) +typeexprs(#22535,0,#22533,-1,"Diff") +hasLocation(#22535,#20935) +enclosingStmt(#22535,#22526) +exprContainers(#22535,#22183) +literals("Diff","Diff",#22535) +typebind(#22535,#22204) +#22536=* +typeexprs(#22536,0,#22533,0,"T") +hasLocation(#22536,#20939) +enclosingStmt(#22536,#22526) +exprContainers(#22536,#22183) +literals("T","T",#22536) +typebind(#22536,#22530) #22537=* -tokeninfo(#22537,7,#20001,547,"type") -#22538=@"loc,{#10000},65,3,65,6" -locations_default(#22538,#10000,65,3,65,6) +typeexprs(#22537,7,#22533,1,"null | undefined") +#22538=@"loc,{#10000},37,33,37,48" +locations_default(#22538,#10000,37,33,37,48) hasLocation(#22537,#22538) -next_token(#21413,#22537) +enclosingStmt(#22537,#22526) +exprContainers(#22537,#22183) #22539=* -tokeninfo(#22539,6,#20001,548,"T41") -hasLocation(#22539,#20787) +typeexprs(#22539,2,#22537,0,"null") +hasLocation(#22539,#20943) +enclosingStmt(#22539,#22526) +exprContainers(#22539,#22183) +literals("null","null",#22539) #22540=* -tokeninfo(#22540,8,#20001,549,"=") -#22541=@"loc,{#10000},65,12,65,12" -locations_default(#22541,#10000,65,12,65,12) -hasLocation(#22540,#22541) -#22542=* -tokeninfo(#22542,6,#20001,550,"NonFunctionPropertyNames") -hasLocation(#22542,#20791) +typeexprs(#22540,2,#22537,1,"undefined") +hasLocation(#22540,#20947) +enclosingStmt(#22540,#22526) +exprContainers(#22540,#22183) +literals("undefined","undefined",#22540) +#22541=* +stmts(#22541,35,#22183,22,"type T3 ... fined>;") +#22542=@"loc,{#10000},39,3,39,54" +locations_default(#22542,#10000,39,3,39,54) +hasLocation(#22541,#22542) +stmtContainers(#22541,#22183) #22543=* -tokeninfo(#22543,8,#20001,551,"<") -#22544=@"loc,{#10000},65,38,65,38" -locations_default(#22544,#10000,65,38,65,38) -hasLocation(#22543,#22544) -#22545=* -tokeninfo(#22545,6,#20001,552,"Part") -hasLocation(#22545,#20793) +typeexprs(#22543,1,#22541,0,"T34") +hasLocation(#22543,#20955) +enclosingStmt(#22543,#22541) +exprContainers(#22543,#22183) +literals("T34","T34",#22543) +typedecl(#22543,#22211) +#22544=* +typeexprs(#22544,14,#22541,1,"NonNull ... efined>") +#22545=@"loc,{#10000},39,14,39,53" +locations_default(#22545,#10000,39,14,39,53) +hasLocation(#22544,#22545) +enclosingStmt(#22544,#22541) +exprContainers(#22544,#22183) #22546=* -tokeninfo(#22546,8,#20001,553,">") -#22547=@"loc,{#10000},65,43,65,43" -locations_default(#22547,#10000,65,43,65,43) -hasLocation(#22546,#22547) -#22548=* -tokeninfo(#22548,8,#20001,554,";") -#22549=@"loc,{#10000},65,44,65,44" -locations_default(#22549,#10000,65,44,65,44) -hasLocation(#22548,#22549) +typeexprs(#22546,0,#22544,-1,"NonNullable") +hasLocation(#22546,#20959) +enclosingStmt(#22546,#22541) +exprContainers(#22546,#22183) +literals("NonNullable","NonNullable",#22546) +typebind(#22546,#22210) +#22547=* +typeexprs(#22547,7,#22544,0,"string ... defined") +#22548=@"loc,{#10000},39,26,39,52" +locations_default(#22548,#10000,39,26,39,52) +hasLocation(#22547,#22548) +enclosingStmt(#22547,#22541) +exprContainers(#22547,#22183) +#22549=* +typeexprs(#22549,2,#22547,0,"string") +hasLocation(#22549,#20963) +enclosingStmt(#22549,#22541) +exprContainers(#22549,#22183) +literals("string","string",#22549) #22550=* -tokeninfo(#22550,7,#20001,555,"type") -#22551=@"loc,{#10000},66,3,66,6" -locations_default(#22551,#10000,66,3,66,6) -hasLocation(#22550,#22551) -next_token(#21415,#22550) +typeexprs(#22550,2,#22547,1,"number") +hasLocation(#22550,#20967) +enclosingStmt(#22550,#22541) +exprContainers(#22550,#22183) +literals("number","number",#22550) +#22551=* +typeexprs(#22551,2,#22547,2,"undefined") +hasLocation(#22551,#20971) +enclosingStmt(#22551,#22541) +exprContainers(#22551,#22183) +literals("undefined","undefined",#22551) #22552=* -tokeninfo(#22552,6,#20001,556,"T42") -hasLocation(#22552,#20797) -#22553=* -tokeninfo(#22553,8,#20001,557,"=") -#22554=@"loc,{#10000},66,12,66,12" -locations_default(#22554,#10000,66,12,66,12) -hasLocation(#22553,#22554) +stmts(#22552,35,#22183,23,"type T3 ... fined>;") +#22553=@"loc,{#10000},40,3,40,63" +locations_default(#22553,#10000,40,3,40,63) +hasLocation(#22552,#22553) +stmtContainers(#22552,#22183) +#22554=* +typeexprs(#22554,1,#22552,0,"T35") +hasLocation(#22554,#20979) +enclosingStmt(#22554,#22552) +exprContainers(#22554,#22183) +literals("T35","T35",#22554) +typedecl(#22554,#22212) #22555=* -tokeninfo(#22555,6,#20001,558,"FunctionProperties") -hasLocation(#22555,#20801) -#22556=* -tokeninfo(#22556,8,#20001,559,"<") -#22557=@"loc,{#10000},66,32,66,32" -locations_default(#22557,#10000,66,32,66,32) -hasLocation(#22556,#22557) +typeexprs(#22555,14,#22552,1,"NonNull ... efined>") +#22556=@"loc,{#10000},40,14,40,62" +locations_default(#22556,#10000,40,14,40,62) +hasLocation(#22555,#22556) +enclosingStmt(#22555,#22552) +exprContainers(#22555,#22183) +#22557=* +typeexprs(#22557,0,#22555,-1,"NonNullable") +hasLocation(#22557,#20983) +enclosingStmt(#22557,#22552) +exprContainers(#22557,#22183) +literals("NonNullable","NonNullable",#22557) +typebind(#22557,#22210) #22558=* -tokeninfo(#22558,6,#20001,560,"Part") -hasLocation(#22558,#20803) -#22559=* -tokeninfo(#22559,8,#20001,561,">") -#22560=@"loc,{#10000},66,37,66,37" -locations_default(#22560,#10000,66,37,66,37) -hasLocation(#22559,#22560) +typeexprs(#22558,7,#22555,0,"string ... defined") +#22559=@"loc,{#10000},40,26,40,61" +locations_default(#22559,#10000,40,26,40,61) +hasLocation(#22558,#22559) +enclosingStmt(#22558,#22552) +exprContainers(#22558,#22183) +#22560=* +typeexprs(#22560,2,#22558,0,"string") +hasLocation(#22560,#20987) +enclosingStmt(#22560,#22552) +exprContainers(#22560,#22183) +literals("string","string",#22560) #22561=* -tokeninfo(#22561,8,#20001,562,";") -#22562=@"loc,{#10000},66,38,66,38" -locations_default(#22562,#10000,66,38,66,38) +typeexprs(#22561,6,#22558,1,"string[]") +#22562=@"loc,{#10000},40,35,40,42" +locations_default(#22562,#10000,40,35,40,42) hasLocation(#22561,#22562) +enclosingStmt(#22561,#22552) +exprContainers(#22561,#22183) #22563=* -tokeninfo(#22563,7,#20001,563,"type") -#22564=@"loc,{#10000},67,3,67,6" -locations_default(#22564,#10000,67,3,67,6) -hasLocation(#22563,#22564) -next_token(#21417,#22563) +typeexprs(#22563,2,#22561,0,"string") +hasLocation(#22563,#20991) +enclosingStmt(#22563,#22552) +exprContainers(#22563,#22183) +literals("string","string",#22563) +#22564=* +typeexprs(#22564,2,#22558,2,"null") +hasLocation(#22564,#20999) +enclosingStmt(#22564,#22552) +exprContainers(#22564,#22183) +literals("null","null",#22564) #22565=* -tokeninfo(#22565,6,#20001,564,"T43") -hasLocation(#22565,#20807) +typeexprs(#22565,2,#22558,3,"undefined") +hasLocation(#22565,#21003) +enclosingStmt(#22565,#22552) +exprContainers(#22565,#22183) +literals("undefined","undefined",#22565) #22566=* -tokeninfo(#22566,8,#20001,565,"=") -#22567=@"loc,{#10000},67,12,67,12" -locations_default(#22567,#10000,67,12,67,12) +stmts(#22566,17,#22183,24,"functio ... Ok\n }") +#22567=@"loc,{#10000},42,3,44,3" +locations_default(#22567,#10000,42,3,44,3) hasLocation(#22566,#22567) +stmtContainers(#22566,#22183) #22568=* -tokeninfo(#22568,6,#20001,566,"NonFunctionProperties") -hasLocation(#22568,#20811) +exprs(#22568,78,#22566,-1,"f1") +hasLocation(#22568,#21011) +exprContainers(#22568,#22566) +literals("f1","f1",#22568) +decl(#22568,#22187) #22569=* -tokeninfo(#22569,8,#20001,567,"<") -#22570=@"loc,{#10000},67,35,67,35" -locations_default(#22570,#10000,67,35,67,35) -hasLocation(#22569,#22570) -#22571=* -tokeninfo(#22571,6,#20001,568,"Part") -hasLocation(#22571,#20813) +scopes(#22569,1) +scopenodes(#22566,#22569) +scopenesting(#22569,#22186) +#22570=@"local_type_name;{T};{#22569}" +local_type_names(#22570,"T",#22569) +#22571=@"var;{x};{#22569}" +variables(#22571,"x",#22569) #22572=* -tokeninfo(#22572,8,#20001,569,">") -#22573=@"loc,{#10000},67,40,67,40" -locations_default(#22573,#10000,67,40,67,40) -hasLocation(#22572,#22573) +exprs(#22572,78,#22566,0,"x") +hasLocation(#22572,#21021) +exprContainers(#22572,#22566) +literals("x","x",#22572) +decl(#22572,#22571) +#22573=@"var;{y};{#22569}" +variables(#22573,"y",#22569) #22574=* -tokeninfo(#22574,8,#20001,570,";") -#22575=@"loc,{#10000},67,41,67,41" -locations_default(#22575,#10000,67,41,67,41) -hasLocation(#22574,#22575) +exprs(#22574,78,#22566,1,"y") +hasLocation(#22574,#21029) +exprContainers(#22574,#22566) +literals("y","y",#22574) +decl(#22574,#22573) +#22575=@"var;{arguments};{#22569}" +variables(#22575,"arguments",#22569) +isArgumentsObject(#22575) #22576=* -tokeninfo(#22576,7,#20001,571,"type") -#22577=@"loc,{#10000},69,3,69,6" -locations_default(#22577,#10000,69,3,69,6) -hasLocation(#22576,#22577) -next_token(#21419,#22576) -#22578=* -tokeninfo(#22578,6,#20001,572,"ReturnType") -hasLocation(#22578,#20817) +typeexprs(#22576,0,#22566,-6,"T") +hasLocation(#22576,#21025) +exprContainers(#22576,#22566) +literals("T","T",#22576) +typebind(#22576,#22570) +#22577=* +typeexprs(#22577,14,#22566,-10,"NonNullable") +#22578=@"loc,{#10000},42,27,42,40" +locations_default(#22578,#10000,42,27,42,40) +hasLocation(#22577,#22578) +exprContainers(#22577,#22566) #22579=* -tokeninfo(#22579,8,#20001,573,"<") -#22580=@"loc,{#10000},69,18,69,18" -locations_default(#22580,#10000,69,18,69,18) -hasLocation(#22579,#22580) +typeexprs(#22579,0,#22577,-1,"NonNullable") +hasLocation(#22579,#21033) +exprContainers(#22579,#22566) +literals("NonNullable","NonNullable",#22579) +typebind(#22579,#22210) +#22580=* +typeexprs(#22580,0,#22577,0,"T") +hasLocation(#22580,#21037) +exprContainers(#22580,#22566) +literals("T","T",#22580) +typebind(#22580,#22570) #22581=* -tokeninfo(#22581,6,#20001,574,"T") -hasLocation(#22581,#20821) +typeexprs(#22581,22,#22566,-7,"T") +hasLocation(#22581,#21015) +exprContainers(#22581,#22566) #22582=* -tokeninfo(#22582,8,#20001,575,">") -#22583=@"loc,{#10000},69,20,69,20" -locations_default(#22583,#10000,69,20,69,20) -hasLocation(#22582,#22583) -#22584=* -tokeninfo(#22584,8,#20001,576,"=") -#22585=@"loc,{#10000},69,22,69,22" -locations_default(#22585,#10000,69,22,69,22) -hasLocation(#22584,#22585) -#22586=* -tokeninfo(#22586,6,#20001,577,"T") -hasLocation(#22586,#20826) +typeexprs(#22582,1,#22581,0,"T") +hasLocation(#22582,#21015) +exprContainers(#22582,#22566) +literals("T","T",#22582) +typedecl(#22582,#22570) +#22583=* +stmts(#22583,1,#22566,-2,"{\n ... Ok\n }") +#22584=@"loc,{#10000},42,43,44,3" +locations_default(#22584,#10000,42,43,44,3) +hasLocation(#22583,#22584) +stmtContainers(#22583,#22566) +#22585=* +stmts(#22585,2,#22583,0,"x = y;") +#22586=@"loc,{#10000},43,7,43,12" +locations_default(#22586,#10000,43,7,43,12) +hasLocation(#22585,#22586) +stmtContainers(#22585,#22566) #22587=* -tokeninfo(#22587,7,#20001,578,"extends") -#22588=@"loc,{#10000},69,26,69,32" -locations_default(#22588,#10000,69,26,69,32) +exprs(#22587,47,#22585,0,"x = y") +#22588=@"loc,{#10000},43,7,43,11" +locations_default(#22588,#10000,43,7,43,11) hasLocation(#22587,#22588) +enclosingStmt(#22587,#22585) +exprContainers(#22587,#22566) #22589=* -tokeninfo(#22589,8,#20001,579,"(") -#22590=@"loc,{#10000},69,34,69,34" -locations_default(#22590,#10000,69,34,69,34) -hasLocation(#22589,#22590) +exprs(#22589,79,#22587,0,"x") +hasLocation(#22589,#21045) +enclosingStmt(#22589,#22585) +exprContainers(#22589,#22566) +literals("x","x",#22589) +bind(#22589,#22571) +#22590=* +exprs(#22590,79,#22587,1,"y") +hasLocation(#22590,#21049) +enclosingStmt(#22590,#22585) +exprContainers(#22590,#22566) +literals("y","y",#22590) +bind(#22590,#22573) #22591=* -tokeninfo(#22591,8,#20001,580,"...") -#22592=@"loc,{#10000},69,35,69,37" -locations_default(#22592,#10000,69,35,69,37) +stmts(#22591,17,#22183,25,"functio ... Ok\n }") +#22592=@"loc,{#10000},46,3,49,3" +locations_default(#22592,#10000,46,3,49,3) hasLocation(#22591,#22592) +stmtContainers(#22591,#22183) #22593=* -tokeninfo(#22593,6,#20001,581,"args") -hasLocation(#22593,#20835) +exprs(#22593,78,#22591,-1,"f2") +hasLocation(#22593,#21057) +exprContainers(#22593,#22591) +literals("f2","f2",#22593) +decl(#22593,#22188) #22594=* -tokeninfo(#22594,8,#20001,582,":") -#22595=@"loc,{#10000},69,42,69,42" -locations_default(#22595,#10000,69,42,69,42) -hasLocation(#22594,#22595) -#22596=* -tokeninfo(#22596,7,#20001,583,"any") -hasLocation(#22596,#20845) +scopes(#22594,1) +scopenodes(#22591,#22594) +scopenesting(#22594,#22186) +#22595=@"local_type_name;{T};{#22594}" +local_type_names(#22595,"T",#22594) +#22596=@"var;{x};{#22594}" +variables(#22596,"x",#22594) #22597=* -tokeninfo(#22597,8,#20001,584,"[") -#22598=@"loc,{#10000},69,47,69,47" -locations_default(#22598,#10000,69,47,69,47) -hasLocation(#22597,#22598) +exprs(#22597,78,#22591,0,"x") +hasLocation(#22597,#21075) +exprContainers(#22597,#22591) +literals("x","x",#22597) +decl(#22597,#22596) +#22598=@"var;{y};{#22594}" +variables(#22598,"y",#22594) #22599=* -tokeninfo(#22599,8,#20001,585,"]") -#22600=@"loc,{#10000},69,48,69,48" -locations_default(#22600,#10000,69,48,69,48) -hasLocation(#22599,#22600) +exprs(#22599,78,#22591,1,"y") +hasLocation(#22599,#21083) +exprContainers(#22599,#22591) +literals("y","y",#22599) +decl(#22599,#22598) +#22600=@"var;{arguments};{#22594}" +variables(#22600,"arguments",#22594) +isArgumentsObject(#22600) #22601=* -tokeninfo(#22601,8,#20001,586,")") -#22602=@"loc,{#10000},69,49,69,49" -locations_default(#22602,#10000,69,49,69,49) -hasLocation(#22601,#22602) -#22603=* -tokeninfo(#22603,8,#20001,587,"=>") -#22604=@"loc,{#10000},69,51,69,52" -locations_default(#22604,#10000,69,51,69,52) -hasLocation(#22603,#22604) +typeexprs(#22601,0,#22591,-6,"T") +hasLocation(#22601,#21079) +exprContainers(#22601,#22591) +literals("T","T",#22601) +typebind(#22601,#22595) +#22602=* +typeexprs(#22602,14,#22591,-10,"NonNullable") +#22603=@"loc,{#10000},46,54,46,67" +locations_default(#22603,#10000,46,54,46,67) +hasLocation(#22602,#22603) +exprContainers(#22602,#22591) +#22604=* +typeexprs(#22604,0,#22602,-1,"NonNullable") +hasLocation(#22604,#21087) +exprContainers(#22604,#22591) +literals("NonNullable","NonNullable",#22604) +typebind(#22604,#22210) #22605=* -tokeninfo(#22605,7,#20001,588,"infer") -#22606=@"loc,{#10000},69,54,69,58" -locations_default(#22606,#10000,69,54,69,58) -hasLocation(#22605,#22606) -#22607=* -tokeninfo(#22607,6,#20001,589,"R") -hasLocation(#22607,#20840) +typeexprs(#22605,0,#22602,0,"T") +hasLocation(#22605,#21091) +exprContainers(#22605,#22591) +literals("T","T",#22605) +typebind(#22605,#22595) +#22606=* +typeexprs(#22606,22,#22591,-7,"T exten ... defined") +#22607=@"loc,{#10000},46,15,46,42" +locations_default(#22607,#10000,46,15,46,42) +hasLocation(#22606,#22607) +exprContainers(#22606,#22591) #22608=* -tokeninfo(#22608,8,#20001,590,"?") -#22609=@"loc,{#10000},69,62,69,62" -locations_default(#22609,#10000,69,62,69,62) -hasLocation(#22608,#22609) -#22610=* -tokeninfo(#22610,6,#20001,591,"R") -hasLocation(#22610,#20847) +typeexprs(#22608,1,#22606,0,"T") +hasLocation(#22608,#21061) +exprContainers(#22608,#22591) +literals("T","T",#22608) +typedecl(#22608,#22595) +#22609=* +typeexprs(#22609,7,#22606,1,"string | undefined") +#22610=@"loc,{#10000},46,25,46,42" +locations_default(#22610,#10000,46,25,46,42) +hasLocation(#22609,#22610) +exprContainers(#22609,#22591) #22611=* -tokeninfo(#22611,8,#20001,592,":") -#22612=@"loc,{#10000},69,66,69,66" -locations_default(#22612,#10000,69,66,69,66) -hasLocation(#22611,#22612) +typeexprs(#22611,2,#22609,0,"string") +hasLocation(#22611,#21065) +exprContainers(#22611,#22591) +literals("string","string",#22611) +#22612=* +typeexprs(#22612,2,#22609,1,"undefined") +hasLocation(#22612,#21069) +exprContainers(#22612,#22591) +literals("undefined","undefined",#22612) #22613=* -tokeninfo(#22613,7,#20001,593,"any") -hasLocation(#22613,#20849) -#22614=* -tokeninfo(#22614,8,#20001,594,";") -#22615=@"loc,{#10000},69,71,69,71" -locations_default(#22615,#10000,69,71,69,71) -hasLocation(#22614,#22615) -#22616=* -tokeninfo(#22616,8,#20001,595,"}") -hasLocation(#22616,#21582) +stmts(#22613,1,#22591,-2,"{\n ... Ok\n }") +#22614=@"loc,{#10000},46,70,49,3" +locations_default(#22614,#10000,46,70,49,3) +hasLocation(#22613,#22614) +stmtContainers(#22613,#22591) +#22615=* +scopes(#22615,4) +scopenodes(#22613,#22615) +scopenesting(#22615,#22594) +#22616=@"var;{s2};{#22615}" +variables(#22616,"s2",#22615) #22617=* -tokeninfo(#22617,7,#20001,596,"namespace") -#22618=@"loc,{#10000},72,1,72,9" -locations_default(#22618,#10000,72,1,72,9) +stmts(#22617,2,#22613,0,"x = y;") +#22618=@"loc,{#10000},47,7,47,12" +locations_default(#22618,#10000,47,7,47,12) hasLocation(#22617,#22618) +stmtContainers(#22617,#22591) #22619=* -tokeninfo(#22619,6,#20001,597,"ConditionalTypes2") -hasLocation(#22619,#20853) -#22620=* -tokeninfo(#22620,8,#20001,598,"{") -#22621=@"loc,{#10000},72,29,72,29" -locations_default(#22621,#10000,72,29,72,29) -hasLocation(#22620,#22621) +exprs(#22619,47,#22617,0,"x = y") +#22620=@"loc,{#10000},47,7,47,11" +locations_default(#22620,#10000,47,7,47,11) +hasLocation(#22619,#22620) +enclosingStmt(#22619,#22617) +exprContainers(#22619,#22591) +#22621=* +exprs(#22621,79,#22619,0,"x") +hasLocation(#22621,#21099) +enclosingStmt(#22621,#22617) +exprContainers(#22621,#22591) +literals("x","x",#22621) +bind(#22621,#22596) #22622=* -tokeninfo(#22622,7,#20001,599,"type") -#22623=@"loc,{#10000},73,3,73,6" -locations_default(#22623,#10000,73,3,73,6) -hasLocation(#22622,#22623) -#22624=* -tokeninfo(#22624,6,#20001,600,"Unpacked") -hasLocation(#22624,#20874) +exprs(#22622,79,#22619,1,"y") +hasLocation(#22622,#21103) +enclosingStmt(#22622,#22617) +exprContainers(#22622,#22591) +literals("y","y",#22622) +bind(#22622,#22598) +#22623=* +stmts(#22623,23,#22613,1,"let s2: string = y;") +#22624=@"loc,{#10000},48,7,48,25" +locations_default(#22624,#10000,48,7,48,25) +hasLocation(#22623,#22624) +stmtContainers(#22623,#22591) #22625=* -tokeninfo(#22625,8,#20001,601,"<") -#22626=@"loc,{#10000},73,16,73,16" -locations_default(#22626,#10000,73,16,73,16) +exprs(#22625,64,#22623,0,"s2: string = y") +#22626=@"loc,{#10000},48,11,48,24" +locations_default(#22626,#10000,48,11,48,24) hasLocation(#22625,#22626) +enclosingStmt(#22625,#22623) +exprContainers(#22625,#22591) #22627=* -tokeninfo(#22627,6,#20001,602,"T") -hasLocation(#22627,#20878) +exprs(#22627,78,#22625,0,"s2") +hasLocation(#22627,#21109) +enclosingStmt(#22627,#22623) +exprContainers(#22627,#22591) +literals("s2","s2",#22627) +decl(#22627,#22616) #22628=* -tokeninfo(#22628,8,#20001,603,">") -#22629=@"loc,{#10000},73,18,73,18" -locations_default(#22629,#10000,73,18,73,18) -hasLocation(#22628,#22629) +exprs(#22628,79,#22625,1,"y") +hasLocation(#22628,#21117) +enclosingStmt(#22628,#22623) +exprContainers(#22628,#22591) +literals("y","y",#22628) +bind(#22628,#22598) +#22629=* +typeexprs(#22629,2,#22625,2,"string") +hasLocation(#22629,#21113) +enclosingStmt(#22629,#22623) +exprContainers(#22629,#22591) +literals("string","string",#22629) #22630=* -tokeninfo(#22630,8,#20001,604,"=") -#22631=@"loc,{#10000},73,20,73,20" -locations_default(#22631,#10000,73,20,73,20) +stmts(#22630,35,#22183,26,"type Fu ... yof T];") +#22631=@"loc,{#10000},51,3,51,97" +locations_default(#22631,#10000,51,3,51,97) hasLocation(#22630,#22631) +stmtContainers(#22630,#22183) #22632=* -tokeninfo(#22632,6,#20001,605,"T") -hasLocation(#22632,#20883) +typeexprs(#22632,1,#22630,0,"Functio ... tyNames") +hasLocation(#22632,#21125) +enclosingStmt(#22632,#22630) +exprContainers(#22632,#22183) +literals("FunctionPropertyNames","FunctionPropertyNames",#22632) +typedecl(#22632,#22213) #22633=* -tokeninfo(#22633,7,#20001,606,"extends") -#22634=@"loc,{#10000},74,7,74,13" -locations_default(#22634,#10000,74,7,74,13) -hasLocation(#22633,#22634) +scopes(#22633,12) +scopenodes(#22630,#22633) +scopenesting(#22633,#22186) +#22634=@"local_type_name;{T};{#22633}" +local_type_names(#22634,"T",#22633) #22635=* -tokeninfo(#22635,8,#20001,607,"(") -#22636=@"loc,{#10000},74,15,74,15" -locations_default(#22636,#10000,74,15,74,15) -hasLocation(#22635,#22636) +typeexprs(#22635,22,#22630,2,"T") +hasLocation(#22635,#21129) +enclosingStmt(#22635,#22630) +exprContainers(#22635,#22183) +#22636=* +typeexprs(#22636,1,#22635,0,"T") +hasLocation(#22636,#21129) +enclosingStmt(#22636,#22630) +exprContainers(#22636,#22183) +literals("T","T",#22636) +typedecl(#22636,#22634) #22637=* -tokeninfo(#22637,7,#20001,608,"infer") -#22638=@"loc,{#10000},74,16,74,20" -locations_default(#22638,#10000,74,16,74,20) +typeexprs(#22637,8,#22630,1,"{ [K in ... eyof T]") +#22638=@"loc,{#10000},51,35,51,96" +locations_default(#22638,#10000,51,35,51,96) hasLocation(#22637,#22638) +enclosingStmt(#22637,#22630) +exprContainers(#22637,#22183) #22639=* -tokeninfo(#22639,6,#20001,609,"U") -hasLocation(#22639,#20893) -#22640=* -tokeninfo(#22640,8,#20001,610,")") -#22641=@"loc,{#10000},74,23,74,23" -locations_default(#22641,#10000,74,23,74,23) -hasLocation(#22640,#22641) -#22642=* -tokeninfo(#22642,8,#20001,611,"[") -#22643=@"loc,{#10000},74,24,74,24" -locations_default(#22643,#10000,74,24,74,24) -hasLocation(#22642,#22643) -#22644=* -tokeninfo(#22644,8,#20001,612,"]") -#22645=@"loc,{#10000},74,25,74,25" -locations_default(#22645,#10000,74,25,74,25) -hasLocation(#22644,#22645) +typeexprs(#22639,27,#22637,0,"{ [K in ... never }") +#22640=@"loc,{#10000},51,35,51,87" +locations_default(#22640,#10000,51,35,51,87) +hasLocation(#22639,#22640) +enclosingStmt(#22639,#22630) +exprContainers(#22639,#22183) +#22641=* +scopes(#22641,13) +scopenodes(#22639,#22641) +scopenesting(#22641,#22633) +#22642=@"local_type_name;{K};{#22641}" +local_type_names(#22642,"K",#22641) +#22643=* +typeexprs(#22643,22,#22639,0,"K in keyof T") +#22644=@"loc,{#10000},51,38,51,49" +locations_default(#22644,#10000,51,38,51,49) +hasLocation(#22643,#22644) +enclosingStmt(#22643,#22630) +exprContainers(#22643,#22183) +#22645=* +typeexprs(#22645,1,#22643,0,"K") +hasLocation(#22645,#21139) +enclosingStmt(#22645,#22630) +exprContainers(#22645,#22183) +literals("K","K",#22645) +typedecl(#22645,#22642) #22646=* -tokeninfo(#22646,8,#20001,613,"?") -#22647=@"loc,{#10000},74,27,74,27" -locations_default(#22647,#10000,74,27,74,27) +typeexprs(#22646,12,#22643,1,"keyof T") +#22647=@"loc,{#10000},51,43,51,49" +locations_default(#22647,#10000,51,43,51,49) hasLocation(#22646,#22647) +enclosingStmt(#22646,#22630) +exprContainers(#22646,#22183) #22648=* -tokeninfo(#22648,6,#20001,614,"U") -hasLocation(#22648,#20896) +typeexprs(#22648,0,#22646,0,"T") +hasLocation(#22648,#21145) +enclosingStmt(#22648,#22630) +exprContainers(#22648,#22183) +literals("T","T",#22648) +typebind(#22648,#22634) #22649=* -tokeninfo(#22649,8,#20001,615,":") -#22650=@"loc,{#10000},74,31,74,31" -locations_default(#22650,#10000,74,31,74,31) +typeexprs(#22649,28,#22639,1,"T[K] ex ... : never") +#22650=@"loc,{#10000},51,53,51,85" +locations_default(#22650,#10000,51,53,51,85) hasLocation(#22649,#22650) +enclosingStmt(#22649,#22630) +exprContainers(#22649,#22183) #22651=* -tokeninfo(#22651,6,#20001,616,"T") -hasLocation(#22651,#20900) -#22652=* -tokeninfo(#22652,7,#20001,617,"extends") -#22653=@"loc,{#10000},75,7,75,13" -locations_default(#22653,#10000,75,7,75,13) -hasLocation(#22652,#22653) +typeexprs(#22651,8,#22649,0,"T[K]") +#22652=@"loc,{#10000},51,53,51,56" +locations_default(#22652,#10000,51,53,51,56) +hasLocation(#22651,#22652) +enclosingStmt(#22651,#22630) +exprContainers(#22651,#22183) +#22653=* +typeexprs(#22653,0,#22651,0,"T") +hasLocation(#22653,#21151) +enclosingStmt(#22653,#22630) +exprContainers(#22653,#22183) +literals("T","T",#22653) +typebind(#22653,#22634) #22654=* -tokeninfo(#22654,8,#20001,618,"(") -#22655=@"loc,{#10000},75,15,75,15" -locations_default(#22655,#10000,75,15,75,15) -hasLocation(#22654,#22655) +typeexprs(#22654,0,#22651,1,"K") +hasLocation(#22654,#21155) +enclosingStmt(#22654,#22630) +exprContainers(#22654,#22183) +literals("K","K",#22654) +typebind(#22654,#22642) +#22655=* +typeexprs(#22655,0,#22649,1,"Function") +hasLocation(#22655,#21161) +enclosingStmt(#22655,#22630) +exprContainers(#22655,#22183) +literals("Function","Function",#22655) #22656=* -tokeninfo(#22656,8,#20001,619,"...") -#22657=@"loc,{#10000},75,16,75,18" -locations_default(#22657,#10000,75,16,75,18) -hasLocation(#22656,#22657) +typeexprs(#22656,0,#22649,2,"K") +hasLocation(#22656,#21165) +enclosingStmt(#22656,#22630) +exprContainers(#22656,#22183) +literals("K","K",#22656) +typebind(#22656,#22642) +#22657=* +typeexprs(#22657,2,#22649,3,"never") +hasLocation(#22657,#21169) +enclosingStmt(#22657,#22630) +exprContainers(#22657,#22183) +literals("never","never",#22657) #22658=* -tokeninfo(#22658,6,#20001,620,"args") -hasLocation(#22658,#20909) -#22659=* -tokeninfo(#22659,8,#20001,621,":") -#22660=@"loc,{#10000},75,23,75,23" -locations_default(#22660,#10000,75,23,75,23) -hasLocation(#22659,#22660) +typeexprs(#22658,12,#22637,1,"keyof T") +#22659=@"loc,{#10000},51,89,51,95" +locations_default(#22659,#10000,51,89,51,95) +hasLocation(#22658,#22659) +enclosingStmt(#22658,#22630) +exprContainers(#22658,#22183) +#22660=* +typeexprs(#22660,0,#22658,0,"T") +hasLocation(#22660,#21177) +enclosingStmt(#22660,#22630) +exprContainers(#22660,#22183) +literals("T","T",#22660) +typebind(#22660,#22634) #22661=* -tokeninfo(#22661,7,#20001,622,"any") -hasLocation(#22661,#20919) -#22662=* -tokeninfo(#22662,8,#20001,623,"[") -#22663=@"loc,{#10000},75,28,75,28" -locations_default(#22663,#10000,75,28,75,28) -hasLocation(#22662,#22663) +stmts(#22661,35,#22183,27,"type Fu ... es>;") +#22662=@"loc,{#10000},52,3,52,65" +locations_default(#22662,#10000,52,3,52,65) +hasLocation(#22661,#22662) +stmtContainers(#22661,#22183) +#22663=* +typeexprs(#22663,1,#22661,0,"FunctionProperties") +hasLocation(#22663,#21185) +enclosingStmt(#22663,#22661) +exprContainers(#22663,#22183) +literals("FunctionProperties","FunctionProperties",#22663) +typedecl(#22663,#22214) #22664=* -tokeninfo(#22664,8,#20001,624,"]") -#22665=@"loc,{#10000},75,29,75,29" -locations_default(#22665,#10000,75,29,75,29) -hasLocation(#22664,#22665) +scopes(#22664,12) +scopenodes(#22661,#22664) +scopenesting(#22664,#22186) +#22665=@"local_type_name;{T};{#22664}" +local_type_names(#22665,"T",#22664) #22666=* -tokeninfo(#22666,8,#20001,625,")") -#22667=@"loc,{#10000},75,30,75,30" -locations_default(#22667,#10000,75,30,75,30) -hasLocation(#22666,#22667) +typeexprs(#22666,22,#22661,2,"T") +hasLocation(#22666,#21189) +enclosingStmt(#22666,#22661) +exprContainers(#22666,#22183) +#22667=* +typeexprs(#22667,1,#22666,0,"T") +hasLocation(#22667,#21189) +enclosingStmt(#22667,#22661) +exprContainers(#22667,#22183) +literals("T","T",#22667) +typedecl(#22667,#22665) #22668=* -tokeninfo(#22668,8,#20001,626,"=>") -#22669=@"loc,{#10000},75,32,75,33" -locations_default(#22669,#10000,75,32,75,33) +typeexprs(#22668,14,#22661,1,"Pick>") +#22669=@"loc,{#10000},52,32,52,64" +locations_default(#22669,#10000,52,32,52,64) hasLocation(#22668,#22669) +enclosingStmt(#22668,#22661) +exprContainers(#22668,#22183) #22670=* -tokeninfo(#22670,7,#20001,627,"infer") -#22671=@"loc,{#10000},75,35,75,39" -locations_default(#22671,#10000,75,35,75,39) -hasLocation(#22670,#22671) +typeexprs(#22670,0,#22668,-1,"Pick") +hasLocation(#22670,#21195) +enclosingStmt(#22670,#22661) +exprContainers(#22670,#22183) +literals("Pick","Pick",#22670) +#22671=* +typeexprs(#22671,0,#22668,0,"T") +hasLocation(#22671,#21199) +enclosingStmt(#22671,#22661) +exprContainers(#22671,#22183) +literals("T","T",#22671) +typebind(#22671,#22665) #22672=* -tokeninfo(#22672,6,#20001,628,"U") -hasLocation(#22672,#20914) -#22673=* -tokeninfo(#22673,8,#20001,629,"?") -#22674=@"loc,{#10000},75,43,75,43" -locations_default(#22674,#10000,75,43,75,43) -hasLocation(#22673,#22674) +typeexprs(#22672,14,#22668,1,"Functio ... ames") +#22673=@"loc,{#10000},52,40,52,63" +locations_default(#22673,#10000,52,40,52,63) +hasLocation(#22672,#22673) +enclosingStmt(#22672,#22661) +exprContainers(#22672,#22183) +#22674=* +typeexprs(#22674,0,#22672,-1,"Functio ... tyNames") +hasLocation(#22674,#21203) +enclosingStmt(#22674,#22661) +exprContainers(#22674,#22183) +literals("FunctionPropertyNames","FunctionPropertyNames",#22674) +typebind(#22674,#22213) #22675=* -tokeninfo(#22675,6,#20001,630,"U") -hasLocation(#22675,#20921) +typeexprs(#22675,0,#22672,0,"T") +hasLocation(#22675,#21207) +enclosingStmt(#22675,#22661) +exprContainers(#22675,#22183) +literals("T","T",#22675) +typebind(#22675,#22665) #22676=* -tokeninfo(#22676,8,#20001,631,":") -#22677=@"loc,{#10000},75,47,75,47" -locations_default(#22677,#10000,75,47,75,47) +stmts(#22676,35,#22183,28,"type No ... yof T];") +#22677=@"loc,{#10000},54,3,54,100" +locations_default(#22677,#10000,54,3,54,100) hasLocation(#22676,#22677) +stmtContainers(#22676,#22183) #22678=* -tokeninfo(#22678,6,#20001,632,"T") -hasLocation(#22678,#20925) +typeexprs(#22678,1,#22676,0,"NonFunc ... tyNames") +hasLocation(#22678,#21217) +enclosingStmt(#22678,#22676) +exprContainers(#22678,#22183) +literals("NonFunctionPropertyNames","NonFunctionPropertyNames",#22678) +typedecl(#22678,#22215) #22679=* -tokeninfo(#22679,7,#20001,633,"extends") -#22680=@"loc,{#10000},76,7,76,13" -locations_default(#22680,#10000,76,7,76,13) -hasLocation(#22679,#22680) +scopes(#22679,12) +scopenodes(#22676,#22679) +scopenesting(#22679,#22186) +#22680=@"local_type_name;{T};{#22679}" +local_type_names(#22680,"T",#22679) #22681=* -tokeninfo(#22681,6,#20001,634,"Promise") -hasLocation(#22681,#20931) +typeexprs(#22681,22,#22676,2,"T") +hasLocation(#22681,#21221) +enclosingStmt(#22681,#22676) +exprContainers(#22681,#22183) #22682=* -tokeninfo(#22682,8,#20001,635,"<") -#22683=@"loc,{#10000},76,22,76,22" -locations_default(#22683,#10000,76,22,76,22) -hasLocation(#22682,#22683) -#22684=* -tokeninfo(#22684,7,#20001,636,"infer") -#22685=@"loc,{#10000},76,23,76,27" -locations_default(#22685,#10000,76,23,76,27) -hasLocation(#22684,#22685) -#22686=* -tokeninfo(#22686,6,#20001,637,"U") -hasLocation(#22686,#20935) +typeexprs(#22682,1,#22681,0,"T") +hasLocation(#22682,#21221) +enclosingStmt(#22682,#22676) +exprContainers(#22682,#22183) +literals("T","T",#22682) +typedecl(#22682,#22680) +#22683=* +typeexprs(#22683,8,#22676,1,"{ [K in ... eyof T]") +#22684=@"loc,{#10000},54,38,54,99" +locations_default(#22684,#10000,54,38,54,99) +hasLocation(#22683,#22684) +enclosingStmt(#22683,#22676) +exprContainers(#22683,#22183) +#22685=* +typeexprs(#22685,27,#22683,0,"{ [K in ... r : K }") +#22686=@"loc,{#10000},54,38,54,90" +locations_default(#22686,#10000,54,38,54,90) +hasLocation(#22685,#22686) +enclosingStmt(#22685,#22676) +exprContainers(#22685,#22183) #22687=* -tokeninfo(#22687,8,#20001,638,">") -#22688=@"loc,{#10000},76,30,76,30" -locations_default(#22688,#10000,76,30,76,30) -hasLocation(#22687,#22688) +scopes(#22687,13) +scopenodes(#22685,#22687) +scopenesting(#22687,#22679) +#22688=@"local_type_name;{K};{#22687}" +local_type_names(#22688,"K",#22687) #22689=* -tokeninfo(#22689,8,#20001,639,"?") -#22690=@"loc,{#10000},76,32,76,32" -locations_default(#22690,#10000,76,32,76,32) +typeexprs(#22689,22,#22685,0,"K in keyof T") +#22690=@"loc,{#10000},54,41,54,52" +locations_default(#22690,#10000,54,41,54,52) hasLocation(#22689,#22690) +enclosingStmt(#22689,#22676) +exprContainers(#22689,#22183) #22691=* -tokeninfo(#22691,6,#20001,640,"U") -hasLocation(#22691,#20938) +typeexprs(#22691,1,#22689,0,"K") +hasLocation(#22691,#21231) +enclosingStmt(#22691,#22676) +exprContainers(#22691,#22183) +literals("K","K",#22691) +typedecl(#22691,#22688) #22692=* -tokeninfo(#22692,8,#20001,641,":") -#22693=@"loc,{#10000},76,36,76,36" -locations_default(#22693,#10000,76,36,76,36) +typeexprs(#22692,12,#22689,1,"keyof T") +#22693=@"loc,{#10000},54,46,54,52" +locations_default(#22693,#10000,54,46,54,52) hasLocation(#22692,#22693) +enclosingStmt(#22692,#22676) +exprContainers(#22692,#22183) #22694=* -tokeninfo(#22694,6,#20001,642,"T") -hasLocation(#22694,#20940) +typeexprs(#22694,0,#22692,0,"T") +hasLocation(#22694,#21237) +enclosingStmt(#22694,#22676) +exprContainers(#22694,#22183) +literals("T","T",#22694) +typebind(#22694,#22680) #22695=* -tokeninfo(#22695,8,#20001,643,";") -#22696=@"loc,{#10000},77,6,77,6" -locations_default(#22696,#10000,77,6,77,6) +typeexprs(#22695,28,#22685,1,"T[K] ex ... ver : K") +#22696=@"loc,{#10000},54,56,54,88" +locations_default(#22696,#10000,54,56,54,88) hasLocation(#22695,#22696) +enclosingStmt(#22695,#22676) +exprContainers(#22695,#22183) #22697=* -tokeninfo(#22697,7,#20001,644,"type") -#22698=@"loc,{#10000},79,3,79,6" -locations_default(#22698,#10000,79,3,79,6) +typeexprs(#22697,8,#22695,0,"T[K]") +#22698=@"loc,{#10000},54,56,54,59" +locations_default(#22698,#10000,54,56,54,59) hasLocation(#22697,#22698) +enclosingStmt(#22697,#22676) +exprContainers(#22697,#22183) #22699=* -tokeninfo(#22699,6,#20001,645,"T0") -hasLocation(#22699,#20944) +typeexprs(#22699,0,#22697,0,"T") +hasLocation(#22699,#21243) +enclosingStmt(#22699,#22676) +exprContainers(#22699,#22183) +literals("T","T",#22699) +typebind(#22699,#22680) #22700=* -tokeninfo(#22700,8,#20001,646,"=") -#22701=@"loc,{#10000},79,11,79,11" -locations_default(#22701,#10000,79,11,79,11) -hasLocation(#22700,#22701) +typeexprs(#22700,0,#22697,1,"K") +hasLocation(#22700,#21247) +enclosingStmt(#22700,#22676) +exprContainers(#22700,#22183) +literals("K","K",#22700) +typebind(#22700,#22688) +#22701=* +typeexprs(#22701,0,#22695,1,"Function") +hasLocation(#22701,#21253) +enclosingStmt(#22701,#22676) +exprContainers(#22701,#22183) +literals("Function","Function",#22701) #22702=* -tokeninfo(#22702,6,#20001,647,"Unpacked") -hasLocation(#22702,#20948) +typeexprs(#22702,2,#22695,2,"never") +hasLocation(#22702,#21257) +enclosingStmt(#22702,#22676) +exprContainers(#22702,#22183) +literals("never","never",#22702) #22703=* -tokeninfo(#22703,8,#20001,648,"<") -#22704=@"loc,{#10000},79,21,79,21" -locations_default(#22704,#10000,79,21,79,21) -hasLocation(#22703,#22704) -#22705=* -tokeninfo(#22705,7,#20001,649,"string") -hasLocation(#22705,#20950) +typeexprs(#22703,0,#22695,3,"K") +hasLocation(#22703,#21261) +enclosingStmt(#22703,#22676) +exprContainers(#22703,#22183) +literals("K","K",#22703) +typebind(#22703,#22688) +#22704=* +typeexprs(#22704,12,#22683,1,"keyof T") +#22705=@"loc,{#10000},54,92,54,98" +locations_default(#22705,#10000,54,92,54,98) +hasLocation(#22704,#22705) +enclosingStmt(#22704,#22676) +exprContainers(#22704,#22183) #22706=* -tokeninfo(#22706,8,#20001,650,">") -#22707=@"loc,{#10000},79,28,79,28" -locations_default(#22707,#10000,79,28,79,28) -hasLocation(#22706,#22707) -#22708=* -tokeninfo(#22708,8,#20001,651,";") -#22709=@"loc,{#10000},79,29,79,29" -locations_default(#22709,#10000,79,29,79,29) -hasLocation(#22708,#22709) +typeexprs(#22706,0,#22704,0,"T") +hasLocation(#22706,#21269) +enclosingStmt(#22706,#22676) +exprContainers(#22706,#22183) +literals("T","T",#22706) +typebind(#22706,#22680) +#22707=* +stmts(#22707,35,#22183,29,"type No ... es>;") +#22708=@"loc,{#10000},55,3,55,71" +locations_default(#22708,#10000,55,3,55,71) +hasLocation(#22707,#22708) +stmtContainers(#22707,#22183) +#22709=* +typeexprs(#22709,1,#22707,0,"NonFunc ... perties") +hasLocation(#22709,#21277) +enclosingStmt(#22709,#22707) +exprContainers(#22709,#22183) +literals("NonFunctionProperties","NonFunctionProperties",#22709) +typedecl(#22709,#22216) #22710=* -tokeninfo(#22710,7,#20001,652,"type") -#22711=@"loc,{#10000},80,3,80,6" -locations_default(#22711,#10000,80,3,80,6) -hasLocation(#22710,#22711) -next_token(#21421,#22710) +scopes(#22710,12) +scopenodes(#22707,#22710) +scopenesting(#22710,#22186) +#22711=@"local_type_name;{T};{#22710}" +local_type_names(#22711,"T",#22710) #22712=* -tokeninfo(#22712,6,#20001,653,"T1") -hasLocation(#22712,#20954) +typeexprs(#22712,22,#22707,2,"T") +hasLocation(#22712,#21281) +enclosingStmt(#22712,#22707) +exprContainers(#22712,#22183) #22713=* -tokeninfo(#22713,8,#20001,654,"=") -#22714=@"loc,{#10000},80,11,80,11" -locations_default(#22714,#10000,80,11,80,11) -hasLocation(#22713,#22714) -#22715=* -tokeninfo(#22715,6,#20001,655,"Unpacked") -hasLocation(#22715,#20958) +typeexprs(#22713,1,#22712,0,"T") +hasLocation(#22713,#21281) +enclosingStmt(#22713,#22707) +exprContainers(#22713,#22183) +literals("T","T",#22713) +typedecl(#22713,#22711) +#22714=* +typeexprs(#22714,14,#22707,1,"Pick>") +#22715=@"loc,{#10000},55,35,55,70" +locations_default(#22715,#10000,55,35,55,70) +hasLocation(#22714,#22715) +enclosingStmt(#22714,#22707) +exprContainers(#22714,#22183) #22716=* -tokeninfo(#22716,8,#20001,656,"<") -#22717=@"loc,{#10000},80,21,80,21" -locations_default(#22717,#10000,80,21,80,21) -hasLocation(#22716,#22717) +typeexprs(#22716,0,#22714,-1,"Pick") +hasLocation(#22716,#21287) +enclosingStmt(#22716,#22707) +exprContainers(#22716,#22183) +literals("Pick","Pick",#22716) +#22717=* +typeexprs(#22717,0,#22714,0,"T") +hasLocation(#22717,#21291) +enclosingStmt(#22717,#22707) +exprContainers(#22717,#22183) +literals("T","T",#22717) +typebind(#22717,#22711) #22718=* -tokeninfo(#22718,7,#20001,657,"string") -hasLocation(#22718,#20962) -#22719=* -tokeninfo(#22719,8,#20001,658,"[") -#22720=@"loc,{#10000},80,28,80,28" -locations_default(#22720,#10000,80,28,80,28) -hasLocation(#22719,#22720) +typeexprs(#22718,14,#22714,1,"NonFunc ... ames") +#22719=@"loc,{#10000},55,43,55,69" +locations_default(#22719,#10000,55,43,55,69) +hasLocation(#22718,#22719) +enclosingStmt(#22718,#22707) +exprContainers(#22718,#22183) +#22720=* +typeexprs(#22720,0,#22718,-1,"NonFunc ... tyNames") +hasLocation(#22720,#21295) +enclosingStmt(#22720,#22707) +exprContainers(#22720,#22183) +literals("NonFunctionPropertyNames","NonFunctionPropertyNames",#22720) +typebind(#22720,#22215) #22721=* -tokeninfo(#22721,8,#20001,659,"]") -#22722=@"loc,{#10000},80,29,80,29" -locations_default(#22722,#10000,80,29,80,29) -hasLocation(#22721,#22722) -#22723=* -tokeninfo(#22723,8,#20001,660,">") -#22724=@"loc,{#10000},80,30,80,30" -locations_default(#22724,#10000,80,30,80,30) -hasLocation(#22723,#22724) +typeexprs(#22721,0,#22718,0,"T") +hasLocation(#22721,#21299) +enclosingStmt(#22721,#22707) +exprContainers(#22721,#22183) +literals("T","T",#22721) +typebind(#22721,#22711) +#22722=* +stmts(#22722,34,#22183,30,"interfa ... id;\n }") +#22723=@"loc,{#10000},57,3,62,3" +locations_default(#22723,#10000,57,3,62,3) +hasLocation(#22722,#22723) +stmtContainers(#22722,#22183) +#22724=* +typeexprs(#22724,1,#22722,0,"Part") +hasLocation(#22724,#21309) +enclosingStmt(#22724,#22722) +exprContainers(#22724,#22183) +literals("Part","Part",#22724) +typedecl(#22724,#22217) #22725=* -tokeninfo(#22725,8,#20001,661,";") -#22726=@"loc,{#10000},80,31,80,31" -locations_default(#22726,#10000,80,31,80,31) +properties(#22725,#22722,2,8,"id: number;") +#22726=@"loc,{#10000},58,7,58,17" +locations_default(#22726,#10000,58,7,58,17) hasLocation(#22725,#22726) #22727=* -tokeninfo(#22727,7,#20001,662,"type") -#22728=@"loc,{#10000},81,3,81,6" -locations_default(#22728,#10000,81,3,81,6) -hasLocation(#22727,#22728) -next_token(#21423,#22727) +exprs(#22727,0,#22725,0,"id") +hasLocation(#22727,#21313) +enclosingStmt(#22727,#22722) +exprContainers(#22727,#22183) +literals("id","id",#22727) +isAbstractMember(#22725) +#22728=* +typeexprs(#22728,2,#22725,2,"number") +hasLocation(#22728,#21317) +enclosingStmt(#22728,#22722) +exprContainers(#22728,#22183) +literals("number","number",#22728) #22729=* -tokeninfo(#22729,6,#20001,663,"T2") -hasLocation(#22729,#20966) -#22730=* -tokeninfo(#22730,8,#20001,664,"=") -#22731=@"loc,{#10000},81,11,81,11" -locations_default(#22731,#10000,81,11,81,11) -hasLocation(#22730,#22731) +properties(#22729,#22722,3,8,"name: string;") +#22730=@"loc,{#10000},59,7,59,19" +locations_default(#22730,#10000,59,7,59,19) +hasLocation(#22729,#22730) +#22731=* +exprs(#22731,0,#22729,0,"name") +hasLocation(#22731,#21321) +enclosingStmt(#22731,#22722) +exprContainers(#22731,#22183) +literals("name","name",#22731) +isAbstractMember(#22729) #22732=* -tokeninfo(#22732,6,#20001,665,"Unpacked") -hasLocation(#22732,#20970) +typeexprs(#22732,2,#22729,2,"string") +hasLocation(#22732,#21325) +enclosingStmt(#22732,#22722) +exprContainers(#22732,#22183) +literals("string","string",#22732) #22733=* -tokeninfo(#22733,8,#20001,666,"<") -#22734=@"loc,{#10000},81,21,81,21" -locations_default(#22734,#10000,81,21,81,21) +properties(#22733,#22722,4,8,"subparts: Part[];") +#22734=@"loc,{#10000},60,7,60,23" +locations_default(#22734,#10000,60,7,60,23) hasLocation(#22733,#22734) #22735=* -tokeninfo(#22735,8,#20001,667,"(") -#22736=@"loc,{#10000},81,22,81,22" -locations_default(#22736,#10000,81,22,81,22) -hasLocation(#22735,#22736) -#22737=* -tokeninfo(#22737,8,#20001,668,")") -#22738=@"loc,{#10000},81,23,81,23" -locations_default(#22738,#10000,81,23,81,23) -hasLocation(#22737,#22738) +exprs(#22735,0,#22733,0,"subparts") +hasLocation(#22735,#21329) +enclosingStmt(#22735,#22722) +exprContainers(#22735,#22183) +literals("subparts","subparts",#22735) +isAbstractMember(#22733) +#22736=* +typeexprs(#22736,6,#22733,2,"Part[]") +#22737=@"loc,{#10000},60,17,60,22" +locations_default(#22737,#10000,60,17,60,22) +hasLocation(#22736,#22737) +enclosingStmt(#22736,#22722) +exprContainers(#22736,#22183) +#22738=* +typeexprs(#22738,0,#22736,0,"Part") +hasLocation(#22738,#21333) +enclosingStmt(#22738,#22722) +exprContainers(#22738,#22183) +literals("Part","Part",#22738) +typebind(#22738,#22217) #22739=* -tokeninfo(#22739,8,#20001,669,"=>") -#22740=@"loc,{#10000},81,25,81,26" -locations_default(#22740,#10000,81,25,81,26) +properties(#22739,#22722,5,0,"updateP ... : void;") +#22740=@"loc,{#10000},61,7,61,40" +locations_default(#22740,#10000,61,7,61,40) hasLocation(#22739,#22740) #22741=* -tokeninfo(#22741,7,#20001,670,"string") -hasLocation(#22741,#20977) +exprs(#22741,0,#22739,0,"updatePart") +hasLocation(#22741,#21341) +enclosingStmt(#22741,#22722) +exprContainers(#22741,#22183) +literals("updatePart","updatePart",#22741) #22742=* -tokeninfo(#22742,8,#20001,671,">") -#22743=@"loc,{#10000},81,34,81,34" -locations_default(#22743,#10000,81,34,81,34) -hasLocation(#22742,#22743) -#22744=* -tokeninfo(#22744,8,#20001,672,";") -#22745=@"loc,{#10000},81,35,81,35" -locations_default(#22745,#10000,81,35,81,35) -hasLocation(#22744,#22745) -#22746=* -tokeninfo(#22746,7,#20001,673,"type") -#22747=@"loc,{#10000},82,3,82,6" -locations_default(#22747,#10000,82,3,82,6) -hasLocation(#22746,#22747) -next_token(#21425,#22746) +exprs(#22742,9,#22739,1,"updateP ... : void;") +hasLocation(#22742,#22740) +enclosingStmt(#22742,#22722) +exprContainers(#22742,#22183) +#22743=* +scopes(#22743,1) +scopenodes(#22742,#22743) +scopenesting(#22743,#22186) +#22744=@"var;{newName};{#22743}" +variables(#22744,"newName",#22743) +#22745=* +exprs(#22745,78,#22742,0,"newName") +hasLocation(#22745,#21345) +exprContainers(#22745,#22742) +literals("newName","newName",#22745) +decl(#22745,#22744) +#22746=@"var;{arguments};{#22743}" +variables(#22746,"arguments",#22743) +isArgumentsObject(#22746) +#22747=* +typeexprs(#22747,2,#22742,-3,"void") +hasLocation(#22747,#21355) +exprContainers(#22747,#22742) +literals("void","void",#22747) #22748=* -tokeninfo(#22748,6,#20001,674,"T3") -hasLocation(#22748,#20981) +typeexprs(#22748,2,#22742,-6,"string") +hasLocation(#22748,#21349) +exprContainers(#22748,#22742) +literals("string","string",#22748) +isMethod(#22739) +isAbstractMember(#22739) #22749=* -tokeninfo(#22749,8,#20001,675,"=") -#22750=@"loc,{#10000},82,11,82,11" -locations_default(#22750,#10000,82,11,82,11) +stmts(#22749,35,#22183,31,"type T4 ... ;") +#22750=@"loc,{#10000},64,3,64,41" +locations_default(#22750,#10000,64,3,64,41) hasLocation(#22749,#22750) +stmtContainers(#22749,#22183) #22751=* -tokeninfo(#22751,6,#20001,676,"Unpacked") -hasLocation(#22751,#20985) +typeexprs(#22751,1,#22749,0,"T40") +hasLocation(#22751,#21363) +enclosingStmt(#22751,#22749) +exprContainers(#22751,#22183) +literals("T40","T40",#22751) +typedecl(#22751,#22218) #22752=* -tokeninfo(#22752,8,#20001,677,"<") -#22753=@"loc,{#10000},82,21,82,21" -locations_default(#22753,#10000,82,21,82,21) +typeexprs(#22752,14,#22749,1,"Functio ... s") +#22753=@"loc,{#10000},64,14,64,40" +locations_default(#22753,#10000,64,14,64,40) hasLocation(#22752,#22753) +enclosingStmt(#22752,#22749) +exprContainers(#22752,#22183) #22754=* -tokeninfo(#22754,6,#20001,678,"Promise") -hasLocation(#22754,#20989) +typeexprs(#22754,0,#22752,-1,"Functio ... tyNames") +hasLocation(#22754,#21367) +enclosingStmt(#22754,#22749) +exprContainers(#22754,#22183) +literals("FunctionPropertyNames","FunctionPropertyNames",#22754) +typebind(#22754,#22213) #22755=* -tokeninfo(#22755,8,#20001,679,"<") -#22756=@"loc,{#10000},82,29,82,29" -locations_default(#22756,#10000,82,29,82,29) -hasLocation(#22755,#22756) -#22757=* -tokeninfo(#22757,7,#20001,680,"string") -hasLocation(#22757,#20991) +typeexprs(#22755,0,#22752,0,"Part") +hasLocation(#22755,#21371) +enclosingStmt(#22755,#22749) +exprContainers(#22755,#22183) +literals("Part","Part",#22755) +typebind(#22755,#22217) +#22756=* +stmts(#22756,35,#22183,32,"type T4 ... ;") +#22757=@"loc,{#10000},65,3,65,44" +locations_default(#22757,#10000,65,3,65,44) +hasLocation(#22756,#22757) +stmtContainers(#22756,#22183) #22758=* -tokeninfo(#22758,8,#20001,681,">") -#22759=@"loc,{#10000},82,36,82,36" -locations_default(#22759,#10000,82,36,82,36) -hasLocation(#22758,#22759) -#22760=* -tokeninfo(#22760,8,#20001,682,">") -#22761=@"loc,{#10000},82,37,82,37" -locations_default(#22761,#10000,82,37,82,37) -hasLocation(#22760,#22761) +typeexprs(#22758,1,#22756,0,"T41") +hasLocation(#22758,#21379) +enclosingStmt(#22758,#22756) +exprContainers(#22758,#22183) +literals("T41","T41",#22758) +typedecl(#22758,#22219) +#22759=* +typeexprs(#22759,14,#22756,1,"NonFunc ... s") +#22760=@"loc,{#10000},65,14,65,43" +locations_default(#22760,#10000,65,14,65,43) +hasLocation(#22759,#22760) +enclosingStmt(#22759,#22756) +exprContainers(#22759,#22183) +#22761=* +typeexprs(#22761,0,#22759,-1,"NonFunc ... tyNames") +hasLocation(#22761,#21383) +enclosingStmt(#22761,#22756) +exprContainers(#22761,#22183) +literals("NonFunctionPropertyNames","NonFunctionPropertyNames",#22761) +typebind(#22761,#22215) #22762=* -tokeninfo(#22762,8,#20001,683,";") -#22763=@"loc,{#10000},82,38,82,38" -locations_default(#22763,#10000,82,38,82,38) -hasLocation(#22762,#22763) -#22764=* -tokeninfo(#22764,7,#20001,684,"type") -#22765=@"loc,{#10000},83,3,83,6" -locations_default(#22765,#10000,83,3,83,6) -hasLocation(#22764,#22765) -next_token(#21427,#22764) +typeexprs(#22762,0,#22759,0,"Part") +hasLocation(#22762,#21387) +enclosingStmt(#22762,#22756) +exprContainers(#22762,#22183) +literals("Part","Part",#22762) +typebind(#22762,#22217) +#22763=* +stmts(#22763,35,#22183,33,"type T4 ... ;") +#22764=@"loc,{#10000},66,3,66,38" +locations_default(#22764,#10000,66,3,66,38) +hasLocation(#22763,#22764) +stmtContainers(#22763,#22183) +#22765=* +typeexprs(#22765,1,#22763,0,"T42") +hasLocation(#22765,#21395) +enclosingStmt(#22765,#22763) +exprContainers(#22765,#22183) +literals("T42","T42",#22765) +typedecl(#22765,#22220) #22766=* -tokeninfo(#22766,6,#20001,685,"T4") -hasLocation(#22766,#20995) -#22767=* -tokeninfo(#22767,8,#20001,686,"=") -#22768=@"loc,{#10000},83,11,83,11" -locations_default(#22768,#10000,83,11,83,11) -hasLocation(#22767,#22768) +typeexprs(#22766,14,#22763,1,"Functio ... s") +#22767=@"loc,{#10000},66,14,66,37" +locations_default(#22767,#10000,66,14,66,37) +hasLocation(#22766,#22767) +enclosingStmt(#22766,#22763) +exprContainers(#22766,#22183) +#22768=* +typeexprs(#22768,0,#22766,-1,"FunctionProperties") +hasLocation(#22768,#21399) +enclosingStmt(#22768,#22763) +exprContainers(#22768,#22183) +literals("FunctionProperties","FunctionProperties",#22768) +typebind(#22768,#22214) #22769=* -tokeninfo(#22769,6,#20001,687,"Unpacked") -hasLocation(#22769,#20999) +typeexprs(#22769,0,#22766,0,"Part") +hasLocation(#22769,#21403) +enclosingStmt(#22769,#22763) +exprContainers(#22769,#22183) +literals("Part","Part",#22769) +typebind(#22769,#22217) #22770=* -tokeninfo(#22770,8,#20001,688,"<") -#22771=@"loc,{#10000},83,21,83,21" -locations_default(#22771,#10000,83,21,83,21) +stmts(#22770,35,#22183,34,"type T4 ... ;") +#22771=@"loc,{#10000},67,3,67,41" +locations_default(#22771,#10000,67,3,67,41) hasLocation(#22770,#22771) +stmtContainers(#22770,#22183) #22772=* -tokeninfo(#22772,6,#20001,689,"Promise") -hasLocation(#22772,#21005) +typeexprs(#22772,1,#22770,0,"T43") +hasLocation(#22772,#21411) +enclosingStmt(#22772,#22770) +exprContainers(#22772,#22183) +literals("T43","T43",#22772) +typedecl(#22772,#22221) #22773=* -tokeninfo(#22773,8,#20001,690,"<") -#22774=@"loc,{#10000},83,29,83,29" -locations_default(#22774,#10000,83,29,83,29) +typeexprs(#22773,14,#22770,1,"NonFunc ... s") +#22774=@"loc,{#10000},67,14,67,40" +locations_default(#22774,#10000,67,14,67,40) hasLocation(#22773,#22774) +enclosingStmt(#22773,#22770) +exprContainers(#22773,#22183) #22775=* -tokeninfo(#22775,7,#20001,691,"string") -hasLocation(#22775,#21007) +typeexprs(#22775,0,#22773,-1,"NonFunc ... perties") +hasLocation(#22775,#21415) +enclosingStmt(#22775,#22770) +exprContainers(#22775,#22183) +literals("NonFunctionProperties","NonFunctionProperties",#22775) +typebind(#22775,#22216) #22776=* -tokeninfo(#22776,8,#20001,692,">") -#22777=@"loc,{#10000},83,36,83,36" -locations_default(#22777,#10000,83,36,83,36) -hasLocation(#22776,#22777) -#22778=* -tokeninfo(#22778,8,#20001,693,"[") -#22779=@"loc,{#10000},83,37,83,37" -locations_default(#22779,#10000,83,37,83,37) -hasLocation(#22778,#22779) +typeexprs(#22776,0,#22773,0,"Part") +hasLocation(#22776,#21419) +enclosingStmt(#22776,#22770) +exprContainers(#22776,#22183) +literals("Part","Part",#22776) +typebind(#22776,#22217) +#22777=* +stmts(#22777,35,#22183,35,"type Re ... : any;") +#22778=@"loc,{#10000},69,3,69,71" +locations_default(#22778,#10000,69,3,69,71) +hasLocation(#22777,#22778) +stmtContainers(#22777,#22183) +#22779=* +typeexprs(#22779,1,#22777,0,"ReturnType") +hasLocation(#22779,#21427) +enclosingStmt(#22779,#22777) +exprContainers(#22779,#22183) +literals("ReturnType","ReturnType",#22779) +typedecl(#22779,#22222) #22780=* -tokeninfo(#22780,8,#20001,694,"]") -#22781=@"loc,{#10000},83,38,83,38" -locations_default(#22781,#10000,83,38,83,38) -hasLocation(#22780,#22781) +scopes(#22780,12) +scopenodes(#22777,#22780) +scopenesting(#22780,#22186) +#22781=@"local_type_name;{T};{#22780}" +local_type_names(#22781,"T",#22780) #22782=* -tokeninfo(#22782,8,#20001,695,">") -#22783=@"loc,{#10000},83,39,83,39" -locations_default(#22783,#10000,83,39,83,39) -hasLocation(#22782,#22783) +typeexprs(#22782,22,#22777,2,"T") +hasLocation(#22782,#21431) +enclosingStmt(#22782,#22777) +exprContainers(#22782,#22183) +#22783=* +typeexprs(#22783,1,#22782,0,"T") +hasLocation(#22783,#21431) +enclosingStmt(#22783,#22777) +exprContainers(#22783,#22183) +literals("T","T",#22783) +typedecl(#22783,#22781) #22784=* -tokeninfo(#22784,8,#20001,696,";") -#22785=@"loc,{#10000},83,40,83,40" -locations_default(#22785,#10000,83,40,83,40) +typeexprs(#22784,28,#22777,1,"T exten ... R : any") +#22785=@"loc,{#10000},69,24,69,70" +locations_default(#22785,#10000,69,24,69,70) hasLocation(#22784,#22785) +enclosingStmt(#22784,#22777) +exprContainers(#22784,#22183) #22786=* -tokeninfo(#22786,7,#20001,697,"type") -#22787=@"loc,{#10000},84,3,84,6" -locations_default(#22787,#10000,84,3,84,6) -hasLocation(#22786,#22787) -next_token(#21429,#22786) -#22788=* -tokeninfo(#22788,6,#20001,698,"T5") -hasLocation(#22788,#21011) +typeexprs(#22786,0,#22784,0,"T") +hasLocation(#22786,#21437) +enclosingStmt(#22786,#22777) +exprContainers(#22786,#22183) +literals("T","T",#22786) +typebind(#22786,#22781) +#22787=* +scopes(#22787,16) +scopenodes(#22784,#22787) +scopenesting(#22787,#22780) +#22788=@"local_type_name;{R};{#22787}" +local_type_names(#22788,"R",#22787) #22789=* -tokeninfo(#22789,8,#20001,699,"=") -#22790=@"loc,{#10000},84,11,84,11" -locations_default(#22790,#10000,84,11,84,11) +typeexprs(#22789,23,#22784,1,"(...arg ... infer R") +#22790=@"loc,{#10000},69,34,69,60" +locations_default(#22790,#10000,69,34,69,60) hasLocation(#22789,#22790) +enclosingStmt(#22789,#22777) +exprContainers(#22789,#22183) #22791=* -tokeninfo(#22791,6,#20001,700,"Unpacked") -hasLocation(#22791,#21015) +exprs(#22791,9,#22789,0,"(...arg ... infer R") +hasLocation(#22791,#22790) +enclosingStmt(#22791,#22777) +exprContainers(#22791,#22183) #22792=* -tokeninfo(#22792,8,#20001,701,"<") -#22793=@"loc,{#10000},84,21,84,21" -locations_default(#22793,#10000,84,21,84,21) -hasLocation(#22792,#22793) +scopes(#22792,1) +scopenodes(#22791,#22792) +scopenesting(#22792,#22787) +#22793=@"var;{args};{#22792}" +variables(#22793,"args",#22792) #22794=* -tokeninfo(#22794,6,#20001,702,"Unpacked") -hasLocation(#22794,#21019) -#22795=* -tokeninfo(#22795,8,#20001,703,"<") -#22796=@"loc,{#10000},84,30,84,30" -locations_default(#22796,#10000,84,30,84,30) -hasLocation(#22795,#22796) -#22797=* -tokeninfo(#22797,6,#20001,704,"Promise") -hasLocation(#22797,#21025) +exprs(#22794,78,#22791,0,"args") +hasLocation(#22794,#21445) +exprContainers(#22794,#22791) +literals("args","args",#22794) +decl(#22794,#22793) +#22795=@"var;{arguments};{#22792}" +variables(#22795,"arguments",#22792) +isArgumentsObject(#22795) +#22796=* +typeexprs(#22796,29,#22791,-3,"infer R") +#22797=@"loc,{#10000},69,54,69,60" +locations_default(#22797,#10000,69,54,69,60) +hasLocation(#22796,#22797) +exprContainers(#22796,#22791) #22798=* -tokeninfo(#22798,8,#20001,705,"<") -#22799=@"loc,{#10000},84,38,84,38" -locations_default(#22799,#10000,84,38,84,38) -hasLocation(#22798,#22799) +typeexprs(#22798,22,#22796,0,"R") +hasLocation(#22798,#21461) +exprContainers(#22798,#22791) +#22799=* +typeexprs(#22799,1,#22798,0,"R") +hasLocation(#22799,#21461) +exprContainers(#22799,#22791) +literals("R","R",#22799) +typedecl(#22799,#22788) #22800=* -tokeninfo(#22800,7,#20001,706,"string") -hasLocation(#22800,#21027) -#22801=* -tokeninfo(#22801,8,#20001,707,">") -#22802=@"loc,{#10000},84,45,84,45" -locations_default(#22802,#10000,84,45,84,45) -hasLocation(#22801,#22802) +typeexprs(#22800,6,#22791,-6,"any[]") +#22801=@"loc,{#10000},69,44,69,48" +locations_default(#22801,#10000,69,44,69,48) +hasLocation(#22800,#22801) +exprContainers(#22800,#22791) +#22802=* +typeexprs(#22802,2,#22800,0,"any") +hasLocation(#22802,#21449) +exprContainers(#22802,#22791) +literals("any","any",#22802) +hasRestParameter(#22791) #22803=* -tokeninfo(#22803,8,#20001,708,"[") -#22804=@"loc,{#10000},84,46,84,46" -locations_default(#22804,#10000,84,46,84,46) -hasLocation(#22803,#22804) +typeexprs(#22803,0,#22784,2,"R") +hasLocation(#22803,#21465) +enclosingStmt(#22803,#22777) +exprContainers(#22803,#22183) +literals("R","R",#22803) +typebind(#22803,#22788) +#22804=* +typeexprs(#22804,2,#22784,3,"any") +hasLocation(#22804,#21469) +enclosingStmt(#22804,#22777) +exprContainers(#22804,#22183) +literals("any","any",#22804) +isInstantiated(#22183) #22805=* -tokeninfo(#22805,8,#20001,709,"]") -#22806=@"loc,{#10000},84,47,84,47" -locations_default(#22806,#10000,84,47,84,47) +stmts(#22805,31,#20001,1,"namespa ... any;\n}") +#22806=@"loc,{#10000},72,1,101,1" +locations_default(#22806,#10000,72,1,101,1) hasLocation(#22805,#22806) +stmtContainers(#22805,#20001) #22807=* -tokeninfo(#22807,8,#20001,710,">") -#22808=@"loc,{#10000},84,48,84,48" -locations_default(#22808,#10000,84,48,84,48) -hasLocation(#22807,#22808) -#22809=* -tokeninfo(#22809,8,#20001,711,">") -#22810=@"loc,{#10000},84,49,84,49" -locations_default(#22810,#10000,84,49,84,49) -hasLocation(#22809,#22810) -#22811=* -tokeninfo(#22811,8,#20001,712,";") -#22812=@"loc,{#10000},84,50,84,50" -locations_default(#22812,#10000,84,50,84,50) -hasLocation(#22811,#22812) -#22813=* -tokeninfo(#22813,7,#20001,713,"type") -#22814=@"loc,{#10000},86,3,86,6" -locations_default(#22814,#10000,86,3,86,6) -hasLocation(#22813,#22814) -next_token(#21431,#22813) -#22815=* -tokeninfo(#22815,6,#20001,714,"Foo") -hasLocation(#22815,#21031) -#22816=* -tokeninfo(#22816,8,#20001,715,"<") -#22817=@"loc,{#10000},86,11,86,11" -locations_default(#22817,#10000,86,11,86,11) -hasLocation(#22816,#22817) -#22818=* -tokeninfo(#22818,6,#20001,716,"T") -hasLocation(#22818,#21035) -#22819=* -tokeninfo(#22819,8,#20001,717,">") -#22820=@"loc,{#10000},86,13,86,13" -locations_default(#22820,#10000,86,13,86,13) -hasLocation(#22819,#22820) -#22821=* -tokeninfo(#22821,8,#20001,718,"=") -#22822=@"loc,{#10000},86,15,86,15" -locations_default(#22822,#10000,86,15,86,15) -hasLocation(#22821,#22822) -#22823=* -tokeninfo(#22823,6,#20001,719,"T") -hasLocation(#22823,#21040) -#22824=* -tokeninfo(#22824,7,#20001,720,"extends") -#22825=@"loc,{#10000},86,19,86,25" -locations_default(#22825,#10000,86,19,86,25) -hasLocation(#22824,#22825) -#22826=* -tokeninfo(#22826,8,#20001,721,"{") -#22827=@"loc,{#10000},86,27,86,27" -locations_default(#22827,#10000,86,27,86,27) -hasLocation(#22826,#22827) +exprs(#22807,78,#22805,-1,"ConditionalTypes2") +hasLocation(#22807,#21476) +enclosingStmt(#22807,#22805) +exprContainers(#22807,#20001) +literals("ConditionalTypes2","ConditionalTypes2",#22807) +decl(#22807,#22180) +namespacedecl(#22807,#22182) +#22808=* +scopes(#22808,9) +scopenodes(#22805,#22808) +scopenesting(#22808,#20000) +#22809=@"local_type_name;{Unpacked};{#22808}" +local_type_names(#22809,"Unpacked",#22808) +#22810=@"local_type_name;{T0};{#22808}" +local_type_names(#22810,"T0",#22808) +#22811=@"local_type_name;{T1};{#22808}" +local_type_names(#22811,"T1",#22808) +#22812=@"local_type_name;{T2};{#22808}" +local_type_names(#22812,"T2",#22808) +#22813=@"local_type_name;{T3};{#22808}" +local_type_names(#22813,"T3",#22808) +#22814=@"local_type_name;{T4};{#22808}" +local_type_names(#22814,"T4",#22808) +#22815=@"local_type_name;{T5};{#22808}" +local_type_names(#22815,"T5",#22808) +#22816=@"local_type_name;{Foo};{#22808}" +local_type_names(#22816,"Foo",#22808) +#22817=@"local_type_name;{T10};{#22808}" +local_type_names(#22817,"T10",#22808) +#22818=@"local_type_name;{T11};{#22808}" +local_type_names(#22818,"T11",#22808) +#22819=@"local_type_name;{Bar};{#22808}" +local_type_names(#22819,"Bar",#22808) +#22820=@"local_type_name;{T20};{#22808}" +local_type_names(#22820,"T20",#22808) +#22821=@"local_type_name;{T21};{#22808}" +local_type_names(#22821,"T21",#22808) +#22822=@"local_type_name;{T30};{#22808}" +local_type_names(#22822,"T30",#22808) +#22823=@"local_type_name;{AnyFunction};{#22808}" +local_type_names(#22823,"AnyFunction",#22808) +#22824=@"local_type_name;{ReturnType};{#22808}" +local_type_names(#22824,"ReturnType",#22808) +#22825=* +stmts(#22825,35,#22805,0,"type Un ... \n T;") +#22826=@"loc,{#10000},73,3,77,6" +locations_default(#22826,#10000,73,3,77,6) +hasLocation(#22825,#22826) +stmtContainers(#22825,#22805) +#22827=* +typeexprs(#22827,1,#22825,0,"Unpacked") +hasLocation(#22827,#21482) +enclosingStmt(#22827,#22825) +exprContainers(#22827,#22805) +literals("Unpacked","Unpacked",#22827) +typedecl(#22827,#22809) #22828=* -tokeninfo(#22828,6,#20001,722,"a") -hasLocation(#22828,#21046) -#22829=* -tokeninfo(#22829,8,#20001,723,":") -#22830=@"loc,{#10000},86,30,86,30" -locations_default(#22830,#10000,86,30,86,30) -hasLocation(#22829,#22830) +scopes(#22828,12) +scopenodes(#22825,#22828) +scopenesting(#22828,#22808) +#22829=@"local_type_name;{T};{#22828}" +local_type_names(#22829,"T",#22828) +#22830=* +typeexprs(#22830,22,#22825,2,"T") +hasLocation(#22830,#21486) +enclosingStmt(#22830,#22825) +exprContainers(#22830,#22805) #22831=* -tokeninfo(#22831,7,#20001,724,"infer") -#22832=@"loc,{#10000},86,32,86,36" -locations_default(#22832,#10000,86,32,86,36) -hasLocation(#22831,#22832) -#22833=* -tokeninfo(#22833,6,#20001,725,"U") -hasLocation(#22833,#21050) +typeexprs(#22831,1,#22830,0,"T") +hasLocation(#22831,#21486) +enclosingStmt(#22831,#22825) +exprContainers(#22831,#22805) +literals("T","T",#22831) +typedecl(#22831,#22829) +#22832=* +typeexprs(#22832,28,#22825,1,"T exten ... :\n T") +#22833=@"loc,{#10000},74,5,77,5" +locations_default(#22833,#10000,74,5,77,5) +hasLocation(#22832,#22833) +enclosingStmt(#22832,#22825) +exprContainers(#22832,#22805) #22834=* -tokeninfo(#22834,8,#20001,726,",") -#22835=@"loc,{#10000},86,39,86,39" -locations_default(#22835,#10000,86,39,86,39) -hasLocation(#22834,#22835) -#22836=* -tokeninfo(#22836,6,#20001,727,"b") -hasLocation(#22836,#21055) +typeexprs(#22834,0,#22832,0,"T") +hasLocation(#22834,#21492) +enclosingStmt(#22834,#22825) +exprContainers(#22834,#22805) +literals("T","T",#22834) +typebind(#22834,#22829) +#22835=* +scopes(#22835,16) +scopenodes(#22832,#22835) +scopenesting(#22835,#22828) +#22836=@"local_type_name;{U};{#22835}" +local_type_names(#22836,"U",#22835) #22837=* -tokeninfo(#22837,8,#20001,728,":") -#22838=@"loc,{#10000},86,42,86,42" -locations_default(#22838,#10000,86,42,86,42) +typeexprs(#22837,6,#22832,1,"(infer U)[]") +#22838=@"loc,{#10000},74,15,74,25" +locations_default(#22838,#10000,74,15,74,25) hasLocation(#22837,#22838) +enclosingStmt(#22837,#22825) +exprContainers(#22837,#22805) #22839=* -tokeninfo(#22839,7,#20001,729,"infer") -#22840=@"loc,{#10000},86,44,86,48" -locations_default(#22840,#10000,86,44,86,48) +typeexprs(#22839,10,#22837,0,"(infer U)") +#22840=@"loc,{#10000},74,15,74,23" +locations_default(#22840,#10000,74,15,74,23) hasLocation(#22839,#22840) +enclosingStmt(#22839,#22825) +exprContainers(#22839,#22805) #22841=* -tokeninfo(#22841,6,#20001,730,"U") -hasLocation(#22841,#21059) -#22842=* -tokeninfo(#22842,8,#20001,731,"}") -#22843=@"loc,{#10000},86,52,86,52" -locations_default(#22843,#10000,86,52,86,52) -hasLocation(#22842,#22843) +typeexprs(#22841,29,#22839,0,"infer U") +#22842=@"loc,{#10000},74,16,74,22" +locations_default(#22842,#10000,74,16,74,22) +hasLocation(#22841,#22842) +enclosingStmt(#22841,#22825) +exprContainers(#22841,#22805) +#22843=* +typeexprs(#22843,22,#22841,0,"U") +hasLocation(#22843,#21500) +enclosingStmt(#22843,#22825) +exprContainers(#22843,#22805) #22844=* -tokeninfo(#22844,8,#20001,732,"?") -#22845=@"loc,{#10000},86,54,86,54" -locations_default(#22845,#10000,86,54,86,54) -hasLocation(#22844,#22845) +typeexprs(#22844,1,#22843,0,"U") +hasLocation(#22844,#21500) +enclosingStmt(#22844,#22825) +exprContainers(#22844,#22805) +literals("U","U",#22844) +typedecl(#22844,#22836) +#22845=* +typeexprs(#22845,0,#22832,2,"U") +hasLocation(#22845,#21510) +enclosingStmt(#22845,#22825) +exprContainers(#22845,#22805) +literals("U","U",#22845) +typebind(#22845,#22836) #22846=* -tokeninfo(#22846,6,#20001,733,"U") -hasLocation(#22846,#21062) -#22847=* -tokeninfo(#22847,8,#20001,734,":") -#22848=@"loc,{#10000},86,58,86,58" -locations_default(#22848,#10000,86,58,86,58) -hasLocation(#22847,#22848) +typeexprs(#22846,28,#22832,3,"T exten ... :\n T") +#22847=@"loc,{#10000},75,5,77,5" +locations_default(#22847,#10000,75,5,77,5) +hasLocation(#22846,#22847) +enclosingStmt(#22846,#22825) +exprContainers(#22846,#22805) +#22848=* +typeexprs(#22848,0,#22846,0,"T") +hasLocation(#22848,#21514) +enclosingStmt(#22848,#22825) +exprContainers(#22848,#22805) +literals("T","T",#22848) +typebind(#22848,#22829) #22849=* -tokeninfo(#22849,7,#20001,735,"never") -hasLocation(#22849,#21064) -#22850=* -tokeninfo(#22850,8,#20001,736,";") -#22851=@"loc,{#10000},86,65,86,65" -locations_default(#22851,#10000,86,65,86,65) -hasLocation(#22850,#22851) -#22852=* -tokeninfo(#22852,7,#20001,737,"type") -#22853=@"loc,{#10000},87,3,87,6" -locations_default(#22853,#10000,87,3,87,6) -hasLocation(#22852,#22853) +scopes(#22849,16) +scopenodes(#22846,#22849) +scopenesting(#22849,#22828) +#22850=@"local_type_name;{U};{#22849}" +local_type_names(#22850,"U",#22849) +#22851=* +typeexprs(#22851,23,#22846,1,"(...arg ... infer U") +#22852=@"loc,{#10000},75,15,75,41" +locations_default(#22852,#10000,75,15,75,41) +hasLocation(#22851,#22852) +enclosingStmt(#22851,#22825) +exprContainers(#22851,#22805) +#22853=* +exprs(#22853,9,#22851,0,"(...arg ... infer U") +hasLocation(#22853,#22852) +enclosingStmt(#22853,#22825) +exprContainers(#22853,#22805) #22854=* -tokeninfo(#22854,6,#20001,738,"T10") -hasLocation(#22854,#21068) -#22855=* -tokeninfo(#22855,8,#20001,739,"=") -#22856=@"loc,{#10000},87,12,87,12" -locations_default(#22856,#10000,87,12,87,12) -hasLocation(#22855,#22856) -#22857=* -tokeninfo(#22857,6,#20001,740,"Foo") -hasLocation(#22857,#21072) +scopes(#22854,1) +scopenodes(#22853,#22854) +scopenesting(#22854,#22849) +#22855=@"var;{args};{#22854}" +variables(#22855,"args",#22854) +#22856=* +exprs(#22856,78,#22853,0,"args") +hasLocation(#22856,#21522) +exprContainers(#22856,#22853) +literals("args","args",#22856) +decl(#22856,#22855) +#22857=@"var;{arguments};{#22854}" +variables(#22857,"arguments",#22854) +isArgumentsObject(#22857) #22858=* -tokeninfo(#22858,8,#20001,741,"<") -#22859=@"loc,{#10000},87,17,87,17" -locations_default(#22859,#10000,87,17,87,17) +typeexprs(#22858,29,#22853,-3,"infer U") +#22859=@"loc,{#10000},75,35,75,41" +locations_default(#22859,#10000,75,35,75,41) hasLocation(#22858,#22859) +exprContainers(#22858,#22853) #22860=* -tokeninfo(#22860,8,#20001,742,"{") -#22861=@"loc,{#10000},87,18,87,18" -locations_default(#22861,#10000,87,18,87,18) -hasLocation(#22860,#22861) +typeexprs(#22860,22,#22858,0,"U") +hasLocation(#22860,#21538) +exprContainers(#22860,#22853) +#22861=* +typeexprs(#22861,1,#22860,0,"U") +hasLocation(#22861,#21538) +exprContainers(#22861,#22853) +literals("U","U",#22861) +typedecl(#22861,#22850) #22862=* -tokeninfo(#22862,6,#20001,743,"a") -hasLocation(#22862,#21078) -#22863=* -tokeninfo(#22863,8,#20001,744,":") -#22864=@"loc,{#10000},87,21,87,21" -locations_default(#22864,#10000,87,21,87,21) -hasLocation(#22863,#22864) +typeexprs(#22862,6,#22853,-6,"any[]") +#22863=@"loc,{#10000},75,25,75,29" +locations_default(#22863,#10000,75,25,75,29) +hasLocation(#22862,#22863) +exprContainers(#22862,#22853) +#22864=* +typeexprs(#22864,2,#22862,0,"any") +hasLocation(#22864,#21526) +exprContainers(#22864,#22853) +literals("any","any",#22864) +hasRestParameter(#22853) #22865=* -tokeninfo(#22865,7,#20001,745,"string") -hasLocation(#22865,#21080) +typeexprs(#22865,0,#22846,2,"U") +hasLocation(#22865,#21542) +enclosingStmt(#22865,#22825) +exprContainers(#22865,#22805) +literals("U","U",#22865) +typebind(#22865,#22850) #22866=* -tokeninfo(#22866,8,#20001,746,",") -#22867=@"loc,{#10000},87,29,87,29" -locations_default(#22867,#10000,87,29,87,29) +typeexprs(#22866,28,#22846,3,"T exten ... :\n T") +#22867=@"loc,{#10000},76,5,77,5" +locations_default(#22867,#10000,76,5,77,5) hasLocation(#22866,#22867) +enclosingStmt(#22866,#22825) +exprContainers(#22866,#22805) #22868=* -tokeninfo(#22868,6,#20001,747,"b") -hasLocation(#22868,#21084) +typeexprs(#22868,0,#22866,0,"T") +hasLocation(#22868,#21546) +enclosingStmt(#22868,#22825) +exprContainers(#22868,#22805) +literals("T","T",#22868) +typebind(#22868,#22829) #22869=* -tokeninfo(#22869,8,#20001,748,":") -#22870=@"loc,{#10000},87,32,87,32" -locations_default(#22870,#10000,87,32,87,32) -hasLocation(#22869,#22870) +scopes(#22869,16) +scopenodes(#22866,#22869) +scopenesting(#22869,#22828) +#22870=@"local_type_name;{U};{#22869}" +local_type_names(#22870,"U",#22869) #22871=* -tokeninfo(#22871,7,#20001,749,"string") -hasLocation(#22871,#21086) -#22872=* -tokeninfo(#22872,8,#20001,750,"}") -#22873=@"loc,{#10000},87,41,87,41" -locations_default(#22873,#10000,87,41,87,41) -hasLocation(#22872,#22873) +typeexprs(#22871,14,#22866,1,"Promise") +#22872=@"loc,{#10000},76,15,76,30" +locations_default(#22872,#10000,76,15,76,30) +hasLocation(#22871,#22872) +enclosingStmt(#22871,#22825) +exprContainers(#22871,#22805) +#22873=* +typeexprs(#22873,0,#22871,-1,"Promise") +hasLocation(#22873,#21550) +enclosingStmt(#22873,#22825) +exprContainers(#22873,#22805) +literals("Promise","Promise",#22873) #22874=* -tokeninfo(#22874,8,#20001,751,">") -#22875=@"loc,{#10000},87,42,87,42" -locations_default(#22875,#10000,87,42,87,42) +typeexprs(#22874,29,#22871,0,"infer U") +#22875=@"loc,{#10000},76,23,76,29" +locations_default(#22875,#10000,76,23,76,29) hasLocation(#22874,#22875) +enclosingStmt(#22874,#22825) +exprContainers(#22874,#22805) #22876=* -tokeninfo(#22876,8,#20001,752,";") -#22877=@"loc,{#10000},87,43,87,43" -locations_default(#22877,#10000,87,43,87,43) -hasLocation(#22876,#22877) +typeexprs(#22876,22,#22874,0,"U") +hasLocation(#22876,#21556) +enclosingStmt(#22876,#22825) +exprContainers(#22876,#22805) +#22877=* +typeexprs(#22877,1,#22876,0,"U") +hasLocation(#22877,#21556) +enclosingStmt(#22877,#22825) +exprContainers(#22877,#22805) +literals("U","U",#22877) +typedecl(#22877,#22870) #22878=* -tokeninfo(#22878,7,#20001,753,"type") -#22879=@"loc,{#10000},88,3,88,6" -locations_default(#22879,#10000,88,3,88,6) -hasLocation(#22878,#22879) -next_token(#21433,#22878) +typeexprs(#22878,0,#22866,2,"U") +hasLocation(#22878,#21562) +enclosingStmt(#22878,#22825) +exprContainers(#22878,#22805) +literals("U","U",#22878) +typebind(#22878,#22870) +#22879=* +typeexprs(#22879,0,#22866,3,"T") +hasLocation(#22879,#21566) +enclosingStmt(#22879,#22825) +exprContainers(#22879,#22805) +literals("T","T",#22879) +typebind(#22879,#22829) #22880=* -tokeninfo(#22880,6,#20001,754,"T11") -hasLocation(#22880,#21090) -#22881=* -tokeninfo(#22881,8,#20001,755,"=") -#22882=@"loc,{#10000},88,12,88,12" -locations_default(#22882,#10000,88,12,88,12) -hasLocation(#22881,#22882) +stmts(#22880,35,#22805,1,"type T0 ... tring>;") +#22881=@"loc,{#10000},79,3,79,29" +locations_default(#22881,#10000,79,3,79,29) +hasLocation(#22880,#22881) +stmtContainers(#22880,#22805) +#22882=* +typeexprs(#22882,1,#22880,0,"T0") +hasLocation(#22882,#21572) +enclosingStmt(#22882,#22880) +exprContainers(#22882,#22805) +literals("T0","T0",#22882) +typedecl(#22882,#22810) #22883=* -tokeninfo(#22883,6,#20001,756,"Foo") -hasLocation(#22883,#21094) -#22884=* -tokeninfo(#22884,8,#20001,757,"<") -#22885=@"loc,{#10000},88,17,88,17" -locations_default(#22885,#10000,88,17,88,17) -hasLocation(#22884,#22885) +typeexprs(#22883,14,#22880,1,"Unpacked") +#22884=@"loc,{#10000},79,13,79,28" +locations_default(#22884,#10000,79,13,79,28) +hasLocation(#22883,#22884) +enclosingStmt(#22883,#22880) +exprContainers(#22883,#22805) +#22885=* +typeexprs(#22885,0,#22883,-1,"Unpacked") +hasLocation(#22885,#21576) +enclosingStmt(#22885,#22880) +exprContainers(#22885,#22805) +literals("Unpacked","Unpacked",#22885) +typebind(#22885,#22809) #22886=* -tokeninfo(#22886,8,#20001,758,"{") -#22887=@"loc,{#10000},88,18,88,18" -locations_default(#22887,#10000,88,18,88,18) -hasLocation(#22886,#22887) -#22888=* -tokeninfo(#22888,6,#20001,759,"a") -hasLocation(#22888,#21100) +typeexprs(#22886,2,#22883,0,"string") +hasLocation(#22886,#21580) +enclosingStmt(#22886,#22880) +exprContainers(#22886,#22805) +literals("string","string",#22886) +#22887=* +stmts(#22887,35,#22805,2,"type T1 ... ing[]>;") +#22888=@"loc,{#10000},80,3,80,31" +locations_default(#22888,#10000,80,3,80,31) +hasLocation(#22887,#22888) +stmtContainers(#22887,#22805) #22889=* -tokeninfo(#22889,8,#20001,760,":") -#22890=@"loc,{#10000},88,21,88,21" -locations_default(#22890,#10000,88,21,88,21) -hasLocation(#22889,#22890) -#22891=* -tokeninfo(#22891,7,#20001,761,"string") -hasLocation(#22891,#21102) +typeexprs(#22889,1,#22887,0,"T1") +hasLocation(#22889,#21588) +enclosingStmt(#22889,#22887) +exprContainers(#22889,#22805) +literals("T1","T1",#22889) +typedecl(#22889,#22811) +#22890=* +typeexprs(#22890,14,#22887,1,"Unpacked") +#22891=@"loc,{#10000},80,13,80,30" +locations_default(#22891,#10000,80,13,80,30) +hasLocation(#22890,#22891) +enclosingStmt(#22890,#22887) +exprContainers(#22890,#22805) #22892=* -tokeninfo(#22892,8,#20001,762,",") -#22893=@"loc,{#10000},88,29,88,29" -locations_default(#22893,#10000,88,29,88,29) -hasLocation(#22892,#22893) -#22894=* -tokeninfo(#22894,6,#20001,763,"b") -hasLocation(#22894,#21106) +typeexprs(#22892,0,#22890,-1,"Unpacked") +hasLocation(#22892,#21592) +enclosingStmt(#22892,#22887) +exprContainers(#22892,#22805) +literals("Unpacked","Unpacked",#22892) +typebind(#22892,#22809) +#22893=* +typeexprs(#22893,6,#22890,0,"string[]") +#22894=@"loc,{#10000},80,22,80,29" +locations_default(#22894,#10000,80,22,80,29) +hasLocation(#22893,#22894) +enclosingStmt(#22893,#22887) +exprContainers(#22893,#22805) #22895=* -tokeninfo(#22895,8,#20001,764,":") -#22896=@"loc,{#10000},88,32,88,32" -locations_default(#22896,#10000,88,32,88,32) -hasLocation(#22895,#22896) -#22897=* -tokeninfo(#22897,7,#20001,765,"number") -hasLocation(#22897,#21108) +typeexprs(#22895,2,#22893,0,"string") +hasLocation(#22895,#21596) +enclosingStmt(#22895,#22887) +exprContainers(#22895,#22805) +literals("string","string",#22895) +#22896=* +stmts(#22896,35,#22805,3,"type T2 ... tring>;") +#22897=@"loc,{#10000},81,3,81,35" +locations_default(#22897,#10000,81,3,81,35) +hasLocation(#22896,#22897) +stmtContainers(#22896,#22805) #22898=* -tokeninfo(#22898,8,#20001,766,"}") -#22899=@"loc,{#10000},88,41,88,41" -locations_default(#22899,#10000,88,41,88,41) -hasLocation(#22898,#22899) -#22900=* -tokeninfo(#22900,8,#20001,767,">") -#22901=@"loc,{#10000},88,42,88,42" -locations_default(#22901,#10000,88,42,88,42) -hasLocation(#22900,#22901) +typeexprs(#22898,1,#22896,0,"T2") +hasLocation(#22898,#21608) +enclosingStmt(#22898,#22896) +exprContainers(#22898,#22805) +literals("T2","T2",#22898) +typedecl(#22898,#22812) +#22899=* +typeexprs(#22899,14,#22896,1,"Unpacke ... string>") +#22900=@"loc,{#10000},81,13,81,34" +locations_default(#22900,#10000,81,13,81,34) +hasLocation(#22899,#22900) +enclosingStmt(#22899,#22896) +exprContainers(#22899,#22805) +#22901=* +typeexprs(#22901,0,#22899,-1,"Unpacked") +hasLocation(#22901,#21612) +enclosingStmt(#22901,#22896) +exprContainers(#22901,#22805) +literals("Unpacked","Unpacked",#22901) +typebind(#22901,#22809) #22902=* -tokeninfo(#22902,8,#20001,768,";") -#22903=@"loc,{#10000},88,43,88,43" -locations_default(#22903,#10000,88,43,88,43) +typeexprs(#22902,23,#22899,0,"() => string") +#22903=@"loc,{#10000},81,22,81,33" +locations_default(#22903,#10000,81,22,81,33) hasLocation(#22902,#22903) +enclosingStmt(#22902,#22896) +exprContainers(#22902,#22805) #22904=* -tokeninfo(#22904,7,#20001,769,"type") -#22905=@"loc,{#10000},90,3,90,6" -locations_default(#22905,#10000,90,3,90,6) -hasLocation(#22904,#22905) -next_token(#21435,#22904) -#22906=* -tokeninfo(#22906,6,#20001,770,"Bar") -hasLocation(#22906,#21112) +exprs(#22904,9,#22902,0,"() => string") +hasLocation(#22904,#22903) +enclosingStmt(#22904,#22896) +exprContainers(#22904,#22805) +#22905=* +scopes(#22905,1) +scopenodes(#22904,#22905) +scopenesting(#22905,#22808) +#22906=@"var;{arguments};{#22905}" +variables(#22906,"arguments",#22905) +isArgumentsObject(#22906) #22907=* -tokeninfo(#22907,8,#20001,771,"<") -#22908=@"loc,{#10000},90,11,90,11" -locations_default(#22908,#10000,90,11,90,11) -hasLocation(#22907,#22908) -#22909=* -tokeninfo(#22909,6,#20001,772,"T") -hasLocation(#22909,#21116) +typeexprs(#22907,2,#22904,-3,"string") +hasLocation(#22907,#21622) +exprContainers(#22907,#22904) +literals("string","string",#22907) +#22908=* +stmts(#22908,35,#22805,4,"type T3 ... ring>>;") +#22909=@"loc,{#10000},82,3,82,38" +locations_default(#22909,#10000,82,3,82,38) +hasLocation(#22908,#22909) +stmtContainers(#22908,#22805) #22910=* -tokeninfo(#22910,8,#20001,773,">") -#22911=@"loc,{#10000},90,13,90,13" -locations_default(#22911,#10000,90,13,90,13) -hasLocation(#22910,#22911) -#22912=* -tokeninfo(#22912,8,#20001,774,"=") -#22913=@"loc,{#10000},90,15,90,15" -locations_default(#22913,#10000,90,15,90,15) -hasLocation(#22912,#22913) +typeexprs(#22910,1,#22908,0,"T3") +hasLocation(#22910,#21630) +enclosingStmt(#22910,#22908) +exprContainers(#22910,#22805) +literals("T3","T3",#22910) +typedecl(#22910,#22813) +#22911=* +typeexprs(#22911,14,#22908,1,"Unpacke ... tring>>") +#22912=@"loc,{#10000},82,13,82,37" +locations_default(#22912,#10000,82,13,82,37) +hasLocation(#22911,#22912) +enclosingStmt(#22911,#22908) +exprContainers(#22911,#22805) +#22913=* +typeexprs(#22913,0,#22911,-1,"Unpacked") +hasLocation(#22913,#21634) +enclosingStmt(#22913,#22908) +exprContainers(#22913,#22805) +literals("Unpacked","Unpacked",#22913) +typebind(#22913,#22809) #22914=* -tokeninfo(#22914,6,#20001,775,"T") -hasLocation(#22914,#21121) -#22915=* -tokeninfo(#22915,7,#20001,776,"extends") -#22916=@"loc,{#10000},90,19,90,25" -locations_default(#22916,#10000,90,19,90,25) -hasLocation(#22915,#22916) +typeexprs(#22914,14,#22911,0,"Promise") +#22915=@"loc,{#10000},82,22,82,36" +locations_default(#22915,#10000,82,22,82,36) +hasLocation(#22914,#22915) +enclosingStmt(#22914,#22908) +exprContainers(#22914,#22805) +#22916=* +typeexprs(#22916,0,#22914,-1,"Promise") +hasLocation(#22916,#21638) +enclosingStmt(#22916,#22908) +exprContainers(#22916,#22805) +literals("Promise","Promise",#22916) #22917=* -tokeninfo(#22917,8,#20001,777,"{") -#22918=@"loc,{#10000},90,27,90,27" -locations_default(#22918,#10000,90,27,90,27) -hasLocation(#22917,#22918) -#22919=* -tokeninfo(#22919,6,#20001,778,"a") -hasLocation(#22919,#21127) +typeexprs(#22917,2,#22914,0,"string") +hasLocation(#22917,#21642) +enclosingStmt(#22917,#22908) +exprContainers(#22917,#22805) +literals("string","string",#22917) +#22918=* +stmts(#22918,35,#22805,5,"type T4 ... ng>[]>;") +#22919=@"loc,{#10000},83,3,83,40" +locations_default(#22919,#10000,83,3,83,40) +hasLocation(#22918,#22919) +stmtContainers(#22918,#22805) #22920=* -tokeninfo(#22920,8,#20001,779,":") -#22921=@"loc,{#10000},90,30,90,30" -locations_default(#22921,#10000,90,30,90,30) -hasLocation(#22920,#22921) -#22922=* -tokeninfo(#22922,8,#20001,780,"(") -#22923=@"loc,{#10000},90,32,90,32" -locations_default(#22923,#10000,90,32,90,32) -hasLocation(#22922,#22923) +typeexprs(#22920,1,#22918,0,"T4") +hasLocation(#22920,#21652) +enclosingStmt(#22920,#22918) +exprContainers(#22920,#22805) +literals("T4","T4",#22920) +typedecl(#22920,#22814) +#22921=* +typeexprs(#22921,14,#22918,1,"Unpacke ... ing>[]>") +#22922=@"loc,{#10000},83,13,83,39" +locations_default(#22922,#10000,83,13,83,39) +hasLocation(#22921,#22922) +enclosingStmt(#22921,#22918) +exprContainers(#22921,#22805) +#22923=* +typeexprs(#22923,0,#22921,-1,"Unpacked") +hasLocation(#22923,#21656) +enclosingStmt(#22923,#22918) +exprContainers(#22923,#22805) +literals("Unpacked","Unpacked",#22923) +typebind(#22923,#22809) #22924=* -tokeninfo(#22924,6,#20001,781,"x") -hasLocation(#22924,#21134) -#22925=* -tokeninfo(#22925,8,#20001,782,":") -#22926=@"loc,{#10000},90,34,90,34" -locations_default(#22926,#10000,90,34,90,34) -hasLocation(#22925,#22926) -#22927=* -tokeninfo(#22927,7,#20001,783,"infer") -#22928=@"loc,{#10000},90,36,90,40" -locations_default(#22928,#10000,90,36,90,40) -hasLocation(#22927,#22928) +typeexprs(#22924,6,#22921,0,"Promise[]") +#22925=@"loc,{#10000},83,22,83,38" +locations_default(#22925,#10000,83,22,83,38) +hasLocation(#22924,#22925) +enclosingStmt(#22924,#22918) +exprContainers(#22924,#22805) +#22926=* +typeexprs(#22926,14,#22924,0,"Promise") +#22927=@"loc,{#10000},83,22,83,36" +locations_default(#22927,#10000,83,22,83,36) +hasLocation(#22926,#22927) +enclosingStmt(#22926,#22918) +exprContainers(#22926,#22805) +#22928=* +typeexprs(#22928,0,#22926,-1,"Promise") +hasLocation(#22928,#21660) +enclosingStmt(#22928,#22918) +exprContainers(#22928,#22805) +literals("Promise","Promise",#22928) #22929=* -tokeninfo(#22929,6,#20001,784,"U") -hasLocation(#22929,#21141) +typeexprs(#22929,2,#22926,0,"string") +hasLocation(#22929,#21664) +enclosingStmt(#22929,#22918) +exprContainers(#22929,#22805) +literals("string","string",#22929) #22930=* -tokeninfo(#22930,8,#20001,785,")") -#22931=@"loc,{#10000},90,43,90,43" -locations_default(#22931,#10000,90,43,90,43) +stmts(#22930,35,#22805,6,"type T5 ... g>[]>>;") +#22931=@"loc,{#10000},84,3,84,50" +locations_default(#22931,#10000,84,3,84,50) hasLocation(#22930,#22931) +stmtContainers(#22930,#22805) #22932=* -tokeninfo(#22932,8,#20001,786,"=>") -#22933=@"loc,{#10000},90,45,90,46" -locations_default(#22933,#10000,90,45,90,46) -hasLocation(#22932,#22933) -#22934=* -tokeninfo(#22934,7,#20001,787,"void") -hasLocation(#22934,#21137) +typeexprs(#22932,1,#22930,0,"T5") +hasLocation(#22932,#21678) +enclosingStmt(#22932,#22930) +exprContainers(#22932,#22805) +literals("T5","T5",#22932) +typedecl(#22932,#22815) +#22933=* +typeexprs(#22933,14,#22930,1,"Unpacke ... ng>[]>>") +#22934=@"loc,{#10000},84,13,84,49" +locations_default(#22934,#10000,84,13,84,49) +hasLocation(#22933,#22934) +enclosingStmt(#22933,#22930) +exprContainers(#22933,#22805) #22935=* -tokeninfo(#22935,8,#20001,788,",") -#22936=@"loc,{#10000},90,52,90,52" -locations_default(#22936,#10000,90,52,90,52) -hasLocation(#22935,#22936) -#22937=* -tokeninfo(#22937,6,#20001,789,"b") -hasLocation(#22937,#21146) +typeexprs(#22935,0,#22933,-1,"Unpacked") +hasLocation(#22935,#21682) +enclosingStmt(#22935,#22930) +exprContainers(#22935,#22805) +literals("Unpacked","Unpacked",#22935) +typebind(#22935,#22809) +#22936=* +typeexprs(#22936,14,#22933,0,"Unpacke ... ing>[]>") +#22937=@"loc,{#10000},84,22,84,48" +locations_default(#22937,#10000,84,22,84,48) +hasLocation(#22936,#22937) +enclosingStmt(#22936,#22930) +exprContainers(#22936,#22805) #22938=* -tokeninfo(#22938,8,#20001,790,":") -#22939=@"loc,{#10000},90,55,90,55" -locations_default(#22939,#10000,90,55,90,55) -hasLocation(#22938,#22939) -#22940=* -tokeninfo(#22940,8,#20001,791,"(") -#22941=@"loc,{#10000},90,57,90,57" -locations_default(#22941,#10000,90,57,90,57) -hasLocation(#22940,#22941) -#22942=* -tokeninfo(#22942,6,#20001,792,"x") -hasLocation(#22942,#21153) +typeexprs(#22938,0,#22936,-1,"Unpacked") +hasLocation(#22938,#21686) +enclosingStmt(#22938,#22930) +exprContainers(#22938,#22805) +literals("Unpacked","Unpacked",#22938) +typebind(#22938,#22809) +#22939=* +typeexprs(#22939,6,#22936,0,"Promise[]") +#22940=@"loc,{#10000},84,31,84,47" +locations_default(#22940,#10000,84,31,84,47) +hasLocation(#22939,#22940) +enclosingStmt(#22939,#22930) +exprContainers(#22939,#22805) +#22941=* +typeexprs(#22941,14,#22939,0,"Promise") +#22942=@"loc,{#10000},84,31,84,45" +locations_default(#22942,#10000,84,31,84,45) +hasLocation(#22941,#22942) +enclosingStmt(#22941,#22930) +exprContainers(#22941,#22805) #22943=* -tokeninfo(#22943,8,#20001,793,":") -#22944=@"loc,{#10000},90,59,90,59" -locations_default(#22944,#10000,90,59,90,59) -hasLocation(#22943,#22944) +typeexprs(#22943,0,#22941,-1,"Promise") +hasLocation(#22943,#21690) +enclosingStmt(#22943,#22930) +exprContainers(#22943,#22805) +literals("Promise","Promise",#22943) +#22944=* +typeexprs(#22944,2,#22941,0,"string") +hasLocation(#22944,#21694) +enclosingStmt(#22944,#22930) +exprContainers(#22944,#22805) +literals("string","string",#22944) #22945=* -tokeninfo(#22945,7,#20001,794,"infer") -#22946=@"loc,{#10000},90,61,90,65" -locations_default(#22946,#10000,90,61,90,65) +stmts(#22945,35,#22805,7,"type Fo ... never;") +#22946=@"loc,{#10000},86,3,86,65" +locations_default(#22946,#10000,86,3,86,65) hasLocation(#22945,#22946) +stmtContainers(#22945,#22805) #22947=* -tokeninfo(#22947,6,#20001,795,"U") -hasLocation(#22947,#21160) +typeexprs(#22947,1,#22945,0,"Foo") +hasLocation(#22947,#21710) +enclosingStmt(#22947,#22945) +exprContainers(#22947,#22805) +literals("Foo","Foo",#22947) +typedecl(#22947,#22816) #22948=* -tokeninfo(#22948,8,#20001,796,")") -#22949=@"loc,{#10000},90,68,90,68" -locations_default(#22949,#10000,90,68,90,68) -hasLocation(#22948,#22949) +scopes(#22948,12) +scopenodes(#22945,#22948) +scopenesting(#22948,#22808) +#22949=@"local_type_name;{T};{#22948}" +local_type_names(#22949,"T",#22948) #22950=* -tokeninfo(#22950,8,#20001,797,"=>") -#22951=@"loc,{#10000},90,70,90,71" -locations_default(#22951,#10000,90,70,90,71) -hasLocation(#22950,#22951) +typeexprs(#22950,22,#22945,2,"T") +hasLocation(#22950,#21714) +enclosingStmt(#22950,#22945) +exprContainers(#22950,#22805) +#22951=* +typeexprs(#22951,1,#22950,0,"T") +hasLocation(#22951,#21714) +enclosingStmt(#22951,#22945) +exprContainers(#22951,#22805) +literals("T","T",#22951) +typedecl(#22951,#22949) #22952=* -tokeninfo(#22952,7,#20001,798,"void") -hasLocation(#22952,#21156) -#22953=* -tokeninfo(#22953,8,#20001,799,"}") -#22954=@"loc,{#10000},90,78,90,78" -locations_default(#22954,#10000,90,78,90,78) -hasLocation(#22953,#22954) +typeexprs(#22952,28,#22945,1,"T exten ... : never") +#22953=@"loc,{#10000},86,17,86,64" +locations_default(#22953,#10000,86,17,86,64) +hasLocation(#22952,#22953) +enclosingStmt(#22952,#22945) +exprContainers(#22952,#22805) +#22954=* +typeexprs(#22954,0,#22952,0,"T") +hasLocation(#22954,#21720) +enclosingStmt(#22954,#22945) +exprContainers(#22954,#22805) +literals("T","T",#22954) +typebind(#22954,#22949) #22955=* -tokeninfo(#22955,8,#20001,800,"?") -#22956=@"loc,{#10000},90,80,90,80" -locations_default(#22956,#10000,90,80,90,80) +typeexprs(#22955,21,#22952,1,"{ a: in ... fer U }") +#22956=@"loc,{#10000},86,27,86,52" +locations_default(#22956,#10000,86,27,86,52) hasLocation(#22955,#22956) +enclosingStmt(#22955,#22945) +exprContainers(#22955,#22805) #22957=* -tokeninfo(#22957,6,#20001,801,"U") -hasLocation(#22957,#21163) -#22958=* -tokeninfo(#22958,8,#20001,802,":") -#22959=@"loc,{#10000},90,84,90,84" -locations_default(#22959,#10000,90,84,90,84) -hasLocation(#22958,#22959) +properties(#22957,#22955,0,8,"a: infer U,") +#22958=@"loc,{#10000},86,29,86,39" +locations_default(#22958,#10000,86,29,86,39) +hasLocation(#22957,#22958) +#22959=* +exprs(#22959,0,#22957,0,"a") +hasLocation(#22959,#21726) +enclosingStmt(#22959,#22945) +exprContainers(#22959,#22805) +literals("a","a",#22959) +isAbstractMember(#22957) #22960=* -tokeninfo(#22960,7,#20001,803,"never") -hasLocation(#22960,#21165) -#22961=* -tokeninfo(#22961,8,#20001,804,";") -#22962=@"loc,{#10000},90,91,90,91" -locations_default(#22962,#10000,90,91,90,91) -hasLocation(#22961,#22962) +typeexprs(#22960,29,#22957,2,"infer U") +#22961=@"loc,{#10000},86,32,86,38" +locations_default(#22961,#10000,86,32,86,38) +hasLocation(#22960,#22961) +enclosingStmt(#22960,#22945) +exprContainers(#22960,#22805) +#22962=* +typeexprs(#22962,22,#22960,0,"U") +hasLocation(#22962,#21732) +enclosingStmt(#22962,#22945) +exprContainers(#22962,#22805) #22963=* -tokeninfo(#22963,7,#20001,805,"type") -#22964=@"loc,{#10000},91,3,91,6" -locations_default(#22964,#10000,91,3,91,6) -hasLocation(#22963,#22964) -#22965=* -tokeninfo(#22965,6,#20001,806,"T20") -hasLocation(#22965,#21169) +typeexprs(#22963,1,#22962,0,"U") +hasLocation(#22963,#21732) +enclosingStmt(#22963,#22945) +exprContainers(#22963,#22805) +literals("U","U",#22963) +#22964=* +properties(#22964,#22955,1,8,"b: infer U") +#22965=@"loc,{#10000},86,41,86,50" +locations_default(#22965,#10000,86,41,86,50) +hasLocation(#22964,#22965) #22966=* -tokeninfo(#22966,8,#20001,807,"=") -#22967=@"loc,{#10000},91,12,91,12" -locations_default(#22967,#10000,91,12,91,12) -hasLocation(#22966,#22967) -#22968=* -tokeninfo(#22968,6,#20001,808,"Bar") -hasLocation(#22968,#21173) +exprs(#22966,0,#22964,0,"b") +hasLocation(#22966,#21736) +enclosingStmt(#22966,#22945) +exprContainers(#22966,#22805) +literals("b","b",#22966) +isAbstractMember(#22964) +#22967=* +typeexprs(#22967,29,#22964,2,"infer U") +#22968=@"loc,{#10000},86,44,86,50" +locations_default(#22968,#10000,86,44,86,50) +hasLocation(#22967,#22968) +enclosingStmt(#22967,#22945) +exprContainers(#22967,#22805) #22969=* -tokeninfo(#22969,8,#20001,809,"<") -#22970=@"loc,{#10000},91,17,91,17" -locations_default(#22970,#10000,91,17,91,17) -hasLocation(#22969,#22970) +typeexprs(#22969,22,#22967,0,"U") +hasLocation(#22969,#21742) +enclosingStmt(#22969,#22945) +exprContainers(#22969,#22805) +#22970=* +typeexprs(#22970,1,#22969,0,"U") +hasLocation(#22970,#21742) +enclosingStmt(#22970,#22945) +exprContainers(#22970,#22805) +literals("U","U",#22970) #22971=* -tokeninfo(#22971,8,#20001,810,"{") -#22972=@"loc,{#10000},91,18,91,18" -locations_default(#22972,#10000,91,18,91,18) -hasLocation(#22971,#22972) +typeexprs(#22971,0,#22952,2,"U") +hasLocation(#22971,#21748) +enclosingStmt(#22971,#22945) +exprContainers(#22971,#22805) +literals("U","U",#22971) +#22972=* +typeexprs(#22972,2,#22952,3,"never") +hasLocation(#22972,#21752) +enclosingStmt(#22972,#22945) +exprContainers(#22972,#22805) +literals("never","never",#22972) #22973=* -tokeninfo(#22973,6,#20001,811,"a") -hasLocation(#22973,#21179) -#22974=* -tokeninfo(#22974,8,#20001,812,":") -#22975=@"loc,{#10000},91,21,91,21" -locations_default(#22975,#10000,91,21,91,21) -hasLocation(#22974,#22975) +stmts(#22973,35,#22805,8,"type T1 ... ing }>;") +#22974=@"loc,{#10000},87,3,87,43" +locations_default(#22974,#10000,87,3,87,43) +hasLocation(#22973,#22974) +stmtContainers(#22973,#22805) +#22975=* +typeexprs(#22975,1,#22973,0,"T10") +hasLocation(#22975,#21758) +enclosingStmt(#22975,#22973) +exprContainers(#22975,#22805) +literals("T10","T10",#22975) +typedecl(#22975,#22817) #22976=* -tokeninfo(#22976,8,#20001,813,"(") -#22977=@"loc,{#10000},91,23,91,23" -locations_default(#22977,#10000,91,23,91,23) +typeexprs(#22976,14,#22973,1,"Foo<{ a ... ring }>") +#22977=@"loc,{#10000},87,14,87,42" +locations_default(#22977,#10000,87,14,87,42) hasLocation(#22976,#22977) +enclosingStmt(#22976,#22973) +exprContainers(#22976,#22805) #22978=* -tokeninfo(#22978,6,#20001,814,"x") -hasLocation(#22978,#21186) +typeexprs(#22978,0,#22976,-1,"Foo") +hasLocation(#22978,#21762) +enclosingStmt(#22978,#22973) +exprContainers(#22978,#22805) +literals("Foo","Foo",#22978) +typebind(#22978,#22816) #22979=* -tokeninfo(#22979,8,#20001,815,":") -#22980=@"loc,{#10000},91,25,91,25" -locations_default(#22980,#10000,91,25,91,25) +typeexprs(#22979,21,#22976,0,"{ a: st ... tring }") +#22980=@"loc,{#10000},87,18,87,41" +locations_default(#22980,#10000,87,18,87,41) hasLocation(#22979,#22980) +enclosingStmt(#22979,#22973) +exprContainers(#22979,#22805) #22981=* -tokeninfo(#22981,7,#20001,816,"string") -hasLocation(#22981,#21191) -#22982=* -tokeninfo(#22982,8,#20001,817,")") -#22983=@"loc,{#10000},91,33,91,33" -locations_default(#22983,#10000,91,33,91,33) -hasLocation(#22982,#22983) +properties(#22981,#22979,0,8,"a: string,") +#22982=@"loc,{#10000},87,20,87,29" +locations_default(#22982,#10000,87,20,87,29) +hasLocation(#22981,#22982) +#22983=* +exprs(#22983,0,#22981,0,"a") +hasLocation(#22983,#21768) +enclosingStmt(#22983,#22973) +exprContainers(#22983,#22805) +literals("a","a",#22983) +isAbstractMember(#22981) #22984=* -tokeninfo(#22984,8,#20001,818,"=>") -#22985=@"loc,{#10000},91,35,91,36" -locations_default(#22985,#10000,91,35,91,36) -hasLocation(#22984,#22985) -#22986=* -tokeninfo(#22986,7,#20001,819,"void") -hasLocation(#22986,#21189) +typeexprs(#22984,2,#22981,2,"string") +hasLocation(#22984,#21772) +enclosingStmt(#22984,#22973) +exprContainers(#22984,#22805) +literals("string","string",#22984) +#22985=* +properties(#22985,#22979,1,8,"b: string") +#22986=@"loc,{#10000},87,31,87,39" +locations_default(#22986,#10000,87,31,87,39) +hasLocation(#22985,#22986) #22987=* -tokeninfo(#22987,8,#20001,820,",") -#22988=@"loc,{#10000},91,42,91,42" -locations_default(#22988,#10000,91,42,91,42) -hasLocation(#22987,#22988) +exprs(#22987,0,#22985,0,"b") +hasLocation(#22987,#21776) +enclosingStmt(#22987,#22973) +exprContainers(#22987,#22805) +literals("b","b",#22987) +isAbstractMember(#22985) +#22988=* +typeexprs(#22988,2,#22985,2,"string") +hasLocation(#22988,#21780) +enclosingStmt(#22988,#22973) +exprContainers(#22988,#22805) +literals("string","string",#22988) #22989=* -tokeninfo(#22989,6,#20001,821,"b") -hasLocation(#22989,#21195) -#22990=* -tokeninfo(#22990,8,#20001,822,":") -#22991=@"loc,{#10000},91,45,91,45" -locations_default(#22991,#10000,91,45,91,45) -hasLocation(#22990,#22991) +stmts(#22989,35,#22805,9,"type T1 ... ber }>;") +#22990=@"loc,{#10000},88,3,88,43" +locations_default(#22990,#10000,88,3,88,43) +hasLocation(#22989,#22990) +stmtContainers(#22989,#22805) +#22991=* +typeexprs(#22991,1,#22989,0,"T11") +hasLocation(#22991,#21790) +enclosingStmt(#22991,#22989) +exprContainers(#22991,#22805) +literals("T11","T11",#22991) +typedecl(#22991,#22818) #22992=* -tokeninfo(#22992,8,#20001,823,"(") -#22993=@"loc,{#10000},91,47,91,47" -locations_default(#22993,#10000,91,47,91,47) +typeexprs(#22992,14,#22989,1,"Foo<{ a ... mber }>") +#22993=@"loc,{#10000},88,14,88,42" +locations_default(#22993,#10000,88,14,88,42) hasLocation(#22992,#22993) +enclosingStmt(#22992,#22989) +exprContainers(#22992,#22805) #22994=* -tokeninfo(#22994,6,#20001,824,"x") -hasLocation(#22994,#21202) +typeexprs(#22994,0,#22992,-1,"Foo") +hasLocation(#22994,#21794) +enclosingStmt(#22994,#22989) +exprContainers(#22994,#22805) +literals("Foo","Foo",#22994) +typebind(#22994,#22816) #22995=* -tokeninfo(#22995,8,#20001,825,":") -#22996=@"loc,{#10000},91,49,91,49" -locations_default(#22996,#10000,91,49,91,49) +typeexprs(#22995,21,#22992,0,"{ a: st ... umber }") +#22996=@"loc,{#10000},88,18,88,41" +locations_default(#22996,#10000,88,18,88,41) hasLocation(#22995,#22996) +enclosingStmt(#22995,#22989) +exprContainers(#22995,#22805) #22997=* -tokeninfo(#22997,7,#20001,826,"string") -hasLocation(#22997,#21207) -#22998=* -tokeninfo(#22998,8,#20001,827,")") -#22999=@"loc,{#10000},91,57,91,57" -locations_default(#22999,#10000,91,57,91,57) -hasLocation(#22998,#22999) +properties(#22997,#22995,0,8,"a: string,") +#22998=@"loc,{#10000},88,20,88,29" +locations_default(#22998,#10000,88,20,88,29) +hasLocation(#22997,#22998) +#22999=* +exprs(#22999,0,#22997,0,"a") +hasLocation(#22999,#21800) +enclosingStmt(#22999,#22989) +exprContainers(#22999,#22805) +literals("a","a",#22999) +isAbstractMember(#22997) #23000=* -tokeninfo(#23000,8,#20001,828,"=>") -#23001=@"loc,{#10000},91,59,91,60" -locations_default(#23001,#10000,91,59,91,60) -hasLocation(#23000,#23001) -#23002=* -tokeninfo(#23002,7,#20001,829,"void") -hasLocation(#23002,#21205) +typeexprs(#23000,2,#22997,2,"string") +hasLocation(#23000,#21804) +enclosingStmt(#23000,#22989) +exprContainers(#23000,#22805) +literals("string","string",#23000) +#23001=* +properties(#23001,#22995,1,8,"b: number") +#23002=@"loc,{#10000},88,31,88,39" +locations_default(#23002,#10000,88,31,88,39) +hasLocation(#23001,#23002) #23003=* -tokeninfo(#23003,8,#20001,830,"}") -#23004=@"loc,{#10000},91,67,91,67" -locations_default(#23004,#10000,91,67,91,67) -hasLocation(#23003,#23004) +exprs(#23003,0,#23001,0,"b") +hasLocation(#23003,#21808) +enclosingStmt(#23003,#22989) +exprContainers(#23003,#22805) +literals("b","b",#23003) +isAbstractMember(#23001) +#23004=* +typeexprs(#23004,2,#23001,2,"number") +hasLocation(#23004,#21812) +enclosingStmt(#23004,#22989) +exprContainers(#23004,#22805) +literals("number","number",#23004) #23005=* -tokeninfo(#23005,8,#20001,831,">") -#23006=@"loc,{#10000},91,68,91,68" -locations_default(#23006,#10000,91,68,91,68) +stmts(#23005,35,#22805,10,"type Ba ... never;") +#23006=@"loc,{#10000},90,3,90,91" +locations_default(#23006,#10000,90,3,90,91) hasLocation(#23005,#23006) +stmtContainers(#23005,#22805) #23007=* -tokeninfo(#23007,8,#20001,832,";") -#23008=@"loc,{#10000},91,69,91,69" -locations_default(#23008,#10000,91,69,91,69) -hasLocation(#23007,#23008) -#23009=* -tokeninfo(#23009,7,#20001,833,"type") -#23010=@"loc,{#10000},92,3,92,6" -locations_default(#23010,#10000,92,3,92,6) -hasLocation(#23009,#23010) -next_token(#21437,#23009) +typeexprs(#23007,1,#23005,0,"Bar") +hasLocation(#23007,#21822) +enclosingStmt(#23007,#23005) +exprContainers(#23007,#22805) +literals("Bar","Bar",#23007) +typedecl(#23007,#22819) +#23008=* +scopes(#23008,12) +scopenodes(#23005,#23008) +scopenesting(#23008,#22808) +#23009=@"local_type_name;{T};{#23008}" +local_type_names(#23009,"T",#23008) +#23010=* +typeexprs(#23010,22,#23005,2,"T") +hasLocation(#23010,#21826) +enclosingStmt(#23010,#23005) +exprContainers(#23010,#22805) #23011=* -tokeninfo(#23011,6,#20001,834,"T21") -hasLocation(#23011,#21211) +typeexprs(#23011,1,#23010,0,"T") +hasLocation(#23011,#21826) +enclosingStmt(#23011,#23005) +exprContainers(#23011,#22805) +literals("T","T",#23011) +typedecl(#23011,#23009) #23012=* -tokeninfo(#23012,8,#20001,835,"=") -#23013=@"loc,{#10000},92,12,92,12" -locations_default(#23013,#10000,92,12,92,12) +typeexprs(#23012,28,#23005,1,"T exten ... : never") +#23013=@"loc,{#10000},90,17,90,90" +locations_default(#23013,#10000,90,17,90,90) hasLocation(#23012,#23013) +enclosingStmt(#23012,#23005) +exprContainers(#23012,#22805) #23014=* -tokeninfo(#23014,6,#20001,836,"Bar") -hasLocation(#23014,#21215) +typeexprs(#23014,0,#23012,0,"T") +hasLocation(#23014,#21832) +enclosingStmt(#23014,#23005) +exprContainers(#23014,#22805) +literals("T","T",#23014) +typebind(#23014,#23009) #23015=* -tokeninfo(#23015,8,#20001,837,"<") -#23016=@"loc,{#10000},92,17,92,17" -locations_default(#23016,#10000,92,17,92,17) +typeexprs(#23015,21,#23012,1,"{ a: (x ... void }") +#23016=@"loc,{#10000},90,27,90,78" +locations_default(#23016,#10000,90,27,90,78) hasLocation(#23015,#23016) +enclosingStmt(#23015,#23005) +exprContainers(#23015,#22805) #23017=* -tokeninfo(#23017,8,#20001,838,"{") -#23018=@"loc,{#10000},92,18,92,18" -locations_default(#23018,#10000,92,18,92,18) +properties(#23017,#23015,0,8,"a: (x: ... > void,") +#23018=@"loc,{#10000},90,29,90,52" +locations_default(#23018,#10000,90,29,90,52) hasLocation(#23017,#23018) #23019=* -tokeninfo(#23019,6,#20001,839,"a") -hasLocation(#23019,#21221) +exprs(#23019,0,#23017,0,"a") +hasLocation(#23019,#21838) +enclosingStmt(#23019,#23005) +exprContainers(#23019,#22805) +literals("a","a",#23019) +isAbstractMember(#23017) #23020=* -tokeninfo(#23020,8,#20001,840,":") -#23021=@"loc,{#10000},92,21,92,21" -locations_default(#23021,#10000,92,21,92,21) +typeexprs(#23020,23,#23017,2,"(x: infer U) => void") +#23021=@"loc,{#10000},90,32,90,51" +locations_default(#23021,#10000,90,32,90,51) hasLocation(#23020,#23021) +enclosingStmt(#23020,#23005) +exprContainers(#23020,#22805) #23022=* -tokeninfo(#23022,8,#20001,841,"(") -#23023=@"loc,{#10000},92,23,92,23" -locations_default(#23023,#10000,92,23,92,23) -hasLocation(#23022,#23023) -#23024=* -tokeninfo(#23024,6,#20001,842,"x") -hasLocation(#23024,#21228) +exprs(#23022,9,#23020,0,"(x: infer U) => void") +hasLocation(#23022,#23021) +enclosingStmt(#23022,#23005) +exprContainers(#23022,#22805) +#23023=* +scopes(#23023,1) +scopenodes(#23022,#23023) +scopenesting(#23023,#23008) +#23024=@"var;{x};{#23023}" +variables(#23024,"x",#23023) #23025=* -tokeninfo(#23025,8,#20001,843,":") -#23026=@"loc,{#10000},92,25,92,25" -locations_default(#23026,#10000,92,25,92,25) -hasLocation(#23025,#23026) +exprs(#23025,78,#23022,0,"x") +hasLocation(#23025,#21844) +exprContainers(#23025,#23022) +literals("x","x",#23025) +decl(#23025,#23024) +#23026=@"var;{arguments};{#23023}" +variables(#23026,"arguments",#23023) +isArgumentsObject(#23026) #23027=* -tokeninfo(#23027,7,#20001,844,"string") -hasLocation(#23027,#21233) +typeexprs(#23027,2,#23022,-3,"void") +hasLocation(#23027,#21856) +exprContainers(#23027,#23022) +literals("void","void",#23027) #23028=* -tokeninfo(#23028,8,#20001,845,")") -#23029=@"loc,{#10000},92,33,92,33" -locations_default(#23029,#10000,92,33,92,33) +typeexprs(#23028,29,#23022,-6,"infer U") +#23029=@"loc,{#10000},90,36,90,42" +locations_default(#23029,#10000,90,36,90,42) hasLocation(#23028,#23029) +exprContainers(#23028,#23022) #23030=* -tokeninfo(#23030,8,#20001,846,"=>") -#23031=@"loc,{#10000},92,35,92,36" -locations_default(#23031,#10000,92,35,92,36) -hasLocation(#23030,#23031) +typeexprs(#23030,22,#23028,0,"U") +hasLocation(#23030,#21850) +exprContainers(#23030,#23022) +#23031=* +typeexprs(#23031,1,#23030,0,"U") +hasLocation(#23031,#21850) +exprContainers(#23031,#23022) +literals("U","U",#23031) #23032=* -tokeninfo(#23032,7,#20001,847,"void") -hasLocation(#23032,#21231) -#23033=* -tokeninfo(#23033,8,#20001,848,",") -#23034=@"loc,{#10000},92,42,92,42" -locations_default(#23034,#10000,92,42,92,42) -hasLocation(#23033,#23034) +properties(#23032,#23015,1,8,"b: (x: ... => void") +#23033=@"loc,{#10000},90,54,90,76" +locations_default(#23033,#10000,90,54,90,76) +hasLocation(#23032,#23033) +#23034=* +exprs(#23034,0,#23032,0,"b") +hasLocation(#23034,#21860) +enclosingStmt(#23034,#23005) +exprContainers(#23034,#22805) +literals("b","b",#23034) +isAbstractMember(#23032) #23035=* -tokeninfo(#23035,6,#20001,849,"b") -hasLocation(#23035,#21237) -#23036=* -tokeninfo(#23036,8,#20001,850,":") -#23037=@"loc,{#10000},92,45,92,45" -locations_default(#23037,#10000,92,45,92,45) -hasLocation(#23036,#23037) +typeexprs(#23035,23,#23032,2,"(x: infer U) => void") +#23036=@"loc,{#10000},90,57,90,76" +locations_default(#23036,#10000,90,57,90,76) +hasLocation(#23035,#23036) +enclosingStmt(#23035,#23005) +exprContainers(#23035,#22805) +#23037=* +exprs(#23037,9,#23035,0,"(x: infer U) => void") +hasLocation(#23037,#23036) +enclosingStmt(#23037,#23005) +exprContainers(#23037,#22805) #23038=* -tokeninfo(#23038,8,#20001,851,"(") -#23039=@"loc,{#10000},92,47,92,47" -locations_default(#23039,#10000,92,47,92,47) -hasLocation(#23038,#23039) +scopes(#23038,1) +scopenodes(#23037,#23038) +scopenesting(#23038,#23008) +#23039=@"var;{x};{#23038}" +variables(#23039,"x",#23038) #23040=* -tokeninfo(#23040,6,#20001,852,"x") -hasLocation(#23040,#21244) -#23041=* -tokeninfo(#23041,8,#20001,853,":") -#23042=@"loc,{#10000},92,49,92,49" -locations_default(#23042,#10000,92,49,92,49) -hasLocation(#23041,#23042) +exprs(#23040,78,#23037,0,"x") +hasLocation(#23040,#21866) +exprContainers(#23040,#23037) +literals("x","x",#23040) +decl(#23040,#23039) +#23041=@"var;{arguments};{#23038}" +variables(#23041,"arguments",#23038) +isArgumentsObject(#23041) +#23042=* +typeexprs(#23042,2,#23037,-3,"void") +hasLocation(#23042,#21878) +exprContainers(#23042,#23037) +literals("void","void",#23042) #23043=* -tokeninfo(#23043,7,#20001,854,"number") -hasLocation(#23043,#21249) -#23044=* -tokeninfo(#23044,8,#20001,855,")") -#23045=@"loc,{#10000},92,57,92,57" -locations_default(#23045,#10000,92,57,92,57) -hasLocation(#23044,#23045) +typeexprs(#23043,29,#23037,-6,"infer U") +#23044=@"loc,{#10000},90,61,90,67" +locations_default(#23044,#10000,90,61,90,67) +hasLocation(#23043,#23044) +exprContainers(#23043,#23037) +#23045=* +typeexprs(#23045,22,#23043,0,"U") +hasLocation(#23045,#21872) +exprContainers(#23045,#23037) #23046=* -tokeninfo(#23046,8,#20001,856,"=>") -#23047=@"loc,{#10000},92,59,92,60" -locations_default(#23047,#10000,92,59,92,60) -hasLocation(#23046,#23047) +typeexprs(#23046,1,#23045,0,"U") +hasLocation(#23046,#21872) +exprContainers(#23046,#23037) +literals("U","U",#23046) +#23047=* +typeexprs(#23047,0,#23012,2,"U") +hasLocation(#23047,#21884) +enclosingStmt(#23047,#23005) +exprContainers(#23047,#22805) +literals("U","U",#23047) #23048=* -tokeninfo(#23048,7,#20001,857,"void") -hasLocation(#23048,#21247) +typeexprs(#23048,2,#23012,3,"never") +hasLocation(#23048,#21888) +enclosingStmt(#23048,#23005) +exprContainers(#23048,#22805) +literals("never","never",#23048) #23049=* -tokeninfo(#23049,8,#20001,858,"}") -#23050=@"loc,{#10000},92,67,92,67" -locations_default(#23050,#10000,92,67,92,67) +stmts(#23049,35,#22805,11,"type T2 ... oid }>;") +#23050=@"loc,{#10000},91,3,91,69" +locations_default(#23050,#10000,91,3,91,69) hasLocation(#23049,#23050) +stmtContainers(#23049,#22805) #23051=* -tokeninfo(#23051,8,#20001,859,">") -#23052=@"loc,{#10000},92,68,92,68" -locations_default(#23052,#10000,92,68,92,68) -hasLocation(#23051,#23052) -#23053=* -tokeninfo(#23053,8,#20001,860,";") -#23054=@"loc,{#10000},92,69,92,69" -locations_default(#23054,#10000,92,69,92,69) -hasLocation(#23053,#23054) +typeexprs(#23051,1,#23049,0,"T20") +hasLocation(#23051,#21894) +enclosingStmt(#23051,#23049) +exprContainers(#23051,#22805) +literals("T20","T20",#23051) +typedecl(#23051,#22820) +#23052=* +typeexprs(#23052,14,#23049,1,"Bar<{ a ... void }>") +#23053=@"loc,{#10000},91,14,91,68" +locations_default(#23053,#10000,91,14,91,68) +hasLocation(#23052,#23053) +enclosingStmt(#23052,#23049) +exprContainers(#23052,#22805) +#23054=* +typeexprs(#23054,0,#23052,-1,"Bar") +hasLocation(#23054,#21898) +enclosingStmt(#23054,#23049) +exprContainers(#23054,#22805) +literals("Bar","Bar",#23054) +typebind(#23054,#22819) #23055=* -tokeninfo(#23055,7,#20001,861,"declare") -#23056=@"loc,{#10000},94,3,94,9" -locations_default(#23056,#10000,94,3,94,9) +typeexprs(#23055,21,#23052,0,"{ a: (x ... void }") +#23056=@"loc,{#10000},91,18,91,67" +locations_default(#23056,#10000,91,18,91,67) hasLocation(#23055,#23056) -next_token(#21439,#23055) +enclosingStmt(#23055,#23049) +exprContainers(#23055,#22805) #23057=* -tokeninfo(#23057,7,#20001,862,"function") -#23058=@"loc,{#10000},94,11,94,18" -locations_default(#23058,#10000,94,11,94,18) +properties(#23057,#23055,0,8,"a: (x: ... > void,") +#23058=@"loc,{#10000},91,20,91,42" +locations_default(#23058,#10000,91,20,91,42) hasLocation(#23057,#23058) #23059=* -tokeninfo(#23059,6,#20001,863,"foo") -hasLocation(#23059,#21253) +exprs(#23059,0,#23057,0,"a") +hasLocation(#23059,#21904) +enclosingStmt(#23059,#23049) +exprContainers(#23059,#22805) +literals("a","a",#23059) +isAbstractMember(#23057) #23060=* -tokeninfo(#23060,8,#20001,864,"(") -#23061=@"loc,{#10000},94,23,94,23" -locations_default(#23061,#10000,94,23,94,23) +typeexprs(#23060,23,#23057,2,"(x: string) => void") +#23061=@"loc,{#10000},91,23,91,41" +locations_default(#23061,#10000,91,23,91,41) hasLocation(#23060,#23061) +enclosingStmt(#23060,#23049) +exprContainers(#23060,#22805) #23062=* -tokeninfo(#23062,6,#20001,865,"x") -hasLocation(#23062,#21258) +exprs(#23062,9,#23060,0,"(x: string) => void") +hasLocation(#23062,#23061) +enclosingStmt(#23062,#23049) +exprContainers(#23062,#22805) #23063=* -tokeninfo(#23063,8,#20001,866,":") -#23064=@"loc,{#10000},94,25,94,25" -locations_default(#23064,#10000,94,25,94,25) -hasLocation(#23063,#23064) +scopes(#23063,1) +scopenodes(#23062,#23063) +scopenesting(#23063,#22808) +#23064=@"var;{x};{#23063}" +variables(#23064,"x",#23063) #23065=* -tokeninfo(#23065,7,#20001,867,"string") -hasLocation(#23065,#21263) -#23066=* -tokeninfo(#23066,8,#20001,868,")") -#23067=@"loc,{#10000},94,33,94,33" -locations_default(#23067,#10000,94,33,94,33) -hasLocation(#23066,#23067) +exprs(#23065,78,#23062,0,"x") +hasLocation(#23065,#21910) +exprContainers(#23065,#23062) +literals("x","x",#23065) +decl(#23065,#23064) +#23066=@"var;{arguments};{#23063}" +variables(#23066,"arguments",#23063) +isArgumentsObject(#23066) +#23067=* +typeexprs(#23067,2,#23062,-3,"void") +hasLocation(#23067,#21920) +exprContainers(#23067,#23062) +literals("void","void",#23067) #23068=* -tokeninfo(#23068,8,#20001,869,":") -#23069=@"loc,{#10000},94,34,94,34" -locations_default(#23069,#10000,94,34,94,34) -hasLocation(#23068,#23069) -#23070=* -tokeninfo(#23070,7,#20001,870,"number") -hasLocation(#23070,#21261) +typeexprs(#23068,2,#23062,-6,"string") +hasLocation(#23068,#21914) +exprContainers(#23068,#23062) +literals("string","string",#23068) +#23069=* +properties(#23069,#23055,1,8,"b: (x: ... => void") +#23070=@"loc,{#10000},91,44,91,65" +locations_default(#23070,#10000,91,44,91,65) +hasLocation(#23069,#23070) #23071=* -tokeninfo(#23071,8,#20001,871,";") -#23072=@"loc,{#10000},94,42,94,42" -locations_default(#23072,#10000,94,42,94,42) -hasLocation(#23071,#23072) -#23073=* -tokeninfo(#23073,7,#20001,872,"declare") -#23074=@"loc,{#10000},95,3,95,9" -locations_default(#23074,#10000,95,3,95,9) -hasLocation(#23073,#23074) +exprs(#23071,0,#23069,0,"b") +hasLocation(#23071,#21924) +enclosingStmt(#23071,#23049) +exprContainers(#23071,#22805) +literals("b","b",#23071) +isAbstractMember(#23069) +#23072=* +typeexprs(#23072,23,#23069,2,"(x: string) => void") +#23073=@"loc,{#10000},91,47,91,65" +locations_default(#23073,#10000,91,47,91,65) +hasLocation(#23072,#23073) +enclosingStmt(#23072,#23049) +exprContainers(#23072,#22805) +#23074=* +exprs(#23074,9,#23072,0,"(x: string) => void") +hasLocation(#23074,#23073) +enclosingStmt(#23074,#23049) +exprContainers(#23074,#22805) #23075=* -tokeninfo(#23075,7,#20001,873,"function") -#23076=@"loc,{#10000},95,11,95,18" -locations_default(#23076,#10000,95,11,95,18) -hasLocation(#23075,#23076) +scopes(#23075,1) +scopenodes(#23074,#23075) +scopenesting(#23075,#22808) +#23076=@"var;{x};{#23075}" +variables(#23076,"x",#23075) #23077=* -tokeninfo(#23077,6,#20001,874,"foo") -hasLocation(#23077,#21267) -#23078=* -tokeninfo(#23078,8,#20001,875,"(") -#23079=@"loc,{#10000},95,23,95,23" -locations_default(#23079,#10000,95,23,95,23) -hasLocation(#23078,#23079) +exprs(#23077,78,#23074,0,"x") +hasLocation(#23077,#21930) +exprContainers(#23077,#23074) +literals("x","x",#23077) +decl(#23077,#23076) +#23078=@"var;{arguments};{#23075}" +variables(#23078,"arguments",#23075) +isArgumentsObject(#23078) +#23079=* +typeexprs(#23079,2,#23074,-3,"void") +hasLocation(#23079,#21940) +exprContainers(#23079,#23074) +literals("void","void",#23079) #23080=* -tokeninfo(#23080,6,#20001,876,"x") -hasLocation(#23080,#21271) +typeexprs(#23080,2,#23074,-6,"string") +hasLocation(#23080,#21934) +exprContainers(#23080,#23074) +literals("string","string",#23080) #23081=* -tokeninfo(#23081,8,#20001,877,":") -#23082=@"loc,{#10000},95,25,95,25" -locations_default(#23082,#10000,95,25,95,25) +stmts(#23081,35,#22805,12,"type T2 ... oid }>;") +#23082=@"loc,{#10000},92,3,92,69" +locations_default(#23082,#10000,92,3,92,69) hasLocation(#23081,#23082) +stmtContainers(#23081,#22805) #23083=* -tokeninfo(#23083,7,#20001,878,"number") -hasLocation(#23083,#21276) +typeexprs(#23083,1,#23081,0,"T21") +hasLocation(#23083,#21950) +enclosingStmt(#23083,#23081) +exprContainers(#23083,#22805) +literals("T21","T21",#23083) +typedecl(#23083,#22821) #23084=* -tokeninfo(#23084,8,#20001,879,")") -#23085=@"loc,{#10000},95,33,95,33" -locations_default(#23085,#10000,95,33,95,33) +typeexprs(#23084,14,#23081,1,"Bar<{ a ... void }>") +#23085=@"loc,{#10000},92,14,92,68" +locations_default(#23085,#10000,92,14,92,68) hasLocation(#23084,#23085) +enclosingStmt(#23084,#23081) +exprContainers(#23084,#22805) #23086=* -tokeninfo(#23086,8,#20001,880,":") -#23087=@"loc,{#10000},95,34,95,34" -locations_default(#23087,#10000,95,34,95,34) -hasLocation(#23086,#23087) -#23088=* -tokeninfo(#23088,7,#20001,881,"string") -hasLocation(#23088,#21274) +typeexprs(#23086,0,#23084,-1,"Bar") +hasLocation(#23086,#21954) +enclosingStmt(#23086,#23081) +exprContainers(#23086,#22805) +literals("Bar","Bar",#23086) +typebind(#23086,#22819) +#23087=* +typeexprs(#23087,21,#23084,0,"{ a: (x ... void }") +#23088=@"loc,{#10000},92,18,92,67" +locations_default(#23088,#10000,92,18,92,67) +hasLocation(#23087,#23088) +enclosingStmt(#23087,#23081) +exprContainers(#23087,#22805) #23089=* -tokeninfo(#23089,8,#20001,882,";") -#23090=@"loc,{#10000},95,42,95,42" -locations_default(#23090,#10000,95,42,95,42) +properties(#23089,#23087,0,8,"a: (x: ... > void,") +#23090=@"loc,{#10000},92,20,92,42" +locations_default(#23090,#10000,92,20,92,42) hasLocation(#23089,#23090) #23091=* -tokeninfo(#23091,7,#20001,883,"declare") -#23092=@"loc,{#10000},96,3,96,9" -locations_default(#23092,#10000,96,3,96,9) -hasLocation(#23091,#23092) -#23093=* -tokeninfo(#23093,7,#20001,884,"function") -#23094=@"loc,{#10000},96,11,96,18" -locations_default(#23094,#10000,96,11,96,18) -hasLocation(#23093,#23094) +exprs(#23091,0,#23089,0,"a") +hasLocation(#23091,#21960) +enclosingStmt(#23091,#23081) +exprContainers(#23091,#22805) +literals("a","a",#23091) +isAbstractMember(#23089) +#23092=* +typeexprs(#23092,23,#23089,2,"(x: string) => void") +#23093=@"loc,{#10000},92,23,92,41" +locations_default(#23093,#10000,92,23,92,41) +hasLocation(#23092,#23093) +enclosingStmt(#23092,#23081) +exprContainers(#23092,#22805) +#23094=* +exprs(#23094,9,#23092,0,"(x: string) => void") +hasLocation(#23094,#23093) +enclosingStmt(#23094,#23081) +exprContainers(#23094,#22805) #23095=* -tokeninfo(#23095,6,#20001,885,"foo") -hasLocation(#23095,#21280) -#23096=* -tokeninfo(#23096,8,#20001,886,"(") -#23097=@"loc,{#10000},96,23,96,23" -locations_default(#23097,#10000,96,23,96,23) -hasLocation(#23096,#23097) -#23098=* -tokeninfo(#23098,6,#20001,887,"x") -hasLocation(#23098,#21284) +scopes(#23095,1) +scopenodes(#23094,#23095) +scopenesting(#23095,#22808) +#23096=@"var;{x};{#23095}" +variables(#23096,"x",#23095) +#23097=* +exprs(#23097,78,#23094,0,"x") +hasLocation(#23097,#21966) +exprContainers(#23097,#23094) +literals("x","x",#23097) +decl(#23097,#23096) +#23098=@"var;{arguments};{#23095}" +variables(#23098,"arguments",#23095) +isArgumentsObject(#23098) #23099=* -tokeninfo(#23099,8,#20001,888,":") -#23100=@"loc,{#10000},96,25,96,25" -locations_default(#23100,#10000,96,25,96,25) -hasLocation(#23099,#23100) +typeexprs(#23099,2,#23094,-3,"void") +hasLocation(#23099,#21976) +exprContainers(#23099,#23094) +literals("void","void",#23099) +#23100=* +typeexprs(#23100,2,#23094,-6,"string") +hasLocation(#23100,#21970) +exprContainers(#23100,#23094) +literals("string","string",#23100) #23101=* -tokeninfo(#23101,7,#20001,889,"string") -hasLocation(#23101,#21295) -#23102=* -tokeninfo(#23102,8,#20001,890,"|") -#23103=@"loc,{#10000},96,34,96,34" -locations_default(#23103,#10000,96,34,96,34) -hasLocation(#23102,#23103) +properties(#23101,#23087,1,8,"b: (x: ... => void") +#23102=@"loc,{#10000},92,44,92,65" +locations_default(#23102,#10000,92,44,92,65) +hasLocation(#23101,#23102) +#23103=* +exprs(#23103,0,#23101,0,"b") +hasLocation(#23103,#21980) +enclosingStmt(#23103,#23081) +exprContainers(#23103,#22805) +literals("b","b",#23103) +isAbstractMember(#23101) #23104=* -tokeninfo(#23104,7,#20001,891,"number") -hasLocation(#23104,#21297) -#23105=* -tokeninfo(#23105,8,#20001,892,")") -#23106=@"loc,{#10000},96,42,96,42" -locations_default(#23106,#10000,96,42,96,42) -hasLocation(#23105,#23106) +typeexprs(#23104,23,#23101,2,"(x: number) => void") +#23105=@"loc,{#10000},92,47,92,65" +locations_default(#23105,#10000,92,47,92,65) +hasLocation(#23104,#23105) +enclosingStmt(#23104,#23081) +exprContainers(#23104,#22805) +#23106=* +exprs(#23106,9,#23104,0,"(x: number) => void") +hasLocation(#23106,#23105) +enclosingStmt(#23106,#23081) +exprContainers(#23106,#22805) #23107=* -tokeninfo(#23107,8,#20001,893,":") -#23108=@"loc,{#10000},96,43,96,43" -locations_default(#23108,#10000,96,43,96,43) -hasLocation(#23107,#23108) +scopes(#23107,1) +scopenodes(#23106,#23107) +scopenesting(#23107,#22808) +#23108=@"var;{x};{#23107}" +variables(#23108,"x",#23107) #23109=* -tokeninfo(#23109,7,#20001,894,"string") -hasLocation(#23109,#21289) -#23110=* -tokeninfo(#23110,8,#20001,895,"|") -#23111=@"loc,{#10000},96,52,96,52" -locations_default(#23111,#10000,96,52,96,52) -hasLocation(#23110,#23111) +exprs(#23109,78,#23106,0,"x") +hasLocation(#23109,#21986) +exprContainers(#23109,#23106) +literals("x","x",#23109) +decl(#23109,#23108) +#23110=@"var;{arguments};{#23107}" +variables(#23110,"arguments",#23107) +isArgumentsObject(#23110) +#23111=* +typeexprs(#23111,2,#23106,-3,"void") +hasLocation(#23111,#21996) +exprContainers(#23111,#23106) +literals("void","void",#23111) #23112=* -tokeninfo(#23112,7,#20001,896,"number") -hasLocation(#23112,#21291) +typeexprs(#23112,2,#23106,-6,"number") +hasLocation(#23112,#21990) +exprContainers(#23112,#23106) +literals("number","number",#23112) #23113=* -tokeninfo(#23113,8,#20001,897,";") -#23114=@"loc,{#10000},96,60,96,60" -locations_default(#23114,#10000,96,60,96,60) +stmts(#23113,17,#22805,13,"declare ... number;") +#23114=@"loc,{#10000},94,3,94,42" +locations_default(#23114,#10000,94,3,94,42) hasLocation(#23113,#23114) +stmtContainers(#23113,#22805) +hasDeclareKeyword(#23113) #23115=* -tokeninfo(#23115,7,#20001,898,"type") -#23116=@"loc,{#10000},97,3,97,6" -locations_default(#23116,#10000,97,3,97,6) -hasLocation(#23115,#23116) +exprs(#23115,78,#23113,-1,"foo") +hasLocation(#23115,#22008) +exprContainers(#23115,#23113) +literals("foo","foo",#23115) +#23116=@"var;{foo};{#20000}" +variables(#23116,"foo",#20000) +decl(#23115,#23116) #23117=* -tokeninfo(#23117,6,#20001,899,"T30") -hasLocation(#23117,#21301) -#23118=* -tokeninfo(#23118,8,#20001,900,"=") -#23119=@"loc,{#10000},97,12,97,12" -locations_default(#23119,#10000,97,12,97,12) -hasLocation(#23118,#23119) -#23120=* -tokeninfo(#23120,6,#20001,901,"ReturnType") -hasLocation(#23120,#21305) +scopes(#23117,1) +scopenodes(#23113,#23117) +scopenesting(#23117,#22808) +#23118=@"var;{x};{#23117}" +variables(#23118,"x",#23117) +#23119=* +exprs(#23119,78,#23113,0,"x") +hasLocation(#23119,#22012) +exprContainers(#23119,#23113) +literals("x","x",#23119) +decl(#23119,#23118) +#23120=@"var;{arguments};{#23117}" +variables(#23120,"arguments",#23117) +isArgumentsObject(#23120) #23121=* -tokeninfo(#23121,8,#20001,902,"<") -#23122=@"loc,{#10000},97,24,97,24" -locations_default(#23122,#10000,97,24,97,24) -hasLocation(#23121,#23122) +typeexprs(#23121,2,#23113,-3,"number") +hasLocation(#23121,#22022) +exprContainers(#23121,#23113) +literals("number","number",#23121) +#23122=* +typeexprs(#23122,2,#23113,-6,"string") +hasLocation(#23122,#22016) +exprContainers(#23122,#23113) +literals("string","string",#23122) #23123=* -tokeninfo(#23123,7,#20001,903,"typeof") -#23124=@"loc,{#10000},97,25,97,30" -locations_default(#23124,#10000,97,25,97,30) +stmts(#23123,17,#22805,14,"declare ... string;") +#23124=@"loc,{#10000},95,3,95,42" +locations_default(#23124,#10000,95,3,95,42) hasLocation(#23123,#23124) +stmtContainers(#23123,#22805) +hasDeclareKeyword(#23123) #23125=* -tokeninfo(#23125,6,#20001,904,"foo") -hasLocation(#23125,#21309) +exprs(#23125,78,#23123,-1,"foo") +hasLocation(#23125,#22030) +exprContainers(#23125,#23123) +literals("foo","foo",#23125) +decl(#23125,#23116) #23126=* -tokeninfo(#23126,8,#20001,905,">") -#23127=@"loc,{#10000},97,35,97,35" -locations_default(#23127,#10000,97,35,97,35) -hasLocation(#23126,#23127) +scopes(#23126,1) +scopenodes(#23123,#23126) +scopenesting(#23126,#22808) +#23127=@"var;{x};{#23126}" +variables(#23127,"x",#23126) #23128=* -tokeninfo(#23128,8,#20001,906,";") -#23129=@"loc,{#10000},97,36,97,36" -locations_default(#23129,#10000,97,36,97,36) -hasLocation(#23128,#23129) +exprs(#23128,78,#23123,0,"x") +hasLocation(#23128,#22034) +exprContainers(#23128,#23123) +literals("x","x",#23128) +decl(#23128,#23127) +#23129=@"var;{arguments};{#23126}" +variables(#23129,"arguments",#23126) +isArgumentsObject(#23129) #23130=* -tokeninfo(#23130,7,#20001,907,"type") -#23131=@"loc,{#10000},99,3,99,6" -locations_default(#23131,#10000,99,3,99,6) -hasLocation(#23130,#23131) -next_token(#21441,#23130) +typeexprs(#23130,2,#23123,-3,"string") +hasLocation(#23130,#22044) +exprContainers(#23130,#23123) +literals("string","string",#23130) +#23131=* +typeexprs(#23131,2,#23123,-6,"number") +hasLocation(#23131,#22038) +exprContainers(#23131,#23123) +literals("number","number",#23131) #23132=* -tokeninfo(#23132,6,#20001,908,"AnyFunction") -hasLocation(#23132,#21313) -#23133=* -tokeninfo(#23133,8,#20001,909,"=") -#23134=@"loc,{#10000},99,20,99,20" -locations_default(#23134,#10000,99,20,99,20) -hasLocation(#23133,#23134) +stmts(#23132,17,#22805,15,"declare ... number;") +#23133=@"loc,{#10000},96,3,96,60" +locations_default(#23133,#10000,96,3,96,60) +hasLocation(#23132,#23133) +stmtContainers(#23132,#22805) +hasDeclareKeyword(#23132) +#23134=* +exprs(#23134,78,#23132,-1,"foo") +hasLocation(#23134,#22052) +exprContainers(#23134,#23132) +literals("foo","foo",#23134) +decl(#23134,#23116) #23135=* -tokeninfo(#23135,8,#20001,910,"(") -#23136=@"loc,{#10000},99,22,99,22" -locations_default(#23136,#10000,99,22,99,22) -hasLocation(#23135,#23136) +scopes(#23135,1) +scopenodes(#23132,#23135) +scopenesting(#23135,#22808) +#23136=@"var;{x};{#23135}" +variables(#23136,"x",#23135) #23137=* -tokeninfo(#23137,8,#20001,911,"...") -#23138=@"loc,{#10000},99,23,99,25" -locations_default(#23138,#10000,99,23,99,25) -hasLocation(#23137,#23138) +exprs(#23137,78,#23132,0,"x") +hasLocation(#23137,#22056) +exprContainers(#23137,#23132) +literals("x","x",#23137) +decl(#23137,#23136) +#23138=@"var;{arguments};{#23135}" +variables(#23138,"arguments",#23135) +isArgumentsObject(#23138) #23139=* -tokeninfo(#23139,6,#20001,912,"args") -hasLocation(#23139,#21320) -#23140=* -tokeninfo(#23140,8,#20001,913,":") -#23141=@"loc,{#10000},99,30,99,30" -locations_default(#23141,#10000,99,30,99,30) -hasLocation(#23140,#23141) +typeexprs(#23139,7,#23132,-3,"string | number") +#23140=@"loc,{#10000},96,45,96,59" +locations_default(#23140,#10000,96,45,96,59) +hasLocation(#23139,#23140) +exprContainers(#23139,#23132) +#23141=* +typeexprs(#23141,2,#23139,0,"string") +hasLocation(#23141,#22070) +exprContainers(#23141,#23132) +literals("string","string",#23141) #23142=* -tokeninfo(#23142,7,#20001,914,"any") -hasLocation(#23142,#21327) +typeexprs(#23142,2,#23139,1,"number") +hasLocation(#23142,#22074) +exprContainers(#23142,#23132) +literals("number","number",#23142) #23143=* -tokeninfo(#23143,8,#20001,915,"[") -#23144=@"loc,{#10000},99,35,99,35" -locations_default(#23144,#10000,99,35,99,35) +typeexprs(#23143,7,#23132,-6,"string | number") +#23144=@"loc,{#10000},96,27,96,41" +locations_default(#23144,#10000,96,27,96,41) hasLocation(#23143,#23144) +exprContainers(#23143,#23132) #23145=* -tokeninfo(#23145,8,#20001,916,"]") -#23146=@"loc,{#10000},99,36,99,36" -locations_default(#23146,#10000,99,36,99,36) -hasLocation(#23145,#23146) +typeexprs(#23145,2,#23143,0,"string") +hasLocation(#23145,#22060) +exprContainers(#23145,#23132) +literals("string","string",#23145) +#23146=* +typeexprs(#23146,2,#23143,1,"number") +hasLocation(#23146,#22064) +exprContainers(#23146,#23132) +literals("number","number",#23146) #23147=* -tokeninfo(#23147,8,#20001,917,")") -#23148=@"loc,{#10000},99,37,99,37" -locations_default(#23148,#10000,99,37,99,37) +stmts(#23147,35,#22805,16,"type T3 ... f foo>;") +#23148=@"loc,{#10000},97,3,97,36" +locations_default(#23148,#10000,97,3,97,36) hasLocation(#23147,#23148) +stmtContainers(#23147,#22805) #23149=* -tokeninfo(#23149,8,#20001,918,"=>") -#23150=@"loc,{#10000},99,39,99,40" -locations_default(#23150,#10000,99,39,99,40) -hasLocation(#23149,#23150) -#23151=* -tokeninfo(#23151,7,#20001,919,"any") -hasLocation(#23151,#21323) +typeexprs(#23149,1,#23147,0,"T30") +hasLocation(#23149,#22080) +enclosingStmt(#23149,#23147) +exprContainers(#23149,#22805) +literals("T30","T30",#23149) +typedecl(#23149,#22822) +#23150=* +typeexprs(#23150,14,#23147,1,"ReturnT ... of foo>") +#23151=@"loc,{#10000},97,14,97,35" +locations_default(#23151,#10000,97,14,97,35) +hasLocation(#23150,#23151) +enclosingStmt(#23150,#23147) +exprContainers(#23150,#22805) #23152=* -tokeninfo(#23152,8,#20001,920,";") -#23153=@"loc,{#10000},99,45,99,45" -locations_default(#23153,#10000,99,45,99,45) -hasLocation(#23152,#23153) -#23154=* -tokeninfo(#23154,7,#20001,921,"type") -#23155=@"loc,{#10000},100,3,100,6" -locations_default(#23155,#10000,100,3,100,6) -hasLocation(#23154,#23155) +typeexprs(#23152,0,#23150,-1,"ReturnType") +hasLocation(#23152,#22084) +enclosingStmt(#23152,#23147) +exprContainers(#23152,#22805) +literals("ReturnType","ReturnType",#23152) +typebind(#23152,#22824) +#23153=* +typeexprs(#23153,16,#23150,0,"typeof foo") +#23154=@"loc,{#10000},97,25,97,34" +locations_default(#23154,#10000,97,25,97,34) +hasLocation(#23153,#23154) +enclosingStmt(#23153,#23147) +exprContainers(#23153,#22805) +#23155=* +typeexprs(#23155,17,#23153,0,"foo") +hasLocation(#23155,#22090) +enclosingStmt(#23155,#23147) +exprContainers(#23155,#22805) +literals("foo","foo",#23155) +bind(#23155,#23116) #23156=* -tokeninfo(#23156,6,#20001,922,"ReturnType") -hasLocation(#23156,#21331) -#23157=* -tokeninfo(#23157,8,#20001,923,"<") -#23158=@"loc,{#10000},100,18,100,18" -locations_default(#23158,#10000,100,18,100,18) -hasLocation(#23157,#23158) +stmts(#23156,35,#22805,17,"type An ... => any;") +#23157=@"loc,{#10000},99,3,99,45" +locations_default(#23157,#10000,99,3,99,45) +hasLocation(#23156,#23157) +stmtContainers(#23156,#22805) +#23158=* +typeexprs(#23158,1,#23156,0,"AnyFunction") +hasLocation(#23158,#22098) +enclosingStmt(#23158,#23156) +exprContainers(#23158,#22805) +literals("AnyFunction","AnyFunction",#23158) +typedecl(#23158,#22823) #23159=* -tokeninfo(#23159,6,#20001,924,"T") -hasLocation(#23159,#21337) -#23160=* -tokeninfo(#23160,7,#20001,925,"extends") -#23161=@"loc,{#10000},100,21,100,27" -locations_default(#23161,#10000,100,21,100,27) -hasLocation(#23160,#23161) +typeexprs(#23159,23,#23156,1,"(...arg ... => any") +#23160=@"loc,{#10000},99,22,99,44" +locations_default(#23160,#10000,99,22,99,44) +hasLocation(#23159,#23160) +enclosingStmt(#23159,#23156) +exprContainers(#23159,#22805) +#23161=* +exprs(#23161,9,#23159,0,"(...arg ... => any") +hasLocation(#23161,#23160) +enclosingStmt(#23161,#23156) +exprContainers(#23161,#22805) #23162=* -tokeninfo(#23162,6,#20001,926,"AnyFunction") -hasLocation(#23162,#21339) -#23163=* -tokeninfo(#23163,8,#20001,927,">") -#23164=@"loc,{#10000},100,40,100,40" -locations_default(#23164,#10000,100,40,100,40) -hasLocation(#23163,#23164) -#23165=* -tokeninfo(#23165,8,#20001,928,"=") -#23166=@"loc,{#10000},100,42,100,42" -locations_default(#23166,#10000,100,42,100,42) -hasLocation(#23165,#23166) +scopes(#23162,1) +scopenodes(#23161,#23162) +scopenesting(#23162,#22808) +#23163=@"var;{args};{#23162}" +variables(#23163,"args",#23162) +#23164=* +exprs(#23164,78,#23161,0,"args") +hasLocation(#23164,#22106) +exprContainers(#23164,#23161) +literals("args","args",#23164) +decl(#23164,#23163) +#23165=@"var;{arguments};{#23162}" +variables(#23165,"arguments",#23162) +isArgumentsObject(#23165) +#23166=* +typeexprs(#23166,2,#23161,-3,"any") +hasLocation(#23166,#22120) +exprContainers(#23166,#23161) +literals("any","any",#23166) #23167=* -tokeninfo(#23167,6,#20001,929,"T") -hasLocation(#23167,#21343) -#23168=* -tokeninfo(#23168,7,#20001,930,"extends") -#23169=@"loc,{#10000},100,46,100,52" -locations_default(#23169,#10000,100,46,100,52) -hasLocation(#23168,#23169) +typeexprs(#23167,6,#23161,-6,"any[]") +#23168=@"loc,{#10000},99,32,99,36" +locations_default(#23168,#10000,99,32,99,36) +hasLocation(#23167,#23168) +exprContainers(#23167,#23161) +#23169=* +typeexprs(#23169,2,#23167,0,"any") +hasLocation(#23169,#22110) +exprContainers(#23169,#23161) +literals("any","any",#23169) +hasRestParameter(#23161) #23170=* -tokeninfo(#23170,8,#20001,931,"(") -#23171=@"loc,{#10000},100,54,100,54" -locations_default(#23171,#10000,100,54,100,54) +stmts(#23170,35,#22805,18,"type Re ... : any;") +#23171=@"loc,{#10000},100,3,100,91" +locations_default(#23171,#10000,100,3,100,91) hasLocation(#23170,#23171) +stmtContainers(#23170,#22805) #23172=* -tokeninfo(#23172,8,#20001,932,"...") -#23173=@"loc,{#10000},100,55,100,57" -locations_default(#23173,#10000,100,55,100,57) -hasLocation(#23172,#23173) -#23174=* -tokeninfo(#23174,6,#20001,933,"args") -hasLocation(#23174,#21352) +typeexprs(#23172,1,#23170,0,"ReturnType") +hasLocation(#23172,#22126) +enclosingStmt(#23172,#23170) +exprContainers(#23172,#22805) +literals("ReturnType","ReturnType",#23172) +typedecl(#23172,#22824) +#23173=* +scopes(#23173,12) +scopenodes(#23170,#23173) +scopenesting(#23173,#22808) +#23174=@"local_type_name;{T};{#23173}" +local_type_names(#23174,"T",#23173) #23175=* -tokeninfo(#23175,8,#20001,934,":") -#23176=@"loc,{#10000},100,62,100,62" -locations_default(#23176,#10000,100,62,100,62) +typeexprs(#23175,22,#23170,2,"T exten ... unction") +#23176=@"loc,{#10000},100,19,100,39" +locations_default(#23176,#10000,100,19,100,39) hasLocation(#23175,#23176) +enclosingStmt(#23175,#23170) +exprContainers(#23175,#22805) #23177=* -tokeninfo(#23177,7,#20001,935,"any") -hasLocation(#23177,#21362) +typeexprs(#23177,1,#23175,0,"T") +hasLocation(#23177,#22130) +enclosingStmt(#23177,#23170) +exprContainers(#23177,#22805) +literals("T","T",#23177) +typedecl(#23177,#23174) #23178=* -tokeninfo(#23178,8,#20001,936,"[") -#23179=@"loc,{#10000},100,67,100,67" -locations_default(#23179,#10000,100,67,100,67) -hasLocation(#23178,#23179) -#23180=* -tokeninfo(#23180,8,#20001,937,"]") -#23181=@"loc,{#10000},100,68,100,68" -locations_default(#23181,#10000,100,68,100,68) -hasLocation(#23180,#23181) +typeexprs(#23178,0,#23175,1,"AnyFunction") +hasLocation(#23178,#22134) +enclosingStmt(#23178,#23170) +exprContainers(#23178,#22805) +literals("AnyFunction","AnyFunction",#23178) +typebind(#23178,#22823) +#23179=* +typeexprs(#23179,28,#23170,1,"T exten ... R : any") +#23180=@"loc,{#10000},100,44,100,90" +locations_default(#23180,#10000,100,44,100,90) +hasLocation(#23179,#23180) +enclosingStmt(#23179,#23170) +exprContainers(#23179,#22805) +#23181=* +typeexprs(#23181,0,#23179,0,"T") +hasLocation(#23181,#22140) +enclosingStmt(#23181,#23170) +exprContainers(#23181,#22805) +literals("T","T",#23181) +typebind(#23181,#23174) #23182=* -tokeninfo(#23182,8,#20001,938,")") -#23183=@"loc,{#10000},100,69,100,69" -locations_default(#23183,#10000,100,69,100,69) -hasLocation(#23182,#23183) +scopes(#23182,16) +scopenodes(#23179,#23182) +scopenesting(#23182,#23173) +#23183=@"local_type_name;{R};{#23182}" +local_type_names(#23183,"R",#23182) #23184=* -tokeninfo(#23184,8,#20001,939,"=>") -#23185=@"loc,{#10000},100,71,100,72" -locations_default(#23185,#10000,100,71,100,72) +typeexprs(#23184,23,#23179,1,"(...arg ... infer R") +#23185=@"loc,{#10000},100,54,100,80" +locations_default(#23185,#10000,100,54,100,80) hasLocation(#23184,#23185) +enclosingStmt(#23184,#23170) +exprContainers(#23184,#22805) #23186=* -tokeninfo(#23186,7,#20001,940,"infer") -#23187=@"loc,{#10000},100,74,100,78" -locations_default(#23187,#10000,100,74,100,78) -hasLocation(#23186,#23187) -#23188=* -tokeninfo(#23188,6,#20001,941,"R") -hasLocation(#23188,#21357) +exprs(#23186,9,#23184,0,"(...arg ... infer R") +hasLocation(#23186,#23185) +enclosingStmt(#23186,#23170) +exprContainers(#23186,#22805) +#23187=* +scopes(#23187,1) +scopenodes(#23186,#23187) +scopenesting(#23187,#23182) +#23188=@"var;{args};{#23187}" +variables(#23188,"args",#23187) #23189=* -tokeninfo(#23189,8,#20001,942,"?") -#23190=@"loc,{#10000},100,82,100,82" -locations_default(#23190,#10000,100,82,100,82) -hasLocation(#23189,#23190) +exprs(#23189,78,#23186,0,"args") +hasLocation(#23189,#22148) +exprContainers(#23189,#23186) +literals("args","args",#23189) +decl(#23189,#23188) +#23190=@"var;{arguments};{#23187}" +variables(#23190,"arguments",#23187) +isArgumentsObject(#23190) #23191=* -tokeninfo(#23191,6,#20001,943,"R") -hasLocation(#23191,#21364) -#23192=* -tokeninfo(#23192,8,#20001,944,":") -#23193=@"loc,{#10000},100,86,100,86" -locations_default(#23193,#10000,100,86,100,86) -hasLocation(#23192,#23193) +typeexprs(#23191,29,#23186,-3,"infer R") +#23192=@"loc,{#10000},100,74,100,80" +locations_default(#23192,#10000,100,74,100,80) +hasLocation(#23191,#23192) +exprContainers(#23191,#23186) +#23193=* +typeexprs(#23193,22,#23191,0,"R") +hasLocation(#23193,#22164) +exprContainers(#23193,#23186) #23194=* -tokeninfo(#23194,7,#20001,945,"any") -hasLocation(#23194,#21366) +typeexprs(#23194,1,#23193,0,"R") +hasLocation(#23194,#22164) +exprContainers(#23194,#23186) +literals("R","R",#23194) +typedecl(#23194,#23183) #23195=* -tokeninfo(#23195,8,#20001,946,";") -#23196=@"loc,{#10000},100,91,100,91" -locations_default(#23196,#10000,100,91,100,91) +typeexprs(#23195,6,#23186,-6,"any[]") +#23196=@"loc,{#10000},100,64,100,68" +locations_default(#23196,#10000,100,64,100,68) hasLocation(#23195,#23196) +exprContainers(#23195,#23186) #23197=* -tokeninfo(#23197,8,#20001,947,"}") -hasLocation(#23197,#21644) +typeexprs(#23197,2,#23195,0,"any") +hasLocation(#23197,#22152) +exprContainers(#23197,#23186) +literals("any","any",#23197) +hasRestParameter(#23186) #23198=* -tokeninfo(#23198,0,#20001,948,"") -#23199=@"loc,{#10000},103,1,103,0" -locations_default(#23199,#10000,103,1,103,0) -hasLocation(#23198,#23199) +typeexprs(#23198,0,#23179,2,"R") +hasLocation(#23198,#22168) +enclosingStmt(#23198,#23170) +exprContainers(#23198,#22805) +literals("R","R",#23198) +typebind(#23198,#23183) +#23199=* +typeexprs(#23199,2,#23179,3,"any") +hasLocation(#23199,#22172) +enclosingStmt(#23199,#23170) +exprContainers(#23199,#22805) +literals("any","any",#23199) +isInstantiated(#22805) #23200=* entry_cfg_node(#23200,#20001) #23201=@"loc,{#10000},1,1,1,0" @@ -10098,108 +10077,108 @@ locations_default(#23201,#10000,1,1,1,0) hasLocation(#23200,#23201) #23202=* exit_cfg_node(#23202,#20001) -hasLocation(#23202,#23199) -successor(#20852,#20850) -successor(#21328,#23202) -successor(#21310,#21328) -successor(#21298,#21310) -successor(#21277,#21298) -successor(#21264,#21277) -successor(#21250,#21264) -successor(#21208,#21250) -successor(#21166,#21208) -successor(#21109,#21166) -successor(#21087,#21109) -successor(#21065,#21087) -successor(#21028,#21065) -successor(#21008,#21028) -successor(#20992,#21008) -successor(#20978,#20992) -successor(#20963,#20978) -successor(#20951,#20963) -successor(#20941,#20951) -successor(#20871,#20941) -successor(#20850,#20871) -successor(#20009,#20007) -successor(#20814,#20852) -successor(#20804,#20814) -successor(#20794,#20804) -successor(#20784,#20794) -successor(#20774,#20784) -successor(#20736,#20774) -successor(#20715,#20736) -successor(#20674,#20715) -successor(#20653,#20674) -successor(#20612,#20653) -successor(#20559,#20612) +hasLocation(#23202,#22177) +successor(#22807,#22805) +successor(#23170,#23202) +successor(#23156,#23170) +successor(#23147,#23156) +successor(#23132,#23147) +successor(#23123,#23132) +successor(#23113,#23123) +successor(#23081,#23113) +successor(#23049,#23081) +successor(#23005,#23049) +successor(#22989,#23005) +successor(#22973,#22989) +successor(#22945,#22973) +successor(#22930,#22945) +successor(#22918,#22930) +successor(#22908,#22918) +successor(#22896,#22908) +successor(#22887,#22896) +successor(#22880,#22887) +successor(#22825,#22880) +successor(#22805,#22825) +successor(#22185,#22183) +successor(#22777,#22807) +successor(#22770,#22777) +successor(#22763,#22770) +successor(#22756,#22763) +successor(#22749,#22756) +successor(#22722,#22749) +successor(#22707,#22722) +successor(#22676,#22707) +successor(#22661,#22676) +successor(#22630,#22661) +successor(#22591,#22630) #23203=* -entry_cfg_node(#23203,#20559) +entry_cfg_node(#23203,#22591) #23204=@"loc,{#10000},46,3,46,2" locations_default(#23204,#10000,46,3,46,2) hasLocation(#23203,#23204) #23205=* -exit_cfg_node(#23205,#20559) +exit_cfg_node(#23205,#22591) #23206=@"loc,{#10000},49,4,49,3" locations_default(#23206,#10000,49,4,49,3) hasLocation(#23205,#23206) -successor(#20590,#20594) -successor(#20602,#20606) -successor(#20608,#20604) -successor(#20606,#20608) -successor(#20604,#23205) -successor(#20594,#20598) -successor(#20600,#20596) -successor(#20598,#20600) -successor(#20596,#20602) -successor(#20569,#20590) -successor(#20566,#20569) -successor(#23203,#20566) -successor(#20525,#20559) +successor(#22613,#22617) +successor(#22623,#22627) +successor(#22628,#22625) +successor(#22627,#22628) +successor(#22625,#23205) +successor(#22617,#22621) +successor(#22622,#22619) +successor(#22621,#22622) +successor(#22619,#22623) +successor(#22599,#22613) +successor(#22597,#22599) +successor(#23203,#22597) +successor(#22566,#22591) #23207=* -entry_cfg_node(#23207,#20525) +entry_cfg_node(#23207,#22566) #23208=@"loc,{#10000},42,3,42,2" locations_default(#23208,#10000,42,3,42,2) hasLocation(#23207,#23208) #23209=* -exit_cfg_node(#23209,#20525) +exit_cfg_node(#23209,#22566) #23210=@"loc,{#10000},44,4,44,3" locations_default(#23210,#10000,44,4,44,3) hasLocation(#23209,#23210) -successor(#20549,#20551) -successor(#20551,#20555) -successor(#20557,#20553) -successor(#20555,#20557) -successor(#20553,#23209) -successor(#20535,#20549) -successor(#20532,#20535) -successor(#23207,#20532) -successor(#20505,#20525) -successor(#20489,#20505) -successor(#20468,#20489) -successor(#20443,#20468) -successor(#20418,#20443) -successor(#20392,#20418) -successor(#20366,#20392) -successor(#20343,#20366) -successor(#20320,#20343) -successor(#20304,#20320) -successor(#20292,#20304) -successor(#20282,#20292) -successor(#20249,#20282) -successor(#20230,#20249) -successor(#20213,#20230) -successor(#20195,#20213) -successor(#20177,#20195) -successor(#20156,#20177) -successor(#20144,#20156) -successor(#20129,#20144) -successor(#20119,#20129) -successor(#20109,#20119) -successor(#20099,#20109) -successor(#20048,#20099) -successor(#20561,#20048) -successor(#20527,#20561) -successor(#20007,#20527) -successor(#23200,#20009) +successor(#22583,#22585) +successor(#22585,#22589) +successor(#22590,#22587) +successor(#22589,#22590) +successor(#22587,#23209) +successor(#22574,#22583) +successor(#22572,#22574) +successor(#23207,#22572) +successor(#22552,#22566) +successor(#22541,#22552) +successor(#22526,#22541) +successor(#22507,#22526) +successor(#22488,#22507) +successor(#22471,#22488) +successor(#22454,#22471) +successor(#22438,#22454) +successor(#22422,#22438) +successor(#22410,#22422) +successor(#22401,#22410) +successor(#22394,#22401) +successor(#22370,#22394) +successor(#22355,#22370) +successor(#22342,#22355) +successor(#22328,#22342) +successor(#22315,#22328) +successor(#22298,#22315) +successor(#22289,#22298) +successor(#22277,#22289) +successor(#22270,#22277) +successor(#22263,#22270) +successor(#22256,#22263) +successor(#22223,#22256) +successor(#22593,#22223) +successor(#22568,#22593) +successor(#22183,#22568) +successor(#23200,#22185) numlines(#10000,102,79,38) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/ctordecl.ts.trap b/javascript/extractor/tests/ts/output/trap/ctordecl.ts.trap index 65613631b9e..7718c233c3b 100644 --- a/javascript/extractor/tests/ts/output/trap/ctordecl.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/ctordecl.ts.trap @@ -9,279 +9,277 @@ 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 ... y) {}\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," y = 42;"," +") +#20005=@"loc,{#10000},2,1,2,9" +locations_default(#20005,#10000,2,1,2,9) +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," constructor(x:string);"," +") +#20007=@"loc,{#10000},3,1,3,24" +locations_default(#20007,#10000,3,1,3,24) hasLocation(#20006,#20007) -enclosingStmt(#20006,#20005) -exprContainers(#20006,#20001) -literals("A","A",#20006) -decl(#20006,#20003) -typedecl(#20006,#20004) +indentation(#10000,3," ",2) #20008=* -scopes(#20008,10) -scopenodes(#20005,#20008) -scopenesting(#20008,#20000) -#20009=* -properties(#20009,#20005,2,8,"y = 42;") -#20010=@"loc,{#10000},2,3,2,9" -locations_default(#20010,#10000,2,3,2,9) -hasLocation(#20009,#20010) -#20011=* -exprs(#20011,0,#20009,0,"y") -#20012=@"loc,{#10000},2,3,2,3" -locations_default(#20012,#10000,2,3,2,3) -hasLocation(#20011,#20012) -enclosingStmt(#20011,#20005) -exprContainers(#20011,#20001) -literals("y","y",#20011) -#20013=* +lines(#20008,#20001," constructor(x:any) {}"," +") +#20009=@"loc,{#10000},4,1,4,23" +locations_default(#20009,#10000,4,1,4,23) +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=* -exprs(#20014,3,#20009,1,"42") -#20015=@"loc,{#10000},2,7,2,8" -locations_default(#20015,#10000,2,7,2,8) +tokeninfo(#20014,6,#20001,1,"A") +#20015=@"loc,{#10000},1,7,1,7" +locations_default(#20015,#10000,1,7,1,7) hasLocation(#20014,#20015) -exprContainers(#20014,#20013) -literals("42","42",#20014) #20016=* -properties(#20016,#20005,3,0,"constru ... tring);") -#20017=@"loc,{#10000},3,3,3,24" -locations_default(#20017,#10000,3,3,3,24) +tokeninfo(#20016,8,#20001,2,"{") +#20017=@"loc,{#10000},1,9,1,9" +locations_default(#20017,#10000,1,9,1,9) hasLocation(#20016,#20017) #20018=* -exprs(#20018,0,#20016,0,"constru ... tring);") -hasLocation(#20018,#20017) -enclosingStmt(#20018,#20005) -exprContainers(#20018,#20001) -literals("constructor","constructor",#20018) -exprs(#20013,9,#20016,1,"constru ... tring);") -hasLocation(#20013,#20017) -enclosingStmt(#20013,#20005) -exprContainers(#20013,#20001) -#20019=* -scopes(#20019,1) -scopenodes(#20013,#20019) -scopenesting(#20019,#20008) -#20020=@"var;{x};{#20019}" -variables(#20020,"x",#20019) -#20021=* -exprs(#20021,78,#20013,0,"x") -#20022=@"loc,{#10000},3,15,3,15" -locations_default(#20022,#10000,3,15,3,15) -hasLocation(#20021,#20022) -exprContainers(#20021,#20013) -literals("x","x",#20021) -decl(#20021,#20020) -#20023=@"var;{arguments};{#20019}" -variables(#20023,"arguments",#20019) -isArgumentsObject(#20023) +tokeninfo(#20018,6,#20001,3,"y") +#20019=@"loc,{#10000},2,3,2,3" +locations_default(#20019,#10000,2,3,2,3) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,4,"=") +#20021=@"loc,{#10000},2,5,2,5" +locations_default(#20021,#10000,2,5,2,5) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,3,#20001,5,"42") +#20023=@"loc,{#10000},2,7,2,8" +locations_default(#20023,#10000,2,7,2,8) +hasLocation(#20022,#20023) #20024=* -typeexprs(#20024,2,#20013,-6,"string") -#20025=@"loc,{#10000},3,17,3,22" -locations_default(#20025,#10000,3,17,3,22) +tokeninfo(#20024,8,#20001,6,";") +#20025=@"loc,{#10000},2,9,2,9" +locations_default(#20025,#10000,2,9,2,9) hasLocation(#20024,#20025) -exprContainers(#20024,#20013) -literals("string","string",#20024) -numlines(#20013,1,1,0) -isMethod(#20016) #20026=* -properties(#20026,#20005,4,0,"constru ... any) {}") -#20027=@"loc,{#10000},4,3,4,23" -locations_default(#20027,#10000,4,3,4,23) +tokeninfo(#20026,7,#20001,7,"constructor") +#20027=@"loc,{#10000},3,3,3,13" +locations_default(#20027,#10000,3,3,3,13) hasLocation(#20026,#20027) #20028=* -exprs(#20028,0,#20026,0,"constru ... any) {}") -hasLocation(#20028,#20027) -enclosingStmt(#20028,#20005) -exprContainers(#20028,#20001) -literals("constructor","constructor",#20028) -#20029=* -exprs(#20029,9,#20026,1,"constru ... any) {}") -hasLocation(#20029,#20027) -enclosingStmt(#20029,#20005) -exprContainers(#20029,#20001) +tokeninfo(#20028,8,#20001,8,"(") +#20029=@"loc,{#10000},3,14,3,14" +locations_default(#20029,#10000,3,14,3,14) +hasLocation(#20028,#20029) #20030=* -scopes(#20030,1) -scopenodes(#20029,#20030) -scopenesting(#20030,#20008) -#20031=@"var;{x};{#20030}" -variables(#20031,"x",#20030) +tokeninfo(#20030,6,#20001,9,"x") +#20031=@"loc,{#10000},3,15,3,15" +locations_default(#20031,#10000,3,15,3,15) +hasLocation(#20030,#20031) #20032=* -exprs(#20032,78,#20029,0,"x") -#20033=@"loc,{#10000},4,15,4,15" -locations_default(#20033,#10000,4,15,4,15) +tokeninfo(#20032,8,#20001,10,":") +#20033=@"loc,{#10000},3,16,3,16" +locations_default(#20033,#10000,3,16,3,16) hasLocation(#20032,#20033) -exprContainers(#20032,#20029) -literals("x","x",#20032) -decl(#20032,#20031) -#20034=@"var;{arguments};{#20030}" -variables(#20034,"arguments",#20030) -isArgumentsObject(#20034) -#20035=* -typeexprs(#20035,2,#20029,-6,"any") -#20036=@"loc,{#10000},4,17,4,19" -locations_default(#20036,#10000,4,17,4,19) -hasLocation(#20035,#20036) -exprContainers(#20035,#20029) -literals("any","any",#20035) -#20037=* -stmts(#20037,1,#20029,-2,"{}") -#20038=@"loc,{#10000},4,22,4,23" -locations_default(#20038,#10000,4,22,4,23) -hasLocation(#20037,#20038) -stmtContainers(#20037,#20029) -numlines(#20029,1,1,0) -isMethod(#20026) -#20039=* -lines(#20039,#20001,"class A {"," -") -#20040=@"loc,{#10000},1,1,1,9" -locations_default(#20040,#10000,1,1,1,9) -hasLocation(#20039,#20040) -#20041=* -lines(#20041,#20001," y = 42;"," -") -#20042=@"loc,{#10000},2,1,2,9" -locations_default(#20042,#10000,2,1,2,9) -hasLocation(#20041,#20042) -indentation(#10000,2," ",2) -#20043=* -lines(#20043,#20001," constructor(x:string);"," -") -#20044=@"loc,{#10000},3,1,3,24" -locations_default(#20044,#10000,3,1,3,24) -hasLocation(#20043,#20044) -indentation(#10000,3," ",2) -#20045=* -lines(#20045,#20001," constructor(x:any) {}"," -") -#20046=@"loc,{#10000},4,1,4,23" -locations_default(#20046,#10000,4,1,4,23) -hasLocation(#20045,#20046) -indentation(#10000,4," ",2) -#20047=* -lines(#20047,#20001,"}","") -#20048=@"loc,{#10000},5,1,5,1" -locations_default(#20048,#10000,5,1,5,1) -hasLocation(#20047,#20048) -numlines(#20001,5,5,0) -#20049=* -tokeninfo(#20049,7,#20001,0,"class") -#20050=@"loc,{#10000},1,1,1,5" -locations_default(#20050,#10000,1,1,1,5) -hasLocation(#20049,#20050) -#20051=* -tokeninfo(#20051,6,#20001,1,"A") -hasLocation(#20051,#20007) +#20034=* +tokeninfo(#20034,7,#20001,11,"string") +#20035=@"loc,{#10000},3,17,3,22" +locations_default(#20035,#10000,3,17,3,22) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,12,")") +#20037=@"loc,{#10000},3,23,3,23" +locations_default(#20037,#10000,3,23,3,23) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,8,#20001,13,";") +#20039=@"loc,{#10000},3,24,3,24" +locations_default(#20039,#10000,3,24,3,24) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,7,#20001,14,"constructor") +#20041=@"loc,{#10000},4,3,4,13" +locations_default(#20041,#10000,4,3,4,13) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,15,"(") +#20043=@"loc,{#10000},4,14,4,14" +locations_default(#20043,#10000,4,14,4,14) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,6,#20001,16,"x") +#20045=@"loc,{#10000},4,15,4,15" +locations_default(#20045,#10000,4,15,4,15) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,17,":") +#20047=@"loc,{#10000},4,16,4,16" +locations_default(#20047,#10000,4,16,4,16) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,7,#20001,18,"any") +#20049=@"loc,{#10000},4,17,4,19" +locations_default(#20049,#10000,4,17,4,19) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,19,")") +#20051=@"loc,{#10000},4,20,4,20" +locations_default(#20051,#10000,4,20,4,20) +hasLocation(#20050,#20051) #20052=* -tokeninfo(#20052,8,#20001,2,"{") -#20053=@"loc,{#10000},1,9,1,9" -locations_default(#20053,#10000,1,9,1,9) +tokeninfo(#20052,8,#20001,20,"{") +#20053=@"loc,{#10000},4,22,4,22" +locations_default(#20053,#10000,4,22,4,22) hasLocation(#20052,#20053) #20054=* -tokeninfo(#20054,6,#20001,3,"y") -hasLocation(#20054,#20012) -#20055=* -tokeninfo(#20055,8,#20001,4,"=") -#20056=@"loc,{#10000},2,5,2,5" -locations_default(#20056,#10000,2,5,2,5) -hasLocation(#20055,#20056) +tokeninfo(#20054,8,#20001,21,"}") +#20055=@"loc,{#10000},4,23,4,23" +locations_default(#20055,#10000,4,23,4,23) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,8,#20001,22,"}") +hasLocation(#20056,#20011) #20057=* -tokeninfo(#20057,3,#20001,5,"42") -hasLocation(#20057,#20015) -#20058=* -tokeninfo(#20058,8,#20001,6,";") -#20059=@"loc,{#10000},2,9,2,9" -locations_default(#20059,#10000,2,9,2,9) -hasLocation(#20058,#20059) -#20060=* -tokeninfo(#20060,7,#20001,7,"constructor") -#20061=@"loc,{#10000},3,3,3,13" -locations_default(#20061,#10000,3,3,3,13) -hasLocation(#20060,#20061) +tokeninfo(#20057,0,#20001,23,"") +#20058=@"loc,{#10000},5,2,5,1" +locations_default(#20058,#10000,5,2,5,1) +hasLocation(#20057,#20058) +toplevels(#20001,0) +#20059=@"loc,{#10000},1,1,5,1" +locations_default(#20059,#10000,1,1,5,1) +hasLocation(#20001,#20059) +#20060=@"var;{A};{#20000}" +variables(#20060,"A",#20000) +#20061=@"local_type_name;{A};{#20000}" +local_type_names(#20061,"A",#20000) #20062=* -tokeninfo(#20062,8,#20001,8,"(") -#20063=@"loc,{#10000},3,14,3,14" -locations_default(#20063,#10000,3,14,3,14) -hasLocation(#20062,#20063) +stmts(#20062,26,#20001,0,"class A ... y) {}\n}") +hasLocation(#20062,#20059) +stmtContainers(#20062,#20001) +#20063=* +exprs(#20063,78,#20062,0,"A") +hasLocation(#20063,#20015) +enclosingStmt(#20063,#20062) +exprContainers(#20063,#20001) +literals("A","A",#20063) +decl(#20063,#20060) +typedecl(#20063,#20061) #20064=* -tokeninfo(#20064,6,#20001,9,"x") -hasLocation(#20064,#20022) +scopes(#20064,10) +scopenodes(#20062,#20064) +scopenesting(#20064,#20000) #20065=* -tokeninfo(#20065,8,#20001,10,":") -#20066=@"loc,{#10000},3,16,3,16" -locations_default(#20066,#10000,3,16,3,16) +properties(#20065,#20062,2,8,"y = 42;") +#20066=@"loc,{#10000},2,3,2,9" +locations_default(#20066,#10000,2,3,2,9) hasLocation(#20065,#20066) #20067=* -tokeninfo(#20067,7,#20001,11,"string") -hasLocation(#20067,#20025) +exprs(#20067,0,#20065,0,"y") +hasLocation(#20067,#20019) +enclosingStmt(#20067,#20062) +exprContainers(#20067,#20001) +literals("y","y",#20067) #20068=* -tokeninfo(#20068,8,#20001,12,")") -#20069=@"loc,{#10000},3,23,3,23" -locations_default(#20069,#10000,3,23,3,23) -hasLocation(#20068,#20069) +#20069=* +exprs(#20069,3,#20065,1,"42") +hasLocation(#20069,#20023) +exprContainers(#20069,#20068) +literals("42","42",#20069) #20070=* -tokeninfo(#20070,8,#20001,13,";") -#20071=@"loc,{#10000},3,24,3,24" -locations_default(#20071,#10000,3,24,3,24) +properties(#20070,#20062,3,0,"constru ... tring);") +#20071=@"loc,{#10000},3,3,3,24" +locations_default(#20071,#10000,3,3,3,24) hasLocation(#20070,#20071) #20072=* -tokeninfo(#20072,7,#20001,14,"constructor") -#20073=@"loc,{#10000},4,3,4,13" -locations_default(#20073,#10000,4,3,4,13) -hasLocation(#20072,#20073) -#20074=* -tokeninfo(#20074,8,#20001,15,"(") -#20075=@"loc,{#10000},4,14,4,14" -locations_default(#20075,#10000,4,14,4,14) -hasLocation(#20074,#20075) -#20076=* -tokeninfo(#20076,6,#20001,16,"x") -hasLocation(#20076,#20033) +exprs(#20072,0,#20070,0,"constru ... tring);") +hasLocation(#20072,#20071) +enclosingStmt(#20072,#20062) +exprContainers(#20072,#20001) +literals("constructor","constructor",#20072) +exprs(#20068,9,#20070,1,"constru ... tring);") +hasLocation(#20068,#20071) +enclosingStmt(#20068,#20062) +exprContainers(#20068,#20001) +#20073=* +scopes(#20073,1) +scopenodes(#20068,#20073) +scopenesting(#20073,#20064) +#20074=@"var;{x};{#20073}" +variables(#20074,"x",#20073) +#20075=* +exprs(#20075,78,#20068,0,"x") +hasLocation(#20075,#20031) +exprContainers(#20075,#20068) +literals("x","x",#20075) +decl(#20075,#20074) +#20076=@"var;{arguments};{#20073}" +variables(#20076,"arguments",#20073) +isArgumentsObject(#20076) #20077=* -tokeninfo(#20077,8,#20001,17,":") -#20078=@"loc,{#10000},4,16,4,16" -locations_default(#20078,#10000,4,16,4,16) -hasLocation(#20077,#20078) -#20079=* -tokeninfo(#20079,7,#20001,18,"any") -hasLocation(#20079,#20036) +typeexprs(#20077,2,#20068,-6,"string") +hasLocation(#20077,#20035) +exprContainers(#20077,#20068) +literals("string","string",#20077) +isMethod(#20070) +#20078=* +properties(#20078,#20062,4,0,"constru ... any) {}") +#20079=@"loc,{#10000},4,3,4,23" +locations_default(#20079,#10000,4,3,4,23) +hasLocation(#20078,#20079) #20080=* -tokeninfo(#20080,8,#20001,19,")") -#20081=@"loc,{#10000},4,20,4,20" -locations_default(#20081,#10000,4,20,4,20) -hasLocation(#20080,#20081) +exprs(#20080,0,#20078,0,"constru ... any) {}") +hasLocation(#20080,#20079) +enclosingStmt(#20080,#20062) +exprContainers(#20080,#20001) +literals("constructor","constructor",#20080) +#20081=* +exprs(#20081,9,#20078,1,"constru ... any) {}") +hasLocation(#20081,#20079) +enclosingStmt(#20081,#20062) +exprContainers(#20081,#20001) #20082=* -tokeninfo(#20082,8,#20001,20,"{") -#20083=@"loc,{#10000},4,22,4,22" -locations_default(#20083,#10000,4,22,4,22) -hasLocation(#20082,#20083) +scopes(#20082,1) +scopenodes(#20081,#20082) +scopenesting(#20082,#20064) +#20083=@"var;{x};{#20082}" +variables(#20083,"x",#20082) #20084=* -tokeninfo(#20084,8,#20001,21,"}") -#20085=@"loc,{#10000},4,23,4,23" -locations_default(#20085,#10000,4,23,4,23) -hasLocation(#20084,#20085) +exprs(#20084,78,#20081,0,"x") +hasLocation(#20084,#20045) +exprContainers(#20084,#20081) +literals("x","x",#20084) +decl(#20084,#20083) +#20085=@"var;{arguments};{#20082}" +variables(#20085,"arguments",#20082) +isArgumentsObject(#20085) #20086=* -tokeninfo(#20086,8,#20001,22,"}") -hasLocation(#20086,#20048) +typeexprs(#20086,2,#20081,-6,"any") +hasLocation(#20086,#20049) +exprContainers(#20086,#20081) +literals("any","any",#20086) #20087=* -tokeninfo(#20087,0,#20001,23,"") -#20088=@"loc,{#10000},5,2,5,1" -locations_default(#20088,#10000,5,2,5,1) +stmts(#20087,1,#20081,-2,"{}") +#20088=@"loc,{#10000},4,22,4,23" +locations_default(#20088,#10000,4,22,4,23) hasLocation(#20087,#20088) +stmtContainers(#20087,#20081) +isMethod(#20078) #20089=* entry_cfg_node(#20089,#20001) #20090=@"loc,{#10000},1,1,1,0" @@ -289,29 +287,29 @@ locations_default(#20090,#10000,1,1,1,0) hasLocation(#20089,#20090) #20091=* exit_cfg_node(#20091,#20001) -hasLocation(#20091,#20088) -successor(#20014,#20009) -successor(#20011,#20014) -successor(#20029,#20026) +hasLocation(#20091,#20058) +successor(#20069,#20065) +successor(#20067,#20069) +successor(#20081,#20078) #20092=* -entry_cfg_node(#20092,#20029) +entry_cfg_node(#20092,#20081) #20093=@"loc,{#10000},4,3,4,2" locations_default(#20093,#10000,4,3,4,2) hasLocation(#20092,#20093) -successor(#20009,#20037) +successor(#20065,#20087) #20094=* -exit_cfg_node(#20094,#20029) +exit_cfg_node(#20094,#20081) #20095=@"loc,{#10000},4,24,4,23" locations_default(#20095,#10000,4,24,4,23) hasLocation(#20094,#20095) -successor(#20037,#20094) -successor(#20032,#20011) -successor(#20092,#20032) -successor(#20028,#20029) -successor(#20026,#20005) -successor(#20016,#20028) -successor(#20006,#20016) -successor(#20005,#20091) -successor(#20089,#20006) +successor(#20087,#20094) +successor(#20084,#20067) +successor(#20092,#20084) +successor(#20080,#20081) +successor(#20078,#20062) +successor(#20070,#20080) +successor(#20063,#20070) +successor(#20062,#20091) +successor(#20089,#20063) numlines(#10000,5,5,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/declareClass.ts.trap b/javascript/extractor/tests/ts/output/trap/declareClass.ts.trap index 27aaf5a4664..8383d398484 100644 --- a/javascript/extractor/tests/ts/output/trap/declareClass.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/declareClass.ts.trap @@ -9,94 +9,93 @@ 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,26,#20001,0,"declare class C {}") -#20004=@"loc,{#10000},1,1,1,18" -locations_default(#20004,#10000,1,1,1,18) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -hasDeclareKeyword(#20003) -#20005=* -exprs(#20005,78,#20003,0,"C") -#20006=@"loc,{#10000},1,15,1,15" -locations_default(#20006,#10000,1,15,1,15) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -literals("C","C",#20005) -#20007=@"var;{C};{#20000}" -variables(#20007,"C",#20000) -decl(#20005,#20007) -#20008=* -scopes(#20008,10) -scopenodes(#20003,#20008) -scopenesting(#20008,#20000) -#20009=* -properties(#20009,#20003,2,0,"constructor() {}") -#20010=@"loc,{#10000},1,17,1,16" -locations_default(#20010,#10000,1,17,1,16) -hasLocation(#20009,#20010) -#20011=* -exprs(#20011,0,#20009,0,"constructor") -hasLocation(#20011,#20010) -enclosingStmt(#20011,#20003) -exprContainers(#20011,#20001) -literals("constructor","constructor",#20011) -#20012=* -exprs(#20012,9,#20009,1,"() {}") -hasLocation(#20012,#20010) -enclosingStmt(#20012,#20003) -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) -#20016=* -lines(#20016,#20001,"declare class C {}"," +#20002=* +lines(#20002,#20001,"declare class C {}"," ") -hasLocation(#20016,#20004) +#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,"declare") +#20005=@"loc,{#10000},1,1,1,7" +locations_default(#20005,#10000,1,1,1,7) +hasLocation(#20004,#20005) +#20006=* +tokeninfo(#20006,7,#20001,1,"class") +#20007=@"loc,{#10000},1,9,1,13" +locations_default(#20007,#10000,1,9,1,13) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,6,#20001,2,"C") +#20009=@"loc,{#10000},1,15,1,15" +locations_default(#20009,#10000,1,15,1,15) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,3,"{") +#20011=@"loc,{#10000},1,17,1,17" +locations_default(#20011,#10000,1,17,1,17) +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,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=* -tokeninfo(#20017,7,#20001,0,"declare") -#20018=@"loc,{#10000},1,1,1,7" -locations_default(#20018,#10000,1,1,1,7) -hasLocation(#20017,#20018) -#20019=* -tokeninfo(#20019,7,#20001,1,"class") -#20020=@"loc,{#10000},1,9,1,13" -locations_default(#20020,#10000,1,9,1,13) -hasLocation(#20019,#20020) +stmts(#20017,26,#20001,0,"declare class C {}") +hasLocation(#20017,#20003) +stmtContainers(#20017,#20001) +hasDeclareKeyword(#20017) +#20018=* +exprs(#20018,78,#20017,0,"C") +hasLocation(#20018,#20009) +enclosingStmt(#20018,#20017) +exprContainers(#20018,#20001) +literals("C","C",#20018) +#20019=@"var;{C};{#20000}" +variables(#20019,"C",#20000) +decl(#20018,#20019) +#20020=* +scopes(#20020,10) +scopenodes(#20017,#20020) +scopenesting(#20020,#20000) #20021=* -tokeninfo(#20021,6,#20001,2,"C") -hasLocation(#20021,#20006) -#20022=* -tokeninfo(#20022,8,#20001,3,"{") -#20023=@"loc,{#10000},1,17,1,17" -locations_default(#20023,#10000,1,17,1,17) -hasLocation(#20022,#20023) +properties(#20021,#20017,2,0,"constructor() {}") +#20022=@"loc,{#10000},1,17,1,16" +locations_default(#20022,#10000,1,17,1,16) +hasLocation(#20021,#20022) +#20023=* +exprs(#20023,0,#20021,0,"constructor") +hasLocation(#20023,#20022) +enclosingStmt(#20023,#20017) +exprContainers(#20023,#20001) +literals("constructor","constructor",#20023) #20024=* -tokeninfo(#20024,8,#20001,4,"}") -#20025=@"loc,{#10000},1,18,1,18" -locations_default(#20025,#10000,1,18,1,18) -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,#20017) +exprContainers(#20024,#20001) +#20025=* +scopes(#20025,1) +scopenodes(#20024,#20025) +scopenesting(#20025,#20020) +#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" @@ -104,8 +103,8 @@ locations_default(#20029,#10000,1,1,1,0) hasLocation(#20028,#20029) #20030=* exit_cfg_node(#20030,#20001) -hasLocation(#20030,#20027) -successor(#20003,#20030) -successor(#20028,#20003) +hasLocation(#20030,#20015) +successor(#20017,#20030) +successor(#20028,#20017) numlines(#10000,1,1,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/decorators.ts.trap b/javascript/extractor/tests/ts/output/trap/decorators.ts.trap index c350394cdeb..1c3b9822670 100644 --- a/javascript/extractor/tests/ts/output/trap/decorators.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/decorators.ts.trap @@ -9,578 +9,575 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,15,0" -locations_default(#20002,#10000,1,1,15,0) -hasLocation(#20001,#20002) -#20003=@"module;{#10000},1,1" -scopes(#20003,3) -scopenodes(#20001,#20003) -scopenesting(#20003,#20000) -isModule(#20001) -#20004=@"var;{fun};{#20003}" -variables(#20004,"fun",#20003) -#20005=@"var;{Class};{#20003}" -variables(#20005,"Class",#20003) -#20006=@"var;{Class2};{#20003}" -variables(#20006,"Class2",#20003) -#20007=@"local_type_name;{Class};{#20003}" -local_type_names(#20007,"Class",#20003) -#20008=@"local_type_name;{Class2};{#20003}" -local_type_names(#20008,"Class2",#20003) -#20009=* -stmts(#20009,26,#20001,0,"class C ... mber;\n}") -#20010=@"loc,{#10000},2,1,8,1" -locations_default(#20010,#10000,2,1,8,1) -hasLocation(#20009,#20010) -stmtContainers(#20009,#20001) -#20011=* -exprs(#20011,94,#20009,-2,"@classDecorator") -#20012=@"loc,{#10000},1,1,1,15" -locations_default(#20012,#10000,1,1,1,15) -hasLocation(#20011,#20012) -enclosingStmt(#20011,#20009) -exprContainers(#20011,#20001) -#20013=* -exprs(#20013,79,#20011,0,"classDecorator") -#20014=@"loc,{#10000},1,2,1,15" -locations_default(#20014,#10000,1,2,1,15) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20009) -exprContainers(#20013,#20001) -literals("classDecorator","classDecorator",#20013) -#20015=@"var;{classDecorator};{#20000}" -variables(#20015,"classDecorator",#20000) -bind(#20013,#20015) +#20002=* +lines(#20002,#20001,"@classDecorator"," +") +#20003=@"loc,{#10000},1,1,1,15" +locations_default(#20003,#10000,1,1,1,15) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"class Class {"," +") +#20005=@"loc,{#10000},2,1,2,13" +locations_default(#20005,#10000,2,1,2,13) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001," @methodDecorator"," +") +#20007=@"loc,{#10000},3,1,3,18" +locations_default(#20007,#10000,3,1,3,18) +hasLocation(#20006,#20007) +indentation(#10000,3," ",2) +#20008=* +lines(#20008,#20001," method(): number { return this.field }"," +") +#20009=@"loc,{#10000},4,1,4,40" +locations_default(#20009,#10000,4,1,4,40) +hasLocation(#20008,#20009) +indentation(#10000,4," ",2) +#20010=* +lines(#20010,#20001," "," +") +#20011=@"loc,{#10000},5,1,5,2" +locations_default(#20011,#10000,5,1,5,2) +hasLocation(#20010,#20011) +#20012=* +lines(#20012,#20001," @fieldDecorator"," +") +#20013=@"loc,{#10000},6,1,6,17" +locations_default(#20013,#10000,6,1,6,17) +hasLocation(#20012,#20013) +indentation(#10000,6," ",2) +#20014=* +lines(#20014,#20001," field: number;"," +") +#20015=@"loc,{#10000},7,1,7,16" +locations_default(#20015,#10000,7,1,7,16) +hasLocation(#20014,#20015) +indentation(#10000,7," ",2) #20016=* -exprs(#20016,78,#20009,0,"Class") -#20017=@"loc,{#10000},2,7,2,11" -locations_default(#20017,#10000,2,7,2,11) +lines(#20016,#20001,"}"," +") +#20017=@"loc,{#10000},8,1,8,1" +locations_default(#20017,#10000,8,1,8,1) hasLocation(#20016,#20017) -enclosingStmt(#20016,#20009) -exprContainers(#20016,#20001) -literals("Class","Class",#20016) -decl(#20016,#20005) -typedecl(#20016,#20007) #20018=* -scopes(#20018,10) -scopenodes(#20009,#20018) -scopenesting(#20018,#20003) -#20019=* -properties(#20019,#20009,2,0,"method( ... field }") -#20020=@"loc,{#10000},4,3,4,40" -locations_default(#20020,#10000,4,3,4,40) -hasLocation(#20019,#20020) -#20021=* -exprs(#20021,94,#20019,-1,"@methodDecorator") -#20022=@"loc,{#10000},3,3,3,18" -locations_default(#20022,#10000,3,3,3,18) -hasLocation(#20021,#20022) -enclosingStmt(#20021,#20009) -exprContainers(#20021,#20001) -#20023=* -exprs(#20023,79,#20021,0,"methodDecorator") -#20024=@"loc,{#10000},3,4,3,18" -locations_default(#20024,#10000,3,4,3,18) -hasLocation(#20023,#20024) -enclosingStmt(#20023,#20009) -exprContainers(#20023,#20001) -literals("methodDecorator","methodDecorator",#20023) -#20025=@"var;{methodDecorator};{#20000}" -variables(#20025,"methodDecorator",#20000) -bind(#20023,#20025) +lines(#20018,#20001,""," +") +#20019=@"loc,{#10000},9,1,9,0" +locations_default(#20019,#10000,9,1,9,0) +hasLocation(#20018,#20019) +#20020=* +lines(#20020,#20001,"@functionDecorator"," +") +#20021=@"loc,{#10000},10,1,10,18" +locations_default(#20021,#10000,10,1,10,18) +hasLocation(#20020,#20021) +#20022=* +lines(#20022,#20001,"function fun() {}"," +") +#20023=@"loc,{#10000},11,1,11,17" +locations_default(#20023,#10000,11,1,11,17) +hasLocation(#20022,#20023) +#20024=* +lines(#20024,#20001,""," +") +#20025=@"loc,{#10000},12,1,12,0" +locations_default(#20025,#10000,12,1,12,0) +hasLocation(#20024,#20025) #20026=* -exprs(#20026,0,#20019,0,"method") -#20027=@"loc,{#10000},4,3,4,8" -locations_default(#20027,#10000,4,3,4,8) +lines(#20026,#20001,"@classDecorator2"," +") +#20027=@"loc,{#10000},13,1,13,16" +locations_default(#20027,#10000,13,1,13,16) hasLocation(#20026,#20027) -enclosingStmt(#20026,#20009) -exprContainers(#20026,#20001) -literals("method","method",#20026) #20028=* -exprs(#20028,9,#20019,1,"method( ... field }") -hasLocation(#20028,#20020) -enclosingStmt(#20028,#20009) -exprContainers(#20028,#20001) -#20029=* -scopes(#20029,1) -scopenodes(#20028,#20029) -scopenesting(#20029,#20018) -#20030=@"var;{arguments};{#20029}" -variables(#20030,"arguments",#20029) -isArgumentsObject(#20030) -#20031=* -typeexprs(#20031,2,#20028,-3,"number") -#20032=@"loc,{#10000},4,13,4,18" -locations_default(#20032,#10000,4,13,4,18) -hasLocation(#20031,#20032) -exprContainers(#20031,#20028) -literals("number","number",#20031) -#20033=* -stmts(#20033,1,#20028,-2,"{ retur ... field }") -#20034=@"loc,{#10000},4,20,4,40" -locations_default(#20034,#10000,4,20,4,40) -hasLocation(#20033,#20034) -stmtContainers(#20033,#20028) -#20035=* -stmts(#20035,9,#20033,0,"return this.field") -#20036=@"loc,{#10000},4,22,4,38" -locations_default(#20036,#10000,4,22,4,38) -hasLocation(#20035,#20036) -stmtContainers(#20035,#20028) -#20037=* -exprs(#20037,14,#20035,0,"this.field") -#20038=@"loc,{#10000},4,29,4,38" -locations_default(#20038,#10000,4,29,4,38) -hasLocation(#20037,#20038) -enclosingStmt(#20037,#20035) -exprContainers(#20037,#20028) -#20039=* -exprs(#20039,6,#20037,0,"this") -#20040=@"loc,{#10000},4,29,4,32" -locations_default(#20040,#10000,4,29,4,32) -hasLocation(#20039,#20040) -enclosingStmt(#20039,#20035) -exprContainers(#20039,#20028) -#20041=* -exprs(#20041,0,#20037,1,"field") -#20042=@"loc,{#10000},4,34,4,38" -locations_default(#20042,#10000,4,34,4,38) -hasLocation(#20041,#20042) -enclosingStmt(#20041,#20035) -exprContainers(#20041,#20028) -literals("field","field",#20041) -numlines(#20028,1,1,0) -isMethod(#20019) -#20043=* -properties(#20043,#20009,3,8,"field: number;") -#20044=@"loc,{#10000},7,3,7,16" -locations_default(#20044,#10000,7,3,7,16) -hasLocation(#20043,#20044) -#20045=* -exprs(#20045,94,#20043,-1,"@fieldDecorator") -#20046=@"loc,{#10000},6,3,6,17" -locations_default(#20046,#10000,6,3,6,17) -hasLocation(#20045,#20046) -enclosingStmt(#20045,#20009) -exprContainers(#20045,#20001) -#20047=* -exprs(#20047,79,#20045,0,"fieldDecorator") -#20048=@"loc,{#10000},6,4,6,17" -locations_default(#20048,#10000,6,4,6,17) -hasLocation(#20047,#20048) -enclosingStmt(#20047,#20009) -exprContainers(#20047,#20001) -literals("fieldDecorator","fieldDecorator",#20047) -#20049=@"var;{fieldDecorator};{#20000}" -variables(#20049,"fieldDecorator",#20000) -bind(#20047,#20049) +lines(#20028,#20001,"export class Class2 {}"," +") +#20029=@"loc,{#10000},14,1,14,22" +locations_default(#20029,#10000,14,1,14,22) +hasLocation(#20028,#20029) +numlines(#20001,14,11,0) +#20030=* +tokeninfo(#20030,8,#20001,0,"@") +#20031=@"loc,{#10000},1,1,1,1" +locations_default(#20031,#10000,1,1,1,1) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,6,#20001,1,"classDecorator") +#20033=@"loc,{#10000},1,2,1,15" +locations_default(#20033,#10000,1,2,1,15) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,7,#20001,2,"class") +#20035=@"loc,{#10000},2,1,2,5" +locations_default(#20035,#10000,2,1,2,5) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,6,#20001,3,"Class") +#20037=@"loc,{#10000},2,7,2,11" +locations_default(#20037,#10000,2,7,2,11) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,8,#20001,4,"{") +#20039=@"loc,{#10000},2,13,2,13" +locations_default(#20039,#10000,2,13,2,13) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,5,"@") +#20041=@"loc,{#10000},3,3,3,3" +locations_default(#20041,#10000,3,3,3,3) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,6,#20001,6,"methodDecorator") +#20043=@"loc,{#10000},3,4,3,18" +locations_default(#20043,#10000,3,4,3,18) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,6,#20001,7,"method") +#20045=@"loc,{#10000},4,3,4,8" +locations_default(#20045,#10000,4,3,4,8) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,8,"(") +#20047=@"loc,{#10000},4,9,4,9" +locations_default(#20047,#10000,4,9,4,9) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,8,#20001,9,")") +#20049=@"loc,{#10000},4,10,4,10" +locations_default(#20049,#10000,4,10,4,10) +hasLocation(#20048,#20049) #20050=* -exprs(#20050,0,#20043,0,"field") -#20051=@"loc,{#10000},7,3,7,7" -locations_default(#20051,#10000,7,3,7,7) +tokeninfo(#20050,8,#20001,10,":") +#20051=@"loc,{#10000},4,11,4,11" +locations_default(#20051,#10000,4,11,4,11) hasLocation(#20050,#20051) -enclosingStmt(#20050,#20009) -exprContainers(#20050,#20001) -literals("field","field",#20050) #20052=* -#20053=* -typeexprs(#20053,2,#20043,2,"number") -#20054=@"loc,{#10000},7,10,7,15" -locations_default(#20054,#10000,7,10,7,15) -hasLocation(#20053,#20054) -enclosingStmt(#20053,#20009) -exprContainers(#20053,#20001) -literals("number","number",#20053) -#20055=* -properties(#20055,#20009,4,0,"constructor() {}") -#20056=@"loc,{#10000},2,13,2,12" -locations_default(#20056,#10000,2,13,2,12) -hasLocation(#20055,#20056) -#20057=* -exprs(#20057,0,#20055,0,"constructor") -hasLocation(#20057,#20056) -enclosingStmt(#20057,#20009) -exprContainers(#20057,#20001) -literals("constructor","constructor",#20057) -exprs(#20052,9,#20055,1,"() {}") -hasLocation(#20052,#20056) -enclosingStmt(#20052,#20009) -exprContainers(#20052,#20001) +tokeninfo(#20052,7,#20001,11,"number") +#20053=@"loc,{#10000},4,13,4,18" +locations_default(#20053,#10000,4,13,4,18) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,8,#20001,12,"{") +#20055=@"loc,{#10000},4,20,4,20" +locations_default(#20055,#10000,4,20,4,20) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,7,#20001,13,"return") +#20057=@"loc,{#10000},4,22,4,27" +locations_default(#20057,#10000,4,22,4,27) +hasLocation(#20056,#20057) #20058=* -scopes(#20058,1) -scopenodes(#20052,#20058) -scopenesting(#20058,#20018) -#20059=@"var;{arguments};{#20058}" -variables(#20059,"arguments",#20058) -isArgumentsObject(#20059) +tokeninfo(#20058,7,#20001,14,"this") +#20059=@"loc,{#10000},4,29,4,32" +locations_default(#20059,#10000,4,29,4,32) +hasLocation(#20058,#20059) #20060=* -stmts(#20060,1,#20052,-2,"{}") -hasLocation(#20060,#20056) -stmtContainers(#20060,#20052) -numlines(#20052,1,0,0) -isMethod(#20055) -#20061=* -stmts(#20061,17,#20001,1,"@functi ... un() {}") -#20062=@"loc,{#10000},10,1,11,17" -locations_default(#20062,#10000,10,1,11,17) -hasLocation(#20061,#20062) -stmtContainers(#20061,#20001) -#20063=* -exprs(#20063,78,#20061,-1,"fun") -#20064=@"loc,{#10000},11,10,11,12" -locations_default(#20064,#10000,11,10,11,12) -hasLocation(#20063,#20064) -exprContainers(#20063,#20061) -literals("fun","fun",#20063) -decl(#20063,#20004) -#20065=* -scopes(#20065,1) -scopenodes(#20061,#20065) -scopenesting(#20065,#20003) -#20066=@"var;{arguments};{#20065}" -variables(#20066,"arguments",#20065) -isArgumentsObject(#20066) -#20067=* -stmts(#20067,1,#20061,-2,"{}") -#20068=@"loc,{#10000},11,16,11,17" -locations_default(#20068,#10000,11,16,11,17) -hasLocation(#20067,#20068) -stmtContainers(#20067,#20061) -numlines(#20061,2,2,0) -#20069=* -stmts(#20069,30,#20001,2,"export ... ass2 {}") -#20070=@"loc,{#10000},14,1,14,22" -locations_default(#20070,#10000,14,1,14,22) -hasLocation(#20069,#20070) -stmtContainers(#20069,#20001) -#20071=* -stmts(#20071,26,#20069,-1,"class Class2 {}") -#20072=@"loc,{#10000},14,8,14,22" -locations_default(#20072,#10000,14,8,14,22) -hasLocation(#20071,#20072) -stmtContainers(#20071,#20001) -#20073=* -exprs(#20073,94,#20071,-2,"@classDecorator2") -#20074=@"loc,{#10000},13,1,13,16" -locations_default(#20074,#10000,13,1,13,16) -hasLocation(#20073,#20074) -enclosingStmt(#20073,#20071) -exprContainers(#20073,#20001) -#20075=* -exprs(#20075,79,#20073,0,"classDecorator2") -#20076=@"loc,{#10000},13,2,13,16" -locations_default(#20076,#10000,13,2,13,16) -hasLocation(#20075,#20076) -enclosingStmt(#20075,#20071) -exprContainers(#20075,#20001) -literals("classDecorator2","classDecorator2",#20075) -#20077=@"var;{classDecorator2};{#20000}" -variables(#20077,"classDecorator2",#20000) -bind(#20075,#20077) +tokeninfo(#20060,8,#20001,15,".") +#20061=@"loc,{#10000},4,33,4,33" +locations_default(#20061,#10000,4,33,4,33) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,6,#20001,16,"field") +#20063=@"loc,{#10000},4,34,4,38" +locations_default(#20063,#10000,4,34,4,38) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,8,#20001,17,"}") +#20065=@"loc,{#10000},4,40,4,40" +locations_default(#20065,#10000,4,40,4,40) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,8,#20001,18,"@") +#20067=@"loc,{#10000},6,3,6,3" +locations_default(#20067,#10000,6,3,6,3) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,6,#20001,19,"fieldDecorator") +#20069=@"loc,{#10000},6,4,6,17" +locations_default(#20069,#10000,6,4,6,17) +hasLocation(#20068,#20069) +#20070=* +tokeninfo(#20070,6,#20001,20,"field") +#20071=@"loc,{#10000},7,3,7,7" +locations_default(#20071,#10000,7,3,7,7) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,8,#20001,21,":") +#20073=@"loc,{#10000},7,8,7,8" +locations_default(#20073,#10000,7,8,7,8) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,7,#20001,22,"number") +#20075=@"loc,{#10000},7,10,7,15" +locations_default(#20075,#10000,7,10,7,15) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,8,#20001,23,";") +#20077=@"loc,{#10000},7,16,7,16" +locations_default(#20077,#10000,7,16,7,16) +hasLocation(#20076,#20077) #20078=* -exprs(#20078,78,#20071,0,"Class2") -#20079=@"loc,{#10000},14,14,14,19" -locations_default(#20079,#10000,14,14,14,19) -hasLocation(#20078,#20079) -enclosingStmt(#20078,#20071) -exprContainers(#20078,#20001) -literals("Class2","Class2",#20078) -decl(#20078,#20006) -typedecl(#20078,#20008) -#20080=* -scopes(#20080,10) -scopenodes(#20071,#20080) -scopenesting(#20080,#20003) +tokeninfo(#20078,8,#20001,24,"}") +hasLocation(#20078,#20017) +#20079=* +tokeninfo(#20079,8,#20001,25,"@") +#20080=@"loc,{#10000},10,1,10,1" +locations_default(#20080,#10000,10,1,10,1) +hasLocation(#20079,#20080) #20081=* -properties(#20081,#20071,2,0,"constructor() {}") -#20082=@"loc,{#10000},14,21,14,20" -locations_default(#20082,#10000,14,21,14,20) +tokeninfo(#20081,6,#20001,26,"functionDecorator") +#20082=@"loc,{#10000},10,2,10,18" +locations_default(#20082,#10000,10,2,10,18) hasLocation(#20081,#20082) #20083=* -exprs(#20083,0,#20081,0,"constructor") -hasLocation(#20083,#20082) -enclosingStmt(#20083,#20071) -exprContainers(#20083,#20001) -literals("constructor","constructor",#20083) -#20084=* -exprs(#20084,9,#20081,1,"() {}") -hasLocation(#20084,#20082) -enclosingStmt(#20084,#20071) -exprContainers(#20084,#20001) +tokeninfo(#20083,7,#20001,27,"function") +#20084=@"loc,{#10000},11,1,11,8" +locations_default(#20084,#10000,11,1,11,8) +hasLocation(#20083,#20084) #20085=* -scopes(#20085,1) -scopenodes(#20084,#20085) -scopenesting(#20085,#20080) -#20086=@"var;{arguments};{#20085}" -variables(#20086,"arguments",#20085) -isArgumentsObject(#20086) +tokeninfo(#20085,6,#20001,28,"fun") +#20086=@"loc,{#10000},11,10,11,12" +locations_default(#20086,#10000,11,10,11,12) +hasLocation(#20085,#20086) #20087=* -stmts(#20087,1,#20084,-2,"{}") -hasLocation(#20087,#20082) -stmtContainers(#20087,#20084) -numlines(#20084,1,0,0) -isMethod(#20081) -#20088=* -lines(#20088,#20001,"@classDecorator"," -") -hasLocation(#20088,#20012) +tokeninfo(#20087,8,#20001,29,"(") +#20088=@"loc,{#10000},11,13,11,13" +locations_default(#20088,#10000,11,13,11,13) +hasLocation(#20087,#20088) #20089=* -lines(#20089,#20001,"class Class {"," -") -#20090=@"loc,{#10000},2,1,2,13" -locations_default(#20090,#10000,2,1,2,13) +tokeninfo(#20089,8,#20001,30,")") +#20090=@"loc,{#10000},11,14,11,14" +locations_default(#20090,#10000,11,14,11,14) hasLocation(#20089,#20090) #20091=* -lines(#20091,#20001," @methodDecorator"," -") -#20092=@"loc,{#10000},3,1,3,18" -locations_default(#20092,#10000,3,1,3,18) +tokeninfo(#20091,8,#20001,31,"{") +#20092=@"loc,{#10000},11,16,11,16" +locations_default(#20092,#10000,11,16,11,16) hasLocation(#20091,#20092) -indentation(#10000,3," ",2) #20093=* -lines(#20093,#20001," method(): number { return this.field }"," -") -#20094=@"loc,{#10000},4,1,4,40" -locations_default(#20094,#10000,4,1,4,40) +tokeninfo(#20093,8,#20001,32,"}") +#20094=@"loc,{#10000},11,17,11,17" +locations_default(#20094,#10000,11,17,11,17) hasLocation(#20093,#20094) -indentation(#10000,4," ",2) #20095=* -lines(#20095,#20001," "," -") -#20096=@"loc,{#10000},5,1,5,2" -locations_default(#20096,#10000,5,1,5,2) +tokeninfo(#20095,8,#20001,33,"@") +#20096=@"loc,{#10000},13,1,13,1" +locations_default(#20096,#10000,13,1,13,1) hasLocation(#20095,#20096) #20097=* -lines(#20097,#20001," @fieldDecorator"," -") -#20098=@"loc,{#10000},6,1,6,17" -locations_default(#20098,#10000,6,1,6,17) +tokeninfo(#20097,6,#20001,34,"classDecorator2") +#20098=@"loc,{#10000},13,2,13,16" +locations_default(#20098,#10000,13,2,13,16) hasLocation(#20097,#20098) -indentation(#10000,6," ",2) #20099=* -lines(#20099,#20001," field: number;"," -") -#20100=@"loc,{#10000},7,1,7,16" -locations_default(#20100,#10000,7,1,7,16) +tokeninfo(#20099,7,#20001,35,"export") +#20100=@"loc,{#10000},14,1,14,6" +locations_default(#20100,#10000,14,1,14,6) hasLocation(#20099,#20100) -indentation(#10000,7," ",2) #20101=* -lines(#20101,#20001,"}"," -") -#20102=@"loc,{#10000},8,1,8,1" -locations_default(#20102,#10000,8,1,8,1) +tokeninfo(#20101,7,#20001,36,"class") +#20102=@"loc,{#10000},14,8,14,12" +locations_default(#20102,#10000,14,8,14,12) hasLocation(#20101,#20102) #20103=* -lines(#20103,#20001,""," -") -#20104=@"loc,{#10000},9,1,9,0" -locations_default(#20104,#10000,9,1,9,0) +tokeninfo(#20103,6,#20001,37,"Class2") +#20104=@"loc,{#10000},14,14,14,19" +locations_default(#20104,#10000,14,14,14,19) hasLocation(#20103,#20104) #20105=* -lines(#20105,#20001,"@functionDecorator"," -") -#20106=@"loc,{#10000},10,1,10,18" -locations_default(#20106,#10000,10,1,10,18) +tokeninfo(#20105,8,#20001,38,"{") +#20106=@"loc,{#10000},14,21,14,21" +locations_default(#20106,#10000,14,21,14,21) hasLocation(#20105,#20106) #20107=* -lines(#20107,#20001,"function fun() {}"," -") -#20108=@"loc,{#10000},11,1,11,17" -locations_default(#20108,#10000,11,1,11,17) +tokeninfo(#20107,8,#20001,39,"}") +#20108=@"loc,{#10000},14,22,14,22" +locations_default(#20108,#10000,14,22,14,22) hasLocation(#20107,#20108) #20109=* -lines(#20109,#20001,""," -") -#20110=@"loc,{#10000},12,1,12,0" -locations_default(#20110,#10000,12,1,12,0) +tokeninfo(#20109,0,#20001,40,"") +#20110=@"loc,{#10000},15,1,15,0" +locations_default(#20110,#10000,15,1,15,0) hasLocation(#20109,#20110) -#20111=* -lines(#20111,#20001,"@classDecorator2"," -") -hasLocation(#20111,#20074) -#20112=* -lines(#20112,#20001,"export class Class2 {}"," -") -hasLocation(#20112,#20070) -numlines(#20001,14,11,0) -#20113=* -tokeninfo(#20113,8,#20001,0,"@") -#20114=@"loc,{#10000},1,1,1,1" -locations_default(#20114,#10000,1,1,1,1) -hasLocation(#20113,#20114) -#20115=* -tokeninfo(#20115,6,#20001,1,"classDecorator") -hasLocation(#20115,#20014) -#20116=* -tokeninfo(#20116,7,#20001,2,"class") -#20117=@"loc,{#10000},2,1,2,5" -locations_default(#20117,#10000,2,1,2,5) -hasLocation(#20116,#20117) +toplevels(#20001,0) +#20111=@"loc,{#10000},1,1,15,0" +locations_default(#20111,#10000,1,1,15,0) +hasLocation(#20001,#20111) +#20112=@"module;{#10000},1,1" +scopes(#20112,3) +scopenodes(#20001,#20112) +scopenesting(#20112,#20000) +isModule(#20001) +isES2015Module(#20001) +#20113=@"var;{fun};{#20112}" +variables(#20113,"fun",#20112) +#20114=@"var;{Class};{#20112}" +variables(#20114,"Class",#20112) +#20115=@"var;{Class2};{#20112}" +variables(#20115,"Class2",#20112) +#20116=@"local_type_name;{Class};{#20112}" +local_type_names(#20116,"Class",#20112) +#20117=@"local_type_name;{Class2};{#20112}" +local_type_names(#20117,"Class2",#20112) #20118=* -tokeninfo(#20118,6,#20001,3,"Class") -hasLocation(#20118,#20017) -#20119=* -tokeninfo(#20119,8,#20001,4,"{") -#20120=@"loc,{#10000},2,13,2,13" -locations_default(#20120,#10000,2,13,2,13) -hasLocation(#20119,#20120) +stmts(#20118,26,#20001,0,"class C ... mber;\n}") +#20119=@"loc,{#10000},2,1,8,1" +locations_default(#20119,#10000,2,1,8,1) +hasLocation(#20118,#20119) +stmtContainers(#20118,#20001) +#20120=* +exprs(#20120,94,#20118,-2,"@classDecorator") +hasLocation(#20120,#20003) +enclosingStmt(#20120,#20118) +exprContainers(#20120,#20001) #20121=* -tokeninfo(#20121,8,#20001,5,"@") -#20122=@"loc,{#10000},3,3,3,3" -locations_default(#20122,#10000,3,3,3,3) -hasLocation(#20121,#20122) +exprs(#20121,79,#20120,0,"classDecorator") +hasLocation(#20121,#20033) +enclosingStmt(#20121,#20118) +exprContainers(#20121,#20001) +literals("classDecorator","classDecorator",#20121) +#20122=@"var;{classDecorator};{#20000}" +variables(#20122,"classDecorator",#20000) +bind(#20121,#20122) #20123=* -tokeninfo(#20123,6,#20001,6,"methodDecorator") -hasLocation(#20123,#20024) +exprs(#20123,78,#20118,0,"Class") +hasLocation(#20123,#20037) +enclosingStmt(#20123,#20118) +exprContainers(#20123,#20001) +literals("Class","Class",#20123) +decl(#20123,#20114) +typedecl(#20123,#20116) #20124=* -tokeninfo(#20124,6,#20001,7,"method") -hasLocation(#20124,#20027) +scopes(#20124,10) +scopenodes(#20118,#20124) +scopenesting(#20124,#20112) #20125=* -tokeninfo(#20125,8,#20001,8,"(") -#20126=@"loc,{#10000},4,9,4,9" -locations_default(#20126,#10000,4,9,4,9) +properties(#20125,#20118,2,0,"method( ... field }") +#20126=@"loc,{#10000},4,3,4,40" +locations_default(#20126,#10000,4,3,4,40) hasLocation(#20125,#20126) #20127=* -tokeninfo(#20127,8,#20001,9,")") -#20128=@"loc,{#10000},4,10,4,10" -locations_default(#20128,#10000,4,10,4,10) +exprs(#20127,94,#20125,-1,"@methodDecorator") +#20128=@"loc,{#10000},3,3,3,18" +locations_default(#20128,#10000,3,3,3,18) hasLocation(#20127,#20128) +enclosingStmt(#20127,#20118) +exprContainers(#20127,#20001) #20129=* -tokeninfo(#20129,8,#20001,10,":") -#20130=@"loc,{#10000},4,11,4,11" -locations_default(#20130,#10000,4,11,4,11) -hasLocation(#20129,#20130) +exprs(#20129,79,#20127,0,"methodDecorator") +hasLocation(#20129,#20043) +enclosingStmt(#20129,#20118) +exprContainers(#20129,#20001) +literals("methodDecorator","methodDecorator",#20129) +#20130=@"var;{methodDecorator};{#20000}" +variables(#20130,"methodDecorator",#20000) +bind(#20129,#20130) #20131=* -tokeninfo(#20131,7,#20001,11,"number") -hasLocation(#20131,#20032) +exprs(#20131,0,#20125,0,"method") +hasLocation(#20131,#20045) +enclosingStmt(#20131,#20118) +exprContainers(#20131,#20001) +literals("method","method",#20131) #20132=* -tokeninfo(#20132,8,#20001,12,"{") -#20133=@"loc,{#10000},4,20,4,20" -locations_default(#20133,#10000,4,20,4,20) -hasLocation(#20132,#20133) -#20134=* -tokeninfo(#20134,7,#20001,13,"return") -#20135=@"loc,{#10000},4,22,4,27" -locations_default(#20135,#10000,4,22,4,27) -hasLocation(#20134,#20135) +exprs(#20132,9,#20125,1,"method( ... field }") +hasLocation(#20132,#20126) +enclosingStmt(#20132,#20118) +exprContainers(#20132,#20001) +#20133=* +scopes(#20133,1) +scopenodes(#20132,#20133) +scopenesting(#20133,#20124) +#20134=@"var;{arguments};{#20133}" +variables(#20134,"arguments",#20133) +isArgumentsObject(#20134) +#20135=* +typeexprs(#20135,2,#20132,-3,"number") +hasLocation(#20135,#20053) +exprContainers(#20135,#20132) +literals("number","number",#20135) #20136=* -tokeninfo(#20136,7,#20001,14,"this") -hasLocation(#20136,#20040) -#20137=* -tokeninfo(#20137,8,#20001,15,".") -#20138=@"loc,{#10000},4,33,4,33" -locations_default(#20138,#10000,4,33,4,33) -hasLocation(#20137,#20138) -#20139=* -tokeninfo(#20139,6,#20001,16,"field") -hasLocation(#20139,#20042) +stmts(#20136,1,#20132,-2,"{ retur ... field }") +#20137=@"loc,{#10000},4,20,4,40" +locations_default(#20137,#10000,4,20,4,40) +hasLocation(#20136,#20137) +stmtContainers(#20136,#20132) +#20138=* +stmts(#20138,9,#20136,0,"return this.field") +#20139=@"loc,{#10000},4,22,4,38" +locations_default(#20139,#10000,4,22,4,38) +hasLocation(#20138,#20139) +stmtContainers(#20138,#20132) #20140=* -tokeninfo(#20140,8,#20001,17,"}") -#20141=@"loc,{#10000},4,40,4,40" -locations_default(#20141,#10000,4,40,4,40) +exprs(#20140,14,#20138,0,"this.field") +#20141=@"loc,{#10000},4,29,4,38" +locations_default(#20141,#10000,4,29,4,38) hasLocation(#20140,#20141) +enclosingStmt(#20140,#20138) +exprContainers(#20140,#20132) #20142=* -tokeninfo(#20142,8,#20001,18,"@") -#20143=@"loc,{#10000},6,3,6,3" -locations_default(#20143,#10000,6,3,6,3) -hasLocation(#20142,#20143) +exprs(#20142,6,#20140,0,"this") +hasLocation(#20142,#20059) +enclosingStmt(#20142,#20138) +exprContainers(#20142,#20132) +#20143=* +exprs(#20143,0,#20140,1,"field") +hasLocation(#20143,#20063) +enclosingStmt(#20143,#20138) +exprContainers(#20143,#20132) +literals("field","field",#20143) +isMethod(#20125) #20144=* -tokeninfo(#20144,6,#20001,19,"fieldDecorator") -hasLocation(#20144,#20048) -#20145=* -tokeninfo(#20145,6,#20001,20,"field") -hasLocation(#20145,#20051) +properties(#20144,#20118,3,8,"field: number;") +#20145=@"loc,{#10000},7,3,7,16" +locations_default(#20145,#10000,7,3,7,16) +hasLocation(#20144,#20145) #20146=* -tokeninfo(#20146,8,#20001,21,":") -#20147=@"loc,{#10000},7,8,7,8" -locations_default(#20147,#10000,7,8,7,8) +exprs(#20146,94,#20144,-1,"@fieldDecorator") +#20147=@"loc,{#10000},6,3,6,17" +locations_default(#20147,#10000,6,3,6,17) hasLocation(#20146,#20147) +enclosingStmt(#20146,#20118) +exprContainers(#20146,#20001) #20148=* -tokeninfo(#20148,7,#20001,22,"number") -hasLocation(#20148,#20054) -#20149=* -tokeninfo(#20149,8,#20001,23,";") -#20150=@"loc,{#10000},7,16,7,16" -locations_default(#20150,#10000,7,16,7,16) -hasLocation(#20149,#20150) +exprs(#20148,79,#20146,0,"fieldDecorator") +hasLocation(#20148,#20069) +enclosingStmt(#20148,#20118) +exprContainers(#20148,#20001) +literals("fieldDecorator","fieldDecorator",#20148) +#20149=@"var;{fieldDecorator};{#20000}" +variables(#20149,"fieldDecorator",#20000) +bind(#20148,#20149) +#20150=* +exprs(#20150,0,#20144,0,"field") +hasLocation(#20150,#20071) +enclosingStmt(#20150,#20118) +exprContainers(#20150,#20001) +literals("field","field",#20150) #20151=* -tokeninfo(#20151,8,#20001,24,"}") -hasLocation(#20151,#20102) #20152=* -tokeninfo(#20152,8,#20001,25,"@") -#20153=@"loc,{#10000},10,1,10,1" -locations_default(#20153,#10000,10,1,10,1) -hasLocation(#20152,#20153) -#20154=* -tokeninfo(#20154,6,#20001,26,"functionDecorator") -#20155=@"loc,{#10000},10,2,10,18" -locations_default(#20155,#10000,10,2,10,18) -hasLocation(#20154,#20155) +typeexprs(#20152,2,#20144,2,"number") +hasLocation(#20152,#20075) +enclosingStmt(#20152,#20118) +exprContainers(#20152,#20001) +literals("number","number",#20152) +#20153=* +properties(#20153,#20118,4,0,"constructor() {}") +#20154=@"loc,{#10000},2,13,2,12" +locations_default(#20154,#10000,2,13,2,12) +hasLocation(#20153,#20154) +#20155=* +exprs(#20155,0,#20153,0,"constructor") +hasLocation(#20155,#20154) +enclosingStmt(#20155,#20118) +exprContainers(#20155,#20001) +literals("constructor","constructor",#20155) +exprs(#20151,9,#20153,1,"() {}") +hasLocation(#20151,#20154) +enclosingStmt(#20151,#20118) +exprContainers(#20151,#20001) #20156=* -tokeninfo(#20156,7,#20001,27,"function") -#20157=@"loc,{#10000},11,1,11,8" -locations_default(#20157,#10000,11,1,11,8) -hasLocation(#20156,#20157) +scopes(#20156,1) +scopenodes(#20151,#20156) +scopenesting(#20156,#20124) +#20157=@"var;{arguments};{#20156}" +variables(#20157,"arguments",#20156) +isArgumentsObject(#20157) #20158=* -tokeninfo(#20158,6,#20001,28,"fun") -hasLocation(#20158,#20064) +stmts(#20158,1,#20151,-2,"{}") +hasLocation(#20158,#20154) +stmtContainers(#20158,#20151) +isMethod(#20153) #20159=* -tokeninfo(#20159,8,#20001,29,"(") -#20160=@"loc,{#10000},11,13,11,13" -locations_default(#20160,#10000,11,13,11,13) +stmts(#20159,17,#20001,1,"@functi ... un() {}") +#20160=@"loc,{#10000},10,1,11,17" +locations_default(#20160,#10000,10,1,11,17) hasLocation(#20159,#20160) +stmtContainers(#20159,#20001) #20161=* -tokeninfo(#20161,8,#20001,30,")") -#20162=@"loc,{#10000},11,14,11,14" -locations_default(#20162,#10000,11,14,11,14) -hasLocation(#20161,#20162) -#20163=* -tokeninfo(#20163,8,#20001,31,"{") -#20164=@"loc,{#10000},11,16,11,16" -locations_default(#20164,#10000,11,16,11,16) -hasLocation(#20163,#20164) -#20165=* -tokeninfo(#20165,8,#20001,32,"}") -#20166=@"loc,{#10000},11,17,11,17" -locations_default(#20166,#10000,11,17,11,17) -hasLocation(#20165,#20166) +exprs(#20161,78,#20159,-1,"fun") +hasLocation(#20161,#20086) +exprContainers(#20161,#20159) +literals("fun","fun",#20161) +decl(#20161,#20113) +#20162=* +scopes(#20162,1) +scopenodes(#20159,#20162) +scopenesting(#20162,#20112) +#20163=@"var;{arguments};{#20162}" +variables(#20163,"arguments",#20162) +isArgumentsObject(#20163) +#20164=* +stmts(#20164,1,#20159,-2,"{}") +#20165=@"loc,{#10000},11,16,11,17" +locations_default(#20165,#10000,11,16,11,17) +hasLocation(#20164,#20165) +stmtContainers(#20164,#20159) +#20166=* +stmts(#20166,30,#20001,2,"export ... ass2 {}") +hasLocation(#20166,#20029) +stmtContainers(#20166,#20001) #20167=* -tokeninfo(#20167,8,#20001,33,"@") -#20168=@"loc,{#10000},13,1,13,1" -locations_default(#20168,#10000,13,1,13,1) +stmts(#20167,26,#20166,-1,"class Class2 {}") +#20168=@"loc,{#10000},14,8,14,22" +locations_default(#20168,#10000,14,8,14,22) hasLocation(#20167,#20168) +stmtContainers(#20167,#20001) #20169=* -tokeninfo(#20169,6,#20001,34,"classDecorator2") -hasLocation(#20169,#20076) +exprs(#20169,94,#20167,-2,"@classDecorator2") +hasLocation(#20169,#20027) +enclosingStmt(#20169,#20167) +exprContainers(#20169,#20001) #20170=* -tokeninfo(#20170,7,#20001,35,"export") -#20171=@"loc,{#10000},14,1,14,6" -locations_default(#20171,#10000,14,1,14,6) -hasLocation(#20170,#20171) +exprs(#20170,79,#20169,0,"classDecorator2") +hasLocation(#20170,#20098) +enclosingStmt(#20170,#20167) +exprContainers(#20170,#20001) +literals("classDecorator2","classDecorator2",#20170) +#20171=@"var;{classDecorator2};{#20000}" +variables(#20171,"classDecorator2",#20000) +bind(#20170,#20171) #20172=* -tokeninfo(#20172,7,#20001,36,"class") -#20173=@"loc,{#10000},14,8,14,12" -locations_default(#20173,#10000,14,8,14,12) -hasLocation(#20172,#20173) +exprs(#20172,78,#20167,0,"Class2") +hasLocation(#20172,#20104) +enclosingStmt(#20172,#20167) +exprContainers(#20172,#20001) +literals("Class2","Class2",#20172) +decl(#20172,#20115) +typedecl(#20172,#20117) +#20173=* +scopes(#20173,10) +scopenodes(#20167,#20173) +scopenesting(#20173,#20112) #20174=* -tokeninfo(#20174,6,#20001,37,"Class2") -hasLocation(#20174,#20079) -#20175=* -tokeninfo(#20175,8,#20001,38,"{") -#20176=@"loc,{#10000},14,21,14,21" -locations_default(#20176,#10000,14,21,14,21) -hasLocation(#20175,#20176) +properties(#20174,#20167,2,0,"constructor() {}") +#20175=@"loc,{#10000},14,21,14,20" +locations_default(#20175,#10000,14,21,14,20) +hasLocation(#20174,#20175) +#20176=* +exprs(#20176,0,#20174,0,"constructor") +hasLocation(#20176,#20175) +enclosingStmt(#20176,#20167) +exprContainers(#20176,#20001) +literals("constructor","constructor",#20176) #20177=* -tokeninfo(#20177,8,#20001,39,"}") -#20178=@"loc,{#10000},14,22,14,22" -locations_default(#20178,#10000,14,22,14,22) -hasLocation(#20177,#20178) -#20179=* -tokeninfo(#20179,0,#20001,40,"") -#20180=@"loc,{#10000},15,1,15,0" -locations_default(#20180,#10000,15,1,15,0) -hasLocation(#20179,#20180) +exprs(#20177,9,#20174,1,"() {}") +hasLocation(#20177,#20175) +enclosingStmt(#20177,#20167) +exprContainers(#20177,#20001) +#20178=* +scopes(#20178,1) +scopenodes(#20177,#20178) +scopenesting(#20178,#20173) +#20179=@"var;{arguments};{#20178}" +variables(#20179,"arguments",#20178) +isArgumentsObject(#20179) +#20180=* +stmts(#20180,1,#20177,-2,"{}") +hasLocation(#20180,#20175) +stmtContainers(#20180,#20177) +isMethod(#20174) #20181=* entry_cfg_node(#20181,#20001) #20182=@"loc,{#10000},1,1,1,0" @@ -588,77 +585,77 @@ locations_default(#20182,#10000,1,1,1,0) hasLocation(#20181,#20182) #20183=* exit_cfg_node(#20183,#20001) -hasLocation(#20183,#20180) -successor(#20069,#20078) -successor(#20084,#20081) +hasLocation(#20183,#20110) +successor(#20166,#20172) +successor(#20177,#20174) #20184=* -entry_cfg_node(#20184,#20084) -hasLocation(#20184,#20082) +entry_cfg_node(#20184,#20177) +hasLocation(#20184,#20175) #20185=* -exit_cfg_node(#20185,#20084) -hasLocation(#20185,#20082) -successor(#20087,#20185) -successor(#20184,#20087) -successor(#20083,#20084) -successor(#20081,#20071) -successor(#20078,#20083) -successor(#20075,#20073) -successor(#20073,#20183) -successor(#20071,#20075) -successor(#20061,#20069) +exit_cfg_node(#20185,#20177) +hasLocation(#20185,#20175) +successor(#20180,#20185) +successor(#20184,#20180) +successor(#20176,#20177) +successor(#20174,#20167) +successor(#20172,#20176) +successor(#20170,#20169) +successor(#20169,#20183) +successor(#20167,#20170) +successor(#20159,#20166) #20186=* -entry_cfg_node(#20186,#20061) +entry_cfg_node(#20186,#20159) #20187=@"loc,{#10000},10,1,10,0" locations_default(#20187,#10000,10,1,10,0) hasLocation(#20186,#20187) #20188=* -exit_cfg_node(#20188,#20061) +exit_cfg_node(#20188,#20159) #20189=@"loc,{#10000},11,18,11,17" locations_default(#20189,#10000,11,18,11,17) hasLocation(#20188,#20189) -successor(#20067,#20188) -successor(#20186,#20067) -successor(#20050,#20043) -successor(#20052,#20055) +successor(#20164,#20188) +successor(#20186,#20164) +successor(#20150,#20144) +successor(#20151,#20153) #20190=* -entry_cfg_node(#20190,#20052) -hasLocation(#20190,#20056) -successor(#20043,#20060) +entry_cfg_node(#20190,#20151) +hasLocation(#20190,#20154) +successor(#20144,#20158) #20191=* -exit_cfg_node(#20191,#20052) -hasLocation(#20191,#20056) -successor(#20060,#20191) -successor(#20190,#20050) -successor(#20057,#20052) -successor(#20055,#20009) -successor(#20028,#20019) +exit_cfg_node(#20191,#20151) +hasLocation(#20191,#20154) +successor(#20158,#20191) +successor(#20190,#20150) +successor(#20155,#20151) +successor(#20153,#20118) +successor(#20132,#20125) #20192=* -entry_cfg_node(#20192,#20028) +entry_cfg_node(#20192,#20132) #20193=@"loc,{#10000},4,3,4,2" locations_default(#20193,#10000,4,3,4,2) hasLocation(#20192,#20193) #20194=* -exit_cfg_node(#20194,#20028) +exit_cfg_node(#20194,#20132) #20195=@"loc,{#10000},4,41,4,40" locations_default(#20195,#10000,4,41,4,40) hasLocation(#20194,#20195) -successor(#20033,#20039) -successor(#20041,#20037) -successor(#20039,#20041) -successor(#20037,#20035) -successor(#20035,#20194) -successor(#20192,#20033) -successor(#20026,#20028) -successor(#20019,#20057) -successor(#20016,#20026) -successor(#20013,#20011) -successor(#20011,#20061) -successor(#20047,#20045) -successor(#20045,#20013) -successor(#20023,#20021) -successor(#20021,#20047) -successor(#20009,#20023) -successor(#20063,#20016) -successor(#20181,#20063) +successor(#20136,#20142) +successor(#20143,#20140) +successor(#20142,#20143) +successor(#20140,#20138) +successor(#20138,#20194) +successor(#20192,#20136) +successor(#20131,#20132) +successor(#20125,#20155) +successor(#20123,#20131) +successor(#20121,#20120) +successor(#20120,#20159) +successor(#20148,#20146) +successor(#20146,#20121) +successor(#20129,#20127) +successor(#20127,#20148) +successor(#20118,#20129) +successor(#20161,#20123) +successor(#20181,#20161) numlines(#10000,14,11,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/enum.ts.trap b/javascript/extractor/tests/ts/output/trap/enum.ts.trap index b1581bf4172..7aeb437663d 100644 --- a/javascript/extractor/tests/ts/output/trap/enum.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/enum.ts.trap @@ -9,1028 +9,1027 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,19,0" -locations_default(#20002,#10000,1,1,19,0) -hasLocation(#20001,#20002) -#20003=@"var;{foo};{#20000}" -variables(#20003,"foo",#20000) -#20004=@"var;{x};{#20000}" -variables(#20004,"x",#20000) -#20005=@"var;{Color};{#20000}" -variables(#20005,"Color",#20000) -#20006=@"var;{DeclaredEnum};{#20000}" -variables(#20006,"DeclaredEnum",#20000) -#20007=@"var;{ConstEnum};{#20000}" -variables(#20007,"ConstEnum",#20000) -#20008=@"var;{DeclaredConstEnum};{#20000}" -variables(#20008,"DeclaredConstEnum",#20000) -#20009=@"var;{ComplexInitializer};{#20000}" -variables(#20009,"ComplexInitializer",#20000) -#20010=@"var;{StringLiteralEnumMember};{#20000}" -variables(#20010,"StringLiteralEnumMember",#20000) -#20011=@"local_type_name;{Color};{#20000}" -local_type_names(#20011,"Color",#20000) -#20012=@"local_type_name;{DeclaredEnum};{#20000}" -local_type_names(#20012,"DeclaredEnum",#20000) -#20013=@"local_type_name;{ConstEnum};{#20000}" -local_type_names(#20013,"ConstEnum",#20000) -#20014=@"local_type_name;{DeclaredConstEnum};{#20000}" -local_type_names(#20014,"DeclaredConstEnum",#20000) -#20015=@"local_type_name;{ComplexInitializer};{#20000}" -local_type_names(#20015,"ComplexInitializer",#20000) -#20016=@"local_type_name;{StringLiteralEnumMember};{#20000}" -local_type_names(#20016,"StringLiteralEnumMember",#20000) -#20017=@"local_namespace_name;{Color};{#20000}" -local_namespace_names(#20017,"Color",#20000) -#20018=@"local_namespace_name;{DeclaredEnum};{#20000}" -local_namespace_names(#20018,"DeclaredEnum",#20000) -#20019=@"local_namespace_name;{ConstEnum};{#20000}" -local_namespace_names(#20019,"ConstEnum",#20000) -#20020=@"local_namespace_name;{DeclaredConstEnum};{#20000}" -local_namespace_names(#20020,"DeclaredConstEnum",#20000) -#20021=@"local_namespace_name;{ComplexInitializer};{#20000}" -local_namespace_names(#20021,"ComplexInitializer",#20000) -#20022=@"local_namespace_name;{StringLiteralEnumMember};{#20000}" -local_namespace_names(#20022,"StringLiteralEnumMember",#20000) -#20023=* -stmts(#20023,36,#20001,0,"enum Co ... blue }") -#20024=@"loc,{#10000},1,1,1,35" -locations_default(#20024,#10000,1,1,1,35) -hasLocation(#20023,#20024) -stmtContainers(#20023,#20001) -#20025=* -exprs(#20025,78,#20023,0,"Color") -#20026=@"loc,{#10000},1,6,1,10" -locations_default(#20026,#10000,1,6,1,10) -hasLocation(#20025,#20026) -enclosingStmt(#20025,#20023) -exprContainers(#20025,#20001) -literals("Color","Color",#20025) -decl(#20025,#20005) -typedecl(#20025,#20011) -namespacedecl(#20025,#20017) -#20027=* -scopes(#20027,14) -scopenodes(#20023,#20027) -scopenesting(#20027,#20000) -#20028=@"var;{red};{#20027}" -variables(#20028,"red",#20027) -#20029=@"local_type_name;{red};{#20027}" -local_type_names(#20029,"red",#20027) -#20030=@"var;{green};{#20027}" -variables(#20030,"green",#20027) -#20031=@"local_type_name;{green};{#20027}" -local_type_names(#20031,"green",#20027) -#20032=@"var;{blue};{#20027}" -variables(#20032,"blue",#20027) -#20033=@"local_type_name;{blue};{#20027}" -local_type_names(#20033,"blue",#20027) +#20002=* +lines(#20002,#20001,"enum Color { red = 1, green, blue }"," +") +#20003=@"loc,{#10000},1,1,1,35" +locations_default(#20003,#10000,1,1,1,35) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,""," +") +#20005=@"loc,{#10000},2,1,2,0" +locations_default(#20005,#10000,2,1,2,0) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"declare enum DeclaredEnum { a, b }"," +") +#20007=@"loc,{#10000},3,1,3,34" +locations_default(#20007,#10000,3,1,3,34) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001,"const enum ConstEnum { a = 1+2, b }"," +") +#20009=@"loc,{#10000},4,1,4,35" +locations_default(#20009,#10000,4,1,4,35) +hasLocation(#20008,#20009) +#20010=* +lines(#20010,#20001,"declare const enum DeclaredConstEnum { a, b }"," +") +#20011=@"loc,{#10000},5,1,5,45" +locations_default(#20011,#10000,5,1,5,45) +hasLocation(#20010,#20011) +#20012=* +lines(#20012,#20001,""," +") +#20013=@"loc,{#10000},6,1,6,0" +locations_default(#20013,#10000,6,1,6,0) +hasLocation(#20012,#20013) +#20014=* +lines(#20014,#20001,"function foo(x) { return x; }"," +") +#20015=@"loc,{#10000},7,1,7,29" +locations_default(#20015,#10000,7,1,7,29) +hasLocation(#20014,#20015) +#20016=* +lines(#20016,#20001,""," +") +#20017=@"loc,{#10000},8,1,8,0" +locations_default(#20017,#10000,8,1,8,0) +hasLocation(#20016,#20017) +#20018=* +lines(#20018,#20001,"enum ComplexInitializer {"," +") +#20019=@"loc,{#10000},9,1,9,25" +locations_default(#20019,#10000,9,1,9,25) +hasLocation(#20018,#20019) +#20020=* +lines(#20020,#20001," a = foo(1 + 2)"," +") +#20021=@"loc,{#10000},10,1,10,16" +locations_default(#20021,#10000,10,1,10,16) +hasLocation(#20020,#20021) +indentation(#10000,10," ",2) +#20022=* +lines(#20022,#20001,"}"," +") +#20023=@"loc,{#10000},11,1,11,1" +locations_default(#20023,#10000,11,1,11,1) +hasLocation(#20022,#20023) +#20024=* +lines(#20024,#20001,""," +") +#20025=@"loc,{#10000},12,1,12,0" +locations_default(#20025,#10000,12,1,12,0) +hasLocation(#20024,#20025) +#20026=* +lines(#20026,#20001,"enum StringLiteralEnumMember {"," +") +#20027=@"loc,{#10000},13,1,13,30" +locations_default(#20027,#10000,13,1,13,30) +hasLocation(#20026,#20027) +#20028=* +lines(#20028,#20001," ""a"" = 2,"," +") +#20029=@"loc,{#10000},14,1,14,10" +locations_default(#20029,#10000,14,1,14,10) +hasLocation(#20028,#20029) +indentation(#10000,14," ",2) +#20030=* +lines(#20030,#20001," b = a"," +") +#20031=@"loc,{#10000},15,1,15,7" +locations_default(#20031,#10000,15,1,15,7) +hasLocation(#20030,#20031) +indentation(#10000,15," ",2) +#20032=* +lines(#20032,#20001,"}"," +") +#20033=@"loc,{#10000},16,1,16,1" +locations_default(#20033,#10000,16,1,16,1) +hasLocation(#20032,#20033) #20034=* -properties(#20034,#20023,1,7,"red = 1") -#20035=@"loc,{#10000},1,14,1,20" -locations_default(#20035,#10000,1,14,1,20) +lines(#20034,#20001,""," +") +#20035=@"loc,{#10000},17,1,17,0" +locations_default(#20035,#10000,17,1,17,0) hasLocation(#20034,#20035) #20036=* -exprs(#20036,78,#20034,0,"red") -#20037=@"loc,{#10000},1,14,1,16" -locations_default(#20037,#10000,1,14,1,16) +lines(#20036,#20001,"var x : StringLiteralEnumMember.a = 2"," +") +#20037=@"loc,{#10000},18,1,18,37" +locations_default(#20037,#10000,18,1,18,37) hasLocation(#20036,#20037) -enclosingStmt(#20036,#20023) -exprContainers(#20036,#20001) -literals("red","red",#20036) -decl(#20036,#20028) -typedecl(#20036,#20029) +numlines(#20001,18,13,0) #20038=* -exprs(#20038,3,#20034,1,"1") -#20039=@"loc,{#10000},1,20,1,20" -locations_default(#20039,#10000,1,20,1,20) +tokeninfo(#20038,7,#20001,0,"enum") +#20039=@"loc,{#10000},1,1,1,4" +locations_default(#20039,#10000,1,1,1,4) hasLocation(#20038,#20039) -enclosingStmt(#20038,#20023) -exprContainers(#20038,#20001) -literals("1","1",#20038) #20040=* -properties(#20040,#20023,2,7,"green") -#20041=@"loc,{#10000},1,23,1,27" -locations_default(#20041,#10000,1,23,1,27) +tokeninfo(#20040,6,#20001,1,"Color") +#20041=@"loc,{#10000},1,6,1,10" +locations_default(#20041,#10000,1,6,1,10) hasLocation(#20040,#20041) #20042=* -exprs(#20042,78,#20040,0,"green") -hasLocation(#20042,#20041) -enclosingStmt(#20042,#20023) -exprContainers(#20042,#20001) -literals("green","green",#20042) -decl(#20042,#20030) -typedecl(#20042,#20031) -#20043=* -properties(#20043,#20023,3,7,"blue") -#20044=@"loc,{#10000},1,30,1,33" -locations_default(#20044,#10000,1,30,1,33) -hasLocation(#20043,#20044) -#20045=* -exprs(#20045,78,#20043,0,"blue") -hasLocation(#20045,#20044) -enclosingStmt(#20045,#20023) -exprContainers(#20045,#20001) -literals("blue","blue",#20045) -decl(#20045,#20032) -typedecl(#20045,#20033) +tokeninfo(#20042,8,#20001,2,"{") +#20043=@"loc,{#10000},1,12,1,12" +locations_default(#20043,#10000,1,12,1,12) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,6,#20001,3,"red") +#20045=@"loc,{#10000},1,14,1,16" +locations_default(#20045,#10000,1,14,1,16) +hasLocation(#20044,#20045) #20046=* -stmts(#20046,36,#20001,1,"declare ... a, b }") -#20047=@"loc,{#10000},3,1,3,34" -locations_default(#20047,#10000,3,1,3,34) +tokeninfo(#20046,8,#20001,4,"=") +#20047=@"loc,{#10000},1,18,1,18" +locations_default(#20047,#10000,1,18,1,18) hasLocation(#20046,#20047) -stmtContainers(#20046,#20001) #20048=* -exprs(#20048,78,#20046,0,"DeclaredEnum") -#20049=@"loc,{#10000},3,14,3,25" -locations_default(#20049,#10000,3,14,3,25) +tokeninfo(#20048,3,#20001,5,"1") +#20049=@"loc,{#10000},1,20,1,20" +locations_default(#20049,#10000,1,20,1,20) hasLocation(#20048,#20049) -enclosingStmt(#20048,#20046) -exprContainers(#20048,#20001) -literals("DeclaredEnum","DeclaredEnum",#20048) -decl(#20048,#20006) -typedecl(#20048,#20012) -namespacedecl(#20048,#20018) #20050=* -scopes(#20050,14) -scopenodes(#20046,#20050) -scopenesting(#20050,#20000) -#20051=@"var;{a};{#20050}" -variables(#20051,"a",#20050) -#20052=@"local_type_name;{a};{#20050}" -local_type_names(#20052,"a",#20050) -#20053=@"var;{b};{#20050}" -variables(#20053,"b",#20050) -#20054=@"local_type_name;{b};{#20050}" -local_type_names(#20054,"b",#20050) -#20055=* -properties(#20055,#20046,1,7,"a") -#20056=@"loc,{#10000},3,29,3,29" -locations_default(#20056,#10000,3,29,3,29) -hasLocation(#20055,#20056) -#20057=* -exprs(#20057,78,#20055,0,"a") -hasLocation(#20057,#20056) -enclosingStmt(#20057,#20046) -exprContainers(#20057,#20001) -literals("a","a",#20057) -decl(#20057,#20051) -typedecl(#20057,#20052) +tokeninfo(#20050,8,#20001,6,",") +#20051=@"loc,{#10000},1,21,1,21" +locations_default(#20051,#10000,1,21,1,21) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,6,#20001,7,"green") +#20053=@"loc,{#10000},1,23,1,27" +locations_default(#20053,#10000,1,23,1,27) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,8,#20001,8,",") +#20055=@"loc,{#10000},1,28,1,28" +locations_default(#20055,#10000,1,28,1,28) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,6,#20001,9,"blue") +#20057=@"loc,{#10000},1,30,1,33" +locations_default(#20057,#10000,1,30,1,33) +hasLocation(#20056,#20057) #20058=* -properties(#20058,#20046,2,7,"b") -#20059=@"loc,{#10000},3,32,3,32" -locations_default(#20059,#10000,3,32,3,32) +tokeninfo(#20058,8,#20001,10,"}") +#20059=@"loc,{#10000},1,35,1,35" +locations_default(#20059,#10000,1,35,1,35) hasLocation(#20058,#20059) #20060=* -exprs(#20060,78,#20058,0,"b") -hasLocation(#20060,#20059) -enclosingStmt(#20060,#20046) -exprContainers(#20060,#20001) -literals("b","b",#20060) -decl(#20060,#20053) -typedecl(#20060,#20054) -hasDeclareKeyword(#20046) -#20061=* -stmts(#20061,36,#20001,2,"const e ... +2, b }") -#20062=@"loc,{#10000},4,1,4,35" -locations_default(#20062,#10000,4,1,4,35) -hasLocation(#20061,#20062) -stmtContainers(#20061,#20001) -#20063=* -exprs(#20063,78,#20061,0,"ConstEnum") -#20064=@"loc,{#10000},4,12,4,20" -locations_default(#20064,#10000,4,12,4,20) -hasLocation(#20063,#20064) -enclosingStmt(#20063,#20061) -exprContainers(#20063,#20001) -literals("ConstEnum","ConstEnum",#20063) -decl(#20063,#20007) -typedecl(#20063,#20013) -namespacedecl(#20063,#20019) -#20065=* -scopes(#20065,14) -scopenodes(#20061,#20065) -scopenesting(#20065,#20000) -#20066=@"var;{a};{#20065}" -variables(#20066,"a",#20065) -#20067=@"local_type_name;{a};{#20065}" -local_type_names(#20067,"a",#20065) -#20068=@"var;{b};{#20065}" -variables(#20068,"b",#20065) -#20069=@"local_type_name;{b};{#20065}" -local_type_names(#20069,"b",#20065) +tokeninfo(#20060,7,#20001,11,"declare") +#20061=@"loc,{#10000},3,1,3,7" +locations_default(#20061,#10000,3,1,3,7) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,7,#20001,12,"enum") +#20063=@"loc,{#10000},3,9,3,12" +locations_default(#20063,#10000,3,9,3,12) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,6,#20001,13,"DeclaredEnum") +#20065=@"loc,{#10000},3,14,3,25" +locations_default(#20065,#10000,3,14,3,25) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,8,#20001,14,"{") +#20067=@"loc,{#10000},3,27,3,27" +locations_default(#20067,#10000,3,27,3,27) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,6,#20001,15,"a") +#20069=@"loc,{#10000},3,29,3,29" +locations_default(#20069,#10000,3,29,3,29) +hasLocation(#20068,#20069) #20070=* -properties(#20070,#20061,1,7,"a = 1+2") -#20071=@"loc,{#10000},4,24,4,30" -locations_default(#20071,#10000,4,24,4,30) +tokeninfo(#20070,8,#20001,16,",") +#20071=@"loc,{#10000},3,30,3,30" +locations_default(#20071,#10000,3,30,3,30) hasLocation(#20070,#20071) #20072=* -exprs(#20072,78,#20070,0,"a") -#20073=@"loc,{#10000},4,24,4,24" -locations_default(#20073,#10000,4,24,4,24) +tokeninfo(#20072,6,#20001,17,"b") +#20073=@"loc,{#10000},3,32,3,32" +locations_default(#20073,#10000,3,32,3,32) hasLocation(#20072,#20073) -enclosingStmt(#20072,#20061) -exprContainers(#20072,#20001) -literals("a","a",#20072) -decl(#20072,#20066) -typedecl(#20072,#20067) #20074=* -exprs(#20074,34,#20070,1,"1+2") -#20075=@"loc,{#10000},4,28,4,30" -locations_default(#20075,#10000,4,28,4,30) +tokeninfo(#20074,8,#20001,18,"}") +#20075=@"loc,{#10000},3,34,3,34" +locations_default(#20075,#10000,3,34,3,34) hasLocation(#20074,#20075) -enclosingStmt(#20074,#20061) -exprContainers(#20074,#20001) #20076=* -exprs(#20076,3,#20074,0,"1") -#20077=@"loc,{#10000},4,28,4,28" -locations_default(#20077,#10000,4,28,4,28) +tokeninfo(#20076,7,#20001,19,"const") +#20077=@"loc,{#10000},4,1,4,5" +locations_default(#20077,#10000,4,1,4,5) hasLocation(#20076,#20077) -enclosingStmt(#20076,#20061) -exprContainers(#20076,#20001) -literals("1","1",#20076) #20078=* -exprs(#20078,3,#20074,1,"2") -#20079=@"loc,{#10000},4,30,4,30" -locations_default(#20079,#10000,4,30,4,30) +tokeninfo(#20078,7,#20001,20,"enum") +#20079=@"loc,{#10000},4,7,4,10" +locations_default(#20079,#10000,4,7,4,10) hasLocation(#20078,#20079) -enclosingStmt(#20078,#20061) -exprContainers(#20078,#20001) -literals("2","2",#20078) #20080=* -properties(#20080,#20061,2,7,"b") -#20081=@"loc,{#10000},4,33,4,33" -locations_default(#20081,#10000,4,33,4,33) +tokeninfo(#20080,6,#20001,21,"ConstEnum") +#20081=@"loc,{#10000},4,12,4,20" +locations_default(#20081,#10000,4,12,4,20) hasLocation(#20080,#20081) #20082=* -exprs(#20082,78,#20080,0,"b") -hasLocation(#20082,#20081) -enclosingStmt(#20082,#20061) -exprContainers(#20082,#20001) -literals("b","b",#20082) -decl(#20082,#20068) -typedecl(#20082,#20069) -isConstEnum(#20061) -#20083=* -stmts(#20083,36,#20001,3,"declare ... a, b }") -#20084=@"loc,{#10000},5,1,5,45" -locations_default(#20084,#10000,5,1,5,45) -hasLocation(#20083,#20084) -stmtContainers(#20083,#20001) -#20085=* -exprs(#20085,78,#20083,0,"DeclaredConstEnum") -#20086=@"loc,{#10000},5,20,5,36" -locations_default(#20086,#10000,5,20,5,36) -hasLocation(#20085,#20086) -enclosingStmt(#20085,#20083) -exprContainers(#20085,#20001) -literals("DeclaredConstEnum","DeclaredConstEnum",#20085) -decl(#20085,#20008) -typedecl(#20085,#20014) -namespacedecl(#20085,#20020) -#20087=* -scopes(#20087,14) -scopenodes(#20083,#20087) -scopenesting(#20087,#20000) -#20088=@"var;{a};{#20087}" -variables(#20088,"a",#20087) -#20089=@"local_type_name;{a};{#20087}" -local_type_names(#20089,"a",#20087) -#20090=@"var;{b};{#20087}" -variables(#20090,"b",#20087) -#20091=@"local_type_name;{b};{#20087}" -local_type_names(#20091,"b",#20087) +tokeninfo(#20082,8,#20001,22,"{") +#20083=@"loc,{#10000},4,22,4,22" +locations_default(#20083,#10000,4,22,4,22) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,6,#20001,23,"a") +#20085=@"loc,{#10000},4,24,4,24" +locations_default(#20085,#10000,4,24,4,24) +hasLocation(#20084,#20085) +#20086=* +tokeninfo(#20086,8,#20001,24,"=") +#20087=@"loc,{#10000},4,26,4,26" +locations_default(#20087,#10000,4,26,4,26) +hasLocation(#20086,#20087) +#20088=* +tokeninfo(#20088,3,#20001,25,"1") +#20089=@"loc,{#10000},4,28,4,28" +locations_default(#20089,#10000,4,28,4,28) +hasLocation(#20088,#20089) +#20090=* +tokeninfo(#20090,8,#20001,26,"+") +#20091=@"loc,{#10000},4,29,4,29" +locations_default(#20091,#10000,4,29,4,29) +hasLocation(#20090,#20091) #20092=* -properties(#20092,#20083,1,7,"a") -#20093=@"loc,{#10000},5,40,5,40" -locations_default(#20093,#10000,5,40,5,40) +tokeninfo(#20092,3,#20001,27,"2") +#20093=@"loc,{#10000},4,30,4,30" +locations_default(#20093,#10000,4,30,4,30) hasLocation(#20092,#20093) #20094=* -exprs(#20094,78,#20092,0,"a") -hasLocation(#20094,#20093) -enclosingStmt(#20094,#20083) -exprContainers(#20094,#20001) -literals("a","a",#20094) -decl(#20094,#20088) -typedecl(#20094,#20089) -#20095=* -properties(#20095,#20083,2,7,"b") -#20096=@"loc,{#10000},5,43,5,43" -locations_default(#20096,#10000,5,43,5,43) -hasLocation(#20095,#20096) -#20097=* -exprs(#20097,78,#20095,0,"b") -hasLocation(#20097,#20096) -enclosingStmt(#20097,#20083) -exprContainers(#20097,#20001) -literals("b","b",#20097) -decl(#20097,#20090) -typedecl(#20097,#20091) -isConstEnum(#20083) -hasDeclareKeyword(#20083) +tokeninfo(#20094,8,#20001,28,",") +#20095=@"loc,{#10000},4,31,4,31" +locations_default(#20095,#10000,4,31,4,31) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,6,#20001,29,"b") +#20097=@"loc,{#10000},4,33,4,33" +locations_default(#20097,#10000,4,33,4,33) +hasLocation(#20096,#20097) #20098=* -stmts(#20098,17,#20001,4,"functio ... rn x; }") -#20099=@"loc,{#10000},7,1,7,29" -locations_default(#20099,#10000,7,1,7,29) +tokeninfo(#20098,8,#20001,30,"}") +#20099=@"loc,{#10000},4,35,4,35" +locations_default(#20099,#10000,4,35,4,35) hasLocation(#20098,#20099) -stmtContainers(#20098,#20001) #20100=* -exprs(#20100,78,#20098,-1,"foo") -#20101=@"loc,{#10000},7,10,7,12" -locations_default(#20101,#10000,7,10,7,12) +tokeninfo(#20100,7,#20001,31,"declare") +#20101=@"loc,{#10000},5,1,5,7" +locations_default(#20101,#10000,5,1,5,7) hasLocation(#20100,#20101) -exprContainers(#20100,#20098) -literals("foo","foo",#20100) -decl(#20100,#20003) #20102=* -scopes(#20102,1) -scopenodes(#20098,#20102) -scopenesting(#20102,#20000) -#20103=@"var;{x};{#20102}" -variables(#20103,"x",#20102) +tokeninfo(#20102,7,#20001,32,"const") +#20103=@"loc,{#10000},5,9,5,13" +locations_default(#20103,#10000,5,9,5,13) +hasLocation(#20102,#20103) #20104=* -exprs(#20104,78,#20098,0,"x") -#20105=@"loc,{#10000},7,14,7,14" -locations_default(#20105,#10000,7,14,7,14) +tokeninfo(#20104,7,#20001,33,"enum") +#20105=@"loc,{#10000},5,15,5,18" +locations_default(#20105,#10000,5,15,5,18) hasLocation(#20104,#20105) -exprContainers(#20104,#20098) -literals("x","x",#20104) -decl(#20104,#20103) -#20106=@"var;{arguments};{#20102}" -variables(#20106,"arguments",#20102) -isArgumentsObject(#20106) -#20107=* -stmts(#20107,1,#20098,-2,"{ return x; }") -#20108=@"loc,{#10000},7,17,7,29" -locations_default(#20108,#10000,7,17,7,29) -hasLocation(#20107,#20108) -stmtContainers(#20107,#20098) -#20109=* -stmts(#20109,9,#20107,0,"return x;") -#20110=@"loc,{#10000},7,19,7,27" -locations_default(#20110,#10000,7,19,7,27) -hasLocation(#20109,#20110) -stmtContainers(#20109,#20098) -#20111=* -exprs(#20111,79,#20109,0,"x") -#20112=@"loc,{#10000},7,26,7,26" -locations_default(#20112,#10000,7,26,7,26) -hasLocation(#20111,#20112) -enclosingStmt(#20111,#20109) -exprContainers(#20111,#20098) -literals("x","x",#20111) -bind(#20111,#20103) -numlines(#20098,1,1,0) -#20113=* -stmts(#20113,36,#20001,5,"enum Co ... + 2)\n}") -#20114=@"loc,{#10000},9,1,11,1" -locations_default(#20114,#10000,9,1,11,1) -hasLocation(#20113,#20114) -stmtContainers(#20113,#20001) -#20115=* -exprs(#20115,78,#20113,0,"ComplexInitializer") -#20116=@"loc,{#10000},9,6,9,23" -locations_default(#20116,#10000,9,6,9,23) -hasLocation(#20115,#20116) -enclosingStmt(#20115,#20113) -exprContainers(#20115,#20001) -literals("ComplexInitializer","ComplexInitializer",#20115) -decl(#20115,#20009) -typedecl(#20115,#20015) -namespacedecl(#20115,#20021) -#20117=* -scopes(#20117,14) -scopenodes(#20113,#20117) -scopenesting(#20117,#20000) -#20118=@"var;{a};{#20117}" -variables(#20118,"a",#20117) -#20119=@"local_type_name;{a};{#20117}" -local_type_names(#20119,"a",#20117) +#20106=* +tokeninfo(#20106,6,#20001,34,"DeclaredConstEnum") +#20107=@"loc,{#10000},5,20,5,36" +locations_default(#20107,#10000,5,20,5,36) +hasLocation(#20106,#20107) +#20108=* +tokeninfo(#20108,8,#20001,35,"{") +#20109=@"loc,{#10000},5,38,5,38" +locations_default(#20109,#10000,5,38,5,38) +hasLocation(#20108,#20109) +#20110=* +tokeninfo(#20110,6,#20001,36,"a") +#20111=@"loc,{#10000},5,40,5,40" +locations_default(#20111,#10000,5,40,5,40) +hasLocation(#20110,#20111) +#20112=* +tokeninfo(#20112,8,#20001,37,",") +#20113=@"loc,{#10000},5,41,5,41" +locations_default(#20113,#10000,5,41,5,41) +hasLocation(#20112,#20113) +#20114=* +tokeninfo(#20114,6,#20001,38,"b") +#20115=@"loc,{#10000},5,43,5,43" +locations_default(#20115,#10000,5,43,5,43) +hasLocation(#20114,#20115) +#20116=* +tokeninfo(#20116,8,#20001,39,"}") +#20117=@"loc,{#10000},5,45,5,45" +locations_default(#20117,#10000,5,45,5,45) +hasLocation(#20116,#20117) +#20118=* +tokeninfo(#20118,7,#20001,40,"function") +#20119=@"loc,{#10000},7,1,7,8" +locations_default(#20119,#10000,7,1,7,8) +hasLocation(#20118,#20119) #20120=* -properties(#20120,#20113,1,7,"a = foo(1 + 2)") -#20121=@"loc,{#10000},10,3,10,16" -locations_default(#20121,#10000,10,3,10,16) +tokeninfo(#20120,6,#20001,41,"foo") +#20121=@"loc,{#10000},7,10,7,12" +locations_default(#20121,#10000,7,10,7,12) hasLocation(#20120,#20121) #20122=* -exprs(#20122,78,#20120,0,"a") -#20123=@"loc,{#10000},10,3,10,3" -locations_default(#20123,#10000,10,3,10,3) +tokeninfo(#20122,8,#20001,42,"(") +#20123=@"loc,{#10000},7,13,7,13" +locations_default(#20123,#10000,7,13,7,13) hasLocation(#20122,#20123) -enclosingStmt(#20122,#20113) -exprContainers(#20122,#20001) -literals("a","a",#20122) -decl(#20122,#20118) -typedecl(#20122,#20119) #20124=* -exprs(#20124,13,#20120,1,"foo(1 + 2)") -#20125=@"loc,{#10000},10,7,10,16" -locations_default(#20125,#10000,10,7,10,16) +tokeninfo(#20124,6,#20001,43,"x") +#20125=@"loc,{#10000},7,14,7,14" +locations_default(#20125,#10000,7,14,7,14) hasLocation(#20124,#20125) -enclosingStmt(#20124,#20113) -exprContainers(#20124,#20001) #20126=* -exprs(#20126,79,#20124,-1,"foo") -#20127=@"loc,{#10000},10,7,10,9" -locations_default(#20127,#10000,10,7,10,9) +tokeninfo(#20126,8,#20001,44,")") +#20127=@"loc,{#10000},7,15,7,15" +locations_default(#20127,#10000,7,15,7,15) hasLocation(#20126,#20127) -enclosingStmt(#20126,#20113) -exprContainers(#20126,#20001) -literals("foo","foo",#20126) -bind(#20126,#20003) #20128=* -exprs(#20128,34,#20124,0,"1 + 2") -#20129=@"loc,{#10000},10,11,10,15" -locations_default(#20129,#10000,10,11,10,15) +tokeninfo(#20128,8,#20001,45,"{") +#20129=@"loc,{#10000},7,17,7,17" +locations_default(#20129,#10000,7,17,7,17) hasLocation(#20128,#20129) -enclosingStmt(#20128,#20113) -exprContainers(#20128,#20001) #20130=* -exprs(#20130,3,#20128,0,"1") -#20131=@"loc,{#10000},10,11,10,11" -locations_default(#20131,#10000,10,11,10,11) +tokeninfo(#20130,7,#20001,46,"return") +#20131=@"loc,{#10000},7,19,7,24" +locations_default(#20131,#10000,7,19,7,24) hasLocation(#20130,#20131) -enclosingStmt(#20130,#20113) -exprContainers(#20130,#20001) -literals("1","1",#20130) #20132=* -exprs(#20132,3,#20128,1,"2") -#20133=@"loc,{#10000},10,15,10,15" -locations_default(#20133,#10000,10,15,10,15) +tokeninfo(#20132,6,#20001,47,"x") +#20133=@"loc,{#10000},7,26,7,26" +locations_default(#20133,#10000,7,26,7,26) hasLocation(#20132,#20133) -enclosingStmt(#20132,#20113) -exprContainers(#20132,#20001) -literals("2","2",#20132) #20134=* -stmts(#20134,36,#20001,6,"enum St ... b = a\n}") -#20135=@"loc,{#10000},13,1,16,1" -locations_default(#20135,#10000,13,1,16,1) +tokeninfo(#20134,8,#20001,48,";") +#20135=@"loc,{#10000},7,27,7,27" +locations_default(#20135,#10000,7,27,7,27) hasLocation(#20134,#20135) -stmtContainers(#20134,#20001) #20136=* -exprs(#20136,78,#20134,0,"StringL ... mMember") -#20137=@"loc,{#10000},13,6,13,28" -locations_default(#20137,#10000,13,6,13,28) +tokeninfo(#20136,8,#20001,49,"}") +#20137=@"loc,{#10000},7,29,7,29" +locations_default(#20137,#10000,7,29,7,29) hasLocation(#20136,#20137) -enclosingStmt(#20136,#20134) -exprContainers(#20136,#20001) -literals("StringLiteralEnumMember","StringLiteralEnumMember",#20136) -decl(#20136,#20010) -typedecl(#20136,#20016) -namespacedecl(#20136,#20022) #20138=* -scopes(#20138,14) -scopenodes(#20134,#20138) -scopenesting(#20138,#20000) -#20139=@"var;{a};{#20138}" -variables(#20139,"a",#20138) -#20140=@"local_type_name;{a};{#20138}" -local_type_names(#20140,"a",#20138) -#20141=@"var;{b};{#20138}" -variables(#20141,"b",#20138) -#20142=@"local_type_name;{b};{#20138}" -local_type_names(#20142,"b",#20138) -#20143=* -properties(#20143,#20134,1,7,"""a"" = 2") -#20144=@"loc,{#10000},14,3,14,9" -locations_default(#20144,#10000,14,3,14,9) -hasLocation(#20143,#20144) -#20145=* -exprs(#20145,78,#20143,0,"""a""") -#20146=@"loc,{#10000},14,3,14,5" -locations_default(#20146,#10000,14,3,14,5) -hasLocation(#20145,#20146) -enclosingStmt(#20145,#20134) -exprContainers(#20145,#20001) -literals("a","a",#20145) -decl(#20145,#20139) -typedecl(#20145,#20140) -#20147=* -exprs(#20147,3,#20143,1,"2") -#20148=@"loc,{#10000},14,9,14,9" -locations_default(#20148,#10000,14,9,14,9) -hasLocation(#20147,#20148) -enclosingStmt(#20147,#20134) -exprContainers(#20147,#20001) -literals("2","2",#20147) -#20149=* -properties(#20149,#20134,2,7,"b = a") -#20150=@"loc,{#10000},15,3,15,7" -locations_default(#20150,#10000,15,3,15,7) -hasLocation(#20149,#20150) -#20151=* -exprs(#20151,78,#20149,0,"b") -#20152=@"loc,{#10000},15,3,15,3" -locations_default(#20152,#10000,15,3,15,3) -hasLocation(#20151,#20152) -enclosingStmt(#20151,#20134) -exprContainers(#20151,#20001) -literals("b","b",#20151) -decl(#20151,#20141) -typedecl(#20151,#20142) -#20153=* -exprs(#20153,79,#20149,1,"a") -#20154=@"loc,{#10000},15,7,15,7" -locations_default(#20154,#10000,15,7,15,7) -hasLocation(#20153,#20154) -enclosingStmt(#20153,#20134) -exprContainers(#20153,#20001) -literals("a","a",#20153) -bind(#20153,#20139) -#20155=* -stmts(#20155,18,#20001,7,"var x : ... r.a = 2") -#20156=@"loc,{#10000},18,1,18,37" -locations_default(#20156,#10000,18,1,18,37) -hasLocation(#20155,#20156) -stmtContainers(#20155,#20001) -#20157=* -exprs(#20157,64,#20155,0,"x : Str ... r.a = 2") -#20158=@"loc,{#10000},18,5,18,37" -locations_default(#20158,#10000,18,5,18,37) -hasLocation(#20157,#20158) -enclosingStmt(#20157,#20155) -exprContainers(#20157,#20001) -#20159=* -exprs(#20159,78,#20157,0,"x") -#20160=@"loc,{#10000},18,5,18,5" -locations_default(#20160,#10000,18,5,18,5) -hasLocation(#20159,#20160) -enclosingStmt(#20159,#20155) -exprContainers(#20159,#20001) -literals("x","x",#20159) -decl(#20159,#20004) +tokeninfo(#20138,7,#20001,50,"enum") +#20139=@"loc,{#10000},9,1,9,4" +locations_default(#20139,#10000,9,1,9,4) +hasLocation(#20138,#20139) +#20140=* +tokeninfo(#20140,6,#20001,51,"ComplexInitializer") +#20141=@"loc,{#10000},9,6,9,23" +locations_default(#20141,#10000,9,6,9,23) +hasLocation(#20140,#20141) +#20142=* +tokeninfo(#20142,8,#20001,52,"{") +#20143=@"loc,{#10000},9,25,9,25" +locations_default(#20143,#10000,9,25,9,25) +hasLocation(#20142,#20143) +#20144=* +tokeninfo(#20144,6,#20001,53,"a") +#20145=@"loc,{#10000},10,3,10,3" +locations_default(#20145,#10000,10,3,10,3) +hasLocation(#20144,#20145) +#20146=* +tokeninfo(#20146,8,#20001,54,"=") +#20147=@"loc,{#10000},10,5,10,5" +locations_default(#20147,#10000,10,5,10,5) +hasLocation(#20146,#20147) +#20148=* +tokeninfo(#20148,6,#20001,55,"foo") +#20149=@"loc,{#10000},10,7,10,9" +locations_default(#20149,#10000,10,7,10,9) +hasLocation(#20148,#20149) +#20150=* +tokeninfo(#20150,8,#20001,56,"(") +#20151=@"loc,{#10000},10,10,10,10" +locations_default(#20151,#10000,10,10,10,10) +hasLocation(#20150,#20151) +#20152=* +tokeninfo(#20152,3,#20001,57,"1") +#20153=@"loc,{#10000},10,11,10,11" +locations_default(#20153,#10000,10,11,10,11) +hasLocation(#20152,#20153) +#20154=* +tokeninfo(#20154,8,#20001,58,"+") +#20155=@"loc,{#10000},10,13,10,13" +locations_default(#20155,#10000,10,13,10,13) +hasLocation(#20154,#20155) +#20156=* +tokeninfo(#20156,3,#20001,59,"2") +#20157=@"loc,{#10000},10,15,10,15" +locations_default(#20157,#10000,10,15,10,15) +hasLocation(#20156,#20157) +#20158=* +tokeninfo(#20158,8,#20001,60,")") +#20159=@"loc,{#10000},10,16,10,16" +locations_default(#20159,#10000,10,16,10,16) +hasLocation(#20158,#20159) +#20160=* +tokeninfo(#20160,8,#20001,61,"}") +hasLocation(#20160,#20023) #20161=* -exprs(#20161,3,#20157,1,"2") -#20162=@"loc,{#10000},18,37,18,37" -locations_default(#20162,#10000,18,37,18,37) +tokeninfo(#20161,7,#20001,62,"enum") +#20162=@"loc,{#10000},13,1,13,4" +locations_default(#20162,#10000,13,1,13,4) hasLocation(#20161,#20162) -enclosingStmt(#20161,#20155) -exprContainers(#20161,#20001) -literals("2","2",#20161) #20163=* -typeexprs(#20163,13,#20157,2,"StringL ... ember.a") -#20164=@"loc,{#10000},18,9,18,33" -locations_default(#20164,#10000,18,9,18,33) +tokeninfo(#20163,6,#20001,63,"StringLiteralEnumMember") +#20164=@"loc,{#10000},13,6,13,28" +locations_default(#20164,#10000,13,6,13,28) hasLocation(#20163,#20164) -enclosingStmt(#20163,#20155) -exprContainers(#20163,#20001) #20165=* -typeexprs(#20165,25,#20163,0,"StringL ... mMember") -#20166=@"loc,{#10000},18,9,18,31" -locations_default(#20166,#10000,18,9,18,31) +tokeninfo(#20165,8,#20001,64,"{") +#20166=@"loc,{#10000},13,30,13,30" +locations_default(#20166,#10000,13,30,13,30) hasLocation(#20165,#20166) -enclosingStmt(#20165,#20155) -exprContainers(#20165,#20001) -literals("StringLiteralEnumMember","StringLiteralEnumMember",#20165) -namespacebind(#20165,#20022) #20167=* -typeexprs(#20167,15,#20163,1,"a") -#20168=@"loc,{#10000},18,33,18,33" -locations_default(#20168,#10000,18,33,18,33) +tokeninfo(#20167,4,#20001,65,"""a""") +#20168=@"loc,{#10000},14,3,14,5" +locations_default(#20168,#10000,14,3,14,5) hasLocation(#20167,#20168) -enclosingStmt(#20167,#20155) -exprContainers(#20167,#20001) -literals("a","a",#20167) #20169=* -lines(#20169,#20001,"enum Color { red = 1, green, blue }"," -") -hasLocation(#20169,#20024) -#20170=* -lines(#20170,#20001,""," -") -#20171=@"loc,{#10000},2,1,2,0" -locations_default(#20171,#10000,2,1,2,0) -hasLocation(#20170,#20171) -#20172=* -lines(#20172,#20001,"declare enum DeclaredEnum { a, b }"," -") -hasLocation(#20172,#20047) +tokeninfo(#20169,8,#20001,66,"=") +#20170=@"loc,{#10000},14,7,14,7" +locations_default(#20170,#10000,14,7,14,7) +hasLocation(#20169,#20170) +#20171=* +tokeninfo(#20171,3,#20001,67,"2") +#20172=@"loc,{#10000},14,9,14,9" +locations_default(#20172,#10000,14,9,14,9) +hasLocation(#20171,#20172) #20173=* -lines(#20173,#20001,"const enum ConstEnum { a = 1+2, b }"," -") -hasLocation(#20173,#20062) -#20174=* -lines(#20174,#20001,"declare const enum DeclaredConstEnum { a, b }"," -") -hasLocation(#20174,#20084) +tokeninfo(#20173,8,#20001,68,",") +#20174=@"loc,{#10000},14,10,14,10" +locations_default(#20174,#10000,14,10,14,10) +hasLocation(#20173,#20174) #20175=* -lines(#20175,#20001,""," -") -#20176=@"loc,{#10000},6,1,6,0" -locations_default(#20176,#10000,6,1,6,0) +tokeninfo(#20175,6,#20001,69,"b") +#20176=@"loc,{#10000},15,3,15,3" +locations_default(#20176,#10000,15,3,15,3) hasLocation(#20175,#20176) #20177=* -lines(#20177,#20001,"function foo(x) { return x; }"," -") -hasLocation(#20177,#20099) -#20178=* -lines(#20178,#20001,""," -") -#20179=@"loc,{#10000},8,1,8,0" -locations_default(#20179,#10000,8,1,8,0) -hasLocation(#20178,#20179) -#20180=* -lines(#20180,#20001,"enum ComplexInitializer {"," -") -#20181=@"loc,{#10000},9,1,9,25" -locations_default(#20181,#10000,9,1,9,25) -hasLocation(#20180,#20181) +tokeninfo(#20177,8,#20001,70,"=") +#20178=@"loc,{#10000},15,5,15,5" +locations_default(#20178,#10000,15,5,15,5) +hasLocation(#20177,#20178) +#20179=* +tokeninfo(#20179,6,#20001,71,"a") +#20180=@"loc,{#10000},15,7,15,7" +locations_default(#20180,#10000,15,7,15,7) +hasLocation(#20179,#20180) +#20181=* +tokeninfo(#20181,8,#20001,72,"}") +hasLocation(#20181,#20033) #20182=* -lines(#20182,#20001," a = foo(1 + 2)"," -") -#20183=@"loc,{#10000},10,1,10,16" -locations_default(#20183,#10000,10,1,10,16) +tokeninfo(#20182,7,#20001,73,"var") +#20183=@"loc,{#10000},18,1,18,3" +locations_default(#20183,#10000,18,1,18,3) hasLocation(#20182,#20183) -indentation(#10000,10," ",2) #20184=* -lines(#20184,#20001,"}"," -") -#20185=@"loc,{#10000},11,1,11,1" -locations_default(#20185,#10000,11,1,11,1) +tokeninfo(#20184,6,#20001,74,"x") +#20185=@"loc,{#10000},18,5,18,5" +locations_default(#20185,#10000,18,5,18,5) hasLocation(#20184,#20185) #20186=* -lines(#20186,#20001,""," -") -#20187=@"loc,{#10000},12,1,12,0" -locations_default(#20187,#10000,12,1,12,0) +tokeninfo(#20186,8,#20001,75,":") +#20187=@"loc,{#10000},18,7,18,7" +locations_default(#20187,#10000,18,7,18,7) hasLocation(#20186,#20187) #20188=* -lines(#20188,#20001,"enum StringLiteralEnumMember {"," -") -#20189=@"loc,{#10000},13,1,13,30" -locations_default(#20189,#10000,13,1,13,30) +tokeninfo(#20188,6,#20001,76,"StringLiteralEnumMember") +#20189=@"loc,{#10000},18,9,18,31" +locations_default(#20189,#10000,18,9,18,31) hasLocation(#20188,#20189) #20190=* -lines(#20190,#20001," ""a"" = 2,"," -") -#20191=@"loc,{#10000},14,1,14,10" -locations_default(#20191,#10000,14,1,14,10) +tokeninfo(#20190,8,#20001,77,".") +#20191=@"loc,{#10000},18,32,18,32" +locations_default(#20191,#10000,18,32,18,32) hasLocation(#20190,#20191) -indentation(#10000,14," ",2) #20192=* -lines(#20192,#20001," b = a"," -") -#20193=@"loc,{#10000},15,1,15,7" -locations_default(#20193,#10000,15,1,15,7) +tokeninfo(#20192,6,#20001,78,"a") +#20193=@"loc,{#10000},18,33,18,33" +locations_default(#20193,#10000,18,33,18,33) hasLocation(#20192,#20193) -indentation(#10000,15," ",2) #20194=* -lines(#20194,#20001,"}"," -") -#20195=@"loc,{#10000},16,1,16,1" -locations_default(#20195,#10000,16,1,16,1) +tokeninfo(#20194,8,#20001,79,"=") +#20195=@"loc,{#10000},18,35,18,35" +locations_default(#20195,#10000,18,35,18,35) hasLocation(#20194,#20195) #20196=* -lines(#20196,#20001,""," -") -#20197=@"loc,{#10000},17,1,17,0" -locations_default(#20197,#10000,17,1,17,0) +tokeninfo(#20196,3,#20001,80,"2") +#20197=@"loc,{#10000},18,37,18,37" +locations_default(#20197,#10000,18,37,18,37) hasLocation(#20196,#20197) #20198=* -lines(#20198,#20001,"var x : StringLiteralEnumMember.a = 2"," -") -hasLocation(#20198,#20156) -numlines(#20001,18,13,0) -#20199=* -tokeninfo(#20199,7,#20001,0,"enum") -#20200=@"loc,{#10000},1,1,1,4" -locations_default(#20200,#10000,1,1,1,4) -hasLocation(#20199,#20200) -#20201=* -tokeninfo(#20201,6,#20001,1,"Color") -hasLocation(#20201,#20026) -#20202=* -tokeninfo(#20202,8,#20001,2,"{") -#20203=@"loc,{#10000},1,12,1,12" -locations_default(#20203,#10000,1,12,1,12) -hasLocation(#20202,#20203) -#20204=* -tokeninfo(#20204,6,#20001,3,"red") -hasLocation(#20204,#20037) -#20205=* -tokeninfo(#20205,8,#20001,4,"=") -#20206=@"loc,{#10000},1,18,1,18" -locations_default(#20206,#10000,1,18,1,18) -hasLocation(#20205,#20206) -#20207=* -tokeninfo(#20207,3,#20001,5,"1") -hasLocation(#20207,#20039) -#20208=* -tokeninfo(#20208,8,#20001,6,",") -#20209=@"loc,{#10000},1,21,1,21" -locations_default(#20209,#10000,1,21,1,21) -hasLocation(#20208,#20209) -#20210=* -tokeninfo(#20210,6,#20001,7,"green") -hasLocation(#20210,#20041) -#20211=* -tokeninfo(#20211,8,#20001,8,",") -#20212=@"loc,{#10000},1,28,1,28" -locations_default(#20212,#10000,1,28,1,28) -hasLocation(#20211,#20212) -#20213=* -tokeninfo(#20213,6,#20001,9,"blue") -hasLocation(#20213,#20044) -#20214=* -tokeninfo(#20214,8,#20001,10,"}") -#20215=@"loc,{#10000},1,35,1,35" -locations_default(#20215,#10000,1,35,1,35) -hasLocation(#20214,#20215) -#20216=* -tokeninfo(#20216,7,#20001,11,"declare") -#20217=@"loc,{#10000},3,1,3,7" -locations_default(#20217,#10000,3,1,3,7) -hasLocation(#20216,#20217) -#20218=* -tokeninfo(#20218,7,#20001,12,"enum") -#20219=@"loc,{#10000},3,9,3,12" -locations_default(#20219,#10000,3,9,3,12) -hasLocation(#20218,#20219) -#20220=* -tokeninfo(#20220,6,#20001,13,"DeclaredEnum") -hasLocation(#20220,#20049) +tokeninfo(#20198,0,#20001,81,"") +#20199=@"loc,{#10000},19,1,19,0" +locations_default(#20199,#10000,19,1,19,0) +hasLocation(#20198,#20199) +toplevels(#20001,0) +#20200=@"loc,{#10000},1,1,19,0" +locations_default(#20200,#10000,1,1,19,0) +hasLocation(#20001,#20200) +#20201=@"var;{foo};{#20000}" +variables(#20201,"foo",#20000) +#20202=@"var;{x};{#20000}" +variables(#20202,"x",#20000) +#20203=@"var;{Color};{#20000}" +variables(#20203,"Color",#20000) +#20204=@"var;{DeclaredEnum};{#20000}" +variables(#20204,"DeclaredEnum",#20000) +#20205=@"var;{ConstEnum};{#20000}" +variables(#20205,"ConstEnum",#20000) +#20206=@"var;{DeclaredConstEnum};{#20000}" +variables(#20206,"DeclaredConstEnum",#20000) +#20207=@"var;{ComplexInitializer};{#20000}" +variables(#20207,"ComplexInitializer",#20000) +#20208=@"var;{StringLiteralEnumMember};{#20000}" +variables(#20208,"StringLiteralEnumMember",#20000) +#20209=@"local_type_name;{Color};{#20000}" +local_type_names(#20209,"Color",#20000) +#20210=@"local_type_name;{DeclaredEnum};{#20000}" +local_type_names(#20210,"DeclaredEnum",#20000) +#20211=@"local_type_name;{ConstEnum};{#20000}" +local_type_names(#20211,"ConstEnum",#20000) +#20212=@"local_type_name;{DeclaredConstEnum};{#20000}" +local_type_names(#20212,"DeclaredConstEnum",#20000) +#20213=@"local_type_name;{ComplexInitializer};{#20000}" +local_type_names(#20213,"ComplexInitializer",#20000) +#20214=@"local_type_name;{StringLiteralEnumMember};{#20000}" +local_type_names(#20214,"StringLiteralEnumMember",#20000) +#20215=@"local_namespace_name;{Color};{#20000}" +local_namespace_names(#20215,"Color",#20000) +#20216=@"local_namespace_name;{DeclaredEnum};{#20000}" +local_namespace_names(#20216,"DeclaredEnum",#20000) +#20217=@"local_namespace_name;{ConstEnum};{#20000}" +local_namespace_names(#20217,"ConstEnum",#20000) +#20218=@"local_namespace_name;{DeclaredConstEnum};{#20000}" +local_namespace_names(#20218,"DeclaredConstEnum",#20000) +#20219=@"local_namespace_name;{ComplexInitializer};{#20000}" +local_namespace_names(#20219,"ComplexInitializer",#20000) +#20220=@"local_namespace_name;{StringLiteralEnumMember};{#20000}" +local_namespace_names(#20220,"StringLiteralEnumMember",#20000) #20221=* -tokeninfo(#20221,8,#20001,14,"{") -#20222=@"loc,{#10000},3,27,3,27" -locations_default(#20222,#10000,3,27,3,27) -hasLocation(#20221,#20222) +stmts(#20221,36,#20001,0,"enum Co ... blue }") +hasLocation(#20221,#20003) +stmtContainers(#20221,#20001) +#20222=* +exprs(#20222,78,#20221,0,"Color") +hasLocation(#20222,#20041) +enclosingStmt(#20222,#20221) +exprContainers(#20222,#20001) +literals("Color","Color",#20222) +decl(#20222,#20203) +typedecl(#20222,#20209) +namespacedecl(#20222,#20215) #20223=* -tokeninfo(#20223,6,#20001,15,"a") -hasLocation(#20223,#20056) -#20224=* -tokeninfo(#20224,8,#20001,16,",") -#20225=@"loc,{#10000},3,30,3,30" -locations_default(#20225,#10000,3,30,3,30) -hasLocation(#20224,#20225) -#20226=* -tokeninfo(#20226,6,#20001,17,"b") -hasLocation(#20226,#20059) -#20227=* -tokeninfo(#20227,8,#20001,18,"}") -#20228=@"loc,{#10000},3,34,3,34" -locations_default(#20228,#10000,3,34,3,34) -hasLocation(#20227,#20228) -#20229=* -tokeninfo(#20229,7,#20001,19,"const") -#20230=@"loc,{#10000},4,1,4,5" -locations_default(#20230,#10000,4,1,4,5) -hasLocation(#20229,#20230) -#20231=* -tokeninfo(#20231,7,#20001,20,"enum") -#20232=@"loc,{#10000},4,7,4,10" -locations_default(#20232,#10000,4,7,4,10) -hasLocation(#20231,#20232) +scopes(#20223,14) +scopenodes(#20221,#20223) +scopenesting(#20223,#20000) +#20224=@"var;{red};{#20223}" +variables(#20224,"red",#20223) +#20225=@"local_type_name;{red};{#20223}" +local_type_names(#20225,"red",#20223) +#20226=@"var;{green};{#20223}" +variables(#20226,"green",#20223) +#20227=@"local_type_name;{green};{#20223}" +local_type_names(#20227,"green",#20223) +#20228=@"var;{blue};{#20223}" +variables(#20228,"blue",#20223) +#20229=@"local_type_name;{blue};{#20223}" +local_type_names(#20229,"blue",#20223) +#20230=* +properties(#20230,#20221,1,7,"red = 1") +#20231=@"loc,{#10000},1,14,1,20" +locations_default(#20231,#10000,1,14,1,20) +hasLocation(#20230,#20231) +#20232=* +exprs(#20232,78,#20230,0,"red") +hasLocation(#20232,#20045) +enclosingStmt(#20232,#20221) +exprContainers(#20232,#20001) +literals("red","red",#20232) +decl(#20232,#20224) +typedecl(#20232,#20225) #20233=* -tokeninfo(#20233,6,#20001,21,"ConstEnum") -hasLocation(#20233,#20064) +exprs(#20233,3,#20230,1,"1") +hasLocation(#20233,#20049) +enclosingStmt(#20233,#20221) +exprContainers(#20233,#20001) +literals("1","1",#20233) #20234=* -tokeninfo(#20234,8,#20001,22,"{") -#20235=@"loc,{#10000},4,22,4,22" -locations_default(#20235,#10000,4,22,4,22) -hasLocation(#20234,#20235) +properties(#20234,#20221,2,7,"green") +hasLocation(#20234,#20053) +#20235=* +exprs(#20235,78,#20234,0,"green") +hasLocation(#20235,#20053) +enclosingStmt(#20235,#20221) +exprContainers(#20235,#20001) +literals("green","green",#20235) +decl(#20235,#20226) +typedecl(#20235,#20227) #20236=* -tokeninfo(#20236,6,#20001,23,"a") -hasLocation(#20236,#20073) +properties(#20236,#20221,3,7,"blue") +hasLocation(#20236,#20057) #20237=* -tokeninfo(#20237,8,#20001,24,"=") -#20238=@"loc,{#10000},4,26,4,26" -locations_default(#20238,#10000,4,26,4,26) -hasLocation(#20237,#20238) +exprs(#20237,78,#20236,0,"blue") +hasLocation(#20237,#20057) +enclosingStmt(#20237,#20221) +exprContainers(#20237,#20001) +literals("blue","blue",#20237) +decl(#20237,#20228) +typedecl(#20237,#20229) +#20238=* +stmts(#20238,36,#20001,1,"declare ... a, b }") +hasLocation(#20238,#20007) +stmtContainers(#20238,#20001) #20239=* -tokeninfo(#20239,3,#20001,25,"1") -hasLocation(#20239,#20077) +exprs(#20239,78,#20238,0,"DeclaredEnum") +hasLocation(#20239,#20065) +enclosingStmt(#20239,#20238) +exprContainers(#20239,#20001) +literals("DeclaredEnum","DeclaredEnum",#20239) +decl(#20239,#20204) +typedecl(#20239,#20210) +namespacedecl(#20239,#20216) #20240=* -tokeninfo(#20240,8,#20001,26,"+") -#20241=@"loc,{#10000},4,29,4,29" -locations_default(#20241,#10000,4,29,4,29) -hasLocation(#20240,#20241) -#20242=* -tokeninfo(#20242,3,#20001,27,"2") -hasLocation(#20242,#20079) -#20243=* -tokeninfo(#20243,8,#20001,28,",") -#20244=@"loc,{#10000},4,31,4,31" -locations_default(#20244,#10000,4,31,4,31) -hasLocation(#20243,#20244) +scopes(#20240,14) +scopenodes(#20238,#20240) +scopenesting(#20240,#20000) +#20241=@"var;{a};{#20240}" +variables(#20241,"a",#20240) +#20242=@"local_type_name;{a};{#20240}" +local_type_names(#20242,"a",#20240) +#20243=@"var;{b};{#20240}" +variables(#20243,"b",#20240) +#20244=@"local_type_name;{b};{#20240}" +local_type_names(#20244,"b",#20240) #20245=* -tokeninfo(#20245,6,#20001,29,"b") -hasLocation(#20245,#20081) +properties(#20245,#20238,1,7,"a") +hasLocation(#20245,#20069) #20246=* -tokeninfo(#20246,8,#20001,30,"}") -#20247=@"loc,{#10000},4,35,4,35" -locations_default(#20247,#10000,4,35,4,35) -hasLocation(#20246,#20247) +exprs(#20246,78,#20245,0,"a") +hasLocation(#20246,#20069) +enclosingStmt(#20246,#20238) +exprContainers(#20246,#20001) +literals("a","a",#20246) +decl(#20246,#20241) +typedecl(#20246,#20242) +#20247=* +properties(#20247,#20238,2,7,"b") +hasLocation(#20247,#20073) #20248=* -tokeninfo(#20248,7,#20001,31,"declare") -#20249=@"loc,{#10000},5,1,5,7" -locations_default(#20249,#10000,5,1,5,7) -hasLocation(#20248,#20249) +exprs(#20248,78,#20247,0,"b") +hasLocation(#20248,#20073) +enclosingStmt(#20248,#20238) +exprContainers(#20248,#20001) +literals("b","b",#20248) +decl(#20248,#20243) +typedecl(#20248,#20244) +hasDeclareKeyword(#20238) +#20249=* +stmts(#20249,36,#20001,2,"const e ... +2, b }") +hasLocation(#20249,#20009) +stmtContainers(#20249,#20001) #20250=* -tokeninfo(#20250,7,#20001,32,"const") -#20251=@"loc,{#10000},5,9,5,13" -locations_default(#20251,#10000,5,9,5,13) -hasLocation(#20250,#20251) -#20252=* -tokeninfo(#20252,7,#20001,33,"enum") -#20253=@"loc,{#10000},5,15,5,18" -locations_default(#20253,#10000,5,15,5,18) -hasLocation(#20252,#20253) -#20254=* -tokeninfo(#20254,6,#20001,34,"DeclaredConstEnum") -hasLocation(#20254,#20086) -#20255=* -tokeninfo(#20255,8,#20001,35,"{") -#20256=@"loc,{#10000},5,38,5,38" -locations_default(#20256,#10000,5,38,5,38) -hasLocation(#20255,#20256) -#20257=* -tokeninfo(#20257,6,#20001,36,"a") -hasLocation(#20257,#20093) +exprs(#20250,78,#20249,0,"ConstEnum") +hasLocation(#20250,#20081) +enclosingStmt(#20250,#20249) +exprContainers(#20250,#20001) +literals("ConstEnum","ConstEnum",#20250) +decl(#20250,#20205) +typedecl(#20250,#20211) +namespacedecl(#20250,#20217) +#20251=* +scopes(#20251,14) +scopenodes(#20249,#20251) +scopenesting(#20251,#20000) +#20252=@"var;{a};{#20251}" +variables(#20252,"a",#20251) +#20253=@"local_type_name;{a};{#20251}" +local_type_names(#20253,"a",#20251) +#20254=@"var;{b};{#20251}" +variables(#20254,"b",#20251) +#20255=@"local_type_name;{b};{#20251}" +local_type_names(#20255,"b",#20251) +#20256=* +properties(#20256,#20249,1,7,"a = 1+2") +#20257=@"loc,{#10000},4,24,4,30" +locations_default(#20257,#10000,4,24,4,30) +hasLocation(#20256,#20257) #20258=* -tokeninfo(#20258,8,#20001,37,",") -#20259=@"loc,{#10000},5,41,5,41" -locations_default(#20259,#10000,5,41,5,41) -hasLocation(#20258,#20259) -#20260=* -tokeninfo(#20260,6,#20001,38,"b") -hasLocation(#20260,#20096) +exprs(#20258,78,#20256,0,"a") +hasLocation(#20258,#20085) +enclosingStmt(#20258,#20249) +exprContainers(#20258,#20001) +literals("a","a",#20258) +decl(#20258,#20252) +typedecl(#20258,#20253) +#20259=* +exprs(#20259,34,#20256,1,"1+2") +#20260=@"loc,{#10000},4,28,4,30" +locations_default(#20260,#10000,4,28,4,30) +hasLocation(#20259,#20260) +enclosingStmt(#20259,#20249) +exprContainers(#20259,#20001) #20261=* -tokeninfo(#20261,8,#20001,39,"}") -#20262=@"loc,{#10000},5,45,5,45" -locations_default(#20262,#10000,5,45,5,45) -hasLocation(#20261,#20262) +exprs(#20261,3,#20259,0,"1") +hasLocation(#20261,#20089) +enclosingStmt(#20261,#20249) +exprContainers(#20261,#20001) +literals("1","1",#20261) +#20262=* +exprs(#20262,3,#20259,1,"2") +hasLocation(#20262,#20093) +enclosingStmt(#20262,#20249) +exprContainers(#20262,#20001) +literals("2","2",#20262) #20263=* -tokeninfo(#20263,7,#20001,40,"function") -#20264=@"loc,{#10000},7,1,7,8" -locations_default(#20264,#10000,7,1,7,8) -hasLocation(#20263,#20264) +properties(#20263,#20249,2,7,"b") +hasLocation(#20263,#20097) +#20264=* +exprs(#20264,78,#20263,0,"b") +hasLocation(#20264,#20097) +enclosingStmt(#20264,#20249) +exprContainers(#20264,#20001) +literals("b","b",#20264) +decl(#20264,#20254) +typedecl(#20264,#20255) +isConstEnum(#20249) #20265=* -tokeninfo(#20265,6,#20001,41,"foo") -hasLocation(#20265,#20101) +stmts(#20265,36,#20001,3,"declare ... a, b }") +hasLocation(#20265,#20011) +stmtContainers(#20265,#20001) #20266=* -tokeninfo(#20266,8,#20001,42,"(") -#20267=@"loc,{#10000},7,13,7,13" -locations_default(#20267,#10000,7,13,7,13) -hasLocation(#20266,#20267) -#20268=* -tokeninfo(#20268,6,#20001,43,"x") -hasLocation(#20268,#20105) -#20269=* -tokeninfo(#20269,8,#20001,44,")") -#20270=@"loc,{#10000},7,15,7,15" -locations_default(#20270,#10000,7,15,7,15) -hasLocation(#20269,#20270) -#20271=* -tokeninfo(#20271,8,#20001,45,"{") -#20272=@"loc,{#10000},7,17,7,17" -locations_default(#20272,#10000,7,17,7,17) -hasLocation(#20271,#20272) +exprs(#20266,78,#20265,0,"DeclaredConstEnum") +hasLocation(#20266,#20107) +enclosingStmt(#20266,#20265) +exprContainers(#20266,#20001) +literals("DeclaredConstEnum","DeclaredConstEnum",#20266) +decl(#20266,#20206) +typedecl(#20266,#20212) +namespacedecl(#20266,#20218) +#20267=* +scopes(#20267,14) +scopenodes(#20265,#20267) +scopenesting(#20267,#20000) +#20268=@"var;{a};{#20267}" +variables(#20268,"a",#20267) +#20269=@"local_type_name;{a};{#20267}" +local_type_names(#20269,"a",#20267) +#20270=@"var;{b};{#20267}" +variables(#20270,"b",#20267) +#20271=@"local_type_name;{b};{#20267}" +local_type_names(#20271,"b",#20267) +#20272=* +properties(#20272,#20265,1,7,"a") +hasLocation(#20272,#20111) #20273=* -tokeninfo(#20273,7,#20001,46,"return") -#20274=@"loc,{#10000},7,19,7,24" -locations_default(#20274,#10000,7,19,7,24) -hasLocation(#20273,#20274) +exprs(#20273,78,#20272,0,"a") +hasLocation(#20273,#20111) +enclosingStmt(#20273,#20265) +exprContainers(#20273,#20001) +literals("a","a",#20273) +decl(#20273,#20268) +typedecl(#20273,#20269) +#20274=* +properties(#20274,#20265,2,7,"b") +hasLocation(#20274,#20115) #20275=* -tokeninfo(#20275,6,#20001,47,"x") -hasLocation(#20275,#20112) +exprs(#20275,78,#20274,0,"b") +hasLocation(#20275,#20115) +enclosingStmt(#20275,#20265) +exprContainers(#20275,#20001) +literals("b","b",#20275) +decl(#20275,#20270) +typedecl(#20275,#20271) +isConstEnum(#20265) +hasDeclareKeyword(#20265) #20276=* -tokeninfo(#20276,8,#20001,48,";") -#20277=@"loc,{#10000},7,27,7,27" -locations_default(#20277,#10000,7,27,7,27) -hasLocation(#20276,#20277) +stmts(#20276,17,#20001,4,"functio ... rn x; }") +hasLocation(#20276,#20015) +stmtContainers(#20276,#20001) +#20277=* +exprs(#20277,78,#20276,-1,"foo") +hasLocation(#20277,#20121) +exprContainers(#20277,#20276) +literals("foo","foo",#20277) +decl(#20277,#20201) #20278=* -tokeninfo(#20278,8,#20001,49,"}") -#20279=@"loc,{#10000},7,29,7,29" -locations_default(#20279,#10000,7,29,7,29) -hasLocation(#20278,#20279) +scopes(#20278,1) +scopenodes(#20276,#20278) +scopenesting(#20278,#20000) +#20279=@"var;{x};{#20278}" +variables(#20279,"x",#20278) #20280=* -tokeninfo(#20280,7,#20001,50,"enum") -#20281=@"loc,{#10000},9,1,9,4" -locations_default(#20281,#10000,9,1,9,4) -hasLocation(#20280,#20281) +exprs(#20280,78,#20276,0,"x") +hasLocation(#20280,#20125) +exprContainers(#20280,#20276) +literals("x","x",#20280) +decl(#20280,#20279) +#20281=@"var;{arguments};{#20278}" +variables(#20281,"arguments",#20278) +isArgumentsObject(#20281) #20282=* -tokeninfo(#20282,6,#20001,51,"ComplexInitializer") -hasLocation(#20282,#20116) -#20283=* -tokeninfo(#20283,8,#20001,52,"{") -#20284=@"loc,{#10000},9,25,9,25" -locations_default(#20284,#10000,9,25,9,25) -hasLocation(#20283,#20284) -#20285=* -tokeninfo(#20285,6,#20001,53,"a") -hasLocation(#20285,#20123) +stmts(#20282,1,#20276,-2,"{ return x; }") +#20283=@"loc,{#10000},7,17,7,29" +locations_default(#20283,#10000,7,17,7,29) +hasLocation(#20282,#20283) +stmtContainers(#20282,#20276) +#20284=* +stmts(#20284,9,#20282,0,"return x;") +#20285=@"loc,{#10000},7,19,7,27" +locations_default(#20285,#10000,7,19,7,27) +hasLocation(#20284,#20285) +stmtContainers(#20284,#20276) #20286=* -tokeninfo(#20286,8,#20001,54,"=") -#20287=@"loc,{#10000},10,5,10,5" -locations_default(#20287,#10000,10,5,10,5) -hasLocation(#20286,#20287) -#20288=* -tokeninfo(#20288,6,#20001,55,"foo") -hasLocation(#20288,#20127) +exprs(#20286,79,#20284,0,"x") +hasLocation(#20286,#20133) +enclosingStmt(#20286,#20284) +exprContainers(#20286,#20276) +literals("x","x",#20286) +bind(#20286,#20279) +#20287=* +stmts(#20287,36,#20001,5,"enum Co ... + 2)\n}") +#20288=@"loc,{#10000},9,1,11,1" +locations_default(#20288,#10000,9,1,11,1) +hasLocation(#20287,#20288) +stmtContainers(#20287,#20001) #20289=* -tokeninfo(#20289,8,#20001,56,"(") -#20290=@"loc,{#10000},10,10,10,10" -locations_default(#20290,#10000,10,10,10,10) -hasLocation(#20289,#20290) -#20291=* -tokeninfo(#20291,3,#20001,57,"1") -hasLocation(#20291,#20131) -#20292=* -tokeninfo(#20292,8,#20001,58,"+") -#20293=@"loc,{#10000},10,13,10,13" -locations_default(#20293,#10000,10,13,10,13) -hasLocation(#20292,#20293) -#20294=* -tokeninfo(#20294,3,#20001,59,"2") -hasLocation(#20294,#20133) +exprs(#20289,78,#20287,0,"ComplexInitializer") +hasLocation(#20289,#20141) +enclosingStmt(#20289,#20287) +exprContainers(#20289,#20001) +literals("ComplexInitializer","ComplexInitializer",#20289) +decl(#20289,#20207) +typedecl(#20289,#20213) +namespacedecl(#20289,#20219) +#20290=* +scopes(#20290,14) +scopenodes(#20287,#20290) +scopenesting(#20290,#20000) +#20291=@"var;{a};{#20290}" +variables(#20291,"a",#20290) +#20292=@"local_type_name;{a};{#20290}" +local_type_names(#20292,"a",#20290) +#20293=* +properties(#20293,#20287,1,7,"a = foo(1 + 2)") +#20294=@"loc,{#10000},10,3,10,16" +locations_default(#20294,#10000,10,3,10,16) +hasLocation(#20293,#20294) #20295=* -tokeninfo(#20295,8,#20001,60,")") -#20296=@"loc,{#10000},10,16,10,16" -locations_default(#20296,#10000,10,16,10,16) -hasLocation(#20295,#20296) -#20297=* -tokeninfo(#20297,8,#20001,61,"}") -hasLocation(#20297,#20185) +exprs(#20295,78,#20293,0,"a") +hasLocation(#20295,#20145) +enclosingStmt(#20295,#20287) +exprContainers(#20295,#20001) +literals("a","a",#20295) +decl(#20295,#20291) +typedecl(#20295,#20292) +#20296=* +exprs(#20296,13,#20293,1,"foo(1 + 2)") +#20297=@"loc,{#10000},10,7,10,16" +locations_default(#20297,#10000,10,7,10,16) +hasLocation(#20296,#20297) +enclosingStmt(#20296,#20287) +exprContainers(#20296,#20001) #20298=* -tokeninfo(#20298,7,#20001,62,"enum") -#20299=@"loc,{#10000},13,1,13,4" -locations_default(#20299,#10000,13,1,13,4) -hasLocation(#20298,#20299) -#20300=* -tokeninfo(#20300,6,#20001,63,"StringLiteralEnumMember") -hasLocation(#20300,#20137) +exprs(#20298,79,#20296,-1,"foo") +hasLocation(#20298,#20149) +enclosingStmt(#20298,#20287) +exprContainers(#20298,#20001) +literals("foo","foo",#20298) +bind(#20298,#20201) +#20299=* +exprs(#20299,34,#20296,0,"1 + 2") +#20300=@"loc,{#10000},10,11,10,15" +locations_default(#20300,#10000,10,11,10,15) +hasLocation(#20299,#20300) +enclosingStmt(#20299,#20287) +exprContainers(#20299,#20001) #20301=* -tokeninfo(#20301,8,#20001,64,"{") -#20302=@"loc,{#10000},13,30,13,30" -locations_default(#20302,#10000,13,30,13,30) -hasLocation(#20301,#20302) +exprs(#20301,3,#20299,0,"1") +hasLocation(#20301,#20153) +enclosingStmt(#20301,#20287) +exprContainers(#20301,#20001) +literals("1","1",#20301) +#20302=* +exprs(#20302,3,#20299,1,"2") +hasLocation(#20302,#20157) +enclosingStmt(#20302,#20287) +exprContainers(#20302,#20001) +literals("2","2",#20302) #20303=* -tokeninfo(#20303,4,#20001,65,"""a""") -hasLocation(#20303,#20146) -#20304=* -tokeninfo(#20304,8,#20001,66,"=") -#20305=@"loc,{#10000},14,7,14,7" -locations_default(#20305,#10000,14,7,14,7) -hasLocation(#20304,#20305) +stmts(#20303,36,#20001,6,"enum St ... b = a\n}") +#20304=@"loc,{#10000},13,1,16,1" +locations_default(#20304,#10000,13,1,16,1) +hasLocation(#20303,#20304) +stmtContainers(#20303,#20001) +#20305=* +exprs(#20305,78,#20303,0,"StringL ... mMember") +hasLocation(#20305,#20164) +enclosingStmt(#20305,#20303) +exprContainers(#20305,#20001) +literals("StringLiteralEnumMember","StringLiteralEnumMember",#20305) +decl(#20305,#20208) +typedecl(#20305,#20214) +namespacedecl(#20305,#20220) #20306=* -tokeninfo(#20306,3,#20001,67,"2") -hasLocation(#20306,#20148) -#20307=* -tokeninfo(#20307,8,#20001,68,",") -#20308=@"loc,{#10000},14,10,14,10" -locations_default(#20308,#10000,14,10,14,10) -hasLocation(#20307,#20308) -#20309=* -tokeninfo(#20309,6,#20001,69,"b") -hasLocation(#20309,#20152) -#20310=* -tokeninfo(#20310,8,#20001,70,"=") -#20311=@"loc,{#10000},15,5,15,5" -locations_default(#20311,#10000,15,5,15,5) -hasLocation(#20310,#20311) -#20312=* -tokeninfo(#20312,6,#20001,71,"a") -hasLocation(#20312,#20154) +scopes(#20306,14) +scopenodes(#20303,#20306) +scopenesting(#20306,#20000) +#20307=@"var;{a};{#20306}" +variables(#20307,"a",#20306) +#20308=@"local_type_name;{a};{#20306}" +local_type_names(#20308,"a",#20306) +#20309=@"var;{b};{#20306}" +variables(#20309,"b",#20306) +#20310=@"local_type_name;{b};{#20306}" +local_type_names(#20310,"b",#20306) +#20311=* +properties(#20311,#20303,1,7,"""a"" = 2") +#20312=@"loc,{#10000},14,3,14,9" +locations_default(#20312,#10000,14,3,14,9) +hasLocation(#20311,#20312) #20313=* -tokeninfo(#20313,8,#20001,72,"}") -hasLocation(#20313,#20195) +exprs(#20313,78,#20311,0,"""a""") +hasLocation(#20313,#20168) +enclosingStmt(#20313,#20303) +exprContainers(#20313,#20001) +literals("a","a",#20313) +decl(#20313,#20307) +typedecl(#20313,#20308) #20314=* -tokeninfo(#20314,7,#20001,73,"var") -#20315=@"loc,{#10000},18,1,18,3" -locations_default(#20315,#10000,18,1,18,3) -hasLocation(#20314,#20315) -#20316=* -tokeninfo(#20316,6,#20001,74,"x") -hasLocation(#20316,#20160) +exprs(#20314,3,#20311,1,"2") +hasLocation(#20314,#20172) +enclosingStmt(#20314,#20303) +exprContainers(#20314,#20001) +literals("2","2",#20314) +#20315=* +properties(#20315,#20303,2,7,"b = a") +#20316=@"loc,{#10000},15,3,15,7" +locations_default(#20316,#10000,15,3,15,7) +hasLocation(#20315,#20316) #20317=* -tokeninfo(#20317,8,#20001,75,":") -#20318=@"loc,{#10000},18,7,18,7" -locations_default(#20318,#10000,18,7,18,7) -hasLocation(#20317,#20318) +exprs(#20317,78,#20315,0,"b") +hasLocation(#20317,#20176) +enclosingStmt(#20317,#20303) +exprContainers(#20317,#20001) +literals("b","b",#20317) +decl(#20317,#20309) +typedecl(#20317,#20310) +#20318=* +exprs(#20318,79,#20315,1,"a") +hasLocation(#20318,#20180) +enclosingStmt(#20318,#20303) +exprContainers(#20318,#20001) +literals("a","a",#20318) +bind(#20318,#20307) #20319=* -tokeninfo(#20319,6,#20001,76,"StringLiteralEnumMember") -hasLocation(#20319,#20166) +stmts(#20319,18,#20001,7,"var x : ... r.a = 2") +hasLocation(#20319,#20037) +stmtContainers(#20319,#20001) #20320=* -tokeninfo(#20320,8,#20001,77,".") -#20321=@"loc,{#10000},18,32,18,32" -locations_default(#20321,#10000,18,32,18,32) +exprs(#20320,64,#20319,0,"x : Str ... r.a = 2") +#20321=@"loc,{#10000},18,5,18,37" +locations_default(#20321,#10000,18,5,18,37) hasLocation(#20320,#20321) +enclosingStmt(#20320,#20319) +exprContainers(#20320,#20001) #20322=* -tokeninfo(#20322,6,#20001,78,"a") -hasLocation(#20322,#20168) +exprs(#20322,78,#20320,0,"x") +hasLocation(#20322,#20185) +enclosingStmt(#20322,#20319) +exprContainers(#20322,#20001) +literals("x","x",#20322) +decl(#20322,#20202) #20323=* -tokeninfo(#20323,8,#20001,79,"=") -#20324=@"loc,{#10000},18,35,18,35" -locations_default(#20324,#10000,18,35,18,35) -hasLocation(#20323,#20324) -#20325=* -tokeninfo(#20325,3,#20001,80,"2") -hasLocation(#20325,#20162) +exprs(#20323,3,#20320,1,"2") +hasLocation(#20323,#20197) +enclosingStmt(#20323,#20319) +exprContainers(#20323,#20001) +literals("2","2",#20323) +#20324=* +typeexprs(#20324,13,#20320,2,"StringL ... ember.a") +#20325=@"loc,{#10000},18,9,18,33" +locations_default(#20325,#10000,18,9,18,33) +hasLocation(#20324,#20325) +enclosingStmt(#20324,#20319) +exprContainers(#20324,#20001) #20326=* -tokeninfo(#20326,0,#20001,81,"") -#20327=@"loc,{#10000},19,1,19,0" -locations_default(#20327,#10000,19,1,19,0) -hasLocation(#20326,#20327) +typeexprs(#20326,25,#20324,0,"StringL ... mMember") +hasLocation(#20326,#20189) +enclosingStmt(#20326,#20319) +exprContainers(#20326,#20001) +literals("StringLiteralEnumMember","StringLiteralEnumMember",#20326) +namespacebind(#20326,#20220) +#20327=* +typeexprs(#20327,15,#20324,1,"a") +hasLocation(#20327,#20193) +enclosingStmt(#20327,#20319) +exprContainers(#20327,#20001) +literals("a","a",#20327) #20328=* entry_cfg_node(#20328,#20001) #20329=@"loc,{#10000},1,1,1,0" @@ -1038,75 +1037,75 @@ locations_default(#20329,#10000,1,1,1,0) hasLocation(#20328,#20329) #20330=* exit_cfg_node(#20330,#20001) -hasLocation(#20330,#20327) -successor(#20155,#20159) -successor(#20161,#20157) -successor(#20159,#20161) -successor(#20157,#20330) -successor(#20153,#20149) -successor(#20151,#20153) -successor(#20149,#20134) -successor(#20147,#20143) -successor(#20145,#20147) -successor(#20143,#20151) -successor(#20136,#20145) -successor(#20134,#20155) -successor(#20132,#20128) -successor(#20130,#20132) -successor(#20128,#20124) -successor(#20126,#20130) -successor(#20124,#20120) -successor(#20122,#20126) -successor(#20120,#20113) -successor(#20115,#20122) -successor(#20113,#20136) -successor(#20098,#20115) +hasLocation(#20330,#20199) +successor(#20319,#20322) +successor(#20323,#20320) +successor(#20322,#20323) +successor(#20320,#20330) +successor(#20318,#20315) +successor(#20317,#20318) +successor(#20315,#20303) +successor(#20314,#20311) +successor(#20313,#20314) +successor(#20311,#20317) +successor(#20305,#20313) +successor(#20303,#20319) +successor(#20302,#20299) +successor(#20301,#20302) +successor(#20299,#20296) +successor(#20298,#20301) +successor(#20296,#20293) +successor(#20295,#20298) +successor(#20293,#20287) +successor(#20289,#20295) +successor(#20287,#20305) +successor(#20276,#20289) #20331=* -entry_cfg_node(#20331,#20098) +entry_cfg_node(#20331,#20276) #20332=@"loc,{#10000},7,1,7,0" locations_default(#20332,#10000,7,1,7,0) hasLocation(#20331,#20332) #20333=* -exit_cfg_node(#20333,#20098) +exit_cfg_node(#20333,#20276) #20334=@"loc,{#10000},7,30,7,29" locations_default(#20334,#10000,7,30,7,29) hasLocation(#20333,#20334) -successor(#20107,#20111) -successor(#20111,#20109) -successor(#20109,#20333) -successor(#20104,#20107) -successor(#20331,#20104) -successor(#20097,#20095) -successor(#20095,#20083) -successor(#20094,#20092) -successor(#20092,#20097) -successor(#20085,#20094) -successor(#20083,#20098) -successor(#20082,#20080) -successor(#20080,#20061) -successor(#20078,#20074) -successor(#20076,#20078) -successor(#20074,#20070) -successor(#20072,#20076) -successor(#20070,#20082) -successor(#20063,#20072) -successor(#20061,#20085) -successor(#20060,#20058) -successor(#20058,#20046) -successor(#20057,#20055) -successor(#20055,#20060) -successor(#20048,#20057) -successor(#20046,#20063) -successor(#20045,#20043) -successor(#20043,#20023) -successor(#20042,#20040) -successor(#20040,#20045) -successor(#20038,#20034) -successor(#20036,#20038) -successor(#20034,#20042) -successor(#20025,#20036) -successor(#20023,#20048) -successor(#20100,#20025) -successor(#20328,#20100) +successor(#20282,#20286) +successor(#20286,#20284) +successor(#20284,#20333) +successor(#20280,#20282) +successor(#20331,#20280) +successor(#20275,#20274) +successor(#20274,#20265) +successor(#20273,#20272) +successor(#20272,#20275) +successor(#20266,#20273) +successor(#20265,#20276) +successor(#20264,#20263) +successor(#20263,#20249) +successor(#20262,#20259) +successor(#20261,#20262) +successor(#20259,#20256) +successor(#20258,#20261) +successor(#20256,#20264) +successor(#20250,#20258) +successor(#20249,#20266) +successor(#20248,#20247) +successor(#20247,#20238) +successor(#20246,#20245) +successor(#20245,#20248) +successor(#20239,#20246) +successor(#20238,#20250) +successor(#20237,#20236) +successor(#20236,#20221) +successor(#20235,#20234) +successor(#20234,#20237) +successor(#20233,#20230) +successor(#20232,#20233) +successor(#20230,#20235) +successor(#20222,#20232) +successor(#20221,#20239) +successor(#20277,#20222) +successor(#20328,#20277) numlines(#10000,18,13,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/export.ts.trap b/javascript/extractor/tests/ts/output/trap/export.ts.trap index 3a09f8959a9..fe88825fc6a 100644 --- a/javascript/extractor/tests/ts/output/trap/export.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/export.ts.trap @@ -9,276 +9,275 @@ 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;{f};{#20003}" -variables(#20004,"f",#20003) -#20005=@"var;{foo};{#20003}" -variables(#20005,"foo",#20003) -#20006=@"var;{C};{#20003}" -variables(#20006,"C",#20003) -#20007=@"local_type_name;{C};{#20003}" -local_type_names(#20007,"C",#20003) +#20002=* +lines(#20002,#20001,"export const foo = 42;"," +") +#20003=@"loc,{#10000},1,1,1,22" +locations_default(#20003,#10000,1,1,1,22) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,""," +") +#20005=@"loc,{#10000},2,1,2,0" +locations_default(#20005,#10000,2,1,2,0) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"export class C {}"," +") +#20007=@"loc,{#10000},3,1,3,17" +locations_default(#20007,#10000,3,1,3,17) +hasLocation(#20006,#20007) #20008=* -stmts(#20008,30,#20001,0,"export ... o = 42;") -#20009=@"loc,{#10000},1,1,1,22" -locations_default(#20009,#10000,1,1,1,22) +lines(#20008,#20001,""," +") +#20009=@"loc,{#10000},4,1,4,0" +locations_default(#20009,#10000,4,1,4,0) hasLocation(#20008,#20009) -stmtContainers(#20008,#20001) #20010=* -stmts(#20010,22,#20008,-1,"const foo = 42;") -#20011=@"loc,{#10000},1,8,1,22" -locations_default(#20011,#10000,1,8,1,22) +lines(#20010,#20001,"export default function f() {};"," +") +#20011=@"loc,{#10000},5,1,5,31" +locations_default(#20011,#10000,5,1,5,31) hasLocation(#20010,#20011) -stmtContainers(#20010,#20001) +numlines(#20001,5,3,0) #20012=* -exprs(#20012,64,#20010,0,"foo = 42") -#20013=@"loc,{#10000},1,14,1,21" -locations_default(#20013,#10000,1,14,1,21) +tokeninfo(#20012,7,#20001,0,"export") +#20013=@"loc,{#10000},1,1,1,6" +locations_default(#20013,#10000,1,1,1,6) hasLocation(#20012,#20013) -enclosingStmt(#20012,#20010) -exprContainers(#20012,#20001) #20014=* -exprs(#20014,78,#20012,0,"foo") -#20015=@"loc,{#10000},1,14,1,16" -locations_default(#20015,#10000,1,14,1,16) +tokeninfo(#20014,7,#20001,1,"const") +#20015=@"loc,{#10000},1,8,1,12" +locations_default(#20015,#10000,1,8,1,12) hasLocation(#20014,#20015) -enclosingStmt(#20014,#20010) -exprContainers(#20014,#20001) -literals("foo","foo",#20014) -decl(#20014,#20005) #20016=* -exprs(#20016,3,#20012,1,"42") -#20017=@"loc,{#10000},1,20,1,21" -locations_default(#20017,#10000,1,20,1,21) +tokeninfo(#20016,6,#20001,2,"foo") +#20017=@"loc,{#10000},1,14,1,16" +locations_default(#20017,#10000,1,14,1,16) hasLocation(#20016,#20017) -enclosingStmt(#20016,#20010) -exprContainers(#20016,#20001) -literals("42","42",#20016) #20018=* -stmts(#20018,30,#20001,1,"export class C {}") -#20019=@"loc,{#10000},3,1,3,17" -locations_default(#20019,#10000,3,1,3,17) +tokeninfo(#20018,8,#20001,3,"=") +#20019=@"loc,{#10000},1,18,1,18" +locations_default(#20019,#10000,1,18,1,18) hasLocation(#20018,#20019) -stmtContainers(#20018,#20001) #20020=* -stmts(#20020,26,#20018,-1,"class C {}") -#20021=@"loc,{#10000},3,8,3,17" -locations_default(#20021,#10000,3,8,3,17) +tokeninfo(#20020,3,#20001,4,"42") +#20021=@"loc,{#10000},1,20,1,21" +locations_default(#20021,#10000,1,20,1,21) hasLocation(#20020,#20021) -stmtContainers(#20020,#20001) #20022=* -exprs(#20022,78,#20020,0,"C") -#20023=@"loc,{#10000},3,14,3,14" -locations_default(#20023,#10000,3,14,3,14) +tokeninfo(#20022,8,#20001,5,";") +#20023=@"loc,{#10000},1,22,1,22" +locations_default(#20023,#10000,1,22,1,22) hasLocation(#20022,#20023) -enclosingStmt(#20022,#20020) -exprContainers(#20022,#20001) -literals("C","C",#20022) -decl(#20022,#20006) -typedecl(#20022,#20007) #20024=* -scopes(#20024,10) -scopenodes(#20020,#20024) -scopenesting(#20024,#20003) -#20025=* -properties(#20025,#20020,2,0,"constructor() {}") -#20026=@"loc,{#10000},3,16,3,15" -locations_default(#20026,#10000,3,16,3,15) -hasLocation(#20025,#20026) -#20027=* -exprs(#20027,0,#20025,0,"constructor") -hasLocation(#20027,#20026) -enclosingStmt(#20027,#20020) -exprContainers(#20027,#20001) -literals("constructor","constructor",#20027) +tokeninfo(#20024,7,#20001,6,"export") +#20025=@"loc,{#10000},3,1,3,6" +locations_default(#20025,#10000,3,1,3,6) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,7,#20001,7,"class") +#20027=@"loc,{#10000},3,8,3,12" +locations_default(#20027,#10000,3,8,3,12) +hasLocation(#20026,#20027) #20028=* -exprs(#20028,9,#20025,1,"() {}") -hasLocation(#20028,#20026) -enclosingStmt(#20028,#20020) -exprContainers(#20028,#20001) -#20029=* -scopes(#20029,1) -scopenodes(#20028,#20029) -scopenesting(#20029,#20024) -#20030=@"var;{arguments};{#20029}" -variables(#20030,"arguments",#20029) -isArgumentsObject(#20030) -#20031=* -stmts(#20031,1,#20028,-2,"{}") -hasLocation(#20031,#20026) -stmtContainers(#20031,#20028) -numlines(#20028,1,0,0) -isMethod(#20025) +tokeninfo(#20028,6,#20001,8,"C") +#20029=@"loc,{#10000},3,14,3,14" +locations_default(#20029,#10000,3,14,3,14) +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=* -stmts(#20032,29,#20001,2,"export ... f() {}") -#20033=@"loc,{#10000},5,1,5,30" -locations_default(#20033,#10000,5,1,5,30) +tokeninfo(#20032,8,#20001,10,"}") +#20033=@"loc,{#10000},3,17,3,17" +locations_default(#20033,#10000,3,17,3,17) hasLocation(#20032,#20033) -stmtContainers(#20032,#20001) #20034=* -stmts(#20034,17,#20032,0,"function f() {}") -#20035=@"loc,{#10000},5,16,5,30" -locations_default(#20035,#10000,5,16,5,30) +tokeninfo(#20034,7,#20001,11,"export") +#20035=@"loc,{#10000},5,1,5,6" +locations_default(#20035,#10000,5,1,5,6) hasLocation(#20034,#20035) -stmtContainers(#20034,#20001) #20036=* -exprs(#20036,78,#20034,-1,"f") -#20037=@"loc,{#10000},5,25,5,25" -locations_default(#20037,#10000,5,25,5,25) +tokeninfo(#20036,7,#20001,12,"default") +#20037=@"loc,{#10000},5,8,5,14" +locations_default(#20037,#10000,5,8,5,14) hasLocation(#20036,#20037) -exprContainers(#20036,#20034) -literals("f","f",#20036) -decl(#20036,#20004) #20038=* -scopes(#20038,1) -scopenodes(#20034,#20038) -scopenesting(#20038,#20003) -#20039=@"var;{arguments};{#20038}" -variables(#20039,"arguments",#20038) -isArgumentsObject(#20039) +tokeninfo(#20038,7,#20001,13,"function") +#20039=@"loc,{#10000},5,16,5,23" +locations_default(#20039,#10000,5,16,5,23) +hasLocation(#20038,#20039) #20040=* -stmts(#20040,1,#20034,-2,"{}") -#20041=@"loc,{#10000},5,29,5,30" -locations_default(#20041,#10000,5,29,5,30) +tokeninfo(#20040,6,#20001,14,"f") +#20041=@"loc,{#10000},5,25,5,25" +locations_default(#20041,#10000,5,25,5,25) hasLocation(#20040,#20041) -stmtContainers(#20040,#20034) -numlines(#20034,1,1,0) #20042=* -stmts(#20042,0,#20001,3,";") -#20043=@"loc,{#10000},5,31,5,31" -locations_default(#20043,#10000,5,31,5,31) +tokeninfo(#20042,8,#20001,15,"(") +#20043=@"loc,{#10000},5,26,5,26" +locations_default(#20043,#10000,5,26,5,26) hasLocation(#20042,#20043) -stmtContainers(#20042,#20001) #20044=* -lines(#20044,#20001,"export const foo = 42;"," -") -hasLocation(#20044,#20009) -#20045=* -lines(#20045,#20001,""," -") -#20046=@"loc,{#10000},2,1,2,0" -locations_default(#20046,#10000,2,1,2,0) -hasLocation(#20045,#20046) -#20047=* -lines(#20047,#20001,"export class C {}"," -") -hasLocation(#20047,#20019) +tokeninfo(#20044,8,#20001,16,")") +#20045=@"loc,{#10000},5,27,5,27" +locations_default(#20045,#10000,5,27,5,27) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,17,"{") +#20047=@"loc,{#10000},5,29,5,29" +locations_default(#20047,#10000,5,29,5,29) +hasLocation(#20046,#20047) #20048=* -lines(#20048,#20001,""," -") -#20049=@"loc,{#10000},4,1,4,0" -locations_default(#20049,#10000,4,1,4,0) +tokeninfo(#20048,8,#20001,18,"}") +#20049=@"loc,{#10000},5,30,5,30" +locations_default(#20049,#10000,5,30,5,30) hasLocation(#20048,#20049) #20050=* -lines(#20050,#20001,"export default function f() {};"," -") -#20051=@"loc,{#10000},5,1,5,31" -locations_default(#20051,#10000,5,1,5,31) +tokeninfo(#20050,8,#20001,19,";") +#20051=@"loc,{#10000},5,31,5,31" +locations_default(#20051,#10000,5,31,5,31) hasLocation(#20050,#20051) -numlines(#20001,5,3,0) #20052=* -tokeninfo(#20052,7,#20001,0,"export") -#20053=@"loc,{#10000},1,1,1,6" -locations_default(#20053,#10000,1,1,1,6) +tokeninfo(#20052,0,#20001,20,"") +#20053=@"loc,{#10000},6,1,6,0" +locations_default(#20053,#10000,6,1,6,0) hasLocation(#20052,#20053) -#20054=* -tokeninfo(#20054,7,#20001,1,"const") -#20055=@"loc,{#10000},1,8,1,12" -locations_default(#20055,#10000,1,8,1,12) -hasLocation(#20054,#20055) -#20056=* -tokeninfo(#20056,6,#20001,2,"foo") -hasLocation(#20056,#20015) -#20057=* -tokeninfo(#20057,8,#20001,3,"=") -#20058=@"loc,{#10000},1,18,1,18" -locations_default(#20058,#10000,1,18,1,18) -hasLocation(#20057,#20058) -#20059=* -tokeninfo(#20059,3,#20001,4,"42") -hasLocation(#20059,#20017) +toplevels(#20001,0) +#20054=@"loc,{#10000},1,1,6,0" +locations_default(#20054,#10000,1,1,6,0) +hasLocation(#20001,#20054) +#20055=@"module;{#10000},1,1" +scopes(#20055,3) +scopenodes(#20001,#20055) +scopenesting(#20055,#20000) +isModule(#20001) +isES2015Module(#20001) +#20056=@"var;{f};{#20055}" +variables(#20056,"f",#20055) +#20057=@"var;{foo};{#20055}" +variables(#20057,"foo",#20055) +#20058=@"var;{C};{#20055}" +variables(#20058,"C",#20055) +#20059=@"local_type_name;{C};{#20055}" +local_type_names(#20059,"C",#20055) #20060=* -tokeninfo(#20060,8,#20001,5,";") -#20061=@"loc,{#10000},1,22,1,22" -locations_default(#20061,#10000,1,22,1,22) -hasLocation(#20060,#20061) -#20062=* -tokeninfo(#20062,7,#20001,6,"export") -#20063=@"loc,{#10000},3,1,3,6" -locations_default(#20063,#10000,3,1,3,6) -hasLocation(#20062,#20063) -#20064=* -tokeninfo(#20064,7,#20001,7,"class") -#20065=@"loc,{#10000},3,8,3,12" -locations_default(#20065,#10000,3,8,3,12) -hasLocation(#20064,#20065) +stmts(#20060,30,#20001,0,"export ... o = 42;") +hasLocation(#20060,#20003) +stmtContainers(#20060,#20001) +#20061=* +stmts(#20061,22,#20060,-1,"const foo = 42;") +#20062=@"loc,{#10000},1,8,1,22" +locations_default(#20062,#10000,1,8,1,22) +hasLocation(#20061,#20062) +stmtContainers(#20061,#20001) +#20063=* +exprs(#20063,64,#20061,0,"foo = 42") +#20064=@"loc,{#10000},1,14,1,21" +locations_default(#20064,#10000,1,14,1,21) +hasLocation(#20063,#20064) +enclosingStmt(#20063,#20061) +exprContainers(#20063,#20001) +#20065=* +exprs(#20065,78,#20063,0,"foo") +hasLocation(#20065,#20017) +enclosingStmt(#20065,#20061) +exprContainers(#20065,#20001) +literals("foo","foo",#20065) +decl(#20065,#20057) #20066=* -tokeninfo(#20066,6,#20001,8,"C") -hasLocation(#20066,#20023) +exprs(#20066,3,#20063,1,"42") +hasLocation(#20066,#20021) +enclosingStmt(#20066,#20061) +exprContainers(#20066,#20001) +literals("42","42",#20066) #20067=* -tokeninfo(#20067,8,#20001,9,"{") -#20068=@"loc,{#10000},3,16,3,16" -locations_default(#20068,#10000,3,16,3,16) -hasLocation(#20067,#20068) -#20069=* -tokeninfo(#20069,8,#20001,10,"}") -#20070=@"loc,{#10000},3,17,3,17" -locations_default(#20070,#10000,3,17,3,17) -hasLocation(#20069,#20070) +stmts(#20067,30,#20001,1,"export class C {}") +hasLocation(#20067,#20007) +stmtContainers(#20067,#20001) +#20068=* +stmts(#20068,26,#20067,-1,"class C {}") +#20069=@"loc,{#10000},3,8,3,17" +locations_default(#20069,#10000,3,8,3,17) +hasLocation(#20068,#20069) +stmtContainers(#20068,#20001) +#20070=* +exprs(#20070,78,#20068,0,"C") +hasLocation(#20070,#20029) +enclosingStmt(#20070,#20068) +exprContainers(#20070,#20001) +literals("C","C",#20070) +decl(#20070,#20058) +typedecl(#20070,#20059) #20071=* -tokeninfo(#20071,7,#20001,11,"export") -#20072=@"loc,{#10000},5,1,5,6" -locations_default(#20072,#10000,5,1,5,6) -hasLocation(#20071,#20072) -#20073=* -tokeninfo(#20073,7,#20001,12,"default") -#20074=@"loc,{#10000},5,8,5,14" -locations_default(#20074,#10000,5,8,5,14) -hasLocation(#20073,#20074) +scopes(#20071,10) +scopenodes(#20068,#20071) +scopenesting(#20071,#20055) +#20072=* +properties(#20072,#20068,2,0,"constructor() {}") +#20073=@"loc,{#10000},3,16,3,15" +locations_default(#20073,#10000,3,16,3,15) +hasLocation(#20072,#20073) +#20074=* +exprs(#20074,0,#20072,0,"constructor") +hasLocation(#20074,#20073) +enclosingStmt(#20074,#20068) +exprContainers(#20074,#20001) +literals("constructor","constructor",#20074) #20075=* -tokeninfo(#20075,7,#20001,13,"function") -#20076=@"loc,{#10000},5,16,5,23" -locations_default(#20076,#10000,5,16,5,23) -hasLocation(#20075,#20076) -#20077=* -tokeninfo(#20077,6,#20001,14,"f") -hasLocation(#20077,#20037) +exprs(#20075,9,#20072,1,"() {}") +hasLocation(#20075,#20073) +enclosingStmt(#20075,#20068) +exprContainers(#20075,#20001) +#20076=* +scopes(#20076,1) +scopenodes(#20075,#20076) +scopenesting(#20076,#20071) +#20077=@"var;{arguments};{#20076}" +variables(#20077,"arguments",#20076) +isArgumentsObject(#20077) #20078=* -tokeninfo(#20078,8,#20001,15,"(") -#20079=@"loc,{#10000},5,26,5,26" -locations_default(#20079,#10000,5,26,5,26) -hasLocation(#20078,#20079) -#20080=* -tokeninfo(#20080,8,#20001,16,")") -#20081=@"loc,{#10000},5,27,5,27" -locations_default(#20081,#10000,5,27,5,27) -hasLocation(#20080,#20081) -#20082=* -tokeninfo(#20082,8,#20001,17,"{") -#20083=@"loc,{#10000},5,29,5,29" -locations_default(#20083,#10000,5,29,5,29) -hasLocation(#20082,#20083) +stmts(#20078,1,#20075,-2,"{}") +hasLocation(#20078,#20073) +stmtContainers(#20078,#20075) +isMethod(#20072) +#20079=* +stmts(#20079,29,#20001,2,"export ... f() {}") +#20080=@"loc,{#10000},5,1,5,30" +locations_default(#20080,#10000,5,1,5,30) +hasLocation(#20079,#20080) +stmtContainers(#20079,#20001) +#20081=* +stmts(#20081,17,#20079,0,"function f() {}") +#20082=@"loc,{#10000},5,16,5,30" +locations_default(#20082,#10000,5,16,5,30) +hasLocation(#20081,#20082) +stmtContainers(#20081,#20001) +#20083=* +exprs(#20083,78,#20081,-1,"f") +hasLocation(#20083,#20041) +exprContainers(#20083,#20081) +literals("f","f",#20083) +decl(#20083,#20056) #20084=* -tokeninfo(#20084,8,#20001,18,"}") -#20085=@"loc,{#10000},5,30,5,30" -locations_default(#20085,#10000,5,30,5,30) -hasLocation(#20084,#20085) +scopes(#20084,1) +scopenodes(#20081,#20084) +scopenesting(#20084,#20055) +#20085=@"var;{arguments};{#20084}" +variables(#20085,"arguments",#20084) +isArgumentsObject(#20085) #20086=* -tokeninfo(#20086,8,#20001,19,";") -hasLocation(#20086,#20043) -#20087=* -tokeninfo(#20087,0,#20001,20,"") -#20088=@"loc,{#10000},6,1,6,0" -locations_default(#20088,#10000,6,1,6,0) -hasLocation(#20087,#20088) +stmts(#20086,1,#20081,-2,"{}") +#20087=@"loc,{#10000},5,29,5,30" +locations_default(#20087,#10000,5,29,5,30) +hasLocation(#20086,#20087) +stmtContainers(#20086,#20081) +#20088=* +stmts(#20088,0,#20001,3,";") +hasLocation(#20088,#20051) +stmtContainers(#20088,#20001) #20089=* entry_cfg_node(#20089,#20001) #20090=@"loc,{#10000},1,1,1,0" @@ -286,42 +285,42 @@ locations_default(#20090,#10000,1,1,1,0) hasLocation(#20089,#20090) #20091=* exit_cfg_node(#20091,#20001) -hasLocation(#20091,#20088) -successor(#20042,#20091) -successor(#20032,#20034) -successor(#20034,#20042) +hasLocation(#20091,#20053) +successor(#20088,#20091) +successor(#20079,#20081) +successor(#20081,#20088) #20092=* -entry_cfg_node(#20092,#20034) +entry_cfg_node(#20092,#20081) #20093=@"loc,{#10000},5,16,5,15" locations_default(#20093,#10000,5,16,5,15) hasLocation(#20092,#20093) #20094=* -exit_cfg_node(#20094,#20034) +exit_cfg_node(#20094,#20081) #20095=@"loc,{#10000},5,31,5,30" locations_default(#20095,#10000,5,31,5,30) hasLocation(#20094,#20095) -successor(#20040,#20094) -successor(#20092,#20040) -successor(#20018,#20022) -successor(#20028,#20025) +successor(#20086,#20094) +successor(#20092,#20086) +successor(#20067,#20070) +successor(#20075,#20072) #20096=* -entry_cfg_node(#20096,#20028) -hasLocation(#20096,#20026) +entry_cfg_node(#20096,#20075) +hasLocation(#20096,#20073) #20097=* -exit_cfg_node(#20097,#20028) -hasLocation(#20097,#20026) -successor(#20031,#20097) -successor(#20096,#20031) -successor(#20027,#20028) -successor(#20025,#20020) -successor(#20022,#20027) -successor(#20020,#20032) -successor(#20008,#20010) -successor(#20010,#20014) -successor(#20016,#20012) -successor(#20014,#20016) -successor(#20012,#20018) -successor(#20036,#20008) -successor(#20089,#20036) +exit_cfg_node(#20097,#20075) +hasLocation(#20097,#20073) +successor(#20078,#20097) +successor(#20096,#20078) +successor(#20074,#20075) +successor(#20072,#20068) +successor(#20070,#20074) +successor(#20068,#20079) +successor(#20060,#20061) +successor(#20061,#20065) +successor(#20066,#20063) +successor(#20065,#20066) +successor(#20063,#20067) +successor(#20083,#20060) +successor(#20089,#20083) numlines(#10000,5,3,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/export2.ts.trap b/javascript/extractor/tests/ts/output/trap/export2.ts.trap index cf91787cd6c..8511f3732ac 100644 --- a/javascript/extractor/tests/ts/output/trap/export2.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/export2.ts.trap @@ -9,57 +9,58 @@ 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=* -stmts(#20004,29,#20001,0,"export default 42;") -#20005=@"loc,{#10000},1,1,1,18" -locations_default(#20005,#10000,1,1,1,18) -hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) -#20006=* -exprs(#20006,3,#20004,0,"42") -#20007=@"loc,{#10000},1,16,1,17" -locations_default(#20007,#10000,1,16,1,17) -hasLocation(#20006,#20007) -enclosingStmt(#20006,#20004) -exprContainers(#20006,#20001) -literals("42","42",#20006) -#20008=* -lines(#20008,#20001,"export default 42;"," +#20002=* +lines(#20002,#20001,"export default 42;"," ") -hasLocation(#20008,#20005) +#20003=@"loc,{#10000},1,1,1,18" +locations_default(#20003,#10000,1,1,1,18) +hasLocation(#20002,#20003) numlines(#20001,1,1,0) -#20009=* -tokeninfo(#20009,7,#20001,0,"export") -#20010=@"loc,{#10000},1,1,1,6" -locations_default(#20010,#10000,1,1,1,6) -hasLocation(#20009,#20010) -#20011=* -tokeninfo(#20011,7,#20001,1,"default") -#20012=@"loc,{#10000},1,8,1,14" -locations_default(#20012,#10000,1,8,1,14) -hasLocation(#20011,#20012) -#20013=* -tokeninfo(#20013,3,#20001,2,"42") -hasLocation(#20013,#20007) -#20014=* -tokeninfo(#20014,8,#20001,3,";") -#20015=@"loc,{#10000},1,18,1,18" -locations_default(#20015,#10000,1,18,1,18) -hasLocation(#20014,#20015) +#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,3,#20001,2,"42") +#20009=@"loc,{#10000},1,16,1,17" +locations_default(#20009,#10000,1,16,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,0,#20001,4,"") +#20013=@"loc,{#10000},2,1,2,0" +locations_default(#20013,#10000,2,1,2,0) +hasLocation(#20012,#20013) +toplevels(#20001,0) +#20014=@"loc,{#10000},1,1,2,0" +locations_default(#20014,#10000,1,1,2,0) +hasLocation(#20001,#20014) +#20015=@"module;{#10000},1,1" +scopes(#20015,3) +scopenodes(#20001,#20015) +scopenesting(#20015,#20000) +isModule(#20001) +isES2015Module(#20001) #20016=* -tokeninfo(#20016,0,#20001,4,"") -#20017=@"loc,{#10000},2,1,2,0" -locations_default(#20017,#10000,2,1,2,0) -hasLocation(#20016,#20017) +stmts(#20016,29,#20001,0,"export default 42;") +hasLocation(#20016,#20003) +stmtContainers(#20016,#20001) +#20017=* +exprs(#20017,3,#20016,0,"42") +hasLocation(#20017,#20009) +enclosingStmt(#20017,#20016) +exprContainers(#20017,#20001) +literals("42","42",#20017) #20018=* entry_cfg_node(#20018,#20001) #20019=@"loc,{#10000},1,1,1,0" @@ -67,9 +68,9 @@ locations_default(#20019,#10000,1,1,1,0) hasLocation(#20018,#20019) #20020=* exit_cfg_node(#20020,#20001) -hasLocation(#20020,#20017) -successor(#20004,#20006) -successor(#20006,#20020) -successor(#20018,#20004) +hasLocation(#20020,#20013) +successor(#20016,#20017) +successor(#20017,#20020) +successor(#20018,#20016) numlines(#10000,1,1,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/exportasnamespace.d.ts.trap b/javascript/extractor/tests/ts/output/trap/exportasnamespace.d.ts.trap index 59b9c422840..8b16ab7bef6 100644 --- a/javascript/extractor/tests/ts/output/trap/exportasnamespace.d.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/exportasnamespace.d.ts.trap @@ -9,130 +9,130 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,3,0" -locations_default(#20002,#10000,1,1,3,0) -hasLocation(#20001,#20002) -#20003=@"module;{#10000},1,1" -scopes(#20003,3) -scopenodes(#20001,#20003) -scopenesting(#20003,#20000) -isModule(#20001) +#20002=* +lines(#20002,#20001,"export declare function foo();"," +") +#20003=@"loc,{#10000},1,1,1,30" +locations_default(#20003,#10000,1,1,1,30) +hasLocation(#20002,#20003) #20004=* -stmts(#20004,30,#20001,0,"export ... foo();") -#20005=@"loc,{#10000},1,1,1,30" -locations_default(#20005,#10000,1,1,1,30) +lines(#20004,#20001,"export as namespace bar;"," +") +#20005=@"loc,{#10000},2,1,2,24" +locations_default(#20005,#10000,2,1,2,24) hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) -#20006=* -stmts(#20006,17,#20004,-1,"declare ... foo();") -#20007=@"loc,{#10000},1,8,1,30" -locations_default(#20007,#10000,1,8,1,30) -hasLocation(#20006,#20007) -stmtContainers(#20006,#20001) -hasDeclareKeyword(#20006) -#20008=* -exprs(#20008,78,#20006,-1,"foo") -#20009=@"loc,{#10000},1,25,1,27" -locations_default(#20009,#10000,1,25,1,27) -hasLocation(#20008,#20009) -exprContainers(#20008,#20006) -literals("foo","foo",#20008) -#20010=@"var;{foo};{#20000}" -variables(#20010,"foo",#20000) -decl(#20008,#20010) -#20011=* -scopes(#20011,1) -scopenodes(#20006,#20011) -scopenesting(#20011,#20003) -#20012=@"var;{arguments};{#20011}" -variables(#20012,"arguments",#20011) -isArgumentsObject(#20012) -numlines(#20006,1,1,0) -#20013=* -stmts(#20013,38,#20001,1,"export ... ce bar;") -#20014=@"loc,{#10000},2,1,2,24" -locations_default(#20014,#10000,2,1,2,24) -hasLocation(#20013,#20014) -stmtContainers(#20013,#20001) -#20015=* -exprs(#20015,0,#20013,0,"bar") -#20016=@"loc,{#10000},2,21,2,23" -locations_default(#20016,#10000,2,21,2,23) -hasLocation(#20015,#20016) -enclosingStmt(#20015,#20013) -exprContainers(#20015,#20001) -literals("bar","bar",#20015) -#20017=* -lines(#20017,#20001,"export declare function foo();"," -") -hasLocation(#20017,#20005) -#20018=* -lines(#20018,#20001,"export as namespace bar;"," -") -hasLocation(#20018,#20014) numlines(#20001,2,2,0) -#20019=* -tokeninfo(#20019,7,#20001,0,"export") -#20020=@"loc,{#10000},1,1,1,6" -locations_default(#20020,#10000,1,1,1,6) -hasLocation(#20019,#20020) -#20021=* -tokeninfo(#20021,7,#20001,1,"declare") -#20022=@"loc,{#10000},1,8,1,14" -locations_default(#20022,#10000,1,8,1,14) -hasLocation(#20021,#20022) -#20023=* -tokeninfo(#20023,7,#20001,2,"function") -#20024=@"loc,{#10000},1,16,1,23" -locations_default(#20024,#10000,1,16,1,23) -hasLocation(#20023,#20024) -#20025=* -tokeninfo(#20025,6,#20001,3,"foo") -hasLocation(#20025,#20009) +#20006=* +tokeninfo(#20006,7,#20001,0,"export") +#20007=@"loc,{#10000},1,1,1,6" +locations_default(#20007,#10000,1,1,1,6) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,7,#20001,1,"declare") +#20009=@"loc,{#10000},1,8,1,14" +locations_default(#20009,#10000,1,8,1,14) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,7,#20001,2,"function") +#20011=@"loc,{#10000},1,16,1,23" +locations_default(#20011,#10000,1,16,1,23) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,6,#20001,3,"foo") +#20013=@"loc,{#10000},1,25,1,27" +locations_default(#20013,#10000,1,25,1,27) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,4,"(") +#20015=@"loc,{#10000},1,28,1,28" +locations_default(#20015,#10000,1,28,1,28) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,5,")") +#20017=@"loc,{#10000},1,29,1,29" +locations_default(#20017,#10000,1,29,1,29) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,6,";") +#20019=@"loc,{#10000},1,30,1,30" +locations_default(#20019,#10000,1,30,1,30) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,7,#20001,7,"export") +#20021=@"loc,{#10000},2,1,2,6" +locations_default(#20021,#10000,2,1,2,6) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,7,#20001,8,"as") +#20023=@"loc,{#10000},2,8,2,9" +locations_default(#20023,#10000,2,8,2,9) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,7,#20001,9,"namespace") +#20025=@"loc,{#10000},2,11,2,19" +locations_default(#20025,#10000,2,11,2,19) +hasLocation(#20024,#20025) #20026=* -tokeninfo(#20026,8,#20001,4,"(") -#20027=@"loc,{#10000},1,28,1,28" -locations_default(#20027,#10000,1,28,1,28) +tokeninfo(#20026,6,#20001,10,"bar") +#20027=@"loc,{#10000},2,21,2,23" +locations_default(#20027,#10000,2,21,2,23) hasLocation(#20026,#20027) #20028=* -tokeninfo(#20028,8,#20001,5,")") -#20029=@"loc,{#10000},1,29,1,29" -locations_default(#20029,#10000,1,29,1,29) +tokeninfo(#20028,8,#20001,11,";") +#20029=@"loc,{#10000},2,24,2,24" +locations_default(#20029,#10000,2,24,2,24) hasLocation(#20028,#20029) #20030=* -tokeninfo(#20030,8,#20001,6,";") -#20031=@"loc,{#10000},1,30,1,30" -locations_default(#20031,#10000,1,30,1,30) +tokeninfo(#20030,0,#20001,12,"") +#20031=@"loc,{#10000},3,1,3,0" +locations_default(#20031,#10000,3,1,3,0) hasLocation(#20030,#20031) -#20032=* -tokeninfo(#20032,7,#20001,7,"export") -#20033=@"loc,{#10000},2,1,2,6" -locations_default(#20033,#10000,2,1,2,6) -hasLocation(#20032,#20033) +toplevels(#20001,0) +#20032=@"loc,{#10000},1,1,3,0" +locations_default(#20032,#10000,1,1,3,0) +hasLocation(#20001,#20032) +#20033=@"module;{#10000},1,1" +scopes(#20033,3) +scopenodes(#20001,#20033) +scopenesting(#20033,#20000) +isModule(#20001) +isES2015Module(#20001) #20034=* -tokeninfo(#20034,7,#20001,8,"as") -#20035=@"loc,{#10000},2,8,2,9" -locations_default(#20035,#10000,2,8,2,9) -hasLocation(#20034,#20035) -#20036=* -tokeninfo(#20036,7,#20001,9,"namespace") -#20037=@"loc,{#10000},2,11,2,19" -locations_default(#20037,#10000,2,11,2,19) -hasLocation(#20036,#20037) -#20038=* -tokeninfo(#20038,6,#20001,10,"bar") -hasLocation(#20038,#20016) +stmts(#20034,30,#20001,0,"export ... foo();") +hasLocation(#20034,#20003) +stmtContainers(#20034,#20001) +#20035=* +stmts(#20035,17,#20034,-1,"declare ... foo();") +#20036=@"loc,{#10000},1,8,1,30" +locations_default(#20036,#10000,1,8,1,30) +hasLocation(#20035,#20036) +stmtContainers(#20035,#20001) +hasDeclareKeyword(#20035) +#20037=* +exprs(#20037,78,#20035,-1,"foo") +hasLocation(#20037,#20013) +exprContainers(#20037,#20035) +literals("foo","foo",#20037) +#20038=@"var;{foo};{#20000}" +variables(#20038,"foo",#20000) +decl(#20037,#20038) #20039=* -tokeninfo(#20039,8,#20001,11,";") -#20040=@"loc,{#10000},2,24,2,24" -locations_default(#20040,#10000,2,24,2,24) -hasLocation(#20039,#20040) +scopes(#20039,1) +scopenodes(#20035,#20039) +scopenesting(#20039,#20033) +#20040=@"var;{arguments};{#20039}" +variables(#20040,"arguments",#20039) +isArgumentsObject(#20040) #20041=* -tokeninfo(#20041,0,#20001,12,"") -#20042=@"loc,{#10000},3,1,3,0" -locations_default(#20042,#10000,3,1,3,0) -hasLocation(#20041,#20042) +stmts(#20041,38,#20001,1,"export ... ce bar;") +hasLocation(#20041,#20005) +stmtContainers(#20041,#20001) +#20042=* +exprs(#20042,0,#20041,0,"bar") +hasLocation(#20042,#20027) +enclosingStmt(#20042,#20041) +exprContainers(#20042,#20001) +literals("bar","bar",#20042) #20043=* entry_cfg_node(#20043,#20001) #20044=@"loc,{#10000},1,1,1,0" @@ -140,10 +140,10 @@ locations_default(#20044,#10000,1,1,1,0) hasLocation(#20043,#20044) #20045=* exit_cfg_node(#20045,#20001) -hasLocation(#20045,#20042) -successor(#20013,#20045) -successor(#20004,#20006) -successor(#20006,#20013) -successor(#20043,#20004) +hasLocation(#20045,#20031) +successor(#20041,#20045) +successor(#20034,#20035) +successor(#20035,#20041) +successor(#20043,#20034) numlines(#10000,2,2,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/exportassign.ts.trap b/javascript/extractor/tests/ts/output/trap/exportassign.ts.trap index 0bd00d25127..035f5346697 100644 --- a/javascript/extractor/tests/ts/output/trap/exportassign.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/exportassign.ts.trap @@ -9,57 +9,58 @@ 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=* -stmts(#20004,33,#20001,0,"export = 42;") -#20005=@"loc,{#10000},1,1,1,12" -locations_default(#20005,#10000,1,1,1,12) -hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) -#20006=* -exprs(#20006,3,#20004,0,"42") -#20007=@"loc,{#10000},1,10,1,11" -locations_default(#20007,#10000,1,10,1,11) -hasLocation(#20006,#20007) -enclosingStmt(#20006,#20004) -exprContainers(#20006,#20001) -literals("42","42",#20006) -#20008=* -lines(#20008,#20001,"export = 42;"," +#20002=* +lines(#20002,#20001,"export = 42;"," ") -hasLocation(#20008,#20005) +#20003=@"loc,{#10000},1,1,1,12" +locations_default(#20003,#10000,1,1,1,12) +hasLocation(#20002,#20003) numlines(#20001,1,1,0) -#20009=* -tokeninfo(#20009,7,#20001,0,"export") -#20010=@"loc,{#10000},1,1,1,6" -locations_default(#20010,#10000,1,1,1,6) -hasLocation(#20009,#20010) -#20011=* -tokeninfo(#20011,8,#20001,1,"=") -#20012=@"loc,{#10000},1,8,1,8" -locations_default(#20012,#10000,1,8,1,8) -hasLocation(#20011,#20012) -#20013=* -tokeninfo(#20013,3,#20001,2,"42") -hasLocation(#20013,#20007) -#20014=* -tokeninfo(#20014,8,#20001,3,";") -#20015=@"loc,{#10000},1,12,1,12" -locations_default(#20015,#10000,1,12,1,12) -hasLocation(#20014,#20015) +#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,3,#20001,2,"42") +#20009=@"loc,{#10000},1,10,1,11" +locations_default(#20009,#10000,1,10,1,11) +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,0,#20001,4,"") +#20013=@"loc,{#10000},2,1,2,0" +locations_default(#20013,#10000,2,1,2,0) +hasLocation(#20012,#20013) +toplevels(#20001,0) +#20014=@"loc,{#10000},1,1,2,0" +locations_default(#20014,#10000,1,1,2,0) +hasLocation(#20001,#20014) +#20015=@"module;{#10000},1,1" +scopes(#20015,3) +scopenodes(#20001,#20015) +scopenesting(#20015,#20000) +isModule(#20001) +isES2015Module(#20001) #20016=* -tokeninfo(#20016,0,#20001,4,"") -#20017=@"loc,{#10000},2,1,2,0" -locations_default(#20017,#10000,2,1,2,0) -hasLocation(#20016,#20017) +stmts(#20016,33,#20001,0,"export = 42;") +hasLocation(#20016,#20003) +stmtContainers(#20016,#20001) +#20017=* +exprs(#20017,3,#20016,0,"42") +hasLocation(#20017,#20009) +enclosingStmt(#20017,#20016) +exprContainers(#20017,#20001) +literals("42","42",#20017) #20018=* entry_cfg_node(#20018,#20001) #20019=@"loc,{#10000},1,1,1,0" @@ -67,9 +68,9 @@ locations_default(#20019,#10000,1,1,1,0) hasLocation(#20018,#20019) #20020=* exit_cfg_node(#20020,#20001) -hasLocation(#20020,#20017) -successor(#20004,#20006) -successor(#20006,#20020) -successor(#20018,#20004) +hasLocation(#20020,#20013) +successor(#20016,#20017) +successor(#20017,#20020) +successor(#20018,#20016) numlines(#10000,1,1,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/exprs.ts.trap b/javascript/extractor/tests/ts/output/trap/exprs.ts.trap index 77aeaf139da..725b28cba30 100644 --- a/javascript/extractor/tests/ts/output/trap/exprs.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/exprs.ts.trap @@ -9,307 +9,306 @@ 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;{f};{#20000}" -variables(#20003,"f",#20000) +#20002=* +lines(#20002,#20001,"function f(z) {"," +") +#20003=@"loc,{#10000},1,1,1,15" +locations_default(#20003,#10000,1,1,1,15) +hasLocation(#20002,#20003) #20004=* -stmts(#20004,17,#20001,0,"functio ... = z;\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;{z};{#20007}" -variables(#20008,"z",#20007) -#20009=* -exprs(#20009,78,#20004,0,"z") -#20010=@"loc,{#10000},1,12,1,12" -locations_default(#20010,#10000,1,12,1,12) -hasLocation(#20009,#20010) -exprContainers(#20009,#20004) -literals("z","z",#20009) -decl(#20009,#20008) -#20011=@"var;{arguments};{#20007}" -variables(#20011,"arguments",#20007) -isArgumentsObject(#20011) -#20012=* -stmts(#20012,1,#20004,-2,"{\n let ... = z;\n}") -#20013=@"loc,{#10000},1,15,5,1" -locations_default(#20013,#10000,1,15,5,1) -hasLocation(#20012,#20013) -stmtContainers(#20012,#20004) -#20014=* -scopes(#20014,4) -scopenodes(#20012,#20014) -scopenesting(#20014,#20007) -#20015=@"var;{x};{#20014}" -variables(#20015,"x",#20014) -#20016=@"var;{y};{#20014}" -variables(#20016,"y",#20014) -#20017=* -stmts(#20017,23,#20012,0,"let x, y;") -#20018=@"loc,{#10000},2,3,2,11" -locations_default(#20018,#10000,2,3,2,11) -hasLocation(#20017,#20018) -stmtContainers(#20017,#20004) -#20019=* -exprs(#20019,64,#20017,0,"x") -#20020=@"loc,{#10000},2,7,2,7" -locations_default(#20020,#10000,2,7,2,7) -hasLocation(#20019,#20020) -enclosingStmt(#20019,#20017) -exprContainers(#20019,#20004) -#20021=* -exprs(#20021,78,#20019,0,"x") -hasLocation(#20021,#20020) -enclosingStmt(#20021,#20017) -exprContainers(#20021,#20004) -literals("x","x",#20021) -decl(#20021,#20015) -#20022=* -exprs(#20022,64,#20017,1,"y") -#20023=@"loc,{#10000},2,10,2,10" -locations_default(#20023,#10000,2,10,2,10) -hasLocation(#20022,#20023) -enclosingStmt(#20022,#20017) -exprContainers(#20022,#20004) -#20024=* -exprs(#20024,78,#20022,0,"y") -hasLocation(#20024,#20023) -enclosingStmt(#20024,#20017) -exprContainers(#20024,#20004) -literals("y","y",#20024) -decl(#20024,#20016) -#20025=* -stmts(#20025,2,#20012,1,"x, y;") -#20026=@"loc,{#10000},3,3,3,7" -locations_default(#20026,#10000,3,3,3,7) -hasLocation(#20025,#20026) -stmtContainers(#20025,#20004) -#20027=* -exprs(#20027,10,#20025,0,"x, y") -#20028=@"loc,{#10000},3,3,3,6" -locations_default(#20028,#10000,3,3,3,6) -hasLocation(#20027,#20028) -enclosingStmt(#20027,#20025) -exprContainers(#20027,#20004) -#20029=* -exprs(#20029,79,#20027,0,"x") -#20030=@"loc,{#10000},3,3,3,3" -locations_default(#20030,#10000,3,3,3,3) -hasLocation(#20029,#20030) -enclosingStmt(#20029,#20025) -exprContainers(#20029,#20004) -literals("x","x",#20029) -bind(#20029,#20015) -#20031=* -exprs(#20031,79,#20027,1,"y") -#20032=@"loc,{#10000},3,6,3,6" -locations_default(#20032,#10000,3,6,3,6) -hasLocation(#20031,#20032) -enclosingStmt(#20031,#20025) -exprContainers(#20031,#20004) -literals("y","y",#20031) -bind(#20031,#20016) -#20033=* -stmts(#20033,2,#20012,2,"[x, y] = z;") -#20034=@"loc,{#10000},4,3,4,13" -locations_default(#20034,#10000,4,3,4,13) -hasLocation(#20033,#20034) -stmtContainers(#20033,#20004) -#20035=* -exprs(#20035,47,#20033,0,"[x, y] = z") -#20036=@"loc,{#10000},4,3,4,12" -locations_default(#20036,#10000,4,3,4,12) -hasLocation(#20035,#20036) -enclosingStmt(#20035,#20033) -exprContainers(#20035,#20004) -#20037=* -exprs(#20037,67,#20035,0,"[x, y]") -#20038=@"loc,{#10000},4,3,4,8" -locations_default(#20038,#10000,4,3,4,8) -hasLocation(#20037,#20038) -enclosingStmt(#20037,#20033) -exprContainers(#20037,#20004) -#20039=* -exprs(#20039,79,#20037,0,"x") -#20040=@"loc,{#10000},4,4,4,4" -locations_default(#20040,#10000,4,4,4,4) -hasLocation(#20039,#20040) -enclosingStmt(#20039,#20033) -exprContainers(#20039,#20004) -literals("x","x",#20039) -bind(#20039,#20015) -#20041=* -exprs(#20041,79,#20037,1,"y") -#20042=@"loc,{#10000},4,7,4,7" -locations_default(#20042,#10000,4,7,4,7) -hasLocation(#20041,#20042) -enclosingStmt(#20041,#20033) -exprContainers(#20041,#20004) -literals("y","y",#20041) -bind(#20041,#20016) -arraySize(#20037,2) -#20043=* -exprs(#20043,79,#20035,1,"z") -#20044=@"loc,{#10000},4,12,4,12" -locations_default(#20044,#10000,4,12,4,12) -hasLocation(#20043,#20044) -enclosingStmt(#20043,#20033) -exprContainers(#20043,#20004) -literals("z","z",#20043) -bind(#20043,#20008) -numlines(#20004,5,5,0) -#20045=* -lines(#20045,#20001,"function f(z) {"," +lines(#20004,#20001," let x, y;"," ") -#20046=@"loc,{#10000},1,1,1,15" -locations_default(#20046,#10000,1,1,1,15) -hasLocation(#20045,#20046) -#20047=* -lines(#20047,#20001," let x, y;"," -") -#20048=@"loc,{#10000},2,1,2,11" -locations_default(#20048,#10000,2,1,2,11) -hasLocation(#20047,#20048) +#20005=@"loc,{#10000},2,1,2,11" +locations_default(#20005,#10000,2,1,2,11) +hasLocation(#20004,#20005) indentation(#10000,2," ",2) -#20049=* -lines(#20049,#20001," x, y;"," +#20006=* +lines(#20006,#20001," x, y;"," ") -#20050=@"loc,{#10000},3,1,3,7" -locations_default(#20050,#10000,3,1,3,7) -hasLocation(#20049,#20050) +#20007=@"loc,{#10000},3,1,3,7" +locations_default(#20007,#10000,3,1,3,7) +hasLocation(#20006,#20007) indentation(#10000,3," ",2) -#20051=* -lines(#20051,#20001," [x, y] = z;"," +#20008=* +lines(#20008,#20001," [x, y] = z;"," ") -#20052=@"loc,{#10000},4,1,4,13" -locations_default(#20052,#10000,4,1,4,13) -hasLocation(#20051,#20052) +#20009=@"loc,{#10000},4,1,4,13" +locations_default(#20009,#10000,4,1,4,13) +hasLocation(#20008,#20009) indentation(#10000,4," ",2) -#20053=* -lines(#20053,#20001,"}","") -#20054=@"loc,{#10000},5,1,5,1" -locations_default(#20054,#10000,5,1,5,1) -hasLocation(#20053,#20054) +#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) -#20055=* -tokeninfo(#20055,7,#20001,0,"function") -#20056=@"loc,{#10000},1,1,1,8" -locations_default(#20056,#10000,1,1,1,8) -hasLocation(#20055,#20056) -#20057=* -tokeninfo(#20057,6,#20001,1,"f") -hasLocation(#20057,#20006) +#20012=* +tokeninfo(#20012,7,#20001,0,"function") +#20013=@"loc,{#10000},1,1,1,8" +locations_default(#20013,#10000,1,1,1,8) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,6,#20001,1,"f") +#20015=@"loc,{#10000},1,10,1,10" +locations_default(#20015,#10000,1,10,1,10) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,2,"(") +#20017=@"loc,{#10000},1,11,1,11" +locations_default(#20017,#10000,1,11,1,11) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,6,#20001,3,"z") +#20019=@"loc,{#10000},1,12,1,12" +locations_default(#20019,#10000,1,12,1,12) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,4,")") +#20021=@"loc,{#10000},1,13,1,13" +locations_default(#20021,#10000,1,13,1,13) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,5,"{") +#20023=@"loc,{#10000},1,15,1,15" +locations_default(#20023,#10000,1,15,1,15) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,7,#20001,6,"let") +#20025=@"loc,{#10000},2,3,2,5" +locations_default(#20025,#10000,2,3,2,5) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,6,#20001,7,"x") +#20027=@"loc,{#10000},2,7,2,7" +locations_default(#20027,#10000,2,7,2,7) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,8,",") +#20029=@"loc,{#10000},2,8,2,8" +locations_default(#20029,#10000,2,8,2,8) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,6,#20001,9,"y") +#20031=@"loc,{#10000},2,10,2,10" +locations_default(#20031,#10000,2,10,2,10) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,10,";") +#20033=@"loc,{#10000},2,11,2,11" +locations_default(#20033,#10000,2,11,2,11) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,6,#20001,11,"x") +#20035=@"loc,{#10000},3,3,3,3" +locations_default(#20035,#10000,3,3,3,3) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,12,",") +#20037=@"loc,{#10000},3,4,3,4" +locations_default(#20037,#10000,3,4,3,4) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,6,#20001,13,"y") +#20039=@"loc,{#10000},3,6,3,6" +locations_default(#20039,#10000,3,6,3,6) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,14,";") +#20041=@"loc,{#10000},3,7,3,7" +locations_default(#20041,#10000,3,7,3,7) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,15,"[") +#20043=@"loc,{#10000},4,3,4,3" +locations_default(#20043,#10000,4,3,4,3) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,6,#20001,16,"x") +#20045=@"loc,{#10000},4,4,4,4" +locations_default(#20045,#10000,4,4,4,4) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,17,",") +#20047=@"loc,{#10000},4,5,4,5" +locations_default(#20047,#10000,4,5,4,5) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,6,#20001,18,"y") +#20049=@"loc,{#10000},4,7,4,7" +locations_default(#20049,#10000,4,7,4,7) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,19,"]") +#20051=@"loc,{#10000},4,8,4,8" +locations_default(#20051,#10000,4,8,4,8) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,8,#20001,20,"=") +#20053=@"loc,{#10000},4,10,4,10" +locations_default(#20053,#10000,4,10,4,10) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,6,#20001,21,"z") +#20055=@"loc,{#10000},4,12,4,12" +locations_default(#20055,#10000,4,12,4,12) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,8,#20001,22,";") +#20057=@"loc,{#10000},4,13,4,13" +locations_default(#20057,#10000,4,13,4,13) +hasLocation(#20056,#20057) #20058=* -tokeninfo(#20058,8,#20001,2,"(") -#20059=@"loc,{#10000},1,11,1,11" -locations_default(#20059,#10000,1,11,1,11) -hasLocation(#20058,#20059) -#20060=* -tokeninfo(#20060,6,#20001,3,"z") -hasLocation(#20060,#20010) -#20061=* -tokeninfo(#20061,8,#20001,4,")") -#20062=@"loc,{#10000},1,13,1,13" -locations_default(#20062,#10000,1,13,1,13) -hasLocation(#20061,#20062) +tokeninfo(#20058,8,#20001,23,"}") +hasLocation(#20058,#20011) +#20059=* +tokeninfo(#20059,0,#20001,24,"") +#20060=@"loc,{#10000},5,2,5,1" +locations_default(#20060,#10000,5,2,5,1) +hasLocation(#20059,#20060) +toplevels(#20001,0) +#20061=@"loc,{#10000},1,1,5,1" +locations_default(#20061,#10000,1,1,5,1) +hasLocation(#20001,#20061) +#20062=@"var;{f};{#20000}" +variables(#20062,"f",#20000) #20063=* -tokeninfo(#20063,8,#20001,5,"{") -#20064=@"loc,{#10000},1,15,1,15" -locations_default(#20064,#10000,1,15,1,15) -hasLocation(#20063,#20064) +stmts(#20063,17,#20001,0,"functio ... = z;\n}") +hasLocation(#20063,#20061) +stmtContainers(#20063,#20001) +#20064=* +exprs(#20064,78,#20063,-1,"f") +hasLocation(#20064,#20015) +exprContainers(#20064,#20063) +literals("f","f",#20064) +decl(#20064,#20062) #20065=* -tokeninfo(#20065,7,#20001,6,"let") -#20066=@"loc,{#10000},2,3,2,5" -locations_default(#20066,#10000,2,3,2,5) -hasLocation(#20065,#20066) +scopes(#20065,1) +scopenodes(#20063,#20065) +scopenesting(#20065,#20000) +#20066=@"var;{z};{#20065}" +variables(#20066,"z",#20065) #20067=* -tokeninfo(#20067,6,#20001,7,"x") -hasLocation(#20067,#20020) -#20068=* -tokeninfo(#20068,8,#20001,8,",") -#20069=@"loc,{#10000},2,8,2,8" -locations_default(#20069,#10000,2,8,2,8) -hasLocation(#20068,#20069) -#20070=* -tokeninfo(#20070,6,#20001,9,"y") -hasLocation(#20070,#20023) +exprs(#20067,78,#20063,0,"z") +hasLocation(#20067,#20019) +exprContainers(#20067,#20063) +literals("z","z",#20067) +decl(#20067,#20066) +#20068=@"var;{arguments};{#20065}" +variables(#20068,"arguments",#20065) +isArgumentsObject(#20068) +#20069=* +stmts(#20069,1,#20063,-2,"{\n let ... = z;\n}") +#20070=@"loc,{#10000},1,15,5,1" +locations_default(#20070,#10000,1,15,5,1) +hasLocation(#20069,#20070) +stmtContainers(#20069,#20063) #20071=* -tokeninfo(#20071,8,#20001,10,";") -#20072=@"loc,{#10000},2,11,2,11" -locations_default(#20072,#10000,2,11,2,11) -hasLocation(#20071,#20072) -#20073=* -tokeninfo(#20073,6,#20001,11,"x") -hasLocation(#20073,#20030) +scopes(#20071,4) +scopenodes(#20069,#20071) +scopenesting(#20071,#20065) +#20072=@"var;{x};{#20071}" +variables(#20072,"x",#20071) +#20073=@"var;{y};{#20071}" +variables(#20073,"y",#20071) #20074=* -tokeninfo(#20074,8,#20001,12,",") -#20075=@"loc,{#10000},3,4,3,4" -locations_default(#20075,#10000,3,4,3,4) +stmts(#20074,23,#20069,0,"let x, y;") +#20075=@"loc,{#10000},2,3,2,11" +locations_default(#20075,#10000,2,3,2,11) hasLocation(#20074,#20075) +stmtContainers(#20074,#20063) #20076=* -tokeninfo(#20076,6,#20001,13,"y") -hasLocation(#20076,#20032) +exprs(#20076,64,#20074,0,"x") +hasLocation(#20076,#20027) +enclosingStmt(#20076,#20074) +exprContainers(#20076,#20063) #20077=* -tokeninfo(#20077,8,#20001,14,";") -#20078=@"loc,{#10000},3,7,3,7" -locations_default(#20078,#10000,3,7,3,7) -hasLocation(#20077,#20078) +exprs(#20077,78,#20076,0,"x") +hasLocation(#20077,#20027) +enclosingStmt(#20077,#20074) +exprContainers(#20077,#20063) +literals("x","x",#20077) +decl(#20077,#20072) +#20078=* +exprs(#20078,64,#20074,1,"y") +hasLocation(#20078,#20031) +enclosingStmt(#20078,#20074) +exprContainers(#20078,#20063) #20079=* -tokeninfo(#20079,8,#20001,15,"[") -#20080=@"loc,{#10000},4,3,4,3" -locations_default(#20080,#10000,4,3,4,3) -hasLocation(#20079,#20080) -#20081=* -tokeninfo(#20081,6,#20001,16,"x") -hasLocation(#20081,#20040) +exprs(#20079,78,#20078,0,"y") +hasLocation(#20079,#20031) +enclosingStmt(#20079,#20074) +exprContainers(#20079,#20063) +literals("y","y",#20079) +decl(#20079,#20073) +#20080=* +stmts(#20080,2,#20069,1,"x, y;") +#20081=@"loc,{#10000},3,3,3,7" +locations_default(#20081,#10000,3,3,3,7) +hasLocation(#20080,#20081) +stmtContainers(#20080,#20063) #20082=* -tokeninfo(#20082,8,#20001,17,",") -#20083=@"loc,{#10000},4,5,4,5" -locations_default(#20083,#10000,4,5,4,5) +exprs(#20082,10,#20080,0,"x, y") +#20083=@"loc,{#10000},3,3,3,6" +locations_default(#20083,#10000,3,3,3,6) hasLocation(#20082,#20083) +enclosingStmt(#20082,#20080) +exprContainers(#20082,#20063) #20084=* -tokeninfo(#20084,6,#20001,18,"y") -hasLocation(#20084,#20042) +exprs(#20084,79,#20082,0,"x") +hasLocation(#20084,#20035) +enclosingStmt(#20084,#20080) +exprContainers(#20084,#20063) +literals("x","x",#20084) +bind(#20084,#20072) #20085=* -tokeninfo(#20085,8,#20001,19,"]") -#20086=@"loc,{#10000},4,8,4,8" -locations_default(#20086,#10000,4,8,4,8) -hasLocation(#20085,#20086) -#20087=* -tokeninfo(#20087,8,#20001,20,"=") -#20088=@"loc,{#10000},4,10,4,10" -locations_default(#20088,#10000,4,10,4,10) -hasLocation(#20087,#20088) -#20089=* -tokeninfo(#20089,6,#20001,21,"z") -hasLocation(#20089,#20044) +exprs(#20085,79,#20082,1,"y") +hasLocation(#20085,#20039) +enclosingStmt(#20085,#20080) +exprContainers(#20085,#20063) +literals("y","y",#20085) +bind(#20085,#20073) +#20086=* +stmts(#20086,2,#20069,2,"[x, y] = z;") +#20087=@"loc,{#10000},4,3,4,13" +locations_default(#20087,#10000,4,3,4,13) +hasLocation(#20086,#20087) +stmtContainers(#20086,#20063) +#20088=* +exprs(#20088,47,#20086,0,"[x, y] = z") +#20089=@"loc,{#10000},4,3,4,12" +locations_default(#20089,#10000,4,3,4,12) +hasLocation(#20088,#20089) +enclosingStmt(#20088,#20086) +exprContainers(#20088,#20063) #20090=* -tokeninfo(#20090,8,#20001,22,";") -#20091=@"loc,{#10000},4,13,4,13" -locations_default(#20091,#10000,4,13,4,13) +exprs(#20090,67,#20088,0,"[x, y]") +#20091=@"loc,{#10000},4,3,4,8" +locations_default(#20091,#10000,4,3,4,8) hasLocation(#20090,#20091) +enclosingStmt(#20090,#20086) +exprContainers(#20090,#20063) #20092=* -tokeninfo(#20092,8,#20001,23,"}") -hasLocation(#20092,#20054) +exprs(#20092,79,#20090,0,"x") +hasLocation(#20092,#20045) +enclosingStmt(#20092,#20086) +exprContainers(#20092,#20063) +literals("x","x",#20092) +bind(#20092,#20072) #20093=* -tokeninfo(#20093,0,#20001,24,"") -#20094=@"loc,{#10000},5,2,5,1" -locations_default(#20094,#10000,5,2,5,1) -hasLocation(#20093,#20094) +exprs(#20093,79,#20090,1,"y") +hasLocation(#20093,#20049) +enclosingStmt(#20093,#20086) +exprContainers(#20093,#20063) +literals("y","y",#20093) +bind(#20093,#20073) +arraySize(#20090,2) +#20094=* +exprs(#20094,79,#20088,1,"z") +hasLocation(#20094,#20055) +enclosingStmt(#20094,#20086) +exprContainers(#20094,#20063) +literals("z","z",#20094) +bind(#20094,#20066) #20095=* entry_cfg_node(#20095,#20001) #20096=@"loc,{#10000},1,1,1,0" @@ -317,33 +316,33 @@ locations_default(#20096,#10000,1,1,1,0) hasLocation(#20095,#20096) #20097=* exit_cfg_node(#20097,#20001) -hasLocation(#20097,#20094) -successor(#20004,#20097) +hasLocation(#20097,#20060) +successor(#20063,#20097) #20098=* -entry_cfg_node(#20098,#20004) +entry_cfg_node(#20098,#20063) hasLocation(#20098,#20096) #20099=* -exit_cfg_node(#20099,#20004) -hasLocation(#20099,#20094) -successor(#20012,#20017) -successor(#20033,#20043) -successor(#20037,#20039) -successor(#20041,#20035) -successor(#20039,#20041) -successor(#20043,#20037) -successor(#20035,#20099) -successor(#20025,#20027) -successor(#20027,#20029) -successor(#20031,#20033) -successor(#20029,#20031) -successor(#20017,#20021) -successor(#20024,#20022) -successor(#20022,#20025) -successor(#20021,#20019) -successor(#20019,#20024) -successor(#20009,#20012) -successor(#20098,#20009) -successor(#20005,#20004) -successor(#20095,#20005) +exit_cfg_node(#20099,#20063) +hasLocation(#20099,#20060) +successor(#20069,#20074) +successor(#20086,#20094) +successor(#20090,#20092) +successor(#20093,#20088) +successor(#20092,#20093) +successor(#20094,#20090) +successor(#20088,#20099) +successor(#20080,#20082) +successor(#20082,#20084) +successor(#20085,#20086) +successor(#20084,#20085) +successor(#20074,#20077) +successor(#20079,#20078) +successor(#20078,#20080) +successor(#20077,#20076) +successor(#20076,#20079) +successor(#20067,#20069) +successor(#20098,#20067) +successor(#20064,#20063) +successor(#20095,#20064) numlines(#10000,5,5,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/externalmodule.ts.trap b/javascript/extractor/tests/ts/output/trap/externalmodule.ts.trap index bdec1bf471f..e5bd21ddde2 100644 --- a/javascript/extractor/tests/ts/output/trap/externalmodule.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/externalmodule.ts.trap @@ -9,354 +9,353 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,10,0" -locations_default(#20002,#10000,1,1,10,0) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,37,#20001,0,"declare ... = M;\n}") -#20004=@"loc,{#10000},1,1,9,1" -locations_default(#20004,#10000,1,1,9,1) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -hasDeclareKeyword(#20003) -#20005=* -exprs(#20005,4,#20003,-1,"""X""") -#20006=@"loc,{#10000},1,16,1,18" -locations_default(#20006,#10000,1,16,1,18) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -literals("X","""X""",#20005) -#20007=* -scopes(#20007,15) -scopenodes(#20003,#20007) -scopenesting(#20007,#20000) -#20008=@"local_namespace_name;{M};{#20007}" -local_namespace_names(#20008,"M",#20007) -#20009=@"local_type_name;{M};{#20007}" -local_type_names(#20009,"M",#20007) +#20002=* +lines(#20002,#20001,"declare module ""X"" {"," +") +#20003=@"loc,{#10000},1,1,1,20" +locations_default(#20003,#10000,1,1,1,20) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," module M {"," +") +#20005=@"loc,{#10000},2,1,2,12" +locations_default(#20005,#10000,2,1,2,12) +hasLocation(#20004,#20005) +indentation(#10000,2," ",2) +#20006=* +lines(#20006,#20001," export interface I {}"," +") +#20007=@"loc,{#10000},3,1,3,25" +locations_default(#20007,#10000,3,1,3,25) +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=* -stmts(#20010,31,#20003,0,"module ... {}\n }") -#20011=@"loc,{#10000},2,3,4,3" -locations_default(#20011,#10000,2,3,4,3) +lines(#20010,#20001," interface M {"," +") +#20011=@"loc,{#10000},5,1,5,15" +locations_default(#20011,#10000,5,1,5,15) hasLocation(#20010,#20011) -stmtContainers(#20010,#20003) +indentation(#10000,5," ",2) #20012=* -exprs(#20012,78,#20010,-1,"M") -#20013=@"loc,{#10000},2,10,2,10" -locations_default(#20013,#10000,2,10,2,10) +lines(#20012,#20001," method(): M.I;"," +") +#20013=@"loc,{#10000},6,1,6,18" +locations_default(#20013,#10000,6,1,6,18) hasLocation(#20012,#20013) -enclosingStmt(#20012,#20010) -exprContainers(#20012,#20003) -literals("M","M",#20012) -namespacedecl(#20012,#20008) +indentation(#10000,6," ",4) #20014=* -scopes(#20014,9) -scopenodes(#20010,#20014) -scopenesting(#20014,#20007) -#20015=@"local_type_name;{I};{#20014}" -local_type_names(#20015,"I",#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=* -stmts(#20016,30,#20010,0,"export ... ce I {}") -#20017=@"loc,{#10000},3,5,3,25" -locations_default(#20017,#10000,3,5,3,25) +lines(#20016,#20001," export = M;"," +") +#20017=@"loc,{#10000},8,1,8,13" +locations_default(#20017,#10000,8,1,8,13) hasLocation(#20016,#20017) -stmtContainers(#20016,#20010) +indentation(#10000,8," ",2) #20018=* -stmts(#20018,34,#20016,-1,"interface I {}") -#20019=@"loc,{#10000},3,12,3,25" -locations_default(#20019,#10000,3,12,3,25) +lines(#20018,#20001,"}"," +") +#20019=@"loc,{#10000},9,1,9,1" +locations_default(#20019,#10000,9,1,9,1) hasLocation(#20018,#20019) -stmtContainers(#20018,#20010) +numlines(#20001,9,9,0) #20020=* -typeexprs(#20020,1,#20018,0,"I") -#20021=@"loc,{#10000},3,22,3,22" -locations_default(#20021,#10000,3,22,3,22) +tokeninfo(#20020,7,#20001,0,"declare") +#20021=@"loc,{#10000},1,1,1,7" +locations_default(#20021,#10000,1,1,1,7) hasLocation(#20020,#20021) -enclosingStmt(#20020,#20018) -exprContainers(#20020,#20010) -literals("I","I",#20020) -typedecl(#20020,#20015) #20022=* -stmts(#20022,34,#20003,1,"interfa ... .I;\n }") -#20023=@"loc,{#10000},5,3,7,3" -locations_default(#20023,#10000,5,3,7,3) +tokeninfo(#20022,7,#20001,1,"module") +#20023=@"loc,{#10000},1,9,1,14" +locations_default(#20023,#10000,1,9,1,14) hasLocation(#20022,#20023) -stmtContainers(#20022,#20003) #20024=* -typeexprs(#20024,1,#20022,0,"M") -#20025=@"loc,{#10000},5,13,5,13" -locations_default(#20025,#10000,5,13,5,13) +tokeninfo(#20024,4,#20001,2,"""X""") +#20025=@"loc,{#10000},1,16,1,18" +locations_default(#20025,#10000,1,16,1,18) hasLocation(#20024,#20025) -enclosingStmt(#20024,#20022) -exprContainers(#20024,#20003) -literals("M","M",#20024) -typedecl(#20024,#20009) #20026=* -properties(#20026,#20022,2,0,"method(): M.I;") -#20027=@"loc,{#10000},6,5,6,18" -locations_default(#20027,#10000,6,5,6,18) +tokeninfo(#20026,8,#20001,3,"{") +#20027=@"loc,{#10000},1,20,1,20" +locations_default(#20027,#10000,1,20,1,20) hasLocation(#20026,#20027) #20028=* -exprs(#20028,0,#20026,0,"method") -#20029=@"loc,{#10000},6,5,6,10" -locations_default(#20029,#10000,6,5,6,10) +tokeninfo(#20028,7,#20001,4,"module") +#20029=@"loc,{#10000},2,3,2,8" +locations_default(#20029,#10000,2,3,2,8) hasLocation(#20028,#20029) -enclosingStmt(#20028,#20022) -exprContainers(#20028,#20003) -literals("method","method",#20028) #20030=* -exprs(#20030,9,#20026,1,"method(): M.I;") -hasLocation(#20030,#20027) -enclosingStmt(#20030,#20022) -exprContainers(#20030,#20003) -#20031=* -scopes(#20031,1) -scopenodes(#20030,#20031) -scopenesting(#20031,#20007) -#20032=@"var;{arguments};{#20031}" -variables(#20032,"arguments",#20031) -isArgumentsObject(#20032) -#20033=* -typeexprs(#20033,13,#20030,-3,"M.I") -#20034=@"loc,{#10000},6,15,6,17" -locations_default(#20034,#10000,6,15,6,17) -hasLocation(#20033,#20034) -exprContainers(#20033,#20030) -#20035=* -typeexprs(#20035,25,#20033,0,"M") -#20036=@"loc,{#10000},6,15,6,15" -locations_default(#20036,#10000,6,15,6,15) -hasLocation(#20035,#20036) -exprContainers(#20035,#20030) -literals("M","M",#20035) -namespacebind(#20035,#20008) -#20037=* -typeexprs(#20037,15,#20033,1,"I") -#20038=@"loc,{#10000},6,17,6,17" -locations_default(#20038,#10000,6,17,6,17) -hasLocation(#20037,#20038) -exprContainers(#20037,#20030) -literals("I","I",#20037) -numlines(#20030,1,1,0) -isMethod(#20026) -isAbstractMember(#20026) -#20039=* -stmts(#20039,33,#20003,2,"export = M;") -#20040=@"loc,{#10000},8,3,8,13" -locations_default(#20040,#10000,8,3,8,13) -hasLocation(#20039,#20040) -stmtContainers(#20039,#20003) -#20041=* -exprs(#20041,103,#20039,0,"M") -#20042=@"loc,{#10000},8,12,8,12" -locations_default(#20042,#10000,8,12,8,12) -hasLocation(#20041,#20042) -enclosingStmt(#20041,#20039) -exprContainers(#20041,#20003) -literals("M","M",#20041) -typebind(#20041,#20009) -namespacebind(#20041,#20008) -#20043=* -lines(#20043,#20001,"declare module ""X"" {"," -") -#20044=@"loc,{#10000},1,1,1,20" -locations_default(#20044,#10000,1,1,1,20) -hasLocation(#20043,#20044) -#20045=* -lines(#20045,#20001," module M {"," -") -#20046=@"loc,{#10000},2,1,2,12" -locations_default(#20046,#10000,2,1,2,12) -hasLocation(#20045,#20046) -indentation(#10000,2," ",2) -#20047=* -lines(#20047,#20001," export interface I {}"," -") -#20048=@"loc,{#10000},3,1,3,25" -locations_default(#20048,#10000,3,1,3,25) -hasLocation(#20047,#20048) -indentation(#10000,3," ",4) -#20049=* -lines(#20049,#20001," }"," -") -#20050=@"loc,{#10000},4,1,4,3" -locations_default(#20050,#10000,4,1,4,3) -hasLocation(#20049,#20050) -indentation(#10000,4," ",2) -#20051=* -lines(#20051,#20001," interface M {"," -") -#20052=@"loc,{#10000},5,1,5,15" -locations_default(#20052,#10000,5,1,5,15) -hasLocation(#20051,#20052) -indentation(#10000,5," ",2) -#20053=* -lines(#20053,#20001," method(): M.I;"," -") -#20054=@"loc,{#10000},6,1,6,18" -locations_default(#20054,#10000,6,1,6,18) -hasLocation(#20053,#20054) -indentation(#10000,6," ",4) -#20055=* -lines(#20055,#20001," }"," -") -#20056=@"loc,{#10000},7,1,7,3" -locations_default(#20056,#10000,7,1,7,3) -hasLocation(#20055,#20056) -indentation(#10000,7," ",2) -#20057=* -lines(#20057,#20001," export = M;"," -") -#20058=@"loc,{#10000},8,1,8,13" -locations_default(#20058,#10000,8,1,8,13) -hasLocation(#20057,#20058) -indentation(#10000,8," ",2) -#20059=* -lines(#20059,#20001,"}"," -") -#20060=@"loc,{#10000},9,1,9,1" -locations_default(#20060,#10000,9,1,9,1) -hasLocation(#20059,#20060) -numlines(#20001,9,9,0) -#20061=* -tokeninfo(#20061,7,#20001,0,"declare") -#20062=@"loc,{#10000},1,1,1,7" -locations_default(#20062,#10000,1,1,1,7) -hasLocation(#20061,#20062) -#20063=* -tokeninfo(#20063,7,#20001,1,"module") -#20064=@"loc,{#10000},1,9,1,14" -locations_default(#20064,#10000,1,9,1,14) -hasLocation(#20063,#20064) -#20065=* -tokeninfo(#20065,4,#20001,2,"""X""") -hasLocation(#20065,#20006) +tokeninfo(#20030,6,#20001,5,"M") +#20031=@"loc,{#10000},2,10,2,10" +locations_default(#20031,#10000,2,10,2,10) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,6,"{") +#20033=@"loc,{#10000},2,12,2,12" +locations_default(#20033,#10000,2,12,2,12) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,7,#20001,7,"export") +#20035=@"loc,{#10000},3,5,3,10" +locations_default(#20035,#10000,3,5,3,10) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,7,#20001,8,"interface") +#20037=@"loc,{#10000},3,12,3,20" +locations_default(#20037,#10000,3,12,3,20) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,6,#20001,9,"I") +#20039=@"loc,{#10000},3,22,3,22" +locations_default(#20039,#10000,3,22,3,22) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,10,"{") +#20041=@"loc,{#10000},3,24,3,24" +locations_default(#20041,#10000,3,24,3,24) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,11,"}") +#20043=@"loc,{#10000},3,25,3,25" +locations_default(#20043,#10000,3,25,3,25) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,12,"}") +#20045=@"loc,{#10000},4,3,4,3" +locations_default(#20045,#10000,4,3,4,3) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,7,#20001,13,"interface") +#20047=@"loc,{#10000},5,3,5,11" +locations_default(#20047,#10000,5,3,5,11) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,6,#20001,14,"M") +#20049=@"loc,{#10000},5,13,5,13" +locations_default(#20049,#10000,5,13,5,13) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,15,"{") +#20051=@"loc,{#10000},5,15,5,15" +locations_default(#20051,#10000,5,15,5,15) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,6,#20001,16,"method") +#20053=@"loc,{#10000},6,5,6,10" +locations_default(#20053,#10000,6,5,6,10) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,8,#20001,17,"(") +#20055=@"loc,{#10000},6,11,6,11" +locations_default(#20055,#10000,6,11,6,11) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,8,#20001,18,")") +#20057=@"loc,{#10000},6,12,6,12" +locations_default(#20057,#10000,6,12,6,12) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,8,#20001,19,":") +#20059=@"loc,{#10000},6,13,6,13" +locations_default(#20059,#10000,6,13,6,13) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,6,#20001,20,"M") +#20061=@"loc,{#10000},6,15,6,15" +locations_default(#20061,#10000,6,15,6,15) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,8,#20001,21,".") +#20063=@"loc,{#10000},6,16,6,16" +locations_default(#20063,#10000,6,16,6,16) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,6,#20001,22,"I") +#20065=@"loc,{#10000},6,17,6,17" +locations_default(#20065,#10000,6,17,6,17) +hasLocation(#20064,#20065) #20066=* -tokeninfo(#20066,8,#20001,3,"{") -#20067=@"loc,{#10000},1,20,1,20" -locations_default(#20067,#10000,1,20,1,20) +tokeninfo(#20066,8,#20001,23,";") +#20067=@"loc,{#10000},6,18,6,18" +locations_default(#20067,#10000,6,18,6,18) hasLocation(#20066,#20067) #20068=* -tokeninfo(#20068,7,#20001,4,"module") -#20069=@"loc,{#10000},2,3,2,8" -locations_default(#20069,#10000,2,3,2,8) +tokeninfo(#20068,8,#20001,24,"}") +#20069=@"loc,{#10000},7,3,7,3" +locations_default(#20069,#10000,7,3,7,3) hasLocation(#20068,#20069) #20070=* -tokeninfo(#20070,6,#20001,5,"M") -hasLocation(#20070,#20013) -#20071=* -tokeninfo(#20071,8,#20001,6,"{") -#20072=@"loc,{#10000},2,12,2,12" -locations_default(#20072,#10000,2,12,2,12) -hasLocation(#20071,#20072) -#20073=* -tokeninfo(#20073,7,#20001,7,"export") -#20074=@"loc,{#10000},3,5,3,10" -locations_default(#20074,#10000,3,5,3,10) -hasLocation(#20073,#20074) -#20075=* -tokeninfo(#20075,7,#20001,8,"interface") -#20076=@"loc,{#10000},3,12,3,20" -locations_default(#20076,#10000,3,12,3,20) -hasLocation(#20075,#20076) -#20077=* -tokeninfo(#20077,6,#20001,9,"I") -hasLocation(#20077,#20021) +tokeninfo(#20070,7,#20001,25,"export") +#20071=@"loc,{#10000},8,3,8,8" +locations_default(#20071,#10000,8,3,8,8) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,8,#20001,26,"=") +#20073=@"loc,{#10000},8,10,8,10" +locations_default(#20073,#10000,8,10,8,10) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,6,#20001,27,"M") +#20075=@"loc,{#10000},8,12,8,12" +locations_default(#20075,#10000,8,12,8,12) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,8,#20001,28,";") +#20077=@"loc,{#10000},8,13,8,13" +locations_default(#20077,#10000,8,13,8,13) +hasLocation(#20076,#20077) #20078=* -tokeninfo(#20078,8,#20001,10,"{") -#20079=@"loc,{#10000},3,24,3,24" -locations_default(#20079,#10000,3,24,3,24) -hasLocation(#20078,#20079) -#20080=* -tokeninfo(#20080,8,#20001,11,"}") -#20081=@"loc,{#10000},3,25,3,25" -locations_default(#20081,#10000,3,25,3,25) -hasLocation(#20080,#20081) +tokeninfo(#20078,8,#20001,29,"}") +hasLocation(#20078,#20019) +#20079=* +tokeninfo(#20079,0,#20001,30,"") +#20080=@"loc,{#10000},10,1,10,0" +locations_default(#20080,#10000,10,1,10,0) +hasLocation(#20079,#20080) +toplevels(#20001,0) +#20081=@"loc,{#10000},1,1,10,0" +locations_default(#20081,#10000,1,1,10,0) +hasLocation(#20001,#20081) #20082=* -tokeninfo(#20082,8,#20001,12,"}") -#20083=@"loc,{#10000},4,3,4,3" -locations_default(#20083,#10000,4,3,4,3) +stmts(#20082,37,#20001,0,"declare ... = M;\n}") +#20083=@"loc,{#10000},1,1,9,1" +locations_default(#20083,#10000,1,1,9,1) hasLocation(#20082,#20083) +stmtContainers(#20082,#20001) +hasDeclareKeyword(#20082) #20084=* -tokeninfo(#20084,7,#20001,13,"interface") -#20085=@"loc,{#10000},5,3,5,11" -locations_default(#20085,#10000,5,3,5,11) -hasLocation(#20084,#20085) -#20086=* -tokeninfo(#20086,6,#20001,14,"M") -hasLocation(#20086,#20025) -#20087=* -tokeninfo(#20087,8,#20001,15,"{") -#20088=@"loc,{#10000},5,15,5,15" -locations_default(#20088,#10000,5,15,5,15) -hasLocation(#20087,#20088) -#20089=* -tokeninfo(#20089,6,#20001,16,"method") -hasLocation(#20089,#20029) +exprs(#20084,4,#20082,-1,"""X""") +hasLocation(#20084,#20025) +enclosingStmt(#20084,#20082) +exprContainers(#20084,#20001) +literals("X","""X""",#20084) +#20085=* +scopes(#20085,15) +scopenodes(#20082,#20085) +scopenesting(#20085,#20000) +#20086=@"local_namespace_name;{M};{#20085}" +local_namespace_names(#20086,"M",#20085) +#20087=@"local_type_name;{M};{#20085}" +local_type_names(#20087,"M",#20085) +#20088=* +stmts(#20088,31,#20082,0,"module ... {}\n }") +#20089=@"loc,{#10000},2,3,4,3" +locations_default(#20089,#10000,2,3,4,3) +hasLocation(#20088,#20089) +stmtContainers(#20088,#20082) #20090=* -tokeninfo(#20090,8,#20001,17,"(") -#20091=@"loc,{#10000},6,11,6,11" -locations_default(#20091,#10000,6,11,6,11) -hasLocation(#20090,#20091) -#20092=* -tokeninfo(#20092,8,#20001,18,")") -#20093=@"loc,{#10000},6,12,6,12" -locations_default(#20093,#10000,6,12,6,12) -hasLocation(#20092,#20093) -#20094=* -tokeninfo(#20094,8,#20001,19,":") -#20095=@"loc,{#10000},6,13,6,13" -locations_default(#20095,#10000,6,13,6,13) -hasLocation(#20094,#20095) -#20096=* -tokeninfo(#20096,6,#20001,20,"M") -hasLocation(#20096,#20036) +exprs(#20090,78,#20088,-1,"M") +hasLocation(#20090,#20031) +enclosingStmt(#20090,#20088) +exprContainers(#20090,#20082) +literals("M","M",#20090) +namespacedecl(#20090,#20086) +#20091=* +scopes(#20091,9) +scopenodes(#20088,#20091) +scopenesting(#20091,#20085) +#20092=@"local_type_name;{I};{#20091}" +local_type_names(#20092,"I",#20091) +#20093=* +stmts(#20093,30,#20088,0,"export ... ce I {}") +#20094=@"loc,{#10000},3,5,3,25" +locations_default(#20094,#10000,3,5,3,25) +hasLocation(#20093,#20094) +stmtContainers(#20093,#20088) +#20095=* +stmts(#20095,34,#20093,-1,"interface I {}") +#20096=@"loc,{#10000},3,12,3,25" +locations_default(#20096,#10000,3,12,3,25) +hasLocation(#20095,#20096) +stmtContainers(#20095,#20088) #20097=* -tokeninfo(#20097,8,#20001,21,".") -#20098=@"loc,{#10000},6,16,6,16" -locations_default(#20098,#10000,6,16,6,16) -hasLocation(#20097,#20098) -#20099=* -tokeninfo(#20099,6,#20001,22,"I") -hasLocation(#20099,#20038) +typeexprs(#20097,1,#20095,0,"I") +hasLocation(#20097,#20039) +enclosingStmt(#20097,#20095) +exprContainers(#20097,#20088) +literals("I","I",#20097) +typedecl(#20097,#20092) +#20098=* +stmts(#20098,34,#20082,1,"interfa ... .I;\n }") +#20099=@"loc,{#10000},5,3,7,3" +locations_default(#20099,#10000,5,3,7,3) +hasLocation(#20098,#20099) +stmtContainers(#20098,#20082) #20100=* -tokeninfo(#20100,8,#20001,23,";") -#20101=@"loc,{#10000},6,18,6,18" -locations_default(#20101,#10000,6,18,6,18) -hasLocation(#20100,#20101) -#20102=* -tokeninfo(#20102,8,#20001,24,"}") -#20103=@"loc,{#10000},7,3,7,3" -locations_default(#20103,#10000,7,3,7,3) -hasLocation(#20102,#20103) +typeexprs(#20100,1,#20098,0,"M") +hasLocation(#20100,#20049) +enclosingStmt(#20100,#20098) +exprContainers(#20100,#20082) +literals("M","M",#20100) +typedecl(#20100,#20087) +#20101=* +properties(#20101,#20098,2,0,"method(): M.I;") +#20102=@"loc,{#10000},6,5,6,18" +locations_default(#20102,#10000,6,5,6,18) +hasLocation(#20101,#20102) +#20103=* +exprs(#20103,0,#20101,0,"method") +hasLocation(#20103,#20053) +enclosingStmt(#20103,#20098) +exprContainers(#20103,#20082) +literals("method","method",#20103) #20104=* -tokeninfo(#20104,7,#20001,25,"export") -#20105=@"loc,{#10000},8,3,8,8" -locations_default(#20105,#10000,8,3,8,8) -hasLocation(#20104,#20105) -#20106=* -tokeninfo(#20106,8,#20001,26,"=") -#20107=@"loc,{#10000},8,10,8,10" -locations_default(#20107,#10000,8,10,8,10) -hasLocation(#20106,#20107) -#20108=* -tokeninfo(#20108,6,#20001,27,"M") -hasLocation(#20108,#20042) +exprs(#20104,9,#20101,1,"method(): M.I;") +hasLocation(#20104,#20102) +enclosingStmt(#20104,#20098) +exprContainers(#20104,#20082) +#20105=* +scopes(#20105,1) +scopenodes(#20104,#20105) +scopenesting(#20105,#20085) +#20106=@"var;{arguments};{#20105}" +variables(#20106,"arguments",#20105) +isArgumentsObject(#20106) +#20107=* +typeexprs(#20107,13,#20104,-3,"M.I") +#20108=@"loc,{#10000},6,15,6,17" +locations_default(#20108,#10000,6,15,6,17) +hasLocation(#20107,#20108) +exprContainers(#20107,#20104) #20109=* -tokeninfo(#20109,8,#20001,28,";") -#20110=@"loc,{#10000},8,13,8,13" -locations_default(#20110,#10000,8,13,8,13) -hasLocation(#20109,#20110) +typeexprs(#20109,25,#20107,0,"M") +hasLocation(#20109,#20061) +exprContainers(#20109,#20104) +literals("M","M",#20109) +namespacebind(#20109,#20086) +#20110=* +typeexprs(#20110,15,#20107,1,"I") +hasLocation(#20110,#20065) +exprContainers(#20110,#20104) +literals("I","I",#20110) +isMethod(#20101) +isAbstractMember(#20101) #20111=* -tokeninfo(#20111,8,#20001,29,"}") -hasLocation(#20111,#20060) -#20112=* -tokeninfo(#20112,0,#20001,30,"") -#20113=@"loc,{#10000},10,1,10,0" -locations_default(#20113,#10000,10,1,10,0) -hasLocation(#20112,#20113) +stmts(#20111,33,#20082,2,"export = M;") +#20112=@"loc,{#10000},8,3,8,13" +locations_default(#20112,#10000,8,3,8,13) +hasLocation(#20111,#20112) +stmtContainers(#20111,#20082) +#20113=* +exprs(#20113,103,#20111,0,"M") +hasLocation(#20113,#20075) +enclosingStmt(#20113,#20111) +exprContainers(#20113,#20082) +literals("M","M",#20113) +typebind(#20113,#20087) +namespacebind(#20113,#20086) #20114=* entry_cfg_node(#20114,#20001) #20115=@"loc,{#10000},1,1,1,0" @@ -364,8 +363,8 @@ locations_default(#20115,#10000,1,1,1,0) hasLocation(#20114,#20115) #20116=* exit_cfg_node(#20116,#20001) -hasLocation(#20116,#20113) -successor(#20003,#20116) -successor(#20114,#20003) +hasLocation(#20116,#20080) +successor(#20082,#20116) +successor(#20114,#20082) numlines(#10000,9,9,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/functiondecorators.ts.trap b/javascript/extractor/tests/ts/output/trap/functiondecorators.ts.trap index 7d3e1fd7ae9..0406d1adc60 100644 --- a/javascript/extractor/tests/ts/output/trap/functiondecorators.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/functiondecorators.ts.trap @@ -9,1186 +9,1178 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,16,0" -locations_default(#20002,#10000,1,1,16,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,18,#20001,0,"declare var A : any;") -#20006=@"loc,{#10000},1,1,1,20" -locations_default(#20006,#10000,1,1,1,20) -hasLocation(#20005,#20006) -stmtContainers(#20005,#20001) -hasDeclareKeyword(#20005) -#20007=* -exprs(#20007,64,#20005,0,"A : any") -#20008=@"loc,{#10000},1,13,1,19" -locations_default(#20008,#10000,1,13,1,19) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20005) -exprContainers(#20007,#20001) -#20009=* -exprs(#20009,78,#20007,0,"A") -#20010=@"loc,{#10000},1,13,1,13" -locations_default(#20010,#10000,1,13,1,13) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20005) -exprContainers(#20009,#20001) -literals("A","A",#20009) -#20011=@"var;{A};{#20000}" -variables(#20011,"A",#20000) -decl(#20009,#20011) +#20002=* +lines(#20002,#20001,"declare var A : any;"," +") +#20003=@"loc,{#10000},1,1,1,20" +locations_default(#20003,#10000,1,1,1,20) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"declare var B : any;"," +") +#20005=@"loc,{#10000},2,1,2,20" +locations_default(#20005,#10000,2,1,2,20) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"declare var C : any;"," +") +#20007=@"loc,{#10000},3,1,3,20" +locations_default(#20007,#10000,3,1,3,20) +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,"class C {"," +") +#20011=@"loc,{#10000},5,1,5,9" +locations_default(#20011,#10000,5,1,5,9) +hasLocation(#20010,#20011) #20012=* -typeexprs(#20012,2,#20007,2,"any") -#20013=@"loc,{#10000},1,17,1,19" -locations_default(#20013,#10000,1,17,1,19) +lines(#20012,#20001," m1(none) {}"," +") +#20013=@"loc,{#10000},6,1,6,13" +locations_default(#20013,#10000,6,1,6,13) hasLocation(#20012,#20013) -enclosingStmt(#20012,#20005) -exprContainers(#20012,#20001) -literals("any","any",#20012) +indentation(#10000,6," ",2) #20014=* -stmts(#20014,18,#20001,1,"declare var B : any;") -#20015=@"loc,{#10000},2,1,2,20" -locations_default(#20015,#10000,2,1,2,20) +lines(#20014,#20001," m2(@A a) {}"," +") +#20015=@"loc,{#10000},7,1,7,13" +locations_default(#20015,#10000,7,1,7,13) hasLocation(#20014,#20015) -stmtContainers(#20014,#20001) -hasDeclareKeyword(#20014) +indentation(#10000,7," ",2) #20016=* -exprs(#20016,64,#20014,0,"B : any") -#20017=@"loc,{#10000},2,13,2,19" -locations_default(#20017,#10000,2,13,2,19) +lines(#20016,#20001," m3(@A @B ab) {}"," +") +#20017=@"loc,{#10000},8,1,8,17" +locations_default(#20017,#10000,8,1,8,17) hasLocation(#20016,#20017) -enclosingStmt(#20016,#20014) -exprContainers(#20016,#20001) +indentation(#10000,8," ",2) #20018=* -exprs(#20018,78,#20016,0,"B") -#20019=@"loc,{#10000},2,13,2,13" -locations_default(#20019,#10000,2,13,2,13) +lines(#20018,#20001," "," +") +#20019=@"loc,{#10000},9,1,9,2" +locations_default(#20019,#10000,9,1,9,2) hasLocation(#20018,#20019) -enclosingStmt(#20018,#20014) -exprContainers(#20018,#20001) -literals("B","B",#20018) -#20020=@"var;{B};{#20000}" -variables(#20020,"B",#20000) -decl(#20018,#20020) -#20021=* -typeexprs(#20021,2,#20016,2,"any") -#20022=@"loc,{#10000},2,17,2,19" -locations_default(#20022,#10000,2,17,2,19) -hasLocation(#20021,#20022) -enclosingStmt(#20021,#20014) -exprContainers(#20021,#20001) -literals("any","any",#20021) -#20023=* -stmts(#20023,18,#20001,2,"declare var C : any;") -#20024=@"loc,{#10000},3,1,3,20" -locations_default(#20024,#10000,3,1,3,20) -hasLocation(#20023,#20024) -stmtContainers(#20023,#20001) -hasDeclareKeyword(#20023) -#20025=* -exprs(#20025,64,#20023,0,"C : any") -#20026=@"loc,{#10000},3,13,3,19" -locations_default(#20026,#10000,3,13,3,19) -hasLocation(#20025,#20026) -enclosingStmt(#20025,#20023) -exprContainers(#20025,#20001) -#20027=* -exprs(#20027,78,#20025,0,"C") -#20028=@"loc,{#10000},3,13,3,13" -locations_default(#20028,#10000,3,13,3,13) -hasLocation(#20027,#20028) -enclosingStmt(#20027,#20023) -exprContainers(#20027,#20001) -literals("C","C",#20027) -decl(#20027,#20003) -#20029=* -typeexprs(#20029,2,#20025,2,"any") -#20030=@"loc,{#10000},3,17,3,19" -locations_default(#20030,#10000,3,17,3,19) -hasLocation(#20029,#20030) -enclosingStmt(#20029,#20023) -exprContainers(#20029,#20001) -literals("any","any",#20029) -#20031=* -stmts(#20031,26,#20001,3,"class C ... c) {}\n}") -#20032=@"loc,{#10000},5,1,15,1" -locations_default(#20032,#10000,5,1,15,1) -hasLocation(#20031,#20032) -stmtContainers(#20031,#20001) -#20033=* -exprs(#20033,78,#20031,0,"C") -#20034=@"loc,{#10000},5,7,5,7" -locations_default(#20034,#10000,5,7,5,7) -hasLocation(#20033,#20034) -enclosingStmt(#20033,#20031) -exprContainers(#20033,#20001) -literals("C","C",#20033) -decl(#20033,#20003) -typedecl(#20033,#20004) -#20035=* -scopes(#20035,10) -scopenodes(#20031,#20035) -scopenesting(#20035,#20000) +#20020=* +lines(#20020,#20001," m4(none, @A a) {}"," +") +#20021=@"loc,{#10000},10,1,10,19" +locations_default(#20021,#10000,10,1,10,19) +hasLocation(#20020,#20021) +indentation(#10000,10," ",2) +#20022=* +lines(#20022,#20001," m5(none, @A @B ab) {}"," +") +#20023=@"loc,{#10000},11,1,11,23" +locations_default(#20023,#10000,11,1,11,23) +hasLocation(#20022,#20023) +indentation(#10000,11," ",2) +#20024=* +lines(#20024,#20001," "," +") +#20025=@"loc,{#10000},12,1,12,2" +locations_default(#20025,#10000,12,1,12,2) +hasLocation(#20024,#20025) +#20026=* +lines(#20026,#20001," m6(@A a, @B b) {}"," +") +#20027=@"loc,{#10000},13,1,13,19" +locations_default(#20027,#10000,13,1,13,19) +hasLocation(#20026,#20027) +indentation(#10000,13," ",2) +#20028=* +lines(#20028,#20001," m7(@A a, @B @C bc) {}"," +") +#20029=@"loc,{#10000},14,1,14,23" +locations_default(#20029,#10000,14,1,14,23) +hasLocation(#20028,#20029) +indentation(#10000,14," ",2) +#20030=* +lines(#20030,#20001,"}"," +") +#20031=@"loc,{#10000},15,1,15,1" +locations_default(#20031,#10000,15,1,15,1) +hasLocation(#20030,#20031) +numlines(#20001,15,12,0) +#20032=* +tokeninfo(#20032,7,#20001,0,"declare") +#20033=@"loc,{#10000},1,1,1,7" +locations_default(#20033,#10000,1,1,1,7) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,7,#20001,1,"var") +#20035=@"loc,{#10000},1,9,1,11" +locations_default(#20035,#10000,1,9,1,11) +hasLocation(#20034,#20035) #20036=* -properties(#20036,#20031,2,0,"m1(none) {}") -#20037=@"loc,{#10000},6,3,6,13" -locations_default(#20037,#10000,6,3,6,13) +tokeninfo(#20036,6,#20001,2,"A") +#20037=@"loc,{#10000},1,13,1,13" +locations_default(#20037,#10000,1,13,1,13) hasLocation(#20036,#20037) #20038=* -exprs(#20038,0,#20036,0,"m1") -#20039=@"loc,{#10000},6,3,6,4" -locations_default(#20039,#10000,6,3,6,4) +tokeninfo(#20038,8,#20001,3,":") +#20039=@"loc,{#10000},1,15,1,15" +locations_default(#20039,#10000,1,15,1,15) hasLocation(#20038,#20039) -enclosingStmt(#20038,#20031) -exprContainers(#20038,#20001) -literals("m1","m1",#20038) #20040=* -exprs(#20040,9,#20036,1,"m1(none) {}") -hasLocation(#20040,#20037) -enclosingStmt(#20040,#20031) -exprContainers(#20040,#20001) -#20041=* -scopes(#20041,1) -scopenodes(#20040,#20041) -scopenesting(#20041,#20035) -#20042=@"var;{none};{#20041}" -variables(#20042,"none",#20041) -#20043=* -exprs(#20043,78,#20040,0,"none") -#20044=@"loc,{#10000},6,6,6,9" -locations_default(#20044,#10000,6,6,6,9) -hasLocation(#20043,#20044) -exprContainers(#20043,#20040) -literals("none","none",#20043) -decl(#20043,#20042) -#20045=@"var;{arguments};{#20041}" -variables(#20045,"arguments",#20041) -isArgumentsObject(#20045) +tokeninfo(#20040,7,#20001,4,"any") +#20041=@"loc,{#10000},1,17,1,19" +locations_default(#20041,#10000,1,17,1,19) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,5,";") +#20043=@"loc,{#10000},1,20,1,20" +locations_default(#20043,#10000,1,20,1,20) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,7,#20001,6,"declare") +#20045=@"loc,{#10000},2,1,2,7" +locations_default(#20045,#10000,2,1,2,7) +hasLocation(#20044,#20045) #20046=* -stmts(#20046,1,#20040,-2,"{}") -#20047=@"loc,{#10000},6,12,6,13" -locations_default(#20047,#10000,6,12,6,13) +tokeninfo(#20046,7,#20001,7,"var") +#20047=@"loc,{#10000},2,9,2,11" +locations_default(#20047,#10000,2,9,2,11) hasLocation(#20046,#20047) -stmtContainers(#20046,#20040) -numlines(#20040,1,1,0) -isMethod(#20036) #20048=* -properties(#20048,#20031,3,0,"m2(@A a) {}") -#20049=@"loc,{#10000},7,3,7,13" -locations_default(#20049,#10000,7,3,7,13) +tokeninfo(#20048,6,#20001,8,"B") +#20049=@"loc,{#10000},2,13,2,13" +locations_default(#20049,#10000,2,13,2,13) hasLocation(#20048,#20049) #20050=* -exprs(#20050,0,#20048,0,"m2") -#20051=@"loc,{#10000},7,3,7,4" -locations_default(#20051,#10000,7,3,7,4) +tokeninfo(#20050,8,#20001,9,":") +#20051=@"loc,{#10000},2,15,2,15" +locations_default(#20051,#10000,2,15,2,15) hasLocation(#20050,#20051) -enclosingStmt(#20050,#20031) -exprContainers(#20050,#20001) -literals("m2","m2",#20050) #20052=* -exprs(#20052,9,#20048,1,"m2(@A a) {}") -hasLocation(#20052,#20049) -enclosingStmt(#20052,#20031) -exprContainers(#20052,#20001) -#20053=* -scopes(#20053,1) -scopenodes(#20052,#20053) -scopenesting(#20053,#20035) -#20054=@"var;{a};{#20053}" -variables(#20054,"a",#20053) -#20055=* -exprs(#20055,78,#20052,0,"a") -#20056=@"loc,{#10000},7,9,7,9" -locations_default(#20056,#10000,7,9,7,9) -hasLocation(#20055,#20056) -exprContainers(#20055,#20052) -literals("a","a",#20055) -decl(#20055,#20054) -#20057=@"var;{arguments};{#20053}" -variables(#20057,"arguments",#20053) -isArgumentsObject(#20057) +tokeninfo(#20052,7,#20001,10,"any") +#20053=@"loc,{#10000},2,17,2,19" +locations_default(#20053,#10000,2,17,2,19) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,8,#20001,11,";") +#20055=@"loc,{#10000},2,20,2,20" +locations_default(#20055,#10000,2,20,2,20) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,7,#20001,12,"declare") +#20057=@"loc,{#10000},3,1,3,7" +locations_default(#20057,#10000,3,1,3,7) +hasLocation(#20056,#20057) #20058=* -exprs(#20058,104,#20052,-8,"@A") -#20059=@"loc,{#10000},7,6,7,7" -locations_default(#20059,#10000,7,6,7,7) +tokeninfo(#20058,7,#20001,13,"var") +#20059=@"loc,{#10000},3,9,3,11" +locations_default(#20059,#10000,3,9,3,11) hasLocation(#20058,#20059) -exprContainers(#20058,#20052) #20060=* -exprs(#20060,94,#20058,0,"@A") -hasLocation(#20060,#20059) -exprContainers(#20060,#20052) -#20061=* -exprs(#20061,79,#20060,0,"A") -#20062=@"loc,{#10000},7,7,7,7" -locations_default(#20062,#10000,7,7,7,7) -hasLocation(#20061,#20062) -exprContainers(#20061,#20052) -literals("A","A",#20061) -bind(#20061,#20011) -#20063=* -stmts(#20063,1,#20052,-2,"{}") -#20064=@"loc,{#10000},7,12,7,13" -locations_default(#20064,#10000,7,12,7,13) -hasLocation(#20063,#20064) -stmtContainers(#20063,#20052) -numlines(#20052,1,1,0) -isMethod(#20048) -#20065=* -properties(#20065,#20031,4,0,"m3(@A @B ab) {}") -#20066=@"loc,{#10000},8,3,8,17" -locations_default(#20066,#10000,8,3,8,17) -hasLocation(#20065,#20066) -#20067=* -exprs(#20067,0,#20065,0,"m3") -#20068=@"loc,{#10000},8,3,8,4" -locations_default(#20068,#10000,8,3,8,4) -hasLocation(#20067,#20068) -enclosingStmt(#20067,#20031) -exprContainers(#20067,#20001) -literals("m3","m3",#20067) -#20069=* -exprs(#20069,9,#20065,1,"m3(@A @B ab) {}") -hasLocation(#20069,#20066) -enclosingStmt(#20069,#20031) -exprContainers(#20069,#20001) +tokeninfo(#20060,6,#20001,14,"C") +#20061=@"loc,{#10000},3,13,3,13" +locations_default(#20061,#10000,3,13,3,13) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,8,#20001,15,":") +#20063=@"loc,{#10000},3,15,3,15" +locations_default(#20063,#10000,3,15,3,15) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,7,#20001,16,"any") +#20065=@"loc,{#10000},3,17,3,19" +locations_default(#20065,#10000,3,17,3,19) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,8,#20001,17,";") +#20067=@"loc,{#10000},3,20,3,20" +locations_default(#20067,#10000,3,20,3,20) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,7,#20001,18,"class") +#20069=@"loc,{#10000},5,1,5,5" +locations_default(#20069,#10000,5,1,5,5) +hasLocation(#20068,#20069) #20070=* -scopes(#20070,1) -scopenodes(#20069,#20070) -scopenesting(#20070,#20035) -#20071=@"var;{ab};{#20070}" -variables(#20071,"ab",#20070) +tokeninfo(#20070,6,#20001,19,"C") +#20071=@"loc,{#10000},5,7,5,7" +locations_default(#20071,#10000,5,7,5,7) +hasLocation(#20070,#20071) #20072=* -exprs(#20072,78,#20069,0,"ab") -#20073=@"loc,{#10000},8,12,8,13" -locations_default(#20073,#10000,8,12,8,13) +tokeninfo(#20072,8,#20001,20,"{") +#20073=@"loc,{#10000},5,9,5,9" +locations_default(#20073,#10000,5,9,5,9) hasLocation(#20072,#20073) -exprContainers(#20072,#20069) -literals("ab","ab",#20072) -decl(#20072,#20071) -#20074=@"var;{arguments};{#20070}" -variables(#20074,"arguments",#20070) -isArgumentsObject(#20074) -#20075=* -exprs(#20075,104,#20069,-8,"@A @B") -#20076=@"loc,{#10000},8,6,8,10" -locations_default(#20076,#10000,8,6,8,10) -hasLocation(#20075,#20076) -exprContainers(#20075,#20069) -#20077=* -exprs(#20077,94,#20075,0,"@A") -#20078=@"loc,{#10000},8,6,8,7" -locations_default(#20078,#10000,8,6,8,7) -hasLocation(#20077,#20078) -exprContainers(#20077,#20069) -#20079=* -exprs(#20079,79,#20077,0,"A") -#20080=@"loc,{#10000},8,7,8,7" -locations_default(#20080,#10000,8,7,8,7) -hasLocation(#20079,#20080) -exprContainers(#20079,#20069) -literals("A","A",#20079) -bind(#20079,#20011) -#20081=* -exprs(#20081,94,#20075,1,"@B") -#20082=@"loc,{#10000},8,9,8,10" -locations_default(#20082,#10000,8,9,8,10) -hasLocation(#20081,#20082) -exprContainers(#20081,#20069) -#20083=* -exprs(#20083,79,#20081,0,"B") -#20084=@"loc,{#10000},8,10,8,10" -locations_default(#20084,#10000,8,10,8,10) -hasLocation(#20083,#20084) -exprContainers(#20083,#20069) -literals("B","B",#20083) -bind(#20083,#20020) -#20085=* -stmts(#20085,1,#20069,-2,"{}") -#20086=@"loc,{#10000},8,16,8,17" -locations_default(#20086,#10000,8,16,8,17) -hasLocation(#20085,#20086) -stmtContainers(#20085,#20069) -numlines(#20069,1,1,0) -isMethod(#20065) -#20087=* -properties(#20087,#20031,5,0,"m4(none, @A a) {}") -#20088=@"loc,{#10000},10,3,10,19" -locations_default(#20088,#10000,10,3,10,19) -hasLocation(#20087,#20088) -#20089=* -exprs(#20089,0,#20087,0,"m4") -#20090=@"loc,{#10000},10,3,10,4" -locations_default(#20090,#10000,10,3,10,4) -hasLocation(#20089,#20090) -enclosingStmt(#20089,#20031) -exprContainers(#20089,#20001) -literals("m4","m4",#20089) -#20091=* -exprs(#20091,9,#20087,1,"m4(none, @A a) {}") -hasLocation(#20091,#20088) -enclosingStmt(#20091,#20031) -exprContainers(#20091,#20001) +#20074=* +tokeninfo(#20074,6,#20001,21,"m1") +#20075=@"loc,{#10000},6,3,6,4" +locations_default(#20075,#10000,6,3,6,4) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,8,#20001,22,"(") +#20077=@"loc,{#10000},6,5,6,5" +locations_default(#20077,#10000,6,5,6,5) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,6,#20001,23,"none") +#20079=@"loc,{#10000},6,6,6,9" +locations_default(#20079,#10000,6,6,6,9) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,8,#20001,24,")") +#20081=@"loc,{#10000},6,10,6,10" +locations_default(#20081,#10000,6,10,6,10) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,8,#20001,25,"{") +#20083=@"loc,{#10000},6,12,6,12" +locations_default(#20083,#10000,6,12,6,12) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,8,#20001,26,"}") +#20085=@"loc,{#10000},6,13,6,13" +locations_default(#20085,#10000,6,13,6,13) +hasLocation(#20084,#20085) +#20086=* +tokeninfo(#20086,6,#20001,27,"m2") +#20087=@"loc,{#10000},7,3,7,4" +locations_default(#20087,#10000,7,3,7,4) +hasLocation(#20086,#20087) +#20088=* +tokeninfo(#20088,8,#20001,28,"(") +#20089=@"loc,{#10000},7,5,7,5" +locations_default(#20089,#10000,7,5,7,5) +hasLocation(#20088,#20089) +#20090=* +tokeninfo(#20090,8,#20001,29,"@") +#20091=@"loc,{#10000},7,6,7,6" +locations_default(#20091,#10000,7,6,7,6) +hasLocation(#20090,#20091) #20092=* -scopes(#20092,1) -scopenodes(#20091,#20092) -scopenesting(#20092,#20035) -#20093=@"var;{none};{#20092}" -variables(#20093,"none",#20092) +tokeninfo(#20092,6,#20001,30,"A") +#20093=@"loc,{#10000},7,7,7,7" +locations_default(#20093,#10000,7,7,7,7) +hasLocation(#20092,#20093) #20094=* -exprs(#20094,78,#20091,0,"none") -#20095=@"loc,{#10000},10,6,10,9" -locations_default(#20095,#10000,10,6,10,9) +tokeninfo(#20094,6,#20001,31,"a") +#20095=@"loc,{#10000},7,9,7,9" +locations_default(#20095,#10000,7,9,7,9) hasLocation(#20094,#20095) -exprContainers(#20094,#20091) -literals("none","none",#20094) -decl(#20094,#20093) -#20096=@"var;{a};{#20092}" -variables(#20096,"a",#20092) -#20097=* -exprs(#20097,78,#20091,1,"a") -#20098=@"loc,{#10000},10,15,10,15" -locations_default(#20098,#10000,10,15,10,15) -hasLocation(#20097,#20098) -exprContainers(#20097,#20091) -literals("a","a",#20097) -decl(#20097,#20096) -#20099=@"var;{arguments};{#20092}" -variables(#20099,"arguments",#20092) -isArgumentsObject(#20099) +#20096=* +tokeninfo(#20096,8,#20001,32,")") +#20097=@"loc,{#10000},7,10,7,10" +locations_default(#20097,#10000,7,10,7,10) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,8,#20001,33,"{") +#20099=@"loc,{#10000},7,12,7,12" +locations_default(#20099,#10000,7,12,7,12) +hasLocation(#20098,#20099) #20100=* -exprs(#20100,104,#20091,-12,"@A") -#20101=@"loc,{#10000},10,12,10,13" -locations_default(#20101,#10000,10,12,10,13) +tokeninfo(#20100,8,#20001,34,"}") +#20101=@"loc,{#10000},7,13,7,13" +locations_default(#20101,#10000,7,13,7,13) hasLocation(#20100,#20101) -exprContainers(#20100,#20091) #20102=* -exprs(#20102,94,#20100,0,"@A") -hasLocation(#20102,#20101) -exprContainers(#20102,#20091) -#20103=* -exprs(#20103,79,#20102,0,"A") -#20104=@"loc,{#10000},10,13,10,13" -locations_default(#20104,#10000,10,13,10,13) -hasLocation(#20103,#20104) -exprContainers(#20103,#20091) -literals("A","A",#20103) -bind(#20103,#20011) -#20105=* -stmts(#20105,1,#20091,-2,"{}") -#20106=@"loc,{#10000},10,18,10,19" -locations_default(#20106,#10000,10,18,10,19) -hasLocation(#20105,#20106) -stmtContainers(#20105,#20091) -numlines(#20091,1,1,0) -isMethod(#20087) -#20107=* -properties(#20107,#20031,6,0,"m5(none ... ab) {}") -#20108=@"loc,{#10000},11,3,11,23" -locations_default(#20108,#10000,11,3,11,23) -hasLocation(#20107,#20108) -#20109=* -exprs(#20109,0,#20107,0,"m5") -#20110=@"loc,{#10000},11,3,11,4" -locations_default(#20110,#10000,11,3,11,4) -hasLocation(#20109,#20110) -enclosingStmt(#20109,#20031) -exprContainers(#20109,#20001) -literals("m5","m5",#20109) -#20111=* -exprs(#20111,9,#20107,1,"m5(none ... ab) {}") -hasLocation(#20111,#20108) -enclosingStmt(#20111,#20031) -exprContainers(#20111,#20001) +tokeninfo(#20102,6,#20001,35,"m3") +#20103=@"loc,{#10000},8,3,8,4" +locations_default(#20103,#10000,8,3,8,4) +hasLocation(#20102,#20103) +#20104=* +tokeninfo(#20104,8,#20001,36,"(") +#20105=@"loc,{#10000},8,5,8,5" +locations_default(#20105,#10000,8,5,8,5) +hasLocation(#20104,#20105) +#20106=* +tokeninfo(#20106,8,#20001,37,"@") +#20107=@"loc,{#10000},8,6,8,6" +locations_default(#20107,#10000,8,6,8,6) +hasLocation(#20106,#20107) +#20108=* +tokeninfo(#20108,6,#20001,38,"A") +#20109=@"loc,{#10000},8,7,8,7" +locations_default(#20109,#10000,8,7,8,7) +hasLocation(#20108,#20109) +#20110=* +tokeninfo(#20110,8,#20001,39,"@") +#20111=@"loc,{#10000},8,9,8,9" +locations_default(#20111,#10000,8,9,8,9) +hasLocation(#20110,#20111) #20112=* -scopes(#20112,1) -scopenodes(#20111,#20112) -scopenesting(#20112,#20035) -#20113=@"var;{none};{#20112}" -variables(#20113,"none",#20112) +tokeninfo(#20112,6,#20001,40,"B") +#20113=@"loc,{#10000},8,10,8,10" +locations_default(#20113,#10000,8,10,8,10) +hasLocation(#20112,#20113) #20114=* -exprs(#20114,78,#20111,0,"none") -#20115=@"loc,{#10000},11,6,11,9" -locations_default(#20115,#10000,11,6,11,9) +tokeninfo(#20114,6,#20001,41,"ab") +#20115=@"loc,{#10000},8,12,8,13" +locations_default(#20115,#10000,8,12,8,13) hasLocation(#20114,#20115) -exprContainers(#20114,#20111) -literals("none","none",#20114) -decl(#20114,#20113) -#20116=@"var;{ab};{#20112}" -variables(#20116,"ab",#20112) -#20117=* -exprs(#20117,78,#20111,1,"ab") -#20118=@"loc,{#10000},11,18,11,19" -locations_default(#20118,#10000,11,18,11,19) -hasLocation(#20117,#20118) -exprContainers(#20117,#20111) -literals("ab","ab",#20117) -decl(#20117,#20116) -#20119=@"var;{arguments};{#20112}" -variables(#20119,"arguments",#20112) -isArgumentsObject(#20119) +#20116=* +tokeninfo(#20116,8,#20001,42,")") +#20117=@"loc,{#10000},8,14,8,14" +locations_default(#20117,#10000,8,14,8,14) +hasLocation(#20116,#20117) +#20118=* +tokeninfo(#20118,8,#20001,43,"{") +#20119=@"loc,{#10000},8,16,8,16" +locations_default(#20119,#10000,8,16,8,16) +hasLocation(#20118,#20119) #20120=* -exprs(#20120,104,#20111,-12,"@A @B") -#20121=@"loc,{#10000},11,12,11,16" -locations_default(#20121,#10000,11,12,11,16) +tokeninfo(#20120,8,#20001,44,"}") +#20121=@"loc,{#10000},8,17,8,17" +locations_default(#20121,#10000,8,17,8,17) hasLocation(#20120,#20121) -exprContainers(#20120,#20111) #20122=* -exprs(#20122,94,#20120,0,"@A") -#20123=@"loc,{#10000},11,12,11,13" -locations_default(#20123,#10000,11,12,11,13) +tokeninfo(#20122,6,#20001,45,"m4") +#20123=@"loc,{#10000},10,3,10,4" +locations_default(#20123,#10000,10,3,10,4) hasLocation(#20122,#20123) -exprContainers(#20122,#20111) #20124=* -exprs(#20124,79,#20122,0,"A") -#20125=@"loc,{#10000},11,13,11,13" -locations_default(#20125,#10000,11,13,11,13) +tokeninfo(#20124,8,#20001,46,"(") +#20125=@"loc,{#10000},10,5,10,5" +locations_default(#20125,#10000,10,5,10,5) hasLocation(#20124,#20125) -exprContainers(#20124,#20111) -literals("A","A",#20124) -bind(#20124,#20011) #20126=* -exprs(#20126,94,#20120,1,"@B") -#20127=@"loc,{#10000},11,15,11,16" -locations_default(#20127,#10000,11,15,11,16) +tokeninfo(#20126,6,#20001,47,"none") +#20127=@"loc,{#10000},10,6,10,9" +locations_default(#20127,#10000,10,6,10,9) hasLocation(#20126,#20127) -exprContainers(#20126,#20111) #20128=* -exprs(#20128,79,#20126,0,"B") -#20129=@"loc,{#10000},11,16,11,16" -locations_default(#20129,#10000,11,16,11,16) +tokeninfo(#20128,8,#20001,48,",") +#20129=@"loc,{#10000},10,10,10,10" +locations_default(#20129,#10000,10,10,10,10) hasLocation(#20128,#20129) -exprContainers(#20128,#20111) -literals("B","B",#20128) -bind(#20128,#20020) #20130=* -stmts(#20130,1,#20111,-2,"{}") -#20131=@"loc,{#10000},11,22,11,23" -locations_default(#20131,#10000,11,22,11,23) +tokeninfo(#20130,8,#20001,49,"@") +#20131=@"loc,{#10000},10,12,10,12" +locations_default(#20131,#10000,10,12,10,12) hasLocation(#20130,#20131) -stmtContainers(#20130,#20111) -numlines(#20111,1,1,0) -isMethod(#20107) #20132=* -properties(#20132,#20031,7,0,"m6(@A a, @B b) {}") -#20133=@"loc,{#10000},13,3,13,19" -locations_default(#20133,#10000,13,3,13,19) +tokeninfo(#20132,6,#20001,50,"A") +#20133=@"loc,{#10000},10,13,10,13" +locations_default(#20133,#10000,10,13,10,13) hasLocation(#20132,#20133) #20134=* -exprs(#20134,0,#20132,0,"m6") -#20135=@"loc,{#10000},13,3,13,4" -locations_default(#20135,#10000,13,3,13,4) +tokeninfo(#20134,6,#20001,51,"a") +#20135=@"loc,{#10000},10,15,10,15" +locations_default(#20135,#10000,10,15,10,15) hasLocation(#20134,#20135) -enclosingStmt(#20134,#20031) -exprContainers(#20134,#20001) -literals("m6","m6",#20134) #20136=* -exprs(#20136,9,#20132,1,"m6(@A a, @B b) {}") -hasLocation(#20136,#20133) -enclosingStmt(#20136,#20031) -exprContainers(#20136,#20001) -#20137=* -scopes(#20137,1) -scopenodes(#20136,#20137) -scopenesting(#20137,#20035) -#20138=@"var;{a};{#20137}" -variables(#20138,"a",#20137) -#20139=* -exprs(#20139,78,#20136,0,"a") -#20140=@"loc,{#10000},13,9,13,9" -locations_default(#20140,#10000,13,9,13,9) -hasLocation(#20139,#20140) -exprContainers(#20139,#20136) -literals("a","a",#20139) -decl(#20139,#20138) -#20141=@"var;{b};{#20137}" -variables(#20141,"b",#20137) +tokeninfo(#20136,8,#20001,52,")") +#20137=@"loc,{#10000},10,16,10,16" +locations_default(#20137,#10000,10,16,10,16) +hasLocation(#20136,#20137) +#20138=* +tokeninfo(#20138,8,#20001,53,"{") +#20139=@"loc,{#10000},10,18,10,18" +locations_default(#20139,#10000,10,18,10,18) +hasLocation(#20138,#20139) +#20140=* +tokeninfo(#20140,8,#20001,54,"}") +#20141=@"loc,{#10000},10,19,10,19" +locations_default(#20141,#10000,10,19,10,19) +hasLocation(#20140,#20141) #20142=* -exprs(#20142,78,#20136,1,"b") -#20143=@"loc,{#10000},13,15,13,15" -locations_default(#20143,#10000,13,15,13,15) +tokeninfo(#20142,6,#20001,55,"m5") +#20143=@"loc,{#10000},11,3,11,4" +locations_default(#20143,#10000,11,3,11,4) hasLocation(#20142,#20143) -exprContainers(#20142,#20136) -literals("b","b",#20142) -decl(#20142,#20141) -#20144=@"var;{arguments};{#20137}" -variables(#20144,"arguments",#20137) -isArgumentsObject(#20144) -#20145=* -exprs(#20145,104,#20136,-8,"@A") -#20146=@"loc,{#10000},13,6,13,7" -locations_default(#20146,#10000,13,6,13,7) -hasLocation(#20145,#20146) -exprContainers(#20145,#20136) -#20147=* -exprs(#20147,94,#20145,0,"@A") -hasLocation(#20147,#20146) -exprContainers(#20147,#20136) +#20144=* +tokeninfo(#20144,8,#20001,56,"(") +#20145=@"loc,{#10000},11,5,11,5" +locations_default(#20145,#10000,11,5,11,5) +hasLocation(#20144,#20145) +#20146=* +tokeninfo(#20146,6,#20001,57,"none") +#20147=@"loc,{#10000},11,6,11,9" +locations_default(#20147,#10000,11,6,11,9) +hasLocation(#20146,#20147) #20148=* -exprs(#20148,79,#20147,0,"A") -#20149=@"loc,{#10000},13,7,13,7" -locations_default(#20149,#10000,13,7,13,7) +tokeninfo(#20148,8,#20001,58,",") +#20149=@"loc,{#10000},11,10,11,10" +locations_default(#20149,#10000,11,10,11,10) hasLocation(#20148,#20149) -exprContainers(#20148,#20136) -literals("A","A",#20148) -bind(#20148,#20011) #20150=* -exprs(#20150,104,#20136,-12,"@B") -#20151=@"loc,{#10000},13,12,13,13" -locations_default(#20151,#10000,13,12,13,13) +tokeninfo(#20150,8,#20001,59,"@") +#20151=@"loc,{#10000},11,12,11,12" +locations_default(#20151,#10000,11,12,11,12) hasLocation(#20150,#20151) -exprContainers(#20150,#20136) #20152=* -exprs(#20152,94,#20150,0,"@B") -hasLocation(#20152,#20151) -exprContainers(#20152,#20136) -#20153=* -exprs(#20153,79,#20152,0,"B") -#20154=@"loc,{#10000},13,13,13,13" -locations_default(#20154,#10000,13,13,13,13) -hasLocation(#20153,#20154) -exprContainers(#20153,#20136) -literals("B","B",#20153) -bind(#20153,#20020) -#20155=* -stmts(#20155,1,#20136,-2,"{}") -#20156=@"loc,{#10000},13,18,13,19" -locations_default(#20156,#10000,13,18,13,19) -hasLocation(#20155,#20156) -stmtContainers(#20155,#20136) -numlines(#20136,1,1,0) -isMethod(#20132) -#20157=* -properties(#20157,#20031,8,0,"m7(@A a ... bc) {}") -#20158=@"loc,{#10000},14,3,14,23" -locations_default(#20158,#10000,14,3,14,23) -hasLocation(#20157,#20158) -#20159=* -exprs(#20159,0,#20157,0,"m7") -#20160=@"loc,{#10000},14,3,14,4" -locations_default(#20160,#10000,14,3,14,4) -hasLocation(#20159,#20160) -enclosingStmt(#20159,#20031) -exprContainers(#20159,#20001) -literals("m7","m7",#20159) -#20161=* -exprs(#20161,9,#20157,1,"m7(@A a ... bc) {}") -hasLocation(#20161,#20158) -enclosingStmt(#20161,#20031) -exprContainers(#20161,#20001) +tokeninfo(#20152,6,#20001,60,"A") +#20153=@"loc,{#10000},11,13,11,13" +locations_default(#20153,#10000,11,13,11,13) +hasLocation(#20152,#20153) +#20154=* +tokeninfo(#20154,8,#20001,61,"@") +#20155=@"loc,{#10000},11,15,11,15" +locations_default(#20155,#10000,11,15,11,15) +hasLocation(#20154,#20155) +#20156=* +tokeninfo(#20156,6,#20001,62,"B") +#20157=@"loc,{#10000},11,16,11,16" +locations_default(#20157,#10000,11,16,11,16) +hasLocation(#20156,#20157) +#20158=* +tokeninfo(#20158,6,#20001,63,"ab") +#20159=@"loc,{#10000},11,18,11,19" +locations_default(#20159,#10000,11,18,11,19) +hasLocation(#20158,#20159) +#20160=* +tokeninfo(#20160,8,#20001,64,")") +#20161=@"loc,{#10000},11,20,11,20" +locations_default(#20161,#10000,11,20,11,20) +hasLocation(#20160,#20161) #20162=* -scopes(#20162,1) -scopenodes(#20161,#20162) -scopenesting(#20162,#20035) -#20163=@"var;{a};{#20162}" -variables(#20163,"a",#20162) +tokeninfo(#20162,8,#20001,65,"{") +#20163=@"loc,{#10000},11,22,11,22" +locations_default(#20163,#10000,11,22,11,22) +hasLocation(#20162,#20163) #20164=* -exprs(#20164,78,#20161,0,"a") -#20165=@"loc,{#10000},14,9,14,9" -locations_default(#20165,#10000,14,9,14,9) +tokeninfo(#20164,8,#20001,66,"}") +#20165=@"loc,{#10000},11,23,11,23" +locations_default(#20165,#10000,11,23,11,23) hasLocation(#20164,#20165) -exprContainers(#20164,#20161) -literals("a","a",#20164) -decl(#20164,#20163) -#20166=@"var;{bc};{#20162}" -variables(#20166,"bc",#20162) -#20167=* -exprs(#20167,78,#20161,1,"bc") -#20168=@"loc,{#10000},14,18,14,19" -locations_default(#20168,#10000,14,18,14,19) -hasLocation(#20167,#20168) -exprContainers(#20167,#20161) -literals("bc","bc",#20167) -decl(#20167,#20166) -#20169=@"var;{arguments};{#20162}" -variables(#20169,"arguments",#20162) -isArgumentsObject(#20169) +#20166=* +tokeninfo(#20166,6,#20001,67,"m6") +#20167=@"loc,{#10000},13,3,13,4" +locations_default(#20167,#10000,13,3,13,4) +hasLocation(#20166,#20167) +#20168=* +tokeninfo(#20168,8,#20001,68,"(") +#20169=@"loc,{#10000},13,5,13,5" +locations_default(#20169,#10000,13,5,13,5) +hasLocation(#20168,#20169) #20170=* -exprs(#20170,104,#20161,-8,"@A") -#20171=@"loc,{#10000},14,6,14,7" -locations_default(#20171,#10000,14,6,14,7) +tokeninfo(#20170,8,#20001,69,"@") +#20171=@"loc,{#10000},13,6,13,6" +locations_default(#20171,#10000,13,6,13,6) hasLocation(#20170,#20171) -exprContainers(#20170,#20161) #20172=* -exprs(#20172,94,#20170,0,"@A") -hasLocation(#20172,#20171) -exprContainers(#20172,#20161) -#20173=* -exprs(#20173,79,#20172,0,"A") -#20174=@"loc,{#10000},14,7,14,7" -locations_default(#20174,#10000,14,7,14,7) -hasLocation(#20173,#20174) -exprContainers(#20173,#20161) -literals("A","A",#20173) -bind(#20173,#20011) -#20175=* -exprs(#20175,104,#20161,-12,"@B @C") -#20176=@"loc,{#10000},14,12,14,16" -locations_default(#20176,#10000,14,12,14,16) -hasLocation(#20175,#20176) -exprContainers(#20175,#20161) -#20177=* -exprs(#20177,94,#20175,0,"@B") -#20178=@"loc,{#10000},14,12,14,13" -locations_default(#20178,#10000,14,12,14,13) -hasLocation(#20177,#20178) -exprContainers(#20177,#20161) -#20179=* -exprs(#20179,79,#20177,0,"B") -#20180=@"loc,{#10000},14,13,14,13" -locations_default(#20180,#10000,14,13,14,13) -hasLocation(#20179,#20180) -exprContainers(#20179,#20161) -literals("B","B",#20179) -bind(#20179,#20020) -#20181=* -exprs(#20181,94,#20175,1,"@C") -#20182=@"loc,{#10000},14,15,14,16" -locations_default(#20182,#10000,14,15,14,16) -hasLocation(#20181,#20182) -exprContainers(#20181,#20161) -#20183=* -exprs(#20183,79,#20181,0,"C") -#20184=@"loc,{#10000},14,16,14,16" -locations_default(#20184,#10000,14,16,14,16) -hasLocation(#20183,#20184) -exprContainers(#20183,#20161) -literals("C","C",#20183) -bind(#20183,#20003) -#20185=* -stmts(#20185,1,#20161,-2,"{}") -#20186=@"loc,{#10000},14,22,14,23" -locations_default(#20186,#10000,14,22,14,23) -hasLocation(#20185,#20186) -stmtContainers(#20185,#20161) -numlines(#20161,1,1,0) -isMethod(#20157) -#20187=* -properties(#20187,#20031,9,0,"constructor() {}") -#20188=@"loc,{#10000},5,9,5,8" -locations_default(#20188,#10000,5,9,5,8) -hasLocation(#20187,#20188) -#20189=* -exprs(#20189,0,#20187,0,"constructor") -hasLocation(#20189,#20188) -enclosingStmt(#20189,#20031) -exprContainers(#20189,#20001) -literals("constructor","constructor",#20189) +tokeninfo(#20172,6,#20001,70,"A") +#20173=@"loc,{#10000},13,7,13,7" +locations_default(#20173,#10000,13,7,13,7) +hasLocation(#20172,#20173) +#20174=* +tokeninfo(#20174,6,#20001,71,"a") +#20175=@"loc,{#10000},13,9,13,9" +locations_default(#20175,#10000,13,9,13,9) +hasLocation(#20174,#20175) +#20176=* +tokeninfo(#20176,8,#20001,72,",") +#20177=@"loc,{#10000},13,10,13,10" +locations_default(#20177,#10000,13,10,13,10) +hasLocation(#20176,#20177) +#20178=* +tokeninfo(#20178,8,#20001,73,"@") +#20179=@"loc,{#10000},13,12,13,12" +locations_default(#20179,#10000,13,12,13,12) +hasLocation(#20178,#20179) +#20180=* +tokeninfo(#20180,6,#20001,74,"B") +#20181=@"loc,{#10000},13,13,13,13" +locations_default(#20181,#10000,13,13,13,13) +hasLocation(#20180,#20181) +#20182=* +tokeninfo(#20182,6,#20001,75,"b") +#20183=@"loc,{#10000},13,15,13,15" +locations_default(#20183,#10000,13,15,13,15) +hasLocation(#20182,#20183) +#20184=* +tokeninfo(#20184,8,#20001,76,")") +#20185=@"loc,{#10000},13,16,13,16" +locations_default(#20185,#10000,13,16,13,16) +hasLocation(#20184,#20185) +#20186=* +tokeninfo(#20186,8,#20001,77,"{") +#20187=@"loc,{#10000},13,18,13,18" +locations_default(#20187,#10000,13,18,13,18) +hasLocation(#20186,#20187) +#20188=* +tokeninfo(#20188,8,#20001,78,"}") +#20189=@"loc,{#10000},13,19,13,19" +locations_default(#20189,#10000,13,19,13,19) +hasLocation(#20188,#20189) #20190=* -exprs(#20190,9,#20187,1,"() {}") -hasLocation(#20190,#20188) -enclosingStmt(#20190,#20031) -exprContainers(#20190,#20001) -#20191=* -scopes(#20191,1) -scopenodes(#20190,#20191) -scopenesting(#20191,#20035) -#20192=@"var;{arguments};{#20191}" -variables(#20192,"arguments",#20191) -isArgumentsObject(#20192) -#20193=* -stmts(#20193,1,#20190,-2,"{}") -hasLocation(#20193,#20188) -stmtContainers(#20193,#20190) -numlines(#20190,1,0,0) -isMethod(#20187) +tokeninfo(#20190,6,#20001,79,"m7") +#20191=@"loc,{#10000},14,3,14,4" +locations_default(#20191,#10000,14,3,14,4) +hasLocation(#20190,#20191) +#20192=* +tokeninfo(#20192,8,#20001,80,"(") +#20193=@"loc,{#10000},14,5,14,5" +locations_default(#20193,#10000,14,5,14,5) +hasLocation(#20192,#20193) #20194=* -lines(#20194,#20001,"declare var A : any;"," -") -hasLocation(#20194,#20006) -#20195=* -lines(#20195,#20001,"declare var B : any;"," -") -hasLocation(#20195,#20015) +tokeninfo(#20194,8,#20001,81,"@") +#20195=@"loc,{#10000},14,6,14,6" +locations_default(#20195,#10000,14,6,14,6) +hasLocation(#20194,#20195) #20196=* -lines(#20196,#20001,"declare var C : any;"," -") -hasLocation(#20196,#20024) -#20197=* -lines(#20197,#20001,""," -") -#20198=@"loc,{#10000},4,1,4,0" -locations_default(#20198,#10000,4,1,4,0) -hasLocation(#20197,#20198) -#20199=* -lines(#20199,#20001,"class C {"," -") -#20200=@"loc,{#10000},5,1,5,9" -locations_default(#20200,#10000,5,1,5,9) -hasLocation(#20199,#20200) -#20201=* -lines(#20201,#20001," m1(none) {}"," -") -#20202=@"loc,{#10000},6,1,6,13" -locations_default(#20202,#10000,6,1,6,13) -hasLocation(#20201,#20202) -indentation(#10000,6," ",2) -#20203=* -lines(#20203,#20001," m2(@A a) {}"," -") -#20204=@"loc,{#10000},7,1,7,13" -locations_default(#20204,#10000,7,1,7,13) -hasLocation(#20203,#20204) -indentation(#10000,7," ",2) -#20205=* -lines(#20205,#20001," m3(@A @B ab) {}"," -") -#20206=@"loc,{#10000},8,1,8,17" -locations_default(#20206,#10000,8,1,8,17) -hasLocation(#20205,#20206) -indentation(#10000,8," ",2) -#20207=* -lines(#20207,#20001," "," -") -#20208=@"loc,{#10000},9,1,9,2" -locations_default(#20208,#10000,9,1,9,2) -hasLocation(#20207,#20208) -#20209=* -lines(#20209,#20001," m4(none, @A a) {}"," -") -#20210=@"loc,{#10000},10,1,10,19" -locations_default(#20210,#10000,10,1,10,19) -hasLocation(#20209,#20210) -indentation(#10000,10," ",2) -#20211=* -lines(#20211,#20001," m5(none, @A @B ab) {}"," -") -#20212=@"loc,{#10000},11,1,11,23" -locations_default(#20212,#10000,11,1,11,23) -hasLocation(#20211,#20212) -indentation(#10000,11," ",2) -#20213=* -lines(#20213,#20001," "," -") -#20214=@"loc,{#10000},12,1,12,2" -locations_default(#20214,#10000,12,1,12,2) -hasLocation(#20213,#20214) -#20215=* -lines(#20215,#20001," m6(@A a, @B b) {}"," -") -#20216=@"loc,{#10000},13,1,13,19" -locations_default(#20216,#10000,13,1,13,19) -hasLocation(#20215,#20216) -indentation(#10000,13," ",2) -#20217=* -lines(#20217,#20001," m7(@A a, @B @C bc) {}"," -") -#20218=@"loc,{#10000},14,1,14,23" -locations_default(#20218,#10000,14,1,14,23) -hasLocation(#20217,#20218) -indentation(#10000,14," ",2) +tokeninfo(#20196,6,#20001,82,"A") +#20197=@"loc,{#10000},14,7,14,7" +locations_default(#20197,#10000,14,7,14,7) +hasLocation(#20196,#20197) +#20198=* +tokeninfo(#20198,6,#20001,83,"a") +#20199=@"loc,{#10000},14,9,14,9" +locations_default(#20199,#10000,14,9,14,9) +hasLocation(#20198,#20199) +#20200=* +tokeninfo(#20200,8,#20001,84,",") +#20201=@"loc,{#10000},14,10,14,10" +locations_default(#20201,#10000,14,10,14,10) +hasLocation(#20200,#20201) +#20202=* +tokeninfo(#20202,8,#20001,85,"@") +#20203=@"loc,{#10000},14,12,14,12" +locations_default(#20203,#10000,14,12,14,12) +hasLocation(#20202,#20203) +#20204=* +tokeninfo(#20204,6,#20001,86,"B") +#20205=@"loc,{#10000},14,13,14,13" +locations_default(#20205,#10000,14,13,14,13) +hasLocation(#20204,#20205) +#20206=* +tokeninfo(#20206,8,#20001,87,"@") +#20207=@"loc,{#10000},14,15,14,15" +locations_default(#20207,#10000,14,15,14,15) +hasLocation(#20206,#20207) +#20208=* +tokeninfo(#20208,6,#20001,88,"C") +#20209=@"loc,{#10000},14,16,14,16" +locations_default(#20209,#10000,14,16,14,16) +hasLocation(#20208,#20209) +#20210=* +tokeninfo(#20210,6,#20001,89,"bc") +#20211=@"loc,{#10000},14,18,14,19" +locations_default(#20211,#10000,14,18,14,19) +hasLocation(#20210,#20211) +#20212=* +tokeninfo(#20212,8,#20001,90,")") +#20213=@"loc,{#10000},14,20,14,20" +locations_default(#20213,#10000,14,20,14,20) +hasLocation(#20212,#20213) +#20214=* +tokeninfo(#20214,8,#20001,91,"{") +#20215=@"loc,{#10000},14,22,14,22" +locations_default(#20215,#10000,14,22,14,22) +hasLocation(#20214,#20215) +#20216=* +tokeninfo(#20216,8,#20001,92,"}") +#20217=@"loc,{#10000},14,23,14,23" +locations_default(#20217,#10000,14,23,14,23) +hasLocation(#20216,#20217) +#20218=* +tokeninfo(#20218,8,#20001,93,"}") +hasLocation(#20218,#20031) #20219=* -lines(#20219,#20001,"}"," -") -#20220=@"loc,{#10000},15,1,15,1" -locations_default(#20220,#10000,15,1,15,1) +tokeninfo(#20219,0,#20001,94,"") +#20220=@"loc,{#10000},16,1,16,0" +locations_default(#20220,#10000,16,1,16,0) hasLocation(#20219,#20220) -numlines(#20001,15,12,0) -#20221=* -tokeninfo(#20221,7,#20001,0,"declare") -#20222=@"loc,{#10000},1,1,1,7" -locations_default(#20222,#10000,1,1,1,7) -hasLocation(#20221,#20222) -#20223=* -tokeninfo(#20223,7,#20001,1,"var") -#20224=@"loc,{#10000},1,9,1,11" -locations_default(#20224,#10000,1,9,1,11) -hasLocation(#20223,#20224) +toplevels(#20001,0) +#20221=@"loc,{#10000},1,1,16,0" +locations_default(#20221,#10000,1,1,16,0) +hasLocation(#20001,#20221) +#20222=@"var;{C};{#20000}" +variables(#20222,"C",#20000) +#20223=@"local_type_name;{C};{#20000}" +local_type_names(#20223,"C",#20000) +#20224=* +stmts(#20224,18,#20001,0,"declare var A : any;") +hasLocation(#20224,#20003) +stmtContainers(#20224,#20001) +hasDeclareKeyword(#20224) #20225=* -tokeninfo(#20225,6,#20001,2,"A") -hasLocation(#20225,#20010) -#20226=* -tokeninfo(#20226,8,#20001,3,":") -#20227=@"loc,{#10000},1,15,1,15" -locations_default(#20227,#10000,1,15,1,15) -hasLocation(#20226,#20227) -#20228=* -tokeninfo(#20228,7,#20001,4,"any") -hasLocation(#20228,#20013) +exprs(#20225,64,#20224,0,"A : any") +#20226=@"loc,{#10000},1,13,1,19" +locations_default(#20226,#10000,1,13,1,19) +hasLocation(#20225,#20226) +enclosingStmt(#20225,#20224) +exprContainers(#20225,#20001) +#20227=* +exprs(#20227,78,#20225,0,"A") +hasLocation(#20227,#20037) +enclosingStmt(#20227,#20224) +exprContainers(#20227,#20001) +literals("A","A",#20227) +#20228=@"var;{A};{#20000}" +variables(#20228,"A",#20000) +decl(#20227,#20228) #20229=* -tokeninfo(#20229,8,#20001,5,";") -#20230=@"loc,{#10000},1,20,1,20" -locations_default(#20230,#10000,1,20,1,20) -hasLocation(#20229,#20230) +typeexprs(#20229,2,#20225,2,"any") +hasLocation(#20229,#20041) +enclosingStmt(#20229,#20224) +exprContainers(#20229,#20001) +literals("any","any",#20229) +#20230=* +stmts(#20230,18,#20001,1,"declare var B : any;") +hasLocation(#20230,#20005) +stmtContainers(#20230,#20001) +hasDeclareKeyword(#20230) #20231=* -tokeninfo(#20231,7,#20001,6,"declare") -#20232=@"loc,{#10000},2,1,2,7" -locations_default(#20232,#10000,2,1,2,7) +exprs(#20231,64,#20230,0,"B : any") +#20232=@"loc,{#10000},2,13,2,19" +locations_default(#20232,#10000,2,13,2,19) hasLocation(#20231,#20232) +enclosingStmt(#20231,#20230) +exprContainers(#20231,#20001) #20233=* -tokeninfo(#20233,7,#20001,7,"var") -#20234=@"loc,{#10000},2,9,2,11" -locations_default(#20234,#10000,2,9,2,11) -hasLocation(#20233,#20234) +exprs(#20233,78,#20231,0,"B") +hasLocation(#20233,#20049) +enclosingStmt(#20233,#20230) +exprContainers(#20233,#20001) +literals("B","B",#20233) +#20234=@"var;{B};{#20000}" +variables(#20234,"B",#20000) +decl(#20233,#20234) #20235=* -tokeninfo(#20235,6,#20001,8,"B") -hasLocation(#20235,#20019) +typeexprs(#20235,2,#20231,2,"any") +hasLocation(#20235,#20053) +enclosingStmt(#20235,#20230) +exprContainers(#20235,#20001) +literals("any","any",#20235) #20236=* -tokeninfo(#20236,8,#20001,9,":") -#20237=@"loc,{#10000},2,15,2,15" -locations_default(#20237,#10000,2,15,2,15) -hasLocation(#20236,#20237) -#20238=* -tokeninfo(#20238,7,#20001,10,"any") -hasLocation(#20238,#20022) +stmts(#20236,18,#20001,2,"declare var C : any;") +hasLocation(#20236,#20007) +stmtContainers(#20236,#20001) +hasDeclareKeyword(#20236) +#20237=* +exprs(#20237,64,#20236,0,"C : any") +#20238=@"loc,{#10000},3,13,3,19" +locations_default(#20238,#10000,3,13,3,19) +hasLocation(#20237,#20238) +enclosingStmt(#20237,#20236) +exprContainers(#20237,#20001) #20239=* -tokeninfo(#20239,8,#20001,11,";") -#20240=@"loc,{#10000},2,20,2,20" -locations_default(#20240,#10000,2,20,2,20) -hasLocation(#20239,#20240) +exprs(#20239,78,#20237,0,"C") +hasLocation(#20239,#20061) +enclosingStmt(#20239,#20236) +exprContainers(#20239,#20001) +literals("C","C",#20239) +decl(#20239,#20222) +#20240=* +typeexprs(#20240,2,#20237,2,"any") +hasLocation(#20240,#20065) +enclosingStmt(#20240,#20236) +exprContainers(#20240,#20001) +literals("any","any",#20240) #20241=* -tokeninfo(#20241,7,#20001,12,"declare") -#20242=@"loc,{#10000},3,1,3,7" -locations_default(#20242,#10000,3,1,3,7) +stmts(#20241,26,#20001,3,"class C ... c) {}\n}") +#20242=@"loc,{#10000},5,1,15,1" +locations_default(#20242,#10000,5,1,15,1) hasLocation(#20241,#20242) +stmtContainers(#20241,#20001) #20243=* -tokeninfo(#20243,7,#20001,13,"var") -#20244=@"loc,{#10000},3,9,3,11" -locations_default(#20244,#10000,3,9,3,11) -hasLocation(#20243,#20244) +exprs(#20243,78,#20241,0,"C") +hasLocation(#20243,#20071) +enclosingStmt(#20243,#20241) +exprContainers(#20243,#20001) +literals("C","C",#20243) +decl(#20243,#20222) +typedecl(#20243,#20223) +#20244=* +scopes(#20244,10) +scopenodes(#20241,#20244) +scopenesting(#20244,#20000) #20245=* -tokeninfo(#20245,6,#20001,14,"C") -hasLocation(#20245,#20028) -#20246=* -tokeninfo(#20246,8,#20001,15,":") -#20247=@"loc,{#10000},3,15,3,15" -locations_default(#20247,#10000,3,15,3,15) -hasLocation(#20246,#20247) +properties(#20245,#20241,2,0,"m1(none) {}") +#20246=@"loc,{#10000},6,3,6,13" +locations_default(#20246,#10000,6,3,6,13) +hasLocation(#20245,#20246) +#20247=* +exprs(#20247,0,#20245,0,"m1") +hasLocation(#20247,#20075) +enclosingStmt(#20247,#20241) +exprContainers(#20247,#20001) +literals("m1","m1",#20247) #20248=* -tokeninfo(#20248,7,#20001,16,"any") -hasLocation(#20248,#20030) +exprs(#20248,9,#20245,1,"m1(none) {}") +hasLocation(#20248,#20246) +enclosingStmt(#20248,#20241) +exprContainers(#20248,#20001) #20249=* -tokeninfo(#20249,8,#20001,17,";") -#20250=@"loc,{#10000},3,20,3,20" -locations_default(#20250,#10000,3,20,3,20) -hasLocation(#20249,#20250) +scopes(#20249,1) +scopenodes(#20248,#20249) +scopenesting(#20249,#20244) +#20250=@"var;{none};{#20249}" +variables(#20250,"none",#20249) #20251=* -tokeninfo(#20251,7,#20001,18,"class") -#20252=@"loc,{#10000},5,1,5,5" -locations_default(#20252,#10000,5,1,5,5) -hasLocation(#20251,#20252) +exprs(#20251,78,#20248,0,"none") +hasLocation(#20251,#20079) +exprContainers(#20251,#20248) +literals("none","none",#20251) +decl(#20251,#20250) +#20252=@"var;{arguments};{#20249}" +variables(#20252,"arguments",#20249) +isArgumentsObject(#20252) #20253=* -tokeninfo(#20253,6,#20001,19,"C") -hasLocation(#20253,#20034) -#20254=* -tokeninfo(#20254,8,#20001,20,"{") -#20255=@"loc,{#10000},5,9,5,9" -locations_default(#20255,#10000,5,9,5,9) -hasLocation(#20254,#20255) -#20256=* -tokeninfo(#20256,6,#20001,21,"m1") -hasLocation(#20256,#20039) +stmts(#20253,1,#20248,-2,"{}") +#20254=@"loc,{#10000},6,12,6,13" +locations_default(#20254,#10000,6,12,6,13) +hasLocation(#20253,#20254) +stmtContainers(#20253,#20248) +isMethod(#20245) +#20255=* +properties(#20255,#20241,3,0,"m2(@A a) {}") +#20256=@"loc,{#10000},7,3,7,13" +locations_default(#20256,#10000,7,3,7,13) +hasLocation(#20255,#20256) #20257=* -tokeninfo(#20257,8,#20001,22,"(") -#20258=@"loc,{#10000},6,5,6,5" -locations_default(#20258,#10000,6,5,6,5) -hasLocation(#20257,#20258) +exprs(#20257,0,#20255,0,"m2") +hasLocation(#20257,#20087) +enclosingStmt(#20257,#20241) +exprContainers(#20257,#20001) +literals("m2","m2",#20257) +#20258=* +exprs(#20258,9,#20255,1,"m2(@A a) {}") +hasLocation(#20258,#20256) +enclosingStmt(#20258,#20241) +exprContainers(#20258,#20001) #20259=* -tokeninfo(#20259,6,#20001,23,"none") -hasLocation(#20259,#20044) -#20260=* -tokeninfo(#20260,8,#20001,24,")") -#20261=@"loc,{#10000},6,10,6,10" -locations_default(#20261,#10000,6,10,6,10) -hasLocation(#20260,#20261) -#20262=* -tokeninfo(#20262,8,#20001,25,"{") -#20263=@"loc,{#10000},6,12,6,12" -locations_default(#20263,#10000,6,12,6,12) -hasLocation(#20262,#20263) -#20264=* -tokeninfo(#20264,8,#20001,26,"}") -#20265=@"loc,{#10000},6,13,6,13" -locations_default(#20265,#10000,6,13,6,13) -hasLocation(#20264,#20265) +scopes(#20259,1) +scopenodes(#20258,#20259) +scopenesting(#20259,#20244) +#20260=@"var;{a};{#20259}" +variables(#20260,"a",#20259) +#20261=* +exprs(#20261,78,#20258,0,"a") +hasLocation(#20261,#20095) +exprContainers(#20261,#20258) +literals("a","a",#20261) +decl(#20261,#20260) +#20262=@"var;{arguments};{#20259}" +variables(#20262,"arguments",#20259) +isArgumentsObject(#20262) +#20263=* +exprs(#20263,104,#20258,-8,"@A") +#20264=@"loc,{#10000},7,6,7,7" +locations_default(#20264,#10000,7,6,7,7) +hasLocation(#20263,#20264) +exprContainers(#20263,#20258) +#20265=* +exprs(#20265,94,#20263,0,"@A") +hasLocation(#20265,#20264) +exprContainers(#20265,#20258) #20266=* -tokeninfo(#20266,6,#20001,27,"m2") -hasLocation(#20266,#20051) +exprs(#20266,79,#20265,0,"A") +hasLocation(#20266,#20093) +exprContainers(#20266,#20258) +literals("A","A",#20266) +bind(#20266,#20228) #20267=* -tokeninfo(#20267,8,#20001,28,"(") -#20268=@"loc,{#10000},7,5,7,5" -locations_default(#20268,#10000,7,5,7,5) +stmts(#20267,1,#20258,-2,"{}") +#20268=@"loc,{#10000},7,12,7,13" +locations_default(#20268,#10000,7,12,7,13) hasLocation(#20267,#20268) +stmtContainers(#20267,#20258) +isMethod(#20255) #20269=* -tokeninfo(#20269,8,#20001,29,"@") -#20270=@"loc,{#10000},7,6,7,6" -locations_default(#20270,#10000,7,6,7,6) +properties(#20269,#20241,4,0,"m3(@A @B ab) {}") +#20270=@"loc,{#10000},8,3,8,17" +locations_default(#20270,#10000,8,3,8,17) hasLocation(#20269,#20270) #20271=* -tokeninfo(#20271,6,#20001,30,"A") -hasLocation(#20271,#20062) +exprs(#20271,0,#20269,0,"m3") +hasLocation(#20271,#20103) +enclosingStmt(#20271,#20241) +exprContainers(#20271,#20001) +literals("m3","m3",#20271) #20272=* -tokeninfo(#20272,6,#20001,31,"a") -hasLocation(#20272,#20056) +exprs(#20272,9,#20269,1,"m3(@A @B ab) {}") +hasLocation(#20272,#20270) +enclosingStmt(#20272,#20241) +exprContainers(#20272,#20001) #20273=* -tokeninfo(#20273,8,#20001,32,")") -#20274=@"loc,{#10000},7,10,7,10" -locations_default(#20274,#10000,7,10,7,10) -hasLocation(#20273,#20274) +scopes(#20273,1) +scopenodes(#20272,#20273) +scopenesting(#20273,#20244) +#20274=@"var;{ab};{#20273}" +variables(#20274,"ab",#20273) #20275=* -tokeninfo(#20275,8,#20001,33,"{") -#20276=@"loc,{#10000},7,12,7,12" -locations_default(#20276,#10000,7,12,7,12) -hasLocation(#20275,#20276) +exprs(#20275,78,#20272,0,"ab") +hasLocation(#20275,#20115) +exprContainers(#20275,#20272) +literals("ab","ab",#20275) +decl(#20275,#20274) +#20276=@"var;{arguments};{#20273}" +variables(#20276,"arguments",#20273) +isArgumentsObject(#20276) #20277=* -tokeninfo(#20277,8,#20001,34,"}") -#20278=@"loc,{#10000},7,13,7,13" -locations_default(#20278,#10000,7,13,7,13) +exprs(#20277,104,#20272,-8,"@A @B") +#20278=@"loc,{#10000},8,6,8,10" +locations_default(#20278,#10000,8,6,8,10) hasLocation(#20277,#20278) +exprContainers(#20277,#20272) #20279=* -tokeninfo(#20279,6,#20001,35,"m3") -hasLocation(#20279,#20068) -#20280=* -tokeninfo(#20280,8,#20001,36,"(") -#20281=@"loc,{#10000},8,5,8,5" -locations_default(#20281,#10000,8,5,8,5) -hasLocation(#20280,#20281) +exprs(#20279,94,#20277,0,"@A") +#20280=@"loc,{#10000},8,6,8,7" +locations_default(#20280,#10000,8,6,8,7) +hasLocation(#20279,#20280) +exprContainers(#20279,#20272) +#20281=* +exprs(#20281,79,#20279,0,"A") +hasLocation(#20281,#20109) +exprContainers(#20281,#20272) +literals("A","A",#20281) +bind(#20281,#20228) #20282=* -tokeninfo(#20282,8,#20001,37,"@") -#20283=@"loc,{#10000},8,6,8,6" -locations_default(#20283,#10000,8,6,8,6) +exprs(#20282,94,#20277,1,"@B") +#20283=@"loc,{#10000},8,9,8,10" +locations_default(#20283,#10000,8,9,8,10) hasLocation(#20282,#20283) +exprContainers(#20282,#20272) #20284=* -tokeninfo(#20284,6,#20001,38,"A") -hasLocation(#20284,#20080) +exprs(#20284,79,#20282,0,"B") +hasLocation(#20284,#20113) +exprContainers(#20284,#20272) +literals("B","B",#20284) +bind(#20284,#20234) #20285=* -tokeninfo(#20285,8,#20001,39,"@") -#20286=@"loc,{#10000},8,9,8,9" -locations_default(#20286,#10000,8,9,8,9) +stmts(#20285,1,#20272,-2,"{}") +#20286=@"loc,{#10000},8,16,8,17" +locations_default(#20286,#10000,8,16,8,17) hasLocation(#20285,#20286) +stmtContainers(#20285,#20272) +isMethod(#20269) #20287=* -tokeninfo(#20287,6,#20001,40,"B") -hasLocation(#20287,#20084) -#20288=* -tokeninfo(#20288,6,#20001,41,"ab") -hasLocation(#20288,#20073) +properties(#20287,#20241,5,0,"m4(none, @A a) {}") +#20288=@"loc,{#10000},10,3,10,19" +locations_default(#20288,#10000,10,3,10,19) +hasLocation(#20287,#20288) #20289=* -tokeninfo(#20289,8,#20001,42,")") -#20290=@"loc,{#10000},8,14,8,14" -locations_default(#20290,#10000,8,14,8,14) -hasLocation(#20289,#20290) +exprs(#20289,0,#20287,0,"m4") +hasLocation(#20289,#20123) +enclosingStmt(#20289,#20241) +exprContainers(#20289,#20001) +literals("m4","m4",#20289) +#20290=* +exprs(#20290,9,#20287,1,"m4(none, @A a) {}") +hasLocation(#20290,#20288) +enclosingStmt(#20290,#20241) +exprContainers(#20290,#20001) #20291=* -tokeninfo(#20291,8,#20001,43,"{") -#20292=@"loc,{#10000},8,16,8,16" -locations_default(#20292,#10000,8,16,8,16) -hasLocation(#20291,#20292) +scopes(#20291,1) +scopenodes(#20290,#20291) +scopenesting(#20291,#20244) +#20292=@"var;{none};{#20291}" +variables(#20292,"none",#20291) #20293=* -tokeninfo(#20293,8,#20001,44,"}") -#20294=@"loc,{#10000},8,17,8,17" -locations_default(#20294,#10000,8,17,8,17) -hasLocation(#20293,#20294) +exprs(#20293,78,#20290,0,"none") +hasLocation(#20293,#20127) +exprContainers(#20293,#20290) +literals("none","none",#20293) +decl(#20293,#20292) +#20294=@"var;{a};{#20291}" +variables(#20294,"a",#20291) #20295=* -tokeninfo(#20295,6,#20001,45,"m4") -hasLocation(#20295,#20090) -#20296=* -tokeninfo(#20296,8,#20001,46,"(") -#20297=@"loc,{#10000},10,5,10,5" -locations_default(#20297,#10000,10,5,10,5) -hasLocation(#20296,#20297) -#20298=* -tokeninfo(#20298,6,#20001,47,"none") -hasLocation(#20298,#20095) +exprs(#20295,78,#20290,1,"a") +hasLocation(#20295,#20135) +exprContainers(#20295,#20290) +literals("a","a",#20295) +decl(#20295,#20294) +#20296=@"var;{arguments};{#20291}" +variables(#20296,"arguments",#20291) +isArgumentsObject(#20296) +#20297=* +exprs(#20297,104,#20290,-12,"@A") +#20298=@"loc,{#10000},10,12,10,13" +locations_default(#20298,#10000,10,12,10,13) +hasLocation(#20297,#20298) +exprContainers(#20297,#20290) #20299=* -tokeninfo(#20299,8,#20001,48,",") -#20300=@"loc,{#10000},10,10,10,10" -locations_default(#20300,#10000,10,10,10,10) -hasLocation(#20299,#20300) +exprs(#20299,94,#20297,0,"@A") +hasLocation(#20299,#20298) +exprContainers(#20299,#20290) +#20300=* +exprs(#20300,79,#20299,0,"A") +hasLocation(#20300,#20133) +exprContainers(#20300,#20290) +literals("A","A",#20300) +bind(#20300,#20228) #20301=* -tokeninfo(#20301,8,#20001,49,"@") -#20302=@"loc,{#10000},10,12,10,12" -locations_default(#20302,#10000,10,12,10,12) +stmts(#20301,1,#20290,-2,"{}") +#20302=@"loc,{#10000},10,18,10,19" +locations_default(#20302,#10000,10,18,10,19) hasLocation(#20301,#20302) +stmtContainers(#20301,#20290) +isMethod(#20287) #20303=* -tokeninfo(#20303,6,#20001,50,"A") -hasLocation(#20303,#20104) -#20304=* -tokeninfo(#20304,6,#20001,51,"a") -hasLocation(#20304,#20098) +properties(#20303,#20241,6,0,"m5(none ... ab) {}") +#20304=@"loc,{#10000},11,3,11,23" +locations_default(#20304,#10000,11,3,11,23) +hasLocation(#20303,#20304) #20305=* -tokeninfo(#20305,8,#20001,52,")") -#20306=@"loc,{#10000},10,16,10,16" -locations_default(#20306,#10000,10,16,10,16) -hasLocation(#20305,#20306) +exprs(#20305,0,#20303,0,"m5") +hasLocation(#20305,#20143) +enclosingStmt(#20305,#20241) +exprContainers(#20305,#20001) +literals("m5","m5",#20305) +#20306=* +exprs(#20306,9,#20303,1,"m5(none ... ab) {}") +hasLocation(#20306,#20304) +enclosingStmt(#20306,#20241) +exprContainers(#20306,#20001) #20307=* -tokeninfo(#20307,8,#20001,53,"{") -#20308=@"loc,{#10000},10,18,10,18" -locations_default(#20308,#10000,10,18,10,18) -hasLocation(#20307,#20308) +scopes(#20307,1) +scopenodes(#20306,#20307) +scopenesting(#20307,#20244) +#20308=@"var;{none};{#20307}" +variables(#20308,"none",#20307) #20309=* -tokeninfo(#20309,8,#20001,54,"}") -#20310=@"loc,{#10000},10,19,10,19" -locations_default(#20310,#10000,10,19,10,19) -hasLocation(#20309,#20310) +exprs(#20309,78,#20306,0,"none") +hasLocation(#20309,#20147) +exprContainers(#20309,#20306) +literals("none","none",#20309) +decl(#20309,#20308) +#20310=@"var;{ab};{#20307}" +variables(#20310,"ab",#20307) #20311=* -tokeninfo(#20311,6,#20001,55,"m5") -hasLocation(#20311,#20110) -#20312=* -tokeninfo(#20312,8,#20001,56,"(") -#20313=@"loc,{#10000},11,5,11,5" -locations_default(#20313,#10000,11,5,11,5) -hasLocation(#20312,#20313) -#20314=* -tokeninfo(#20314,6,#20001,57,"none") -hasLocation(#20314,#20115) +exprs(#20311,78,#20306,1,"ab") +hasLocation(#20311,#20159) +exprContainers(#20311,#20306) +literals("ab","ab",#20311) +decl(#20311,#20310) +#20312=@"var;{arguments};{#20307}" +variables(#20312,"arguments",#20307) +isArgumentsObject(#20312) +#20313=* +exprs(#20313,104,#20306,-12,"@A @B") +#20314=@"loc,{#10000},11,12,11,16" +locations_default(#20314,#10000,11,12,11,16) +hasLocation(#20313,#20314) +exprContainers(#20313,#20306) #20315=* -tokeninfo(#20315,8,#20001,58,",") -#20316=@"loc,{#10000},11,10,11,10" -locations_default(#20316,#10000,11,10,11,10) +exprs(#20315,94,#20313,0,"@A") +#20316=@"loc,{#10000},11,12,11,13" +locations_default(#20316,#10000,11,12,11,13) hasLocation(#20315,#20316) +exprContainers(#20315,#20306) #20317=* -tokeninfo(#20317,8,#20001,59,"@") -#20318=@"loc,{#10000},11,12,11,12" -locations_default(#20318,#10000,11,12,11,12) -hasLocation(#20317,#20318) -#20319=* -tokeninfo(#20319,6,#20001,60,"A") -hasLocation(#20319,#20125) +exprs(#20317,79,#20315,0,"A") +hasLocation(#20317,#20153) +exprContainers(#20317,#20306) +literals("A","A",#20317) +bind(#20317,#20228) +#20318=* +exprs(#20318,94,#20313,1,"@B") +#20319=@"loc,{#10000},11,15,11,16" +locations_default(#20319,#10000,11,15,11,16) +hasLocation(#20318,#20319) +exprContainers(#20318,#20306) #20320=* -tokeninfo(#20320,8,#20001,61,"@") -#20321=@"loc,{#10000},11,15,11,15" -locations_default(#20321,#10000,11,15,11,15) -hasLocation(#20320,#20321) -#20322=* -tokeninfo(#20322,6,#20001,62,"B") -hasLocation(#20322,#20129) +exprs(#20320,79,#20318,0,"B") +hasLocation(#20320,#20157) +exprContainers(#20320,#20306) +literals("B","B",#20320) +bind(#20320,#20234) +#20321=* +stmts(#20321,1,#20306,-2,"{}") +#20322=@"loc,{#10000},11,22,11,23" +locations_default(#20322,#10000,11,22,11,23) +hasLocation(#20321,#20322) +stmtContainers(#20321,#20306) +isMethod(#20303) #20323=* -tokeninfo(#20323,6,#20001,63,"ab") -hasLocation(#20323,#20118) -#20324=* -tokeninfo(#20324,8,#20001,64,")") -#20325=@"loc,{#10000},11,20,11,20" -locations_default(#20325,#10000,11,20,11,20) -hasLocation(#20324,#20325) +properties(#20323,#20241,7,0,"m6(@A a, @B b) {}") +#20324=@"loc,{#10000},13,3,13,19" +locations_default(#20324,#10000,13,3,13,19) +hasLocation(#20323,#20324) +#20325=* +exprs(#20325,0,#20323,0,"m6") +hasLocation(#20325,#20167) +enclosingStmt(#20325,#20241) +exprContainers(#20325,#20001) +literals("m6","m6",#20325) #20326=* -tokeninfo(#20326,8,#20001,65,"{") -#20327=@"loc,{#10000},11,22,11,22" -locations_default(#20327,#10000,11,22,11,22) -hasLocation(#20326,#20327) -#20328=* -tokeninfo(#20328,8,#20001,66,"}") -#20329=@"loc,{#10000},11,23,11,23" -locations_default(#20329,#10000,11,23,11,23) -hasLocation(#20328,#20329) -#20330=* -tokeninfo(#20330,6,#20001,67,"m6") -hasLocation(#20330,#20135) +exprs(#20326,9,#20323,1,"m6(@A a, @B b) {}") +hasLocation(#20326,#20324) +enclosingStmt(#20326,#20241) +exprContainers(#20326,#20001) +#20327=* +scopes(#20327,1) +scopenodes(#20326,#20327) +scopenesting(#20327,#20244) +#20328=@"var;{a};{#20327}" +variables(#20328,"a",#20327) +#20329=* +exprs(#20329,78,#20326,0,"a") +hasLocation(#20329,#20175) +exprContainers(#20329,#20326) +literals("a","a",#20329) +decl(#20329,#20328) +#20330=@"var;{b};{#20327}" +variables(#20330,"b",#20327) #20331=* -tokeninfo(#20331,8,#20001,68,"(") -#20332=@"loc,{#10000},13,5,13,5" -locations_default(#20332,#10000,13,5,13,5) -hasLocation(#20331,#20332) +exprs(#20331,78,#20326,1,"b") +hasLocation(#20331,#20183) +exprContainers(#20331,#20326) +literals("b","b",#20331) +decl(#20331,#20330) +#20332=@"var;{arguments};{#20327}" +variables(#20332,"arguments",#20327) +isArgumentsObject(#20332) #20333=* -tokeninfo(#20333,8,#20001,69,"@") -#20334=@"loc,{#10000},13,6,13,6" -locations_default(#20334,#10000,13,6,13,6) +exprs(#20333,104,#20326,-8,"@A") +#20334=@"loc,{#10000},13,6,13,7" +locations_default(#20334,#10000,13,6,13,7) hasLocation(#20333,#20334) +exprContainers(#20333,#20326) #20335=* -tokeninfo(#20335,6,#20001,70,"A") -hasLocation(#20335,#20149) +exprs(#20335,94,#20333,0,"@A") +hasLocation(#20335,#20334) +exprContainers(#20335,#20326) #20336=* -tokeninfo(#20336,6,#20001,71,"a") -hasLocation(#20336,#20140) +exprs(#20336,79,#20335,0,"A") +hasLocation(#20336,#20173) +exprContainers(#20336,#20326) +literals("A","A",#20336) +bind(#20336,#20228) #20337=* -tokeninfo(#20337,8,#20001,72,",") -#20338=@"loc,{#10000},13,10,13,10" -locations_default(#20338,#10000,13,10,13,10) +exprs(#20337,104,#20326,-12,"@B") +#20338=@"loc,{#10000},13,12,13,13" +locations_default(#20338,#10000,13,12,13,13) hasLocation(#20337,#20338) +exprContainers(#20337,#20326) #20339=* -tokeninfo(#20339,8,#20001,73,"@") -#20340=@"loc,{#10000},13,12,13,12" -locations_default(#20340,#10000,13,12,13,12) -hasLocation(#20339,#20340) +exprs(#20339,94,#20337,0,"@B") +hasLocation(#20339,#20338) +exprContainers(#20339,#20326) +#20340=* +exprs(#20340,79,#20339,0,"B") +hasLocation(#20340,#20181) +exprContainers(#20340,#20326) +literals("B","B",#20340) +bind(#20340,#20234) #20341=* -tokeninfo(#20341,6,#20001,74,"B") -hasLocation(#20341,#20154) -#20342=* -tokeninfo(#20342,6,#20001,75,"b") -hasLocation(#20342,#20143) +stmts(#20341,1,#20326,-2,"{}") +#20342=@"loc,{#10000},13,18,13,19" +locations_default(#20342,#10000,13,18,13,19) +hasLocation(#20341,#20342) +stmtContainers(#20341,#20326) +isMethod(#20323) #20343=* -tokeninfo(#20343,8,#20001,76,")") -#20344=@"loc,{#10000},13,16,13,16" -locations_default(#20344,#10000,13,16,13,16) +properties(#20343,#20241,8,0,"m7(@A a ... bc) {}") +#20344=@"loc,{#10000},14,3,14,23" +locations_default(#20344,#10000,14,3,14,23) hasLocation(#20343,#20344) #20345=* -tokeninfo(#20345,8,#20001,77,"{") -#20346=@"loc,{#10000},13,18,13,18" -locations_default(#20346,#10000,13,18,13,18) -hasLocation(#20345,#20346) +exprs(#20345,0,#20343,0,"m7") +hasLocation(#20345,#20191) +enclosingStmt(#20345,#20241) +exprContainers(#20345,#20001) +literals("m7","m7",#20345) +#20346=* +exprs(#20346,9,#20343,1,"m7(@A a ... bc) {}") +hasLocation(#20346,#20344) +enclosingStmt(#20346,#20241) +exprContainers(#20346,#20001) #20347=* -tokeninfo(#20347,8,#20001,78,"}") -#20348=@"loc,{#10000},13,19,13,19" -locations_default(#20348,#10000,13,19,13,19) -hasLocation(#20347,#20348) +scopes(#20347,1) +scopenodes(#20346,#20347) +scopenesting(#20347,#20244) +#20348=@"var;{a};{#20347}" +variables(#20348,"a",#20347) #20349=* -tokeninfo(#20349,6,#20001,79,"m7") -hasLocation(#20349,#20160) -#20350=* -tokeninfo(#20350,8,#20001,80,"(") -#20351=@"loc,{#10000},14,5,14,5" -locations_default(#20351,#10000,14,5,14,5) -hasLocation(#20350,#20351) -#20352=* -tokeninfo(#20352,8,#20001,81,"@") -#20353=@"loc,{#10000},14,6,14,6" -locations_default(#20353,#10000,14,6,14,6) -hasLocation(#20352,#20353) -#20354=* -tokeninfo(#20354,6,#20001,82,"A") -hasLocation(#20354,#20174) +exprs(#20349,78,#20346,0,"a") +hasLocation(#20349,#20199) +exprContainers(#20349,#20346) +literals("a","a",#20349) +decl(#20349,#20348) +#20350=@"var;{bc};{#20347}" +variables(#20350,"bc",#20347) +#20351=* +exprs(#20351,78,#20346,1,"bc") +hasLocation(#20351,#20211) +exprContainers(#20351,#20346) +literals("bc","bc",#20351) +decl(#20351,#20350) +#20352=@"var;{arguments};{#20347}" +variables(#20352,"arguments",#20347) +isArgumentsObject(#20352) +#20353=* +exprs(#20353,104,#20346,-8,"@A") +#20354=@"loc,{#10000},14,6,14,7" +locations_default(#20354,#10000,14,6,14,7) +hasLocation(#20353,#20354) +exprContainers(#20353,#20346) #20355=* -tokeninfo(#20355,6,#20001,83,"a") -hasLocation(#20355,#20165) +exprs(#20355,94,#20353,0,"@A") +hasLocation(#20355,#20354) +exprContainers(#20355,#20346) #20356=* -tokeninfo(#20356,8,#20001,84,",") -#20357=@"loc,{#10000},14,10,14,10" -locations_default(#20357,#10000,14,10,14,10) -hasLocation(#20356,#20357) -#20358=* -tokeninfo(#20358,8,#20001,85,"@") -#20359=@"loc,{#10000},14,12,14,12" -locations_default(#20359,#10000,14,12,14,12) -hasLocation(#20358,#20359) -#20360=* -tokeninfo(#20360,6,#20001,86,"B") -hasLocation(#20360,#20180) +exprs(#20356,79,#20355,0,"A") +hasLocation(#20356,#20197) +exprContainers(#20356,#20346) +literals("A","A",#20356) +bind(#20356,#20228) +#20357=* +exprs(#20357,104,#20346,-12,"@B @C") +#20358=@"loc,{#10000},14,12,14,16" +locations_default(#20358,#10000,14,12,14,16) +hasLocation(#20357,#20358) +exprContainers(#20357,#20346) +#20359=* +exprs(#20359,94,#20357,0,"@B") +#20360=@"loc,{#10000},14,12,14,13" +locations_default(#20360,#10000,14,12,14,13) +hasLocation(#20359,#20360) +exprContainers(#20359,#20346) #20361=* -tokeninfo(#20361,8,#20001,87,"@") -#20362=@"loc,{#10000},14,15,14,15" -locations_default(#20362,#10000,14,15,14,15) -hasLocation(#20361,#20362) -#20363=* -tokeninfo(#20363,6,#20001,88,"C") -hasLocation(#20363,#20184) +exprs(#20361,79,#20359,0,"B") +hasLocation(#20361,#20205) +exprContainers(#20361,#20346) +literals("B","B",#20361) +bind(#20361,#20234) +#20362=* +exprs(#20362,94,#20357,1,"@C") +#20363=@"loc,{#10000},14,15,14,16" +locations_default(#20363,#10000,14,15,14,16) +hasLocation(#20362,#20363) +exprContainers(#20362,#20346) #20364=* -tokeninfo(#20364,6,#20001,89,"bc") -hasLocation(#20364,#20168) +exprs(#20364,79,#20362,0,"C") +hasLocation(#20364,#20209) +exprContainers(#20364,#20346) +literals("C","C",#20364) +bind(#20364,#20222) #20365=* -tokeninfo(#20365,8,#20001,90,")") -#20366=@"loc,{#10000},14,20,14,20" -locations_default(#20366,#10000,14,20,14,20) +stmts(#20365,1,#20346,-2,"{}") +#20366=@"loc,{#10000},14,22,14,23" +locations_default(#20366,#10000,14,22,14,23) hasLocation(#20365,#20366) +stmtContainers(#20365,#20346) +isMethod(#20343) #20367=* -tokeninfo(#20367,8,#20001,91,"{") -#20368=@"loc,{#10000},14,22,14,22" -locations_default(#20368,#10000,14,22,14,22) +properties(#20367,#20241,9,0,"constructor() {}") +#20368=@"loc,{#10000},5,9,5,8" +locations_default(#20368,#10000,5,9,5,8) hasLocation(#20367,#20368) #20369=* -tokeninfo(#20369,8,#20001,92,"}") -#20370=@"loc,{#10000},14,23,14,23" -locations_default(#20370,#10000,14,23,14,23) -hasLocation(#20369,#20370) +exprs(#20369,0,#20367,0,"constructor") +hasLocation(#20369,#20368) +enclosingStmt(#20369,#20241) +exprContainers(#20369,#20001) +literals("constructor","constructor",#20369) +#20370=* +exprs(#20370,9,#20367,1,"() {}") +hasLocation(#20370,#20368) +enclosingStmt(#20370,#20241) +exprContainers(#20370,#20001) #20371=* -tokeninfo(#20371,8,#20001,93,"}") -hasLocation(#20371,#20220) -#20372=* -tokeninfo(#20372,0,#20001,94,"") -#20373=@"loc,{#10000},16,1,16,0" -locations_default(#20373,#10000,16,1,16,0) -hasLocation(#20372,#20373) +scopes(#20371,1) +scopenodes(#20370,#20371) +scopenesting(#20371,#20244) +#20372=@"var;{arguments};{#20371}" +variables(#20372,"arguments",#20371) +isArgumentsObject(#20372) +#20373=* +stmts(#20373,1,#20370,-2,"{}") +hasLocation(#20373,#20368) +stmtContainers(#20373,#20370) +isMethod(#20367) #20374=* entry_cfg_node(#20374,#20001) #20375=@"loc,{#10000},1,1,1,0" @@ -1196,169 +1188,169 @@ locations_default(#20375,#10000,1,1,1,0) hasLocation(#20374,#20375) #20376=* exit_cfg_node(#20376,#20001) -hasLocation(#20376,#20373) -successor(#20190,#20187) +hasLocation(#20376,#20220) +successor(#20370,#20367) #20377=* -entry_cfg_node(#20377,#20190) -hasLocation(#20377,#20188) +entry_cfg_node(#20377,#20370) +hasLocation(#20377,#20368) #20378=* -exit_cfg_node(#20378,#20190) -hasLocation(#20378,#20188) -successor(#20193,#20378) -successor(#20377,#20193) -successor(#20189,#20190) -successor(#20187,#20031) -successor(#20161,#20157) +exit_cfg_node(#20378,#20370) +hasLocation(#20378,#20368) +successor(#20373,#20378) +successor(#20377,#20373) +successor(#20369,#20370) +successor(#20367,#20241) +successor(#20346,#20343) #20379=* -entry_cfg_node(#20379,#20161) +entry_cfg_node(#20379,#20346) #20380=@"loc,{#10000},14,3,14,2" locations_default(#20380,#10000,14,3,14,2) hasLocation(#20379,#20380) #20381=* -exit_cfg_node(#20381,#20161) +exit_cfg_node(#20381,#20346) #20382=@"loc,{#10000},14,24,14,23" locations_default(#20382,#10000,14,24,14,23) hasLocation(#20381,#20382) -successor(#20185,#20381) -successor(#20167,#20185) -successor(#20164,#20167) -successor(#20379,#20164) -successor(#20159,#20161) -successor(#20157,#20189) -successor(#20136,#20132) +successor(#20365,#20381) +successor(#20351,#20365) +successor(#20349,#20351) +successor(#20379,#20349) +successor(#20345,#20346) +successor(#20343,#20369) +successor(#20326,#20323) #20383=* -entry_cfg_node(#20383,#20136) +entry_cfg_node(#20383,#20326) #20384=@"loc,{#10000},13,3,13,2" locations_default(#20384,#10000,13,3,13,2) hasLocation(#20383,#20384) #20385=* -exit_cfg_node(#20385,#20136) +exit_cfg_node(#20385,#20326) #20386=@"loc,{#10000},13,20,13,19" locations_default(#20386,#10000,13,20,13,19) hasLocation(#20385,#20386) -successor(#20155,#20385) -successor(#20142,#20155) -successor(#20139,#20142) -successor(#20383,#20139) -successor(#20134,#20136) -successor(#20132,#20159) -successor(#20111,#20107) +successor(#20341,#20385) +successor(#20331,#20341) +successor(#20329,#20331) +successor(#20383,#20329) +successor(#20325,#20326) +successor(#20323,#20345) +successor(#20306,#20303) #20387=* -entry_cfg_node(#20387,#20111) +entry_cfg_node(#20387,#20306) #20388=@"loc,{#10000},11,3,11,2" locations_default(#20388,#10000,11,3,11,2) hasLocation(#20387,#20388) #20389=* -exit_cfg_node(#20389,#20111) +exit_cfg_node(#20389,#20306) #20390=@"loc,{#10000},11,24,11,23" locations_default(#20390,#10000,11,24,11,23) hasLocation(#20389,#20390) -successor(#20130,#20389) -successor(#20117,#20130) -successor(#20114,#20117) -successor(#20387,#20114) -successor(#20109,#20111) -successor(#20107,#20134) -successor(#20091,#20087) +successor(#20321,#20389) +successor(#20311,#20321) +successor(#20309,#20311) +successor(#20387,#20309) +successor(#20305,#20306) +successor(#20303,#20325) +successor(#20290,#20287) #20391=* -entry_cfg_node(#20391,#20091) +entry_cfg_node(#20391,#20290) #20392=@"loc,{#10000},10,3,10,2" locations_default(#20392,#10000,10,3,10,2) hasLocation(#20391,#20392) #20393=* -exit_cfg_node(#20393,#20091) +exit_cfg_node(#20393,#20290) #20394=@"loc,{#10000},10,20,10,19" locations_default(#20394,#10000,10,20,10,19) hasLocation(#20393,#20394) -successor(#20105,#20393) -successor(#20097,#20105) -successor(#20094,#20097) -successor(#20391,#20094) -successor(#20089,#20091) -successor(#20087,#20109) -successor(#20069,#20065) +successor(#20301,#20393) +successor(#20295,#20301) +successor(#20293,#20295) +successor(#20391,#20293) +successor(#20289,#20290) +successor(#20287,#20305) +successor(#20272,#20269) #20395=* -entry_cfg_node(#20395,#20069) +entry_cfg_node(#20395,#20272) #20396=@"loc,{#10000},8,3,8,2" locations_default(#20396,#10000,8,3,8,2) hasLocation(#20395,#20396) #20397=* -exit_cfg_node(#20397,#20069) +exit_cfg_node(#20397,#20272) #20398=@"loc,{#10000},8,18,8,17" locations_default(#20398,#10000,8,18,8,17) hasLocation(#20397,#20398) -successor(#20085,#20397) -successor(#20072,#20085) -successor(#20395,#20072) -successor(#20067,#20069) -successor(#20065,#20089) -successor(#20052,#20048) +successor(#20285,#20397) +successor(#20275,#20285) +successor(#20395,#20275) +successor(#20271,#20272) +successor(#20269,#20289) +successor(#20258,#20255) #20399=* -entry_cfg_node(#20399,#20052) +entry_cfg_node(#20399,#20258) #20400=@"loc,{#10000},7,3,7,2" locations_default(#20400,#10000,7,3,7,2) hasLocation(#20399,#20400) #20401=* -exit_cfg_node(#20401,#20052) +exit_cfg_node(#20401,#20258) #20402=@"loc,{#10000},7,14,7,13" locations_default(#20402,#10000,7,14,7,13) hasLocation(#20401,#20402) -successor(#20063,#20401) -successor(#20055,#20063) -successor(#20399,#20055) -successor(#20050,#20052) -successor(#20048,#20067) -successor(#20040,#20036) +successor(#20267,#20401) +successor(#20261,#20267) +successor(#20399,#20261) +successor(#20257,#20258) +successor(#20255,#20271) +successor(#20248,#20245) #20403=* -entry_cfg_node(#20403,#20040) +entry_cfg_node(#20403,#20248) #20404=@"loc,{#10000},6,3,6,2" locations_default(#20404,#10000,6,3,6,2) hasLocation(#20403,#20404) #20405=* -exit_cfg_node(#20405,#20040) +exit_cfg_node(#20405,#20248) #20406=@"loc,{#10000},6,14,6,13" locations_default(#20406,#10000,6,14,6,13) hasLocation(#20405,#20406) -successor(#20046,#20405) -successor(#20043,#20046) -successor(#20403,#20043) -successor(#20038,#20040) -successor(#20036,#20050) -successor(#20033,#20038) -successor(#20183,#20181) -successor(#20181,#20175) -successor(#20179,#20177) -successor(#20177,#20183) -successor(#20175,#20376) -successor(#20173,#20172) -successor(#20172,#20170) -successor(#20170,#20179) -successor(#20153,#20152) -successor(#20152,#20150) -successor(#20150,#20173) -successor(#20148,#20147) -successor(#20147,#20145) -successor(#20145,#20153) -successor(#20128,#20126) -successor(#20126,#20120) -successor(#20124,#20122) -successor(#20122,#20128) -successor(#20120,#20148) -successor(#20103,#20102) -successor(#20102,#20100) -successor(#20100,#20124) -successor(#20083,#20081) -successor(#20081,#20075) -successor(#20079,#20077) -successor(#20077,#20083) -successor(#20075,#20103) -successor(#20061,#20060) -successor(#20060,#20058) -successor(#20058,#20079) -successor(#20031,#20061) -successor(#20023,#20033) -successor(#20014,#20023) -successor(#20005,#20014) -successor(#20374,#20005) +successor(#20253,#20405) +successor(#20251,#20253) +successor(#20403,#20251) +successor(#20247,#20248) +successor(#20245,#20257) +successor(#20243,#20247) +successor(#20364,#20362) +successor(#20362,#20357) +successor(#20361,#20359) +successor(#20359,#20364) +successor(#20357,#20376) +successor(#20356,#20355) +successor(#20355,#20353) +successor(#20353,#20361) +successor(#20340,#20339) +successor(#20339,#20337) +successor(#20337,#20356) +successor(#20336,#20335) +successor(#20335,#20333) +successor(#20333,#20340) +successor(#20320,#20318) +successor(#20318,#20313) +successor(#20317,#20315) +successor(#20315,#20320) +successor(#20313,#20336) +successor(#20300,#20299) +successor(#20299,#20297) +successor(#20297,#20317) +successor(#20284,#20282) +successor(#20282,#20277) +successor(#20281,#20279) +successor(#20279,#20284) +successor(#20277,#20300) +successor(#20266,#20265) +successor(#20265,#20263) +successor(#20263,#20281) +successor(#20241,#20266) +successor(#20236,#20243) +successor(#20230,#20236) +successor(#20224,#20230) +successor(#20374,#20224) numlines(#10000,15,12,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/hello.ts.trap b/javascript/extractor/tests/ts/output/trap/hello.ts.trap index 73b76774111..d0c7646db34 100644 --- a/javascript/extractor/tests/ts/output/trap/hello.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/hello.ts.trap @@ -9,285 +9,284 @@ 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=@"var;{greeter};{#20000}" -variables(#20003,"greeter",#20000) +#20002=* +lines(#20002,#20001,"function greeter(person: string) {"," +") +#20003=@"loc,{#10000},1,1,1,34" +locations_default(#20003,#10000,1,1,1,34) +hasLocation(#20002,#20003) #20004=* -stmts(#20004,17,#20001,0,"functio ... ""!"";\n}") -#20005=@"loc,{#10000},1,1,3,1" -locations_default(#20005,#10000,1,1,3,1) +lines(#20004,#20001," return ""Hello, "" + person + ""!"";"," +") +#20005=@"loc,{#10000},2,1,2,36" +locations_default(#20005,#10000,2,1,2,36) hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) -#20006=* -exprs(#20006,78,#20004,-1,"greeter") -#20007=@"loc,{#10000},1,10,1,16" -locations_default(#20007,#10000,1,10,1,16) -hasLocation(#20006,#20007) -exprContainers(#20006,#20004) -literals("greeter","greeter",#20006) -decl(#20006,#20003) -#20008=* -scopes(#20008,1) -scopenodes(#20004,#20008) -scopenesting(#20008,#20000) -#20009=@"var;{person};{#20008}" -variables(#20009,"person",#20008) -#20010=* -exprs(#20010,78,#20004,0,"person") -#20011=@"loc,{#10000},1,18,1,23" -locations_default(#20011,#10000,1,18,1,23) -hasLocation(#20010,#20011) -exprContainers(#20010,#20004) -literals("person","person",#20010) -decl(#20010,#20009) -#20012=@"var;{arguments};{#20008}" -variables(#20012,"arguments",#20008) -isArgumentsObject(#20012) -#20013=* -typeexprs(#20013,2,#20004,-6,"string") -#20014=@"loc,{#10000},1,26,1,31" -locations_default(#20014,#10000,1,26,1,31) -hasLocation(#20013,#20014) -exprContainers(#20013,#20004) -literals("string","string",#20013) -#20015=* -stmts(#20015,1,#20004,-2,"{\n r ... ""!"";\n}") -#20016=@"loc,{#10000},1,34,3,1" -locations_default(#20016,#10000,1,34,3,1) -hasLocation(#20015,#20016) -stmtContainers(#20015,#20004) -#20017=* -stmts(#20017,9,#20015,0,"return ... + ""!"";") -#20018=@"loc,{#10000},2,5,2,36" -locations_default(#20018,#10000,2,5,2,36) -hasLocation(#20017,#20018) -stmtContainers(#20017,#20004) -#20019=* -exprs(#20019,34,#20017,0,"""Hello, ... n + ""!""") -#20020=@"loc,{#10000},2,12,2,35" -locations_default(#20020,#10000,2,12,2,35) -hasLocation(#20019,#20020) -enclosingStmt(#20019,#20017) -exprContainers(#20019,#20004) -#20021=* -exprs(#20021,34,#20019,0,"""Hello, "" + person") -#20022=@"loc,{#10000},2,12,2,29" -locations_default(#20022,#10000,2,12,2,29) -hasLocation(#20021,#20022) -enclosingStmt(#20021,#20017) -exprContainers(#20021,#20004) -#20023=* -exprs(#20023,4,#20021,0,"""Hello, """) -#20024=@"loc,{#10000},2,12,2,20" -locations_default(#20024,#10000,2,12,2,20) -hasLocation(#20023,#20024) -enclosingStmt(#20023,#20017) -exprContainers(#20023,#20004) -literals("Hello, ","""Hello, """,#20023) -#20025=* -exprs(#20025,79,#20021,1,"person") -#20026=@"loc,{#10000},2,24,2,29" -locations_default(#20026,#10000,2,24,2,29) -hasLocation(#20025,#20026) -enclosingStmt(#20025,#20017) -exprContainers(#20025,#20004) -literals("person","person",#20025) -bind(#20025,#20009) -#20027=* -exprs(#20027,4,#20019,1,"""!""") -#20028=@"loc,{#10000},2,33,2,35" -locations_default(#20028,#10000,2,33,2,35) -hasLocation(#20027,#20028) -enclosingStmt(#20027,#20017) -exprContainers(#20027,#20004) -literals("!","""!""",#20027) -numlines(#20004,3,3,0) -#20029=* -stmts(#20029,2,#20001,1,"alert(g ... rld""));") -#20030=@"loc,{#10000},5,1,5,24" -locations_default(#20030,#10000,5,1,5,24) -hasLocation(#20029,#20030) -stmtContainers(#20029,#20001) -#20031=* -exprs(#20031,13,#20029,0,"alert(g ... orld""))") -#20032=@"loc,{#10000},5,1,5,23" -locations_default(#20032,#10000,5,1,5,23) -hasLocation(#20031,#20032) -enclosingStmt(#20031,#20029) -exprContainers(#20031,#20001) -#20033=* -exprs(#20033,79,#20031,-1,"alert") -#20034=@"loc,{#10000},5,1,5,5" -locations_default(#20034,#10000,5,1,5,5) -hasLocation(#20033,#20034) -enclosingStmt(#20033,#20029) -exprContainers(#20033,#20001) -literals("alert","alert",#20033) -#20035=@"var;{alert};{#20000}" -variables(#20035,"alert",#20000) -bind(#20033,#20035) -#20036=* -exprs(#20036,13,#20031,0,"greeter(""world"")") -#20037=@"loc,{#10000},5,7,5,22" -locations_default(#20037,#10000,5,7,5,22) -hasLocation(#20036,#20037) -enclosingStmt(#20036,#20029) -exprContainers(#20036,#20001) -#20038=* -exprs(#20038,79,#20036,-1,"greeter") -#20039=@"loc,{#10000},5,7,5,13" -locations_default(#20039,#10000,5,7,5,13) -hasLocation(#20038,#20039) -enclosingStmt(#20038,#20029) -exprContainers(#20038,#20001) -literals("greeter","greeter",#20038) -bind(#20038,#20003) -#20040=* -exprs(#20040,4,#20036,0,"""world""") -#20041=@"loc,{#10000},5,15,5,21" -locations_default(#20041,#10000,5,15,5,21) -hasLocation(#20040,#20041) -enclosingStmt(#20040,#20029) -exprContainers(#20040,#20001) -literals("world","""world""",#20040) -#20042=* -lines(#20042,#20001,"function greeter(person: string) {"," -") -#20043=@"loc,{#10000},1,1,1,34" -locations_default(#20043,#10000,1,1,1,34) -hasLocation(#20042,#20043) -#20044=* -lines(#20044,#20001," return ""Hello, "" + person + ""!"";"," -") -#20045=@"loc,{#10000},2,1,2,36" -locations_default(#20045,#10000,2,1,2,36) -hasLocation(#20044,#20045) indentation(#10000,2," ",4) -#20046=* -lines(#20046,#20001,"}"," +#20006=* +lines(#20006,#20001,"}"," ") -#20047=@"loc,{#10000},3,1,3,1" -locations_default(#20047,#10000,3,1,3,1) -hasLocation(#20046,#20047) -#20048=* -lines(#20048,#20001,""," +#20007=@"loc,{#10000},3,1,3,1" +locations_default(#20007,#10000,3,1,3,1) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001,""," ") -#20049=@"loc,{#10000},4,1,4,0" -locations_default(#20049,#10000,4,1,4,0) -hasLocation(#20048,#20049) -#20050=* -lines(#20050,#20001,"alert(greeter(""world""));"," +#20009=@"loc,{#10000},4,1,4,0" +locations_default(#20009,#10000,4,1,4,0) +hasLocation(#20008,#20009) +#20010=* +lines(#20010,#20001,"alert(greeter(""world""));"," ") -hasLocation(#20050,#20030) +#20011=@"loc,{#10000},5,1,5,24" +locations_default(#20011,#10000,5,1,5,24) +hasLocation(#20010,#20011) numlines(#20001,5,4,0) +#20012=* +tokeninfo(#20012,7,#20001,0,"function") +#20013=@"loc,{#10000},1,1,1,8" +locations_default(#20013,#10000,1,1,1,8) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,6,#20001,1,"greeter") +#20015=@"loc,{#10000},1,10,1,16" +locations_default(#20015,#10000,1,10,1,16) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,2,"(") +#20017=@"loc,{#10000},1,17,1,17" +locations_default(#20017,#10000,1,17,1,17) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,6,#20001,3,"person") +#20019=@"loc,{#10000},1,18,1,23" +locations_default(#20019,#10000,1,18,1,23) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,4,":") +#20021=@"loc,{#10000},1,24,1,24" +locations_default(#20021,#10000,1,24,1,24) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,7,#20001,5,"string") +#20023=@"loc,{#10000},1,26,1,31" +locations_default(#20023,#10000,1,26,1,31) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,6,")") +#20025=@"loc,{#10000},1,32,1,32" +locations_default(#20025,#10000,1,32,1,32) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,7,"{") +#20027=@"loc,{#10000},1,34,1,34" +locations_default(#20027,#10000,1,34,1,34) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,7,#20001,8,"return") +#20029=@"loc,{#10000},2,5,2,10" +locations_default(#20029,#10000,2,5,2,10) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,4,#20001,9,"""Hello, """) +#20031=@"loc,{#10000},2,12,2,20" +locations_default(#20031,#10000,2,12,2,20) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,10,"+") +#20033=@"loc,{#10000},2,22,2,22" +locations_default(#20033,#10000,2,22,2,22) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,6,#20001,11,"person") +#20035=@"loc,{#10000},2,24,2,29" +locations_default(#20035,#10000,2,24,2,29) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,12,"+") +#20037=@"loc,{#10000},2,31,2,31" +locations_default(#20037,#10000,2,31,2,31) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,4,#20001,13,"""!""") +#20039=@"loc,{#10000},2,33,2,35" +locations_default(#20039,#10000,2,33,2,35) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,14,";") +#20041=@"loc,{#10000},2,36,2,36" +locations_default(#20041,#10000,2,36,2,36) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,15,"}") +hasLocation(#20042,#20007) +#20043=* +tokeninfo(#20043,6,#20001,16,"alert") +#20044=@"loc,{#10000},5,1,5,5" +locations_default(#20044,#10000,5,1,5,5) +hasLocation(#20043,#20044) +#20045=* +tokeninfo(#20045,8,#20001,17,"(") +#20046=@"loc,{#10000},5,6,5,6" +locations_default(#20046,#10000,5,6,5,6) +hasLocation(#20045,#20046) +#20047=* +tokeninfo(#20047,6,#20001,18,"greeter") +#20048=@"loc,{#10000},5,7,5,13" +locations_default(#20048,#10000,5,7,5,13) +hasLocation(#20047,#20048) +#20049=* +tokeninfo(#20049,8,#20001,19,"(") +#20050=@"loc,{#10000},5,14,5,14" +locations_default(#20050,#10000,5,14,5,14) +hasLocation(#20049,#20050) #20051=* -tokeninfo(#20051,7,#20001,0,"function") -#20052=@"loc,{#10000},1,1,1,8" -locations_default(#20052,#10000,1,1,1,8) +tokeninfo(#20051,4,#20001,20,"""world""") +#20052=@"loc,{#10000},5,15,5,21" +locations_default(#20052,#10000,5,15,5,21) hasLocation(#20051,#20052) #20053=* -tokeninfo(#20053,6,#20001,1,"greeter") -hasLocation(#20053,#20007) -#20054=* -tokeninfo(#20054,8,#20001,2,"(") -#20055=@"loc,{#10000},1,17,1,17" -locations_default(#20055,#10000,1,17,1,17) -hasLocation(#20054,#20055) -#20056=* -tokeninfo(#20056,6,#20001,3,"person") -hasLocation(#20056,#20011) +tokeninfo(#20053,8,#20001,21,")") +#20054=@"loc,{#10000},5,22,5,22" +locations_default(#20054,#10000,5,22,5,22) +hasLocation(#20053,#20054) +#20055=* +tokeninfo(#20055,8,#20001,22,")") +#20056=@"loc,{#10000},5,23,5,23" +locations_default(#20056,#10000,5,23,5,23) +hasLocation(#20055,#20056) #20057=* -tokeninfo(#20057,8,#20001,4,":") -#20058=@"loc,{#10000},1,24,1,24" -locations_default(#20058,#10000,1,24,1,24) +tokeninfo(#20057,8,#20001,23,";") +#20058=@"loc,{#10000},5,24,5,24" +locations_default(#20058,#10000,5,24,5,24) hasLocation(#20057,#20058) #20059=* -tokeninfo(#20059,7,#20001,5,"string") -hasLocation(#20059,#20014) -#20060=* -tokeninfo(#20060,8,#20001,6,")") -#20061=@"loc,{#10000},1,32,1,32" -locations_default(#20061,#10000,1,32,1,32) -hasLocation(#20060,#20061) -#20062=* -tokeninfo(#20062,8,#20001,7,"{") -#20063=@"loc,{#10000},1,34,1,34" -locations_default(#20063,#10000,1,34,1,34) -hasLocation(#20062,#20063) -#20064=* -tokeninfo(#20064,7,#20001,8,"return") -#20065=@"loc,{#10000},2,5,2,10" -locations_default(#20065,#10000,2,5,2,10) -hasLocation(#20064,#20065) +tokeninfo(#20059,0,#20001,24,"") +#20060=@"loc,{#10000},6,1,6,0" +locations_default(#20060,#10000,6,1,6,0) +hasLocation(#20059,#20060) +toplevels(#20001,0) +#20061=@"loc,{#10000},1,1,6,0" +locations_default(#20061,#10000,1,1,6,0) +hasLocation(#20001,#20061) +#20062=@"var;{greeter};{#20000}" +variables(#20062,"greeter",#20000) +#20063=* +stmts(#20063,17,#20001,0,"functio ... ""!"";\n}") +#20064=@"loc,{#10000},1,1,3,1" +locations_default(#20064,#10000,1,1,3,1) +hasLocation(#20063,#20064) +stmtContainers(#20063,#20001) +#20065=* +exprs(#20065,78,#20063,-1,"greeter") +hasLocation(#20065,#20015) +exprContainers(#20065,#20063) +literals("greeter","greeter",#20065) +decl(#20065,#20062) #20066=* -tokeninfo(#20066,4,#20001,9,"""Hello, """) -hasLocation(#20066,#20024) -#20067=* -tokeninfo(#20067,8,#20001,10,"+") -#20068=@"loc,{#10000},2,22,2,22" -locations_default(#20068,#10000,2,22,2,22) -hasLocation(#20067,#20068) -#20069=* -tokeninfo(#20069,6,#20001,11,"person") -hasLocation(#20069,#20026) +scopes(#20066,1) +scopenodes(#20063,#20066) +scopenesting(#20066,#20000) +#20067=@"var;{person};{#20066}" +variables(#20067,"person",#20066) +#20068=* +exprs(#20068,78,#20063,0,"person") +hasLocation(#20068,#20019) +exprContainers(#20068,#20063) +literals("person","person",#20068) +decl(#20068,#20067) +#20069=@"var;{arguments};{#20066}" +variables(#20069,"arguments",#20066) +isArgumentsObject(#20069) #20070=* -tokeninfo(#20070,8,#20001,12,"+") -#20071=@"loc,{#10000},2,31,2,31" -locations_default(#20071,#10000,2,31,2,31) -hasLocation(#20070,#20071) -#20072=* -tokeninfo(#20072,4,#20001,13,"""!""") -hasLocation(#20072,#20028) +typeexprs(#20070,2,#20063,-6,"string") +hasLocation(#20070,#20023) +exprContainers(#20070,#20063) +literals("string","string",#20070) +#20071=* +stmts(#20071,1,#20063,-2,"{\n r ... ""!"";\n}") +#20072=@"loc,{#10000},1,34,3,1" +locations_default(#20072,#10000,1,34,3,1) +hasLocation(#20071,#20072) +stmtContainers(#20071,#20063) #20073=* -tokeninfo(#20073,8,#20001,14,";") -#20074=@"loc,{#10000},2,36,2,36" -locations_default(#20074,#10000,2,36,2,36) +stmts(#20073,9,#20071,0,"return ... + ""!"";") +#20074=@"loc,{#10000},2,5,2,36" +locations_default(#20074,#10000,2,5,2,36) hasLocation(#20073,#20074) +stmtContainers(#20073,#20063) #20075=* -tokeninfo(#20075,8,#20001,15,"}") -hasLocation(#20075,#20047) -#20076=* -tokeninfo(#20076,6,#20001,16,"alert") -hasLocation(#20076,#20034) +exprs(#20075,34,#20073,0,"""Hello, ... n + ""!""") +#20076=@"loc,{#10000},2,12,2,35" +locations_default(#20076,#10000,2,12,2,35) +hasLocation(#20075,#20076) +enclosingStmt(#20075,#20073) +exprContainers(#20075,#20063) #20077=* -tokeninfo(#20077,8,#20001,17,"(") -#20078=@"loc,{#10000},5,6,5,6" -locations_default(#20078,#10000,5,6,5,6) +exprs(#20077,34,#20075,0,"""Hello, "" + person") +#20078=@"loc,{#10000},2,12,2,29" +locations_default(#20078,#10000,2,12,2,29) hasLocation(#20077,#20078) +enclosingStmt(#20077,#20073) +exprContainers(#20077,#20063) #20079=* -tokeninfo(#20079,6,#20001,18,"greeter") -hasLocation(#20079,#20039) +exprs(#20079,4,#20077,0,"""Hello, """) +hasLocation(#20079,#20031) +enclosingStmt(#20079,#20073) +exprContainers(#20079,#20063) +literals("Hello, ","""Hello, """,#20079) #20080=* -tokeninfo(#20080,8,#20001,19,"(") -#20081=@"loc,{#10000},5,14,5,14" -locations_default(#20081,#10000,5,14,5,14) -hasLocation(#20080,#20081) +exprs(#20080,79,#20077,1,"person") +hasLocation(#20080,#20035) +enclosingStmt(#20080,#20073) +exprContainers(#20080,#20063) +literals("person","person",#20080) +bind(#20080,#20067) +#20081=* +exprs(#20081,4,#20075,1,"""!""") +hasLocation(#20081,#20039) +enclosingStmt(#20081,#20073) +exprContainers(#20081,#20063) +literals("!","""!""",#20081) #20082=* -tokeninfo(#20082,4,#20001,20,"""world""") -hasLocation(#20082,#20041) +stmts(#20082,2,#20001,1,"alert(g ... rld""));") +hasLocation(#20082,#20011) +stmtContainers(#20082,#20001) #20083=* -tokeninfo(#20083,8,#20001,21,")") -#20084=@"loc,{#10000},5,22,5,22" -locations_default(#20084,#10000,5,22,5,22) +exprs(#20083,13,#20082,0,"alert(g ... orld""))") +#20084=@"loc,{#10000},5,1,5,23" +locations_default(#20084,#10000,5,1,5,23) hasLocation(#20083,#20084) +enclosingStmt(#20083,#20082) +exprContainers(#20083,#20001) #20085=* -tokeninfo(#20085,8,#20001,22,")") -#20086=@"loc,{#10000},5,23,5,23" -locations_default(#20086,#10000,5,23,5,23) -hasLocation(#20085,#20086) +exprs(#20085,79,#20083,-1,"alert") +hasLocation(#20085,#20044) +enclosingStmt(#20085,#20082) +exprContainers(#20085,#20001) +literals("alert","alert",#20085) +#20086=@"var;{alert};{#20000}" +variables(#20086,"alert",#20000) +bind(#20085,#20086) #20087=* -tokeninfo(#20087,8,#20001,23,";") -#20088=@"loc,{#10000},5,24,5,24" -locations_default(#20088,#10000,5,24,5,24) +exprs(#20087,13,#20083,0,"greeter(""world"")") +#20088=@"loc,{#10000},5,7,5,22" +locations_default(#20088,#10000,5,7,5,22) hasLocation(#20087,#20088) +enclosingStmt(#20087,#20082) +exprContainers(#20087,#20001) #20089=* -tokeninfo(#20089,0,#20001,24,"") -#20090=@"loc,{#10000},6,1,6,0" -locations_default(#20090,#10000,6,1,6,0) -hasLocation(#20089,#20090) +exprs(#20089,79,#20087,-1,"greeter") +hasLocation(#20089,#20048) +enclosingStmt(#20089,#20082) +exprContainers(#20089,#20001) +literals("greeter","greeter",#20089) +bind(#20089,#20062) +#20090=* +exprs(#20090,4,#20087,0,"""world""") +hasLocation(#20090,#20052) +enclosingStmt(#20090,#20082) +exprContainers(#20090,#20001) +literals("world","""world""",#20090) #20091=* entry_cfg_node(#20091,#20001) #20092=@"loc,{#10000},1,1,1,0" @@ -295,32 +294,32 @@ locations_default(#20092,#10000,1,1,1,0) hasLocation(#20091,#20092) #20093=* exit_cfg_node(#20093,#20001) -hasLocation(#20093,#20090) -successor(#20029,#20033) -successor(#20040,#20036) -successor(#20038,#20040) -successor(#20036,#20031) -successor(#20033,#20038) -successor(#20031,#20093) -successor(#20004,#20029) +hasLocation(#20093,#20060) +successor(#20082,#20085) +successor(#20090,#20087) +successor(#20089,#20090) +successor(#20087,#20083) +successor(#20085,#20089) +successor(#20083,#20093) +successor(#20063,#20082) #20094=* -entry_cfg_node(#20094,#20004) +entry_cfg_node(#20094,#20063) hasLocation(#20094,#20092) #20095=* -exit_cfg_node(#20095,#20004) +exit_cfg_node(#20095,#20063) #20096=@"loc,{#10000},3,2,3,1" locations_default(#20096,#10000,3,2,3,1) hasLocation(#20095,#20096) -successor(#20015,#20023) -successor(#20027,#20019) -successor(#20025,#20021) -successor(#20023,#20025) -successor(#20021,#20027) -successor(#20019,#20017) -successor(#20017,#20095) -successor(#20010,#20015) -successor(#20094,#20010) -successor(#20006,#20004) -successor(#20091,#20006) +successor(#20071,#20079) +successor(#20081,#20075) +successor(#20080,#20077) +successor(#20079,#20080) +successor(#20077,#20081) +successor(#20075,#20073) +successor(#20073,#20095) +successor(#20068,#20071) +successor(#20094,#20068) +successor(#20065,#20063) +successor(#20091,#20065) numlines(#10000,5,4,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/importExport.ts.trap b/javascript/extractor/tests/ts/output/trap/importExport.ts.trap index de08e495ed8..4b9267996c0 100644 --- a/javascript/extractor/tests/ts/output/trap/importExport.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/importExport.ts.trap @@ -9,194 +9,195 @@ 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=@"module;{#10000},1,1" -scopes(#20003,3) -scopenodes(#20001,#20003) -scopenesting(#20003,#20000) -isModule(#20001) -#20004=@"var;{Something};{#20003}" -variables(#20004,"Something",#20003) -#20005=@"var;{importExport};{#20003}" -variables(#20005,"importExport",#20003) -#20006=@"local_type_name;{importExport};{#20003}" -local_type_names(#20006,"importExport",#20003) -#20007=@"local_namespace_name;{Something};{#20003}" -local_namespace_names(#20007,"Something",#20003) -#20008=@"local_namespace_name;{importExport};{#20003}" -local_namespace_names(#20008,"importExport",#20003) -variables(#20004,"Something",#20003) -variables(#20005,"importExport",#20003) -local_type_names(#20006,"importExport",#20003) -local_namespace_names(#20007,"Something",#20003) -local_namespace_names(#20008,"importExport",#20003) -#20009=* -stmts(#20009,27,#20001,0,"import ... where';") -#20010=@"loc,{#10000},1,1,1,39" -locations_default(#20010,#10000,1,1,1,39) -hasLocation(#20009,#20010) -stmtContainers(#20009,#20001) -#20011=* -exprs(#20011,4,#20009,-1,"'somewhere'") -#20012=@"loc,{#10000},1,28,1,38" -locations_default(#20012,#10000,1,28,1,38) -hasLocation(#20011,#20012) -enclosingStmt(#20011,#20009) -exprContainers(#20011,#20001) -literals("somewhere","'somewhere'",#20011) -#20013=* -exprs(#20013,85,#20009,0,"* as Something") -#20014=@"loc,{#10000},1,8,1,21" -locations_default(#20014,#10000,1,8,1,21) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20009) -exprContainers(#20013,#20001) -#20015=* -exprs(#20015,78,#20013,1,"Something") -#20016=@"loc,{#10000},1,13,1,21" -locations_default(#20016,#10000,1,13,1,21) -hasLocation(#20015,#20016) -enclosingStmt(#20015,#20009) -exprContainers(#20015,#20001) -literals("Something","Something",#20015) -decl(#20015,#20004) -namespacedecl(#20015,#20007) -#20017=* -stmts(#20017,30,#20001,1,"export ... thingy;") -#20018=@"loc,{#10000},3,1,3,46" -locations_default(#20018,#10000,3,1,3,46) -hasLocation(#20017,#20018) -stmtContainers(#20017,#20001) -#20019=* -stmts(#20019,32,#20017,-1,"import ... thingy;") -#20020=@"loc,{#10000},3,8,3,46" -locations_default(#20020,#10000,3,8,3,46) -hasLocation(#20019,#20020) -stmtContainers(#20019,#20001) -#20021=* -exprs(#20021,78,#20019,0,"importExport") -#20022=@"loc,{#10000},3,15,3,26" -locations_default(#20022,#10000,3,15,3,26) -hasLocation(#20021,#20022) -enclosingStmt(#20021,#20019) -exprContainers(#20021,#20001) -literals("importExport","importExport",#20021) -decl(#20021,#20005) -typedecl(#20021,#20006) -namespacedecl(#20021,#20008) -#20023=* -exprs(#20023,14,#20019,1,"Something.thingy") -#20024=@"loc,{#10000},3,30,3,45" -locations_default(#20024,#10000,3,30,3,45) -hasLocation(#20023,#20024) -enclosingStmt(#20023,#20019) -exprContainers(#20023,#20001) -#20025=* -exprs(#20025,103,#20023,0,"Something") -#20026=@"loc,{#10000},3,30,3,38" -locations_default(#20026,#10000,3,30,3,38) -hasLocation(#20025,#20026) -enclosingStmt(#20025,#20019) -exprContainers(#20025,#20001) -literals("Something","Something",#20025) -namespacebind(#20025,#20007) -bind(#20025,#20004) -#20027=* -exprs(#20027,0,#20023,1,"thingy") -#20028=@"loc,{#10000},3,40,3,45" -locations_default(#20028,#10000,3,40,3,45) -hasLocation(#20027,#20028) -enclosingStmt(#20027,#20019) -exprContainers(#20027,#20001) -literals("thingy","thingy",#20027) -#20029=* -lines(#20029,#20001,"import * as Something from 'somewhere';"," +#20002=* +lines(#20002,#20001,"import * as Something from 'somewhere';"," ") -hasLocation(#20029,#20010) +#20003=@"loc,{#10000},1,1,1,39" +locations_default(#20003,#10000,1,1,1,39) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,""," +") +#20005=@"loc,{#10000},2,1,2,0" +locations_default(#20005,#10000,2,1,2,0) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"export import importExport = Something.thingy;"," +") +#20007=@"loc,{#10000},3,1,3,46" +locations_default(#20007,#10000,3,1,3,46) +hasLocation(#20006,#20007) +numlines(#20001,3,2,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,8,#20001,1,"*") +#20011=@"loc,{#10000},1,8,1,8" +locations_default(#20011,#10000,1,8,1,8) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,7,#20001,2,"as") +#20013=@"loc,{#10000},1,10,1,11" +locations_default(#20013,#10000,1,10,1,11) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,6,#20001,3,"Something") +#20015=@"loc,{#10000},1,13,1,21" +locations_default(#20015,#10000,1,13,1,21) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,7,#20001,4,"from") +#20017=@"loc,{#10000},1,23,1,26" +locations_default(#20017,#10000,1,23,1,26) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,4,#20001,5,"'somewhere'") +#20019=@"loc,{#10000},1,28,1,38" +locations_default(#20019,#10000,1,28,1,38) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,6,";") +#20021=@"loc,{#10000},1,39,1,39" +locations_default(#20021,#10000,1,39,1,39) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,7,#20001,7,"export") +#20023=@"loc,{#10000},3,1,3,6" +locations_default(#20023,#10000,3,1,3,6) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,7,#20001,8,"import") +#20025=@"loc,{#10000},3,8,3,13" +locations_default(#20025,#10000,3,8,3,13) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,6,#20001,9,"importExport") +#20027=@"loc,{#10000},3,15,3,26" +locations_default(#20027,#10000,3,15,3,26) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,10,"=") +#20029=@"loc,{#10000},3,28,3,28" +locations_default(#20029,#10000,3,28,3,28) +hasLocation(#20028,#20029) #20030=* -lines(#20030,#20001,""," -") -#20031=@"loc,{#10000},2,1,2,0" -locations_default(#20031,#10000,2,1,2,0) +tokeninfo(#20030,6,#20001,11,"Something") +#20031=@"loc,{#10000},3,30,3,38" +locations_default(#20031,#10000,3,30,3,38) hasLocation(#20030,#20031) #20032=* -lines(#20032,#20001,"export import importExport = Something.thingy;"," -") -hasLocation(#20032,#20018) -numlines(#20001,3,2,0) -#20033=* -tokeninfo(#20033,7,#20001,0,"import") -#20034=@"loc,{#10000},1,1,1,6" -locations_default(#20034,#10000,1,1,1,6) -hasLocation(#20033,#20034) -#20035=* -tokeninfo(#20035,8,#20001,1,"*") -#20036=@"loc,{#10000},1,8,1,8" -locations_default(#20036,#10000,1,8,1,8) -hasLocation(#20035,#20036) -#20037=* -tokeninfo(#20037,7,#20001,2,"as") -#20038=@"loc,{#10000},1,10,1,11" -locations_default(#20038,#10000,1,10,1,11) -hasLocation(#20037,#20038) -#20039=* -tokeninfo(#20039,6,#20001,3,"Something") -hasLocation(#20039,#20016) -#20040=* -tokeninfo(#20040,7,#20001,4,"from") -#20041=@"loc,{#10000},1,23,1,26" -locations_default(#20041,#10000,1,23,1,26) -hasLocation(#20040,#20041) -#20042=* -tokeninfo(#20042,4,#20001,5,"'somewhere'") -hasLocation(#20042,#20012) -#20043=* -tokeninfo(#20043,8,#20001,6,";") -#20044=@"loc,{#10000},1,39,1,39" -locations_default(#20044,#10000,1,39,1,39) -hasLocation(#20043,#20044) -#20045=* -tokeninfo(#20045,7,#20001,7,"export") -#20046=@"loc,{#10000},3,1,3,6" -locations_default(#20046,#10000,3,1,3,6) -hasLocation(#20045,#20046) +tokeninfo(#20032,8,#20001,12,".") +#20033=@"loc,{#10000},3,39,3,39" +locations_default(#20033,#10000,3,39,3,39) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,6,#20001,13,"thingy") +#20035=@"loc,{#10000},3,40,3,45" +locations_default(#20035,#10000,3,40,3,45) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,14,";") +#20037=@"loc,{#10000},3,46,3,46" +locations_default(#20037,#10000,3,46,3,46) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,0,#20001,15,"") +#20039=@"loc,{#10000},4,1,4,0" +locations_default(#20039,#10000,4,1,4,0) +hasLocation(#20038,#20039) +toplevels(#20001,0) +#20040=@"loc,{#10000},1,1,4,0" +locations_default(#20040,#10000,1,1,4,0) +hasLocation(#20001,#20040) +#20041=@"module;{#10000},1,1" +scopes(#20041,3) +scopenodes(#20001,#20041) +scopenesting(#20041,#20000) +isModule(#20001) +isES2015Module(#20001) +#20042=@"var;{Something};{#20041}" +variables(#20042,"Something",#20041) +#20043=@"var;{importExport};{#20041}" +variables(#20043,"importExport",#20041) +#20044=@"local_type_name;{importExport};{#20041}" +local_type_names(#20044,"importExport",#20041) +#20045=@"local_namespace_name;{Something};{#20041}" +local_namespace_names(#20045,"Something",#20041) +#20046=@"local_namespace_name;{importExport};{#20041}" +local_namespace_names(#20046,"importExport",#20041) +variables(#20042,"Something",#20041) +variables(#20043,"importExport",#20041) +local_type_names(#20044,"importExport",#20041) +local_namespace_names(#20045,"Something",#20041) +local_namespace_names(#20046,"importExport",#20041) #20047=* -tokeninfo(#20047,7,#20001,8,"import") -#20048=@"loc,{#10000},3,8,3,13" -locations_default(#20048,#10000,3,8,3,13) -hasLocation(#20047,#20048) +stmts(#20047,27,#20001,0,"import ... where';") +hasLocation(#20047,#20003) +stmtContainers(#20047,#20001) +#20048=* +exprs(#20048,4,#20047,-1,"'somewhere'") +hasLocation(#20048,#20019) +enclosingStmt(#20048,#20047) +exprContainers(#20048,#20001) +literals("somewhere","'somewhere'",#20048) #20049=* -tokeninfo(#20049,6,#20001,9,"importExport") -hasLocation(#20049,#20022) -#20050=* -tokeninfo(#20050,8,#20001,10,"=") -#20051=@"loc,{#10000},3,28,3,28" -locations_default(#20051,#10000,3,28,3,28) -hasLocation(#20050,#20051) +exprs(#20049,85,#20047,0,"* as Something") +#20050=@"loc,{#10000},1,8,1,21" +locations_default(#20050,#10000,1,8,1,21) +hasLocation(#20049,#20050) +enclosingStmt(#20049,#20047) +exprContainers(#20049,#20001) +#20051=* +exprs(#20051,78,#20049,1,"Something") +hasLocation(#20051,#20015) +enclosingStmt(#20051,#20047) +exprContainers(#20051,#20001) +literals("Something","Something",#20051) +decl(#20051,#20042) +namespacedecl(#20051,#20045) #20052=* -tokeninfo(#20052,6,#20001,11,"Something") -hasLocation(#20052,#20026) +stmts(#20052,30,#20001,1,"export ... thingy;") +hasLocation(#20052,#20007) +stmtContainers(#20052,#20001) #20053=* -tokeninfo(#20053,8,#20001,12,".") -#20054=@"loc,{#10000},3,39,3,39" -locations_default(#20054,#10000,3,39,3,39) +stmts(#20053,32,#20052,-1,"import ... thingy;") +#20054=@"loc,{#10000},3,8,3,46" +locations_default(#20054,#10000,3,8,3,46) hasLocation(#20053,#20054) +stmtContainers(#20053,#20001) #20055=* -tokeninfo(#20055,6,#20001,13,"thingy") -hasLocation(#20055,#20028) +exprs(#20055,78,#20053,0,"importExport") +hasLocation(#20055,#20027) +enclosingStmt(#20055,#20053) +exprContainers(#20055,#20001) +literals("importExport","importExport",#20055) +decl(#20055,#20043) +typedecl(#20055,#20044) +namespacedecl(#20055,#20046) #20056=* -tokeninfo(#20056,8,#20001,14,";") -#20057=@"loc,{#10000},3,46,3,46" -locations_default(#20057,#10000,3,46,3,46) +exprs(#20056,14,#20053,1,"Something.thingy") +#20057=@"loc,{#10000},3,30,3,45" +locations_default(#20057,#10000,3,30,3,45) hasLocation(#20056,#20057) +enclosingStmt(#20056,#20053) +exprContainers(#20056,#20001) #20058=* -tokeninfo(#20058,0,#20001,15,"") -#20059=@"loc,{#10000},4,1,4,0" -locations_default(#20059,#10000,4,1,4,0) -hasLocation(#20058,#20059) +exprs(#20058,103,#20056,0,"Something") +hasLocation(#20058,#20031) +enclosingStmt(#20058,#20053) +exprContainers(#20058,#20001) +literals("Something","Something",#20058) +namespacebind(#20058,#20045) +bind(#20058,#20042) +#20059=* +exprs(#20059,0,#20056,1,"thingy") +hasLocation(#20059,#20035) +enclosingStmt(#20059,#20053) +exprContainers(#20059,#20001) +literals("thingy","thingy",#20059) #20060=* entry_cfg_node(#20060,#20001) #20061=@"loc,{#10000},1,1,1,0" @@ -204,15 +205,15 @@ locations_default(#20061,#10000,1,1,1,0) hasLocation(#20060,#20061) #20062=* exit_cfg_node(#20062,#20001) -hasLocation(#20062,#20059) -successor(#20017,#20021) -successor(#20027,#20023) -successor(#20025,#20027) -successor(#20023,#20019) -successor(#20021,#20025) -successor(#20019,#20062) -successor(#20009,#20017) -successor(#20013,#20009) -successor(#20060,#20013) +hasLocation(#20062,#20039) +successor(#20052,#20055) +successor(#20059,#20056) +successor(#20058,#20059) +successor(#20056,#20053) +successor(#20055,#20058) +successor(#20053,#20062) +successor(#20047,#20052) +successor(#20049,#20047) +successor(#20060,#20049) numlines(#10000,3,2,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/importassign.ts.trap b/javascript/extractor/tests/ts/output/trap/importassign.ts.trap index e16168664d5..10f8c933632 100644 --- a/javascript/extractor/tests/ts/output/trap/importassign.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/importassign.ts.trap @@ -9,102 +9,103 @@ 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;{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,32,#20001,0,"import ... sign"");") -#20008=@"loc,{#10000},1,1,1,37" -locations_default(#20008,#10000,1,1,1,37) -hasLocation(#20007,#20008) -stmtContainers(#20007,#20001) -#20009=* -exprs(#20009,78,#20007,0,"x") -#20010=@"loc,{#10000},1,8,1,8" -locations_default(#20010,#10000,1,8,1,8) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20007) -exprContainers(#20009,#20001) -literals("x","x",#20009) -decl(#20009,#20004) -typedecl(#20009,#20005) -namespacedecl(#20009,#20006) -#20011=* -exprs(#20011,98,#20007,1,"require ... ssign"")") -#20012=@"loc,{#10000},1,12,1,36" -locations_default(#20012,#10000,1,12,1,36) -hasLocation(#20011,#20012) -enclosingStmt(#20011,#20007) -exprContainers(#20011,#20001) -#20013=* -exprs(#20013,4,#20011,0,"""./exportassign""") -#20014=@"loc,{#10000},1,20,1,35" -locations_default(#20014,#10000,1,20,1,35) -hasLocation(#20013,#20014) -enclosingStmt(#20013,#20007) -exprContainers(#20013,#20001) -literals("./exportassign","""./exportassign""",#20013) -#20015=* -lines(#20015,#20001,"import x = require(""./exportassign"");"," +#20002=* +lines(#20002,#20001,"import x = require(""./exportassign"");"," ") -hasLocation(#20015,#20008) +#20003=@"loc,{#10000},1,1,1,37" +locations_default(#20003,#10000,1,1,1,37) +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,8,#20001,2,"=") +#20009=@"loc,{#10000},1,10,1,10" +locations_default(#20009,#10000,1,10,1,10) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,7,#20001,3,"require") +#20011=@"loc,{#10000},1,12,1,18" +locations_default(#20011,#10000,1,12,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,4,#20001,5,"""./exportassign""") +#20015=@"loc,{#10000},1,20,1,35" +locations_default(#20015,#10000,1,20,1,35) +hasLocation(#20014,#20015) #20016=* -tokeninfo(#20016,7,#20001,0,"import") -#20017=@"loc,{#10000},1,1,1,6" -locations_default(#20017,#10000,1,1,1,6) +tokeninfo(#20016,8,#20001,6,")") +#20017=@"loc,{#10000},1,36,1,36" +locations_default(#20017,#10000,1,36,1,36) hasLocation(#20016,#20017) #20018=* -tokeninfo(#20018,6,#20001,1,"x") -hasLocation(#20018,#20010) -#20019=* -tokeninfo(#20019,8,#20001,2,"=") -#20020=@"loc,{#10000},1,10,1,10" -locations_default(#20020,#10000,1,10,1,10) -hasLocation(#20019,#20020) -#20021=* -tokeninfo(#20021,7,#20001,3,"require") -#20022=@"loc,{#10000},1,12,1,18" -locations_default(#20022,#10000,1,12,1,18) -hasLocation(#20021,#20022) -#20023=* -tokeninfo(#20023,8,#20001,4,"(") -#20024=@"loc,{#10000},1,19,1,19" -locations_default(#20024,#10000,1,19,1,19) -hasLocation(#20023,#20024) -#20025=* -tokeninfo(#20025,4,#20001,5,"""./exportassign""") -hasLocation(#20025,#20014) -#20026=* -tokeninfo(#20026,8,#20001,6,")") -#20027=@"loc,{#10000},1,36,1,36" -locations_default(#20027,#10000,1,36,1,36) -hasLocation(#20026,#20027) +tokeninfo(#20018,8,#20001,7,";") +#20019=@"loc,{#10000},1,37,1,37" +locations_default(#20019,#10000,1,37,1,37) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,0,#20001,8,"") +#20021=@"loc,{#10000},2,1,2,0" +locations_default(#20021,#10000,2,1,2,0) +hasLocation(#20020,#20021) +toplevels(#20001,0) +#20022=@"loc,{#10000},1,1,2,0" +locations_default(#20022,#10000,1,1,2,0) +hasLocation(#20001,#20022) +#20023=@"module;{#10000},1,1" +scopes(#20023,3) +scopenodes(#20001,#20023) +scopenesting(#20023,#20000) +isModule(#20001) +isES2015Module(#20001) +#20024=@"var;{x};{#20023}" +variables(#20024,"x",#20023) +#20025=@"local_type_name;{x};{#20023}" +local_type_names(#20025,"x",#20023) +#20026=@"local_namespace_name;{x};{#20023}" +local_namespace_names(#20026,"x",#20023) +variables(#20024,"x",#20023) +local_type_names(#20025,"x",#20023) +local_namespace_names(#20026,"x",#20023) +#20027=* +stmts(#20027,32,#20001,0,"import ... sign"");") +hasLocation(#20027,#20003) +stmtContainers(#20027,#20001) #20028=* -tokeninfo(#20028,8,#20001,7,";") -#20029=@"loc,{#10000},1,37,1,37" -locations_default(#20029,#10000,1,37,1,37) -hasLocation(#20028,#20029) -#20030=* -tokeninfo(#20030,0,#20001,8,"") -#20031=@"loc,{#10000},2,1,2,0" -locations_default(#20031,#10000,2,1,2,0) -hasLocation(#20030,#20031) +exprs(#20028,78,#20027,0,"x") +hasLocation(#20028,#20007) +enclosingStmt(#20028,#20027) +exprContainers(#20028,#20001) +literals("x","x",#20028) +decl(#20028,#20024) +typedecl(#20028,#20025) +namespacedecl(#20028,#20026) +#20029=* +exprs(#20029,98,#20027,1,"require ... ssign"")") +#20030=@"loc,{#10000},1,12,1,36" +locations_default(#20030,#10000,1,12,1,36) +hasLocation(#20029,#20030) +enclosingStmt(#20029,#20027) +exprContainers(#20029,#20001) +#20031=* +exprs(#20031,4,#20029,0,"""./exportassign""") +hasLocation(#20031,#20015) +enclosingStmt(#20031,#20027) +exprContainers(#20031,#20001) +literals("./exportassign","""./exportassign""",#20031) #20032=* entry_cfg_node(#20032,#20001) #20033=@"loc,{#10000},1,1,1,0" @@ -112,11 +113,11 @@ locations_default(#20033,#10000,1,1,1,0) hasLocation(#20032,#20033) #20034=* exit_cfg_node(#20034,#20001) -hasLocation(#20034,#20031) -successor(#20013,#20011) -successor(#20011,#20007) -successor(#20009,#20013) -successor(#20007,#20034) -successor(#20032,#20009) +hasLocation(#20034,#20021) +successor(#20031,#20029) +successor(#20029,#20027) +successor(#20028,#20031) +successor(#20027,#20034) +successor(#20032,#20028) numlines(#10000,1,1,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/interfaces.ts.trap b/javascript/extractor/tests/ts/output/trap/interfaces.ts.trap index 7b31fda6ffa..03f03a36101 100644 --- a/javascript/extractor/tests/ts/output/trap/interfaces.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/interfaces.ts.trap @@ -9,423 +9,420 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,12,0" -locations_default(#20002,#10000,1,1,12,0) -hasLocation(#20001,#20002) -#20003=@"local_namespace_name;{Foo};{#20000}" -local_namespace_names(#20003,"Foo",#20000) -#20004=@"local_type_name;{MyInterface};{#20000}" -local_type_names(#20004,"MyInterface",#20000) -#20005=* -stmts(#20005,34,#20001,0,"interfa ... mber;\n}") -#20006=@"loc,{#10000},1,1,5,1" -locations_default(#20006,#10000,1,1,5,1) -hasLocation(#20005,#20006) -stmtContainers(#20005,#20001) -#20007=* -typeexprs(#20007,1,#20005,0,"MyInterface") -#20008=@"loc,{#10000},1,11,1,21" -locations_default(#20008,#10000,1,11,1,21) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20005) -exprContainers(#20007,#20001) -literals("MyInterface","MyInterface",#20007) -typedecl(#20007,#20004) -#20009=* -properties(#20009,#20005,2,0,"foo();") -#20010=@"loc,{#10000},2,3,2,8" -locations_default(#20010,#10000,2,3,2,8) -hasLocation(#20009,#20010) -#20011=* -exprs(#20011,0,#20009,0,"foo") -#20012=@"loc,{#10000},2,3,2,5" -locations_default(#20012,#10000,2,3,2,5) -hasLocation(#20011,#20012) -enclosingStmt(#20011,#20005) -exprContainers(#20011,#20001) -literals("foo","foo",#20011) -#20013=* -exprs(#20013,9,#20009,1,"foo();") -hasLocation(#20013,#20010) -enclosingStmt(#20013,#20005) -exprContainers(#20013,#20001) +#20002=* +lines(#20002,#20001,"interface MyInterface {"," +") +#20003=@"loc,{#10000},1,1,1,23" +locations_default(#20003,#10000,1,1,1,23) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," foo();"," +") +#20005=@"loc,{#10000},2,1,2,8" +locations_default(#20005,#10000,2,1,2,8) +hasLocation(#20004,#20005) +indentation(#10000,2," ",2) +#20006=* +lines(#20006,#20001," bar(x: number): string;"," +") +#20007=@"loc,{#10000},3,1,3,25" +locations_default(#20007,#10000,3,1,3,25) +hasLocation(#20006,#20007) +indentation(#10000,3," ",2) +#20008=* +lines(#20008,#20001," field: number;"," +") +#20009=@"loc,{#10000},4,1,4,16" +locations_default(#20009,#10000,4,1,4,16) +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) +#20012=* +lines(#20012,#20001,""," +") +#20013=@"loc,{#10000},6,1,6,0" +locations_default(#20013,#10000,6,1,6,0) +hasLocation(#20012,#20013) #20014=* -scopes(#20014,1) -scopenodes(#20013,#20014) -scopenesting(#20014,#20000) -#20015=@"var;{arguments};{#20014}" -variables(#20015,"arguments",#20014) -isArgumentsObject(#20015) -numlines(#20013,1,1,0) -isMethod(#20009) -isAbstractMember(#20009) +lines(#20014,#20001,"namespace Foo {"," +") +#20015=@"loc,{#10000},7,1,7,15" +locations_default(#20015,#10000,7,1,7,15) +hasLocation(#20014,#20015) #20016=* -properties(#20016,#20005,3,0,"bar(x: ... string;") -#20017=@"loc,{#10000},3,3,3,25" -locations_default(#20017,#10000,3,3,3,25) +lines(#20016,#20001," export interface I {"," +") +#20017=@"loc,{#10000},8,1,8,22" +locations_default(#20017,#10000,8,1,8,22) hasLocation(#20016,#20017) +indentation(#10000,8," ",2) #20018=* -exprs(#20018,0,#20016,0,"bar") -#20019=@"loc,{#10000},3,3,3,5" -locations_default(#20019,#10000,3,3,3,5) +lines(#20018,#20001," bar();"," +") +#20019=@"loc,{#10000},9,1,9,10" +locations_default(#20019,#10000,9,1,9,10) hasLocation(#20018,#20019) -enclosingStmt(#20018,#20005) -exprContainers(#20018,#20001) -literals("bar","bar",#20018) +indentation(#10000,9," ",4) #20020=* -exprs(#20020,9,#20016,1,"bar(x: ... string;") -hasLocation(#20020,#20017) -enclosingStmt(#20020,#20005) -exprContainers(#20020,#20001) -#20021=* -scopes(#20021,1) -scopenodes(#20020,#20021) -scopenesting(#20021,#20000) -#20022=@"var;{x};{#20021}" -variables(#20022,"x",#20021) -#20023=* -exprs(#20023,78,#20020,0,"x") -#20024=@"loc,{#10000},3,7,3,7" -locations_default(#20024,#10000,3,7,3,7) -hasLocation(#20023,#20024) -exprContainers(#20023,#20020) -literals("x","x",#20023) -decl(#20023,#20022) -#20025=@"var;{arguments};{#20021}" -variables(#20025,"arguments",#20021) -isArgumentsObject(#20025) +lines(#20020,#20001," }"," +") +#20021=@"loc,{#10000},10,1,10,3" +locations_default(#20021,#10000,10,1,10,3) +hasLocation(#20020,#20021) +indentation(#10000,10," ",2) +#20022=* +lines(#20022,#20001,"}"," +") +#20023=@"loc,{#10000},11,1,11,1" +locations_default(#20023,#10000,11,1,11,1) +hasLocation(#20022,#20023) +numlines(#20001,11,10,0) +#20024=* +tokeninfo(#20024,7,#20001,0,"interface") +#20025=@"loc,{#10000},1,1,1,9" +locations_default(#20025,#10000,1,1,1,9) +hasLocation(#20024,#20025) #20026=* -typeexprs(#20026,2,#20020,-3,"string") -#20027=@"loc,{#10000},3,19,3,24" -locations_default(#20027,#10000,3,19,3,24) +tokeninfo(#20026,6,#20001,1,"MyInterface") +#20027=@"loc,{#10000},1,11,1,21" +locations_default(#20027,#10000,1,11,1,21) hasLocation(#20026,#20027) -exprContainers(#20026,#20020) -literals("string","string",#20026) #20028=* -typeexprs(#20028,2,#20020,-6,"number") -#20029=@"loc,{#10000},3,10,3,15" -locations_default(#20029,#10000,3,10,3,15) +tokeninfo(#20028,8,#20001,2,"{") +#20029=@"loc,{#10000},1,23,1,23" +locations_default(#20029,#10000,1,23,1,23) hasLocation(#20028,#20029) -exprContainers(#20028,#20020) -literals("number","number",#20028) -numlines(#20020,1,1,0) -isMethod(#20016) -isAbstractMember(#20016) #20030=* -properties(#20030,#20005,4,8,"field: number;") -#20031=@"loc,{#10000},4,3,4,16" -locations_default(#20031,#10000,4,3,4,16) +tokeninfo(#20030,6,#20001,3,"foo") +#20031=@"loc,{#10000},2,3,2,5" +locations_default(#20031,#10000,2,3,2,5) hasLocation(#20030,#20031) #20032=* -exprs(#20032,0,#20030,0,"field") -#20033=@"loc,{#10000},4,3,4,7" -locations_default(#20033,#10000,4,3,4,7) +tokeninfo(#20032,8,#20001,4,"(") +#20033=@"loc,{#10000},2,6,2,6" +locations_default(#20033,#10000,2,6,2,6) hasLocation(#20032,#20033) -enclosingStmt(#20032,#20005) -exprContainers(#20032,#20001) -literals("field","field",#20032) -isAbstractMember(#20030) #20034=* -typeexprs(#20034,2,#20030,2,"number") -#20035=@"loc,{#10000},4,10,4,15" -locations_default(#20035,#10000,4,10,4,15) +tokeninfo(#20034,8,#20001,5,")") +#20035=@"loc,{#10000},2,7,2,7" +locations_default(#20035,#10000,2,7,2,7) hasLocation(#20034,#20035) -enclosingStmt(#20034,#20005) -exprContainers(#20034,#20001) -literals("number","number",#20034) #20036=* -stmts(#20036,31,#20001,1,"namespa ... ;\n }\n}") -#20037=@"loc,{#10000},7,1,11,1" -locations_default(#20037,#10000,7,1,11,1) +tokeninfo(#20036,8,#20001,6,";") +#20037=@"loc,{#10000},2,8,2,8" +locations_default(#20037,#10000,2,8,2,8) hasLocation(#20036,#20037) -stmtContainers(#20036,#20001) #20038=* -exprs(#20038,78,#20036,-1,"Foo") -#20039=@"loc,{#10000},7,11,7,13" -locations_default(#20039,#10000,7,11,7,13) +tokeninfo(#20038,6,#20001,7,"bar") +#20039=@"loc,{#10000},3,3,3,5" +locations_default(#20039,#10000,3,3,3,5) hasLocation(#20038,#20039) -enclosingStmt(#20038,#20036) -exprContainers(#20038,#20001) -literals("Foo","Foo",#20038) -namespacedecl(#20038,#20003) #20040=* -scopes(#20040,9) -scopenodes(#20036,#20040) -scopenesting(#20040,#20000) -#20041=@"local_type_name;{I};{#20040}" -local_type_names(#20041,"I",#20040) +tokeninfo(#20040,8,#20001,8,"(") +#20041=@"loc,{#10000},3,6,3,6" +locations_default(#20041,#10000,3,6,3,6) +hasLocation(#20040,#20041) #20042=* -stmts(#20042,30,#20036,0,"export ... ();\n }") -#20043=@"loc,{#10000},8,3,10,3" -locations_default(#20043,#10000,8,3,10,3) +tokeninfo(#20042,6,#20001,9,"x") +#20043=@"loc,{#10000},3,7,3,7" +locations_default(#20043,#10000,3,7,3,7) hasLocation(#20042,#20043) -stmtContainers(#20042,#20036) #20044=* -stmts(#20044,34,#20042,-1,"interfa ... ();\n }") -#20045=@"loc,{#10000},8,10,10,3" -locations_default(#20045,#10000,8,10,10,3) +tokeninfo(#20044,8,#20001,10,":") +#20045=@"loc,{#10000},3,8,3,8" +locations_default(#20045,#10000,3,8,3,8) hasLocation(#20044,#20045) -stmtContainers(#20044,#20036) #20046=* -typeexprs(#20046,1,#20044,0,"I") -#20047=@"loc,{#10000},8,20,8,20" -locations_default(#20047,#10000,8,20,8,20) +tokeninfo(#20046,7,#20001,11,"number") +#20047=@"loc,{#10000},3,10,3,15" +locations_default(#20047,#10000,3,10,3,15) hasLocation(#20046,#20047) -enclosingStmt(#20046,#20044) -exprContainers(#20046,#20036) -literals("I","I",#20046) -typedecl(#20046,#20041) #20048=* -properties(#20048,#20044,2,0,"bar();") -#20049=@"loc,{#10000},9,5,9,10" -locations_default(#20049,#10000,9,5,9,10) +tokeninfo(#20048,8,#20001,12,")") +#20049=@"loc,{#10000},3,16,3,16" +locations_default(#20049,#10000,3,16,3,16) hasLocation(#20048,#20049) #20050=* -exprs(#20050,0,#20048,0,"bar") -#20051=@"loc,{#10000},9,5,9,7" -locations_default(#20051,#10000,9,5,9,7) +tokeninfo(#20050,8,#20001,13,":") +#20051=@"loc,{#10000},3,17,3,17" +locations_default(#20051,#10000,3,17,3,17) hasLocation(#20050,#20051) -enclosingStmt(#20050,#20044) -exprContainers(#20050,#20036) -literals("bar","bar",#20050) #20052=* -exprs(#20052,9,#20048,1,"bar();") -hasLocation(#20052,#20049) -enclosingStmt(#20052,#20044) -exprContainers(#20052,#20036) -#20053=* -scopes(#20053,1) -scopenodes(#20052,#20053) -scopenesting(#20053,#20040) -#20054=@"var;{arguments};{#20053}" -variables(#20054,"arguments",#20053) -isArgumentsObject(#20054) -numlines(#20052,1,1,0) -isMethod(#20048) -isAbstractMember(#20048) -#20055=* -lines(#20055,#20001,"interface MyInterface {"," -") -#20056=@"loc,{#10000},1,1,1,23" -locations_default(#20056,#10000,1,1,1,23) -hasLocation(#20055,#20056) -#20057=* -lines(#20057,#20001," foo();"," -") -#20058=@"loc,{#10000},2,1,2,8" -locations_default(#20058,#10000,2,1,2,8) -hasLocation(#20057,#20058) -indentation(#10000,2," ",2) -#20059=* -lines(#20059,#20001," bar(x: number): string;"," -") -#20060=@"loc,{#10000},3,1,3,25" -locations_default(#20060,#10000,3,1,3,25) -hasLocation(#20059,#20060) -indentation(#10000,3," ",2) -#20061=* -lines(#20061,#20001," field: number;"," -") -#20062=@"loc,{#10000},4,1,4,16" -locations_default(#20062,#10000,4,1,4,16) -hasLocation(#20061,#20062) -indentation(#10000,4," ",2) -#20063=* -lines(#20063,#20001,"}"," -") -#20064=@"loc,{#10000},5,1,5,1" -locations_default(#20064,#10000,5,1,5,1) -hasLocation(#20063,#20064) +tokeninfo(#20052,7,#20001,14,"string") +#20053=@"loc,{#10000},3,19,3,24" +locations_default(#20053,#10000,3,19,3,24) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,8,#20001,15,";") +#20055=@"loc,{#10000},3,25,3,25" +locations_default(#20055,#10000,3,25,3,25) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,6,#20001,16,"field") +#20057=@"loc,{#10000},4,3,4,7" +locations_default(#20057,#10000,4,3,4,7) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,8,#20001,17,":") +#20059=@"loc,{#10000},4,8,4,8" +locations_default(#20059,#10000,4,8,4,8) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,7,#20001,18,"number") +#20061=@"loc,{#10000},4,10,4,15" +locations_default(#20061,#10000,4,10,4,15) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,8,#20001,19,";") +#20063=@"loc,{#10000},4,16,4,16" +locations_default(#20063,#10000,4,16,4,16) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,8,#20001,20,"}") +hasLocation(#20064,#20011) #20065=* -lines(#20065,#20001,""," -") -#20066=@"loc,{#10000},6,1,6,0" -locations_default(#20066,#10000,6,1,6,0) +tokeninfo(#20065,7,#20001,21,"namespace") +#20066=@"loc,{#10000},7,1,7,9" +locations_default(#20066,#10000,7,1,7,9) hasLocation(#20065,#20066) #20067=* -lines(#20067,#20001,"namespace Foo {"," -") -#20068=@"loc,{#10000},7,1,7,15" -locations_default(#20068,#10000,7,1,7,15) +tokeninfo(#20067,6,#20001,22,"Foo") +#20068=@"loc,{#10000},7,11,7,13" +locations_default(#20068,#10000,7,11,7,13) hasLocation(#20067,#20068) #20069=* -lines(#20069,#20001," export interface I {"," -") -#20070=@"loc,{#10000},8,1,8,22" -locations_default(#20070,#10000,8,1,8,22) +tokeninfo(#20069,8,#20001,23,"{") +#20070=@"loc,{#10000},7,15,7,15" +locations_default(#20070,#10000,7,15,7,15) hasLocation(#20069,#20070) -indentation(#10000,8," ",2) #20071=* -lines(#20071,#20001," bar();"," -") -#20072=@"loc,{#10000},9,1,9,10" -locations_default(#20072,#10000,9,1,9,10) +tokeninfo(#20071,7,#20001,24,"export") +#20072=@"loc,{#10000},8,3,8,8" +locations_default(#20072,#10000,8,3,8,8) hasLocation(#20071,#20072) -indentation(#10000,9," ",4) #20073=* -lines(#20073,#20001," }"," -") -#20074=@"loc,{#10000},10,1,10,3" -locations_default(#20074,#10000,10,1,10,3) +tokeninfo(#20073,7,#20001,25,"interface") +#20074=@"loc,{#10000},8,10,8,18" +locations_default(#20074,#10000,8,10,8,18) hasLocation(#20073,#20074) -indentation(#10000,10," ",2) #20075=* -lines(#20075,#20001,"}"," -") -#20076=@"loc,{#10000},11,1,11,1" -locations_default(#20076,#10000,11,1,11,1) +tokeninfo(#20075,6,#20001,26,"I") +#20076=@"loc,{#10000},8,20,8,20" +locations_default(#20076,#10000,8,20,8,20) hasLocation(#20075,#20076) -numlines(#20001,11,10,0) #20077=* -tokeninfo(#20077,7,#20001,0,"interface") -#20078=@"loc,{#10000},1,1,1,9" -locations_default(#20078,#10000,1,1,1,9) +tokeninfo(#20077,8,#20001,27,"{") +#20078=@"loc,{#10000},8,22,8,22" +locations_default(#20078,#10000,8,22,8,22) hasLocation(#20077,#20078) #20079=* -tokeninfo(#20079,6,#20001,1,"MyInterface") -hasLocation(#20079,#20008) -#20080=* -tokeninfo(#20080,8,#20001,2,"{") -#20081=@"loc,{#10000},1,23,1,23" -locations_default(#20081,#10000,1,23,1,23) -hasLocation(#20080,#20081) -#20082=* -tokeninfo(#20082,6,#20001,3,"foo") -hasLocation(#20082,#20012) +tokeninfo(#20079,6,#20001,28,"bar") +#20080=@"loc,{#10000},9,5,9,7" +locations_default(#20080,#10000,9,5,9,7) +hasLocation(#20079,#20080) +#20081=* +tokeninfo(#20081,8,#20001,29,"(") +#20082=@"loc,{#10000},9,8,9,8" +locations_default(#20082,#10000,9,8,9,8) +hasLocation(#20081,#20082) #20083=* -tokeninfo(#20083,8,#20001,4,"(") -#20084=@"loc,{#10000},2,6,2,6" -locations_default(#20084,#10000,2,6,2,6) +tokeninfo(#20083,8,#20001,30,")") +#20084=@"loc,{#10000},9,9,9,9" +locations_default(#20084,#10000,9,9,9,9) hasLocation(#20083,#20084) #20085=* -tokeninfo(#20085,8,#20001,5,")") -#20086=@"loc,{#10000},2,7,2,7" -locations_default(#20086,#10000,2,7,2,7) +tokeninfo(#20085,8,#20001,31,";") +#20086=@"loc,{#10000},9,10,9,10" +locations_default(#20086,#10000,9,10,9,10) hasLocation(#20085,#20086) #20087=* -tokeninfo(#20087,8,#20001,6,";") -#20088=@"loc,{#10000},2,8,2,8" -locations_default(#20088,#10000,2,8,2,8) +tokeninfo(#20087,8,#20001,32,"}") +#20088=@"loc,{#10000},10,3,10,3" +locations_default(#20088,#10000,10,3,10,3) hasLocation(#20087,#20088) #20089=* -tokeninfo(#20089,6,#20001,7,"bar") -hasLocation(#20089,#20019) +tokeninfo(#20089,8,#20001,33,"}") +hasLocation(#20089,#20023) #20090=* -tokeninfo(#20090,8,#20001,8,"(") -#20091=@"loc,{#10000},3,6,3,6" -locations_default(#20091,#10000,3,6,3,6) +tokeninfo(#20090,0,#20001,34,"") +#20091=@"loc,{#10000},12,1,12,0" +locations_default(#20091,#10000,12,1,12,0) hasLocation(#20090,#20091) -#20092=* -tokeninfo(#20092,6,#20001,9,"x") -hasLocation(#20092,#20024) -#20093=* -tokeninfo(#20093,8,#20001,10,":") -#20094=@"loc,{#10000},3,8,3,8" -locations_default(#20094,#10000,3,8,3,8) -hasLocation(#20093,#20094) +toplevels(#20001,0) +#20092=@"loc,{#10000},1,1,12,0" +locations_default(#20092,#10000,1,1,12,0) +hasLocation(#20001,#20092) +#20093=@"local_namespace_name;{Foo};{#20000}" +local_namespace_names(#20093,"Foo",#20000) +#20094=@"local_type_name;{MyInterface};{#20000}" +local_type_names(#20094,"MyInterface",#20000) #20095=* -tokeninfo(#20095,7,#20001,11,"number") -hasLocation(#20095,#20029) -#20096=* -tokeninfo(#20096,8,#20001,12,")") -#20097=@"loc,{#10000},3,16,3,16" -locations_default(#20097,#10000,3,16,3,16) -hasLocation(#20096,#20097) +stmts(#20095,34,#20001,0,"interfa ... mber;\n}") +#20096=@"loc,{#10000},1,1,5,1" +locations_default(#20096,#10000,1,1,5,1) +hasLocation(#20095,#20096) +stmtContainers(#20095,#20001) +#20097=* +typeexprs(#20097,1,#20095,0,"MyInterface") +hasLocation(#20097,#20027) +enclosingStmt(#20097,#20095) +exprContainers(#20097,#20001) +literals("MyInterface","MyInterface",#20097) +typedecl(#20097,#20094) #20098=* -tokeninfo(#20098,8,#20001,13,":") -#20099=@"loc,{#10000},3,17,3,17" -locations_default(#20099,#10000,3,17,3,17) +properties(#20098,#20095,2,0,"foo();") +#20099=@"loc,{#10000},2,3,2,8" +locations_default(#20099,#10000,2,3,2,8) hasLocation(#20098,#20099) #20100=* -tokeninfo(#20100,7,#20001,14,"string") -hasLocation(#20100,#20027) +exprs(#20100,0,#20098,0,"foo") +hasLocation(#20100,#20031) +enclosingStmt(#20100,#20095) +exprContainers(#20100,#20001) +literals("foo","foo",#20100) #20101=* -tokeninfo(#20101,8,#20001,15,";") -#20102=@"loc,{#10000},3,25,3,25" -locations_default(#20102,#10000,3,25,3,25) -hasLocation(#20101,#20102) -#20103=* -tokeninfo(#20103,6,#20001,16,"field") -hasLocation(#20103,#20033) +exprs(#20101,9,#20098,1,"foo();") +hasLocation(#20101,#20099) +enclosingStmt(#20101,#20095) +exprContainers(#20101,#20001) +#20102=* +scopes(#20102,1) +scopenodes(#20101,#20102) +scopenesting(#20102,#20000) +#20103=@"var;{arguments};{#20102}" +variables(#20103,"arguments",#20102) +isArgumentsObject(#20103) +isMethod(#20098) +isAbstractMember(#20098) #20104=* -tokeninfo(#20104,8,#20001,17,":") -#20105=@"loc,{#10000},4,8,4,8" -locations_default(#20105,#10000,4,8,4,8) +properties(#20104,#20095,3,0,"bar(x: ... string;") +#20105=@"loc,{#10000},3,3,3,25" +locations_default(#20105,#10000,3,3,3,25) hasLocation(#20104,#20105) #20106=* -tokeninfo(#20106,7,#20001,18,"number") -hasLocation(#20106,#20035) +exprs(#20106,0,#20104,0,"bar") +hasLocation(#20106,#20039) +enclosingStmt(#20106,#20095) +exprContainers(#20106,#20001) +literals("bar","bar",#20106) #20107=* -tokeninfo(#20107,8,#20001,19,";") -#20108=@"loc,{#10000},4,16,4,16" -locations_default(#20108,#10000,4,16,4,16) -hasLocation(#20107,#20108) -#20109=* -tokeninfo(#20109,8,#20001,20,"}") -hasLocation(#20109,#20064) +exprs(#20107,9,#20104,1,"bar(x: ... string;") +hasLocation(#20107,#20105) +enclosingStmt(#20107,#20095) +exprContainers(#20107,#20001) +#20108=* +scopes(#20108,1) +scopenodes(#20107,#20108) +scopenesting(#20108,#20000) +#20109=@"var;{x};{#20108}" +variables(#20109,"x",#20108) #20110=* -tokeninfo(#20110,7,#20001,21,"namespace") -#20111=@"loc,{#10000},7,1,7,9" -locations_default(#20111,#10000,7,1,7,9) -hasLocation(#20110,#20111) +exprs(#20110,78,#20107,0,"x") +hasLocation(#20110,#20043) +exprContainers(#20110,#20107) +literals("x","x",#20110) +decl(#20110,#20109) +#20111=@"var;{arguments};{#20108}" +variables(#20111,"arguments",#20108) +isArgumentsObject(#20111) #20112=* -tokeninfo(#20112,6,#20001,22,"Foo") -hasLocation(#20112,#20039) +typeexprs(#20112,2,#20107,-3,"string") +hasLocation(#20112,#20053) +exprContainers(#20112,#20107) +literals("string","string",#20112) #20113=* -tokeninfo(#20113,8,#20001,23,"{") -#20114=@"loc,{#10000},7,15,7,15" -locations_default(#20114,#10000,7,15,7,15) -hasLocation(#20113,#20114) -#20115=* -tokeninfo(#20115,7,#20001,24,"export") -#20116=@"loc,{#10000},8,3,8,8" -locations_default(#20116,#10000,8,3,8,8) -hasLocation(#20115,#20116) +typeexprs(#20113,2,#20107,-6,"number") +hasLocation(#20113,#20047) +exprContainers(#20113,#20107) +literals("number","number",#20113) +isMethod(#20104) +isAbstractMember(#20104) +#20114=* +properties(#20114,#20095,4,8,"field: number;") +#20115=@"loc,{#10000},4,3,4,16" +locations_default(#20115,#10000,4,3,4,16) +hasLocation(#20114,#20115) +#20116=* +exprs(#20116,0,#20114,0,"field") +hasLocation(#20116,#20057) +enclosingStmt(#20116,#20095) +exprContainers(#20116,#20001) +literals("field","field",#20116) +isAbstractMember(#20114) #20117=* -tokeninfo(#20117,7,#20001,25,"interface") -#20118=@"loc,{#10000},8,10,8,18" -locations_default(#20118,#10000,8,10,8,18) -hasLocation(#20117,#20118) -#20119=* -tokeninfo(#20119,6,#20001,26,"I") -hasLocation(#20119,#20047) +typeexprs(#20117,2,#20114,2,"number") +hasLocation(#20117,#20061) +enclosingStmt(#20117,#20095) +exprContainers(#20117,#20001) +literals("number","number",#20117) +#20118=* +stmts(#20118,31,#20001,1,"namespa ... ;\n }\n}") +#20119=@"loc,{#10000},7,1,11,1" +locations_default(#20119,#10000,7,1,11,1) +hasLocation(#20118,#20119) +stmtContainers(#20118,#20001) #20120=* -tokeninfo(#20120,8,#20001,27,"{") -#20121=@"loc,{#10000},8,22,8,22" -locations_default(#20121,#10000,8,22,8,22) -hasLocation(#20120,#20121) -#20122=* -tokeninfo(#20122,6,#20001,28,"bar") -hasLocation(#20122,#20051) +exprs(#20120,78,#20118,-1,"Foo") +hasLocation(#20120,#20068) +enclosingStmt(#20120,#20118) +exprContainers(#20120,#20001) +literals("Foo","Foo",#20120) +namespacedecl(#20120,#20093) +#20121=* +scopes(#20121,9) +scopenodes(#20118,#20121) +scopenesting(#20121,#20000) +#20122=@"local_type_name;{I};{#20121}" +local_type_names(#20122,"I",#20121) #20123=* -tokeninfo(#20123,8,#20001,29,"(") -#20124=@"loc,{#10000},9,8,9,8" -locations_default(#20124,#10000,9,8,9,8) +stmts(#20123,30,#20118,0,"export ... ();\n }") +#20124=@"loc,{#10000},8,3,10,3" +locations_default(#20124,#10000,8,3,10,3) hasLocation(#20123,#20124) +stmtContainers(#20123,#20118) #20125=* -tokeninfo(#20125,8,#20001,30,")") -#20126=@"loc,{#10000},9,9,9,9" -locations_default(#20126,#10000,9,9,9,9) +stmts(#20125,34,#20123,-1,"interfa ... ();\n }") +#20126=@"loc,{#10000},8,10,10,3" +locations_default(#20126,#10000,8,10,10,3) hasLocation(#20125,#20126) +stmtContainers(#20125,#20118) #20127=* -tokeninfo(#20127,8,#20001,31,";") -#20128=@"loc,{#10000},9,10,9,10" -locations_default(#20128,#10000,9,10,9,10) -hasLocation(#20127,#20128) -#20129=* -tokeninfo(#20129,8,#20001,32,"}") -#20130=@"loc,{#10000},10,3,10,3" -locations_default(#20130,#10000,10,3,10,3) -hasLocation(#20129,#20130) +typeexprs(#20127,1,#20125,0,"I") +hasLocation(#20127,#20076) +enclosingStmt(#20127,#20125) +exprContainers(#20127,#20118) +literals("I","I",#20127) +typedecl(#20127,#20122) +#20128=* +properties(#20128,#20125,2,0,"bar();") +#20129=@"loc,{#10000},9,5,9,10" +locations_default(#20129,#10000,9,5,9,10) +hasLocation(#20128,#20129) +#20130=* +exprs(#20130,0,#20128,0,"bar") +hasLocation(#20130,#20080) +enclosingStmt(#20130,#20125) +exprContainers(#20130,#20118) +literals("bar","bar",#20130) #20131=* -tokeninfo(#20131,8,#20001,33,"}") -hasLocation(#20131,#20076) +exprs(#20131,9,#20128,1,"bar();") +hasLocation(#20131,#20129) +enclosingStmt(#20131,#20125) +exprContainers(#20131,#20118) #20132=* -tokeninfo(#20132,0,#20001,34,"") -#20133=@"loc,{#10000},12,1,12,0" -locations_default(#20133,#10000,12,1,12,0) -hasLocation(#20132,#20133) +scopes(#20132,1) +scopenodes(#20131,#20132) +scopenesting(#20132,#20121) +#20133=@"var;{arguments};{#20132}" +variables(#20133,"arguments",#20132) +isArgumentsObject(#20133) +isMethod(#20128) +isAbstractMember(#20128) #20134=* entry_cfg_node(#20134,#20001) #20135=@"loc,{#10000},1,1,1,0" @@ -433,12 +430,12 @@ locations_default(#20135,#10000,1,1,1,0) hasLocation(#20134,#20135) #20136=* exit_cfg_node(#20136,#20001) -hasLocation(#20136,#20133) -successor(#20038,#20036) -successor(#20042,#20044) -successor(#20044,#20136) -successor(#20036,#20042) -successor(#20005,#20038) -successor(#20134,#20005) +hasLocation(#20136,#20091) +successor(#20120,#20118) +successor(#20123,#20125) +successor(#20125,#20136) +successor(#20118,#20123) +successor(#20095,#20120) +successor(#20134,#20095) numlines(#10000,11,10,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/let.ts.trap b/javascript/extractor/tests/ts/output/trap/let.ts.trap index 09ae5ae76bc..dbe8b658367 100644 --- a/javascript/extractor/tests/ts/output/trap/let.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/let.ts.trap @@ -9,187 +9,187 @@ 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;{varX};{#20000}" -variables(#20003,"varX",#20000) -#20004=@"var;{letX};{#20000}" -variables(#20004,"letX",#20000) -#20005=@"var;{constX};{#20000}" -variables(#20005,"constX",#20000) +#20002=* +lines(#20002,#20001,"var varX = 5;"," +") +#20003=@"loc,{#10000},1,1,1,13" +locations_default(#20003,#10000,1,1,1,13) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"let letX = 6;"," +") +#20005=@"loc,{#10000},2,1,2,13" +locations_default(#20005,#10000,2,1,2,13) +hasLocation(#20004,#20005) #20006=* -stmts(#20006,18,#20001,0,"var varX = 5;") -#20007=@"loc,{#10000},1,1,1,13" -locations_default(#20007,#10000,1,1,1,13) +lines(#20006,#20001,"const constX = 7;"," +") +#20007=@"loc,{#10000},3,1,3,17" +locations_default(#20007,#10000,3,1,3,17) hasLocation(#20006,#20007) -stmtContainers(#20006,#20001) +numlines(#20001,3,3,0) #20008=* -exprs(#20008,64,#20006,0,"varX = 5") -#20009=@"loc,{#10000},1,5,1,12" -locations_default(#20009,#10000,1,5,1,12) +tokeninfo(#20008,7,#20001,0,"var") +#20009=@"loc,{#10000},1,1,1,3" +locations_default(#20009,#10000,1,1,1,3) hasLocation(#20008,#20009) -enclosingStmt(#20008,#20006) -exprContainers(#20008,#20001) #20010=* -exprs(#20010,78,#20008,0,"varX") +tokeninfo(#20010,6,#20001,1,"varX") #20011=@"loc,{#10000},1,5,1,8" locations_default(#20011,#10000,1,5,1,8) hasLocation(#20010,#20011) -enclosingStmt(#20010,#20006) -exprContainers(#20010,#20001) -literals("varX","varX",#20010) -decl(#20010,#20003) #20012=* -exprs(#20012,3,#20008,1,"5") -#20013=@"loc,{#10000},1,12,1,12" -locations_default(#20013,#10000,1,12,1,12) +tokeninfo(#20012,8,#20001,2,"=") +#20013=@"loc,{#10000},1,10,1,10" +locations_default(#20013,#10000,1,10,1,10) hasLocation(#20012,#20013) -enclosingStmt(#20012,#20006) -exprContainers(#20012,#20001) -literals("5","5",#20012) #20014=* -stmts(#20014,23,#20001,1,"let letX = 6;") -#20015=@"loc,{#10000},2,1,2,13" -locations_default(#20015,#10000,2,1,2,13) +tokeninfo(#20014,3,#20001,3,"5") +#20015=@"loc,{#10000},1,12,1,12" +locations_default(#20015,#10000,1,12,1,12) hasLocation(#20014,#20015) -stmtContainers(#20014,#20001) #20016=* -exprs(#20016,64,#20014,0,"letX = 6") -#20017=@"loc,{#10000},2,5,2,12" -locations_default(#20017,#10000,2,5,2,12) +tokeninfo(#20016,8,#20001,4,";") +#20017=@"loc,{#10000},1,13,1,13" +locations_default(#20017,#10000,1,13,1,13) hasLocation(#20016,#20017) -enclosingStmt(#20016,#20014) -exprContainers(#20016,#20001) #20018=* -exprs(#20018,78,#20016,0,"letX") -#20019=@"loc,{#10000},2,5,2,8" -locations_default(#20019,#10000,2,5,2,8) +tokeninfo(#20018,7,#20001,5,"let") +#20019=@"loc,{#10000},2,1,2,3" +locations_default(#20019,#10000,2,1,2,3) hasLocation(#20018,#20019) -enclosingStmt(#20018,#20014) -exprContainers(#20018,#20001) -literals("letX","letX",#20018) -decl(#20018,#20004) #20020=* -exprs(#20020,3,#20016,1,"6") -#20021=@"loc,{#10000},2,12,2,12" -locations_default(#20021,#10000,2,12,2,12) +tokeninfo(#20020,6,#20001,6,"letX") +#20021=@"loc,{#10000},2,5,2,8" +locations_default(#20021,#10000,2,5,2,8) hasLocation(#20020,#20021) -enclosingStmt(#20020,#20014) -exprContainers(#20020,#20001) -literals("6","6",#20020) #20022=* -stmts(#20022,22,#20001,2,"const constX = 7;") -#20023=@"loc,{#10000},3,1,3,17" -locations_default(#20023,#10000,3,1,3,17) +tokeninfo(#20022,8,#20001,7,"=") +#20023=@"loc,{#10000},2,10,2,10" +locations_default(#20023,#10000,2,10,2,10) hasLocation(#20022,#20023) -stmtContainers(#20022,#20001) #20024=* -exprs(#20024,64,#20022,0,"constX = 7") -#20025=@"loc,{#10000},3,7,3,16" -locations_default(#20025,#10000,3,7,3,16) +tokeninfo(#20024,3,#20001,8,"6") +#20025=@"loc,{#10000},2,12,2,12" +locations_default(#20025,#10000,2,12,2,12) hasLocation(#20024,#20025) -enclosingStmt(#20024,#20022) -exprContainers(#20024,#20001) #20026=* -exprs(#20026,78,#20024,0,"constX") -#20027=@"loc,{#10000},3,7,3,12" -locations_default(#20027,#10000,3,7,3,12) +tokeninfo(#20026,8,#20001,9,";") +#20027=@"loc,{#10000},2,13,2,13" +locations_default(#20027,#10000,2,13,2,13) hasLocation(#20026,#20027) -enclosingStmt(#20026,#20022) -exprContainers(#20026,#20001) -literals("constX","constX",#20026) -decl(#20026,#20005) #20028=* -exprs(#20028,3,#20024,1,"7") -#20029=@"loc,{#10000},3,16,3,16" -locations_default(#20029,#10000,3,16,3,16) +tokeninfo(#20028,7,#20001,10,"const") +#20029=@"loc,{#10000},3,1,3,5" +locations_default(#20029,#10000,3,1,3,5) hasLocation(#20028,#20029) -enclosingStmt(#20028,#20022) -exprContainers(#20028,#20001) -literals("7","7",#20028) #20030=* -lines(#20030,#20001,"var varX = 5;"," -") -hasLocation(#20030,#20007) -#20031=* -lines(#20031,#20001,"let letX = 6;"," -") -hasLocation(#20031,#20015) +tokeninfo(#20030,6,#20001,11,"constX") +#20031=@"loc,{#10000},3,7,3,12" +locations_default(#20031,#10000,3,7,3,12) +hasLocation(#20030,#20031) #20032=* -lines(#20032,#20001,"const constX = 7;"," -") -hasLocation(#20032,#20023) -numlines(#20001,3,3,0) -#20033=* -tokeninfo(#20033,7,#20001,0,"var") -#20034=@"loc,{#10000},1,1,1,3" -locations_default(#20034,#10000,1,1,1,3) -hasLocation(#20033,#20034) -#20035=* -tokeninfo(#20035,6,#20001,1,"varX") -hasLocation(#20035,#20011) +tokeninfo(#20032,8,#20001,12,"=") +#20033=@"loc,{#10000},3,14,3,14" +locations_default(#20033,#10000,3,14,3,14) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,3,#20001,13,"7") +#20035=@"loc,{#10000},3,16,3,16" +locations_default(#20035,#10000,3,16,3,16) +hasLocation(#20034,#20035) #20036=* -tokeninfo(#20036,8,#20001,2,"=") -#20037=@"loc,{#10000},1,10,1,10" -locations_default(#20037,#10000,1,10,1,10) +tokeninfo(#20036,8,#20001,14,";") +#20037=@"loc,{#10000},3,17,3,17" +locations_default(#20037,#10000,3,17,3,17) hasLocation(#20036,#20037) #20038=* -tokeninfo(#20038,3,#20001,3,"5") -hasLocation(#20038,#20013) -#20039=* -tokeninfo(#20039,8,#20001,4,";") -#20040=@"loc,{#10000},1,13,1,13" -locations_default(#20040,#10000,1,13,1,13) -hasLocation(#20039,#20040) -#20041=* -tokeninfo(#20041,7,#20001,5,"let") -#20042=@"loc,{#10000},2,1,2,3" -locations_default(#20042,#10000,2,1,2,3) -hasLocation(#20041,#20042) -#20043=* -tokeninfo(#20043,6,#20001,6,"letX") -hasLocation(#20043,#20019) +tokeninfo(#20038,0,#20001,15,"") +#20039=@"loc,{#10000},4,1,4,0" +locations_default(#20039,#10000,4,1,4,0) +hasLocation(#20038,#20039) +toplevels(#20001,0) +#20040=@"loc,{#10000},1,1,4,0" +locations_default(#20040,#10000,1,1,4,0) +hasLocation(#20001,#20040) +#20041=@"var;{varX};{#20000}" +variables(#20041,"varX",#20000) +#20042=@"var;{letX};{#20000}" +variables(#20042,"letX",#20000) +#20043=@"var;{constX};{#20000}" +variables(#20043,"constX",#20000) #20044=* -tokeninfo(#20044,8,#20001,7,"=") -#20045=@"loc,{#10000},2,10,2,10" -locations_default(#20045,#10000,2,10,2,10) -hasLocation(#20044,#20045) -#20046=* -tokeninfo(#20046,3,#20001,8,"6") -hasLocation(#20046,#20021) +stmts(#20044,18,#20001,0,"var varX = 5;") +hasLocation(#20044,#20003) +stmtContainers(#20044,#20001) +#20045=* +exprs(#20045,64,#20044,0,"varX = 5") +#20046=@"loc,{#10000},1,5,1,12" +locations_default(#20046,#10000,1,5,1,12) +hasLocation(#20045,#20046) +enclosingStmt(#20045,#20044) +exprContainers(#20045,#20001) #20047=* -tokeninfo(#20047,8,#20001,9,";") -#20048=@"loc,{#10000},2,13,2,13" -locations_default(#20048,#10000,2,13,2,13) -hasLocation(#20047,#20048) +exprs(#20047,78,#20045,0,"varX") +hasLocation(#20047,#20011) +enclosingStmt(#20047,#20044) +exprContainers(#20047,#20001) +literals("varX","varX",#20047) +decl(#20047,#20041) +#20048=* +exprs(#20048,3,#20045,1,"5") +hasLocation(#20048,#20015) +enclosingStmt(#20048,#20044) +exprContainers(#20048,#20001) +literals("5","5",#20048) #20049=* -tokeninfo(#20049,7,#20001,10,"const") -#20050=@"loc,{#10000},3,1,3,5" -locations_default(#20050,#10000,3,1,3,5) -hasLocation(#20049,#20050) -#20051=* -tokeninfo(#20051,6,#20001,11,"constX") -hasLocation(#20051,#20027) +stmts(#20049,23,#20001,1,"let letX = 6;") +hasLocation(#20049,#20005) +stmtContainers(#20049,#20001) +#20050=* +exprs(#20050,64,#20049,0,"letX = 6") +#20051=@"loc,{#10000},2,5,2,12" +locations_default(#20051,#10000,2,5,2,12) +hasLocation(#20050,#20051) +enclosingStmt(#20050,#20049) +exprContainers(#20050,#20001) #20052=* -tokeninfo(#20052,8,#20001,12,"=") -#20053=@"loc,{#10000},3,14,3,14" -locations_default(#20053,#10000,3,14,3,14) -hasLocation(#20052,#20053) +exprs(#20052,78,#20050,0,"letX") +hasLocation(#20052,#20021) +enclosingStmt(#20052,#20049) +exprContainers(#20052,#20001) +literals("letX","letX",#20052) +decl(#20052,#20042) +#20053=* +exprs(#20053,3,#20050,1,"6") +hasLocation(#20053,#20025) +enclosingStmt(#20053,#20049) +exprContainers(#20053,#20001) +literals("6","6",#20053) #20054=* -tokeninfo(#20054,3,#20001,13,"7") -hasLocation(#20054,#20029) +stmts(#20054,22,#20001,2,"const constX = 7;") +hasLocation(#20054,#20007) +stmtContainers(#20054,#20001) #20055=* -tokeninfo(#20055,8,#20001,14,";") -#20056=@"loc,{#10000},3,17,3,17" -locations_default(#20056,#10000,3,17,3,17) +exprs(#20055,64,#20054,0,"constX = 7") +#20056=@"loc,{#10000},3,7,3,16" +locations_default(#20056,#10000,3,7,3,16) hasLocation(#20055,#20056) +enclosingStmt(#20055,#20054) +exprContainers(#20055,#20001) #20057=* -tokeninfo(#20057,0,#20001,15,"") -#20058=@"loc,{#10000},4,1,4,0" -locations_default(#20058,#10000,4,1,4,0) -hasLocation(#20057,#20058) +exprs(#20057,78,#20055,0,"constX") +hasLocation(#20057,#20031) +enclosingStmt(#20057,#20054) +exprContainers(#20057,#20001) +literals("constX","constX",#20057) +decl(#20057,#20043) +#20058=* +exprs(#20058,3,#20055,1,"7") +hasLocation(#20058,#20035) +enclosingStmt(#20058,#20054) +exprContainers(#20058,#20001) +literals("7","7",#20058) #20059=* entry_cfg_node(#20059,#20001) #20060=@"loc,{#10000},1,1,1,0" @@ -197,19 +197,19 @@ locations_default(#20060,#10000,1,1,1,0) hasLocation(#20059,#20060) #20061=* exit_cfg_node(#20061,#20001) -hasLocation(#20061,#20058) -successor(#20022,#20026) -successor(#20028,#20024) -successor(#20026,#20028) -successor(#20024,#20061) -successor(#20014,#20018) -successor(#20020,#20016) -successor(#20018,#20020) -successor(#20016,#20022) -successor(#20006,#20010) -successor(#20012,#20008) -successor(#20010,#20012) -successor(#20008,#20014) -successor(#20059,#20006) +hasLocation(#20061,#20039) +successor(#20054,#20057) +successor(#20058,#20055) +successor(#20057,#20058) +successor(#20055,#20061) +successor(#20049,#20052) +successor(#20053,#20050) +successor(#20052,#20053) +successor(#20050,#20054) +successor(#20044,#20047) +successor(#20048,#20045) +successor(#20047,#20048) +successor(#20045,#20049) +successor(#20059,#20044) numlines(#10000,3,3,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/logicalOr.ts.trap b/javascript/extractor/tests/ts/output/trap/logicalOr.ts.trap index 681e53f8b79..d16a0aa5700 100644 --- a/javascript/extractor/tests/ts/output/trap/logicalOr.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/logicalOr.ts.trap @@ -9,275 +9,274 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,5,0" -locations_default(#20002,#10000,1,1,5,0) -hasLocation(#20001,#20002) -#20003=@"var;{f};{#20000}" -variables(#20003,"f",#20000) -#20004=* -stmts(#20004,17,#20001,0,"functio ... y) {}\n}") -#20005=@"loc,{#10000},1,1,4,1" -locations_default(#20005,#10000,1,1,4,1) -hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) -#20006=* -exprs(#20006,78,#20004,-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;{x};{#20008}" -variables(#20009,"x",#20008) -#20010=* -exprs(#20010,78,#20004,0,"x") -#20011=@"loc,{#10000},1,12,1,12" -locations_default(#20011,#10000,1,12,1,12) -hasLocation(#20010,#20011) -exprContainers(#20010,#20004) -literals("x","x",#20010) -decl(#20010,#20009) -#20012=@"var;{y};{#20008}" -variables(#20012,"y",#20008) -#20013=* -exprs(#20013,78,#20004,1,"y") -#20014=@"loc,{#10000},1,14,1,14" -locations_default(#20014,#10000,1,14,1,14) -hasLocation(#20013,#20014) -exprContainers(#20013,#20004) -literals("y","y",#20013) -decl(#20013,#20012) -#20015=@"var;{arguments};{#20008}" -variables(#20015,"arguments",#20008) -isArgumentsObject(#20015) -#20016=* -stmts(#20016,1,#20004,-2,"{\n if ... y) {}\n}") -#20017=@"loc,{#10000},1,17,4,1" -locations_default(#20017,#10000,1,17,4,1) -hasLocation(#20016,#20017) -stmtContainers(#20016,#20004) -#20018=* -stmts(#20018,3,#20016,0,"if (x || y) {}") -#20019=@"loc,{#10000},2,3,2,16" -locations_default(#20019,#10000,2,3,2,16) -hasLocation(#20018,#20019) -stmtContainers(#20018,#20004) -#20020=* -exprs(#20020,45,#20018,0,"x || y") -#20021=@"loc,{#10000},2,7,2,12" -locations_default(#20021,#10000,2,7,2,12) -hasLocation(#20020,#20021) -enclosingStmt(#20020,#20018) -exprContainers(#20020,#20004) -#20022=* -exprs(#20022,79,#20020,0,"x") -#20023=@"loc,{#10000},2,7,2,7" -locations_default(#20023,#10000,2,7,2,7) -hasLocation(#20022,#20023) -enclosingStmt(#20022,#20018) -exprContainers(#20022,#20004) -literals("x","x",#20022) -bind(#20022,#20009) -#20024=* -exprs(#20024,79,#20020,1,"y") -#20025=@"loc,{#10000},2,12,2,12" -locations_default(#20025,#10000,2,12,2,12) -hasLocation(#20024,#20025) -enclosingStmt(#20024,#20018) -exprContainers(#20024,#20004) -literals("y","y",#20024) -bind(#20024,#20012) -#20026=* -stmts(#20026,1,#20018,1,"{}") -#20027=@"loc,{#10000},2,15,2,16" -locations_default(#20027,#10000,2,15,2,16) -hasLocation(#20026,#20027) -stmtContainers(#20026,#20004) -#20028=* -stmts(#20028,3,#20016,1,"if (x && y) {}") -#20029=@"loc,{#10000},3,3,3,16" -locations_default(#20029,#10000,3,3,3,16) -hasLocation(#20028,#20029) -stmtContainers(#20028,#20004) -#20030=* -exprs(#20030,44,#20028,0,"x && y") -#20031=@"loc,{#10000},3,7,3,12" -locations_default(#20031,#10000,3,7,3,12) -hasLocation(#20030,#20031) -enclosingStmt(#20030,#20028) -exprContainers(#20030,#20004) -#20032=* -exprs(#20032,79,#20030,0,"x") -#20033=@"loc,{#10000},3,7,3,7" -locations_default(#20033,#10000,3,7,3,7) -hasLocation(#20032,#20033) -enclosingStmt(#20032,#20028) -exprContainers(#20032,#20004) -literals("x","x",#20032) -bind(#20032,#20009) -#20034=* -exprs(#20034,79,#20030,1,"y") -#20035=@"loc,{#10000},3,12,3,12" -locations_default(#20035,#10000,3,12,3,12) -hasLocation(#20034,#20035) -enclosingStmt(#20034,#20028) -exprContainers(#20034,#20004) -literals("y","y",#20034) -bind(#20034,#20012) -#20036=* -stmts(#20036,1,#20028,1,"{}") -#20037=@"loc,{#10000},3,15,3,16" -locations_default(#20037,#10000,3,15,3,16) -hasLocation(#20036,#20037) -stmtContainers(#20036,#20004) -numlines(#20004,4,4,0) -#20038=* -lines(#20038,#20001,"function f(x,y) {"," +#20002=* +lines(#20002,#20001,"function f(x,y) {"," ") -#20039=@"loc,{#10000},1,1,1,17" -locations_default(#20039,#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," if (x || y) {}"," +") +#20005=@"loc,{#10000},2,1,2,16" +locations_default(#20005,#10000,2,1,2,16) +hasLocation(#20004,#20005) +indentation(#10000,2," ",2) +#20006=* +lines(#20006,#20001," if (x && y) {}"," +") +#20007=@"loc,{#10000},3,1,3,16" +locations_default(#20007,#10000,3,1,3,16) +hasLocation(#20006,#20007) +indentation(#10000,3," ",2) +#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,"f") +#20013=@"loc,{#10000},1,10,1,10" +locations_default(#20013,#10000,1,10,1,10) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,2,"(") +#20015=@"loc,{#10000},1,11,1,11" +locations_default(#20015,#10000,1,11,1,11) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,6,#20001,3,"x") +#20017=@"loc,{#10000},1,12,1,12" +locations_default(#20017,#10000,1,12,1,12) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,4,",") +#20019=@"loc,{#10000},1,13,1,13" +locations_default(#20019,#10000,1,13,1,13) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,6,#20001,5,"y") +#20021=@"loc,{#10000},1,14,1,14" +locations_default(#20021,#10000,1,14,1,14) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,6,")") +#20023=@"loc,{#10000},1,15,1,15" +locations_default(#20023,#10000,1,15,1,15) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,7,"{") +#20025=@"loc,{#10000},1,17,1,17" +locations_default(#20025,#10000,1,17,1,17) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,7,#20001,8,"if") +#20027=@"loc,{#10000},2,3,2,4" +locations_default(#20027,#10000,2,3,2,4) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,9,"(") +#20029=@"loc,{#10000},2,6,2,6" +locations_default(#20029,#10000,2,6,2,6) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,6,#20001,10,"x") +#20031=@"loc,{#10000},2,7,2,7" +locations_default(#20031,#10000,2,7,2,7) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,11,"||") +#20033=@"loc,{#10000},2,9,2,10" +locations_default(#20033,#10000,2,9,2,10) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,6,#20001,12,"y") +#20035=@"loc,{#10000},2,12,2,12" +locations_default(#20035,#10000,2,12,2,12) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,13,")") +#20037=@"loc,{#10000},2,13,2,13" +locations_default(#20037,#10000,2,13,2,13) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,8,#20001,14,"{") +#20039=@"loc,{#10000},2,15,2,15" +locations_default(#20039,#10000,2,15,2,15) hasLocation(#20038,#20039) #20040=* -lines(#20040,#20001," if (x || y) {}"," -") -#20041=@"loc,{#10000},2,1,2,16" -locations_default(#20041,#10000,2,1,2,16) +tokeninfo(#20040,8,#20001,15,"}") +#20041=@"loc,{#10000},2,16,2,16" +locations_default(#20041,#10000,2,16,2,16) hasLocation(#20040,#20041) -indentation(#10000,2," ",2) #20042=* -lines(#20042,#20001," if (x && y) {}"," -") -#20043=@"loc,{#10000},3,1,3,16" -locations_default(#20043,#10000,3,1,3,16) +tokeninfo(#20042,7,#20001,16,"if") +#20043=@"loc,{#10000},3,3,3,4" +locations_default(#20043,#10000,3,3,3,4) hasLocation(#20042,#20043) -indentation(#10000,3," ",2) #20044=* -lines(#20044,#20001,"}"," -") -#20045=@"loc,{#10000},4,1,4,1" -locations_default(#20045,#10000,4,1,4,1) +tokeninfo(#20044,8,#20001,17,"(") +#20045=@"loc,{#10000},3,6,3,6" +locations_default(#20045,#10000,3,6,3,6) hasLocation(#20044,#20045) -numlines(#20001,4,4,0) #20046=* -tokeninfo(#20046,7,#20001,0,"function") -#20047=@"loc,{#10000},1,1,1,8" -locations_default(#20047,#10000,1,1,1,8) +tokeninfo(#20046,6,#20001,18,"x") +#20047=@"loc,{#10000},3,7,3,7" +locations_default(#20047,#10000,3,7,3,7) hasLocation(#20046,#20047) #20048=* -tokeninfo(#20048,6,#20001,1,"f") -hasLocation(#20048,#20007) -#20049=* -tokeninfo(#20049,8,#20001,2,"(") -#20050=@"loc,{#10000},1,11,1,11" -locations_default(#20050,#10000,1,11,1,11) -hasLocation(#20049,#20050) -#20051=* -tokeninfo(#20051,6,#20001,3,"x") -hasLocation(#20051,#20011) +tokeninfo(#20048,8,#20001,19,"&&") +#20049=@"loc,{#10000},3,9,3,10" +locations_default(#20049,#10000,3,9,3,10) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,6,#20001,20,"y") +#20051=@"loc,{#10000},3,12,3,12" +locations_default(#20051,#10000,3,12,3,12) +hasLocation(#20050,#20051) #20052=* -tokeninfo(#20052,8,#20001,4,",") -#20053=@"loc,{#10000},1,13,1,13" -locations_default(#20053,#10000,1,13,1,13) +tokeninfo(#20052,8,#20001,21,")") +#20053=@"loc,{#10000},3,13,3,13" +locations_default(#20053,#10000,3,13,3,13) hasLocation(#20052,#20053) #20054=* -tokeninfo(#20054,6,#20001,5,"y") -hasLocation(#20054,#20014) -#20055=* -tokeninfo(#20055,8,#20001,6,")") -#20056=@"loc,{#10000},1,15,1,15" -locations_default(#20056,#10000,1,15,1,15) -hasLocation(#20055,#20056) -#20057=* -tokeninfo(#20057,8,#20001,7,"{") -#20058=@"loc,{#10000},1,17,1,17" -locations_default(#20058,#10000,1,17,1,17) -hasLocation(#20057,#20058) +tokeninfo(#20054,8,#20001,22,"{") +#20055=@"loc,{#10000},3,15,3,15" +locations_default(#20055,#10000,3,15,3,15) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,8,#20001,23,"}") +#20057=@"loc,{#10000},3,16,3,16" +locations_default(#20057,#10000,3,16,3,16) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,8,#20001,24,"}") +hasLocation(#20058,#20009) #20059=* -tokeninfo(#20059,7,#20001,8,"if") -#20060=@"loc,{#10000},2,3,2,4" -locations_default(#20060,#10000,2,3,2,4) +tokeninfo(#20059,0,#20001,25,"") +#20060=@"loc,{#10000},5,1,5,0" +locations_default(#20060,#10000,5,1,5,0) hasLocation(#20059,#20060) -#20061=* -tokeninfo(#20061,8,#20001,9,"(") -#20062=@"loc,{#10000},2,6,2,6" -locations_default(#20062,#10000,2,6,2,6) -hasLocation(#20061,#20062) +toplevels(#20001,0) +#20061=@"loc,{#10000},1,1,5,0" +locations_default(#20061,#10000,1,1,5,0) +hasLocation(#20001,#20061) +#20062=@"var;{f};{#20000}" +variables(#20062,"f",#20000) #20063=* -tokeninfo(#20063,6,#20001,10,"x") -hasLocation(#20063,#20023) -#20064=* -tokeninfo(#20064,8,#20001,11,"||") -#20065=@"loc,{#10000},2,9,2,10" -locations_default(#20065,#10000,2,9,2,10) -hasLocation(#20064,#20065) +stmts(#20063,17,#20001,0,"functio ... y) {}\n}") +#20064=@"loc,{#10000},1,1,4,1" +locations_default(#20064,#10000,1,1,4,1) +hasLocation(#20063,#20064) +stmtContainers(#20063,#20001) +#20065=* +exprs(#20065,78,#20063,-1,"f") +hasLocation(#20065,#20013) +exprContainers(#20065,#20063) +literals("f","f",#20065) +decl(#20065,#20062) #20066=* -tokeninfo(#20066,6,#20001,12,"y") -hasLocation(#20066,#20025) -#20067=* -tokeninfo(#20067,8,#20001,13,")") -#20068=@"loc,{#10000},2,13,2,13" -locations_default(#20068,#10000,2,13,2,13) -hasLocation(#20067,#20068) -#20069=* -tokeninfo(#20069,8,#20001,14,"{") -#20070=@"loc,{#10000},2,15,2,15" -locations_default(#20070,#10000,2,15,2,15) -hasLocation(#20069,#20070) -#20071=* -tokeninfo(#20071,8,#20001,15,"}") -#20072=@"loc,{#10000},2,16,2,16" -locations_default(#20072,#10000,2,16,2,16) -hasLocation(#20071,#20072) -#20073=* -tokeninfo(#20073,7,#20001,16,"if") -#20074=@"loc,{#10000},3,3,3,4" -locations_default(#20074,#10000,3,3,3,4) -hasLocation(#20073,#20074) -#20075=* -tokeninfo(#20075,8,#20001,17,"(") -#20076=@"loc,{#10000},3,6,3,6" -locations_default(#20076,#10000,3,6,3,6) -hasLocation(#20075,#20076) -#20077=* -tokeninfo(#20077,6,#20001,18,"x") -hasLocation(#20077,#20033) +scopes(#20066,1) +scopenodes(#20063,#20066) +scopenesting(#20066,#20000) +#20067=@"var;{x};{#20066}" +variables(#20067,"x",#20066) +#20068=* +exprs(#20068,78,#20063,0,"x") +hasLocation(#20068,#20017) +exprContainers(#20068,#20063) +literals("x","x",#20068) +decl(#20068,#20067) +#20069=@"var;{y};{#20066}" +variables(#20069,"y",#20066) +#20070=* +exprs(#20070,78,#20063,1,"y") +hasLocation(#20070,#20021) +exprContainers(#20070,#20063) +literals("y","y",#20070) +decl(#20070,#20069) +#20071=@"var;{arguments};{#20066}" +variables(#20071,"arguments",#20066) +isArgumentsObject(#20071) +#20072=* +stmts(#20072,1,#20063,-2,"{\n if ... y) {}\n}") +#20073=@"loc,{#10000},1,17,4,1" +locations_default(#20073,#10000,1,17,4,1) +hasLocation(#20072,#20073) +stmtContainers(#20072,#20063) +#20074=* +stmts(#20074,3,#20072,0,"if (x || y) {}") +#20075=@"loc,{#10000},2,3,2,16" +locations_default(#20075,#10000,2,3,2,16) +hasLocation(#20074,#20075) +stmtContainers(#20074,#20063) +#20076=* +exprs(#20076,45,#20074,0,"x || y") +#20077=@"loc,{#10000},2,7,2,12" +locations_default(#20077,#10000,2,7,2,12) +hasLocation(#20076,#20077) +enclosingStmt(#20076,#20074) +exprContainers(#20076,#20063) #20078=* -tokeninfo(#20078,8,#20001,19,"&&") -#20079=@"loc,{#10000},3,9,3,10" -locations_default(#20079,#10000,3,9,3,10) -hasLocation(#20078,#20079) +exprs(#20078,79,#20076,0,"x") +hasLocation(#20078,#20031) +enclosingStmt(#20078,#20074) +exprContainers(#20078,#20063) +literals("x","x",#20078) +bind(#20078,#20067) +#20079=* +exprs(#20079,79,#20076,1,"y") +hasLocation(#20079,#20035) +enclosingStmt(#20079,#20074) +exprContainers(#20079,#20063) +literals("y","y",#20079) +bind(#20079,#20069) #20080=* -tokeninfo(#20080,6,#20001,20,"y") -hasLocation(#20080,#20035) -#20081=* -tokeninfo(#20081,8,#20001,21,")") -#20082=@"loc,{#10000},3,13,3,13" -locations_default(#20082,#10000,3,13,3,13) -hasLocation(#20081,#20082) -#20083=* -tokeninfo(#20083,8,#20001,22,"{") -#20084=@"loc,{#10000},3,15,3,15" -locations_default(#20084,#10000,3,15,3,15) -hasLocation(#20083,#20084) -#20085=* -tokeninfo(#20085,8,#20001,23,"}") -#20086=@"loc,{#10000},3,16,3,16" -locations_default(#20086,#10000,3,16,3,16) -hasLocation(#20085,#20086) +stmts(#20080,1,#20074,1,"{}") +#20081=@"loc,{#10000},2,15,2,16" +locations_default(#20081,#10000,2,15,2,16) +hasLocation(#20080,#20081) +stmtContainers(#20080,#20063) +#20082=* +stmts(#20082,3,#20072,1,"if (x && y) {}") +#20083=@"loc,{#10000},3,3,3,16" +locations_default(#20083,#10000,3,3,3,16) +hasLocation(#20082,#20083) +stmtContainers(#20082,#20063) +#20084=* +exprs(#20084,44,#20082,0,"x && y") +#20085=@"loc,{#10000},3,7,3,12" +locations_default(#20085,#10000,3,7,3,12) +hasLocation(#20084,#20085) +enclosingStmt(#20084,#20082) +exprContainers(#20084,#20063) +#20086=* +exprs(#20086,79,#20084,0,"x") +hasLocation(#20086,#20047) +enclosingStmt(#20086,#20082) +exprContainers(#20086,#20063) +literals("x","x",#20086) +bind(#20086,#20067) #20087=* -tokeninfo(#20087,8,#20001,24,"}") -hasLocation(#20087,#20045) +exprs(#20087,79,#20084,1,"y") +hasLocation(#20087,#20051) +enclosingStmt(#20087,#20082) +exprContainers(#20087,#20063) +literals("y","y",#20087) +bind(#20087,#20069) #20088=* -tokeninfo(#20088,0,#20001,25,"") -#20089=@"loc,{#10000},5,1,5,0" -locations_default(#20089,#10000,5,1,5,0) +stmts(#20088,1,#20082,1,"{}") +#20089=@"loc,{#10000},3,15,3,16" +locations_default(#20089,#10000,3,15,3,16) hasLocation(#20088,#20089) +stmtContainers(#20088,#20063) #20090=* entry_cfg_node(#20090,#20001) #20091=@"loc,{#10000},1,1,1,0" @@ -285,67 +284,67 @@ locations_default(#20091,#10000,1,1,1,0) hasLocation(#20090,#20091) #20092=* exit_cfg_node(#20092,#20001) -hasLocation(#20092,#20089) -successor(#20004,#20092) +hasLocation(#20092,#20060) +successor(#20063,#20092) #20093=* -entry_cfg_node(#20093,#20004) +entry_cfg_node(#20093,#20063) hasLocation(#20093,#20091) #20094=* -exit_cfg_node(#20094,#20004) +exit_cfg_node(#20094,#20063) #20095=@"loc,{#10000},4,2,4,1" locations_default(#20095,#10000,4,2,4,1) hasLocation(#20094,#20095) -successor(#20016,#20018) -successor(#20028,#20030) -successor(#20030,#20032) +successor(#20072,#20074) +successor(#20082,#20084) +successor(#20084,#20086) #20096=* -guard_node(#20096,1,#20032) -hasLocation(#20096,#20033) -successor(#20096,#20034) +guard_node(#20096,1,#20086) +hasLocation(#20096,#20047) +successor(#20096,#20087) #20097=* -guard_node(#20097,0,#20032) -hasLocation(#20097,#20033) +guard_node(#20097,0,#20086) +hasLocation(#20097,#20047) successor(#20097,#20094) -successor(#20032,#20096) -successor(#20032,#20097) +successor(#20086,#20096) +successor(#20086,#20097) #20098=* -guard_node(#20098,1,#20034) -hasLocation(#20098,#20035) -successor(#20098,#20036) +guard_node(#20098,1,#20087) +hasLocation(#20098,#20051) +successor(#20098,#20088) #20099=* -guard_node(#20099,0,#20034) -hasLocation(#20099,#20035) +guard_node(#20099,0,#20087) +hasLocation(#20099,#20051) successor(#20099,#20094) -successor(#20034,#20098) -successor(#20034,#20099) -successor(#20036,#20094) -successor(#20018,#20020) -successor(#20020,#20022) +successor(#20087,#20098) +successor(#20087,#20099) +successor(#20088,#20094) +successor(#20074,#20076) +successor(#20076,#20078) #20100=* -guard_node(#20100,1,#20022) -hasLocation(#20100,#20023) -successor(#20100,#20026) +guard_node(#20100,1,#20078) +hasLocation(#20100,#20031) +successor(#20100,#20080) #20101=* -guard_node(#20101,0,#20022) -hasLocation(#20101,#20023) -successor(#20101,#20024) -successor(#20022,#20100) -successor(#20022,#20101) +guard_node(#20101,0,#20078) +hasLocation(#20101,#20031) +successor(#20101,#20079) +successor(#20078,#20100) +successor(#20078,#20101) #20102=* -guard_node(#20102,1,#20024) -hasLocation(#20102,#20025) -successor(#20102,#20026) +guard_node(#20102,1,#20079) +hasLocation(#20102,#20035) +successor(#20102,#20080) #20103=* -guard_node(#20103,0,#20024) -hasLocation(#20103,#20025) -successor(#20103,#20028) -successor(#20024,#20102) -successor(#20024,#20103) -successor(#20026,#20028) -successor(#20013,#20016) -successor(#20010,#20013) -successor(#20093,#20010) -successor(#20006,#20004) -successor(#20090,#20006) +guard_node(#20103,0,#20079) +hasLocation(#20103,#20035) +successor(#20103,#20082) +successor(#20079,#20102) +successor(#20079,#20103) +successor(#20080,#20082) +successor(#20070,#20072) +successor(#20068,#20070) +successor(#20093,#20068) +successor(#20065,#20063) +successor(#20090,#20065) numlines(#10000,4,4,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/mappedTypeModifiers.ts.trap b/javascript/extractor/tests/ts/output/trap/mappedTypeModifiers.ts.trap index 220ec3ec884..7e23db10deb 100644 --- a/javascript/extractor/tests/ts/output/trap/mappedTypeModifiers.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/mappedTypeModifiers.ts.trap @@ -9,1162 +9,1162 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,12,0" -locations_default(#20002,#10000,1,1,12,0) -hasLocation(#20001,#20002) -#20003=@"local_namespace_name;{MappedTypeModifiers};{#20000}" -local_namespace_names(#20003,"MappedTypeModifiers",#20000) +#20002=* +comments(#20002,0,#20001," Remove readonly and ?","// Remo ... y and ?") +#20003=@"loc,{#10000},2,68,2,91" +locations_default(#20003,#10000,2,68,2,91) +hasLocation(#20002,#20003) #20004=* -stmts(#20004,31,#20001,0,"namespa ... ing }\n}") -#20005=@"loc,{#10000},1,1,11,1" -locations_default(#20005,#10000,1,1,11,1) +comments(#20004,0,#20001," Add readonly and ?","// Add ... y and ?") +#20005=@"loc,{#10000},3,68,3,88" +locations_default(#20005,#10000,3,68,3,88) hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) #20006=* -exprs(#20006,78,#20004,-1,"MappedTypeModifiers") -#20007=@"loc,{#10000},1,11,1,29" -locations_default(#20007,#10000,1,11,1,29) +comments(#20006,0,#20001," Add readonly and ?","// Add ... y and ?") +#20007=@"loc,{#10000},5,67,5,87" +locations_default(#20007,#10000,5,67,5,87) hasLocation(#20006,#20007) -enclosingStmt(#20006,#20004) -exprContainers(#20006,#20001) -literals("MappedTypeModifiers","MappedTypeModifiers",#20006) -namespacedecl(#20006,#20003) #20008=* -scopes(#20008,9) -scopenodes(#20004,#20008) -scopenesting(#20008,#20000) -#20009=@"local_type_name;{MutableRequired};{#20008}" -local_type_names(#20009,"MutableRequired",#20008) -#20010=@"local_type_name;{ReadonlyPartial};{#20008}" -local_type_names(#20010,"ReadonlyPartial",#20008) -#20011=@"local_type_name;{ReadonlyPartial2};{#20008}" -local_type_names(#20011,"ReadonlyPartial2",#20008) -#20012=@"local_type_name;{Required};{#20008}" -local_type_names(#20012,"Required",#20008) -#20013=@"local_type_name;{Foo};{#20008}" -local_type_names(#20013,"Foo",#20008) -#20014=@"local_type_name;{Bar};{#20008}" -local_type_names(#20014,"Bar",#20008) -#20015=* -stmts(#20015,35,#20004,0,"type Mu ... T[P] };") -#20016=@"loc,{#10000},2,3,2,65" -locations_default(#20016,#10000,2,3,2,65) -hasLocation(#20015,#20016) -stmtContainers(#20015,#20004) -#20017=* -typeexprs(#20017,1,#20015,0,"MutableRequired") -#20018=@"loc,{#10000},2,8,2,22" -locations_default(#20018,#10000,2,8,2,22) -hasLocation(#20017,#20018) -enclosingStmt(#20017,#20015) -exprContainers(#20017,#20004) -literals("MutableRequired","MutableRequired",#20017) -typedecl(#20017,#20009) -#20019=* -scopes(#20019,12) -scopenodes(#20015,#20019) -scopenesting(#20019,#20008) -#20020=@"local_type_name;{T};{#20019}" -local_type_names(#20020,"T",#20019) -#20021=* -typeexprs(#20021,22,#20015,2,"T") -#20022=@"loc,{#10000},2,24,2,24" -locations_default(#20022,#10000,2,24,2,24) -hasLocation(#20021,#20022) -enclosingStmt(#20021,#20015) -exprContainers(#20021,#20004) -#20023=* -typeexprs(#20023,1,#20021,0,"T") -hasLocation(#20023,#20022) -enclosingStmt(#20023,#20015) -exprContainers(#20023,#20004) -literals("T","T",#20023) -typedecl(#20023,#20020) -#20024=* -typeexprs(#20024,27,#20015,1,"{ -read ... T[P] }") -#20025=@"loc,{#10000},2,29,2,64" -locations_default(#20025,#10000,2,29,2,64) -hasLocation(#20024,#20025) -enclosingStmt(#20024,#20015) -exprContainers(#20024,#20004) -#20026=* -scopes(#20026,13) -scopenodes(#20024,#20026) -scopenesting(#20026,#20019) -#20027=@"local_type_name;{P};{#20026}" -local_type_names(#20027,"P",#20026) -#20028=* -typeexprs(#20028,22,#20024,0,"P in keyof T") -#20029=@"loc,{#10000},2,42,2,53" -locations_default(#20029,#10000,2,42,2,53) -hasLocation(#20028,#20029) -enclosingStmt(#20028,#20015) -exprContainers(#20028,#20004) -#20030=* -typeexprs(#20030,1,#20028,0,"P") -#20031=@"loc,{#10000},2,42,2,42" -locations_default(#20031,#10000,2,42,2,42) -hasLocation(#20030,#20031) -enclosingStmt(#20030,#20015) -exprContainers(#20030,#20004) -literals("P","P",#20030) -typedecl(#20030,#20027) -#20032=* -typeexprs(#20032,12,#20028,1,"keyof T") -#20033=@"loc,{#10000},2,47,2,53" -locations_default(#20033,#10000,2,47,2,53) -hasLocation(#20032,#20033) -enclosingStmt(#20032,#20015) -exprContainers(#20032,#20004) -#20034=* -typeexprs(#20034,0,#20032,0,"T") -#20035=@"loc,{#10000},2,53,2,53" -locations_default(#20035,#10000,2,53,2,53) -hasLocation(#20034,#20035) -enclosingStmt(#20034,#20015) -exprContainers(#20034,#20004) -literals("T","T",#20034) -typebind(#20034,#20020) -#20036=* -typeexprs(#20036,8,#20024,1,"T[P]") -#20037=@"loc,{#10000},2,59,2,62" -locations_default(#20037,#10000,2,59,2,62) -hasLocation(#20036,#20037) -enclosingStmt(#20036,#20015) -exprContainers(#20036,#20004) -#20038=* -typeexprs(#20038,0,#20036,0,"T") -#20039=@"loc,{#10000},2,59,2,59" -locations_default(#20039,#10000,2,59,2,59) -hasLocation(#20038,#20039) -enclosingStmt(#20038,#20015) -exprContainers(#20038,#20004) -literals("T","T",#20038) -typebind(#20038,#20020) -#20040=* -typeexprs(#20040,0,#20036,1,"P") -#20041=@"loc,{#10000},2,61,2,61" -locations_default(#20041,#10000,2,61,2,61) -hasLocation(#20040,#20041) -enclosingStmt(#20040,#20015) -exprContainers(#20040,#20004) -literals("P","P",#20040) -typebind(#20040,#20027) -#20042=* -stmts(#20042,35,#20004,1,"type Re ... T[P] };") -#20043=@"loc,{#10000},3,3,3,65" -locations_default(#20043,#10000,3,3,3,65) -hasLocation(#20042,#20043) -stmtContainers(#20042,#20004) -#20044=* -typeexprs(#20044,1,#20042,0,"ReadonlyPartial") -#20045=@"loc,{#10000},3,8,3,22" -locations_default(#20045,#10000,3,8,3,22) -hasLocation(#20044,#20045) -enclosingStmt(#20044,#20042) -exprContainers(#20044,#20004) -literals("ReadonlyPartial","ReadonlyPartial",#20044) -typedecl(#20044,#20010) -#20046=* -scopes(#20046,12) -scopenodes(#20042,#20046) -scopenesting(#20046,#20008) -#20047=@"local_type_name;{T};{#20046}" -local_type_names(#20047,"T",#20046) -#20048=* -typeexprs(#20048,22,#20042,2,"T") -#20049=@"loc,{#10000},3,24,3,24" -locations_default(#20049,#10000,3,24,3,24) -hasLocation(#20048,#20049) -enclosingStmt(#20048,#20042) -exprContainers(#20048,#20004) -#20050=* -typeexprs(#20050,1,#20048,0,"T") -hasLocation(#20050,#20049) -enclosingStmt(#20050,#20042) -exprContainers(#20050,#20004) -literals("T","T",#20050) -typedecl(#20050,#20047) -#20051=* -typeexprs(#20051,27,#20042,1,"{ +read ... T[P] }") -#20052=@"loc,{#10000},3,29,3,64" -locations_default(#20052,#10000,3,29,3,64) -hasLocation(#20051,#20052) -enclosingStmt(#20051,#20042) -exprContainers(#20051,#20004) -#20053=* -scopes(#20053,13) -scopenodes(#20051,#20053) -scopenesting(#20053,#20046) -#20054=@"local_type_name;{P};{#20053}" -local_type_names(#20054,"P",#20053) -#20055=* -typeexprs(#20055,22,#20051,0,"P in keyof T") -#20056=@"loc,{#10000},3,42,3,53" -locations_default(#20056,#10000,3,42,3,53) -hasLocation(#20055,#20056) -enclosingStmt(#20055,#20042) -exprContainers(#20055,#20004) -#20057=* -typeexprs(#20057,1,#20055,0,"P") -#20058=@"loc,{#10000},3,42,3,42" -locations_default(#20058,#10000,3,42,3,42) -hasLocation(#20057,#20058) -enclosingStmt(#20057,#20042) -exprContainers(#20057,#20004) -literals("P","P",#20057) -typedecl(#20057,#20054) -#20059=* -typeexprs(#20059,12,#20055,1,"keyof T") -#20060=@"loc,{#10000},3,47,3,53" -locations_default(#20060,#10000,3,47,3,53) -hasLocation(#20059,#20060) -enclosingStmt(#20059,#20042) -exprContainers(#20059,#20004) -#20061=* -typeexprs(#20061,0,#20059,0,"T") -#20062=@"loc,{#10000},3,53,3,53" -locations_default(#20062,#10000,3,53,3,53) -hasLocation(#20061,#20062) -enclosingStmt(#20061,#20042) -exprContainers(#20061,#20004) -literals("T","T",#20061) -typebind(#20061,#20047) -#20063=* -typeexprs(#20063,8,#20051,1,"T[P]") -#20064=@"loc,{#10000},3,59,3,62" -locations_default(#20064,#10000,3,59,3,62) -hasLocation(#20063,#20064) -enclosingStmt(#20063,#20042) -exprContainers(#20063,#20004) -#20065=* -typeexprs(#20065,0,#20063,0,"T") -#20066=@"loc,{#10000},3,59,3,59" -locations_default(#20066,#10000,3,59,3,59) -hasLocation(#20065,#20066) -enclosingStmt(#20065,#20042) -exprContainers(#20065,#20004) -literals("T","T",#20065) -typebind(#20065,#20047) -#20067=* -typeexprs(#20067,0,#20063,1,"P") -#20068=@"loc,{#10000},3,61,3,61" -locations_default(#20068,#10000,3,61,3,61) -hasLocation(#20067,#20068) -enclosingStmt(#20067,#20042) -exprContainers(#20067,#20004) -literals("P","P",#20067) -typebind(#20067,#20054) -#20069=* -stmts(#20069,35,#20004,2,"type Re ... T[P] };") -#20070=@"loc,{#10000},5,3,5,64" -locations_default(#20070,#10000,5,3,5,64) -hasLocation(#20069,#20070) -stmtContainers(#20069,#20004) -#20071=* -typeexprs(#20071,1,#20069,0,"ReadonlyPartial2") -#20072=@"loc,{#10000},5,8,5,23" -locations_default(#20072,#10000,5,8,5,23) -hasLocation(#20071,#20072) -enclosingStmt(#20071,#20069) -exprContainers(#20071,#20004) -literals("ReadonlyPartial2","ReadonlyPartial2",#20071) -typedecl(#20071,#20011) -#20073=* -scopes(#20073,12) -scopenodes(#20069,#20073) -scopenesting(#20073,#20008) -#20074=@"local_type_name;{T};{#20073}" -local_type_names(#20074,"T",#20073) -#20075=* -typeexprs(#20075,22,#20069,2,"T") -#20076=@"loc,{#10000},5,25,5,25" -locations_default(#20076,#10000,5,25,5,25) -hasLocation(#20075,#20076) -enclosingStmt(#20075,#20069) -exprContainers(#20075,#20004) -#20077=* -typeexprs(#20077,1,#20075,0,"T") -hasLocation(#20077,#20076) -enclosingStmt(#20077,#20069) -exprContainers(#20077,#20004) -literals("T","T",#20077) -typedecl(#20077,#20074) -#20078=* -typeexprs(#20078,27,#20069,1,"{ reado ... T[P] }") -#20079=@"loc,{#10000},5,30,5,63" -locations_default(#20079,#10000,5,30,5,63) -hasLocation(#20078,#20079) -enclosingStmt(#20078,#20069) -exprContainers(#20078,#20004) -#20080=* -scopes(#20080,13) -scopenodes(#20078,#20080) -scopenesting(#20080,#20073) -#20081=@"local_type_name;{P};{#20080}" -local_type_names(#20081,"P",#20080) -#20082=* -typeexprs(#20082,22,#20078,0,"P in keyof T") -#20083=@"loc,{#10000},5,42,5,53" -locations_default(#20083,#10000,5,42,5,53) -hasLocation(#20082,#20083) -enclosingStmt(#20082,#20069) -exprContainers(#20082,#20004) -#20084=* -typeexprs(#20084,1,#20082,0,"P") -#20085=@"loc,{#10000},5,42,5,42" -locations_default(#20085,#10000,5,42,5,42) -hasLocation(#20084,#20085) -enclosingStmt(#20084,#20069) -exprContainers(#20084,#20004) -literals("P","P",#20084) -typedecl(#20084,#20081) -#20086=* -typeexprs(#20086,12,#20082,1,"keyof T") -#20087=@"loc,{#10000},5,47,5,53" -locations_default(#20087,#10000,5,47,5,53) -hasLocation(#20086,#20087) -enclosingStmt(#20086,#20069) -exprContainers(#20086,#20004) -#20088=* -typeexprs(#20088,0,#20086,0,"T") -#20089=@"loc,{#10000},5,53,5,53" -locations_default(#20089,#10000,5,53,5,53) -hasLocation(#20088,#20089) -enclosingStmt(#20088,#20069) -exprContainers(#20088,#20004) -literals("T","T",#20088) -typebind(#20088,#20074) -#20090=* -typeexprs(#20090,8,#20078,1,"T[P]") -#20091=@"loc,{#10000},5,58,5,61" -locations_default(#20091,#10000,5,58,5,61) -hasLocation(#20090,#20091) -enclosingStmt(#20090,#20069) -exprContainers(#20090,#20004) -#20092=* -typeexprs(#20092,0,#20090,0,"T") -#20093=@"loc,{#10000},5,58,5,58" -locations_default(#20093,#10000,5,58,5,58) -hasLocation(#20092,#20093) -enclosingStmt(#20092,#20069) -exprContainers(#20092,#20004) -literals("T","T",#20092) -typebind(#20092,#20074) -#20094=* -typeexprs(#20094,0,#20090,1,"P") -#20095=@"loc,{#10000},5,60,5,60" -locations_default(#20095,#10000,5,60,5,60) -hasLocation(#20094,#20095) -enclosingStmt(#20094,#20069) -exprContainers(#20094,#20004) -literals("P","P",#20094) -typebind(#20094,#20081) -#20096=* -stmts(#20096,35,#20004,3,"type Re ... T[P] };") -#20097=@"loc,{#10000},7,3,7,48" -locations_default(#20097,#10000,7,3,7,48) -hasLocation(#20096,#20097) -stmtContainers(#20096,#20004) -#20098=* -typeexprs(#20098,1,#20096,0,"Required") -#20099=@"loc,{#10000},7,8,7,15" -locations_default(#20099,#10000,7,8,7,15) -hasLocation(#20098,#20099) -enclosingStmt(#20098,#20096) -exprContainers(#20098,#20004) -literals("Required","Required",#20098) -typedecl(#20098,#20012) -#20100=* -scopes(#20100,12) -scopenodes(#20096,#20100) -scopenesting(#20100,#20008) -#20101=@"local_type_name;{T};{#20100}" -local_type_names(#20101,"T",#20100) -#20102=* -typeexprs(#20102,22,#20096,2,"T") -#20103=@"loc,{#10000},7,17,7,17" -locations_default(#20103,#10000,7,17,7,17) -hasLocation(#20102,#20103) -enclosingStmt(#20102,#20096) -exprContainers(#20102,#20004) -#20104=* -typeexprs(#20104,1,#20102,0,"T") -hasLocation(#20104,#20103) -enclosingStmt(#20104,#20096) -exprContainers(#20104,#20004) -literals("T","T",#20104) -typedecl(#20104,#20101) -#20105=* -typeexprs(#20105,27,#20096,1,"{ [P in ... T[P] }") -#20106=@"loc,{#10000},7,22,7,47" -locations_default(#20106,#10000,7,22,7,47) -hasLocation(#20105,#20106) -enclosingStmt(#20105,#20096) -exprContainers(#20105,#20004) -#20107=* -scopes(#20107,13) -scopenodes(#20105,#20107) -scopenesting(#20107,#20100) -#20108=@"local_type_name;{P};{#20107}" -local_type_names(#20108,"P",#20107) -#20109=* -typeexprs(#20109,22,#20105,0,"P in keyof T") -#20110=@"loc,{#10000},7,25,7,36" -locations_default(#20110,#10000,7,25,7,36) -hasLocation(#20109,#20110) -enclosingStmt(#20109,#20096) -exprContainers(#20109,#20004) -#20111=* -typeexprs(#20111,1,#20109,0,"P") -#20112=@"loc,{#10000},7,25,7,25" -locations_default(#20112,#10000,7,25,7,25) -hasLocation(#20111,#20112) -enclosingStmt(#20111,#20096) -exprContainers(#20111,#20004) -literals("P","P",#20111) -typedecl(#20111,#20108) -#20113=* -typeexprs(#20113,12,#20109,1,"keyof T") -#20114=@"loc,{#10000},7,30,7,36" -locations_default(#20114,#10000,7,30,7,36) -hasLocation(#20113,#20114) -enclosingStmt(#20113,#20096) -exprContainers(#20113,#20004) -#20115=* -typeexprs(#20115,0,#20113,0,"T") -#20116=@"loc,{#10000},7,36,7,36" -locations_default(#20116,#10000,7,36,7,36) -hasLocation(#20115,#20116) -enclosingStmt(#20115,#20096) -exprContainers(#20115,#20004) -literals("T","T",#20115) -typebind(#20115,#20101) -#20117=* -typeexprs(#20117,8,#20105,1,"T[P]") -#20118=@"loc,{#10000},7,42,7,45" -locations_default(#20118,#10000,7,42,7,45) -hasLocation(#20117,#20118) -enclosingStmt(#20117,#20096) -exprContainers(#20117,#20004) -#20119=* -typeexprs(#20119,0,#20117,0,"T") -#20120=@"loc,{#10000},7,42,7,42" -locations_default(#20120,#10000,7,42,7,42) -hasLocation(#20119,#20120) -enclosingStmt(#20119,#20096) -exprContainers(#20119,#20004) -literals("T","T",#20119) -typebind(#20119,#20101) -#20121=* -typeexprs(#20121,0,#20117,1,"P") -#20122=@"loc,{#10000},7,44,7,44" -locations_default(#20122,#10000,7,44,7,44) -hasLocation(#20121,#20122) -enclosingStmt(#20121,#20096) -exprContainers(#20121,#20004) -literals("P","P",#20121) -typebind(#20121,#20108) -#20123=* -stmts(#20123,35,#20004,4,"type Fo ... ring };") -#20124=@"loc,{#10000},9,3,9,28" -locations_default(#20124,#10000,9,3,9,28) -hasLocation(#20123,#20124) -stmtContainers(#20123,#20004) -#20125=* -typeexprs(#20125,1,#20123,0,"Foo") -#20126=@"loc,{#10000},9,8,9,10" -locations_default(#20126,#10000,9,8,9,10) -hasLocation(#20125,#20126) -enclosingStmt(#20125,#20123) -exprContainers(#20125,#20004) -literals("Foo","Foo",#20125) -typedecl(#20125,#20013) -#20127=* -typeexprs(#20127,21,#20123,1,"{ a?: string }") -#20128=@"loc,{#10000},9,14,9,27" -locations_default(#20128,#10000,9,14,9,27) -hasLocation(#20127,#20128) -enclosingStmt(#20127,#20123) -exprContainers(#20127,#20004) -#20129=* -properties(#20129,#20127,0,8,"a?: string") -#20130=@"loc,{#10000},9,16,9,25" -locations_default(#20130,#10000,9,16,9,25) -hasLocation(#20129,#20130) -#20131=* -exprs(#20131,0,#20129,0,"a") -#20132=@"loc,{#10000},9,16,9,16" -locations_default(#20132,#10000,9,16,9,16) -hasLocation(#20131,#20132) -enclosingStmt(#20131,#20123) -exprContainers(#20131,#20004) -literals("a","a",#20131) -isAbstractMember(#20129) -isOptionalMember(#20129) -#20133=* -typeexprs(#20133,2,#20129,2,"string") -#20134=@"loc,{#10000},9,20,9,25" -locations_default(#20134,#10000,9,20,9,25) -hasLocation(#20133,#20134) -enclosingStmt(#20133,#20123) -exprContainers(#20133,#20004) -literals("string","string",#20133) -#20135=* -stmts(#20135,35,#20004,5,"type Ba ... d;") -#20136=@"loc,{#10000},10,3,10,27" -locations_default(#20136,#10000,10,3,10,27) -hasLocation(#20135,#20136) -stmtContainers(#20135,#20004) -#20137=* -typeexprs(#20137,1,#20135,0,"Bar") -#20138=@"loc,{#10000},10,8,10,10" -locations_default(#20138,#10000,10,8,10,10) -hasLocation(#20137,#20138) -enclosingStmt(#20137,#20135) -exprContainers(#20137,#20004) -literals("Bar","Bar",#20137) -typedecl(#20137,#20014) -#20139=* -typeexprs(#20139,14,#20135,1,"Required") -#20140=@"loc,{#10000},10,14,10,26" -locations_default(#20140,#10000,10,14,10,26) -hasLocation(#20139,#20140) -enclosingStmt(#20139,#20135) -exprContainers(#20139,#20004) -#20141=* -typeexprs(#20141,0,#20139,-1,"Required") -#20142=@"loc,{#10000},10,14,10,21" -locations_default(#20142,#10000,10,14,10,21) -hasLocation(#20141,#20142) -enclosingStmt(#20141,#20135) -exprContainers(#20141,#20004) -literals("Required","Required",#20141) -typebind(#20141,#20012) -#20143=* -typeexprs(#20143,0,#20139,0,"Foo") -#20144=@"loc,{#10000},10,23,10,25" -locations_default(#20144,#10000,10,23,10,25) -hasLocation(#20143,#20144) -enclosingStmt(#20143,#20135) -exprContainers(#20143,#20004) -literals("Foo","Foo",#20143) -typebind(#20143,#20013) -#20145=* -comments(#20145,0,#20001," Remove readonly and ?","// Remo ... y and ?") -#20146=@"loc,{#10000},2,68,2,91" -locations_default(#20146,#10000,2,68,2,91) -hasLocation(#20145,#20146) -#20147=* -comments(#20147,0,#20001," Add readonly and ?","// Add ... y and ?") -#20148=@"loc,{#10000},3,68,3,88" -locations_default(#20148,#10000,3,68,3,88) -hasLocation(#20147,#20148) -#20149=* -comments(#20149,0,#20001," Add readonly and ?","// Add ... y and ?") -#20150=@"loc,{#10000},5,67,5,87" -locations_default(#20150,#10000,5,67,5,87) -hasLocation(#20149,#20150) -#20151=* -comments(#20151,0,#20001," Same as { a?: string | undefined }","// Same ... fined }") -#20152=@"loc,{#10000},9,31,9,67" -locations_default(#20152,#10000,9,31,9,67) -hasLocation(#20151,#20152) -#20153=* -comments(#20153,0,#20001," Same as { a: string }","// Same ... tring }") -#20154=@"loc,{#10000},10,30,10,53" -locations_default(#20154,#10000,10,30,10,53) -hasLocation(#20153,#20154) -#20155=* -lines(#20155,#20001,"namespace MappedTypeModifiers {"," +comments(#20008,0,#20001," Same as { a?: string | undefined }","// Same ... fined }") +#20009=@"loc,{#10000},9,31,9,67" +locations_default(#20009,#10000,9,31,9,67) +hasLocation(#20008,#20009) +#20010=* +comments(#20010,0,#20001," Same as { a: string }","// Same ... tring }") +#20011=@"loc,{#10000},10,30,10,53" +locations_default(#20011,#10000,10,30,10,53) +hasLocation(#20010,#20011) +#20012=* +lines(#20012,#20001,"namespace MappedTypeModifiers {"," ") -#20156=@"loc,{#10000},1,1,1,31" -locations_default(#20156,#10000,1,1,1,31) -hasLocation(#20155,#20156) -#20157=* -lines(#20157,#20001," type MutableRequired = { -readonly [P in keyof T]-?: T[P] }; // Remove readonly and ?"," +#20013=@"loc,{#10000},1,1,1,31" +locations_default(#20013,#10000,1,1,1,31) +hasLocation(#20012,#20013) +#20014=* +lines(#20014,#20001," type MutableRequired = { -readonly [P in keyof T]-?: T[P] }; // Remove readonly and ?"," ") -#20158=@"loc,{#10000},2,1,2,91" -locations_default(#20158,#10000,2,1,2,91) -hasLocation(#20157,#20158) +#20015=@"loc,{#10000},2,1,2,91" +locations_default(#20015,#10000,2,1,2,91) +hasLocation(#20014,#20015) indentation(#10000,2," ",2) -#20159=* -lines(#20159,#20001," type ReadonlyPartial = { +readonly [P in keyof T]+?: T[P] }; // Add readonly and ?"," +#20016=* +lines(#20016,#20001," type ReadonlyPartial = { +readonly [P in keyof T]+?: T[P] }; // Add readonly and ?"," ") -#20160=@"loc,{#10000},3,1,3,88" -locations_default(#20160,#10000,3,1,3,88) -hasLocation(#20159,#20160) +#20017=@"loc,{#10000},3,1,3,88" +locations_default(#20017,#10000,3,1,3,88) +hasLocation(#20016,#20017) indentation(#10000,3," ",2) -#20161=* -lines(#20161,#20001,""," +#20018=* +lines(#20018,#20001,""," ") -#20162=@"loc,{#10000},4,1,4,0" -locations_default(#20162,#10000,4,1,4,0) -hasLocation(#20161,#20162) -#20163=* -lines(#20163,#20001," type ReadonlyPartial2 = { readonly [P in keyof T]?: T[P] }; // Add readonly and ?"," +#20019=@"loc,{#10000},4,1,4,0" +locations_default(#20019,#10000,4,1,4,0) +hasLocation(#20018,#20019) +#20020=* +lines(#20020,#20001," type ReadonlyPartial2 = { readonly [P in keyof T]?: T[P] }; // Add readonly and ?"," ") -#20164=@"loc,{#10000},5,1,5,87" -locations_default(#20164,#10000,5,1,5,87) -hasLocation(#20163,#20164) +#20021=@"loc,{#10000},5,1,5,87" +locations_default(#20021,#10000,5,1,5,87) +hasLocation(#20020,#20021) indentation(#10000,5," ",2) -#20165=* -lines(#20165,#20001,""," +#20022=* +lines(#20022,#20001,""," ") -#20166=@"loc,{#10000},6,1,6,0" -locations_default(#20166,#10000,6,1,6,0) -hasLocation(#20165,#20166) -#20167=* -lines(#20167,#20001," type Required = { [P in keyof T]-?: T[P] };"," +#20023=@"loc,{#10000},6,1,6,0" +locations_default(#20023,#10000,6,1,6,0) +hasLocation(#20022,#20023) +#20024=* +lines(#20024,#20001," type Required = { [P in keyof T]-?: T[P] };"," ") -#20168=@"loc,{#10000},7,1,7,48" -locations_default(#20168,#10000,7,1,7,48) -hasLocation(#20167,#20168) +#20025=@"loc,{#10000},7,1,7,48" +locations_default(#20025,#10000,7,1,7,48) +hasLocation(#20024,#20025) indentation(#10000,7," ",2) -#20169=* -lines(#20169,#20001,""," +#20026=* +lines(#20026,#20001,""," ") -#20170=@"loc,{#10000},8,1,8,0" -locations_default(#20170,#10000,8,1,8,0) -hasLocation(#20169,#20170) -#20171=* -lines(#20171,#20001," type Foo = { a?: string }; // Same as { a?: string | undefined }"," +#20027=@"loc,{#10000},8,1,8,0" +locations_default(#20027,#10000,8,1,8,0) +hasLocation(#20026,#20027) +#20028=* +lines(#20028,#20001," type Foo = { a?: string }; // Same as { a?: string | undefined }"," ") -#20172=@"loc,{#10000},9,1,9,67" -locations_default(#20172,#10000,9,1,9,67) -hasLocation(#20171,#20172) +#20029=@"loc,{#10000},9,1,9,67" +locations_default(#20029,#10000,9,1,9,67) +hasLocation(#20028,#20029) indentation(#10000,9," ",2) -#20173=* -lines(#20173,#20001," type Bar = Required; // Same as { a: string }"," +#20030=* +lines(#20030,#20001," type Bar = Required; // Same as { a: string }"," ") -#20174=@"loc,{#10000},10,1,10,53" -locations_default(#20174,#10000,10,1,10,53) -hasLocation(#20173,#20174) +#20031=@"loc,{#10000},10,1,10,53" +locations_default(#20031,#10000,10,1,10,53) +hasLocation(#20030,#20031) indentation(#10000,10," ",2) -#20175=* -lines(#20175,#20001,"}"," +#20032=* +lines(#20032,#20001,"}"," ") -#20176=@"loc,{#10000},11,1,11,1" -locations_default(#20176,#10000,11,1,11,1) -hasLocation(#20175,#20176) +#20033=@"loc,{#10000},11,1,11,1" +locations_default(#20033,#10000,11,1,11,1) +hasLocation(#20032,#20033) numlines(#20001,11,8,5) -#20177=* -tokeninfo(#20177,7,#20001,0,"namespace") -#20178=@"loc,{#10000},1,1,1,9" -locations_default(#20178,#10000,1,1,1,9) -hasLocation(#20177,#20178) -#20179=* -tokeninfo(#20179,6,#20001,1,"MappedTypeModifiers") -hasLocation(#20179,#20007) +#20034=* +tokeninfo(#20034,7,#20001,0,"namespace") +#20035=@"loc,{#10000},1,1,1,9" +locations_default(#20035,#10000,1,1,1,9) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,6,#20001,1,"MappedTypeModifiers") +#20037=@"loc,{#10000},1,11,1,29" +locations_default(#20037,#10000,1,11,1,29) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,8,#20001,2,"{") +#20039=@"loc,{#10000},1,31,1,31" +locations_default(#20039,#10000,1,31,1,31) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,7,#20001,3,"type") +#20041=@"loc,{#10000},2,3,2,6" +locations_default(#20041,#10000,2,3,2,6) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,6,#20001,4,"MutableRequired") +#20043=@"loc,{#10000},2,8,2,22" +locations_default(#20043,#10000,2,8,2,22) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,5,"<") +#20045=@"loc,{#10000},2,23,2,23" +locations_default(#20045,#10000,2,23,2,23) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,6,#20001,6,"T") +#20047=@"loc,{#10000},2,24,2,24" +locations_default(#20047,#10000,2,24,2,24) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,8,#20001,7,">") +#20049=@"loc,{#10000},2,25,2,25" +locations_default(#20049,#10000,2,25,2,25) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,8,"=") +#20051=@"loc,{#10000},2,27,2,27" +locations_default(#20051,#10000,2,27,2,27) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,8,#20001,9,"{") +#20053=@"loc,{#10000},2,29,2,29" +locations_default(#20053,#10000,2,29,2,29) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,8,#20001,10,"-") +#20055=@"loc,{#10000},2,31,2,31" +locations_default(#20055,#10000,2,31,2,31) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,7,#20001,11,"readonly") +#20057=@"loc,{#10000},2,32,2,39" +locations_default(#20057,#10000,2,32,2,39) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,8,#20001,12,"[") +#20059=@"loc,{#10000},2,41,2,41" +locations_default(#20059,#10000,2,41,2,41) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,6,#20001,13,"P") +#20061=@"loc,{#10000},2,42,2,42" +locations_default(#20061,#10000,2,42,2,42) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,7,#20001,14,"in") +#20063=@"loc,{#10000},2,44,2,45" +locations_default(#20063,#10000,2,44,2,45) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,7,#20001,15,"keyof") +#20065=@"loc,{#10000},2,47,2,51" +locations_default(#20065,#10000,2,47,2,51) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,6,#20001,16,"T") +#20067=@"loc,{#10000},2,53,2,53" +locations_default(#20067,#10000,2,53,2,53) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,8,#20001,17,"]") +#20069=@"loc,{#10000},2,54,2,54" +locations_default(#20069,#10000,2,54,2,54) +hasLocation(#20068,#20069) +#20070=* +tokeninfo(#20070,8,#20001,18,"-") +#20071=@"loc,{#10000},2,55,2,55" +locations_default(#20071,#10000,2,55,2,55) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,8,#20001,19,"?") +#20073=@"loc,{#10000},2,56,2,56" +locations_default(#20073,#10000,2,56,2,56) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,8,#20001,20,":") +#20075=@"loc,{#10000},2,57,2,57" +locations_default(#20075,#10000,2,57,2,57) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,6,#20001,21,"T") +#20077=@"loc,{#10000},2,59,2,59" +locations_default(#20077,#10000,2,59,2,59) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,8,#20001,22,"[") +#20079=@"loc,{#10000},2,60,2,60" +locations_default(#20079,#10000,2,60,2,60) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,6,#20001,23,"P") +#20081=@"loc,{#10000},2,61,2,61" +locations_default(#20081,#10000,2,61,2,61) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,8,#20001,24,"]") +#20083=@"loc,{#10000},2,62,2,62" +locations_default(#20083,#10000,2,62,2,62) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,8,#20001,25,"}") +#20085=@"loc,{#10000},2,64,2,64" +locations_default(#20085,#10000,2,64,2,64) +hasLocation(#20084,#20085) +#20086=* +tokeninfo(#20086,8,#20001,26,";") +#20087=@"loc,{#10000},2,65,2,65" +locations_default(#20087,#10000,2,65,2,65) +hasLocation(#20086,#20087) +#20088=* +tokeninfo(#20088,7,#20001,27,"type") +#20089=@"loc,{#10000},3,3,3,6" +locations_default(#20089,#10000,3,3,3,6) +hasLocation(#20088,#20089) +next_token(#20002,#20088) +#20090=* +tokeninfo(#20090,6,#20001,28,"ReadonlyPartial") +#20091=@"loc,{#10000},3,8,3,22" +locations_default(#20091,#10000,3,8,3,22) +hasLocation(#20090,#20091) +#20092=* +tokeninfo(#20092,8,#20001,29,"<") +#20093=@"loc,{#10000},3,23,3,23" +locations_default(#20093,#10000,3,23,3,23) +hasLocation(#20092,#20093) +#20094=* +tokeninfo(#20094,6,#20001,30,"T") +#20095=@"loc,{#10000},3,24,3,24" +locations_default(#20095,#10000,3,24,3,24) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,8,#20001,31,">") +#20097=@"loc,{#10000},3,25,3,25" +locations_default(#20097,#10000,3,25,3,25) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,8,#20001,32,"=") +#20099=@"loc,{#10000},3,27,3,27" +locations_default(#20099,#10000,3,27,3,27) +hasLocation(#20098,#20099) +#20100=* +tokeninfo(#20100,8,#20001,33,"{") +#20101=@"loc,{#10000},3,29,3,29" +locations_default(#20101,#10000,3,29,3,29) +hasLocation(#20100,#20101) +#20102=* +tokeninfo(#20102,8,#20001,34,"+") +#20103=@"loc,{#10000},3,31,3,31" +locations_default(#20103,#10000,3,31,3,31) +hasLocation(#20102,#20103) +#20104=* +tokeninfo(#20104,7,#20001,35,"readonly") +#20105=@"loc,{#10000},3,32,3,39" +locations_default(#20105,#10000,3,32,3,39) +hasLocation(#20104,#20105) +#20106=* +tokeninfo(#20106,8,#20001,36,"[") +#20107=@"loc,{#10000},3,41,3,41" +locations_default(#20107,#10000,3,41,3,41) +hasLocation(#20106,#20107) +#20108=* +tokeninfo(#20108,6,#20001,37,"P") +#20109=@"loc,{#10000},3,42,3,42" +locations_default(#20109,#10000,3,42,3,42) +hasLocation(#20108,#20109) +#20110=* +tokeninfo(#20110,7,#20001,38,"in") +#20111=@"loc,{#10000},3,44,3,45" +locations_default(#20111,#10000,3,44,3,45) +hasLocation(#20110,#20111) +#20112=* +tokeninfo(#20112,7,#20001,39,"keyof") +#20113=@"loc,{#10000},3,47,3,51" +locations_default(#20113,#10000,3,47,3,51) +hasLocation(#20112,#20113) +#20114=* +tokeninfo(#20114,6,#20001,40,"T") +#20115=@"loc,{#10000},3,53,3,53" +locations_default(#20115,#10000,3,53,3,53) +hasLocation(#20114,#20115) +#20116=* +tokeninfo(#20116,8,#20001,41,"]") +#20117=@"loc,{#10000},3,54,3,54" +locations_default(#20117,#10000,3,54,3,54) +hasLocation(#20116,#20117) +#20118=* +tokeninfo(#20118,8,#20001,42,"+") +#20119=@"loc,{#10000},3,55,3,55" +locations_default(#20119,#10000,3,55,3,55) +hasLocation(#20118,#20119) +#20120=* +tokeninfo(#20120,8,#20001,43,"?") +#20121=@"loc,{#10000},3,56,3,56" +locations_default(#20121,#10000,3,56,3,56) +hasLocation(#20120,#20121) +#20122=* +tokeninfo(#20122,8,#20001,44,":") +#20123=@"loc,{#10000},3,57,3,57" +locations_default(#20123,#10000,3,57,3,57) +hasLocation(#20122,#20123) +#20124=* +tokeninfo(#20124,6,#20001,45,"T") +#20125=@"loc,{#10000},3,59,3,59" +locations_default(#20125,#10000,3,59,3,59) +hasLocation(#20124,#20125) +#20126=* +tokeninfo(#20126,8,#20001,46,"[") +#20127=@"loc,{#10000},3,60,3,60" +locations_default(#20127,#10000,3,60,3,60) +hasLocation(#20126,#20127) +#20128=* +tokeninfo(#20128,6,#20001,47,"P") +#20129=@"loc,{#10000},3,61,3,61" +locations_default(#20129,#10000,3,61,3,61) +hasLocation(#20128,#20129) +#20130=* +tokeninfo(#20130,8,#20001,48,"]") +#20131=@"loc,{#10000},3,62,3,62" +locations_default(#20131,#10000,3,62,3,62) +hasLocation(#20130,#20131) +#20132=* +tokeninfo(#20132,8,#20001,49,"}") +#20133=@"loc,{#10000},3,64,3,64" +locations_default(#20133,#10000,3,64,3,64) +hasLocation(#20132,#20133) +#20134=* +tokeninfo(#20134,8,#20001,50,";") +#20135=@"loc,{#10000},3,65,3,65" +locations_default(#20135,#10000,3,65,3,65) +hasLocation(#20134,#20135) +#20136=* +tokeninfo(#20136,7,#20001,51,"type") +#20137=@"loc,{#10000},5,3,5,6" +locations_default(#20137,#10000,5,3,5,6) +hasLocation(#20136,#20137) +next_token(#20004,#20136) +#20138=* +tokeninfo(#20138,6,#20001,52,"ReadonlyPartial2") +#20139=@"loc,{#10000},5,8,5,23" +locations_default(#20139,#10000,5,8,5,23) +hasLocation(#20138,#20139) +#20140=* +tokeninfo(#20140,8,#20001,53,"<") +#20141=@"loc,{#10000},5,24,5,24" +locations_default(#20141,#10000,5,24,5,24) +hasLocation(#20140,#20141) +#20142=* +tokeninfo(#20142,6,#20001,54,"T") +#20143=@"loc,{#10000},5,25,5,25" +locations_default(#20143,#10000,5,25,5,25) +hasLocation(#20142,#20143) +#20144=* +tokeninfo(#20144,8,#20001,55,">") +#20145=@"loc,{#10000},5,26,5,26" +locations_default(#20145,#10000,5,26,5,26) +hasLocation(#20144,#20145) +#20146=* +tokeninfo(#20146,8,#20001,56,"=") +#20147=@"loc,{#10000},5,28,5,28" +locations_default(#20147,#10000,5,28,5,28) +hasLocation(#20146,#20147) +#20148=* +tokeninfo(#20148,8,#20001,57,"{") +#20149=@"loc,{#10000},5,30,5,30" +locations_default(#20149,#10000,5,30,5,30) +hasLocation(#20148,#20149) +#20150=* +tokeninfo(#20150,7,#20001,58,"readonly") +#20151=@"loc,{#10000},5,32,5,39" +locations_default(#20151,#10000,5,32,5,39) +hasLocation(#20150,#20151) +#20152=* +tokeninfo(#20152,8,#20001,59,"[") +#20153=@"loc,{#10000},5,41,5,41" +locations_default(#20153,#10000,5,41,5,41) +hasLocation(#20152,#20153) +#20154=* +tokeninfo(#20154,6,#20001,60,"P") +#20155=@"loc,{#10000},5,42,5,42" +locations_default(#20155,#10000,5,42,5,42) +hasLocation(#20154,#20155) +#20156=* +tokeninfo(#20156,7,#20001,61,"in") +#20157=@"loc,{#10000},5,44,5,45" +locations_default(#20157,#10000,5,44,5,45) +hasLocation(#20156,#20157) +#20158=* +tokeninfo(#20158,7,#20001,62,"keyof") +#20159=@"loc,{#10000},5,47,5,51" +locations_default(#20159,#10000,5,47,5,51) +hasLocation(#20158,#20159) +#20160=* +tokeninfo(#20160,6,#20001,63,"T") +#20161=@"loc,{#10000},5,53,5,53" +locations_default(#20161,#10000,5,53,5,53) +hasLocation(#20160,#20161) +#20162=* +tokeninfo(#20162,8,#20001,64,"]") +#20163=@"loc,{#10000},5,54,5,54" +locations_default(#20163,#10000,5,54,5,54) +hasLocation(#20162,#20163) +#20164=* +tokeninfo(#20164,8,#20001,65,"?") +#20165=@"loc,{#10000},5,55,5,55" +locations_default(#20165,#10000,5,55,5,55) +hasLocation(#20164,#20165) +#20166=* +tokeninfo(#20166,8,#20001,66,":") +#20167=@"loc,{#10000},5,56,5,56" +locations_default(#20167,#10000,5,56,5,56) +hasLocation(#20166,#20167) +#20168=* +tokeninfo(#20168,6,#20001,67,"T") +#20169=@"loc,{#10000},5,58,5,58" +locations_default(#20169,#10000,5,58,5,58) +hasLocation(#20168,#20169) +#20170=* +tokeninfo(#20170,8,#20001,68,"[") +#20171=@"loc,{#10000},5,59,5,59" +locations_default(#20171,#10000,5,59,5,59) +hasLocation(#20170,#20171) +#20172=* +tokeninfo(#20172,6,#20001,69,"P") +#20173=@"loc,{#10000},5,60,5,60" +locations_default(#20173,#10000,5,60,5,60) +hasLocation(#20172,#20173) +#20174=* +tokeninfo(#20174,8,#20001,70,"]") +#20175=@"loc,{#10000},5,61,5,61" +locations_default(#20175,#10000,5,61,5,61) +hasLocation(#20174,#20175) +#20176=* +tokeninfo(#20176,8,#20001,71,"}") +#20177=@"loc,{#10000},5,63,5,63" +locations_default(#20177,#10000,5,63,5,63) +hasLocation(#20176,#20177) +#20178=* +tokeninfo(#20178,8,#20001,72,";") +#20179=@"loc,{#10000},5,64,5,64" +locations_default(#20179,#10000,5,64,5,64) +hasLocation(#20178,#20179) #20180=* -tokeninfo(#20180,8,#20001,2,"{") -#20181=@"loc,{#10000},1,31,1,31" -locations_default(#20181,#10000,1,31,1,31) +tokeninfo(#20180,7,#20001,73,"type") +#20181=@"loc,{#10000},7,3,7,6" +locations_default(#20181,#10000,7,3,7,6) hasLocation(#20180,#20181) +next_token(#20006,#20180) #20182=* -tokeninfo(#20182,7,#20001,3,"type") -#20183=@"loc,{#10000},2,3,2,6" -locations_default(#20183,#10000,2,3,2,6) +tokeninfo(#20182,6,#20001,74,"Required") +#20183=@"loc,{#10000},7,8,7,15" +locations_default(#20183,#10000,7,8,7,15) hasLocation(#20182,#20183) #20184=* -tokeninfo(#20184,6,#20001,4,"MutableRequired") -hasLocation(#20184,#20018) -#20185=* -tokeninfo(#20185,8,#20001,5,"<") -#20186=@"loc,{#10000},2,23,2,23" -locations_default(#20186,#10000,2,23,2,23) -hasLocation(#20185,#20186) -#20187=* -tokeninfo(#20187,6,#20001,6,"T") -hasLocation(#20187,#20022) +tokeninfo(#20184,8,#20001,75,"<") +#20185=@"loc,{#10000},7,16,7,16" +locations_default(#20185,#10000,7,16,7,16) +hasLocation(#20184,#20185) +#20186=* +tokeninfo(#20186,6,#20001,76,"T") +#20187=@"loc,{#10000},7,17,7,17" +locations_default(#20187,#10000,7,17,7,17) +hasLocation(#20186,#20187) #20188=* -tokeninfo(#20188,8,#20001,7,">") -#20189=@"loc,{#10000},2,25,2,25" -locations_default(#20189,#10000,2,25,2,25) +tokeninfo(#20188,8,#20001,77,">") +#20189=@"loc,{#10000},7,18,7,18" +locations_default(#20189,#10000,7,18,7,18) hasLocation(#20188,#20189) #20190=* -tokeninfo(#20190,8,#20001,8,"=") -#20191=@"loc,{#10000},2,27,2,27" -locations_default(#20191,#10000,2,27,2,27) +tokeninfo(#20190,8,#20001,78,"=") +#20191=@"loc,{#10000},7,20,7,20" +locations_default(#20191,#10000,7,20,7,20) hasLocation(#20190,#20191) #20192=* -tokeninfo(#20192,8,#20001,9,"{") -#20193=@"loc,{#10000},2,29,2,29" -locations_default(#20193,#10000,2,29,2,29) +tokeninfo(#20192,8,#20001,79,"{") +#20193=@"loc,{#10000},7,22,7,22" +locations_default(#20193,#10000,7,22,7,22) hasLocation(#20192,#20193) #20194=* -tokeninfo(#20194,8,#20001,10,"-") -#20195=@"loc,{#10000},2,31,2,31" -locations_default(#20195,#10000,2,31,2,31) +tokeninfo(#20194,8,#20001,80,"[") +#20195=@"loc,{#10000},7,24,7,24" +locations_default(#20195,#10000,7,24,7,24) hasLocation(#20194,#20195) #20196=* -tokeninfo(#20196,7,#20001,11,"readonly") -#20197=@"loc,{#10000},2,32,2,39" -locations_default(#20197,#10000,2,32,2,39) +tokeninfo(#20196,6,#20001,81,"P") +#20197=@"loc,{#10000},7,25,7,25" +locations_default(#20197,#10000,7,25,7,25) hasLocation(#20196,#20197) #20198=* -tokeninfo(#20198,8,#20001,12,"[") -#20199=@"loc,{#10000},2,41,2,41" -locations_default(#20199,#10000,2,41,2,41) +tokeninfo(#20198,7,#20001,82,"in") +#20199=@"loc,{#10000},7,27,7,28" +locations_default(#20199,#10000,7,27,7,28) hasLocation(#20198,#20199) #20200=* -tokeninfo(#20200,6,#20001,13,"P") -hasLocation(#20200,#20031) -#20201=* -tokeninfo(#20201,7,#20001,14,"in") -#20202=@"loc,{#10000},2,44,2,45" -locations_default(#20202,#10000,2,44,2,45) -hasLocation(#20201,#20202) -#20203=* -tokeninfo(#20203,7,#20001,15,"keyof") -#20204=@"loc,{#10000},2,47,2,51" -locations_default(#20204,#10000,2,47,2,51) -hasLocation(#20203,#20204) -#20205=* -tokeninfo(#20205,6,#20001,16,"T") -hasLocation(#20205,#20035) +tokeninfo(#20200,7,#20001,83,"keyof") +#20201=@"loc,{#10000},7,30,7,34" +locations_default(#20201,#10000,7,30,7,34) +hasLocation(#20200,#20201) +#20202=* +tokeninfo(#20202,6,#20001,84,"T") +#20203=@"loc,{#10000},7,36,7,36" +locations_default(#20203,#10000,7,36,7,36) +hasLocation(#20202,#20203) +#20204=* +tokeninfo(#20204,8,#20001,85,"]") +#20205=@"loc,{#10000},7,37,7,37" +locations_default(#20205,#10000,7,37,7,37) +hasLocation(#20204,#20205) #20206=* -tokeninfo(#20206,8,#20001,17,"]") -#20207=@"loc,{#10000},2,54,2,54" -locations_default(#20207,#10000,2,54,2,54) +tokeninfo(#20206,8,#20001,86,"-") +#20207=@"loc,{#10000},7,38,7,38" +locations_default(#20207,#10000,7,38,7,38) hasLocation(#20206,#20207) #20208=* -tokeninfo(#20208,8,#20001,18,"-") -#20209=@"loc,{#10000},2,55,2,55" -locations_default(#20209,#10000,2,55,2,55) +tokeninfo(#20208,8,#20001,87,"?") +#20209=@"loc,{#10000},7,39,7,39" +locations_default(#20209,#10000,7,39,7,39) hasLocation(#20208,#20209) #20210=* -tokeninfo(#20210,8,#20001,19,"?") -#20211=@"loc,{#10000},2,56,2,56" -locations_default(#20211,#10000,2,56,2,56) +tokeninfo(#20210,8,#20001,88,":") +#20211=@"loc,{#10000},7,40,7,40" +locations_default(#20211,#10000,7,40,7,40) hasLocation(#20210,#20211) #20212=* -tokeninfo(#20212,8,#20001,20,":") -#20213=@"loc,{#10000},2,57,2,57" -locations_default(#20213,#10000,2,57,2,57) +tokeninfo(#20212,6,#20001,89,"T") +#20213=@"loc,{#10000},7,42,7,42" +locations_default(#20213,#10000,7,42,7,42) hasLocation(#20212,#20213) #20214=* -tokeninfo(#20214,6,#20001,21,"T") -hasLocation(#20214,#20039) -#20215=* -tokeninfo(#20215,8,#20001,22,"[") -#20216=@"loc,{#10000},2,60,2,60" -locations_default(#20216,#10000,2,60,2,60) -hasLocation(#20215,#20216) -#20217=* -tokeninfo(#20217,6,#20001,23,"P") -hasLocation(#20217,#20041) +tokeninfo(#20214,8,#20001,90,"[") +#20215=@"loc,{#10000},7,43,7,43" +locations_default(#20215,#10000,7,43,7,43) +hasLocation(#20214,#20215) +#20216=* +tokeninfo(#20216,6,#20001,91,"P") +#20217=@"loc,{#10000},7,44,7,44" +locations_default(#20217,#10000,7,44,7,44) +hasLocation(#20216,#20217) #20218=* -tokeninfo(#20218,8,#20001,24,"]") -#20219=@"loc,{#10000},2,62,2,62" -locations_default(#20219,#10000,2,62,2,62) +tokeninfo(#20218,8,#20001,92,"]") +#20219=@"loc,{#10000},7,45,7,45" +locations_default(#20219,#10000,7,45,7,45) hasLocation(#20218,#20219) #20220=* -tokeninfo(#20220,8,#20001,25,"}") -#20221=@"loc,{#10000},2,64,2,64" -locations_default(#20221,#10000,2,64,2,64) +tokeninfo(#20220,8,#20001,93,"}") +#20221=@"loc,{#10000},7,47,7,47" +locations_default(#20221,#10000,7,47,7,47) hasLocation(#20220,#20221) #20222=* -tokeninfo(#20222,8,#20001,26,";") -#20223=@"loc,{#10000},2,65,2,65" -locations_default(#20223,#10000,2,65,2,65) +tokeninfo(#20222,8,#20001,94,";") +#20223=@"loc,{#10000},7,48,7,48" +locations_default(#20223,#10000,7,48,7,48) hasLocation(#20222,#20223) #20224=* -tokeninfo(#20224,7,#20001,27,"type") -#20225=@"loc,{#10000},3,3,3,6" -locations_default(#20225,#10000,3,3,3,6) +tokeninfo(#20224,7,#20001,95,"type") +#20225=@"loc,{#10000},9,3,9,6" +locations_default(#20225,#10000,9,3,9,6) hasLocation(#20224,#20225) -next_token(#20145,#20224) #20226=* -tokeninfo(#20226,6,#20001,28,"ReadonlyPartial") -hasLocation(#20226,#20045) -#20227=* -tokeninfo(#20227,8,#20001,29,"<") -#20228=@"loc,{#10000},3,23,3,23" -locations_default(#20228,#10000,3,23,3,23) -hasLocation(#20227,#20228) -#20229=* -tokeninfo(#20229,6,#20001,30,"T") -hasLocation(#20229,#20049) +tokeninfo(#20226,6,#20001,96,"Foo") +#20227=@"loc,{#10000},9,8,9,10" +locations_default(#20227,#10000,9,8,9,10) +hasLocation(#20226,#20227) +#20228=* +tokeninfo(#20228,8,#20001,97,"=") +#20229=@"loc,{#10000},9,12,9,12" +locations_default(#20229,#10000,9,12,9,12) +hasLocation(#20228,#20229) #20230=* -tokeninfo(#20230,8,#20001,31,">") -#20231=@"loc,{#10000},3,25,3,25" -locations_default(#20231,#10000,3,25,3,25) +tokeninfo(#20230,8,#20001,98,"{") +#20231=@"loc,{#10000},9,14,9,14" +locations_default(#20231,#10000,9,14,9,14) hasLocation(#20230,#20231) #20232=* -tokeninfo(#20232,8,#20001,32,"=") -#20233=@"loc,{#10000},3,27,3,27" -locations_default(#20233,#10000,3,27,3,27) +tokeninfo(#20232,6,#20001,99,"a") +#20233=@"loc,{#10000},9,16,9,16" +locations_default(#20233,#10000,9,16,9,16) hasLocation(#20232,#20233) #20234=* -tokeninfo(#20234,8,#20001,33,"{") -#20235=@"loc,{#10000},3,29,3,29" -locations_default(#20235,#10000,3,29,3,29) +tokeninfo(#20234,8,#20001,100,"?") +#20235=@"loc,{#10000},9,17,9,17" +locations_default(#20235,#10000,9,17,9,17) hasLocation(#20234,#20235) #20236=* -tokeninfo(#20236,8,#20001,34,"+") -#20237=@"loc,{#10000},3,31,3,31" -locations_default(#20237,#10000,3,31,3,31) +tokeninfo(#20236,8,#20001,101,":") +#20237=@"loc,{#10000},9,18,9,18" +locations_default(#20237,#10000,9,18,9,18) hasLocation(#20236,#20237) #20238=* -tokeninfo(#20238,7,#20001,35,"readonly") -#20239=@"loc,{#10000},3,32,3,39" -locations_default(#20239,#10000,3,32,3,39) +tokeninfo(#20238,7,#20001,102,"string") +#20239=@"loc,{#10000},9,20,9,25" +locations_default(#20239,#10000,9,20,9,25) hasLocation(#20238,#20239) #20240=* -tokeninfo(#20240,8,#20001,36,"[") -#20241=@"loc,{#10000},3,41,3,41" -locations_default(#20241,#10000,3,41,3,41) +tokeninfo(#20240,8,#20001,103,"}") +#20241=@"loc,{#10000},9,27,9,27" +locations_default(#20241,#10000,9,27,9,27) hasLocation(#20240,#20241) #20242=* -tokeninfo(#20242,6,#20001,37,"P") -hasLocation(#20242,#20058) -#20243=* -tokeninfo(#20243,7,#20001,38,"in") -#20244=@"loc,{#10000},3,44,3,45" -locations_default(#20244,#10000,3,44,3,45) -hasLocation(#20243,#20244) -#20245=* -tokeninfo(#20245,7,#20001,39,"keyof") -#20246=@"loc,{#10000},3,47,3,51" -locations_default(#20246,#10000,3,47,3,51) -hasLocation(#20245,#20246) -#20247=* -tokeninfo(#20247,6,#20001,40,"T") -hasLocation(#20247,#20062) +tokeninfo(#20242,8,#20001,104,";") +#20243=@"loc,{#10000},9,28,9,28" +locations_default(#20243,#10000,9,28,9,28) +hasLocation(#20242,#20243) +#20244=* +tokeninfo(#20244,7,#20001,105,"type") +#20245=@"loc,{#10000},10,3,10,6" +locations_default(#20245,#10000,10,3,10,6) +hasLocation(#20244,#20245) +next_token(#20008,#20244) +#20246=* +tokeninfo(#20246,6,#20001,106,"Bar") +#20247=@"loc,{#10000},10,8,10,10" +locations_default(#20247,#10000,10,8,10,10) +hasLocation(#20246,#20247) #20248=* -tokeninfo(#20248,8,#20001,41,"]") -#20249=@"loc,{#10000},3,54,3,54" -locations_default(#20249,#10000,3,54,3,54) +tokeninfo(#20248,8,#20001,107,"=") +#20249=@"loc,{#10000},10,12,10,12" +locations_default(#20249,#10000,10,12,10,12) hasLocation(#20248,#20249) #20250=* -tokeninfo(#20250,8,#20001,42,"+") -#20251=@"loc,{#10000},3,55,3,55" -locations_default(#20251,#10000,3,55,3,55) +tokeninfo(#20250,6,#20001,108,"Required") +#20251=@"loc,{#10000},10,14,10,21" +locations_default(#20251,#10000,10,14,10,21) hasLocation(#20250,#20251) #20252=* -tokeninfo(#20252,8,#20001,43,"?") -#20253=@"loc,{#10000},3,56,3,56" -locations_default(#20253,#10000,3,56,3,56) +tokeninfo(#20252,8,#20001,109,"<") +#20253=@"loc,{#10000},10,22,10,22" +locations_default(#20253,#10000,10,22,10,22) hasLocation(#20252,#20253) #20254=* -tokeninfo(#20254,8,#20001,44,":") -#20255=@"loc,{#10000},3,57,3,57" -locations_default(#20255,#10000,3,57,3,57) +tokeninfo(#20254,6,#20001,110,"Foo") +#20255=@"loc,{#10000},10,23,10,25" +locations_default(#20255,#10000,10,23,10,25) hasLocation(#20254,#20255) #20256=* -tokeninfo(#20256,6,#20001,45,"T") -hasLocation(#20256,#20066) -#20257=* -tokeninfo(#20257,8,#20001,46,"[") -#20258=@"loc,{#10000},3,60,3,60" -locations_default(#20258,#10000,3,60,3,60) -hasLocation(#20257,#20258) -#20259=* -tokeninfo(#20259,6,#20001,47,"P") -hasLocation(#20259,#20068) +tokeninfo(#20256,8,#20001,111,">") +#20257=@"loc,{#10000},10,26,10,26" +locations_default(#20257,#10000,10,26,10,26) +hasLocation(#20256,#20257) +#20258=* +tokeninfo(#20258,8,#20001,112,";") +#20259=@"loc,{#10000},10,27,10,27" +locations_default(#20259,#10000,10,27,10,27) +hasLocation(#20258,#20259) #20260=* -tokeninfo(#20260,8,#20001,48,"]") -#20261=@"loc,{#10000},3,62,3,62" -locations_default(#20261,#10000,3,62,3,62) -hasLocation(#20260,#20261) -#20262=* -tokeninfo(#20262,8,#20001,49,"}") -#20263=@"loc,{#10000},3,64,3,64" -locations_default(#20263,#10000,3,64,3,64) -hasLocation(#20262,#20263) -#20264=* -tokeninfo(#20264,8,#20001,50,";") -#20265=@"loc,{#10000},3,65,3,65" -locations_default(#20265,#10000,3,65,3,65) -hasLocation(#20264,#20265) -#20266=* -tokeninfo(#20266,7,#20001,51,"type") -#20267=@"loc,{#10000},5,3,5,6" -locations_default(#20267,#10000,5,3,5,6) -hasLocation(#20266,#20267) -next_token(#20147,#20266) +tokeninfo(#20260,8,#20001,113,"}") +hasLocation(#20260,#20033) +next_token(#20010,#20260) +#20261=* +tokeninfo(#20261,0,#20001,114,"") +#20262=@"loc,{#10000},12,1,12,0" +locations_default(#20262,#10000,12,1,12,0) +hasLocation(#20261,#20262) +toplevels(#20001,0) +#20263=@"loc,{#10000},1,1,12,0" +locations_default(#20263,#10000,1,1,12,0) +hasLocation(#20001,#20263) +#20264=@"local_namespace_name;{MappedTypeModifiers};{#20000}" +local_namespace_names(#20264,"MappedTypeModifiers",#20000) +#20265=* +stmts(#20265,31,#20001,0,"namespa ... ing }\n}") +#20266=@"loc,{#10000},1,1,11,1" +locations_default(#20266,#10000,1,1,11,1) +hasLocation(#20265,#20266) +stmtContainers(#20265,#20001) +#20267=* +exprs(#20267,78,#20265,-1,"MappedTypeModifiers") +hasLocation(#20267,#20037) +enclosingStmt(#20267,#20265) +exprContainers(#20267,#20001) +literals("MappedTypeModifiers","MappedTypeModifiers",#20267) +namespacedecl(#20267,#20264) #20268=* -tokeninfo(#20268,6,#20001,52,"ReadonlyPartial2") -hasLocation(#20268,#20072) -#20269=* -tokeninfo(#20269,8,#20001,53,"<") -#20270=@"loc,{#10000},5,24,5,24" -locations_default(#20270,#10000,5,24,5,24) -hasLocation(#20269,#20270) -#20271=* -tokeninfo(#20271,6,#20001,54,"T") -hasLocation(#20271,#20076) -#20272=* -tokeninfo(#20272,8,#20001,55,">") -#20273=@"loc,{#10000},5,26,5,26" -locations_default(#20273,#10000,5,26,5,26) -hasLocation(#20272,#20273) -#20274=* -tokeninfo(#20274,8,#20001,56,"=") -#20275=@"loc,{#10000},5,28,5,28" -locations_default(#20275,#10000,5,28,5,28) -hasLocation(#20274,#20275) -#20276=* -tokeninfo(#20276,8,#20001,57,"{") -#20277=@"loc,{#10000},5,30,5,30" -locations_default(#20277,#10000,5,30,5,30) -hasLocation(#20276,#20277) +scopes(#20268,9) +scopenodes(#20265,#20268) +scopenesting(#20268,#20000) +#20269=@"local_type_name;{MutableRequired};{#20268}" +local_type_names(#20269,"MutableRequired",#20268) +#20270=@"local_type_name;{ReadonlyPartial};{#20268}" +local_type_names(#20270,"ReadonlyPartial",#20268) +#20271=@"local_type_name;{ReadonlyPartial2};{#20268}" +local_type_names(#20271,"ReadonlyPartial2",#20268) +#20272=@"local_type_name;{Required};{#20268}" +local_type_names(#20272,"Required",#20268) +#20273=@"local_type_name;{Foo};{#20268}" +local_type_names(#20273,"Foo",#20268) +#20274=@"local_type_name;{Bar};{#20268}" +local_type_names(#20274,"Bar",#20268) +#20275=* +stmts(#20275,35,#20265,0,"type Mu ... T[P] };") +#20276=@"loc,{#10000},2,3,2,65" +locations_default(#20276,#10000,2,3,2,65) +hasLocation(#20275,#20276) +stmtContainers(#20275,#20265) +#20277=* +typeexprs(#20277,1,#20275,0,"MutableRequired") +hasLocation(#20277,#20043) +enclosingStmt(#20277,#20275) +exprContainers(#20277,#20265) +literals("MutableRequired","MutableRequired",#20277) +typedecl(#20277,#20269) #20278=* -tokeninfo(#20278,7,#20001,58,"readonly") -#20279=@"loc,{#10000},5,32,5,39" -locations_default(#20279,#10000,5,32,5,39) -hasLocation(#20278,#20279) +scopes(#20278,12) +scopenodes(#20275,#20278) +scopenesting(#20278,#20268) +#20279=@"local_type_name;{T};{#20278}" +local_type_names(#20279,"T",#20278) #20280=* -tokeninfo(#20280,8,#20001,59,"[") -#20281=@"loc,{#10000},5,41,5,41" -locations_default(#20281,#10000,5,41,5,41) -hasLocation(#20280,#20281) +typeexprs(#20280,22,#20275,2,"T") +hasLocation(#20280,#20047) +enclosingStmt(#20280,#20275) +exprContainers(#20280,#20265) +#20281=* +typeexprs(#20281,1,#20280,0,"T") +hasLocation(#20281,#20047) +enclosingStmt(#20281,#20275) +exprContainers(#20281,#20265) +literals("T","T",#20281) +typedecl(#20281,#20279) #20282=* -tokeninfo(#20282,6,#20001,60,"P") -hasLocation(#20282,#20085) -#20283=* -tokeninfo(#20283,7,#20001,61,"in") -#20284=@"loc,{#10000},5,44,5,45" -locations_default(#20284,#10000,5,44,5,45) -hasLocation(#20283,#20284) -#20285=* -tokeninfo(#20285,7,#20001,62,"keyof") -#20286=@"loc,{#10000},5,47,5,51" -locations_default(#20286,#10000,5,47,5,51) -hasLocation(#20285,#20286) -#20287=* -tokeninfo(#20287,6,#20001,63,"T") -hasLocation(#20287,#20089) +typeexprs(#20282,27,#20275,1,"{ -read ... T[P] }") +#20283=@"loc,{#10000},2,29,2,64" +locations_default(#20283,#10000,2,29,2,64) +hasLocation(#20282,#20283) +enclosingStmt(#20282,#20275) +exprContainers(#20282,#20265) +#20284=* +scopes(#20284,13) +scopenodes(#20282,#20284) +scopenesting(#20284,#20278) +#20285=@"local_type_name;{P};{#20284}" +local_type_names(#20285,"P",#20284) +#20286=* +typeexprs(#20286,22,#20282,0,"P in keyof T") +#20287=@"loc,{#10000},2,42,2,53" +locations_default(#20287,#10000,2,42,2,53) +hasLocation(#20286,#20287) +enclosingStmt(#20286,#20275) +exprContainers(#20286,#20265) #20288=* -tokeninfo(#20288,8,#20001,64,"]") -#20289=@"loc,{#10000},5,54,5,54" -locations_default(#20289,#10000,5,54,5,54) -hasLocation(#20288,#20289) -#20290=* -tokeninfo(#20290,8,#20001,65,"?") -#20291=@"loc,{#10000},5,55,5,55" -locations_default(#20291,#10000,5,55,5,55) -hasLocation(#20290,#20291) +typeexprs(#20288,1,#20286,0,"P") +hasLocation(#20288,#20061) +enclosingStmt(#20288,#20275) +exprContainers(#20288,#20265) +literals("P","P",#20288) +typedecl(#20288,#20285) +#20289=* +typeexprs(#20289,12,#20286,1,"keyof T") +#20290=@"loc,{#10000},2,47,2,53" +locations_default(#20290,#10000,2,47,2,53) +hasLocation(#20289,#20290) +enclosingStmt(#20289,#20275) +exprContainers(#20289,#20265) +#20291=* +typeexprs(#20291,0,#20289,0,"T") +hasLocation(#20291,#20067) +enclosingStmt(#20291,#20275) +exprContainers(#20291,#20265) +literals("T","T",#20291) +typebind(#20291,#20279) #20292=* -tokeninfo(#20292,8,#20001,66,":") -#20293=@"loc,{#10000},5,56,5,56" -locations_default(#20293,#10000,5,56,5,56) +typeexprs(#20292,8,#20282,1,"T[P]") +#20293=@"loc,{#10000},2,59,2,62" +locations_default(#20293,#10000,2,59,2,62) hasLocation(#20292,#20293) +enclosingStmt(#20292,#20275) +exprContainers(#20292,#20265) #20294=* -tokeninfo(#20294,6,#20001,67,"T") -hasLocation(#20294,#20093) +typeexprs(#20294,0,#20292,0,"T") +hasLocation(#20294,#20077) +enclosingStmt(#20294,#20275) +exprContainers(#20294,#20265) +literals("T","T",#20294) +typebind(#20294,#20279) #20295=* -tokeninfo(#20295,8,#20001,68,"[") -#20296=@"loc,{#10000},5,59,5,59" -locations_default(#20296,#10000,5,59,5,59) -hasLocation(#20295,#20296) -#20297=* -tokeninfo(#20297,6,#20001,69,"P") -hasLocation(#20297,#20095) +typeexprs(#20295,0,#20292,1,"P") +hasLocation(#20295,#20081) +enclosingStmt(#20295,#20275) +exprContainers(#20295,#20265) +literals("P","P",#20295) +typebind(#20295,#20285) +#20296=* +stmts(#20296,35,#20265,1,"type Re ... T[P] };") +#20297=@"loc,{#10000},3,3,3,65" +locations_default(#20297,#10000,3,3,3,65) +hasLocation(#20296,#20297) +stmtContainers(#20296,#20265) #20298=* -tokeninfo(#20298,8,#20001,70,"]") -#20299=@"loc,{#10000},5,61,5,61" -locations_default(#20299,#10000,5,61,5,61) -hasLocation(#20298,#20299) -#20300=* -tokeninfo(#20300,8,#20001,71,"}") -#20301=@"loc,{#10000},5,63,5,63" -locations_default(#20301,#10000,5,63,5,63) -hasLocation(#20300,#20301) +typeexprs(#20298,1,#20296,0,"ReadonlyPartial") +hasLocation(#20298,#20091) +enclosingStmt(#20298,#20296) +exprContainers(#20298,#20265) +literals("ReadonlyPartial","ReadonlyPartial",#20298) +typedecl(#20298,#20270) +#20299=* +scopes(#20299,12) +scopenodes(#20296,#20299) +scopenesting(#20299,#20268) +#20300=@"local_type_name;{T};{#20299}" +local_type_names(#20300,"T",#20299) +#20301=* +typeexprs(#20301,22,#20296,2,"T") +hasLocation(#20301,#20095) +enclosingStmt(#20301,#20296) +exprContainers(#20301,#20265) #20302=* -tokeninfo(#20302,8,#20001,72,";") -#20303=@"loc,{#10000},5,64,5,64" -locations_default(#20303,#10000,5,64,5,64) -hasLocation(#20302,#20303) -#20304=* -tokeninfo(#20304,7,#20001,73,"type") -#20305=@"loc,{#10000},7,3,7,6" -locations_default(#20305,#10000,7,3,7,6) -hasLocation(#20304,#20305) -next_token(#20149,#20304) -#20306=* -tokeninfo(#20306,6,#20001,74,"Required") -hasLocation(#20306,#20099) +typeexprs(#20302,1,#20301,0,"T") +hasLocation(#20302,#20095) +enclosingStmt(#20302,#20296) +exprContainers(#20302,#20265) +literals("T","T",#20302) +typedecl(#20302,#20300) +#20303=* +typeexprs(#20303,27,#20296,1,"{ +read ... T[P] }") +#20304=@"loc,{#10000},3,29,3,64" +locations_default(#20304,#10000,3,29,3,64) +hasLocation(#20303,#20304) +enclosingStmt(#20303,#20296) +exprContainers(#20303,#20265) +#20305=* +scopes(#20305,13) +scopenodes(#20303,#20305) +scopenesting(#20305,#20299) +#20306=@"local_type_name;{P};{#20305}" +local_type_names(#20306,"P",#20305) #20307=* -tokeninfo(#20307,8,#20001,75,"<") -#20308=@"loc,{#10000},7,16,7,16" -locations_default(#20308,#10000,7,16,7,16) +typeexprs(#20307,22,#20303,0,"P in keyof T") +#20308=@"loc,{#10000},3,42,3,53" +locations_default(#20308,#10000,3,42,3,53) hasLocation(#20307,#20308) +enclosingStmt(#20307,#20296) +exprContainers(#20307,#20265) #20309=* -tokeninfo(#20309,6,#20001,76,"T") -hasLocation(#20309,#20103) +typeexprs(#20309,1,#20307,0,"P") +hasLocation(#20309,#20109) +enclosingStmt(#20309,#20296) +exprContainers(#20309,#20265) +literals("P","P",#20309) +typedecl(#20309,#20306) #20310=* -tokeninfo(#20310,8,#20001,77,">") -#20311=@"loc,{#10000},7,18,7,18" -locations_default(#20311,#10000,7,18,7,18) +typeexprs(#20310,12,#20307,1,"keyof T") +#20311=@"loc,{#10000},3,47,3,53" +locations_default(#20311,#10000,3,47,3,53) hasLocation(#20310,#20311) +enclosingStmt(#20310,#20296) +exprContainers(#20310,#20265) #20312=* -tokeninfo(#20312,8,#20001,78,"=") -#20313=@"loc,{#10000},7,20,7,20" -locations_default(#20313,#10000,7,20,7,20) -hasLocation(#20312,#20313) -#20314=* -tokeninfo(#20314,8,#20001,79,"{") -#20315=@"loc,{#10000},7,22,7,22" -locations_default(#20315,#10000,7,22,7,22) -hasLocation(#20314,#20315) +typeexprs(#20312,0,#20310,0,"T") +hasLocation(#20312,#20115) +enclosingStmt(#20312,#20296) +exprContainers(#20312,#20265) +literals("T","T",#20312) +typebind(#20312,#20300) +#20313=* +typeexprs(#20313,8,#20303,1,"T[P]") +#20314=@"loc,{#10000},3,59,3,62" +locations_default(#20314,#10000,3,59,3,62) +hasLocation(#20313,#20314) +enclosingStmt(#20313,#20296) +exprContainers(#20313,#20265) +#20315=* +typeexprs(#20315,0,#20313,0,"T") +hasLocation(#20315,#20125) +enclosingStmt(#20315,#20296) +exprContainers(#20315,#20265) +literals("T","T",#20315) +typebind(#20315,#20300) #20316=* -tokeninfo(#20316,8,#20001,80,"[") -#20317=@"loc,{#10000},7,24,7,24" -locations_default(#20317,#10000,7,24,7,24) -hasLocation(#20316,#20317) -#20318=* -tokeninfo(#20318,6,#20001,81,"P") -hasLocation(#20318,#20112) +typeexprs(#20316,0,#20313,1,"P") +hasLocation(#20316,#20129) +enclosingStmt(#20316,#20296) +exprContainers(#20316,#20265) +literals("P","P",#20316) +typebind(#20316,#20306) +#20317=* +stmts(#20317,35,#20265,2,"type Re ... T[P] };") +#20318=@"loc,{#10000},5,3,5,64" +locations_default(#20318,#10000,5,3,5,64) +hasLocation(#20317,#20318) +stmtContainers(#20317,#20265) #20319=* -tokeninfo(#20319,7,#20001,82,"in") -#20320=@"loc,{#10000},7,27,7,28" -locations_default(#20320,#10000,7,27,7,28) -hasLocation(#20319,#20320) -#20321=* -tokeninfo(#20321,7,#20001,83,"keyof") -#20322=@"loc,{#10000},7,30,7,34" -locations_default(#20322,#10000,7,30,7,34) -hasLocation(#20321,#20322) +typeexprs(#20319,1,#20317,0,"ReadonlyPartial2") +hasLocation(#20319,#20139) +enclosingStmt(#20319,#20317) +exprContainers(#20319,#20265) +literals("ReadonlyPartial2","ReadonlyPartial2",#20319) +typedecl(#20319,#20271) +#20320=* +scopes(#20320,12) +scopenodes(#20317,#20320) +scopenesting(#20320,#20268) +#20321=@"local_type_name;{T};{#20320}" +local_type_names(#20321,"T",#20320) +#20322=* +typeexprs(#20322,22,#20317,2,"T") +hasLocation(#20322,#20143) +enclosingStmt(#20322,#20317) +exprContainers(#20322,#20265) #20323=* -tokeninfo(#20323,6,#20001,84,"T") -hasLocation(#20323,#20116) +typeexprs(#20323,1,#20322,0,"T") +hasLocation(#20323,#20143) +enclosingStmt(#20323,#20317) +exprContainers(#20323,#20265) +literals("T","T",#20323) +typedecl(#20323,#20321) #20324=* -tokeninfo(#20324,8,#20001,85,"]") -#20325=@"loc,{#10000},7,37,7,37" -locations_default(#20325,#10000,7,37,7,37) +typeexprs(#20324,27,#20317,1,"{ reado ... T[P] }") +#20325=@"loc,{#10000},5,30,5,63" +locations_default(#20325,#10000,5,30,5,63) hasLocation(#20324,#20325) +enclosingStmt(#20324,#20317) +exprContainers(#20324,#20265) #20326=* -tokeninfo(#20326,8,#20001,86,"-") -#20327=@"loc,{#10000},7,38,7,38" -locations_default(#20327,#10000,7,38,7,38) -hasLocation(#20326,#20327) +scopes(#20326,13) +scopenodes(#20324,#20326) +scopenesting(#20326,#20320) +#20327=@"local_type_name;{P};{#20326}" +local_type_names(#20327,"P",#20326) #20328=* -tokeninfo(#20328,8,#20001,87,"?") -#20329=@"loc,{#10000},7,39,7,39" -locations_default(#20329,#10000,7,39,7,39) +typeexprs(#20328,22,#20324,0,"P in keyof T") +#20329=@"loc,{#10000},5,42,5,53" +locations_default(#20329,#10000,5,42,5,53) hasLocation(#20328,#20329) +enclosingStmt(#20328,#20317) +exprContainers(#20328,#20265) #20330=* -tokeninfo(#20330,8,#20001,88,":") -#20331=@"loc,{#10000},7,40,7,40" -locations_default(#20331,#10000,7,40,7,40) -hasLocation(#20330,#20331) -#20332=* -tokeninfo(#20332,6,#20001,89,"T") -hasLocation(#20332,#20120) +typeexprs(#20330,1,#20328,0,"P") +hasLocation(#20330,#20155) +enclosingStmt(#20330,#20317) +exprContainers(#20330,#20265) +literals("P","P",#20330) +typedecl(#20330,#20327) +#20331=* +typeexprs(#20331,12,#20328,1,"keyof T") +#20332=@"loc,{#10000},5,47,5,53" +locations_default(#20332,#10000,5,47,5,53) +hasLocation(#20331,#20332) +enclosingStmt(#20331,#20317) +exprContainers(#20331,#20265) #20333=* -tokeninfo(#20333,8,#20001,90,"[") -#20334=@"loc,{#10000},7,43,7,43" -locations_default(#20334,#10000,7,43,7,43) -hasLocation(#20333,#20334) -#20335=* -tokeninfo(#20335,6,#20001,91,"P") -hasLocation(#20335,#20122) +typeexprs(#20333,0,#20331,0,"T") +hasLocation(#20333,#20161) +enclosingStmt(#20333,#20317) +exprContainers(#20333,#20265) +literals("T","T",#20333) +typebind(#20333,#20321) +#20334=* +typeexprs(#20334,8,#20324,1,"T[P]") +#20335=@"loc,{#10000},5,58,5,61" +locations_default(#20335,#10000,5,58,5,61) +hasLocation(#20334,#20335) +enclosingStmt(#20334,#20317) +exprContainers(#20334,#20265) #20336=* -tokeninfo(#20336,8,#20001,92,"]") -#20337=@"loc,{#10000},7,45,7,45" -locations_default(#20337,#10000,7,45,7,45) -hasLocation(#20336,#20337) +typeexprs(#20336,0,#20334,0,"T") +hasLocation(#20336,#20169) +enclosingStmt(#20336,#20317) +exprContainers(#20336,#20265) +literals("T","T",#20336) +typebind(#20336,#20321) +#20337=* +typeexprs(#20337,0,#20334,1,"P") +hasLocation(#20337,#20173) +enclosingStmt(#20337,#20317) +exprContainers(#20337,#20265) +literals("P","P",#20337) +typebind(#20337,#20327) #20338=* -tokeninfo(#20338,8,#20001,93,"}") -#20339=@"loc,{#10000},7,47,7,47" -locations_default(#20339,#10000,7,47,7,47) +stmts(#20338,35,#20265,3,"type Re ... T[P] };") +#20339=@"loc,{#10000},7,3,7,48" +locations_default(#20339,#10000,7,3,7,48) hasLocation(#20338,#20339) +stmtContainers(#20338,#20265) #20340=* -tokeninfo(#20340,8,#20001,94,";") -#20341=@"loc,{#10000},7,48,7,48" -locations_default(#20341,#10000,7,48,7,48) -hasLocation(#20340,#20341) -#20342=* -tokeninfo(#20342,7,#20001,95,"type") -#20343=@"loc,{#10000},9,3,9,6" -locations_default(#20343,#10000,9,3,9,6) -hasLocation(#20342,#20343) +typeexprs(#20340,1,#20338,0,"Required") +hasLocation(#20340,#20183) +enclosingStmt(#20340,#20338) +exprContainers(#20340,#20265) +literals("Required","Required",#20340) +typedecl(#20340,#20272) +#20341=* +scopes(#20341,12) +scopenodes(#20338,#20341) +scopenesting(#20341,#20268) +#20342=@"local_type_name;{T};{#20341}" +local_type_names(#20342,"T",#20341) +#20343=* +typeexprs(#20343,22,#20338,2,"T") +hasLocation(#20343,#20187) +enclosingStmt(#20343,#20338) +exprContainers(#20343,#20265) #20344=* -tokeninfo(#20344,6,#20001,96,"Foo") -hasLocation(#20344,#20126) +typeexprs(#20344,1,#20343,0,"T") +hasLocation(#20344,#20187) +enclosingStmt(#20344,#20338) +exprContainers(#20344,#20265) +literals("T","T",#20344) +typedecl(#20344,#20342) #20345=* -tokeninfo(#20345,8,#20001,97,"=") -#20346=@"loc,{#10000},9,12,9,12" -locations_default(#20346,#10000,9,12,9,12) +typeexprs(#20345,27,#20338,1,"{ [P in ... T[P] }") +#20346=@"loc,{#10000},7,22,7,47" +locations_default(#20346,#10000,7,22,7,47) hasLocation(#20345,#20346) +enclosingStmt(#20345,#20338) +exprContainers(#20345,#20265) #20347=* -tokeninfo(#20347,8,#20001,98,"{") -#20348=@"loc,{#10000},9,14,9,14" -locations_default(#20348,#10000,9,14,9,14) -hasLocation(#20347,#20348) +scopes(#20347,13) +scopenodes(#20345,#20347) +scopenesting(#20347,#20341) +#20348=@"local_type_name;{P};{#20347}" +local_type_names(#20348,"P",#20347) #20349=* -tokeninfo(#20349,6,#20001,99,"a") -hasLocation(#20349,#20132) -#20350=* -tokeninfo(#20350,8,#20001,100,"?") -#20351=@"loc,{#10000},9,17,9,17" -locations_default(#20351,#10000,9,17,9,17) -hasLocation(#20350,#20351) +typeexprs(#20349,22,#20345,0,"P in keyof T") +#20350=@"loc,{#10000},7,25,7,36" +locations_default(#20350,#10000,7,25,7,36) +hasLocation(#20349,#20350) +enclosingStmt(#20349,#20338) +exprContainers(#20349,#20265) +#20351=* +typeexprs(#20351,1,#20349,0,"P") +hasLocation(#20351,#20197) +enclosingStmt(#20351,#20338) +exprContainers(#20351,#20265) +literals("P","P",#20351) +typedecl(#20351,#20348) #20352=* -tokeninfo(#20352,8,#20001,101,":") -#20353=@"loc,{#10000},9,18,9,18" -locations_default(#20353,#10000,9,18,9,18) +typeexprs(#20352,12,#20349,1,"keyof T") +#20353=@"loc,{#10000},7,30,7,36" +locations_default(#20353,#10000,7,30,7,36) hasLocation(#20352,#20353) +enclosingStmt(#20352,#20338) +exprContainers(#20352,#20265) #20354=* -tokeninfo(#20354,7,#20001,102,"string") -hasLocation(#20354,#20134) +typeexprs(#20354,0,#20352,0,"T") +hasLocation(#20354,#20203) +enclosingStmt(#20354,#20338) +exprContainers(#20354,#20265) +literals("T","T",#20354) +typebind(#20354,#20342) #20355=* -tokeninfo(#20355,8,#20001,103,"}") -#20356=@"loc,{#10000},9,27,9,27" -locations_default(#20356,#10000,9,27,9,27) +typeexprs(#20355,8,#20345,1,"T[P]") +#20356=@"loc,{#10000},7,42,7,45" +locations_default(#20356,#10000,7,42,7,45) hasLocation(#20355,#20356) +enclosingStmt(#20355,#20338) +exprContainers(#20355,#20265) #20357=* -tokeninfo(#20357,8,#20001,104,";") -#20358=@"loc,{#10000},9,28,9,28" -locations_default(#20358,#10000,9,28,9,28) -hasLocation(#20357,#20358) +typeexprs(#20357,0,#20355,0,"T") +hasLocation(#20357,#20213) +enclosingStmt(#20357,#20338) +exprContainers(#20357,#20265) +literals("T","T",#20357) +typebind(#20357,#20342) +#20358=* +typeexprs(#20358,0,#20355,1,"P") +hasLocation(#20358,#20217) +enclosingStmt(#20358,#20338) +exprContainers(#20358,#20265) +literals("P","P",#20358) +typebind(#20358,#20348) #20359=* -tokeninfo(#20359,7,#20001,105,"type") -#20360=@"loc,{#10000},10,3,10,6" -locations_default(#20360,#10000,10,3,10,6) +stmts(#20359,35,#20265,4,"type Fo ... ring };") +#20360=@"loc,{#10000},9,3,9,28" +locations_default(#20360,#10000,9,3,9,28) hasLocation(#20359,#20360) -next_token(#20151,#20359) +stmtContainers(#20359,#20265) #20361=* -tokeninfo(#20361,6,#20001,106,"Bar") -hasLocation(#20361,#20138) +typeexprs(#20361,1,#20359,0,"Foo") +hasLocation(#20361,#20227) +enclosingStmt(#20361,#20359) +exprContainers(#20361,#20265) +literals("Foo","Foo",#20361) +typedecl(#20361,#20273) #20362=* -tokeninfo(#20362,8,#20001,107,"=") -#20363=@"loc,{#10000},10,12,10,12" -locations_default(#20363,#10000,10,12,10,12) +typeexprs(#20362,21,#20359,1,"{ a?: string }") +#20363=@"loc,{#10000},9,14,9,27" +locations_default(#20363,#10000,9,14,9,27) hasLocation(#20362,#20363) +enclosingStmt(#20362,#20359) +exprContainers(#20362,#20265) #20364=* -tokeninfo(#20364,6,#20001,108,"Required") -hasLocation(#20364,#20142) -#20365=* -tokeninfo(#20365,8,#20001,109,"<") -#20366=@"loc,{#10000},10,22,10,22" -locations_default(#20366,#10000,10,22,10,22) -hasLocation(#20365,#20366) +properties(#20364,#20362,0,8,"a?: string") +#20365=@"loc,{#10000},9,16,9,25" +locations_default(#20365,#10000,9,16,9,25) +hasLocation(#20364,#20365) +#20366=* +exprs(#20366,0,#20364,0,"a") +hasLocation(#20366,#20233) +enclosingStmt(#20366,#20359) +exprContainers(#20366,#20265) +literals("a","a",#20366) +isAbstractMember(#20364) +isOptionalMember(#20364) #20367=* -tokeninfo(#20367,6,#20001,110,"Foo") -hasLocation(#20367,#20144) +typeexprs(#20367,2,#20364,2,"string") +hasLocation(#20367,#20239) +enclosingStmt(#20367,#20359) +exprContainers(#20367,#20265) +literals("string","string",#20367) #20368=* -tokeninfo(#20368,8,#20001,111,">") -#20369=@"loc,{#10000},10,26,10,26" -locations_default(#20369,#10000,10,26,10,26) +stmts(#20368,35,#20265,5,"type Ba ... d;") +#20369=@"loc,{#10000},10,3,10,27" +locations_default(#20369,#10000,10,3,10,27) hasLocation(#20368,#20369) +stmtContainers(#20368,#20265) #20370=* -tokeninfo(#20370,8,#20001,112,";") -#20371=@"loc,{#10000},10,27,10,27" -locations_default(#20371,#10000,10,27,10,27) -hasLocation(#20370,#20371) -#20372=* -tokeninfo(#20372,8,#20001,113,"}") -hasLocation(#20372,#20176) -next_token(#20153,#20372) +typeexprs(#20370,1,#20368,0,"Bar") +hasLocation(#20370,#20247) +enclosingStmt(#20370,#20368) +exprContainers(#20370,#20265) +literals("Bar","Bar",#20370) +typedecl(#20370,#20274) +#20371=* +typeexprs(#20371,14,#20368,1,"Required") +#20372=@"loc,{#10000},10,14,10,26" +locations_default(#20372,#10000,10,14,10,26) +hasLocation(#20371,#20372) +enclosingStmt(#20371,#20368) +exprContainers(#20371,#20265) #20373=* -tokeninfo(#20373,0,#20001,114,"") -#20374=@"loc,{#10000},12,1,12,0" -locations_default(#20374,#10000,12,1,12,0) -hasLocation(#20373,#20374) +typeexprs(#20373,0,#20371,-1,"Required") +hasLocation(#20373,#20251) +enclosingStmt(#20373,#20368) +exprContainers(#20373,#20265) +literals("Required","Required",#20373) +typebind(#20373,#20272) +#20374=* +typeexprs(#20374,0,#20371,0,"Foo") +hasLocation(#20374,#20255) +enclosingStmt(#20374,#20368) +exprContainers(#20374,#20265) +literals("Foo","Foo",#20374) +typebind(#20374,#20273) #20375=* entry_cfg_node(#20375,#20001) #20376=@"loc,{#10000},1,1,1,0" @@ -1172,15 +1172,15 @@ locations_default(#20376,#10000,1,1,1,0) hasLocation(#20375,#20376) #20377=* exit_cfg_node(#20377,#20001) -hasLocation(#20377,#20374) -successor(#20006,#20004) -successor(#20135,#20377) -successor(#20123,#20135) -successor(#20096,#20123) -successor(#20069,#20096) -successor(#20042,#20069) -successor(#20015,#20042) -successor(#20004,#20015) -successor(#20375,#20006) +hasLocation(#20377,#20262) +successor(#20267,#20265) +successor(#20368,#20377) +successor(#20359,#20368) +successor(#20338,#20359) +successor(#20317,#20338) +successor(#20296,#20317) +successor(#20275,#20296) +successor(#20265,#20275) +successor(#20375,#20267) numlines(#10000,11,8,5) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/namespaces.ts.trap b/javascript/extractor/tests/ts/output/trap/namespaces.ts.trap index 25a7e9b2043..f61de014211 100644 --- a/javascript/extractor/tests/ts/output/trap/namespaces.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/namespaces.ts.trap @@ -9,320 +9,320 @@ 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;{M};{#20000}" -variables(#20003,"M",#20000) -#20004=@"var;{x};{#20000}" -variables(#20004,"x",#20000) -#20005=@"local_type_name;{x};{#20000}" -local_type_names(#20005,"x",#20000) -#20006=@"local_namespace_name;{M};{#20000}" -local_namespace_names(#20006,"M",#20000) -#20007=@"local_namespace_name;{x};{#20000}" -local_namespace_names(#20007,"x",#20000) -variables(#20004,"x",#20000) -local_type_names(#20005,"x",#20000) -local_namespace_names(#20007,"x",#20000) -#20008=* -stmts(#20008,31,#20001,0,"namespa ... ;\n }\n}") -#20009=@"loc,{#10000},1,1,5,1" -locations_default(#20009,#10000,1,1,5,1) -hasLocation(#20008,#20009) -stmtContainers(#20008,#20001) -#20010=* -exprs(#20010,78,#20008,-1,"M") -#20011=@"loc,{#10000},1,11,1,11" -locations_default(#20011,#10000,1,11,1,11) -hasLocation(#20010,#20011) -enclosingStmt(#20010,#20008) -exprContainers(#20010,#20001) -literals("M","M",#20010) -decl(#20010,#20003) -namespacedecl(#20010,#20006) -#20012=* -scopes(#20012,9) -scopenodes(#20008,#20012) -scopenesting(#20012,#20000) -#20013=@"var;{N};{#20012}" -variables(#20013,"N",#20012) -#20014=@"local_namespace_name;{N};{#20012}" -local_namespace_names(#20014,"N",#20012) -#20015=* -stmts(#20015,30,#20008,0,"export ... 42;\n }") -#20016=@"loc,{#10000},2,3,4,3" -locations_default(#20016,#10000,2,3,4,3) -hasLocation(#20015,#20016) -stmtContainers(#20015,#20008) -#20017=* -stmts(#20017,31,#20015,-1,"namespa ... 42;\n }") -#20018=@"loc,{#10000},2,10,4,3" -locations_default(#20018,#10000,2,10,4,3) -hasLocation(#20017,#20018) -stmtContainers(#20017,#20008) -#20019=* -exprs(#20019,78,#20017,-1,"N") -#20020=@"loc,{#10000},2,20,2,20" -locations_default(#20020,#10000,2,20,2,20) -hasLocation(#20019,#20020) -enclosingStmt(#20019,#20017) -exprContainers(#20019,#20008) -literals("N","N",#20019) -decl(#20019,#20013) -namespacedecl(#20019,#20014) -#20021=* -scopes(#20021,9) -scopenodes(#20017,#20021) -scopenesting(#20021,#20012) -#20022=@"var;{x};{#20021}" -variables(#20022,"x",#20021) -#20023=* -stmts(#20023,30,#20017,0,"export let x = 42;") -#20024=@"loc,{#10000},3,5,3,22" -locations_default(#20024,#10000,3,5,3,22) -hasLocation(#20023,#20024) -stmtContainers(#20023,#20017) -#20025=* -stmts(#20025,23,#20023,-1,"let x = 42;") -#20026=@"loc,{#10000},3,12,3,22" -locations_default(#20026,#10000,3,12,3,22) -hasLocation(#20025,#20026) -stmtContainers(#20025,#20017) -#20027=* -exprs(#20027,64,#20025,0,"x = 42") -#20028=@"loc,{#10000},3,16,3,21" -locations_default(#20028,#10000,3,16,3,21) -hasLocation(#20027,#20028) -enclosingStmt(#20027,#20025) -exprContainers(#20027,#20017) -#20029=* -exprs(#20029,78,#20027,0,"x") -#20030=@"loc,{#10000},3,16,3,16" -locations_default(#20030,#10000,3,16,3,16) -hasLocation(#20029,#20030) -enclosingStmt(#20029,#20025) -exprContainers(#20029,#20017) -literals("x","x",#20029) -decl(#20029,#20022) -#20031=* -exprs(#20031,3,#20027,1,"42") -#20032=@"loc,{#10000},3,20,3,21" -locations_default(#20032,#10000,3,20,3,21) -hasLocation(#20031,#20032) -enclosingStmt(#20031,#20025) -exprContainers(#20031,#20017) -literals("42","42",#20031) -isInstantiated(#20017) -isInstantiated(#20008) -#20033=* -stmts(#20033,32,#20001,1,"import x = M.N.x;") -#20034=@"loc,{#10000},7,1,7,17" -locations_default(#20034,#10000,7,1,7,17) -hasLocation(#20033,#20034) -stmtContainers(#20033,#20001) -#20035=* -exprs(#20035,78,#20033,0,"x") -#20036=@"loc,{#10000},7,8,7,8" -locations_default(#20036,#10000,7,8,7,8) -hasLocation(#20035,#20036) -enclosingStmt(#20035,#20033) -exprContainers(#20035,#20001) -literals("x","x",#20035) -decl(#20035,#20004) -typedecl(#20035,#20005) -namespacedecl(#20035,#20007) -#20037=* -exprs(#20037,14,#20033,1,"M.N.x") -#20038=@"loc,{#10000},7,12,7,16" -locations_default(#20038,#10000,7,12,7,16) -hasLocation(#20037,#20038) -enclosingStmt(#20037,#20033) -exprContainers(#20037,#20001) -#20039=* -exprs(#20039,14,#20037,0,"M.N") -#20040=@"loc,{#10000},7,12,7,14" -locations_default(#20040,#10000,7,12,7,14) -hasLocation(#20039,#20040) -enclosingStmt(#20039,#20033) -exprContainers(#20039,#20001) -#20041=* -exprs(#20041,79,#20039,0,"M") -#20042=@"loc,{#10000},7,12,7,12" -locations_default(#20042,#10000,7,12,7,12) -hasLocation(#20041,#20042) -enclosingStmt(#20041,#20033) -exprContainers(#20041,#20001) -literals("M","M",#20041) -bind(#20041,#20003) -#20043=* -exprs(#20043,0,#20039,1,"N") -#20044=@"loc,{#10000},7,14,7,14" -locations_default(#20044,#10000,7,14,7,14) -hasLocation(#20043,#20044) -enclosingStmt(#20043,#20033) -exprContainers(#20043,#20001) -literals("N","N",#20043) -#20045=* -exprs(#20045,0,#20037,1,"x") -#20046=@"loc,{#10000},7,16,7,16" -locations_default(#20046,#10000,7,16,7,16) -hasLocation(#20045,#20046) -enclosingStmt(#20045,#20033) -exprContainers(#20045,#20001) -literals("x","x",#20045) -#20047=* -lines(#20047,#20001,"namespace M {"," +#20002=* +lines(#20002,#20001,"namespace M {"," ") -#20048=@"loc,{#10000},1,1,1,13" -locations_default(#20048,#10000,1,1,1,13) +#20003=@"loc,{#10000},1,1,1,13" +locations_default(#20003,#10000,1,1,1,13) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," export namespace N {"," +") +#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," export let x = 42;"," +") +#20007=@"loc,{#10000},3,1,3,22" +locations_default(#20007,#10000,3,1,3,22) +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) +#20012=* +lines(#20012,#20001,""," +") +#20013=@"loc,{#10000},6,1,6,0" +locations_default(#20013,#10000,6,1,6,0) +hasLocation(#20012,#20013) +#20014=* +lines(#20014,#20001,"import x = M.N.x;"," +") +#20015=@"loc,{#10000},7,1,7,17" +locations_default(#20015,#10000,7,1,7,17) +hasLocation(#20014,#20015) +numlines(#20001,7,6,0) +#20016=* +tokeninfo(#20016,7,#20001,0,"namespace") +#20017=@"loc,{#10000},1,1,1,9" +locations_default(#20017,#10000,1,1,1,9) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,6,#20001,1,"M") +#20019=@"loc,{#10000},1,11,1,11" +locations_default(#20019,#10000,1,11,1,11) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,2,"{") +#20021=@"loc,{#10000},1,13,1,13" +locations_default(#20021,#10000,1,13,1,13) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,7,#20001,3,"export") +#20023=@"loc,{#10000},2,3,2,8" +locations_default(#20023,#10000,2,3,2,8) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,7,#20001,4,"namespace") +#20025=@"loc,{#10000},2,10,2,18" +locations_default(#20025,#10000,2,10,2,18) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,6,#20001,5,"N") +#20027=@"loc,{#10000},2,20,2,20" +locations_default(#20027,#10000,2,20,2,20) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,6,"{") +#20029=@"loc,{#10000},2,22,2,22" +locations_default(#20029,#10000,2,22,2,22) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,7,#20001,7,"export") +#20031=@"loc,{#10000},3,5,3,10" +locations_default(#20031,#10000,3,5,3,10) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,7,#20001,8,"let") +#20033=@"loc,{#10000},3,12,3,14" +locations_default(#20033,#10000,3,12,3,14) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,6,#20001,9,"x") +#20035=@"loc,{#10000},3,16,3,16" +locations_default(#20035,#10000,3,16,3,16) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,10,"=") +#20037=@"loc,{#10000},3,18,3,18" +locations_default(#20037,#10000,3,18,3,18) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,3,#20001,11,"42") +#20039=@"loc,{#10000},3,20,3,21" +locations_default(#20039,#10000,3,20,3,21) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,12,";") +#20041=@"loc,{#10000},3,22,3,22" +locations_default(#20041,#10000,3,22,3,22) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,13,"}") +#20043=@"loc,{#10000},4,3,4,3" +locations_default(#20043,#10000,4,3,4,3) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,14,"}") +hasLocation(#20044,#20011) +#20045=* +tokeninfo(#20045,7,#20001,15,"import") +#20046=@"loc,{#10000},7,1,7,6" +locations_default(#20046,#10000,7,1,7,6) +hasLocation(#20045,#20046) +#20047=* +tokeninfo(#20047,6,#20001,16,"x") +#20048=@"loc,{#10000},7,8,7,8" +locations_default(#20048,#10000,7,8,7,8) hasLocation(#20047,#20048) #20049=* -lines(#20049,#20001," export namespace N {"," -") -#20050=@"loc,{#10000},2,1,2,22" -locations_default(#20050,#10000,2,1,2,22) +tokeninfo(#20049,8,#20001,17,"=") +#20050=@"loc,{#10000},7,10,7,10" +locations_default(#20050,#10000,7,10,7,10) hasLocation(#20049,#20050) -indentation(#10000,2," ",2) #20051=* -lines(#20051,#20001," export let x = 42;"," -") -#20052=@"loc,{#10000},3,1,3,22" -locations_default(#20052,#10000,3,1,3,22) +tokeninfo(#20051,6,#20001,18,"M") +#20052=@"loc,{#10000},7,12,7,12" +locations_default(#20052,#10000,7,12,7,12) hasLocation(#20051,#20052) -indentation(#10000,3," ",4) #20053=* -lines(#20053,#20001," }"," -") -#20054=@"loc,{#10000},4,1,4,3" -locations_default(#20054,#10000,4,1,4,3) +tokeninfo(#20053,8,#20001,19,".") +#20054=@"loc,{#10000},7,13,7,13" +locations_default(#20054,#10000,7,13,7,13) hasLocation(#20053,#20054) -indentation(#10000,4," ",2) #20055=* -lines(#20055,#20001,"}"," -") -#20056=@"loc,{#10000},5,1,5,1" -locations_default(#20056,#10000,5,1,5,1) +tokeninfo(#20055,6,#20001,20,"N") +#20056=@"loc,{#10000},7,14,7,14" +locations_default(#20056,#10000,7,14,7,14) hasLocation(#20055,#20056) #20057=* -lines(#20057,#20001,""," -") -#20058=@"loc,{#10000},6,1,6,0" -locations_default(#20058,#10000,6,1,6,0) +tokeninfo(#20057,8,#20001,21,".") +#20058=@"loc,{#10000},7,15,7,15" +locations_default(#20058,#10000,7,15,7,15) hasLocation(#20057,#20058) #20059=* -lines(#20059,#20001,"import x = M.N.x;"," -") -hasLocation(#20059,#20034) -numlines(#20001,7,6,0) -#20060=* -tokeninfo(#20060,7,#20001,0,"namespace") -#20061=@"loc,{#10000},1,1,1,9" -locations_default(#20061,#10000,1,1,1,9) -hasLocation(#20060,#20061) -#20062=* -tokeninfo(#20062,6,#20001,1,"M") -hasLocation(#20062,#20011) +tokeninfo(#20059,6,#20001,22,"x") +#20060=@"loc,{#10000},7,16,7,16" +locations_default(#20060,#10000,7,16,7,16) +hasLocation(#20059,#20060) +#20061=* +tokeninfo(#20061,8,#20001,23,";") +#20062=@"loc,{#10000},7,17,7,17" +locations_default(#20062,#10000,7,17,7,17) +hasLocation(#20061,#20062) #20063=* -tokeninfo(#20063,8,#20001,2,"{") -#20064=@"loc,{#10000},1,13,1,13" -locations_default(#20064,#10000,1,13,1,13) +tokeninfo(#20063,0,#20001,24,"") +#20064=@"loc,{#10000},8,1,8,0" +locations_default(#20064,#10000,8,1,8,0) hasLocation(#20063,#20064) -#20065=* -tokeninfo(#20065,7,#20001,3,"export") -#20066=@"loc,{#10000},2,3,2,8" -locations_default(#20066,#10000,2,3,2,8) -hasLocation(#20065,#20066) -#20067=* -tokeninfo(#20067,7,#20001,4,"namespace") -#20068=@"loc,{#10000},2,10,2,18" -locations_default(#20068,#10000,2,10,2,18) -hasLocation(#20067,#20068) -#20069=* -tokeninfo(#20069,6,#20001,5,"N") -hasLocation(#20069,#20020) -#20070=* -tokeninfo(#20070,8,#20001,6,"{") -#20071=@"loc,{#10000},2,22,2,22" -locations_default(#20071,#10000,2,22,2,22) -hasLocation(#20070,#20071) -#20072=* -tokeninfo(#20072,7,#20001,7,"export") -#20073=@"loc,{#10000},3,5,3,10" -locations_default(#20073,#10000,3,5,3,10) -hasLocation(#20072,#20073) +toplevels(#20001,0) +#20065=@"loc,{#10000},1,1,8,0" +locations_default(#20065,#10000,1,1,8,0) +hasLocation(#20001,#20065) +#20066=@"var;{M};{#20000}" +variables(#20066,"M",#20000) +#20067=@"var;{x};{#20000}" +variables(#20067,"x",#20000) +#20068=@"local_type_name;{x};{#20000}" +local_type_names(#20068,"x",#20000) +#20069=@"local_namespace_name;{M};{#20000}" +local_namespace_names(#20069,"M",#20000) +#20070=@"local_namespace_name;{x};{#20000}" +local_namespace_names(#20070,"x",#20000) +variables(#20067,"x",#20000) +local_type_names(#20068,"x",#20000) +local_namespace_names(#20070,"x",#20000) +#20071=* +stmts(#20071,31,#20001,0,"namespa ... ;\n }\n}") +#20072=@"loc,{#10000},1,1,5,1" +locations_default(#20072,#10000,1,1,5,1) +hasLocation(#20071,#20072) +stmtContainers(#20071,#20001) +#20073=* +exprs(#20073,78,#20071,-1,"M") +hasLocation(#20073,#20019) +enclosingStmt(#20073,#20071) +exprContainers(#20073,#20001) +literals("M","M",#20073) +decl(#20073,#20066) +namespacedecl(#20073,#20069) #20074=* -tokeninfo(#20074,7,#20001,8,"let") -#20075=@"loc,{#10000},3,12,3,14" -locations_default(#20075,#10000,3,12,3,14) -hasLocation(#20074,#20075) -#20076=* -tokeninfo(#20076,6,#20001,9,"x") -hasLocation(#20076,#20030) +scopes(#20074,9) +scopenodes(#20071,#20074) +scopenesting(#20074,#20000) +#20075=@"var;{N};{#20074}" +variables(#20075,"N",#20074) +#20076=@"local_namespace_name;{N};{#20074}" +local_namespace_names(#20076,"N",#20074) #20077=* -tokeninfo(#20077,8,#20001,10,"=") -#20078=@"loc,{#10000},3,18,3,18" -locations_default(#20078,#10000,3,18,3,18) +stmts(#20077,30,#20071,0,"export ... 42;\n }") +#20078=@"loc,{#10000},2,3,4,3" +locations_default(#20078,#10000,2,3,4,3) hasLocation(#20077,#20078) +stmtContainers(#20077,#20071) #20079=* -tokeninfo(#20079,3,#20001,11,"42") -hasLocation(#20079,#20032) -#20080=* -tokeninfo(#20080,8,#20001,12,";") -#20081=@"loc,{#10000},3,22,3,22" -locations_default(#20081,#10000,3,22,3,22) -hasLocation(#20080,#20081) +stmts(#20079,31,#20077,-1,"namespa ... 42;\n }") +#20080=@"loc,{#10000},2,10,4,3" +locations_default(#20080,#10000,2,10,4,3) +hasLocation(#20079,#20080) +stmtContainers(#20079,#20071) +#20081=* +exprs(#20081,78,#20079,-1,"N") +hasLocation(#20081,#20027) +enclosingStmt(#20081,#20079) +exprContainers(#20081,#20071) +literals("N","N",#20081) +decl(#20081,#20075) +namespacedecl(#20081,#20076) #20082=* -tokeninfo(#20082,8,#20001,13,"}") -#20083=@"loc,{#10000},4,3,4,3" -locations_default(#20083,#10000,4,3,4,3) -hasLocation(#20082,#20083) +scopes(#20082,9) +scopenodes(#20079,#20082) +scopenesting(#20082,#20074) +#20083=@"var;{x};{#20082}" +variables(#20083,"x",#20082) #20084=* -tokeninfo(#20084,8,#20001,14,"}") -hasLocation(#20084,#20056) -#20085=* -tokeninfo(#20085,7,#20001,15,"import") -#20086=@"loc,{#10000},7,1,7,6" -locations_default(#20086,#10000,7,1,7,6) -hasLocation(#20085,#20086) -#20087=* -tokeninfo(#20087,6,#20001,16,"x") -hasLocation(#20087,#20036) +stmts(#20084,30,#20079,0,"export let x = 42;") +#20085=@"loc,{#10000},3,5,3,22" +locations_default(#20085,#10000,3,5,3,22) +hasLocation(#20084,#20085) +stmtContainers(#20084,#20079) +#20086=* +stmts(#20086,23,#20084,-1,"let x = 42;") +#20087=@"loc,{#10000},3,12,3,22" +locations_default(#20087,#10000,3,12,3,22) +hasLocation(#20086,#20087) +stmtContainers(#20086,#20079) #20088=* -tokeninfo(#20088,8,#20001,17,"=") -#20089=@"loc,{#10000},7,10,7,10" -locations_default(#20089,#10000,7,10,7,10) +exprs(#20088,64,#20086,0,"x = 42") +#20089=@"loc,{#10000},3,16,3,21" +locations_default(#20089,#10000,3,16,3,21) hasLocation(#20088,#20089) +enclosingStmt(#20088,#20086) +exprContainers(#20088,#20079) #20090=* -tokeninfo(#20090,6,#20001,18,"M") -hasLocation(#20090,#20042) +exprs(#20090,78,#20088,0,"x") +hasLocation(#20090,#20035) +enclosingStmt(#20090,#20086) +exprContainers(#20090,#20079) +literals("x","x",#20090) +decl(#20090,#20083) #20091=* -tokeninfo(#20091,8,#20001,19,".") -#20092=@"loc,{#10000},7,13,7,13" -locations_default(#20092,#10000,7,13,7,13) -hasLocation(#20091,#20092) +exprs(#20091,3,#20088,1,"42") +hasLocation(#20091,#20039) +enclosingStmt(#20091,#20086) +exprContainers(#20091,#20079) +literals("42","42",#20091) +isInstantiated(#20079) +isInstantiated(#20071) +#20092=* +stmts(#20092,32,#20001,1,"import x = M.N.x;") +hasLocation(#20092,#20015) +stmtContainers(#20092,#20001) #20093=* -tokeninfo(#20093,6,#20001,20,"N") -hasLocation(#20093,#20044) +exprs(#20093,78,#20092,0,"x") +hasLocation(#20093,#20048) +enclosingStmt(#20093,#20092) +exprContainers(#20093,#20001) +literals("x","x",#20093) +decl(#20093,#20067) +typedecl(#20093,#20068) +namespacedecl(#20093,#20070) #20094=* -tokeninfo(#20094,8,#20001,21,".") -#20095=@"loc,{#10000},7,15,7,15" -locations_default(#20095,#10000,7,15,7,15) +exprs(#20094,14,#20092,1,"M.N.x") +#20095=@"loc,{#10000},7,12,7,16" +locations_default(#20095,#10000,7,12,7,16) hasLocation(#20094,#20095) +enclosingStmt(#20094,#20092) +exprContainers(#20094,#20001) #20096=* -tokeninfo(#20096,6,#20001,22,"x") -hasLocation(#20096,#20046) -#20097=* -tokeninfo(#20097,8,#20001,23,";") -#20098=@"loc,{#10000},7,17,7,17" -locations_default(#20098,#10000,7,17,7,17) -hasLocation(#20097,#20098) +exprs(#20096,14,#20094,0,"M.N") +#20097=@"loc,{#10000},7,12,7,14" +locations_default(#20097,#10000,7,12,7,14) +hasLocation(#20096,#20097) +enclosingStmt(#20096,#20092) +exprContainers(#20096,#20001) +#20098=* +exprs(#20098,79,#20096,0,"M") +hasLocation(#20098,#20052) +enclosingStmt(#20098,#20092) +exprContainers(#20098,#20001) +literals("M","M",#20098) +bind(#20098,#20066) #20099=* -tokeninfo(#20099,0,#20001,24,"") -#20100=@"loc,{#10000},8,1,8,0" -locations_default(#20100,#10000,8,1,8,0) -hasLocation(#20099,#20100) +exprs(#20099,0,#20096,1,"N") +hasLocation(#20099,#20056) +enclosingStmt(#20099,#20092) +exprContainers(#20099,#20001) +literals("N","N",#20099) +#20100=* +exprs(#20100,0,#20094,1,"x") +hasLocation(#20100,#20060) +enclosingStmt(#20100,#20092) +exprContainers(#20100,#20001) +literals("x","x",#20100) #20101=* entry_cfg_node(#20101,#20001) #20102=@"loc,{#10000},1,1,1,0" @@ -330,24 +330,24 @@ locations_default(#20102,#10000,1,1,1,0) hasLocation(#20101,#20102) #20103=* exit_cfg_node(#20103,#20001) -hasLocation(#20103,#20100) -successor(#20045,#20037) -successor(#20043,#20039) -successor(#20041,#20043) -successor(#20039,#20045) -successor(#20037,#20033) -successor(#20035,#20041) -successor(#20033,#20103) -successor(#20010,#20008) -successor(#20015,#20019) -successor(#20019,#20017) -successor(#20023,#20025) -successor(#20025,#20029) -successor(#20031,#20027) -successor(#20029,#20031) -successor(#20027,#20035) -successor(#20017,#20023) -successor(#20008,#20015) -successor(#20101,#20010) +hasLocation(#20103,#20064) +successor(#20100,#20094) +successor(#20099,#20096) +successor(#20098,#20099) +successor(#20096,#20100) +successor(#20094,#20092) +successor(#20093,#20098) +successor(#20092,#20103) +successor(#20073,#20071) +successor(#20077,#20081) +successor(#20081,#20079) +successor(#20084,#20086) +successor(#20086,#20090) +successor(#20091,#20088) +successor(#20090,#20091) +successor(#20088,#20093) +successor(#20079,#20084) +successor(#20071,#20077) +successor(#20101,#20073) numlines(#10000,7,6,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/nestedNamespace.ts.trap b/javascript/extractor/tests/ts/output/trap/nestedNamespace.ts.trap index 8efd45b2d70..42aaddf5b58 100644 --- a/javascript/extractor/tests/ts/output/trap/nestedNamespace.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/nestedNamespace.ts.trap @@ -9,429 +9,429 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,9,0" -locations_default(#20002,#10000,1,1,9,0) -hasLocation(#20001,#20002) -#20003=@"local_namespace_name;{A};{#20000}" -local_namespace_names(#20003,"A",#20000) -#20004=@"local_namespace_name;{X};{#20000}" -local_namespace_names(#20004,"X",#20000) -#20005=* -stmts(#20005,31,#20001,0,"namespace A.B {}") -#20006=@"loc,{#10000},1,1,1,16" -locations_default(#20006,#10000,1,1,1,16) -hasLocation(#20005,#20006) -stmtContainers(#20005,#20001) -#20007=* -exprs(#20007,78,#20005,-1,"A") -#20008=@"loc,{#10000},1,11,1,11" -locations_default(#20008,#10000,1,11,1,11) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20005) -exprContainers(#20007,#20001) -literals("A","A",#20007) -namespacedecl(#20007,#20003) -#20009=* -scopes(#20009,9) -scopenodes(#20005,#20009) -scopenesting(#20009,#20000) -#20010=@"local_namespace_name;{B};{#20009}" -local_namespace_names(#20010,"B",#20009) -#20011=* -stmts(#20011,30,#20005,0,"B {}") -#20012=@"loc,{#10000},1,13,1,16" -locations_default(#20012,#10000,1,13,1,16) -hasLocation(#20011,#20012) -stmtContainers(#20011,#20005) -#20013=* -stmts(#20013,31,#20011,-1,"B {}") -hasLocation(#20013,#20012) -stmtContainers(#20013,#20005) -#20014=* -exprs(#20014,78,#20013,-1,"B") -#20015=@"loc,{#10000},1,13,1,13" -locations_default(#20015,#10000,1,13,1,13) -hasLocation(#20014,#20015) -enclosingStmt(#20014,#20013) -exprContainers(#20014,#20005) -literals("B","B",#20014) -namespacedecl(#20014,#20010) -#20016=* -scopes(#20016,9) -scopenodes(#20013,#20016) -scopenesting(#20016,#20009) -#20017=* -stmts(#20017,31,#20001,1,"namespace A.B.C {}") -#20018=@"loc,{#10000},2,1,2,18" -locations_default(#20018,#10000,2,1,2,18) -hasLocation(#20017,#20018) -stmtContainers(#20017,#20001) -#20019=* -exprs(#20019,78,#20017,-1,"A") -#20020=@"loc,{#10000},2,11,2,11" -locations_default(#20020,#10000,2,11,2,11) -hasLocation(#20019,#20020) -enclosingStmt(#20019,#20017) -exprContainers(#20019,#20001) -literals("A","A",#20019) -namespacedecl(#20019,#20003) -#20021=* -scopes(#20021,9) -scopenodes(#20017,#20021) -scopenesting(#20021,#20000) -#20022=@"local_namespace_name;{B};{#20021}" -local_namespace_names(#20022,"B",#20021) -#20023=* -stmts(#20023,30,#20017,0,"B.C {}") -#20024=@"loc,{#10000},2,13,2,18" -locations_default(#20024,#10000,2,13,2,18) -hasLocation(#20023,#20024) -stmtContainers(#20023,#20017) -#20025=* -stmts(#20025,31,#20023,-1,"B.C {}") -hasLocation(#20025,#20024) -stmtContainers(#20025,#20017) -#20026=* -exprs(#20026,78,#20025,-1,"B") -#20027=@"loc,{#10000},2,13,2,13" -locations_default(#20027,#10000,2,13,2,13) -hasLocation(#20026,#20027) -enclosingStmt(#20026,#20025) -exprContainers(#20026,#20017) -literals("B","B",#20026) -namespacedecl(#20026,#20022) -#20028=* -scopes(#20028,9) -scopenodes(#20025,#20028) -scopenesting(#20028,#20021) -#20029=@"local_namespace_name;{C};{#20028}" -local_namespace_names(#20029,"C",#20028) -#20030=* -stmts(#20030,30,#20025,0,"C {}") -#20031=@"loc,{#10000},2,15,2,18" -locations_default(#20031,#10000,2,15,2,18) -hasLocation(#20030,#20031) -stmtContainers(#20030,#20025) -#20032=* -stmts(#20032,31,#20030,-1,"C {}") -hasLocation(#20032,#20031) -stmtContainers(#20032,#20025) -#20033=* -exprs(#20033,78,#20032,-1,"C") -#20034=@"loc,{#10000},2,15,2,15" -locations_default(#20034,#10000,2,15,2,15) -hasLocation(#20033,#20034) -enclosingStmt(#20033,#20032) -exprContainers(#20033,#20025) -literals("C","C",#20033) -namespacedecl(#20033,#20029) -#20035=* -scopes(#20035,9) -scopenodes(#20032,#20035) -scopenesting(#20035,#20028) -#20036=* -stmts(#20036,31,#20001,2,"namespa ... .Q {}\n}") -#20037=@"loc,{#10000},4,1,8,1" -locations_default(#20037,#10000,4,1,8,1) -hasLocation(#20036,#20037) -stmtContainers(#20036,#20001) -#20038=* -exprs(#20038,78,#20036,-1,"X") -#20039=@"loc,{#10000},4,11,4,11" -locations_default(#20039,#10000,4,11,4,11) -hasLocation(#20038,#20039) -enclosingStmt(#20038,#20036) -exprContainers(#20038,#20001) -literals("X","X",#20038) -namespacedecl(#20038,#20004) -#20040=* -scopes(#20040,9) -scopenodes(#20036,#20040) -scopenesting(#20040,#20000) -#20041=@"local_namespace_name;{Y};{#20040}" -local_namespace_names(#20041,"Y",#20040) -#20042=@"local_namespace_name;{W};{#20040}" -local_namespace_names(#20042,"W",#20040) -#20043=* -stmts(#20043,30,#20036,0,"export ... Y.Z {}") -#20044=@"loc,{#10000},5,3,5,25" -locations_default(#20044,#10000,5,3,5,25) -hasLocation(#20043,#20044) -stmtContainers(#20043,#20036) -#20045=* -stmts(#20045,31,#20043,-1,"namespace Y.Z {}") -#20046=@"loc,{#10000},5,10,5,25" -locations_default(#20046,#10000,5,10,5,25) -hasLocation(#20045,#20046) -stmtContainers(#20045,#20036) -#20047=* -exprs(#20047,78,#20045,-1,"Y") -#20048=@"loc,{#10000},5,20,5,20" -locations_default(#20048,#10000,5,20,5,20) -hasLocation(#20047,#20048) -enclosingStmt(#20047,#20045) -exprContainers(#20047,#20036) -literals("Y","Y",#20047) -namespacedecl(#20047,#20041) -#20049=* -scopes(#20049,9) -scopenodes(#20045,#20049) -scopenesting(#20049,#20040) -#20050=@"local_namespace_name;{Z};{#20049}" -local_namespace_names(#20050,"Z",#20049) -#20051=* -stmts(#20051,30,#20045,0,"Z {}") -#20052=@"loc,{#10000},5,22,5,25" -locations_default(#20052,#10000,5,22,5,25) -hasLocation(#20051,#20052) -stmtContainers(#20051,#20045) -#20053=* -stmts(#20053,31,#20051,-1,"Z {}") -hasLocation(#20053,#20052) -stmtContainers(#20053,#20045) -#20054=* -exprs(#20054,78,#20053,-1,"Z") -#20055=@"loc,{#10000},5,22,5,22" -locations_default(#20055,#10000,5,22,5,22) -hasLocation(#20054,#20055) -enclosingStmt(#20054,#20053) -exprContainers(#20054,#20045) -literals("Z","Z",#20054) -namespacedecl(#20054,#20050) -#20056=* -scopes(#20056,9) -scopenodes(#20053,#20056) -scopenesting(#20056,#20049) -#20057=* -stmts(#20057,31,#20036,1,"namespace W.Q {}") -#20058=@"loc,{#10000},7,3,7,18" -locations_default(#20058,#10000,7,3,7,18) -hasLocation(#20057,#20058) -stmtContainers(#20057,#20036) -#20059=* -exprs(#20059,78,#20057,-1,"W") -#20060=@"loc,{#10000},7,13,7,13" -locations_default(#20060,#10000,7,13,7,13) -hasLocation(#20059,#20060) -enclosingStmt(#20059,#20057) -exprContainers(#20059,#20036) -literals("W","W",#20059) -namespacedecl(#20059,#20042) -#20061=* -scopes(#20061,9) -scopenodes(#20057,#20061) -scopenesting(#20061,#20040) -#20062=@"local_namespace_name;{Q};{#20061}" -local_namespace_names(#20062,"Q",#20061) -#20063=* -stmts(#20063,30,#20057,0,"Q {}") -#20064=@"loc,{#10000},7,15,7,18" -locations_default(#20064,#10000,7,15,7,18) -hasLocation(#20063,#20064) -stmtContainers(#20063,#20057) -#20065=* -stmts(#20065,31,#20063,-1,"Q {}") -hasLocation(#20065,#20064) -stmtContainers(#20065,#20057) -#20066=* -exprs(#20066,78,#20065,-1,"Q") -#20067=@"loc,{#10000},7,15,7,15" -locations_default(#20067,#10000,7,15,7,15) -hasLocation(#20066,#20067) -enclosingStmt(#20066,#20065) -exprContainers(#20066,#20057) -literals("Q","Q",#20066) -namespacedecl(#20066,#20062) -#20068=* -scopes(#20068,9) -scopenodes(#20065,#20068) -scopenesting(#20068,#20061) -#20069=* -lines(#20069,#20001,"namespace A.B {}"," +#20002=* +lines(#20002,#20001,"namespace A.B {}"," ") -hasLocation(#20069,#20006) -#20070=* -lines(#20070,#20001,"namespace A.B.C {}"," +#20003=@"loc,{#10000},1,1,1,16" +locations_default(#20003,#10000,1,1,1,16) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"namespace A.B.C {}"," ") -hasLocation(#20070,#20018) -#20071=* -lines(#20071,#20001,""," +#20005=@"loc,{#10000},2,1,2,18" +locations_default(#20005,#10000,2,1,2,18) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,""," ") -#20072=@"loc,{#10000},3,1,3,0" -locations_default(#20072,#10000,3,1,3,0) -hasLocation(#20071,#20072) -#20073=* -lines(#20073,#20001,"namespace X {"," +#20007=@"loc,{#10000},3,1,3,0" +locations_default(#20007,#10000,3,1,3,0) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001,"namespace X {"," ") -#20074=@"loc,{#10000},4,1,4,13" -locations_default(#20074,#10000,4,1,4,13) -hasLocation(#20073,#20074) -#20075=* -lines(#20075,#20001," export namespace Y.Z {}"," +#20009=@"loc,{#10000},4,1,4,13" +locations_default(#20009,#10000,4,1,4,13) +hasLocation(#20008,#20009) +#20010=* +lines(#20010,#20001," export namespace Y.Z {}"," ") -#20076=@"loc,{#10000},5,1,5,25" -locations_default(#20076,#10000,5,1,5,25) -hasLocation(#20075,#20076) +#20011=@"loc,{#10000},5,1,5,25" +locations_default(#20011,#10000,5,1,5,25) +hasLocation(#20010,#20011) indentation(#10000,5," ",2) -#20077=* -lines(#20077,#20001," "," +#20012=* +lines(#20012,#20001," "," ") -#20078=@"loc,{#10000},6,1,6,2" -locations_default(#20078,#10000,6,1,6,2) -hasLocation(#20077,#20078) -#20079=* -lines(#20079,#20001," namespace W.Q {}"," +#20013=@"loc,{#10000},6,1,6,2" +locations_default(#20013,#10000,6,1,6,2) +hasLocation(#20012,#20013) +#20014=* +lines(#20014,#20001," namespace W.Q {}"," ") -#20080=@"loc,{#10000},7,1,7,18" -locations_default(#20080,#10000,7,1,7,18) -hasLocation(#20079,#20080) +#20015=@"loc,{#10000},7,1,7,18" +locations_default(#20015,#10000,7,1,7,18) +hasLocation(#20014,#20015) indentation(#10000,7," ",2) -#20081=* -lines(#20081,#20001,"}"," +#20016=* +lines(#20016,#20001,"}"," ") -#20082=@"loc,{#10000},8,1,8,1" -locations_default(#20082,#10000,8,1,8,1) -hasLocation(#20081,#20082) +#20017=@"loc,{#10000},8,1,8,1" +locations_default(#20017,#10000,8,1,8,1) +hasLocation(#20016,#20017) numlines(#20001,8,6,0) -#20083=* -tokeninfo(#20083,7,#20001,0,"namespace") -#20084=@"loc,{#10000},1,1,1,9" -locations_default(#20084,#10000,1,1,1,9) -hasLocation(#20083,#20084) +#20018=* +tokeninfo(#20018,7,#20001,0,"namespace") +#20019=@"loc,{#10000},1,1,1,9" +locations_default(#20019,#10000,1,1,1,9) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,6,#20001,1,"A") +#20021=@"loc,{#10000},1,11,1,11" +locations_default(#20021,#10000,1,11,1,11) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,2,".") +#20023=@"loc,{#10000},1,12,1,12" +locations_default(#20023,#10000,1,12,1,12) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,6,#20001,3,"B") +#20025=@"loc,{#10000},1,13,1,13" +locations_default(#20025,#10000,1,13,1,13) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,4,"{") +#20027=@"loc,{#10000},1,15,1,15" +locations_default(#20027,#10000,1,15,1,15) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,5,"}") +#20029=@"loc,{#10000},1,16,1,16" +locations_default(#20029,#10000,1,16,1,16) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,7,#20001,6,"namespace") +#20031=@"loc,{#10000},2,1,2,9" +locations_default(#20031,#10000,2,1,2,9) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,6,#20001,7,"A") +#20033=@"loc,{#10000},2,11,2,11" +locations_default(#20033,#10000,2,11,2,11) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,8,".") +#20035=@"loc,{#10000},2,12,2,12" +locations_default(#20035,#10000,2,12,2,12) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,6,#20001,9,"B") +#20037=@"loc,{#10000},2,13,2,13" +locations_default(#20037,#10000,2,13,2,13) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,8,#20001,10,".") +#20039=@"loc,{#10000},2,14,2,14" +locations_default(#20039,#10000,2,14,2,14) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,6,#20001,11,"C") +#20041=@"loc,{#10000},2,15,2,15" +locations_default(#20041,#10000,2,15,2,15) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,12,"{") +#20043=@"loc,{#10000},2,17,2,17" +locations_default(#20043,#10000,2,17,2,17) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,13,"}") +#20045=@"loc,{#10000},2,18,2,18" +locations_default(#20045,#10000,2,18,2,18) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,7,#20001,14,"namespace") +#20047=@"loc,{#10000},4,1,4,9" +locations_default(#20047,#10000,4,1,4,9) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,6,#20001,15,"X") +#20049=@"loc,{#10000},4,11,4,11" +locations_default(#20049,#10000,4,11,4,11) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,16,"{") +#20051=@"loc,{#10000},4,13,4,13" +locations_default(#20051,#10000,4,13,4,13) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,7,#20001,17,"export") +#20053=@"loc,{#10000},5,3,5,8" +locations_default(#20053,#10000,5,3,5,8) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,7,#20001,18,"namespace") +#20055=@"loc,{#10000},5,10,5,18" +locations_default(#20055,#10000,5,10,5,18) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,6,#20001,19,"Y") +#20057=@"loc,{#10000},5,20,5,20" +locations_default(#20057,#10000,5,20,5,20) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,8,#20001,20,".") +#20059=@"loc,{#10000},5,21,5,21" +locations_default(#20059,#10000,5,21,5,21) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,6,#20001,21,"Z") +#20061=@"loc,{#10000},5,22,5,22" +locations_default(#20061,#10000,5,22,5,22) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,8,#20001,22,"{") +#20063=@"loc,{#10000},5,24,5,24" +locations_default(#20063,#10000,5,24,5,24) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,8,#20001,23,"}") +#20065=@"loc,{#10000},5,25,5,25" +locations_default(#20065,#10000,5,25,5,25) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,7,#20001,24,"namespace") +#20067=@"loc,{#10000},7,3,7,11" +locations_default(#20067,#10000,7,3,7,11) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,6,#20001,25,"W") +#20069=@"loc,{#10000},7,13,7,13" +locations_default(#20069,#10000,7,13,7,13) +hasLocation(#20068,#20069) +#20070=* +tokeninfo(#20070,8,#20001,26,".") +#20071=@"loc,{#10000},7,14,7,14" +locations_default(#20071,#10000,7,14,7,14) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,6,#20001,27,"Q") +#20073=@"loc,{#10000},7,15,7,15" +locations_default(#20073,#10000,7,15,7,15) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,8,#20001,28,"{") +#20075=@"loc,{#10000},7,17,7,17" +locations_default(#20075,#10000,7,17,7,17) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,8,#20001,29,"}") +#20077=@"loc,{#10000},7,18,7,18" +locations_default(#20077,#10000,7,18,7,18) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,8,#20001,30,"}") +hasLocation(#20078,#20017) +#20079=* +tokeninfo(#20079,0,#20001,31,"") +#20080=@"loc,{#10000},9,1,9,0" +locations_default(#20080,#10000,9,1,9,0) +hasLocation(#20079,#20080) +toplevels(#20001,0) +#20081=@"loc,{#10000},1,1,9,0" +locations_default(#20081,#10000,1,1,9,0) +hasLocation(#20001,#20081) +#20082=@"local_namespace_name;{A};{#20000}" +local_namespace_names(#20082,"A",#20000) +#20083=@"local_namespace_name;{X};{#20000}" +local_namespace_names(#20083,"X",#20000) +#20084=* +stmts(#20084,31,#20001,0,"namespace A.B {}") +hasLocation(#20084,#20003) +stmtContainers(#20084,#20001) #20085=* -tokeninfo(#20085,6,#20001,1,"A") -hasLocation(#20085,#20008) +exprs(#20085,78,#20084,-1,"A") +hasLocation(#20085,#20021) +enclosingStmt(#20085,#20084) +exprContainers(#20085,#20001) +literals("A","A",#20085) +namespacedecl(#20085,#20082) #20086=* -tokeninfo(#20086,8,#20001,2,".") -#20087=@"loc,{#10000},1,12,1,12" -locations_default(#20087,#10000,1,12,1,12) -hasLocation(#20086,#20087) +scopes(#20086,9) +scopenodes(#20084,#20086) +scopenesting(#20086,#20000) +#20087=@"local_namespace_name;{B};{#20086}" +local_namespace_names(#20087,"B",#20086) #20088=* -tokeninfo(#20088,6,#20001,3,"B") -hasLocation(#20088,#20015) -#20089=* -tokeninfo(#20089,8,#20001,4,"{") -#20090=@"loc,{#10000},1,15,1,15" -locations_default(#20090,#10000,1,15,1,15) -hasLocation(#20089,#20090) +stmts(#20088,30,#20084,0,"B {}") +#20089=@"loc,{#10000},1,13,1,16" +locations_default(#20089,#10000,1,13,1,16) +hasLocation(#20088,#20089) +stmtContainers(#20088,#20084) +#20090=* +stmts(#20090,31,#20088,-1,"B {}") +hasLocation(#20090,#20089) +stmtContainers(#20090,#20084) #20091=* -tokeninfo(#20091,8,#20001,5,"}") -#20092=@"loc,{#10000},1,16,1,16" -locations_default(#20092,#10000,1,16,1,16) -hasLocation(#20091,#20092) +exprs(#20091,78,#20090,-1,"B") +hasLocation(#20091,#20025) +enclosingStmt(#20091,#20090) +exprContainers(#20091,#20084) +literals("B","B",#20091) +namespacedecl(#20091,#20087) +#20092=* +scopes(#20092,9) +scopenodes(#20090,#20092) +scopenesting(#20092,#20086) #20093=* -tokeninfo(#20093,7,#20001,6,"namespace") -#20094=@"loc,{#10000},2,1,2,9" -locations_default(#20094,#10000,2,1,2,9) -hasLocation(#20093,#20094) +stmts(#20093,31,#20001,1,"namespace A.B.C {}") +hasLocation(#20093,#20005) +stmtContainers(#20093,#20001) +#20094=* +exprs(#20094,78,#20093,-1,"A") +hasLocation(#20094,#20033) +enclosingStmt(#20094,#20093) +exprContainers(#20094,#20001) +literals("A","A",#20094) +namespacedecl(#20094,#20082) #20095=* -tokeninfo(#20095,6,#20001,7,"A") -hasLocation(#20095,#20020) -#20096=* -tokeninfo(#20096,8,#20001,8,".") -#20097=@"loc,{#10000},2,12,2,12" -locations_default(#20097,#10000,2,12,2,12) -hasLocation(#20096,#20097) -#20098=* -tokeninfo(#20098,6,#20001,9,"B") -hasLocation(#20098,#20027) +scopes(#20095,9) +scopenodes(#20093,#20095) +scopenesting(#20095,#20000) +#20096=@"local_namespace_name;{B};{#20095}" +local_namespace_names(#20096,"B",#20095) +#20097=* +stmts(#20097,30,#20093,0,"B.C {}") +#20098=@"loc,{#10000},2,13,2,18" +locations_default(#20098,#10000,2,13,2,18) +hasLocation(#20097,#20098) +stmtContainers(#20097,#20093) #20099=* -tokeninfo(#20099,8,#20001,10,".") -#20100=@"loc,{#10000},2,14,2,14" -locations_default(#20100,#10000,2,14,2,14) -hasLocation(#20099,#20100) +stmts(#20099,31,#20097,-1,"B.C {}") +hasLocation(#20099,#20098) +stmtContainers(#20099,#20093) +#20100=* +exprs(#20100,78,#20099,-1,"B") +hasLocation(#20100,#20037) +enclosingStmt(#20100,#20099) +exprContainers(#20100,#20093) +literals("B","B",#20100) +namespacedecl(#20100,#20096) #20101=* -tokeninfo(#20101,6,#20001,11,"C") -hasLocation(#20101,#20034) -#20102=* -tokeninfo(#20102,8,#20001,12,"{") -#20103=@"loc,{#10000},2,17,2,17" -locations_default(#20103,#10000,2,17,2,17) -hasLocation(#20102,#20103) -#20104=* -tokeninfo(#20104,8,#20001,13,"}") -#20105=@"loc,{#10000},2,18,2,18" -locations_default(#20105,#10000,2,18,2,18) -hasLocation(#20104,#20105) +scopes(#20101,9) +scopenodes(#20099,#20101) +scopenesting(#20101,#20095) +#20102=@"local_namespace_name;{C};{#20101}" +local_namespace_names(#20102,"C",#20101) +#20103=* +stmts(#20103,30,#20099,0,"C {}") +#20104=@"loc,{#10000},2,15,2,18" +locations_default(#20104,#10000,2,15,2,18) +hasLocation(#20103,#20104) +stmtContainers(#20103,#20099) +#20105=* +stmts(#20105,31,#20103,-1,"C {}") +hasLocation(#20105,#20104) +stmtContainers(#20105,#20099) #20106=* -tokeninfo(#20106,7,#20001,14,"namespace") -#20107=@"loc,{#10000},4,1,4,9" -locations_default(#20107,#10000,4,1,4,9) -hasLocation(#20106,#20107) +exprs(#20106,78,#20105,-1,"C") +hasLocation(#20106,#20041) +enclosingStmt(#20106,#20105) +exprContainers(#20106,#20099) +literals("C","C",#20106) +namespacedecl(#20106,#20102) +#20107=* +scopes(#20107,9) +scopenodes(#20105,#20107) +scopenesting(#20107,#20101) #20108=* -tokeninfo(#20108,6,#20001,15,"X") -hasLocation(#20108,#20039) -#20109=* -tokeninfo(#20109,8,#20001,16,"{") -#20110=@"loc,{#10000},4,13,4,13" -locations_default(#20110,#10000,4,13,4,13) -hasLocation(#20109,#20110) +stmts(#20108,31,#20001,2,"namespa ... .Q {}\n}") +#20109=@"loc,{#10000},4,1,8,1" +locations_default(#20109,#10000,4,1,8,1) +hasLocation(#20108,#20109) +stmtContainers(#20108,#20001) +#20110=* +exprs(#20110,78,#20108,-1,"X") +hasLocation(#20110,#20049) +enclosingStmt(#20110,#20108) +exprContainers(#20110,#20001) +literals("X","X",#20110) +namespacedecl(#20110,#20083) #20111=* -tokeninfo(#20111,7,#20001,17,"export") -#20112=@"loc,{#10000},5,3,5,8" -locations_default(#20112,#10000,5,3,5,8) -hasLocation(#20111,#20112) -#20113=* -tokeninfo(#20113,7,#20001,18,"namespace") -#20114=@"loc,{#10000},5,10,5,18" -locations_default(#20114,#10000,5,10,5,18) -hasLocation(#20113,#20114) -#20115=* -tokeninfo(#20115,6,#20001,19,"Y") -hasLocation(#20115,#20048) +scopes(#20111,9) +scopenodes(#20108,#20111) +scopenesting(#20111,#20000) +#20112=@"local_namespace_name;{Y};{#20111}" +local_namespace_names(#20112,"Y",#20111) +#20113=@"local_namespace_name;{W};{#20111}" +local_namespace_names(#20113,"W",#20111) +#20114=* +stmts(#20114,30,#20108,0,"export ... Y.Z {}") +#20115=@"loc,{#10000},5,3,5,25" +locations_default(#20115,#10000,5,3,5,25) +hasLocation(#20114,#20115) +stmtContainers(#20114,#20108) #20116=* -tokeninfo(#20116,8,#20001,20,".") -#20117=@"loc,{#10000},5,21,5,21" -locations_default(#20117,#10000,5,21,5,21) +stmts(#20116,31,#20114,-1,"namespace Y.Z {}") +#20117=@"loc,{#10000},5,10,5,25" +locations_default(#20117,#10000,5,10,5,25) hasLocation(#20116,#20117) +stmtContainers(#20116,#20108) #20118=* -tokeninfo(#20118,6,#20001,21,"Z") -hasLocation(#20118,#20055) +exprs(#20118,78,#20116,-1,"Y") +hasLocation(#20118,#20057) +enclosingStmt(#20118,#20116) +exprContainers(#20118,#20108) +literals("Y","Y",#20118) +namespacedecl(#20118,#20112) #20119=* -tokeninfo(#20119,8,#20001,22,"{") -#20120=@"loc,{#10000},5,24,5,24" -locations_default(#20120,#10000,5,24,5,24) -hasLocation(#20119,#20120) +scopes(#20119,9) +scopenodes(#20116,#20119) +scopenesting(#20119,#20111) +#20120=@"local_namespace_name;{Z};{#20119}" +local_namespace_names(#20120,"Z",#20119) #20121=* -tokeninfo(#20121,8,#20001,23,"}") -#20122=@"loc,{#10000},5,25,5,25" -locations_default(#20122,#10000,5,25,5,25) +stmts(#20121,30,#20116,0,"Z {}") +#20122=@"loc,{#10000},5,22,5,25" +locations_default(#20122,#10000,5,22,5,25) hasLocation(#20121,#20122) +stmtContainers(#20121,#20116) #20123=* -tokeninfo(#20123,7,#20001,24,"namespace") -#20124=@"loc,{#10000},7,3,7,11" -locations_default(#20124,#10000,7,3,7,11) -hasLocation(#20123,#20124) +stmts(#20123,31,#20121,-1,"Z {}") +hasLocation(#20123,#20122) +stmtContainers(#20123,#20116) +#20124=* +exprs(#20124,78,#20123,-1,"Z") +hasLocation(#20124,#20061) +enclosingStmt(#20124,#20123) +exprContainers(#20124,#20116) +literals("Z","Z",#20124) +namespacedecl(#20124,#20120) #20125=* -tokeninfo(#20125,6,#20001,25,"W") -hasLocation(#20125,#20060) +scopes(#20125,9) +scopenodes(#20123,#20125) +scopenesting(#20125,#20119) #20126=* -tokeninfo(#20126,8,#20001,26,".") -#20127=@"loc,{#10000},7,14,7,14" -locations_default(#20127,#10000,7,14,7,14) +stmts(#20126,31,#20108,1,"namespace W.Q {}") +#20127=@"loc,{#10000},7,3,7,18" +locations_default(#20127,#10000,7,3,7,18) hasLocation(#20126,#20127) +stmtContainers(#20126,#20108) #20128=* -tokeninfo(#20128,6,#20001,27,"Q") -hasLocation(#20128,#20067) +exprs(#20128,78,#20126,-1,"W") +hasLocation(#20128,#20069) +enclosingStmt(#20128,#20126) +exprContainers(#20128,#20108) +literals("W","W",#20128) +namespacedecl(#20128,#20113) #20129=* -tokeninfo(#20129,8,#20001,28,"{") -#20130=@"loc,{#10000},7,17,7,17" -locations_default(#20130,#10000,7,17,7,17) -hasLocation(#20129,#20130) +scopes(#20129,9) +scopenodes(#20126,#20129) +scopenesting(#20129,#20111) +#20130=@"local_namespace_name;{Q};{#20129}" +local_namespace_names(#20130,"Q",#20129) #20131=* -tokeninfo(#20131,8,#20001,29,"}") -#20132=@"loc,{#10000},7,18,7,18" -locations_default(#20132,#10000,7,18,7,18) +stmts(#20131,30,#20126,0,"Q {}") +#20132=@"loc,{#10000},7,15,7,18" +locations_default(#20132,#10000,7,15,7,18) hasLocation(#20131,#20132) +stmtContainers(#20131,#20126) #20133=* -tokeninfo(#20133,8,#20001,30,"}") -hasLocation(#20133,#20082) +stmts(#20133,31,#20131,-1,"Q {}") +hasLocation(#20133,#20132) +stmtContainers(#20133,#20126) #20134=* -tokeninfo(#20134,0,#20001,31,"") -#20135=@"loc,{#10000},9,1,9,0" -locations_default(#20135,#10000,9,1,9,0) -hasLocation(#20134,#20135) +exprs(#20134,78,#20133,-1,"Q") +hasLocation(#20134,#20073) +enclosingStmt(#20134,#20133) +exprContainers(#20134,#20126) +literals("Q","Q",#20134) +namespacedecl(#20134,#20130) +#20135=* +scopes(#20135,9) +scopenodes(#20133,#20135) +scopenesting(#20135,#20129) #20136=* entry_cfg_node(#20136,#20001) #20137=@"loc,{#10000},1,1,1,0" @@ -439,33 +439,33 @@ locations_default(#20137,#10000,1,1,1,0) hasLocation(#20136,#20137) #20138=* exit_cfg_node(#20138,#20001) -hasLocation(#20138,#20135) -successor(#20038,#20036) -successor(#20059,#20057) -successor(#20063,#20066) -successor(#20066,#20065) -successor(#20065,#20138) -successor(#20057,#20063) -successor(#20043,#20047) -successor(#20047,#20045) -successor(#20051,#20054) -successor(#20054,#20053) -successor(#20053,#20059) -successor(#20045,#20051) -successor(#20036,#20043) -successor(#20019,#20017) -successor(#20023,#20026) -successor(#20026,#20025) -successor(#20030,#20033) -successor(#20033,#20032) -successor(#20032,#20038) -successor(#20025,#20030) -successor(#20017,#20023) -successor(#20007,#20005) -successor(#20011,#20014) -successor(#20014,#20013) -successor(#20013,#20019) -successor(#20005,#20011) -successor(#20136,#20007) +hasLocation(#20138,#20080) +successor(#20110,#20108) +successor(#20128,#20126) +successor(#20131,#20134) +successor(#20134,#20133) +successor(#20133,#20138) +successor(#20126,#20131) +successor(#20114,#20118) +successor(#20118,#20116) +successor(#20121,#20124) +successor(#20124,#20123) +successor(#20123,#20128) +successor(#20116,#20121) +successor(#20108,#20114) +successor(#20094,#20093) +successor(#20097,#20100) +successor(#20100,#20099) +successor(#20103,#20106) +successor(#20106,#20105) +successor(#20105,#20110) +successor(#20099,#20103) +successor(#20093,#20097) +successor(#20085,#20084) +successor(#20088,#20091) +successor(#20091,#20090) +successor(#20090,#20094) +successor(#20084,#20088) +successor(#20136,#20085) numlines(#10000,8,6,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/nobody.ts.trap b/javascript/extractor/tests/ts/output/trap/nobody.ts.trap index 6453fc5d4c6..2e8b3bea213 100644 --- a/javascript/extractor/tests/ts/output/trap/nobody.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/nobody.ts.trap @@ -9,1162 +9,1151 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},2,1,30,0" -locations_default(#20002,#10000,2,1,30,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,17,#20001,0,"declare ... on f();") -#20006=@"loc,{#10000},2,1,2,21" -locations_default(#20006,#10000,2,1,2,21) -hasLocation(#20005,#20006) -stmtContainers(#20005,#20001) -hasDeclareKeyword(#20005) -#20007=* -exprs(#20007,78,#20005,-1,"f") -#20008=@"loc,{#10000},2,18,2,18" -locations_default(#20008,#10000,2,18,2,18) -hasLocation(#20007,#20008) -exprContainers(#20007,#20005) -literals("f","f",#20007) -#20009=@"var;{f};{#20000}" -variables(#20009,"f",#20000) -decl(#20007,#20009) +#20002=* +comments(#20002,0,#20001," Ambient functions","// Ambient functions") +#20003=@"loc,{#10000},1,1,1,20" +locations_default(#20003,#10000,1,1,1,20) +hasLocation(#20002,#20003) +#20004=* +comments(#20004,0,#20001," Abstract methods","// Abstract methods") +#20005=@"loc,{#10000},5,3,5,21" +locations_default(#20005,#10000,5,3,5,21) +hasLocation(#20004,#20005) +#20006=* +comments(#20006,0,#20001," Overload signatures","// Over ... natures") +#20007=@"loc,{#10000},8,3,8,24" +locations_default(#20007,#10000,8,3,8,24) +hasLocation(#20006,#20007) +#20008=* +comments(#20008,0,#20001," Abstract fields","// Abstract fields") +#20009=@"loc,{#10000},13,3,13,20" +locations_default(#20009,#10000,13,3,13,20) +hasLocation(#20008,#20009) #20010=* -scopes(#20010,1) -scopenodes(#20005,#20010) -scopenesting(#20010,#20000) -#20011=@"var;{arguments};{#20010}" -variables(#20011,"arguments",#20010) -isArgumentsObject(#20011) -numlines(#20005,1,1,0) +comments(#20010,0,#20001," Same but ambient","// Same but ambient") +#20011=@"loc,{#10000},17,1,17,19" +locations_default(#20011,#10000,17,1,17,19) +hasLocation(#20010,#20011) #20012=* -stmts(#20012,26,#20001,1,"abstrac ... mber;\n}") -#20013=@"loc,{#10000},4,1,15,1" -locations_default(#20013,#10000,4,1,15,1) +comments(#20012,0,#20001," Abstract methods","// Abstract methods") +#20013=@"loc,{#10000},19,3,19,21" +locations_default(#20013,#10000,19,3,19,21) hasLocation(#20012,#20013) -stmtContainers(#20012,#20001) -isAbstractClass(#20012) #20014=* -exprs(#20014,78,#20012,0,"C") -#20015=@"loc,{#10000},4,16,4,16" -locations_default(#20015,#10000,4,16,4,16) +comments(#20014,0,#20001," Overload signatures","// Over ... natures") +#20015=@"loc,{#10000},22,3,22,24" +locations_default(#20015,#10000,22,3,22,24) hasLocation(#20014,#20015) -enclosingStmt(#20014,#20012) -exprContainers(#20014,#20001) -literals("C","C",#20014) -decl(#20014,#20003) -typedecl(#20014,#20004) #20016=* -scopes(#20016,10) -scopenodes(#20012,#20016) -scopenesting(#20016,#20000) -#20017=* -properties(#20017,#20012,2,0,"abstract h();") -#20018=@"loc,{#10000},6,3,6,15" -locations_default(#20018,#10000,6,3,6,15) -hasLocation(#20017,#20018) +comments(#20016,0,#20001," Abstract fields","// Abstract fields") +#20017=@"loc,{#10000},27,3,27,20" +locations_default(#20017,#10000,27,3,27,20) +hasLocation(#20016,#20017) +#20018=* +lines(#20018,#20001,"// Ambient functions"," +") +hasLocation(#20018,#20003) #20019=* -exprs(#20019,0,#20017,0,"h") -#20020=@"loc,{#10000},6,12,6,12" -locations_default(#20020,#10000,6,12,6,12) +lines(#20019,#20001,"declare function f();"," +") +#20020=@"loc,{#10000},2,1,2,21" +locations_default(#20020,#10000,2,1,2,21) hasLocation(#20019,#20020) -enclosingStmt(#20019,#20012) -exprContainers(#20019,#20001) -literals("h","h",#20019) #20021=* -exprs(#20021,9,#20017,1,"abstract h();") -hasLocation(#20021,#20018) -enclosingStmt(#20021,#20012) -exprContainers(#20021,#20001) -#20022=* -scopes(#20022,1) -scopenodes(#20021,#20022) -scopenesting(#20022,#20016) -#20023=@"var;{arguments};{#20022}" -variables(#20023,"arguments",#20022) -isArgumentsObject(#20023) -numlines(#20021,1,1,0) -isMethod(#20017) -isAbstractMember(#20017) -#20024=* -properties(#20024,#20012,3,0,"g(x: nu ... number;") -#20025=@"loc,{#10000},9,3,9,23" -locations_default(#20025,#10000,9,3,9,23) -hasLocation(#20024,#20025) -#20026=* -exprs(#20026,0,#20024,0,"g") -#20027=@"loc,{#10000},9,3,9,3" -locations_default(#20027,#10000,9,3,9,3) -hasLocation(#20026,#20027) -enclosingStmt(#20026,#20012) -exprContainers(#20026,#20001) -literals("g","g",#20026) -#20028=* -exprs(#20028,9,#20024,1,"g(x: nu ... number;") -hasLocation(#20028,#20025) -enclosingStmt(#20028,#20012) -exprContainers(#20028,#20001) +lines(#20021,#20001,""," +") +#20022=@"loc,{#10000},3,1,3,0" +locations_default(#20022,#10000,3,1,3,0) +hasLocation(#20021,#20022) +#20023=* +lines(#20023,#20001,"abstract class C {"," +") +#20024=@"loc,{#10000},4,1,4,18" +locations_default(#20024,#10000,4,1,4,18) +hasLocation(#20023,#20024) +#20025=* +lines(#20025,#20001," // Abstract methods"," +") +#20026=@"loc,{#10000},5,1,5,21" +locations_default(#20026,#10000,5,1,5,21) +hasLocation(#20025,#20026) +indentation(#10000,5," ",2) +#20027=* +lines(#20027,#20001," abstract h();"," +") +#20028=@"loc,{#10000},6,1,6,15" +locations_default(#20028,#10000,6,1,6,15) +hasLocation(#20027,#20028) +indentation(#10000,6," ",2) #20029=* -scopes(#20029,1) -scopenodes(#20028,#20029) -scopenesting(#20029,#20016) -#20030=@"var;{x};{#20029}" -variables(#20030,"x",#20029) +lines(#20029,#20001,""," +") +#20030=@"loc,{#10000},7,1,7,0" +locations_default(#20030,#10000,7,1,7,0) +hasLocation(#20029,#20030) #20031=* -exprs(#20031,78,#20028,0,"x") -#20032=@"loc,{#10000},9,5,9,5" -locations_default(#20032,#10000,9,5,9,5) +lines(#20031,#20001," // Overload signatures"," +") +#20032=@"loc,{#10000},8,1,8,24" +locations_default(#20032,#10000,8,1,8,24) hasLocation(#20031,#20032) -exprContainers(#20031,#20028) -literals("x","x",#20031) -decl(#20031,#20030) -#20033=@"var;{arguments};{#20029}" -variables(#20033,"arguments",#20029) -isArgumentsObject(#20033) -#20034=* -typeexprs(#20034,2,#20028,-3,"number") -#20035=@"loc,{#10000},9,17,9,22" -locations_default(#20035,#10000,9,17,9,22) -hasLocation(#20034,#20035) -exprContainers(#20034,#20028) -literals("number","number",#20034) -#20036=* -typeexprs(#20036,2,#20028,-6,"number") -#20037=@"loc,{#10000},9,8,9,13" -locations_default(#20037,#10000,9,8,9,13) -hasLocation(#20036,#20037) -exprContainers(#20036,#20028) -literals("number","number",#20036) -numlines(#20028,1,1,0) -isMethod(#20024) -#20038=* -properties(#20038,#20012,4,0,"g(x: st ... string;") -#20039=@"loc,{#10000},10,3,10,23" -locations_default(#20039,#10000,10,3,10,23) -hasLocation(#20038,#20039) -#20040=* -exprs(#20040,0,#20038,0,"g") -#20041=@"loc,{#10000},10,3,10,3" -locations_default(#20041,#10000,10,3,10,3) -hasLocation(#20040,#20041) -enclosingStmt(#20040,#20012) -exprContainers(#20040,#20001) -literals("g","g",#20040) -#20042=* -exprs(#20042,9,#20038,1,"g(x: st ... string;") -hasLocation(#20042,#20039) -enclosingStmt(#20042,#20012) -exprContainers(#20042,#20001) +indentation(#10000,8," ",2) +#20033=* +lines(#20033,#20001," g(x: number): number;"," +") +#20034=@"loc,{#10000},9,1,9,23" +locations_default(#20034,#10000,9,1,9,23) +hasLocation(#20033,#20034) +indentation(#10000,9," ",2) +#20035=* +lines(#20035,#20001," g(x: string): string;"," +") +#20036=@"loc,{#10000},10,1,10,23" +locations_default(#20036,#10000,10,1,10,23) +hasLocation(#20035,#20036) +indentation(#10000,10," ",2) +#20037=* +lines(#20037,#20001," g(x: any) {}"," +") +#20038=@"loc,{#10000},11,1,11,14" +locations_default(#20038,#10000,11,1,11,14) +hasLocation(#20037,#20038) +indentation(#10000,11," ",2) +#20039=* +lines(#20039,#20001,""," +") +#20040=@"loc,{#10000},12,1,12,0" +locations_default(#20040,#10000,12,1,12,0) +hasLocation(#20039,#20040) +#20041=* +lines(#20041,#20001," // Abstract fields"," +") +#20042=@"loc,{#10000},13,1,13,20" +locations_default(#20042,#10000,13,1,13,20) +hasLocation(#20041,#20042) +indentation(#10000,13," ",2) #20043=* -scopes(#20043,1) -scopenodes(#20042,#20043) -scopenesting(#20043,#20016) -#20044=@"var;{x};{#20043}" -variables(#20044,"x",#20043) +lines(#20043,#20001," abstract x: number;"," +") +#20044=@"loc,{#10000},14,1,14,21" +locations_default(#20044,#10000,14,1,14,21) +hasLocation(#20043,#20044) +indentation(#10000,14," ",2) #20045=* -exprs(#20045,78,#20042,0,"x") -#20046=@"loc,{#10000},10,5,10,5" -locations_default(#20046,#10000,10,5,10,5) +lines(#20045,#20001,"}"," +") +#20046=@"loc,{#10000},15,1,15,1" +locations_default(#20046,#10000,15,1,15,1) hasLocation(#20045,#20046) -exprContainers(#20045,#20042) -literals("x","x",#20045) -decl(#20045,#20044) -#20047=@"var;{arguments};{#20043}" -variables(#20047,"arguments",#20043) -isArgumentsObject(#20047) -#20048=* -typeexprs(#20048,2,#20042,-3,"string") -#20049=@"loc,{#10000},10,17,10,22" -locations_default(#20049,#10000,10,17,10,22) -hasLocation(#20048,#20049) -exprContainers(#20048,#20042) -literals("string","string",#20048) +#20047=* +lines(#20047,#20001,""," +") +#20048=@"loc,{#10000},16,1,16,0" +locations_default(#20048,#10000,16,1,16,0) +hasLocation(#20047,#20048) +#20049=* +lines(#20049,#20001,"// Same but ambient"," +") +hasLocation(#20049,#20011) #20050=* -typeexprs(#20050,2,#20042,-6,"string") -#20051=@"loc,{#10000},10,8,10,13" -locations_default(#20051,#10000,10,8,10,13) +lines(#20050,#20001,"declare abstract class D {"," +") +#20051=@"loc,{#10000},18,1,18,26" +locations_default(#20051,#10000,18,1,18,26) hasLocation(#20050,#20051) -exprContainers(#20050,#20042) -literals("string","string",#20050) -numlines(#20042,1,1,0) -isMethod(#20038) #20052=* -properties(#20052,#20012,5,0,"g(x: any) {}") -#20053=@"loc,{#10000},11,3,11,14" -locations_default(#20053,#10000,11,3,11,14) +lines(#20052,#20001," // Abstract methods"," +") +#20053=@"loc,{#10000},19,1,19,21" +locations_default(#20053,#10000,19,1,19,21) hasLocation(#20052,#20053) +indentation(#10000,19," ",2) #20054=* -exprs(#20054,0,#20052,0,"g") -#20055=@"loc,{#10000},11,3,11,3" -locations_default(#20055,#10000,11,3,11,3) +lines(#20054,#20001," abstract h();"," +") +#20055=@"loc,{#10000},20,1,20,15" +locations_default(#20055,#10000,20,1,20,15) hasLocation(#20054,#20055) -enclosingStmt(#20054,#20012) -exprContainers(#20054,#20001) -literals("g","g",#20054) +indentation(#10000,20," ",2) #20056=* -exprs(#20056,9,#20052,1,"g(x: any) {}") -hasLocation(#20056,#20053) -enclosingStmt(#20056,#20012) -exprContainers(#20056,#20001) -#20057=* -scopes(#20057,1) -scopenodes(#20056,#20057) -scopenesting(#20057,#20016) -#20058=@"var;{x};{#20057}" -variables(#20058,"x",#20057) -#20059=* -exprs(#20059,78,#20056,0,"x") -#20060=@"loc,{#10000},11,5,11,5" -locations_default(#20060,#10000,11,5,11,5) -hasLocation(#20059,#20060) -exprContainers(#20059,#20056) -literals("x","x",#20059) -decl(#20059,#20058) -#20061=@"var;{arguments};{#20057}" -variables(#20061,"arguments",#20057) -isArgumentsObject(#20061) +lines(#20056,#20001,""," +") +#20057=@"loc,{#10000},21,1,21,0" +locations_default(#20057,#10000,21,1,21,0) +hasLocation(#20056,#20057) +#20058=* +lines(#20058,#20001," // Overload signatures"," +") +#20059=@"loc,{#10000},22,1,22,24" +locations_default(#20059,#10000,22,1,22,24) +hasLocation(#20058,#20059) +indentation(#10000,22," ",2) +#20060=* +lines(#20060,#20001," g(x: number): number;"," +") +#20061=@"loc,{#10000},23,1,23,23" +locations_default(#20061,#10000,23,1,23,23) +hasLocation(#20060,#20061) +indentation(#10000,23," ",2) #20062=* -typeexprs(#20062,2,#20056,-6,"any") -#20063=@"loc,{#10000},11,8,11,10" -locations_default(#20063,#10000,11,8,11,10) +lines(#20062,#20001," g(x: string): string;"," +") +#20063=@"loc,{#10000},24,1,24,23" +locations_default(#20063,#10000,24,1,24,23) hasLocation(#20062,#20063) -exprContainers(#20062,#20056) -literals("any","any",#20062) +indentation(#10000,24," ",2) #20064=* -stmts(#20064,1,#20056,-2,"{}") -#20065=@"loc,{#10000},11,13,11,14" -locations_default(#20065,#10000,11,13,11,14) +lines(#20064,#20001," g(x: any) {}"," +") +#20065=@"loc,{#10000},25,1,25,14" +locations_default(#20065,#10000,25,1,25,14) hasLocation(#20064,#20065) -stmtContainers(#20064,#20056) -numlines(#20056,1,1,0) -isMethod(#20052) +indentation(#10000,25," ",2) #20066=* -properties(#20066,#20012,6,8,"abstract x: number;") -#20067=@"loc,{#10000},14,3,14,21" -locations_default(#20067,#10000,14,3,14,21) +lines(#20066,#20001,""," +") +#20067=@"loc,{#10000},26,1,26,0" +locations_default(#20067,#10000,26,1,26,0) hasLocation(#20066,#20067) #20068=* -exprs(#20068,0,#20066,0,"x") -#20069=@"loc,{#10000},14,12,14,12" -locations_default(#20069,#10000,14,12,14,12) +lines(#20068,#20001," // Abstract fields"," +") +#20069=@"loc,{#10000},27,1,27,20" +locations_default(#20069,#10000,27,1,27,20) hasLocation(#20068,#20069) -enclosingStmt(#20068,#20012) -exprContainers(#20068,#20001) -literals("x","x",#20068) +indentation(#10000,27," ",2) #20070=* -isAbstractMember(#20066) -#20071=* -typeexprs(#20071,2,#20066,2,"number") -#20072=@"loc,{#10000},14,15,14,20" -locations_default(#20072,#10000,14,15,14,20) -hasLocation(#20071,#20072) -enclosingStmt(#20071,#20012) -exprContainers(#20071,#20001) -literals("number","number",#20071) -#20073=* -properties(#20073,#20012,7,0,"constructor() {}") -#20074=@"loc,{#10000},4,18,4,17" -locations_default(#20074,#10000,4,18,4,17) -hasLocation(#20073,#20074) -#20075=* -exprs(#20075,0,#20073,0,"constructor") -hasLocation(#20075,#20074) -enclosingStmt(#20075,#20012) -exprContainers(#20075,#20001) -literals("constructor","constructor",#20075) -exprs(#20070,9,#20073,1,"() {}") -hasLocation(#20070,#20074) -enclosingStmt(#20070,#20012) -exprContainers(#20070,#20001) +lines(#20070,#20001," abstract x: number;"," +") +#20071=@"loc,{#10000},28,1,28,21" +locations_default(#20071,#10000,28,1,28,21) +hasLocation(#20070,#20071) +indentation(#10000,28," ",2) +#20072=* +lines(#20072,#20001,"}"," +") +#20073=@"loc,{#10000},29,1,29,1" +locations_default(#20073,#10000,29,1,29,1) +hasLocation(#20072,#20073) +numlines(#20001,29,15,8) +#20074=* +tokeninfo(#20074,7,#20001,0,"declare") +#20075=@"loc,{#10000},2,1,2,7" +locations_default(#20075,#10000,2,1,2,7) +hasLocation(#20074,#20075) +next_token(#20002,#20074) #20076=* -scopes(#20076,1) -scopenodes(#20070,#20076) -scopenesting(#20076,#20016) -#20077=@"var;{arguments};{#20076}" -variables(#20077,"arguments",#20076) -isArgumentsObject(#20077) +tokeninfo(#20076,7,#20001,1,"function") +#20077=@"loc,{#10000},2,9,2,16" +locations_default(#20077,#10000,2,9,2,16) +hasLocation(#20076,#20077) #20078=* -stmts(#20078,1,#20070,-2,"{}") -hasLocation(#20078,#20074) -stmtContainers(#20078,#20070) -numlines(#20070,1,0,0) -isMethod(#20073) -#20079=* -stmts(#20079,26,#20001,2,"declare ... mber;\n}") -#20080=@"loc,{#10000},18,1,29,1" -locations_default(#20080,#10000,18,1,29,1) -hasLocation(#20079,#20080) -stmtContainers(#20079,#20001) -hasDeclareKeyword(#20079) -isAbstractClass(#20079) -#20081=* -exprs(#20081,78,#20079,0,"D") -#20082=@"loc,{#10000},18,24,18,24" -locations_default(#20082,#10000,18,24,18,24) -hasLocation(#20081,#20082) -enclosingStmt(#20081,#20079) -exprContainers(#20081,#20001) -literals("D","D",#20081) -#20083=@"var;{D};{#20000}" -variables(#20083,"D",#20000) -decl(#20081,#20083) +tokeninfo(#20078,6,#20001,2,"f") +#20079=@"loc,{#10000},2,18,2,18" +locations_default(#20079,#10000,2,18,2,18) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,8,#20001,3,"(") +#20081=@"loc,{#10000},2,19,2,19" +locations_default(#20081,#10000,2,19,2,19) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,8,#20001,4,")") +#20083=@"loc,{#10000},2,20,2,20" +locations_default(#20083,#10000,2,20,2,20) +hasLocation(#20082,#20083) #20084=* -scopes(#20084,10) -scopenodes(#20079,#20084) -scopenesting(#20084,#20000) -#20085=* -properties(#20085,#20079,2,0,"abstract h();") -#20086=@"loc,{#10000},20,3,20,15" -locations_default(#20086,#10000,20,3,20,15) -hasLocation(#20085,#20086) -#20087=* -exprs(#20087,0,#20085,0,"h") -#20088=@"loc,{#10000},20,12,20,12" -locations_default(#20088,#10000,20,12,20,12) -hasLocation(#20087,#20088) -enclosingStmt(#20087,#20079) -exprContainers(#20087,#20001) -literals("h","h",#20087) -#20089=* -exprs(#20089,9,#20085,1,"abstract h();") -hasLocation(#20089,#20086) -enclosingStmt(#20089,#20079) -exprContainers(#20089,#20001) +tokeninfo(#20084,8,#20001,5,";") +#20085=@"loc,{#10000},2,21,2,21" +locations_default(#20085,#10000,2,21,2,21) +hasLocation(#20084,#20085) +#20086=* +tokeninfo(#20086,7,#20001,6,"abstract") +#20087=@"loc,{#10000},4,1,4,8" +locations_default(#20087,#10000,4,1,4,8) +hasLocation(#20086,#20087) +#20088=* +tokeninfo(#20088,7,#20001,7,"class") +#20089=@"loc,{#10000},4,10,4,14" +locations_default(#20089,#10000,4,10,4,14) +hasLocation(#20088,#20089) #20090=* -scopes(#20090,1) -scopenodes(#20089,#20090) -scopenesting(#20090,#20084) -#20091=@"var;{arguments};{#20090}" -variables(#20091,"arguments",#20090) -isArgumentsObject(#20091) -numlines(#20089,1,1,0) -isMethod(#20085) -isAbstractMember(#20085) +tokeninfo(#20090,6,#20001,8,"C") +#20091=@"loc,{#10000},4,16,4,16" +locations_default(#20091,#10000,4,16,4,16) +hasLocation(#20090,#20091) #20092=* -properties(#20092,#20079,3,0,"g(x: nu ... number;") -#20093=@"loc,{#10000},23,3,23,23" -locations_default(#20093,#10000,23,3,23,23) +tokeninfo(#20092,8,#20001,9,"{") +#20093=@"loc,{#10000},4,18,4,18" +locations_default(#20093,#10000,4,18,4,18) hasLocation(#20092,#20093) #20094=* -exprs(#20094,0,#20092,0,"g") -#20095=@"loc,{#10000},23,3,23,3" -locations_default(#20095,#10000,23,3,23,3) +tokeninfo(#20094,7,#20001,10,"abstract") +#20095=@"loc,{#10000},6,3,6,10" +locations_default(#20095,#10000,6,3,6,10) hasLocation(#20094,#20095) -enclosingStmt(#20094,#20079) -exprContainers(#20094,#20001) -literals("g","g",#20094) +next_token(#20004,#20094) #20096=* -exprs(#20096,9,#20092,1,"g(x: nu ... number;") -hasLocation(#20096,#20093) -enclosingStmt(#20096,#20079) -exprContainers(#20096,#20001) -#20097=* -scopes(#20097,1) -scopenodes(#20096,#20097) -scopenesting(#20097,#20084) -#20098=@"var;{x};{#20097}" -variables(#20098,"x",#20097) -#20099=* -exprs(#20099,78,#20096,0,"x") -#20100=@"loc,{#10000},23,5,23,5" -locations_default(#20100,#10000,23,5,23,5) -hasLocation(#20099,#20100) -exprContainers(#20099,#20096) -literals("x","x",#20099) -decl(#20099,#20098) -#20101=@"var;{arguments};{#20097}" -variables(#20101,"arguments",#20097) -isArgumentsObject(#20101) +tokeninfo(#20096,6,#20001,11,"h") +#20097=@"loc,{#10000},6,12,6,12" +locations_default(#20097,#10000,6,12,6,12) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,8,#20001,12,"(") +#20099=@"loc,{#10000},6,13,6,13" +locations_default(#20099,#10000,6,13,6,13) +hasLocation(#20098,#20099) +#20100=* +tokeninfo(#20100,8,#20001,13,")") +#20101=@"loc,{#10000},6,14,6,14" +locations_default(#20101,#10000,6,14,6,14) +hasLocation(#20100,#20101) #20102=* -typeexprs(#20102,2,#20096,-3,"number") -#20103=@"loc,{#10000},23,17,23,22" -locations_default(#20103,#10000,23,17,23,22) +tokeninfo(#20102,8,#20001,14,";") +#20103=@"loc,{#10000},6,15,6,15" +locations_default(#20103,#10000,6,15,6,15) hasLocation(#20102,#20103) -exprContainers(#20102,#20096) -literals("number","number",#20102) #20104=* -typeexprs(#20104,2,#20096,-6,"number") -#20105=@"loc,{#10000},23,8,23,13" -locations_default(#20105,#10000,23,8,23,13) +tokeninfo(#20104,6,#20001,15,"g") +#20105=@"loc,{#10000},9,3,9,3" +locations_default(#20105,#10000,9,3,9,3) hasLocation(#20104,#20105) -exprContainers(#20104,#20096) -literals("number","number",#20104) -numlines(#20096,1,1,0) -isMethod(#20092) +next_token(#20006,#20104) #20106=* -properties(#20106,#20079,4,0,"g(x: st ... string;") -#20107=@"loc,{#10000},24,3,24,23" -locations_default(#20107,#10000,24,3,24,23) +tokeninfo(#20106,8,#20001,16,"(") +#20107=@"loc,{#10000},9,4,9,4" +locations_default(#20107,#10000,9,4,9,4) hasLocation(#20106,#20107) #20108=* -exprs(#20108,0,#20106,0,"g") -#20109=@"loc,{#10000},24,3,24,3" -locations_default(#20109,#10000,24,3,24,3) +tokeninfo(#20108,6,#20001,17,"x") +#20109=@"loc,{#10000},9,5,9,5" +locations_default(#20109,#10000,9,5,9,5) hasLocation(#20108,#20109) -enclosingStmt(#20108,#20079) -exprContainers(#20108,#20001) -literals("g","g",#20108) #20110=* -exprs(#20110,9,#20106,1,"g(x: st ... string;") -hasLocation(#20110,#20107) -enclosingStmt(#20110,#20079) -exprContainers(#20110,#20001) -#20111=* -scopes(#20111,1) -scopenodes(#20110,#20111) -scopenesting(#20111,#20084) -#20112=@"var;{x};{#20111}" -variables(#20112,"x",#20111) -#20113=* -exprs(#20113,78,#20110,0,"x") -#20114=@"loc,{#10000},24,5,24,5" -locations_default(#20114,#10000,24,5,24,5) -hasLocation(#20113,#20114) -exprContainers(#20113,#20110) -literals("x","x",#20113) -decl(#20113,#20112) -#20115=@"var;{arguments};{#20111}" -variables(#20115,"arguments",#20111) -isArgumentsObject(#20115) +tokeninfo(#20110,8,#20001,18,":") +#20111=@"loc,{#10000},9,6,9,6" +locations_default(#20111,#10000,9,6,9,6) +hasLocation(#20110,#20111) +#20112=* +tokeninfo(#20112,7,#20001,19,"number") +#20113=@"loc,{#10000},9,8,9,13" +locations_default(#20113,#10000,9,8,9,13) +hasLocation(#20112,#20113) +#20114=* +tokeninfo(#20114,8,#20001,20,")") +#20115=@"loc,{#10000},9,14,9,14" +locations_default(#20115,#10000,9,14,9,14) +hasLocation(#20114,#20115) #20116=* -typeexprs(#20116,2,#20110,-3,"string") -#20117=@"loc,{#10000},24,17,24,22" -locations_default(#20117,#10000,24,17,24,22) +tokeninfo(#20116,8,#20001,21,":") +#20117=@"loc,{#10000},9,15,9,15" +locations_default(#20117,#10000,9,15,9,15) hasLocation(#20116,#20117) -exprContainers(#20116,#20110) -literals("string","string",#20116) #20118=* -typeexprs(#20118,2,#20110,-6,"string") -#20119=@"loc,{#10000},24,8,24,13" -locations_default(#20119,#10000,24,8,24,13) +tokeninfo(#20118,7,#20001,22,"number") +#20119=@"loc,{#10000},9,17,9,22" +locations_default(#20119,#10000,9,17,9,22) hasLocation(#20118,#20119) -exprContainers(#20118,#20110) -literals("string","string",#20118) -numlines(#20110,1,1,0) -isMethod(#20106) #20120=* -properties(#20120,#20079,5,0,"g(x: any) {}") -#20121=@"loc,{#10000},25,3,25,14" -locations_default(#20121,#10000,25,3,25,14) +tokeninfo(#20120,8,#20001,23,";") +#20121=@"loc,{#10000},9,23,9,23" +locations_default(#20121,#10000,9,23,9,23) hasLocation(#20120,#20121) #20122=* -exprs(#20122,0,#20120,0,"g") -#20123=@"loc,{#10000},25,3,25,3" -locations_default(#20123,#10000,25,3,25,3) +tokeninfo(#20122,6,#20001,24,"g") +#20123=@"loc,{#10000},10,3,10,3" +locations_default(#20123,#10000,10,3,10,3) hasLocation(#20122,#20123) -enclosingStmt(#20122,#20079) -exprContainers(#20122,#20001) -literals("g","g",#20122) #20124=* -exprs(#20124,9,#20120,1,"g(x: any) {}") -hasLocation(#20124,#20121) -enclosingStmt(#20124,#20079) -exprContainers(#20124,#20001) -#20125=* -scopes(#20125,1) -scopenodes(#20124,#20125) -scopenesting(#20125,#20084) -#20126=@"var;{x};{#20125}" -variables(#20126,"x",#20125) -#20127=* -exprs(#20127,78,#20124,0,"x") -#20128=@"loc,{#10000},25,5,25,5" -locations_default(#20128,#10000,25,5,25,5) -hasLocation(#20127,#20128) -exprContainers(#20127,#20124) -literals("x","x",#20127) -decl(#20127,#20126) -#20129=@"var;{arguments};{#20125}" -variables(#20129,"arguments",#20125) -isArgumentsObject(#20129) +tokeninfo(#20124,8,#20001,25,"(") +#20125=@"loc,{#10000},10,4,10,4" +locations_default(#20125,#10000,10,4,10,4) +hasLocation(#20124,#20125) +#20126=* +tokeninfo(#20126,6,#20001,26,"x") +#20127=@"loc,{#10000},10,5,10,5" +locations_default(#20127,#10000,10,5,10,5) +hasLocation(#20126,#20127) +#20128=* +tokeninfo(#20128,8,#20001,27,":") +#20129=@"loc,{#10000},10,6,10,6" +locations_default(#20129,#10000,10,6,10,6) +hasLocation(#20128,#20129) #20130=* -typeexprs(#20130,2,#20124,-6,"any") -#20131=@"loc,{#10000},25,8,25,10" -locations_default(#20131,#10000,25,8,25,10) +tokeninfo(#20130,7,#20001,28,"string") +#20131=@"loc,{#10000},10,8,10,13" +locations_default(#20131,#10000,10,8,10,13) hasLocation(#20130,#20131) -exprContainers(#20130,#20124) -literals("any","any",#20130) #20132=* -stmts(#20132,1,#20124,-2,"{}") -#20133=@"loc,{#10000},25,13,25,14" -locations_default(#20133,#10000,25,13,25,14) +tokeninfo(#20132,8,#20001,29,")") +#20133=@"loc,{#10000},10,14,10,14" +locations_default(#20133,#10000,10,14,10,14) hasLocation(#20132,#20133) -stmtContainers(#20132,#20124) -numlines(#20124,1,1,0) -isMethod(#20120) #20134=* -properties(#20134,#20079,6,8,"abstract x: number;") -#20135=@"loc,{#10000},28,3,28,21" -locations_default(#20135,#10000,28,3,28,21) +tokeninfo(#20134,8,#20001,30,":") +#20135=@"loc,{#10000},10,15,10,15" +locations_default(#20135,#10000,10,15,10,15) hasLocation(#20134,#20135) #20136=* -exprs(#20136,0,#20134,0,"x") -#20137=@"loc,{#10000},28,12,28,12" -locations_default(#20137,#10000,28,12,28,12) +tokeninfo(#20136,7,#20001,31,"string") +#20137=@"loc,{#10000},10,17,10,22" +locations_default(#20137,#10000,10,17,10,22) hasLocation(#20136,#20137) -enclosingStmt(#20136,#20079) -exprContainers(#20136,#20001) -literals("x","x",#20136) #20138=* -isAbstractMember(#20134) -#20139=* -typeexprs(#20139,2,#20134,2,"number") -#20140=@"loc,{#10000},28,15,28,20" -locations_default(#20140,#10000,28,15,28,20) -hasLocation(#20139,#20140) -enclosingStmt(#20139,#20079) -exprContainers(#20139,#20001) -literals("number","number",#20139) -#20141=* -properties(#20141,#20079,7,0,"constructor() {}") -#20142=@"loc,{#10000},18,26,18,25" -locations_default(#20142,#10000,18,26,18,25) -hasLocation(#20141,#20142) -#20143=* -exprs(#20143,0,#20141,0,"constructor") -hasLocation(#20143,#20142) -enclosingStmt(#20143,#20079) -exprContainers(#20143,#20001) -literals("constructor","constructor",#20143) -exprs(#20138,9,#20141,1,"() {}") -hasLocation(#20138,#20142) -enclosingStmt(#20138,#20079) -exprContainers(#20138,#20001) +tokeninfo(#20138,8,#20001,32,";") +#20139=@"loc,{#10000},10,23,10,23" +locations_default(#20139,#10000,10,23,10,23) +hasLocation(#20138,#20139) +#20140=* +tokeninfo(#20140,6,#20001,33,"g") +#20141=@"loc,{#10000},11,3,11,3" +locations_default(#20141,#10000,11,3,11,3) +hasLocation(#20140,#20141) +#20142=* +tokeninfo(#20142,8,#20001,34,"(") +#20143=@"loc,{#10000},11,4,11,4" +locations_default(#20143,#10000,11,4,11,4) +hasLocation(#20142,#20143) #20144=* -scopes(#20144,1) -scopenodes(#20138,#20144) -scopenesting(#20144,#20084) -#20145=@"var;{arguments};{#20144}" -variables(#20145,"arguments",#20144) -isArgumentsObject(#20145) +tokeninfo(#20144,6,#20001,35,"x") +#20145=@"loc,{#10000},11,5,11,5" +locations_default(#20145,#10000,11,5,11,5) +hasLocation(#20144,#20145) #20146=* -stmts(#20146,1,#20138,-2,"{}") -hasLocation(#20146,#20142) -stmtContainers(#20146,#20138) -numlines(#20138,1,0,0) -isMethod(#20141) -#20147=* -comments(#20147,0,#20001," Ambient functions","// Ambient functions") -#20148=@"loc,{#10000},1,1,1,20" -locations_default(#20148,#10000,1,1,1,20) -hasLocation(#20147,#20148) -#20149=* -comments(#20149,0,#20001," Abstract methods","// Abstract methods") -#20150=@"loc,{#10000},5,3,5,21" -locations_default(#20150,#10000,5,3,5,21) -hasLocation(#20149,#20150) -#20151=* -comments(#20151,0,#20001," Overload signatures","// Over ... natures") -#20152=@"loc,{#10000},8,3,8,24" -locations_default(#20152,#10000,8,3,8,24) -hasLocation(#20151,#20152) -#20153=* -comments(#20153,0,#20001," Abstract fields","// Abstract fields") -#20154=@"loc,{#10000},13,3,13,20" -locations_default(#20154,#10000,13,3,13,20) -hasLocation(#20153,#20154) -#20155=* -comments(#20155,0,#20001," Same but ambient","// Same but ambient") -#20156=@"loc,{#10000},17,1,17,19" -locations_default(#20156,#10000,17,1,17,19) -hasLocation(#20155,#20156) -#20157=* -comments(#20157,0,#20001," Abstract methods","// Abstract methods") -#20158=@"loc,{#10000},19,3,19,21" -locations_default(#20158,#10000,19,3,19,21) -hasLocation(#20157,#20158) -#20159=* -comments(#20159,0,#20001," Overload signatures","// Over ... natures") -#20160=@"loc,{#10000},22,3,22,24" -locations_default(#20160,#10000,22,3,22,24) -hasLocation(#20159,#20160) -#20161=* -comments(#20161,0,#20001," Abstract fields","// Abstract fields") -#20162=@"loc,{#10000},27,3,27,20" -locations_default(#20162,#10000,27,3,27,20) -hasLocation(#20161,#20162) -#20163=* -lines(#20163,#20001,"// Ambient functions"," -") -hasLocation(#20163,#20148) +tokeninfo(#20146,8,#20001,36,":") +#20147=@"loc,{#10000},11,6,11,6" +locations_default(#20147,#10000,11,6,11,6) +hasLocation(#20146,#20147) +#20148=* +tokeninfo(#20148,7,#20001,37,"any") +#20149=@"loc,{#10000},11,8,11,10" +locations_default(#20149,#10000,11,8,11,10) +hasLocation(#20148,#20149) +#20150=* +tokeninfo(#20150,8,#20001,38,")") +#20151=@"loc,{#10000},11,11,11,11" +locations_default(#20151,#10000,11,11,11,11) +hasLocation(#20150,#20151) +#20152=* +tokeninfo(#20152,8,#20001,39,"{") +#20153=@"loc,{#10000},11,13,11,13" +locations_default(#20153,#10000,11,13,11,13) +hasLocation(#20152,#20153) +#20154=* +tokeninfo(#20154,8,#20001,40,"}") +#20155=@"loc,{#10000},11,14,11,14" +locations_default(#20155,#10000,11,14,11,14) +hasLocation(#20154,#20155) +#20156=* +tokeninfo(#20156,7,#20001,41,"abstract") +#20157=@"loc,{#10000},14,3,14,10" +locations_default(#20157,#10000,14,3,14,10) +hasLocation(#20156,#20157) +next_token(#20008,#20156) +#20158=* +tokeninfo(#20158,6,#20001,42,"x") +#20159=@"loc,{#10000},14,12,14,12" +locations_default(#20159,#10000,14,12,14,12) +hasLocation(#20158,#20159) +#20160=* +tokeninfo(#20160,8,#20001,43,":") +#20161=@"loc,{#10000},14,13,14,13" +locations_default(#20161,#10000,14,13,14,13) +hasLocation(#20160,#20161) +#20162=* +tokeninfo(#20162,7,#20001,44,"number") +#20163=@"loc,{#10000},14,15,14,20" +locations_default(#20163,#10000,14,15,14,20) +hasLocation(#20162,#20163) #20164=* -lines(#20164,#20001,"declare function f();"," -") -hasLocation(#20164,#20006) -#20165=* -lines(#20165,#20001,""," -") -#20166=@"loc,{#10000},3,1,3,0" -locations_default(#20166,#10000,3,1,3,0) -hasLocation(#20165,#20166) +tokeninfo(#20164,8,#20001,45,";") +#20165=@"loc,{#10000},14,21,14,21" +locations_default(#20165,#10000,14,21,14,21) +hasLocation(#20164,#20165) +#20166=* +tokeninfo(#20166,8,#20001,46,"}") +hasLocation(#20166,#20046) #20167=* -lines(#20167,#20001,"abstract class C {"," -") -#20168=@"loc,{#10000},4,1,4,18" -locations_default(#20168,#10000,4,1,4,18) +tokeninfo(#20167,7,#20001,47,"declare") +#20168=@"loc,{#10000},18,1,18,7" +locations_default(#20168,#10000,18,1,18,7) hasLocation(#20167,#20168) +next_token(#20010,#20167) #20169=* -lines(#20169,#20001," // Abstract methods"," -") -#20170=@"loc,{#10000},5,1,5,21" -locations_default(#20170,#10000,5,1,5,21) +tokeninfo(#20169,7,#20001,48,"abstract") +#20170=@"loc,{#10000},18,9,18,16" +locations_default(#20170,#10000,18,9,18,16) hasLocation(#20169,#20170) -indentation(#10000,5," ",2) #20171=* -lines(#20171,#20001," abstract h();"," -") -#20172=@"loc,{#10000},6,1,6,15" -locations_default(#20172,#10000,6,1,6,15) +tokeninfo(#20171,7,#20001,49,"class") +#20172=@"loc,{#10000},18,18,18,22" +locations_default(#20172,#10000,18,18,18,22) hasLocation(#20171,#20172) -indentation(#10000,6," ",2) #20173=* -lines(#20173,#20001,""," -") -#20174=@"loc,{#10000},7,1,7,0" -locations_default(#20174,#10000,7,1,7,0) +tokeninfo(#20173,6,#20001,50,"D") +#20174=@"loc,{#10000},18,24,18,24" +locations_default(#20174,#10000,18,24,18,24) hasLocation(#20173,#20174) #20175=* -lines(#20175,#20001," // Overload signatures"," -") -#20176=@"loc,{#10000},8,1,8,24" -locations_default(#20176,#10000,8,1,8,24) +tokeninfo(#20175,8,#20001,51,"{") +#20176=@"loc,{#10000},18,26,18,26" +locations_default(#20176,#10000,18,26,18,26) hasLocation(#20175,#20176) -indentation(#10000,8," ",2) #20177=* -lines(#20177,#20001," g(x: number): number;"," -") -#20178=@"loc,{#10000},9,1,9,23" -locations_default(#20178,#10000,9,1,9,23) +tokeninfo(#20177,7,#20001,52,"abstract") +#20178=@"loc,{#10000},20,3,20,10" +locations_default(#20178,#10000,20,3,20,10) hasLocation(#20177,#20178) -indentation(#10000,9," ",2) +next_token(#20012,#20177) #20179=* -lines(#20179,#20001," g(x: string): string;"," -") -#20180=@"loc,{#10000},10,1,10,23" -locations_default(#20180,#10000,10,1,10,23) +tokeninfo(#20179,6,#20001,53,"h") +#20180=@"loc,{#10000},20,12,20,12" +locations_default(#20180,#10000,20,12,20,12) hasLocation(#20179,#20180) -indentation(#10000,10," ",2) #20181=* -lines(#20181,#20001," g(x: any) {}"," -") -#20182=@"loc,{#10000},11,1,11,14" -locations_default(#20182,#10000,11,1,11,14) +tokeninfo(#20181,8,#20001,54,"(") +#20182=@"loc,{#10000},20,13,20,13" +locations_default(#20182,#10000,20,13,20,13) hasLocation(#20181,#20182) -indentation(#10000,11," ",2) #20183=* -lines(#20183,#20001,""," -") -#20184=@"loc,{#10000},12,1,12,0" -locations_default(#20184,#10000,12,1,12,0) +tokeninfo(#20183,8,#20001,55,")") +#20184=@"loc,{#10000},20,14,20,14" +locations_default(#20184,#10000,20,14,20,14) hasLocation(#20183,#20184) #20185=* -lines(#20185,#20001," // Abstract fields"," -") -#20186=@"loc,{#10000},13,1,13,20" -locations_default(#20186,#10000,13,1,13,20) +tokeninfo(#20185,8,#20001,56,";") +#20186=@"loc,{#10000},20,15,20,15" +locations_default(#20186,#10000,20,15,20,15) hasLocation(#20185,#20186) -indentation(#10000,13," ",2) #20187=* -lines(#20187,#20001," abstract x: number;"," -") -#20188=@"loc,{#10000},14,1,14,21" -locations_default(#20188,#10000,14,1,14,21) +tokeninfo(#20187,6,#20001,57,"g") +#20188=@"loc,{#10000},23,3,23,3" +locations_default(#20188,#10000,23,3,23,3) hasLocation(#20187,#20188) -indentation(#10000,14," ",2) +next_token(#20014,#20187) #20189=* -lines(#20189,#20001,"}"," -") -#20190=@"loc,{#10000},15,1,15,1" -locations_default(#20190,#10000,15,1,15,1) +tokeninfo(#20189,8,#20001,58,"(") +#20190=@"loc,{#10000},23,4,23,4" +locations_default(#20190,#10000,23,4,23,4) hasLocation(#20189,#20190) #20191=* -lines(#20191,#20001,""," -") -#20192=@"loc,{#10000},16,1,16,0" -locations_default(#20192,#10000,16,1,16,0) +tokeninfo(#20191,6,#20001,59,"x") +#20192=@"loc,{#10000},23,5,23,5" +locations_default(#20192,#10000,23,5,23,5) hasLocation(#20191,#20192) #20193=* -lines(#20193,#20001,"// Same but ambient"," -") -hasLocation(#20193,#20156) -#20194=* -lines(#20194,#20001,"declare abstract class D {"," -") -#20195=@"loc,{#10000},18,1,18,26" -locations_default(#20195,#10000,18,1,18,26) -hasLocation(#20194,#20195) -#20196=* -lines(#20196,#20001," // Abstract methods"," -") -#20197=@"loc,{#10000},19,1,19,21" -locations_default(#20197,#10000,19,1,19,21) -hasLocation(#20196,#20197) -indentation(#10000,19," ",2) -#20198=* -lines(#20198,#20001," abstract h();"," -") -#20199=@"loc,{#10000},20,1,20,15" -locations_default(#20199,#10000,20,1,20,15) -hasLocation(#20198,#20199) -indentation(#10000,20," ",2) -#20200=* -lines(#20200,#20001,""," -") -#20201=@"loc,{#10000},21,1,21,0" -locations_default(#20201,#10000,21,1,21,0) -hasLocation(#20200,#20201) -#20202=* -lines(#20202,#20001," // Overload signatures"," -") -#20203=@"loc,{#10000},22,1,22,24" -locations_default(#20203,#10000,22,1,22,24) -hasLocation(#20202,#20203) -indentation(#10000,22," ",2) -#20204=* -lines(#20204,#20001," g(x: number): number;"," -") -#20205=@"loc,{#10000},23,1,23,23" -locations_default(#20205,#10000,23,1,23,23) -hasLocation(#20204,#20205) -indentation(#10000,23," ",2) -#20206=* -lines(#20206,#20001," g(x: string): string;"," -") -#20207=@"loc,{#10000},24,1,24,23" -locations_default(#20207,#10000,24,1,24,23) -hasLocation(#20206,#20207) -indentation(#10000,24," ",2) -#20208=* -lines(#20208,#20001," g(x: any) {}"," -") -#20209=@"loc,{#10000},25,1,25,14" -locations_default(#20209,#10000,25,1,25,14) -hasLocation(#20208,#20209) -indentation(#10000,25," ",2) -#20210=* -lines(#20210,#20001,""," -") -#20211=@"loc,{#10000},26,1,26,0" -locations_default(#20211,#10000,26,1,26,0) -hasLocation(#20210,#20211) -#20212=* -lines(#20212,#20001," // Abstract fields"," -") -#20213=@"loc,{#10000},27,1,27,20" -locations_default(#20213,#10000,27,1,27,20) -hasLocation(#20212,#20213) -indentation(#10000,27," ",2) -#20214=* -lines(#20214,#20001," abstract x: number;"," -") -#20215=@"loc,{#10000},28,1,28,21" -locations_default(#20215,#10000,28,1,28,21) -hasLocation(#20214,#20215) -indentation(#10000,28," ",2) -#20216=* -lines(#20216,#20001,"}"," -") -#20217=@"loc,{#10000},29,1,29,1" -locations_default(#20217,#10000,29,1,29,1) -hasLocation(#20216,#20217) -numlines(#20001,29,15,8) -#20218=* -tokeninfo(#20218,7,#20001,0,"declare") -#20219=@"loc,{#10000},2,1,2,7" -locations_default(#20219,#10000,2,1,2,7) -hasLocation(#20218,#20219) -next_token(#20147,#20218) -#20220=* -tokeninfo(#20220,7,#20001,1,"function") -#20221=@"loc,{#10000},2,9,2,16" -locations_default(#20221,#10000,2,9,2,16) -hasLocation(#20220,#20221) -#20222=* -tokeninfo(#20222,6,#20001,2,"f") -hasLocation(#20222,#20008) +tokeninfo(#20193,8,#20001,60,":") +#20194=@"loc,{#10000},23,6,23,6" +locations_default(#20194,#10000,23,6,23,6) +hasLocation(#20193,#20194) +#20195=* +tokeninfo(#20195,7,#20001,61,"number") +#20196=@"loc,{#10000},23,8,23,13" +locations_default(#20196,#10000,23,8,23,13) +hasLocation(#20195,#20196) +#20197=* +tokeninfo(#20197,8,#20001,62,")") +#20198=@"loc,{#10000},23,14,23,14" +locations_default(#20198,#10000,23,14,23,14) +hasLocation(#20197,#20198) +#20199=* +tokeninfo(#20199,8,#20001,63,":") +#20200=@"loc,{#10000},23,15,23,15" +locations_default(#20200,#10000,23,15,23,15) +hasLocation(#20199,#20200) +#20201=* +tokeninfo(#20201,7,#20001,64,"number") +#20202=@"loc,{#10000},23,17,23,22" +locations_default(#20202,#10000,23,17,23,22) +hasLocation(#20201,#20202) +#20203=* +tokeninfo(#20203,8,#20001,65,";") +#20204=@"loc,{#10000},23,23,23,23" +locations_default(#20204,#10000,23,23,23,23) +hasLocation(#20203,#20204) +#20205=* +tokeninfo(#20205,6,#20001,66,"g") +#20206=@"loc,{#10000},24,3,24,3" +locations_default(#20206,#10000,24,3,24,3) +hasLocation(#20205,#20206) +#20207=* +tokeninfo(#20207,8,#20001,67,"(") +#20208=@"loc,{#10000},24,4,24,4" +locations_default(#20208,#10000,24,4,24,4) +hasLocation(#20207,#20208) +#20209=* +tokeninfo(#20209,6,#20001,68,"x") +#20210=@"loc,{#10000},24,5,24,5" +locations_default(#20210,#10000,24,5,24,5) +hasLocation(#20209,#20210) +#20211=* +tokeninfo(#20211,8,#20001,69,":") +#20212=@"loc,{#10000},24,6,24,6" +locations_default(#20212,#10000,24,6,24,6) +hasLocation(#20211,#20212) +#20213=* +tokeninfo(#20213,7,#20001,70,"string") +#20214=@"loc,{#10000},24,8,24,13" +locations_default(#20214,#10000,24,8,24,13) +hasLocation(#20213,#20214) +#20215=* +tokeninfo(#20215,8,#20001,71,")") +#20216=@"loc,{#10000},24,14,24,14" +locations_default(#20216,#10000,24,14,24,14) +hasLocation(#20215,#20216) +#20217=* +tokeninfo(#20217,8,#20001,72,":") +#20218=@"loc,{#10000},24,15,24,15" +locations_default(#20218,#10000,24,15,24,15) +hasLocation(#20217,#20218) +#20219=* +tokeninfo(#20219,7,#20001,73,"string") +#20220=@"loc,{#10000},24,17,24,22" +locations_default(#20220,#10000,24,17,24,22) +hasLocation(#20219,#20220) +#20221=* +tokeninfo(#20221,8,#20001,74,";") +#20222=@"loc,{#10000},24,23,24,23" +locations_default(#20222,#10000,24,23,24,23) +hasLocation(#20221,#20222) #20223=* -tokeninfo(#20223,8,#20001,3,"(") -#20224=@"loc,{#10000},2,19,2,19" -locations_default(#20224,#10000,2,19,2,19) +tokeninfo(#20223,6,#20001,75,"g") +#20224=@"loc,{#10000},25,3,25,3" +locations_default(#20224,#10000,25,3,25,3) hasLocation(#20223,#20224) #20225=* -tokeninfo(#20225,8,#20001,4,")") -#20226=@"loc,{#10000},2,20,2,20" -locations_default(#20226,#10000,2,20,2,20) +tokeninfo(#20225,8,#20001,76,"(") +#20226=@"loc,{#10000},25,4,25,4" +locations_default(#20226,#10000,25,4,25,4) hasLocation(#20225,#20226) #20227=* -tokeninfo(#20227,8,#20001,5,";") -#20228=@"loc,{#10000},2,21,2,21" -locations_default(#20228,#10000,2,21,2,21) +tokeninfo(#20227,6,#20001,77,"x") +#20228=@"loc,{#10000},25,5,25,5" +locations_default(#20228,#10000,25,5,25,5) hasLocation(#20227,#20228) #20229=* -tokeninfo(#20229,7,#20001,6,"abstract") -#20230=@"loc,{#10000},4,1,4,8" -locations_default(#20230,#10000,4,1,4,8) +tokeninfo(#20229,8,#20001,78,":") +#20230=@"loc,{#10000},25,6,25,6" +locations_default(#20230,#10000,25,6,25,6) hasLocation(#20229,#20230) #20231=* -tokeninfo(#20231,7,#20001,7,"class") -#20232=@"loc,{#10000},4,10,4,14" -locations_default(#20232,#10000,4,10,4,14) +tokeninfo(#20231,7,#20001,79,"any") +#20232=@"loc,{#10000},25,8,25,10" +locations_default(#20232,#10000,25,8,25,10) hasLocation(#20231,#20232) #20233=* -tokeninfo(#20233,6,#20001,8,"C") -hasLocation(#20233,#20015) -#20234=* -tokeninfo(#20234,8,#20001,9,"{") -#20235=@"loc,{#10000},4,18,4,18" -locations_default(#20235,#10000,4,18,4,18) -hasLocation(#20234,#20235) -#20236=* -tokeninfo(#20236,7,#20001,10,"abstract") -#20237=@"loc,{#10000},6,3,6,10" -locations_default(#20237,#10000,6,3,6,10) -hasLocation(#20236,#20237) -next_token(#20149,#20236) -#20238=* -tokeninfo(#20238,6,#20001,11,"h") -hasLocation(#20238,#20020) +tokeninfo(#20233,8,#20001,80,")") +#20234=@"loc,{#10000},25,11,25,11" +locations_default(#20234,#10000,25,11,25,11) +hasLocation(#20233,#20234) +#20235=* +tokeninfo(#20235,8,#20001,81,"{") +#20236=@"loc,{#10000},25,13,25,13" +locations_default(#20236,#10000,25,13,25,13) +hasLocation(#20235,#20236) +#20237=* +tokeninfo(#20237,8,#20001,82,"}") +#20238=@"loc,{#10000},25,14,25,14" +locations_default(#20238,#10000,25,14,25,14) +hasLocation(#20237,#20238) #20239=* -tokeninfo(#20239,8,#20001,12,"(") -#20240=@"loc,{#10000},6,13,6,13" -locations_default(#20240,#10000,6,13,6,13) +tokeninfo(#20239,7,#20001,83,"abstract") +#20240=@"loc,{#10000},28,3,28,10" +locations_default(#20240,#10000,28,3,28,10) hasLocation(#20239,#20240) +next_token(#20016,#20239) #20241=* -tokeninfo(#20241,8,#20001,13,")") -#20242=@"loc,{#10000},6,14,6,14" -locations_default(#20242,#10000,6,14,6,14) +tokeninfo(#20241,6,#20001,84,"x") +#20242=@"loc,{#10000},28,12,28,12" +locations_default(#20242,#10000,28,12,28,12) hasLocation(#20241,#20242) #20243=* -tokeninfo(#20243,8,#20001,14,";") -#20244=@"loc,{#10000},6,15,6,15" -locations_default(#20244,#10000,6,15,6,15) +tokeninfo(#20243,8,#20001,85,":") +#20244=@"loc,{#10000},28,13,28,13" +locations_default(#20244,#10000,28,13,28,13) hasLocation(#20243,#20244) #20245=* -tokeninfo(#20245,6,#20001,15,"g") -hasLocation(#20245,#20027) -next_token(#20151,#20245) -#20246=* -tokeninfo(#20246,8,#20001,16,"(") -#20247=@"loc,{#10000},9,4,9,4" -locations_default(#20247,#10000,9,4,9,4) -hasLocation(#20246,#20247) -#20248=* -tokeninfo(#20248,6,#20001,17,"x") -hasLocation(#20248,#20032) +tokeninfo(#20245,7,#20001,86,"number") +#20246=@"loc,{#10000},28,15,28,20" +locations_default(#20246,#10000,28,15,28,20) +hasLocation(#20245,#20246) +#20247=* +tokeninfo(#20247,8,#20001,87,";") +#20248=@"loc,{#10000},28,21,28,21" +locations_default(#20248,#10000,28,21,28,21) +hasLocation(#20247,#20248) #20249=* -tokeninfo(#20249,8,#20001,18,":") -#20250=@"loc,{#10000},9,6,9,6" -locations_default(#20250,#10000,9,6,9,6) -hasLocation(#20249,#20250) -#20251=* -tokeninfo(#20251,7,#20001,19,"number") -hasLocation(#20251,#20037) -#20252=* -tokeninfo(#20252,8,#20001,20,")") -#20253=@"loc,{#10000},9,14,9,14" -locations_default(#20253,#10000,9,14,9,14) -hasLocation(#20252,#20253) -#20254=* -tokeninfo(#20254,8,#20001,21,":") -#20255=@"loc,{#10000},9,15,9,15" -locations_default(#20255,#10000,9,15,9,15) -hasLocation(#20254,#20255) +tokeninfo(#20249,8,#20001,88,"}") +hasLocation(#20249,#20073) +#20250=* +tokeninfo(#20250,0,#20001,89,"") +#20251=@"loc,{#10000},30,1,30,0" +locations_default(#20251,#10000,30,1,30,0) +hasLocation(#20250,#20251) +toplevels(#20001,0) +#20252=@"loc,{#10000},2,1,30,0" +locations_default(#20252,#10000,2,1,30,0) +hasLocation(#20001,#20252) +#20253=@"var;{C};{#20000}" +variables(#20253,"C",#20000) +#20254=@"local_type_name;{C};{#20000}" +local_type_names(#20254,"C",#20000) +#20255=* +stmts(#20255,17,#20001,0,"declare ... on f();") +hasLocation(#20255,#20020) +stmtContainers(#20255,#20001) +hasDeclareKeyword(#20255) #20256=* -tokeninfo(#20256,7,#20001,22,"number") -hasLocation(#20256,#20035) -#20257=* -tokeninfo(#20257,8,#20001,23,";") -#20258=@"loc,{#10000},9,23,9,23" -locations_default(#20258,#10000,9,23,9,23) -hasLocation(#20257,#20258) -#20259=* -tokeninfo(#20259,6,#20001,24,"g") -hasLocation(#20259,#20041) +exprs(#20256,78,#20255,-1,"f") +hasLocation(#20256,#20079) +exprContainers(#20256,#20255) +literals("f","f",#20256) +#20257=@"var;{f};{#20000}" +variables(#20257,"f",#20000) +decl(#20256,#20257) +#20258=* +scopes(#20258,1) +scopenodes(#20255,#20258) +scopenesting(#20258,#20000) +#20259=@"var;{arguments};{#20258}" +variables(#20259,"arguments",#20258) +isArgumentsObject(#20259) #20260=* -tokeninfo(#20260,8,#20001,25,"(") -#20261=@"loc,{#10000},10,4,10,4" -locations_default(#20261,#10000,10,4,10,4) +stmts(#20260,26,#20001,1,"abstrac ... mber;\n}") +#20261=@"loc,{#10000},4,1,15,1" +locations_default(#20261,#10000,4,1,15,1) hasLocation(#20260,#20261) +stmtContainers(#20260,#20001) +isAbstractClass(#20260) #20262=* -tokeninfo(#20262,6,#20001,26,"x") -hasLocation(#20262,#20046) +exprs(#20262,78,#20260,0,"C") +hasLocation(#20262,#20091) +enclosingStmt(#20262,#20260) +exprContainers(#20262,#20001) +literals("C","C",#20262) +decl(#20262,#20253) +typedecl(#20262,#20254) #20263=* -tokeninfo(#20263,8,#20001,27,":") -#20264=@"loc,{#10000},10,6,10,6" -locations_default(#20264,#10000,10,6,10,6) -hasLocation(#20263,#20264) -#20265=* -tokeninfo(#20265,7,#20001,28,"string") -hasLocation(#20265,#20051) +scopes(#20263,10) +scopenodes(#20260,#20263) +scopenesting(#20263,#20000) +#20264=* +properties(#20264,#20260,2,0,"abstract h();") +#20265=@"loc,{#10000},6,3,6,15" +locations_default(#20265,#10000,6,3,6,15) +hasLocation(#20264,#20265) #20266=* -tokeninfo(#20266,8,#20001,29,")") -#20267=@"loc,{#10000},10,14,10,14" -locations_default(#20267,#10000,10,14,10,14) -hasLocation(#20266,#20267) +exprs(#20266,0,#20264,0,"h") +hasLocation(#20266,#20097) +enclosingStmt(#20266,#20260) +exprContainers(#20266,#20001) +literals("h","h",#20266) +#20267=* +exprs(#20267,9,#20264,1,"abstract h();") +hasLocation(#20267,#20265) +enclosingStmt(#20267,#20260) +exprContainers(#20267,#20001) #20268=* -tokeninfo(#20268,8,#20001,30,":") -#20269=@"loc,{#10000},10,15,10,15" -locations_default(#20269,#10000,10,15,10,15) -hasLocation(#20268,#20269) +scopes(#20268,1) +scopenodes(#20267,#20268) +scopenesting(#20268,#20263) +#20269=@"var;{arguments};{#20268}" +variables(#20269,"arguments",#20268) +isArgumentsObject(#20269) +isMethod(#20264) +isAbstractMember(#20264) #20270=* -tokeninfo(#20270,7,#20001,31,"string") -hasLocation(#20270,#20049) -#20271=* -tokeninfo(#20271,8,#20001,32,";") -#20272=@"loc,{#10000},10,23,10,23" -locations_default(#20272,#10000,10,23,10,23) -hasLocation(#20271,#20272) +properties(#20270,#20260,3,0,"g(x: nu ... number;") +#20271=@"loc,{#10000},9,3,9,23" +locations_default(#20271,#10000,9,3,9,23) +hasLocation(#20270,#20271) +#20272=* +exprs(#20272,0,#20270,0,"g") +hasLocation(#20272,#20105) +enclosingStmt(#20272,#20260) +exprContainers(#20272,#20001) +literals("g","g",#20272) #20273=* -tokeninfo(#20273,6,#20001,33,"g") -hasLocation(#20273,#20055) +exprs(#20273,9,#20270,1,"g(x: nu ... number;") +hasLocation(#20273,#20271) +enclosingStmt(#20273,#20260) +exprContainers(#20273,#20001) #20274=* -tokeninfo(#20274,8,#20001,34,"(") -#20275=@"loc,{#10000},11,4,11,4" -locations_default(#20275,#10000,11,4,11,4) -hasLocation(#20274,#20275) +scopes(#20274,1) +scopenodes(#20273,#20274) +scopenesting(#20274,#20263) +#20275=@"var;{x};{#20274}" +variables(#20275,"x",#20274) #20276=* -tokeninfo(#20276,6,#20001,35,"x") -hasLocation(#20276,#20060) -#20277=* -tokeninfo(#20277,8,#20001,36,":") -#20278=@"loc,{#10000},11,6,11,6" -locations_default(#20278,#10000,11,6,11,6) -hasLocation(#20277,#20278) +exprs(#20276,78,#20273,0,"x") +hasLocation(#20276,#20109) +exprContainers(#20276,#20273) +literals("x","x",#20276) +decl(#20276,#20275) +#20277=@"var;{arguments};{#20274}" +variables(#20277,"arguments",#20274) +isArgumentsObject(#20277) +#20278=* +typeexprs(#20278,2,#20273,-3,"number") +hasLocation(#20278,#20119) +exprContainers(#20278,#20273) +literals("number","number",#20278) #20279=* -tokeninfo(#20279,7,#20001,37,"any") -hasLocation(#20279,#20063) +typeexprs(#20279,2,#20273,-6,"number") +hasLocation(#20279,#20113) +exprContainers(#20279,#20273) +literals("number","number",#20279) +isMethod(#20270) #20280=* -tokeninfo(#20280,8,#20001,38,")") -#20281=@"loc,{#10000},11,11,11,11" -locations_default(#20281,#10000,11,11,11,11) +properties(#20280,#20260,4,0,"g(x: st ... string;") +#20281=@"loc,{#10000},10,3,10,23" +locations_default(#20281,#10000,10,3,10,23) hasLocation(#20280,#20281) #20282=* -tokeninfo(#20282,8,#20001,39,"{") -#20283=@"loc,{#10000},11,13,11,13" -locations_default(#20283,#10000,11,13,11,13) -hasLocation(#20282,#20283) +exprs(#20282,0,#20280,0,"g") +hasLocation(#20282,#20123) +enclosingStmt(#20282,#20260) +exprContainers(#20282,#20001) +literals("g","g",#20282) +#20283=* +exprs(#20283,9,#20280,1,"g(x: st ... string;") +hasLocation(#20283,#20281) +enclosingStmt(#20283,#20260) +exprContainers(#20283,#20001) #20284=* -tokeninfo(#20284,8,#20001,40,"}") -#20285=@"loc,{#10000},11,14,11,14" -locations_default(#20285,#10000,11,14,11,14) -hasLocation(#20284,#20285) +scopes(#20284,1) +scopenodes(#20283,#20284) +scopenesting(#20284,#20263) +#20285=@"var;{x};{#20284}" +variables(#20285,"x",#20284) #20286=* -tokeninfo(#20286,7,#20001,41,"abstract") -#20287=@"loc,{#10000},14,3,14,10" -locations_default(#20287,#10000,14,3,14,10) -hasLocation(#20286,#20287) -next_token(#20153,#20286) +exprs(#20286,78,#20283,0,"x") +hasLocation(#20286,#20127) +exprContainers(#20286,#20283) +literals("x","x",#20286) +decl(#20286,#20285) +#20287=@"var;{arguments};{#20284}" +variables(#20287,"arguments",#20284) +isArgumentsObject(#20287) #20288=* -tokeninfo(#20288,6,#20001,42,"x") -hasLocation(#20288,#20069) +typeexprs(#20288,2,#20283,-3,"string") +hasLocation(#20288,#20137) +exprContainers(#20288,#20283) +literals("string","string",#20288) #20289=* -tokeninfo(#20289,8,#20001,43,":") -#20290=@"loc,{#10000},14,13,14,13" -locations_default(#20290,#10000,14,13,14,13) -hasLocation(#20289,#20290) -#20291=* -tokeninfo(#20291,7,#20001,44,"number") -hasLocation(#20291,#20072) +typeexprs(#20289,2,#20283,-6,"string") +hasLocation(#20289,#20131) +exprContainers(#20289,#20283) +literals("string","string",#20289) +isMethod(#20280) +#20290=* +properties(#20290,#20260,5,0,"g(x: any) {}") +#20291=@"loc,{#10000},11,3,11,14" +locations_default(#20291,#10000,11,3,11,14) +hasLocation(#20290,#20291) #20292=* -tokeninfo(#20292,8,#20001,45,";") -#20293=@"loc,{#10000},14,21,14,21" -locations_default(#20293,#10000,14,21,14,21) -hasLocation(#20292,#20293) +exprs(#20292,0,#20290,0,"g") +hasLocation(#20292,#20141) +enclosingStmt(#20292,#20260) +exprContainers(#20292,#20001) +literals("g","g",#20292) +#20293=* +exprs(#20293,9,#20290,1,"g(x: any) {}") +hasLocation(#20293,#20291) +enclosingStmt(#20293,#20260) +exprContainers(#20293,#20001) #20294=* -tokeninfo(#20294,8,#20001,46,"}") -hasLocation(#20294,#20190) -#20295=* -tokeninfo(#20295,7,#20001,47,"declare") -#20296=@"loc,{#10000},18,1,18,7" -locations_default(#20296,#10000,18,1,18,7) -hasLocation(#20295,#20296) -next_token(#20155,#20295) -#20297=* -tokeninfo(#20297,7,#20001,48,"abstract") -#20298=@"loc,{#10000},18,9,18,16" -locations_default(#20298,#10000,18,9,18,16) -hasLocation(#20297,#20298) +scopes(#20294,1) +scopenodes(#20293,#20294) +scopenesting(#20294,#20263) +#20295=@"var;{x};{#20294}" +variables(#20295,"x",#20294) +#20296=* +exprs(#20296,78,#20293,0,"x") +hasLocation(#20296,#20145) +exprContainers(#20296,#20293) +literals("x","x",#20296) +decl(#20296,#20295) +#20297=@"var;{arguments};{#20294}" +variables(#20297,"arguments",#20294) +isArgumentsObject(#20297) +#20298=* +typeexprs(#20298,2,#20293,-6,"any") +hasLocation(#20298,#20149) +exprContainers(#20298,#20293) +literals("any","any",#20298) #20299=* -tokeninfo(#20299,7,#20001,49,"class") -#20300=@"loc,{#10000},18,18,18,22" -locations_default(#20300,#10000,18,18,18,22) +stmts(#20299,1,#20293,-2,"{}") +#20300=@"loc,{#10000},11,13,11,14" +locations_default(#20300,#10000,11,13,11,14) hasLocation(#20299,#20300) +stmtContainers(#20299,#20293) +isMethod(#20290) #20301=* -tokeninfo(#20301,6,#20001,50,"D") -hasLocation(#20301,#20082) -#20302=* -tokeninfo(#20302,8,#20001,51,"{") -#20303=@"loc,{#10000},18,26,18,26" -locations_default(#20303,#10000,18,26,18,26) -hasLocation(#20302,#20303) +properties(#20301,#20260,6,8,"abstract x: number;") +#20302=@"loc,{#10000},14,3,14,21" +locations_default(#20302,#10000,14,3,14,21) +hasLocation(#20301,#20302) +#20303=* +exprs(#20303,0,#20301,0,"x") +hasLocation(#20303,#20159) +enclosingStmt(#20303,#20260) +exprContainers(#20303,#20001) +literals("x","x",#20303) #20304=* -tokeninfo(#20304,7,#20001,52,"abstract") -#20305=@"loc,{#10000},20,3,20,10" -locations_default(#20305,#10000,20,3,20,10) -hasLocation(#20304,#20305) -next_token(#20157,#20304) +isAbstractMember(#20301) +#20305=* +typeexprs(#20305,2,#20301,2,"number") +hasLocation(#20305,#20163) +enclosingStmt(#20305,#20260) +exprContainers(#20305,#20001) +literals("number","number",#20305) #20306=* -tokeninfo(#20306,6,#20001,53,"h") -hasLocation(#20306,#20088) -#20307=* -tokeninfo(#20307,8,#20001,54,"(") -#20308=@"loc,{#10000},20,13,20,13" -locations_default(#20308,#10000,20,13,20,13) -hasLocation(#20307,#20308) +properties(#20306,#20260,7,0,"constructor() {}") +#20307=@"loc,{#10000},4,18,4,17" +locations_default(#20307,#10000,4,18,4,17) +hasLocation(#20306,#20307) +#20308=* +exprs(#20308,0,#20306,0,"constructor") +hasLocation(#20308,#20307) +enclosingStmt(#20308,#20260) +exprContainers(#20308,#20001) +literals("constructor","constructor",#20308) +exprs(#20304,9,#20306,1,"() {}") +hasLocation(#20304,#20307) +enclosingStmt(#20304,#20260) +exprContainers(#20304,#20001) #20309=* -tokeninfo(#20309,8,#20001,55,")") -#20310=@"loc,{#10000},20,14,20,14" -locations_default(#20310,#10000,20,14,20,14) -hasLocation(#20309,#20310) +scopes(#20309,1) +scopenodes(#20304,#20309) +scopenesting(#20309,#20263) +#20310=@"var;{arguments};{#20309}" +variables(#20310,"arguments",#20309) +isArgumentsObject(#20310) #20311=* -tokeninfo(#20311,8,#20001,56,";") -#20312=@"loc,{#10000},20,15,20,15" -locations_default(#20312,#10000,20,15,20,15) -hasLocation(#20311,#20312) -#20313=* -tokeninfo(#20313,6,#20001,57,"g") -hasLocation(#20313,#20095) -next_token(#20159,#20313) +stmts(#20311,1,#20304,-2,"{}") +hasLocation(#20311,#20307) +stmtContainers(#20311,#20304) +isMethod(#20306) +#20312=* +stmts(#20312,26,#20001,2,"declare ... mber;\n}") +#20313=@"loc,{#10000},18,1,29,1" +locations_default(#20313,#10000,18,1,29,1) +hasLocation(#20312,#20313) +stmtContainers(#20312,#20001) +hasDeclareKeyword(#20312) +isAbstractClass(#20312) #20314=* -tokeninfo(#20314,8,#20001,58,"(") -#20315=@"loc,{#10000},23,4,23,4" -locations_default(#20315,#10000,23,4,23,4) -hasLocation(#20314,#20315) +exprs(#20314,78,#20312,0,"D") +hasLocation(#20314,#20174) +enclosingStmt(#20314,#20312) +exprContainers(#20314,#20001) +literals("D","D",#20314) +#20315=@"var;{D};{#20000}" +variables(#20315,"D",#20000) +decl(#20314,#20315) #20316=* -tokeninfo(#20316,6,#20001,59,"x") -hasLocation(#20316,#20100) +scopes(#20316,10) +scopenodes(#20312,#20316) +scopenesting(#20316,#20000) #20317=* -tokeninfo(#20317,8,#20001,60,":") -#20318=@"loc,{#10000},23,6,23,6" -locations_default(#20318,#10000,23,6,23,6) +properties(#20317,#20312,2,0,"abstract h();") +#20318=@"loc,{#10000},20,3,20,15" +locations_default(#20318,#10000,20,3,20,15) hasLocation(#20317,#20318) #20319=* -tokeninfo(#20319,7,#20001,61,"number") -hasLocation(#20319,#20105) +exprs(#20319,0,#20317,0,"h") +hasLocation(#20319,#20180) +enclosingStmt(#20319,#20312) +exprContainers(#20319,#20001) +literals("h","h",#20319) #20320=* -tokeninfo(#20320,8,#20001,62,")") -#20321=@"loc,{#10000},23,14,23,14" -locations_default(#20321,#10000,23,14,23,14) -hasLocation(#20320,#20321) -#20322=* -tokeninfo(#20322,8,#20001,63,":") -#20323=@"loc,{#10000},23,15,23,15" -locations_default(#20323,#10000,23,15,23,15) -hasLocation(#20322,#20323) -#20324=* -tokeninfo(#20324,7,#20001,64,"number") -hasLocation(#20324,#20103) +exprs(#20320,9,#20317,1,"abstract h();") +hasLocation(#20320,#20318) +enclosingStmt(#20320,#20312) +exprContainers(#20320,#20001) +#20321=* +scopes(#20321,1) +scopenodes(#20320,#20321) +scopenesting(#20321,#20316) +#20322=@"var;{arguments};{#20321}" +variables(#20322,"arguments",#20321) +isArgumentsObject(#20322) +isMethod(#20317) +isAbstractMember(#20317) +#20323=* +properties(#20323,#20312,3,0,"g(x: nu ... number;") +#20324=@"loc,{#10000},23,3,23,23" +locations_default(#20324,#10000,23,3,23,23) +hasLocation(#20323,#20324) #20325=* -tokeninfo(#20325,8,#20001,65,";") -#20326=@"loc,{#10000},23,23,23,23" -locations_default(#20326,#10000,23,23,23,23) -hasLocation(#20325,#20326) +exprs(#20325,0,#20323,0,"g") +hasLocation(#20325,#20188) +enclosingStmt(#20325,#20312) +exprContainers(#20325,#20001) +literals("g","g",#20325) +#20326=* +exprs(#20326,9,#20323,1,"g(x: nu ... number;") +hasLocation(#20326,#20324) +enclosingStmt(#20326,#20312) +exprContainers(#20326,#20001) #20327=* -tokeninfo(#20327,6,#20001,66,"g") -hasLocation(#20327,#20109) -#20328=* -tokeninfo(#20328,8,#20001,67,"(") -#20329=@"loc,{#10000},24,4,24,4" -locations_default(#20329,#10000,24,4,24,4) -hasLocation(#20328,#20329) -#20330=* -tokeninfo(#20330,6,#20001,68,"x") -hasLocation(#20330,#20114) +scopes(#20327,1) +scopenodes(#20326,#20327) +scopenesting(#20327,#20316) +#20328=@"var;{x};{#20327}" +variables(#20328,"x",#20327) +#20329=* +exprs(#20329,78,#20326,0,"x") +hasLocation(#20329,#20192) +exprContainers(#20329,#20326) +literals("x","x",#20329) +decl(#20329,#20328) +#20330=@"var;{arguments};{#20327}" +variables(#20330,"arguments",#20327) +isArgumentsObject(#20330) #20331=* -tokeninfo(#20331,8,#20001,69,":") -#20332=@"loc,{#10000},24,6,24,6" -locations_default(#20332,#10000,24,6,24,6) -hasLocation(#20331,#20332) +typeexprs(#20331,2,#20326,-3,"number") +hasLocation(#20331,#20202) +exprContainers(#20331,#20326) +literals("number","number",#20331) +#20332=* +typeexprs(#20332,2,#20326,-6,"number") +hasLocation(#20332,#20196) +exprContainers(#20332,#20326) +literals("number","number",#20332) +isMethod(#20323) #20333=* -tokeninfo(#20333,7,#20001,70,"string") -hasLocation(#20333,#20119) -#20334=* -tokeninfo(#20334,8,#20001,71,")") -#20335=@"loc,{#10000},24,14,24,14" -locations_default(#20335,#10000,24,14,24,14) -hasLocation(#20334,#20335) +properties(#20333,#20312,4,0,"g(x: st ... string;") +#20334=@"loc,{#10000},24,3,24,23" +locations_default(#20334,#10000,24,3,24,23) +hasLocation(#20333,#20334) +#20335=* +exprs(#20335,0,#20333,0,"g") +hasLocation(#20335,#20206) +enclosingStmt(#20335,#20312) +exprContainers(#20335,#20001) +literals("g","g",#20335) #20336=* -tokeninfo(#20336,8,#20001,72,":") -#20337=@"loc,{#10000},24,15,24,15" -locations_default(#20337,#10000,24,15,24,15) -hasLocation(#20336,#20337) -#20338=* -tokeninfo(#20338,7,#20001,73,"string") -hasLocation(#20338,#20117) +exprs(#20336,9,#20333,1,"g(x: st ... string;") +hasLocation(#20336,#20334) +enclosingStmt(#20336,#20312) +exprContainers(#20336,#20001) +#20337=* +scopes(#20337,1) +scopenodes(#20336,#20337) +scopenesting(#20337,#20316) +#20338=@"var;{x};{#20337}" +variables(#20338,"x",#20337) #20339=* -tokeninfo(#20339,8,#20001,74,";") -#20340=@"loc,{#10000},24,23,24,23" -locations_default(#20340,#10000,24,23,24,23) -hasLocation(#20339,#20340) +exprs(#20339,78,#20336,0,"x") +hasLocation(#20339,#20210) +exprContainers(#20339,#20336) +literals("x","x",#20339) +decl(#20339,#20338) +#20340=@"var;{arguments};{#20337}" +variables(#20340,"arguments",#20337) +isArgumentsObject(#20340) #20341=* -tokeninfo(#20341,6,#20001,75,"g") -hasLocation(#20341,#20123) +typeexprs(#20341,2,#20336,-3,"string") +hasLocation(#20341,#20220) +exprContainers(#20341,#20336) +literals("string","string",#20341) #20342=* -tokeninfo(#20342,8,#20001,76,"(") -#20343=@"loc,{#10000},25,4,25,4" -locations_default(#20343,#10000,25,4,25,4) -hasLocation(#20342,#20343) -#20344=* -tokeninfo(#20344,6,#20001,77,"x") -hasLocation(#20344,#20128) +typeexprs(#20342,2,#20336,-6,"string") +hasLocation(#20342,#20214) +exprContainers(#20342,#20336) +literals("string","string",#20342) +isMethod(#20333) +#20343=* +properties(#20343,#20312,5,0,"g(x: any) {}") +#20344=@"loc,{#10000},25,3,25,14" +locations_default(#20344,#10000,25,3,25,14) +hasLocation(#20343,#20344) #20345=* -tokeninfo(#20345,8,#20001,78,":") -#20346=@"loc,{#10000},25,6,25,6" -locations_default(#20346,#10000,25,6,25,6) -hasLocation(#20345,#20346) +exprs(#20345,0,#20343,0,"g") +hasLocation(#20345,#20224) +enclosingStmt(#20345,#20312) +exprContainers(#20345,#20001) +literals("g","g",#20345) +#20346=* +exprs(#20346,9,#20343,1,"g(x: any) {}") +hasLocation(#20346,#20344) +enclosingStmt(#20346,#20312) +exprContainers(#20346,#20001) #20347=* -tokeninfo(#20347,7,#20001,79,"any") -hasLocation(#20347,#20131) -#20348=* -tokeninfo(#20348,8,#20001,80,")") -#20349=@"loc,{#10000},25,11,25,11" -locations_default(#20349,#10000,25,11,25,11) -hasLocation(#20348,#20349) -#20350=* -tokeninfo(#20350,8,#20001,81,"{") -#20351=@"loc,{#10000},25,13,25,13" -locations_default(#20351,#10000,25,13,25,13) -hasLocation(#20350,#20351) +scopes(#20347,1) +scopenodes(#20346,#20347) +scopenesting(#20347,#20316) +#20348=@"var;{x};{#20347}" +variables(#20348,"x",#20347) +#20349=* +exprs(#20349,78,#20346,0,"x") +hasLocation(#20349,#20228) +exprContainers(#20349,#20346) +literals("x","x",#20349) +decl(#20349,#20348) +#20350=@"var;{arguments};{#20347}" +variables(#20350,"arguments",#20347) +isArgumentsObject(#20350) +#20351=* +typeexprs(#20351,2,#20346,-6,"any") +hasLocation(#20351,#20232) +exprContainers(#20351,#20346) +literals("any","any",#20351) #20352=* -tokeninfo(#20352,8,#20001,82,"}") -#20353=@"loc,{#10000},25,14,25,14" -locations_default(#20353,#10000,25,14,25,14) +stmts(#20352,1,#20346,-2,"{}") +#20353=@"loc,{#10000},25,13,25,14" +locations_default(#20353,#10000,25,13,25,14) hasLocation(#20352,#20353) +stmtContainers(#20352,#20346) +isMethod(#20343) #20354=* -tokeninfo(#20354,7,#20001,83,"abstract") -#20355=@"loc,{#10000},28,3,28,10" -locations_default(#20355,#10000,28,3,28,10) +properties(#20354,#20312,6,8,"abstract x: number;") +#20355=@"loc,{#10000},28,3,28,21" +locations_default(#20355,#10000,28,3,28,21) hasLocation(#20354,#20355) -next_token(#20161,#20354) #20356=* -tokeninfo(#20356,6,#20001,84,"x") -hasLocation(#20356,#20137) +exprs(#20356,0,#20354,0,"x") +hasLocation(#20356,#20242) +enclosingStmt(#20356,#20312) +exprContainers(#20356,#20001) +literals("x","x",#20356) #20357=* -tokeninfo(#20357,8,#20001,85,":") -#20358=@"loc,{#10000},28,13,28,13" -locations_default(#20358,#10000,28,13,28,13) -hasLocation(#20357,#20358) +isAbstractMember(#20354) +#20358=* +typeexprs(#20358,2,#20354,2,"number") +hasLocation(#20358,#20246) +enclosingStmt(#20358,#20312) +exprContainers(#20358,#20001) +literals("number","number",#20358) #20359=* -tokeninfo(#20359,7,#20001,86,"number") -hasLocation(#20359,#20140) -#20360=* -tokeninfo(#20360,8,#20001,87,";") -#20361=@"loc,{#10000},28,21,28,21" -locations_default(#20361,#10000,28,21,28,21) -hasLocation(#20360,#20361) +properties(#20359,#20312,7,0,"constructor() {}") +#20360=@"loc,{#10000},18,26,18,25" +locations_default(#20360,#10000,18,26,18,25) +hasLocation(#20359,#20360) +#20361=* +exprs(#20361,0,#20359,0,"constructor") +hasLocation(#20361,#20360) +enclosingStmt(#20361,#20312) +exprContainers(#20361,#20001) +literals("constructor","constructor",#20361) +exprs(#20357,9,#20359,1,"() {}") +hasLocation(#20357,#20360) +enclosingStmt(#20357,#20312) +exprContainers(#20357,#20001) #20362=* -tokeninfo(#20362,8,#20001,88,"}") -hasLocation(#20362,#20217) -#20363=* -tokeninfo(#20363,0,#20001,89,"") -#20364=@"loc,{#10000},30,1,30,0" -locations_default(#20364,#10000,30,1,30,0) -hasLocation(#20363,#20364) +scopes(#20362,1) +scopenodes(#20357,#20362) +scopenesting(#20362,#20316) +#20363=@"var;{arguments};{#20362}" +variables(#20363,"arguments",#20362) +isArgumentsObject(#20363) +#20364=* +stmts(#20364,1,#20357,-2,"{}") +hasLocation(#20364,#20360) +stmtContainers(#20364,#20357) +isMethod(#20359) #20365=* entry_cfg_node(#20365,#20001) #20366=@"loc,{#10000},2,1,2,0" @@ -1172,41 +1161,41 @@ locations_default(#20366,#10000,2,1,2,0) hasLocation(#20365,#20366) #20367=* exit_cfg_node(#20367,#20001) -hasLocation(#20367,#20364) -successor(#20079,#20367) -successor(#20070,#20073) +hasLocation(#20367,#20251) +successor(#20312,#20367) +successor(#20304,#20306) #20368=* -entry_cfg_node(#20368,#20070) -hasLocation(#20368,#20074) +entry_cfg_node(#20368,#20304) +hasLocation(#20368,#20307) #20369=* -exit_cfg_node(#20369,#20070) -hasLocation(#20369,#20074) -successor(#20078,#20369) -successor(#20368,#20078) -successor(#20075,#20070) -successor(#20073,#20012) -successor(#20056,#20052) +exit_cfg_node(#20369,#20304) +hasLocation(#20369,#20307) +successor(#20311,#20369) +successor(#20368,#20311) +successor(#20308,#20304) +successor(#20306,#20260) +successor(#20293,#20290) #20370=* -entry_cfg_node(#20370,#20056) +entry_cfg_node(#20370,#20293) #20371=@"loc,{#10000},11,3,11,2" locations_default(#20371,#10000,11,3,11,2) hasLocation(#20370,#20371) #20372=* -exit_cfg_node(#20372,#20056) +exit_cfg_node(#20372,#20293) #20373=@"loc,{#10000},11,15,11,14" locations_default(#20373,#10000,11,15,11,14) hasLocation(#20372,#20373) -successor(#20064,#20372) -successor(#20059,#20064) -successor(#20370,#20059) -successor(#20054,#20056) -successor(#20052,#20075) -successor(#20038,#20054) -successor(#20024,#20038) -successor(#20017,#20024) -successor(#20014,#20017) -successor(#20012,#20079) -successor(#20005,#20014) -successor(#20365,#20005) +successor(#20299,#20372) +successor(#20296,#20299) +successor(#20370,#20296) +successor(#20292,#20293) +successor(#20290,#20308) +successor(#20280,#20292) +successor(#20270,#20280) +successor(#20264,#20270) +successor(#20262,#20264) +successor(#20260,#20312) +successor(#20255,#20262) +successor(#20365,#20255) numlines(#10000,29,15,8) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/objectLiteralAccessor.ts.trap b/javascript/extractor/tests/ts/output/trap/objectLiteralAccessor.ts.trap index 6ac70784c1b..7fb20a36cd4 100644 --- a/javascript/extractor/tests/ts/output/trap/objectLiteralAccessor.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/objectLiteralAccessor.ts.trap @@ -9,256 +9,254 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,5,0" -locations_default(#20002,#10000,1,1,5,0) -hasLocation(#20001,#20002) -#20003=@"var;{x};{#20000}" -variables(#20003,"x",#20000) +#20002=* +lines(#20002,#20001,"var x = {"," +") +#20003=@"loc,{#10000},1,1,1,9" +locations_default(#20003,#10000,1,1,1,9) +hasLocation(#20002,#20003) #20004=* -stmts(#20004,18,#20001,0,"var x = ... v) {}\n}") -#20005=@"loc,{#10000},1,1,4,1" -locations_default(#20005,#10000,1,1,4,1) +lines(#20004,#20001," get foo() {return 1},"," +") +#20005=@"loc,{#10000},2,1,2,23" +locations_default(#20005,#10000,2,1,2,23) hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) +indentation(#10000,2," ",2) #20006=* -exprs(#20006,64,#20004,0,"x = {\n ... v) {}\n}") -#20007=@"loc,{#10000},1,5,4,1" -locations_default(#20007,#10000,1,5,4,1) +lines(#20006,#20001," set foo(v) {}"," +") +#20007=@"loc,{#10000},3,1,3,15" +locations_default(#20007,#10000,3,1,3,15) hasLocation(#20006,#20007) -enclosingStmt(#20006,#20004) -exprContainers(#20006,#20001) +indentation(#10000,3," ",2) #20008=* -exprs(#20008,78,#20006,0,"x") -#20009=@"loc,{#10000},1,5,1,5" -locations_default(#20009,#10000,1,5,1,5) +lines(#20008,#20001,"}"," +") +#20009=@"loc,{#10000},4,1,4,1" +locations_default(#20009,#10000,4,1,4,1) hasLocation(#20008,#20009) -enclosingStmt(#20008,#20004) -exprContainers(#20008,#20001) -literals("x","x",#20008) -decl(#20008,#20003) +numlines(#20001,4,4,0) #20010=* -exprs(#20010,8,#20006,1,"{\n get ... v) {}\n}") -#20011=@"loc,{#10000},1,9,4,1" -locations_default(#20011,#10000,1,9,4,1) +tokeninfo(#20010,7,#20001,0,"var") +#20011=@"loc,{#10000},1,1,1,3" +locations_default(#20011,#10000,1,1,1,3) hasLocation(#20010,#20011) -enclosingStmt(#20010,#20004) -exprContainers(#20010,#20001) #20012=* -properties(#20012,#20010,0,1,"get foo() {return 1}") -#20013=@"loc,{#10000},2,3,2,22" -locations_default(#20013,#10000,2,3,2,22) +tokeninfo(#20012,6,#20001,1,"x") +#20013=@"loc,{#10000},1,5,1,5" +locations_default(#20013,#10000,1,5,1,5) hasLocation(#20012,#20013) #20014=* -exprs(#20014,0,#20012,0,"foo") -#20015=@"loc,{#10000},2,7,2,9" -locations_default(#20015,#10000,2,7,2,9) +tokeninfo(#20014,8,#20001,2,"=") +#20015=@"loc,{#10000},1,7,1,7" +locations_default(#20015,#10000,1,7,1,7) hasLocation(#20014,#20015) -enclosingStmt(#20014,#20004) -exprContainers(#20014,#20001) -literals("foo","foo",#20014) #20016=* -exprs(#20016,9,#20012,1,"get foo() {return 1}") -hasLocation(#20016,#20013) -enclosingStmt(#20016,#20004) -exprContainers(#20016,#20001) -#20017=* -scopes(#20017,1) -scopenodes(#20016,#20017) -scopenesting(#20017,#20000) -#20018=@"var;{arguments};{#20017}" -variables(#20018,"arguments",#20017) -isArgumentsObject(#20018) -#20019=* -stmts(#20019,1,#20016,-2,"{return 1}") -#20020=@"loc,{#10000},2,13,2,22" -locations_default(#20020,#10000,2,13,2,22) -hasLocation(#20019,#20020) -stmtContainers(#20019,#20016) -#20021=* -stmts(#20021,9,#20019,0,"return 1") -#20022=@"loc,{#10000},2,14,2,21" -locations_default(#20022,#10000,2,14,2,21) -hasLocation(#20021,#20022) -stmtContainers(#20021,#20016) -#20023=* -exprs(#20023,3,#20021,0,"1") -#20024=@"loc,{#10000},2,21,2,21" -locations_default(#20024,#10000,2,21,2,21) -hasLocation(#20023,#20024) -enclosingStmt(#20023,#20021) -exprContainers(#20023,#20016) -literals("1","1",#20023) -numlines(#20016,1,1,0) -isMethod(#20012) -#20025=* -properties(#20025,#20010,1,2,"set foo(v) {}") -#20026=@"loc,{#10000},3,3,3,15" -locations_default(#20026,#10000,3,3,3,15) -hasLocation(#20025,#20026) -#20027=* -exprs(#20027,0,#20025,0,"foo") -#20028=@"loc,{#10000},3,7,3,9" -locations_default(#20028,#10000,3,7,3,9) -hasLocation(#20027,#20028) -enclosingStmt(#20027,#20004) -exprContainers(#20027,#20001) -literals("foo","foo",#20027) -#20029=* -exprs(#20029,9,#20025,1,"set foo(v) {}") -hasLocation(#20029,#20026) -enclosingStmt(#20029,#20004) -exprContainers(#20029,#20001) +tokeninfo(#20016,8,#20001,3,"{") +#20017=@"loc,{#10000},1,9,1,9" +locations_default(#20017,#10000,1,9,1,9) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,7,#20001,4,"get") +#20019=@"loc,{#10000},2,3,2,5" +locations_default(#20019,#10000,2,3,2,5) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,6,#20001,5,"foo") +#20021=@"loc,{#10000},2,7,2,9" +locations_default(#20021,#10000,2,7,2,9) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,6,"(") +#20023=@"loc,{#10000},2,10,2,10" +locations_default(#20023,#10000,2,10,2,10) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,7,")") +#20025=@"loc,{#10000},2,11,2,11" +locations_default(#20025,#10000,2,11,2,11) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,8,"{") +#20027=@"loc,{#10000},2,13,2,13" +locations_default(#20027,#10000,2,13,2,13) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,7,#20001,9,"return") +#20029=@"loc,{#10000},2,14,2,19" +locations_default(#20029,#10000,2,14,2,19) +hasLocation(#20028,#20029) #20030=* -scopes(#20030,1) -scopenodes(#20029,#20030) -scopenesting(#20030,#20000) -#20031=@"var;{v};{#20030}" -variables(#20031,"v",#20030) +tokeninfo(#20030,3,#20001,10,"1") +#20031=@"loc,{#10000},2,21,2,21" +locations_default(#20031,#10000,2,21,2,21) +hasLocation(#20030,#20031) #20032=* -exprs(#20032,78,#20029,0,"v") -#20033=@"loc,{#10000},3,11,3,11" -locations_default(#20033,#10000,3,11,3,11) +tokeninfo(#20032,8,#20001,11,"}") +#20033=@"loc,{#10000},2,22,2,22" +locations_default(#20033,#10000,2,22,2,22) hasLocation(#20032,#20033) -exprContainers(#20032,#20029) -literals("v","v",#20032) -decl(#20032,#20031) -#20034=@"var;{arguments};{#20030}" -variables(#20034,"arguments",#20030) -isArgumentsObject(#20034) -#20035=* -stmts(#20035,1,#20029,-2,"{}") -#20036=@"loc,{#10000},3,14,3,15" -locations_default(#20036,#10000,3,14,3,15) -hasLocation(#20035,#20036) -stmtContainers(#20035,#20029) -numlines(#20029,1,1,0) -isMethod(#20025) -#20037=* -lines(#20037,#20001,"var x = {"," -") -#20038=@"loc,{#10000},1,1,1,9" -locations_default(#20038,#10000,1,1,1,9) -hasLocation(#20037,#20038) -#20039=* -lines(#20039,#20001," get foo() {return 1},"," -") -#20040=@"loc,{#10000},2,1,2,23" -locations_default(#20040,#10000,2,1,2,23) -hasLocation(#20039,#20040) -indentation(#10000,2," ",2) -#20041=* -lines(#20041,#20001," set foo(v) {}"," -") -#20042=@"loc,{#10000},3,1,3,15" -locations_default(#20042,#10000,3,1,3,15) -hasLocation(#20041,#20042) -indentation(#10000,3," ",2) -#20043=* -lines(#20043,#20001,"}"," -") -#20044=@"loc,{#10000},4,1,4,1" -locations_default(#20044,#10000,4,1,4,1) -hasLocation(#20043,#20044) -numlines(#20001,4,4,0) -#20045=* -tokeninfo(#20045,7,#20001,0,"var") -#20046=@"loc,{#10000},1,1,1,3" -locations_default(#20046,#10000,1,1,1,3) -hasLocation(#20045,#20046) -#20047=* -tokeninfo(#20047,6,#20001,1,"x") -hasLocation(#20047,#20009) +#20034=* +tokeninfo(#20034,8,#20001,12,",") +#20035=@"loc,{#10000},2,23,2,23" +locations_default(#20035,#10000,2,23,2,23) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,7,#20001,13,"set") +#20037=@"loc,{#10000},3,3,3,5" +locations_default(#20037,#10000,3,3,3,5) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,6,#20001,14,"foo") +#20039=@"loc,{#10000},3,7,3,9" +locations_default(#20039,#10000,3,7,3,9) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,15,"(") +#20041=@"loc,{#10000},3,10,3,10" +locations_default(#20041,#10000,3,10,3,10) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,6,#20001,16,"v") +#20043=@"loc,{#10000},3,11,3,11" +locations_default(#20043,#10000,3,11,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,"{") +#20047=@"loc,{#10000},3,14,3,14" +locations_default(#20047,#10000,3,14,3,14) +hasLocation(#20046,#20047) #20048=* -tokeninfo(#20048,8,#20001,2,"=") -#20049=@"loc,{#10000},1,7,1,7" -locations_default(#20049,#10000,1,7,1,7) +tokeninfo(#20048,8,#20001,19,"}") +#20049=@"loc,{#10000},3,15,3,15" +locations_default(#20049,#10000,3,15,3,15) hasLocation(#20048,#20049) #20050=* -tokeninfo(#20050,8,#20001,3,"{") -#20051=@"loc,{#10000},1,9,1,9" -locations_default(#20051,#10000,1,9,1,9) -hasLocation(#20050,#20051) -#20052=* -tokeninfo(#20052,7,#20001,4,"get") -#20053=@"loc,{#10000},2,3,2,5" -locations_default(#20053,#10000,2,3,2,5) -hasLocation(#20052,#20053) -#20054=* -tokeninfo(#20054,6,#20001,5,"foo") -hasLocation(#20054,#20015) +tokeninfo(#20050,8,#20001,20,"}") +hasLocation(#20050,#20009) +#20051=* +tokeninfo(#20051,0,#20001,21,"") +#20052=@"loc,{#10000},5,1,5,0" +locations_default(#20052,#10000,5,1,5,0) +hasLocation(#20051,#20052) +toplevels(#20001,0) +#20053=@"loc,{#10000},1,1,5,0" +locations_default(#20053,#10000,1,1,5,0) +hasLocation(#20001,#20053) +#20054=@"var;{x};{#20000}" +variables(#20054,"x",#20000) #20055=* -tokeninfo(#20055,8,#20001,6,"(") -#20056=@"loc,{#10000},2,10,2,10" -locations_default(#20056,#10000,2,10,2,10) +stmts(#20055,18,#20001,0,"var x = ... v) {}\n}") +#20056=@"loc,{#10000},1,1,4,1" +locations_default(#20056,#10000,1,1,4,1) hasLocation(#20055,#20056) +stmtContainers(#20055,#20001) #20057=* -tokeninfo(#20057,8,#20001,7,")") -#20058=@"loc,{#10000},2,11,2,11" -locations_default(#20058,#10000,2,11,2,11) +exprs(#20057,64,#20055,0,"x = {\n ... v) {}\n}") +#20058=@"loc,{#10000},1,5,4,1" +locations_default(#20058,#10000,1,5,4,1) hasLocation(#20057,#20058) +enclosingStmt(#20057,#20055) +exprContainers(#20057,#20001) #20059=* -tokeninfo(#20059,8,#20001,8,"{") -#20060=@"loc,{#10000},2,13,2,13" -locations_default(#20060,#10000,2,13,2,13) -hasLocation(#20059,#20060) -#20061=* -tokeninfo(#20061,7,#20001,9,"return") -#20062=@"loc,{#10000},2,14,2,19" -locations_default(#20062,#10000,2,14,2,19) -hasLocation(#20061,#20062) -#20063=* -tokeninfo(#20063,3,#20001,10,"1") -hasLocation(#20063,#20024) +exprs(#20059,78,#20057,0,"x") +hasLocation(#20059,#20013) +enclosingStmt(#20059,#20055) +exprContainers(#20059,#20001) +literals("x","x",#20059) +decl(#20059,#20054) +#20060=* +exprs(#20060,8,#20057,1,"{\n get ... v) {}\n}") +#20061=@"loc,{#10000},1,9,4,1" +locations_default(#20061,#10000,1,9,4,1) +hasLocation(#20060,#20061) +enclosingStmt(#20060,#20055) +exprContainers(#20060,#20001) +#20062=* +properties(#20062,#20060,0,1,"get foo() {return 1}") +#20063=@"loc,{#10000},2,3,2,22" +locations_default(#20063,#10000,2,3,2,22) +hasLocation(#20062,#20063) #20064=* -tokeninfo(#20064,8,#20001,11,"}") -#20065=@"loc,{#10000},2,22,2,22" -locations_default(#20065,#10000,2,22,2,22) -hasLocation(#20064,#20065) +exprs(#20064,0,#20062,0,"foo") +hasLocation(#20064,#20021) +enclosingStmt(#20064,#20055) +exprContainers(#20064,#20001) +literals("foo","foo",#20064) +#20065=* +exprs(#20065,9,#20062,1,"get foo() {return 1}") +hasLocation(#20065,#20063) +enclosingStmt(#20065,#20055) +exprContainers(#20065,#20001) #20066=* -tokeninfo(#20066,8,#20001,12,",") -#20067=@"loc,{#10000},2,23,2,23" -locations_default(#20067,#10000,2,23,2,23) -hasLocation(#20066,#20067) +scopes(#20066,1) +scopenodes(#20065,#20066) +scopenesting(#20066,#20000) +#20067=@"var;{arguments};{#20066}" +variables(#20067,"arguments",#20066) +isArgumentsObject(#20067) #20068=* -tokeninfo(#20068,7,#20001,13,"set") -#20069=@"loc,{#10000},3,3,3,5" -locations_default(#20069,#10000,3,3,3,5) +stmts(#20068,1,#20065,-2,"{return 1}") +#20069=@"loc,{#10000},2,13,2,22" +locations_default(#20069,#10000,2,13,2,22) hasLocation(#20068,#20069) +stmtContainers(#20068,#20065) #20070=* -tokeninfo(#20070,6,#20001,14,"foo") -hasLocation(#20070,#20028) -#20071=* -tokeninfo(#20071,8,#20001,15,"(") -#20072=@"loc,{#10000},3,10,3,10" -locations_default(#20072,#10000,3,10,3,10) -hasLocation(#20071,#20072) +stmts(#20070,9,#20068,0,"return 1") +#20071=@"loc,{#10000},2,14,2,21" +locations_default(#20071,#10000,2,14,2,21) +hasLocation(#20070,#20071) +stmtContainers(#20070,#20065) +#20072=* +exprs(#20072,3,#20070,0,"1") +hasLocation(#20072,#20031) +enclosingStmt(#20072,#20070) +exprContainers(#20072,#20065) +literals("1","1",#20072) +isMethod(#20062) #20073=* -tokeninfo(#20073,6,#20001,16,"v") -hasLocation(#20073,#20033) -#20074=* -tokeninfo(#20074,8,#20001,17,")") -#20075=@"loc,{#10000},3,12,3,12" -locations_default(#20075,#10000,3,12,3,12) -hasLocation(#20074,#20075) +properties(#20073,#20060,1,2,"set foo(v) {}") +#20074=@"loc,{#10000},3,3,3,15" +locations_default(#20074,#10000,3,3,3,15) +hasLocation(#20073,#20074) +#20075=* +exprs(#20075,0,#20073,0,"foo") +hasLocation(#20075,#20039) +enclosingStmt(#20075,#20055) +exprContainers(#20075,#20001) +literals("foo","foo",#20075) #20076=* -tokeninfo(#20076,8,#20001,18,"{") -#20077=@"loc,{#10000},3,14,3,14" -locations_default(#20077,#10000,3,14,3,14) -hasLocation(#20076,#20077) -#20078=* -tokeninfo(#20078,8,#20001,19,"}") -#20079=@"loc,{#10000},3,15,3,15" -locations_default(#20079,#10000,3,15,3,15) -hasLocation(#20078,#20079) -#20080=* -tokeninfo(#20080,8,#20001,20,"}") -hasLocation(#20080,#20044) +exprs(#20076,9,#20073,1,"set foo(v) {}") +hasLocation(#20076,#20074) +enclosingStmt(#20076,#20055) +exprContainers(#20076,#20001) +#20077=* +scopes(#20077,1) +scopenodes(#20076,#20077) +scopenesting(#20077,#20000) +#20078=@"var;{v};{#20077}" +variables(#20078,"v",#20077) +#20079=* +exprs(#20079,78,#20076,0,"v") +hasLocation(#20079,#20043) +exprContainers(#20079,#20076) +literals("v","v",#20079) +decl(#20079,#20078) +#20080=@"var;{arguments};{#20077}" +variables(#20080,"arguments",#20077) +isArgumentsObject(#20080) #20081=* -tokeninfo(#20081,0,#20001,21,"") -#20082=@"loc,{#10000},5,1,5,0" -locations_default(#20082,#10000,5,1,5,0) +stmts(#20081,1,#20076,-2,"{}") +#20082=@"loc,{#10000},3,14,3,15" +locations_default(#20082,#10000,3,14,3,15) hasLocation(#20081,#20082) +stmtContainers(#20081,#20076) +isMethod(#20073) #20083=* entry_cfg_node(#20083,#20001) #20084=@"loc,{#10000},1,1,1,0" @@ -266,44 +264,44 @@ locations_default(#20084,#10000,1,1,1,0) hasLocation(#20083,#20084) #20085=* exit_cfg_node(#20085,#20001) -hasLocation(#20085,#20082) -successor(#20004,#20008) -successor(#20010,#20014) -successor(#20029,#20025) +hasLocation(#20085,#20052) +successor(#20055,#20059) +successor(#20060,#20064) +successor(#20076,#20073) #20086=* -entry_cfg_node(#20086,#20029) +entry_cfg_node(#20086,#20076) #20087=@"loc,{#10000},3,3,3,2" locations_default(#20087,#10000,3,3,3,2) hasLocation(#20086,#20087) #20088=* -exit_cfg_node(#20088,#20029) +exit_cfg_node(#20088,#20076) #20089=@"loc,{#10000},3,16,3,15" locations_default(#20089,#10000,3,16,3,15) hasLocation(#20088,#20089) -successor(#20035,#20088) -successor(#20032,#20035) -successor(#20086,#20032) -successor(#20027,#20029) -successor(#20025,#20006) -successor(#20016,#20012) +successor(#20081,#20088) +successor(#20079,#20081) +successor(#20086,#20079) +successor(#20075,#20076) +successor(#20073,#20057) +successor(#20065,#20062) #20090=* -entry_cfg_node(#20090,#20016) +entry_cfg_node(#20090,#20065) #20091=@"loc,{#10000},2,3,2,2" locations_default(#20091,#10000,2,3,2,2) hasLocation(#20090,#20091) #20092=* -exit_cfg_node(#20092,#20016) +exit_cfg_node(#20092,#20065) #20093=@"loc,{#10000},2,23,2,22" locations_default(#20093,#10000,2,23,2,22) hasLocation(#20092,#20093) -successor(#20019,#20023) -successor(#20023,#20021) -successor(#20021,#20092) -successor(#20090,#20019) -successor(#20014,#20016) -successor(#20012,#20027) -successor(#20008,#20010) -successor(#20006,#20085) -successor(#20083,#20004) +successor(#20068,#20072) +successor(#20072,#20070) +successor(#20070,#20092) +successor(#20090,#20068) +successor(#20064,#20065) +successor(#20062,#20075) +successor(#20059,#20060) +successor(#20057,#20085) +successor(#20083,#20055) numlines(#10000,4,4,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/omitted.ts.trap b/javascript/extractor/tests/ts/output/trap/omitted.ts.trap index 9dde794a3c7..5931a6e4cac 100644 --- a/javascript/extractor/tests/ts/output/trap/omitted.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/omitted.ts.trap @@ -9,67 +9,67 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,1,7" -locations_default(#20002,#10000,1,1,1,7) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"[, ,1];") -hasLocation(#20003,#20002) -stmtContainers(#20003,#20001) -#20004=* -exprs(#20004,7,#20003,0,"[, ,1]") -#20005=@"loc,{#10000},1,1,1,6" -locations_default(#20005,#10000,1,1,1,6) -hasLocation(#20004,#20005) -enclosingStmt(#20004,#20003) -exprContainers(#20004,#20001) -#20006=* -exprs(#20006,3,#20004,2,"1") -#20007=@"loc,{#10000},1,5,1,5" -locations_default(#20007,#10000,1,5,1,5) -hasLocation(#20006,#20007) -enclosingStmt(#20006,#20003) -exprContainers(#20006,#20001) -literals("1","1",#20006) -arraySize(#20004,3) -#20008=* -lines(#20008,#20001,"[, ,1];","") -hasLocation(#20008,#20002) +#20002=* +lines(#20002,#20001,"[, ,1];","") +#20003=@"loc,{#10000},1,1,1,7" +locations_default(#20003,#10000,1,1,1,7) +hasLocation(#20002,#20003) numlines(#20001,1,1,0) -#20009=* -tokeninfo(#20009,8,#20001,0,"[") -#20010=@"loc,{#10000},1,1,1,1" -locations_default(#20010,#10000,1,1,1,1) -hasLocation(#20009,#20010) -#20011=* -tokeninfo(#20011,8,#20001,1,",") -#20012=@"loc,{#10000},1,2,1,2" -locations_default(#20012,#10000,1,2,1,2) -hasLocation(#20011,#20012) -#20013=* -tokeninfo(#20013,8,#20001,2,",") -#20014=@"loc,{#10000},1,4,1,4" -locations_default(#20014,#10000,1,4,1,4) -hasLocation(#20013,#20014) -#20015=* -tokeninfo(#20015,3,#20001,3,"1") -hasLocation(#20015,#20007) +#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,8,#20001,1,",") +#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,4,1,4" +locations_default(#20009,#10000,1,4,1,4) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,3,#20001,3,"1") +#20011=@"loc,{#10000},1,5,1,5" +locations_default(#20011,#10000,1,5,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,7,1,7" +locations_default(#20015,#10000,1,7,1,7) +hasLocation(#20014,#20015) #20016=* -tokeninfo(#20016,8,#20001,4,"]") -#20017=@"loc,{#10000},1,6,1,6" -locations_default(#20017,#10000,1,6,1,6) +tokeninfo(#20016,0,#20001,6,"") +#20017=@"loc,{#10000},1,8,1,7" +locations_default(#20017,#10000,1,8,1,7) hasLocation(#20016,#20017) +toplevels(#20001,0) +hasLocation(#20001,#20003) #20018=* -tokeninfo(#20018,8,#20001,5,";") -#20019=@"loc,{#10000},1,7,1,7" -locations_default(#20019,#10000,1,7,1,7) -hasLocation(#20018,#20019) -#20020=* -tokeninfo(#20020,0,#20001,6,"") -#20021=@"loc,{#10000},1,8,1,7" -locations_default(#20021,#10000,1,8,1,7) -hasLocation(#20020,#20021) +stmts(#20018,2,#20001,0,"[, ,1];") +hasLocation(#20018,#20003) +stmtContainers(#20018,#20001) +#20019=* +exprs(#20019,7,#20018,0,"[, ,1]") +#20020=@"loc,{#10000},1,1,1,6" +locations_default(#20020,#10000,1,1,1,6) +hasLocation(#20019,#20020) +enclosingStmt(#20019,#20018) +exprContainers(#20019,#20001) +#20021=* +exprs(#20021,3,#20019,2,"1") +hasLocation(#20021,#20011) +enclosingStmt(#20021,#20018) +exprContainers(#20021,#20001) +literals("1","1",#20021) +arraySize(#20019,3) #20022=* entry_cfg_node(#20022,#20001) #20023=@"loc,{#10000},1,1,1,0" @@ -77,10 +77,10 @@ locations_default(#20023,#10000,1,1,1,0) hasLocation(#20022,#20023) #20024=* exit_cfg_node(#20024,#20001) -hasLocation(#20024,#20021) -successor(#20003,#20004) -successor(#20004,#20006) -successor(#20006,#20024) -successor(#20022,#20003) +hasLocation(#20024,#20017) +successor(#20018,#20019) +successor(#20019,#20021) +successor(#20021,#20024) +successor(#20022,#20018) numlines(#10000,1,1,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/regexp.ts.trap b/javascript/extractor/tests/ts/output/trap/regexp.ts.trap index 004453ae01f..4257db409dd 100644 --- a/javascript/extractor/tests/ts/output/trap/regexp.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/regexp.ts.trap @@ -9,38 +9,38 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,1,3" -locations_default(#20002,#10000,1,1,1,3) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"/a/") -hasLocation(#20003,#20002) -stmtContainers(#20003,#20001) -#20004=* -exprs(#20004,5,#20003,0,"/a/") -hasLocation(#20004,#20002) -enclosingStmt(#20004,#20003) -exprContainers(#20004,#20001) -literals("/a/","/a/",#20004) -#20005=* -regexpterm(#20005,14,#20004,0,"a") -#20006=@"loc,{#10000},1,2,1,2" -locations_default(#20006,#10000,1,2,1,2) -hasLocation(#20005,#20006) -regexpConstValue(#20005,"a") -#20007=* -lines(#20007,#20001,"/a/","") -hasLocation(#20007,#20002) +#20002=* +lines(#20002,#20001,"/a/","") +#20003=@"loc,{#10000},1,1,1,3" +locations_default(#20003,#10000,1,1,1,3) +hasLocation(#20002,#20003) numlines(#20001,1,1,0) +#20004=* +tokeninfo(#20004,8,#20001,0,"/a/") +hasLocation(#20004,#20003) +#20005=* +tokeninfo(#20005,0,#20001,1,"") +#20006=@"loc,{#10000},1,4,1,3" +locations_default(#20006,#10000,1,4,1,3) +hasLocation(#20005,#20006) +toplevels(#20001,0) +hasLocation(#20001,#20003) +#20007=* +stmts(#20007,2,#20001,0,"/a/") +hasLocation(#20007,#20003) +stmtContainers(#20007,#20001) #20008=* -tokeninfo(#20008,8,#20001,0,"/a/") -hasLocation(#20008,#20002) +exprs(#20008,5,#20007,0,"/a/") +hasLocation(#20008,#20003) +enclosingStmt(#20008,#20007) +exprContainers(#20008,#20001) +literals("/a/","/a/",#20008) #20009=* -tokeninfo(#20009,0,#20001,1,"") -#20010=@"loc,{#10000},1,4,1,3" -locations_default(#20010,#10000,1,4,1,3) +regexpterm(#20009,14,#20008,0,"a") +#20010=@"loc,{#10000},1,2,1,2" +locations_default(#20010,#10000,1,2,1,2) hasLocation(#20009,#20010) +regexpConstValue(#20009,"a") #20011=* entry_cfg_node(#20011,#20001) #20012=@"loc,{#10000},1,1,1,0" @@ -48,9 +48,9 @@ locations_default(#20012,#10000,1,1,1,0) hasLocation(#20011,#20012) #20013=* exit_cfg_node(#20013,#20001) -hasLocation(#20013,#20010) -successor(#20003,#20004) -successor(#20004,#20013) -successor(#20011,#20003) +hasLocation(#20013,#20006) +successor(#20007,#20008) +successor(#20008,#20013) +successor(#20011,#20007) numlines(#10000,1,1,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/templates.ts.trap b/javascript/extractor/tests/ts/output/trap/templates.ts.trap index 70ff6007831..79202424d36 100644 --- a/javascript/extractor/tests/ts/output/trap/templates.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/templates.ts.trap @@ -9,117 +9,117 @@ 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,"`url(""$ ... age}"")`") -#20004=@"loc,{#10000},1,1,1,30" -locations_default(#20004,#10000,1,1,1,30) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,71,#20003,0,"`url(""$ ... age}"")`") -hasLocation(#20005,#20004) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -#20006=* -exprs(#20006,72,#20005,0,"url(""") -#20007=@"loc,{#10000},1,2,1,6" -locations_default(#20007,#10000,1,2,1,6) -hasLocation(#20006,#20007) -enclosingStmt(#20006,#20003) -exprContainers(#20006,#20001) -literals("url(""","url(""",#20006) -#20008=* -exprs(#20008,14,#20005,1,"ctx.expected.image") -#20009=@"loc,{#10000},1,9,1,26" -locations_default(#20009,#10000,1,9,1,26) -hasLocation(#20008,#20009) -enclosingStmt(#20008,#20003) -exprContainers(#20008,#20001) -#20010=* -exprs(#20010,14,#20008,0,"ctx.expected") -#20011=@"loc,{#10000},1,9,1,20" -locations_default(#20011,#10000,1,9,1,20) -hasLocation(#20010,#20011) -enclosingStmt(#20010,#20003) -exprContainers(#20010,#20001) -#20012=* -exprs(#20012,79,#20010,0,"ctx") -#20013=@"loc,{#10000},1,9,1,11" -locations_default(#20013,#10000,1,9,1,11) -hasLocation(#20012,#20013) -enclosingStmt(#20012,#20003) -exprContainers(#20012,#20001) -literals("ctx","ctx",#20012) -#20014=@"var;{ctx};{#20000}" -variables(#20014,"ctx",#20000) -bind(#20012,#20014) -#20015=* -exprs(#20015,0,#20010,1,"expected") -#20016=@"loc,{#10000},1,13,1,20" -locations_default(#20016,#10000,1,13,1,20) -hasLocation(#20015,#20016) -enclosingStmt(#20015,#20003) -exprContainers(#20015,#20001) -literals("expected","expected",#20015) -#20017=* -exprs(#20017,0,#20008,1,"image") -#20018=@"loc,{#10000},1,22,1,26" -locations_default(#20018,#10000,1,22,1,26) -hasLocation(#20017,#20018) -enclosingStmt(#20017,#20003) -exprContainers(#20017,#20001) -literals("image","image",#20017) -#20019=* -exprs(#20019,72,#20005,2,""")") -#20020=@"loc,{#10000},1,28,1,29" -locations_default(#20020,#10000,1,28,1,29) -hasLocation(#20019,#20020) -enclosingStmt(#20019,#20003) -exprContainers(#20019,#20001) -literals(""")",""")",#20019) -#20021=* -lines(#20021,#20001,"`url(""${ctx.expected.image}"")`"," +#20002=* +lines(#20002,#20001,"`url(""${ctx.expected.image}"")`"," ") -hasLocation(#20021,#20004) +#20003=@"loc,{#10000},1,1,1,30" +locations_default(#20003,#10000,1,1,1,30) +hasLocation(#20002,#20003) numlines(#20001,1,1,0) +#20004=* +tokeninfo(#20004,4,#20001,0,"`url(""${") +#20005=@"loc,{#10000},1,1,1,8" +locations_default(#20005,#10000,1,1,1,8) +hasLocation(#20004,#20005) +#20006=* +tokeninfo(#20006,6,#20001,1,"ctx") +#20007=@"loc,{#10000},1,9,1,11" +locations_default(#20007,#10000,1,9,1,11) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,8,#20001,2,".") +#20009=@"loc,{#10000},1,12,1,12" +locations_default(#20009,#10000,1,12,1,12) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,6,#20001,3,"expected") +#20011=@"loc,{#10000},1,13,1,20" +locations_default(#20011,#10000,1,13,1,20) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,8,#20001,4,".") +#20013=@"loc,{#10000},1,21,1,21" +locations_default(#20013,#10000,1,21,1,21) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,6,#20001,5,"image") +#20015=@"loc,{#10000},1,22,1,26" +locations_default(#20015,#10000,1,22,1,26) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,6,"}"")`") +#20017=@"loc,{#10000},1,27,1,30" +locations_default(#20017,#10000,1,27,1,30) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,0,#20001,7,"") +#20019=@"loc,{#10000},2,1,2,0" +locations_default(#20019,#10000,2,1,2,0) +hasLocation(#20018,#20019) +toplevels(#20001,0) +#20020=@"loc,{#10000},1,1,2,0" +locations_default(#20020,#10000,1,1,2,0) +hasLocation(#20001,#20020) +#20021=* +stmts(#20021,2,#20001,0,"`url(""$ ... age}"")`") +hasLocation(#20021,#20003) +stmtContainers(#20021,#20001) #20022=* -tokeninfo(#20022,4,#20001,0,"`url(""${") -#20023=@"loc,{#10000},1,1,1,8" -locations_default(#20023,#10000,1,1,1,8) -hasLocation(#20022,#20023) -#20024=* -tokeninfo(#20024,6,#20001,1,"ctx") -hasLocation(#20024,#20013) +exprs(#20022,71,#20021,0,"`url(""$ ... age}"")`") +hasLocation(#20022,#20003) +enclosingStmt(#20022,#20021) +exprContainers(#20022,#20001) +#20023=* +exprs(#20023,72,#20022,0,"url(""") +#20024=@"loc,{#10000},1,2,1,6" +locations_default(#20024,#10000,1,2,1,6) +hasLocation(#20023,#20024) +enclosingStmt(#20023,#20021) +exprContainers(#20023,#20001) +literals("url(""","url(""",#20023) #20025=* -tokeninfo(#20025,8,#20001,2,".") -#20026=@"loc,{#10000},1,12,1,12" -locations_default(#20026,#10000,1,12,1,12) +exprs(#20025,14,#20022,1,"ctx.expected.image") +#20026=@"loc,{#10000},1,9,1,26" +locations_default(#20026,#10000,1,9,1,26) hasLocation(#20025,#20026) +enclosingStmt(#20025,#20021) +exprContainers(#20025,#20001) #20027=* -tokeninfo(#20027,6,#20001,3,"expected") -hasLocation(#20027,#20016) -#20028=* -tokeninfo(#20028,8,#20001,4,".") -#20029=@"loc,{#10000},1,21,1,21" -locations_default(#20029,#10000,1,21,1,21) -hasLocation(#20028,#20029) -#20030=* -tokeninfo(#20030,6,#20001,5,"image") -hasLocation(#20030,#20018) +exprs(#20027,14,#20025,0,"ctx.expected") +#20028=@"loc,{#10000},1,9,1,20" +locations_default(#20028,#10000,1,9,1,20) +hasLocation(#20027,#20028) +enclosingStmt(#20027,#20021) +exprContainers(#20027,#20001) +#20029=* +exprs(#20029,79,#20027,0,"ctx") +hasLocation(#20029,#20007) +enclosingStmt(#20029,#20021) +exprContainers(#20029,#20001) +literals("ctx","ctx",#20029) +#20030=@"var;{ctx};{#20000}" +variables(#20030,"ctx",#20000) +bind(#20029,#20030) #20031=* -tokeninfo(#20031,8,#20001,6,"}"")`") -#20032=@"loc,{#10000},1,27,1,30" -locations_default(#20032,#10000,1,27,1,30) -hasLocation(#20031,#20032) +exprs(#20031,0,#20027,1,"expected") +hasLocation(#20031,#20011) +enclosingStmt(#20031,#20021) +exprContainers(#20031,#20001) +literals("expected","expected",#20031) +#20032=* +exprs(#20032,0,#20025,1,"image") +hasLocation(#20032,#20015) +enclosingStmt(#20032,#20021) +exprContainers(#20032,#20001) +literals("image","image",#20032) #20033=* -tokeninfo(#20033,0,#20001,7,"") -#20034=@"loc,{#10000},2,1,2,0" -locations_default(#20034,#10000,2,1,2,0) +exprs(#20033,72,#20022,2,""")") +#20034=@"loc,{#10000},1,28,1,29" +locations_default(#20034,#10000,1,28,1,29) hasLocation(#20033,#20034) +enclosingStmt(#20033,#20021) +exprContainers(#20033,#20001) +literals(""")",""")",#20033) #20035=* entry_cfg_node(#20035,#20001) #20036=@"loc,{#10000},1,1,1,0" @@ -127,16 +127,16 @@ locations_default(#20036,#10000,1,1,1,0) hasLocation(#20035,#20036) #20037=* exit_cfg_node(#20037,#20001) -hasLocation(#20037,#20034) -successor(#20003,#20005) -successor(#20005,#20006) -successor(#20019,#20037) -successor(#20017,#20008) -successor(#20015,#20010) -successor(#20012,#20015) -successor(#20010,#20017) -successor(#20008,#20019) -successor(#20006,#20012) -successor(#20035,#20003) +hasLocation(#20037,#20019) +successor(#20021,#20022) +successor(#20022,#20023) +successor(#20033,#20037) +successor(#20032,#20025) +successor(#20031,#20027) +successor(#20029,#20031) +successor(#20027,#20032) +successor(#20025,#20033) +successor(#20023,#20029) +successor(#20035,#20021) numlines(#10000,1,1,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/thisparameter.ts.trap b/javascript/extractor/tests/ts/output/trap/thisparameter.ts.trap index a9f7715442d..52902ec3e75 100644 --- a/javascript/extractor/tests/ts/output/trap/thisparameter.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/thisparameter.ts.trap @@ -9,683 +9,677 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,15,0" -locations_default(#20002,#10000,1,1,15,0) -hasLocation(#20001,#20002) -#20003=@"var;{declaration};{#20000}" -variables(#20003,"declaration",#20000) -#20004=@"var;{f};{#20000}" -variables(#20004,"f",#20000) -#20005=@"var;{C};{#20000}" -variables(#20005,"C",#20000) -#20006=@"local_type_name;{C};{#20000}" -local_type_names(#20006,"C",#20000) -#20007=@"local_type_name;{I};{#20000}" -local_type_names(#20007,"I",#20000) +#20002=* +lines(#20002,#20001,"function declaration(this: void, x: number) {}"," +") +#20003=@"loc,{#10000},1,1,1,46" +locations_default(#20003,#10000,1,1,1,46) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,""," +") +#20005=@"loc,{#10000},2,1,2,0" +locations_default(#20005,#10000,2,1,2,0) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"var f = function(this: string, x: number) {}"," +") +#20007=@"loc,{#10000},3,1,3,44" +locations_default(#20007,#10000,3,1,3,44) +hasLocation(#20006,#20007) #20008=* -stmts(#20008,17,#20001,0,"functio ... ber) {}") -#20009=@"loc,{#10000},1,1,1,46" -locations_default(#20009,#10000,1,1,1,46) +lines(#20008,#20001,""," +") +#20009=@"loc,{#10000},4,1,4,0" +locations_default(#20009,#10000,4,1,4,0) hasLocation(#20008,#20009) -stmtContainers(#20008,#20001) #20010=* -exprs(#20010,78,#20008,-1,"declaration") -#20011=@"loc,{#10000},1,10,1,20" -locations_default(#20011,#10000,1,10,1,20) +lines(#20010,#20001,"declare function ambient(this: string, x: number);"," +") +#20011=@"loc,{#10000},5,1,5,50" +locations_default(#20011,#10000,5,1,5,50) hasLocation(#20010,#20011) -exprContainers(#20010,#20008) -literals("declaration","declaration",#20010) -decl(#20010,#20003) #20012=* -scopes(#20012,1) -scopenodes(#20008,#20012) -scopenesting(#20012,#20000) -#20013=@"var;{x};{#20012}" -variables(#20013,"x",#20012) +lines(#20012,#20001,""," +") +#20013=@"loc,{#10000},6,1,6,0" +locations_default(#20013,#10000,6,1,6,0) +hasLocation(#20012,#20013) #20014=* -exprs(#20014,78,#20008,0,"x") -#20015=@"loc,{#10000},1,34,1,34" -locations_default(#20015,#10000,1,34,1,34) +lines(#20014,#20001,"class C {"," +") +#20015=@"loc,{#10000},7,1,7,9" +locations_default(#20015,#10000,7,1,7,9) hasLocation(#20014,#20015) -exprContainers(#20014,#20008) -literals("x","x",#20014) -decl(#20014,#20013) -#20016=@"var;{arguments};{#20012}" -variables(#20016,"arguments",#20012) -isArgumentsObject(#20016) -#20017=* -typeexprs(#20017,2,#20008,-4,"void") -#20018=@"loc,{#10000},1,28,1,31" -locations_default(#20018,#10000,1,28,1,31) -hasLocation(#20017,#20018) -exprContainers(#20017,#20008) -literals("void","void",#20017) -#20019=* -typeexprs(#20019,2,#20008,-6,"number") -#20020=@"loc,{#10000},1,37,1,42" -locations_default(#20020,#10000,1,37,1,42) -hasLocation(#20019,#20020) -exprContainers(#20019,#20008) -literals("number","number",#20019) -#20021=* -stmts(#20021,1,#20008,-2,"{}") -#20022=@"loc,{#10000},1,45,1,46" -locations_default(#20022,#10000,1,45,1,46) -hasLocation(#20021,#20022) -stmtContainers(#20021,#20008) -numlines(#20008,1,1,0) -#20023=* -stmts(#20023,18,#20001,1,"var f = ... ber) {}") -#20024=@"loc,{#10000},3,1,3,44" -locations_default(#20024,#10000,3,1,3,44) -hasLocation(#20023,#20024) -stmtContainers(#20023,#20001) -#20025=* -exprs(#20025,64,#20023,0,"f = fun ... ber) {}") -#20026=@"loc,{#10000},3,5,3,44" -locations_default(#20026,#10000,3,5,3,44) -hasLocation(#20025,#20026) -enclosingStmt(#20025,#20023) -exprContainers(#20025,#20001) -#20027=* -exprs(#20027,78,#20025,0,"f") -#20028=@"loc,{#10000},3,5,3,5" -locations_default(#20028,#10000,3,5,3,5) -hasLocation(#20027,#20028) -enclosingStmt(#20027,#20023) -exprContainers(#20027,#20001) -literals("f","f",#20027) -decl(#20027,#20004) -#20029=* -exprs(#20029,9,#20025,1,"functio ... ber) {}") -#20030=@"loc,{#10000},3,9,3,44" -locations_default(#20030,#10000,3,9,3,44) -hasLocation(#20029,#20030) -enclosingStmt(#20029,#20023) -exprContainers(#20029,#20001) -#20031=* -scopes(#20031,1) -scopenodes(#20029,#20031) -scopenesting(#20031,#20000) -#20032=@"var;{x};{#20031}" -variables(#20032,"x",#20031) -#20033=* -exprs(#20033,78,#20029,0,"x") -#20034=@"loc,{#10000},3,32,3,32" -locations_default(#20034,#10000,3,32,3,32) -hasLocation(#20033,#20034) -exprContainers(#20033,#20029) -literals("x","x",#20033) -decl(#20033,#20032) -#20035=@"var;{arguments};{#20031}" -variables(#20035,"arguments",#20031) -isArgumentsObject(#20035) +#20016=* +lines(#20016,#20001," member(this: C) {}"," +") +#20017=@"loc,{#10000},8,1,8,20" +locations_default(#20017,#10000,8,1,8,20) +hasLocation(#20016,#20017) +indentation(#10000,8," ",2) +#20018=* +lines(#20018,#20001,"}"," +") +#20019=@"loc,{#10000},9,1,9,1" +locations_default(#20019,#10000,9,1,9,1) +hasLocation(#20018,#20019) +#20020=* +lines(#20020,#20001,""," +") +#20021=@"loc,{#10000},10,1,10,0" +locations_default(#20021,#10000,10,1,10,0) +hasLocation(#20020,#20021) +#20022=* +lines(#20022,#20001,"interface I {"," +") +#20023=@"loc,{#10000},11,1,11,13" +locations_default(#20023,#10000,11,1,11,13) +hasLocation(#20022,#20023) +#20024=* +lines(#20024,#20001," method(this: I);"," +") +#20025=@"loc,{#10000},12,1,12,18" +locations_default(#20025,#10000,12,1,12,18) +hasLocation(#20024,#20025) +indentation(#10000,12," ",2) +#20026=* +lines(#20026,#20001,"}"," +") +#20027=@"loc,{#10000},13,1,13,1" +locations_default(#20027,#10000,13,1,13,1) +hasLocation(#20026,#20027) +#20028=* +lines(#20028,#20001,""," +") +#20029=@"loc,{#10000},14,1,14,0" +locations_default(#20029,#10000,14,1,14,0) +hasLocation(#20028,#20029) +numlines(#20001,14,9,0) +#20030=* +tokeninfo(#20030,7,#20001,0,"function") +#20031=@"loc,{#10000},1,1,1,8" +locations_default(#20031,#10000,1,1,1,8) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,6,#20001,1,"declaration") +#20033=@"loc,{#10000},1,10,1,20" +locations_default(#20033,#10000,1,10,1,20) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,2,"(") +#20035=@"loc,{#10000},1,21,1,21" +locations_default(#20035,#10000,1,21,1,21) +hasLocation(#20034,#20035) #20036=* -typeexprs(#20036,2,#20029,-4,"string") -#20037=@"loc,{#10000},3,24,3,29" -locations_default(#20037,#10000,3,24,3,29) +tokeninfo(#20036,7,#20001,3,"this") +#20037=@"loc,{#10000},1,22,1,25" +locations_default(#20037,#10000,1,22,1,25) hasLocation(#20036,#20037) -exprContainers(#20036,#20029) -literals("string","string",#20036) #20038=* -typeexprs(#20038,2,#20029,-6,"number") -#20039=@"loc,{#10000},3,35,3,40" -locations_default(#20039,#10000,3,35,3,40) +tokeninfo(#20038,8,#20001,4,":") +#20039=@"loc,{#10000},1,26,1,26" +locations_default(#20039,#10000,1,26,1,26) hasLocation(#20038,#20039) -exprContainers(#20038,#20029) -literals("number","number",#20038) #20040=* -stmts(#20040,1,#20029,-2,"{}") -#20041=@"loc,{#10000},3,43,3,44" -locations_default(#20041,#10000,3,43,3,44) +tokeninfo(#20040,7,#20001,5,"void") +#20041=@"loc,{#10000},1,28,1,31" +locations_default(#20041,#10000,1,28,1,31) hasLocation(#20040,#20041) -stmtContainers(#20040,#20029) -numlines(#20029,1,1,0) #20042=* -stmts(#20042,17,#20001,2,"declare ... umber);") -#20043=@"loc,{#10000},5,1,5,50" -locations_default(#20043,#10000,5,1,5,50) +tokeninfo(#20042,8,#20001,6,",") +#20043=@"loc,{#10000},1,32,1,32" +locations_default(#20043,#10000,1,32,1,32) hasLocation(#20042,#20043) -stmtContainers(#20042,#20001) -hasDeclareKeyword(#20042) #20044=* -exprs(#20044,78,#20042,-1,"ambient") -#20045=@"loc,{#10000},5,18,5,24" -locations_default(#20045,#10000,5,18,5,24) +tokeninfo(#20044,6,#20001,7,"x") +#20045=@"loc,{#10000},1,34,1,34" +locations_default(#20045,#10000,1,34,1,34) hasLocation(#20044,#20045) -exprContainers(#20044,#20042) -literals("ambient","ambient",#20044) -#20046=@"var;{ambient};{#20000}" -variables(#20046,"ambient",#20000) -decl(#20044,#20046) -#20047=* -scopes(#20047,1) -scopenodes(#20042,#20047) -scopenesting(#20047,#20000) -#20048=@"var;{x};{#20047}" -variables(#20048,"x",#20047) -#20049=* -exprs(#20049,78,#20042,0,"x") -#20050=@"loc,{#10000},5,40,5,40" -locations_default(#20050,#10000,5,40,5,40) -hasLocation(#20049,#20050) -exprContainers(#20049,#20042) -literals("x","x",#20049) -decl(#20049,#20048) -#20051=@"var;{arguments};{#20047}" -variables(#20051,"arguments",#20047) -isArgumentsObject(#20051) +#20046=* +tokeninfo(#20046,8,#20001,8,":") +#20047=@"loc,{#10000},1,35,1,35" +locations_default(#20047,#10000,1,35,1,35) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,7,#20001,9,"number") +#20049=@"loc,{#10000},1,37,1,42" +locations_default(#20049,#10000,1,37,1,42) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,10,")") +#20051=@"loc,{#10000},1,43,1,43" +locations_default(#20051,#10000,1,43,1,43) +hasLocation(#20050,#20051) #20052=* -typeexprs(#20052,2,#20042,-4,"string") -#20053=@"loc,{#10000},5,32,5,37" -locations_default(#20053,#10000,5,32,5,37) +tokeninfo(#20052,8,#20001,11,"{") +#20053=@"loc,{#10000},1,45,1,45" +locations_default(#20053,#10000,1,45,1,45) hasLocation(#20052,#20053) -exprContainers(#20052,#20042) -literals("string","string",#20052) #20054=* -typeexprs(#20054,2,#20042,-6,"number") -#20055=@"loc,{#10000},5,43,5,48" -locations_default(#20055,#10000,5,43,5,48) +tokeninfo(#20054,8,#20001,12,"}") +#20055=@"loc,{#10000},1,46,1,46" +locations_default(#20055,#10000,1,46,1,46) hasLocation(#20054,#20055) -exprContainers(#20054,#20042) -literals("number","number",#20054) -numlines(#20042,1,1,0) #20056=* -stmts(#20056,26,#20001,3,"class C ... C) {}\n}") -#20057=@"loc,{#10000},7,1,9,1" -locations_default(#20057,#10000,7,1,9,1) +tokeninfo(#20056,7,#20001,13,"var") +#20057=@"loc,{#10000},3,1,3,3" +locations_default(#20057,#10000,3,1,3,3) hasLocation(#20056,#20057) -stmtContainers(#20056,#20001) #20058=* -exprs(#20058,78,#20056,0,"C") -#20059=@"loc,{#10000},7,7,7,7" -locations_default(#20059,#10000,7,7,7,7) +tokeninfo(#20058,6,#20001,14,"f") +#20059=@"loc,{#10000},3,5,3,5" +locations_default(#20059,#10000,3,5,3,5) hasLocation(#20058,#20059) -enclosingStmt(#20058,#20056) -exprContainers(#20058,#20001) -literals("C","C",#20058) -decl(#20058,#20005) -typedecl(#20058,#20006) #20060=* -scopes(#20060,10) -scopenodes(#20056,#20060) -scopenesting(#20060,#20000) -#20061=* -properties(#20061,#20056,2,0,"member(this: C) {}") -#20062=@"loc,{#10000},8,3,8,20" -locations_default(#20062,#10000,8,3,8,20) -hasLocation(#20061,#20062) -#20063=* -exprs(#20063,0,#20061,0,"member") -#20064=@"loc,{#10000},8,3,8,8" -locations_default(#20064,#10000,8,3,8,8) -hasLocation(#20063,#20064) -enclosingStmt(#20063,#20056) -exprContainers(#20063,#20001) -literals("member","member",#20063) -#20065=* -exprs(#20065,9,#20061,1,"member(this: C) {}") -hasLocation(#20065,#20062) -enclosingStmt(#20065,#20056) -exprContainers(#20065,#20001) +tokeninfo(#20060,8,#20001,15,"=") +#20061=@"loc,{#10000},3,7,3,7" +locations_default(#20061,#10000,3,7,3,7) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,7,#20001,16,"function") +#20063=@"loc,{#10000},3,9,3,16" +locations_default(#20063,#10000,3,9,3,16) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,8,#20001,17,"(") +#20065=@"loc,{#10000},3,17,3,17" +locations_default(#20065,#10000,3,17,3,17) +hasLocation(#20064,#20065) #20066=* -scopes(#20066,1) -scopenodes(#20065,#20066) -scopenesting(#20066,#20060) -#20067=@"var;{arguments};{#20066}" -variables(#20067,"arguments",#20066) -isArgumentsObject(#20067) +tokeninfo(#20066,7,#20001,18,"this") +#20067=@"loc,{#10000},3,18,3,21" +locations_default(#20067,#10000,3,18,3,21) +hasLocation(#20066,#20067) #20068=* -stmts(#20068,1,#20065,-2,"{}") -#20069=@"loc,{#10000},8,19,8,20" -locations_default(#20069,#10000,8,19,8,20) +tokeninfo(#20068,8,#20001,19,":") +#20069=@"loc,{#10000},3,22,3,22" +locations_default(#20069,#10000,3,22,3,22) hasLocation(#20068,#20069) -stmtContainers(#20068,#20065) -numlines(#20065,1,1,0) -isMethod(#20061) #20070=* -properties(#20070,#20056,3,0,"constructor() {}") -#20071=@"loc,{#10000},7,9,7,8" -locations_default(#20071,#10000,7,9,7,8) +tokeninfo(#20070,7,#20001,20,"string") +#20071=@"loc,{#10000},3,24,3,29" +locations_default(#20071,#10000,3,24,3,29) hasLocation(#20070,#20071) #20072=* -exprs(#20072,0,#20070,0,"constructor") -hasLocation(#20072,#20071) -enclosingStmt(#20072,#20056) -exprContainers(#20072,#20001) -literals("constructor","constructor",#20072) -#20073=* -exprs(#20073,9,#20070,1,"() {}") -hasLocation(#20073,#20071) -enclosingStmt(#20073,#20056) -exprContainers(#20073,#20001) +tokeninfo(#20072,8,#20001,21,",") +#20073=@"loc,{#10000},3,30,3,30" +locations_default(#20073,#10000,3,30,3,30) +hasLocation(#20072,#20073) #20074=* -scopes(#20074,1) -scopenodes(#20073,#20074) -scopenesting(#20074,#20060) -#20075=@"var;{arguments};{#20074}" -variables(#20075,"arguments",#20074) -isArgumentsObject(#20075) +tokeninfo(#20074,6,#20001,22,"x") +#20075=@"loc,{#10000},3,32,3,32" +locations_default(#20075,#10000,3,32,3,32) +hasLocation(#20074,#20075) #20076=* -stmts(#20076,1,#20073,-2,"{}") -hasLocation(#20076,#20071) -stmtContainers(#20076,#20073) -numlines(#20073,1,0,0) -isMethod(#20070) -#20077=* -stmts(#20077,34,#20001,4,"interfa ... : I);\n}") -#20078=@"loc,{#10000},11,1,13,1" -locations_default(#20078,#10000,11,1,13,1) -hasLocation(#20077,#20078) -stmtContainers(#20077,#20001) -#20079=* -typeexprs(#20079,1,#20077,0,"I") -#20080=@"loc,{#10000},11,11,11,11" -locations_default(#20080,#10000,11,11,11,11) -hasLocation(#20079,#20080) -enclosingStmt(#20079,#20077) -exprContainers(#20079,#20001) -literals("I","I",#20079) -typedecl(#20079,#20007) -#20081=* -properties(#20081,#20077,2,0,"method(this: I);") -#20082=@"loc,{#10000},12,3,12,18" -locations_default(#20082,#10000,12,3,12,18) -hasLocation(#20081,#20082) -#20083=* -exprs(#20083,0,#20081,0,"method") -#20084=@"loc,{#10000},12,3,12,8" -locations_default(#20084,#10000,12,3,12,8) -hasLocation(#20083,#20084) -enclosingStmt(#20083,#20077) -exprContainers(#20083,#20001) -literals("method","method",#20083) -#20085=* -exprs(#20085,9,#20081,1,"method(this: I);") -hasLocation(#20085,#20082) -enclosingStmt(#20085,#20077) -exprContainers(#20085,#20001) +tokeninfo(#20076,8,#20001,23,":") +#20077=@"loc,{#10000},3,33,3,33" +locations_default(#20077,#10000,3,33,3,33) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,7,#20001,24,"number") +#20079=@"loc,{#10000},3,35,3,40" +locations_default(#20079,#10000,3,35,3,40) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,8,#20001,25,")") +#20081=@"loc,{#10000},3,41,3,41" +locations_default(#20081,#10000,3,41,3,41) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,8,#20001,26,"{") +#20083=@"loc,{#10000},3,43,3,43" +locations_default(#20083,#10000,3,43,3,43) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,8,#20001,27,"}") +#20085=@"loc,{#10000},3,44,3,44" +locations_default(#20085,#10000,3,44,3,44) +hasLocation(#20084,#20085) #20086=* -scopes(#20086,1) -scopenodes(#20085,#20086) -scopenesting(#20086,#20000) -#20087=@"var;{arguments};{#20086}" -variables(#20087,"arguments",#20086) -isArgumentsObject(#20087) -numlines(#20085,1,1,0) -isMethod(#20081) -isAbstractMember(#20081) +tokeninfo(#20086,7,#20001,28,"declare") +#20087=@"loc,{#10000},5,1,5,7" +locations_default(#20087,#10000,5,1,5,7) +hasLocation(#20086,#20087) #20088=* -lines(#20088,#20001,"function declaration(this: void, x: number) {}"," -") -hasLocation(#20088,#20009) -#20089=* -lines(#20089,#20001,""," -") -#20090=@"loc,{#10000},2,1,2,0" -locations_default(#20090,#10000,2,1,2,0) -hasLocation(#20089,#20090) -#20091=* -lines(#20091,#20001,"var f = function(this: string, x: number) {}"," -") -hasLocation(#20091,#20024) +tokeninfo(#20088,7,#20001,29,"function") +#20089=@"loc,{#10000},5,9,5,16" +locations_default(#20089,#10000,5,9,5,16) +hasLocation(#20088,#20089) +#20090=* +tokeninfo(#20090,6,#20001,30,"ambient") +#20091=@"loc,{#10000},5,18,5,24" +locations_default(#20091,#10000,5,18,5,24) +hasLocation(#20090,#20091) #20092=* -lines(#20092,#20001,""," -") -#20093=@"loc,{#10000},4,1,4,0" -locations_default(#20093,#10000,4,1,4,0) +tokeninfo(#20092,8,#20001,31,"(") +#20093=@"loc,{#10000},5,25,5,25" +locations_default(#20093,#10000,5,25,5,25) hasLocation(#20092,#20093) #20094=* -lines(#20094,#20001,"declare function ambient(this: string, x: number);"," -") -hasLocation(#20094,#20043) -#20095=* -lines(#20095,#20001,""," -") -#20096=@"loc,{#10000},6,1,6,0" -locations_default(#20096,#10000,6,1,6,0) -hasLocation(#20095,#20096) -#20097=* -lines(#20097,#20001,"class C {"," -") -#20098=@"loc,{#10000},7,1,7,9" -locations_default(#20098,#10000,7,1,7,9) -hasLocation(#20097,#20098) -#20099=* -lines(#20099,#20001," member(this: C) {}"," -") -#20100=@"loc,{#10000},8,1,8,20" -locations_default(#20100,#10000,8,1,8,20) -hasLocation(#20099,#20100) -indentation(#10000,8," ",2) -#20101=* -lines(#20101,#20001,"}"," -") -#20102=@"loc,{#10000},9,1,9,1" -locations_default(#20102,#10000,9,1,9,1) -hasLocation(#20101,#20102) -#20103=* -lines(#20103,#20001,""," -") -#20104=@"loc,{#10000},10,1,10,0" -locations_default(#20104,#10000,10,1,10,0) -hasLocation(#20103,#20104) -#20105=* -lines(#20105,#20001,"interface I {"," -") -#20106=@"loc,{#10000},11,1,11,13" -locations_default(#20106,#10000,11,1,11,13) -hasLocation(#20105,#20106) -#20107=* -lines(#20107,#20001," method(this: I);"," -") -#20108=@"loc,{#10000},12,1,12,18" -locations_default(#20108,#10000,12,1,12,18) -hasLocation(#20107,#20108) -indentation(#10000,12," ",2) -#20109=* -lines(#20109,#20001,"}"," -") -#20110=@"loc,{#10000},13,1,13,1" -locations_default(#20110,#10000,13,1,13,1) -hasLocation(#20109,#20110) -#20111=* -lines(#20111,#20001,""," -") -#20112=@"loc,{#10000},14,1,14,0" -locations_default(#20112,#10000,14,1,14,0) -hasLocation(#20111,#20112) -numlines(#20001,14,9,0) -#20113=* -tokeninfo(#20113,7,#20001,0,"function") -#20114=@"loc,{#10000},1,1,1,8" -locations_default(#20114,#10000,1,1,1,8) -hasLocation(#20113,#20114) -#20115=* -tokeninfo(#20115,6,#20001,1,"declaration") -hasLocation(#20115,#20011) +tokeninfo(#20094,7,#20001,32,"this") +#20095=@"loc,{#10000},5,26,5,29" +locations_default(#20095,#10000,5,26,5,29) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,8,#20001,33,":") +#20097=@"loc,{#10000},5,30,5,30" +locations_default(#20097,#10000,5,30,5,30) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,7,#20001,34,"string") +#20099=@"loc,{#10000},5,32,5,37" +locations_default(#20099,#10000,5,32,5,37) +hasLocation(#20098,#20099) +#20100=* +tokeninfo(#20100,8,#20001,35,",") +#20101=@"loc,{#10000},5,38,5,38" +locations_default(#20101,#10000,5,38,5,38) +hasLocation(#20100,#20101) +#20102=* +tokeninfo(#20102,6,#20001,36,"x") +#20103=@"loc,{#10000},5,40,5,40" +locations_default(#20103,#10000,5,40,5,40) +hasLocation(#20102,#20103) +#20104=* +tokeninfo(#20104,8,#20001,37,":") +#20105=@"loc,{#10000},5,41,5,41" +locations_default(#20105,#10000,5,41,5,41) +hasLocation(#20104,#20105) +#20106=* +tokeninfo(#20106,7,#20001,38,"number") +#20107=@"loc,{#10000},5,43,5,48" +locations_default(#20107,#10000,5,43,5,48) +hasLocation(#20106,#20107) +#20108=* +tokeninfo(#20108,8,#20001,39,")") +#20109=@"loc,{#10000},5,49,5,49" +locations_default(#20109,#10000,5,49,5,49) +hasLocation(#20108,#20109) +#20110=* +tokeninfo(#20110,8,#20001,40,";") +#20111=@"loc,{#10000},5,50,5,50" +locations_default(#20111,#10000,5,50,5,50) +hasLocation(#20110,#20111) +#20112=* +tokeninfo(#20112,7,#20001,41,"class") +#20113=@"loc,{#10000},7,1,7,5" +locations_default(#20113,#10000,7,1,7,5) +hasLocation(#20112,#20113) +#20114=* +tokeninfo(#20114,6,#20001,42,"C") +#20115=@"loc,{#10000},7,7,7,7" +locations_default(#20115,#10000,7,7,7,7) +hasLocation(#20114,#20115) #20116=* -tokeninfo(#20116,8,#20001,2,"(") -#20117=@"loc,{#10000},1,21,1,21" -locations_default(#20117,#10000,1,21,1,21) +tokeninfo(#20116,8,#20001,43,"{") +#20117=@"loc,{#10000},7,9,7,9" +locations_default(#20117,#10000,7,9,7,9) hasLocation(#20116,#20117) #20118=* -tokeninfo(#20118,7,#20001,3,"this") -#20119=@"loc,{#10000},1,22,1,25" -locations_default(#20119,#10000,1,22,1,25) +tokeninfo(#20118,6,#20001,44,"member") +#20119=@"loc,{#10000},8,3,8,8" +locations_default(#20119,#10000,8,3,8,8) hasLocation(#20118,#20119) #20120=* -tokeninfo(#20120,8,#20001,4,":") -#20121=@"loc,{#10000},1,26,1,26" -locations_default(#20121,#10000,1,26,1,26) +tokeninfo(#20120,8,#20001,45,"(") +#20121=@"loc,{#10000},8,9,8,9" +locations_default(#20121,#10000,8,9,8,9) hasLocation(#20120,#20121) #20122=* -tokeninfo(#20122,7,#20001,5,"void") -hasLocation(#20122,#20018) -#20123=* -tokeninfo(#20123,8,#20001,6,",") -#20124=@"loc,{#10000},1,32,1,32" -locations_default(#20124,#10000,1,32,1,32) -hasLocation(#20123,#20124) -#20125=* -tokeninfo(#20125,6,#20001,7,"x") -hasLocation(#20125,#20015) +tokeninfo(#20122,7,#20001,46,"this") +#20123=@"loc,{#10000},8,10,8,13" +locations_default(#20123,#10000,8,10,8,13) +hasLocation(#20122,#20123) +#20124=* +tokeninfo(#20124,8,#20001,47,":") +#20125=@"loc,{#10000},8,14,8,14" +locations_default(#20125,#10000,8,14,8,14) +hasLocation(#20124,#20125) #20126=* -tokeninfo(#20126,8,#20001,8,":") -#20127=@"loc,{#10000},1,35,1,35" -locations_default(#20127,#10000,1,35,1,35) +tokeninfo(#20126,6,#20001,48,"C") +#20127=@"loc,{#10000},8,16,8,16" +locations_default(#20127,#10000,8,16,8,16) hasLocation(#20126,#20127) #20128=* -tokeninfo(#20128,7,#20001,9,"number") -hasLocation(#20128,#20020) -#20129=* -tokeninfo(#20129,8,#20001,10,")") -#20130=@"loc,{#10000},1,43,1,43" -locations_default(#20130,#10000,1,43,1,43) -hasLocation(#20129,#20130) -#20131=* -tokeninfo(#20131,8,#20001,11,"{") -#20132=@"loc,{#10000},1,45,1,45" -locations_default(#20132,#10000,1,45,1,45) -hasLocation(#20131,#20132) -#20133=* -tokeninfo(#20133,8,#20001,12,"}") -#20134=@"loc,{#10000},1,46,1,46" -locations_default(#20134,#10000,1,46,1,46) -hasLocation(#20133,#20134) +tokeninfo(#20128,8,#20001,49,")") +#20129=@"loc,{#10000},8,17,8,17" +locations_default(#20129,#10000,8,17,8,17) +hasLocation(#20128,#20129) +#20130=* +tokeninfo(#20130,8,#20001,50,"{") +#20131=@"loc,{#10000},8,19,8,19" +locations_default(#20131,#10000,8,19,8,19) +hasLocation(#20130,#20131) +#20132=* +tokeninfo(#20132,8,#20001,51,"}") +#20133=@"loc,{#10000},8,20,8,20" +locations_default(#20133,#10000,8,20,8,20) +hasLocation(#20132,#20133) +#20134=* +tokeninfo(#20134,8,#20001,52,"}") +hasLocation(#20134,#20019) #20135=* -tokeninfo(#20135,7,#20001,13,"var") -#20136=@"loc,{#10000},3,1,3,3" -locations_default(#20136,#10000,3,1,3,3) +tokeninfo(#20135,7,#20001,53,"interface") +#20136=@"loc,{#10000},11,1,11,9" +locations_default(#20136,#10000,11,1,11,9) hasLocation(#20135,#20136) #20137=* -tokeninfo(#20137,6,#20001,14,"f") -hasLocation(#20137,#20028) -#20138=* -tokeninfo(#20138,8,#20001,15,"=") -#20139=@"loc,{#10000},3,7,3,7" -locations_default(#20139,#10000,3,7,3,7) -hasLocation(#20138,#20139) -#20140=* -tokeninfo(#20140,7,#20001,16,"function") -#20141=@"loc,{#10000},3,9,3,16" -locations_default(#20141,#10000,3,9,3,16) -hasLocation(#20140,#20141) -#20142=* -tokeninfo(#20142,8,#20001,17,"(") -#20143=@"loc,{#10000},3,17,3,17" -locations_default(#20143,#10000,3,17,3,17) -hasLocation(#20142,#20143) -#20144=* -tokeninfo(#20144,7,#20001,18,"this") -#20145=@"loc,{#10000},3,18,3,21" -locations_default(#20145,#10000,3,18,3,21) -hasLocation(#20144,#20145) -#20146=* -tokeninfo(#20146,8,#20001,19,":") -#20147=@"loc,{#10000},3,22,3,22" -locations_default(#20147,#10000,3,22,3,22) -hasLocation(#20146,#20147) -#20148=* -tokeninfo(#20148,7,#20001,20,"string") -hasLocation(#20148,#20037) +tokeninfo(#20137,6,#20001,54,"I") +#20138=@"loc,{#10000},11,11,11,11" +locations_default(#20138,#10000,11,11,11,11) +hasLocation(#20137,#20138) +#20139=* +tokeninfo(#20139,8,#20001,55,"{") +#20140=@"loc,{#10000},11,13,11,13" +locations_default(#20140,#10000,11,13,11,13) +hasLocation(#20139,#20140) +#20141=* +tokeninfo(#20141,6,#20001,56,"method") +#20142=@"loc,{#10000},12,3,12,8" +locations_default(#20142,#10000,12,3,12,8) +hasLocation(#20141,#20142) +#20143=* +tokeninfo(#20143,8,#20001,57,"(") +#20144=@"loc,{#10000},12,9,12,9" +locations_default(#20144,#10000,12,9,12,9) +hasLocation(#20143,#20144) +#20145=* +tokeninfo(#20145,7,#20001,58,"this") +#20146=@"loc,{#10000},12,10,12,13" +locations_default(#20146,#10000,12,10,12,13) +hasLocation(#20145,#20146) +#20147=* +tokeninfo(#20147,8,#20001,59,":") +#20148=@"loc,{#10000},12,14,12,14" +locations_default(#20148,#10000,12,14,12,14) +hasLocation(#20147,#20148) #20149=* -tokeninfo(#20149,8,#20001,21,",") -#20150=@"loc,{#10000},3,30,3,30" -locations_default(#20150,#10000,3,30,3,30) +tokeninfo(#20149,6,#20001,60,"I") +#20150=@"loc,{#10000},12,16,12,16" +locations_default(#20150,#10000,12,16,12,16) hasLocation(#20149,#20150) #20151=* -tokeninfo(#20151,6,#20001,22,"x") -hasLocation(#20151,#20034) -#20152=* -tokeninfo(#20152,8,#20001,23,":") -#20153=@"loc,{#10000},3,33,3,33" -locations_default(#20153,#10000,3,33,3,33) -hasLocation(#20152,#20153) -#20154=* -tokeninfo(#20154,7,#20001,24,"number") -hasLocation(#20154,#20039) +tokeninfo(#20151,8,#20001,61,")") +#20152=@"loc,{#10000},12,17,12,17" +locations_default(#20152,#10000,12,17,12,17) +hasLocation(#20151,#20152) +#20153=* +tokeninfo(#20153,8,#20001,62,";") +#20154=@"loc,{#10000},12,18,12,18" +locations_default(#20154,#10000,12,18,12,18) +hasLocation(#20153,#20154) #20155=* -tokeninfo(#20155,8,#20001,25,")") -#20156=@"loc,{#10000},3,41,3,41" -locations_default(#20156,#10000,3,41,3,41) -hasLocation(#20155,#20156) -#20157=* -tokeninfo(#20157,8,#20001,26,"{") -#20158=@"loc,{#10000},3,43,3,43" -locations_default(#20158,#10000,3,43,3,43) -hasLocation(#20157,#20158) -#20159=* -tokeninfo(#20159,8,#20001,27,"}") -#20160=@"loc,{#10000},3,44,3,44" -locations_default(#20160,#10000,3,44,3,44) -hasLocation(#20159,#20160) -#20161=* -tokeninfo(#20161,7,#20001,28,"declare") -#20162=@"loc,{#10000},5,1,5,7" -locations_default(#20162,#10000,5,1,5,7) -hasLocation(#20161,#20162) -#20163=* -tokeninfo(#20163,7,#20001,29,"function") -#20164=@"loc,{#10000},5,9,5,16" -locations_default(#20164,#10000,5,9,5,16) -hasLocation(#20163,#20164) +tokeninfo(#20155,8,#20001,63,"}") +hasLocation(#20155,#20027) +#20156=* +tokeninfo(#20156,0,#20001,64,"") +#20157=@"loc,{#10000},15,1,15,0" +locations_default(#20157,#10000,15,1,15,0) +hasLocation(#20156,#20157) +toplevels(#20001,0) +#20158=@"loc,{#10000},1,1,15,0" +locations_default(#20158,#10000,1,1,15,0) +hasLocation(#20001,#20158) +#20159=@"var;{declaration};{#20000}" +variables(#20159,"declaration",#20000) +#20160=@"var;{f};{#20000}" +variables(#20160,"f",#20000) +#20161=@"var;{C};{#20000}" +variables(#20161,"C",#20000) +#20162=@"local_type_name;{C};{#20000}" +local_type_names(#20162,"C",#20000) +#20163=@"local_type_name;{I};{#20000}" +local_type_names(#20163,"I",#20000) +#20164=* +stmts(#20164,17,#20001,0,"functio ... ber) {}") +hasLocation(#20164,#20003) +stmtContainers(#20164,#20001) #20165=* -tokeninfo(#20165,6,#20001,30,"ambient") -hasLocation(#20165,#20045) +exprs(#20165,78,#20164,-1,"declaration") +hasLocation(#20165,#20033) +exprContainers(#20165,#20164) +literals("declaration","declaration",#20165) +decl(#20165,#20159) #20166=* -tokeninfo(#20166,8,#20001,31,"(") -#20167=@"loc,{#10000},5,25,5,25" -locations_default(#20167,#10000,5,25,5,25) -hasLocation(#20166,#20167) +scopes(#20166,1) +scopenodes(#20164,#20166) +scopenesting(#20166,#20000) +#20167=@"var;{x};{#20166}" +variables(#20167,"x",#20166) #20168=* -tokeninfo(#20168,7,#20001,32,"this") -#20169=@"loc,{#10000},5,26,5,29" -locations_default(#20169,#10000,5,26,5,29) -hasLocation(#20168,#20169) +exprs(#20168,78,#20164,0,"x") +hasLocation(#20168,#20045) +exprContainers(#20168,#20164) +literals("x","x",#20168) +decl(#20168,#20167) +#20169=@"var;{arguments};{#20166}" +variables(#20169,"arguments",#20166) +isArgumentsObject(#20169) #20170=* -tokeninfo(#20170,8,#20001,33,":") -#20171=@"loc,{#10000},5,30,5,30" -locations_default(#20171,#10000,5,30,5,30) -hasLocation(#20170,#20171) +typeexprs(#20170,2,#20164,-4,"void") +hasLocation(#20170,#20041) +exprContainers(#20170,#20164) +literals("void","void",#20170) +#20171=* +typeexprs(#20171,2,#20164,-6,"number") +hasLocation(#20171,#20049) +exprContainers(#20171,#20164) +literals("number","number",#20171) #20172=* -tokeninfo(#20172,7,#20001,34,"string") -hasLocation(#20172,#20053) -#20173=* -tokeninfo(#20173,8,#20001,35,",") -#20174=@"loc,{#10000},5,38,5,38" -locations_default(#20174,#10000,5,38,5,38) -hasLocation(#20173,#20174) +stmts(#20172,1,#20164,-2,"{}") +#20173=@"loc,{#10000},1,45,1,46" +locations_default(#20173,#10000,1,45,1,46) +hasLocation(#20172,#20173) +stmtContainers(#20172,#20164) +#20174=* +stmts(#20174,18,#20001,1,"var f = ... ber) {}") +hasLocation(#20174,#20007) +stmtContainers(#20174,#20001) #20175=* -tokeninfo(#20175,6,#20001,36,"x") -hasLocation(#20175,#20050) -#20176=* -tokeninfo(#20176,8,#20001,37,":") -#20177=@"loc,{#10000},5,41,5,41" -locations_default(#20177,#10000,5,41,5,41) -hasLocation(#20176,#20177) +exprs(#20175,64,#20174,0,"f = fun ... ber) {}") +#20176=@"loc,{#10000},3,5,3,44" +locations_default(#20176,#10000,3,5,3,44) +hasLocation(#20175,#20176) +enclosingStmt(#20175,#20174) +exprContainers(#20175,#20001) +#20177=* +exprs(#20177,78,#20175,0,"f") +hasLocation(#20177,#20059) +enclosingStmt(#20177,#20174) +exprContainers(#20177,#20001) +literals("f","f",#20177) +decl(#20177,#20160) #20178=* -tokeninfo(#20178,7,#20001,38,"number") -hasLocation(#20178,#20055) -#20179=* -tokeninfo(#20179,8,#20001,39,")") -#20180=@"loc,{#10000},5,49,5,49" -locations_default(#20180,#10000,5,49,5,49) -hasLocation(#20179,#20180) -#20181=* -tokeninfo(#20181,8,#20001,40,";") -#20182=@"loc,{#10000},5,50,5,50" -locations_default(#20182,#10000,5,50,5,50) -hasLocation(#20181,#20182) -#20183=* -tokeninfo(#20183,7,#20001,41,"class") -#20184=@"loc,{#10000},7,1,7,5" -locations_default(#20184,#10000,7,1,7,5) -hasLocation(#20183,#20184) +exprs(#20178,9,#20175,1,"functio ... ber) {}") +#20179=@"loc,{#10000},3,9,3,44" +locations_default(#20179,#10000,3,9,3,44) +hasLocation(#20178,#20179) +enclosingStmt(#20178,#20174) +exprContainers(#20178,#20001) +#20180=* +scopes(#20180,1) +scopenodes(#20178,#20180) +scopenesting(#20180,#20000) +#20181=@"var;{x};{#20180}" +variables(#20181,"x",#20180) +#20182=* +exprs(#20182,78,#20178,0,"x") +hasLocation(#20182,#20075) +exprContainers(#20182,#20178) +literals("x","x",#20182) +decl(#20182,#20181) +#20183=@"var;{arguments};{#20180}" +variables(#20183,"arguments",#20180) +isArgumentsObject(#20183) +#20184=* +typeexprs(#20184,2,#20178,-4,"string") +hasLocation(#20184,#20071) +exprContainers(#20184,#20178) +literals("string","string",#20184) #20185=* -tokeninfo(#20185,6,#20001,42,"C") -hasLocation(#20185,#20059) +typeexprs(#20185,2,#20178,-6,"number") +hasLocation(#20185,#20079) +exprContainers(#20185,#20178) +literals("number","number",#20185) #20186=* -tokeninfo(#20186,8,#20001,43,"{") -#20187=@"loc,{#10000},7,9,7,9" -locations_default(#20187,#10000,7,9,7,9) +stmts(#20186,1,#20178,-2,"{}") +#20187=@"loc,{#10000},3,43,3,44" +locations_default(#20187,#10000,3,43,3,44) hasLocation(#20186,#20187) +stmtContainers(#20186,#20178) #20188=* -tokeninfo(#20188,6,#20001,44,"member") -hasLocation(#20188,#20064) +stmts(#20188,17,#20001,2,"declare ... umber);") +hasLocation(#20188,#20011) +stmtContainers(#20188,#20001) +hasDeclareKeyword(#20188) #20189=* -tokeninfo(#20189,8,#20001,45,"(") -#20190=@"loc,{#10000},8,9,8,9" -locations_default(#20190,#10000,8,9,8,9) -hasLocation(#20189,#20190) +exprs(#20189,78,#20188,-1,"ambient") +hasLocation(#20189,#20091) +exprContainers(#20189,#20188) +literals("ambient","ambient",#20189) +#20190=@"var;{ambient};{#20000}" +variables(#20190,"ambient",#20000) +decl(#20189,#20190) #20191=* -tokeninfo(#20191,7,#20001,46,"this") -#20192=@"loc,{#10000},8,10,8,13" -locations_default(#20192,#10000,8,10,8,13) -hasLocation(#20191,#20192) +scopes(#20191,1) +scopenodes(#20188,#20191) +scopenesting(#20191,#20000) +#20192=@"var;{x};{#20191}" +variables(#20192,"x",#20191) #20193=* -tokeninfo(#20193,8,#20001,47,":") -#20194=@"loc,{#10000},8,14,8,14" -locations_default(#20194,#10000,8,14,8,14) -hasLocation(#20193,#20194) +exprs(#20193,78,#20188,0,"x") +hasLocation(#20193,#20103) +exprContainers(#20193,#20188) +literals("x","x",#20193) +decl(#20193,#20192) +#20194=@"var;{arguments};{#20191}" +variables(#20194,"arguments",#20191) +isArgumentsObject(#20194) #20195=* -tokeninfo(#20195,6,#20001,48,"C") -#20196=@"loc,{#10000},8,16,8,16" -locations_default(#20196,#10000,8,16,8,16) -hasLocation(#20195,#20196) +typeexprs(#20195,2,#20188,-4,"string") +hasLocation(#20195,#20099) +exprContainers(#20195,#20188) +literals("string","string",#20195) +#20196=* +typeexprs(#20196,2,#20188,-6,"number") +hasLocation(#20196,#20107) +exprContainers(#20196,#20188) +literals("number","number",#20196) #20197=* -tokeninfo(#20197,8,#20001,49,")") -#20198=@"loc,{#10000},8,17,8,17" -locations_default(#20198,#10000,8,17,8,17) +stmts(#20197,26,#20001,3,"class C ... C) {}\n}") +#20198=@"loc,{#10000},7,1,9,1" +locations_default(#20198,#10000,7,1,9,1) hasLocation(#20197,#20198) +stmtContainers(#20197,#20001) #20199=* -tokeninfo(#20199,8,#20001,50,"{") -#20200=@"loc,{#10000},8,19,8,19" -locations_default(#20200,#10000,8,19,8,19) -hasLocation(#20199,#20200) +exprs(#20199,78,#20197,0,"C") +hasLocation(#20199,#20115) +enclosingStmt(#20199,#20197) +exprContainers(#20199,#20001) +literals("C","C",#20199) +decl(#20199,#20161) +typedecl(#20199,#20162) +#20200=* +scopes(#20200,10) +scopenodes(#20197,#20200) +scopenesting(#20200,#20000) #20201=* -tokeninfo(#20201,8,#20001,51,"}") -#20202=@"loc,{#10000},8,20,8,20" -locations_default(#20202,#10000,8,20,8,20) +properties(#20201,#20197,2,0,"member(this: C) {}") +#20202=@"loc,{#10000},8,3,8,20" +locations_default(#20202,#10000,8,3,8,20) hasLocation(#20201,#20202) #20203=* -tokeninfo(#20203,8,#20001,52,"}") -hasLocation(#20203,#20102) +exprs(#20203,0,#20201,0,"member") +hasLocation(#20203,#20119) +enclosingStmt(#20203,#20197) +exprContainers(#20203,#20001) +literals("member","member",#20203) #20204=* -tokeninfo(#20204,7,#20001,53,"interface") -#20205=@"loc,{#10000},11,1,11,9" -locations_default(#20205,#10000,11,1,11,9) -hasLocation(#20204,#20205) -#20206=* -tokeninfo(#20206,6,#20001,54,"I") -hasLocation(#20206,#20080) +exprs(#20204,9,#20201,1,"member(this: C) {}") +hasLocation(#20204,#20202) +enclosingStmt(#20204,#20197) +exprContainers(#20204,#20001) +#20205=* +scopes(#20205,1) +scopenodes(#20204,#20205) +scopenesting(#20205,#20200) +#20206=@"var;{arguments};{#20205}" +variables(#20206,"arguments",#20205) +isArgumentsObject(#20206) #20207=* -tokeninfo(#20207,8,#20001,55,"{") -#20208=@"loc,{#10000},11,13,11,13" -locations_default(#20208,#10000,11,13,11,13) +stmts(#20207,1,#20204,-2,"{}") +#20208=@"loc,{#10000},8,19,8,20" +locations_default(#20208,#10000,8,19,8,20) hasLocation(#20207,#20208) +stmtContainers(#20207,#20204) +isMethod(#20201) #20209=* -tokeninfo(#20209,6,#20001,56,"method") -hasLocation(#20209,#20084) -#20210=* -tokeninfo(#20210,8,#20001,57,"(") -#20211=@"loc,{#10000},12,9,12,9" -locations_default(#20211,#10000,12,9,12,9) -hasLocation(#20210,#20211) +properties(#20209,#20197,3,0,"constructor() {}") +#20210=@"loc,{#10000},7,9,7,8" +locations_default(#20210,#10000,7,9,7,8) +hasLocation(#20209,#20210) +#20211=* +exprs(#20211,0,#20209,0,"constructor") +hasLocation(#20211,#20210) +enclosingStmt(#20211,#20197) +exprContainers(#20211,#20001) +literals("constructor","constructor",#20211) #20212=* -tokeninfo(#20212,7,#20001,58,"this") -#20213=@"loc,{#10000},12,10,12,13" -locations_default(#20213,#10000,12,10,12,13) -hasLocation(#20212,#20213) -#20214=* -tokeninfo(#20214,8,#20001,59,":") -#20215=@"loc,{#10000},12,14,12,14" -locations_default(#20215,#10000,12,14,12,14) -hasLocation(#20214,#20215) +exprs(#20212,9,#20209,1,"() {}") +hasLocation(#20212,#20210) +enclosingStmt(#20212,#20197) +exprContainers(#20212,#20001) +#20213=* +scopes(#20213,1) +scopenodes(#20212,#20213) +scopenesting(#20213,#20200) +#20214=@"var;{arguments};{#20213}" +variables(#20214,"arguments",#20213) +isArgumentsObject(#20214) +#20215=* +stmts(#20215,1,#20212,-2,"{}") +hasLocation(#20215,#20210) +stmtContainers(#20215,#20212) +isMethod(#20209) #20216=* -tokeninfo(#20216,6,#20001,60,"I") -#20217=@"loc,{#10000},12,16,12,16" -locations_default(#20217,#10000,12,16,12,16) +stmts(#20216,34,#20001,4,"interfa ... : I);\n}") +#20217=@"loc,{#10000},11,1,13,1" +locations_default(#20217,#10000,11,1,13,1) hasLocation(#20216,#20217) +stmtContainers(#20216,#20001) #20218=* -tokeninfo(#20218,8,#20001,61,")") -#20219=@"loc,{#10000},12,17,12,17" -locations_default(#20219,#10000,12,17,12,17) -hasLocation(#20218,#20219) -#20220=* -tokeninfo(#20220,8,#20001,62,";") -#20221=@"loc,{#10000},12,18,12,18" -locations_default(#20221,#10000,12,18,12,18) -hasLocation(#20220,#20221) +typeexprs(#20218,1,#20216,0,"I") +hasLocation(#20218,#20138) +enclosingStmt(#20218,#20216) +exprContainers(#20218,#20001) +literals("I","I",#20218) +typedecl(#20218,#20163) +#20219=* +properties(#20219,#20216,2,0,"method(this: I);") +#20220=@"loc,{#10000},12,3,12,18" +locations_default(#20220,#10000,12,3,12,18) +hasLocation(#20219,#20220) +#20221=* +exprs(#20221,0,#20219,0,"method") +hasLocation(#20221,#20142) +enclosingStmt(#20221,#20216) +exprContainers(#20221,#20001) +literals("method","method",#20221) #20222=* -tokeninfo(#20222,8,#20001,63,"}") -hasLocation(#20222,#20110) +exprs(#20222,9,#20219,1,"method(this: I);") +hasLocation(#20222,#20220) +enclosingStmt(#20222,#20216) +exprContainers(#20222,#20001) #20223=* -tokeninfo(#20223,0,#20001,64,"") -#20224=@"loc,{#10000},15,1,15,0" -locations_default(#20224,#10000,15,1,15,0) -hasLocation(#20223,#20224) +scopes(#20223,1) +scopenodes(#20222,#20223) +scopenesting(#20223,#20000) +#20224=@"var;{arguments};{#20223}" +variables(#20224,"arguments",#20223) +isArgumentsObject(#20224) +isMethod(#20219) +isAbstractMember(#20219) #20225=* entry_cfg_node(#20225,#20001) #20226=@"loc,{#10000},1,1,1,0" @@ -693,67 +687,67 @@ locations_default(#20226,#10000,1,1,1,0) hasLocation(#20225,#20226) #20227=* exit_cfg_node(#20227,#20001) -hasLocation(#20227,#20224) -successor(#20077,#20227) -successor(#20073,#20070) +hasLocation(#20227,#20157) +successor(#20216,#20227) +successor(#20212,#20209) #20228=* -entry_cfg_node(#20228,#20073) -hasLocation(#20228,#20071) +entry_cfg_node(#20228,#20212) +hasLocation(#20228,#20210) #20229=* -exit_cfg_node(#20229,#20073) -hasLocation(#20229,#20071) -successor(#20076,#20229) -successor(#20228,#20076) -successor(#20072,#20073) -successor(#20070,#20056) -successor(#20065,#20061) +exit_cfg_node(#20229,#20212) +hasLocation(#20229,#20210) +successor(#20215,#20229) +successor(#20228,#20215) +successor(#20211,#20212) +successor(#20209,#20197) +successor(#20204,#20201) #20230=* -entry_cfg_node(#20230,#20065) +entry_cfg_node(#20230,#20204) #20231=@"loc,{#10000},8,3,8,2" locations_default(#20231,#10000,8,3,8,2) hasLocation(#20230,#20231) #20232=* -exit_cfg_node(#20232,#20065) +exit_cfg_node(#20232,#20204) #20233=@"loc,{#10000},8,21,8,20" locations_default(#20233,#10000,8,21,8,20) hasLocation(#20232,#20233) -successor(#20068,#20232) -successor(#20230,#20068) -successor(#20063,#20065) -successor(#20061,#20072) -successor(#20058,#20063) -successor(#20056,#20077) -successor(#20042,#20058) -successor(#20023,#20027) -successor(#20029,#20025) +successor(#20207,#20232) +successor(#20230,#20207) +successor(#20203,#20204) +successor(#20201,#20211) +successor(#20199,#20203) +successor(#20197,#20216) +successor(#20188,#20199) +successor(#20174,#20177) +successor(#20178,#20175) #20234=* -entry_cfg_node(#20234,#20029) +entry_cfg_node(#20234,#20178) #20235=@"loc,{#10000},3,9,3,8" locations_default(#20235,#10000,3,9,3,8) hasLocation(#20234,#20235) #20236=* -exit_cfg_node(#20236,#20029) +exit_cfg_node(#20236,#20178) #20237=@"loc,{#10000},3,45,3,44" locations_default(#20237,#10000,3,45,3,44) hasLocation(#20236,#20237) -successor(#20040,#20236) -successor(#20033,#20040) -successor(#20234,#20033) -successor(#20027,#20029) -successor(#20025,#20042) -successor(#20008,#20023) +successor(#20186,#20236) +successor(#20182,#20186) +successor(#20234,#20182) +successor(#20177,#20178) +successor(#20175,#20188) +successor(#20164,#20174) #20238=* -entry_cfg_node(#20238,#20008) +entry_cfg_node(#20238,#20164) hasLocation(#20238,#20226) #20239=* -exit_cfg_node(#20239,#20008) +exit_cfg_node(#20239,#20164) #20240=@"loc,{#10000},1,47,1,46" locations_default(#20240,#10000,1,47,1,46) hasLocation(#20239,#20240) -successor(#20021,#20239) -successor(#20014,#20021) -successor(#20238,#20014) -successor(#20010,#20008) -successor(#20225,#20010) +successor(#20172,#20239) +successor(#20168,#20172) +successor(#20238,#20168) +successor(#20165,#20164) +successor(#20225,#20165) numlines(#10000,14,9,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/tryfinally.ts.trap b/javascript/extractor/tests/ts/output/trap/tryfinally.ts.trap index 70d753e1be0..bf886cb2a8a 100644 --- a/javascript/extractor/tests/ts/output/trap/tryfinally.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/tryfinally.ts.trap @@ -9,248 +9,247 @@ 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;{foo};{#20000}" -variables(#20003,"foo",#20000) +#20002=* +lines(#20002,#20001,"function foo() {"," +") +#20003=@"loc,{#10000},1,1,1,16" +locations_default(#20003,#10000,1,1,1,16) +hasLocation(#20002,#20003) #20004=* -stmts(#20004,17,#20001,0,"functio ... ;\n }\n}") -#20005=@"loc,{#10000},1,1,7,1" -locations_default(#20005,#10000,1,1,7,1) +lines(#20004,#20001," var x = 5;"," +") +#20005=@"loc,{#10000},2,1,2,12" +locations_default(#20005,#10000,2,1,2,12) hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) -#20006=* -exprs(#20006,78,#20004,-1,"foo") -#20007=@"loc,{#10000},1,10,1,12" -locations_default(#20007,#10000,1,10,1,12) -hasLocation(#20006,#20007) -exprContainers(#20006,#20004) -literals("foo","foo",#20006) -decl(#20006,#20003) -#20008=* -scopes(#20008,1) -scopenodes(#20004,#20008) -scopenesting(#20008,#20000) -#20009=@"var;{x};{#20008}" -variables(#20009,"x",#20008) -#20010=@"var;{arguments};{#20008}" -variables(#20010,"arguments",#20008) -isArgumentsObject(#20010) -#20011=* -stmts(#20011,1,#20004,-2,"{\n var ... ;\n }\n}") -#20012=@"loc,{#10000},1,16,7,1" -locations_default(#20012,#10000,1,16,7,1) -hasLocation(#20011,#20012) -stmtContainers(#20011,#20004) -#20013=* -stmts(#20013,18,#20011,0,"var x = 5;") -#20014=@"loc,{#10000},2,3,2,12" -locations_default(#20014,#10000,2,3,2,12) -hasLocation(#20013,#20014) -stmtContainers(#20013,#20004) -#20015=* -exprs(#20015,64,#20013,0,"x = 5") -#20016=@"loc,{#10000},2,7,2,11" -locations_default(#20016,#10000,2,7,2,11) -hasLocation(#20015,#20016) -enclosingStmt(#20015,#20013) -exprContainers(#20015,#20004) -#20017=* -exprs(#20017,78,#20015,0,"x") -#20018=@"loc,{#10000},2,7,2,7" -locations_default(#20018,#10000,2,7,2,7) -hasLocation(#20017,#20018) -enclosingStmt(#20017,#20013) -exprContainers(#20017,#20004) -literals("x","x",#20017) -decl(#20017,#20009) -#20019=* -exprs(#20019,3,#20015,1,"5") -#20020=@"loc,{#10000},2,11,2,11" -locations_default(#20020,#10000,2,11,2,11) -hasLocation(#20019,#20020) -enclosingStmt(#20019,#20013) -exprContainers(#20019,#20004) -literals("5","5",#20019) -#20021=* -stmts(#20021,11,#20011,1,"try {\n ... x;\n }") -#20022=@"loc,{#10000},3,3,6,3" -locations_default(#20022,#10000,3,3,6,3) -hasLocation(#20021,#20022) -stmtContainers(#20021,#20004) -#20023=* -stmts(#20023,1,#20021,0,"{\n }") -#20024=@"loc,{#10000},3,7,4,3" -locations_default(#20024,#10000,3,7,4,3) -hasLocation(#20023,#20024) -stmtContainers(#20023,#20004) -#20025=* -stmts(#20025,1,#20021,-1,"{\n return x;\n }") -#20026=@"loc,{#10000},4,13,6,3" -locations_default(#20026,#10000,4,13,6,3) -hasLocation(#20025,#20026) -stmtContainers(#20025,#20004) -#20027=* -stmts(#20027,9,#20025,0,"return x;") -#20028=@"loc,{#10000},5,5,5,13" -locations_default(#20028,#10000,5,5,5,13) -hasLocation(#20027,#20028) -stmtContainers(#20027,#20004) -#20029=* -exprs(#20029,79,#20027,0,"x") -#20030=@"loc,{#10000},5,12,5,12" -locations_default(#20030,#10000,5,12,5,12) -hasLocation(#20029,#20030) -enclosingStmt(#20029,#20027) -exprContainers(#20029,#20004) -literals("x","x",#20029) -bind(#20029,#20009) -numlines(#20004,7,7,0) -#20031=* -lines(#20031,#20001,"function foo() {"," -") -#20032=@"loc,{#10000},1,1,1,16" -locations_default(#20032,#10000,1,1,1,16) -hasLocation(#20031,#20032) -#20033=* -lines(#20033,#20001," var x = 5;"," -") -#20034=@"loc,{#10000},2,1,2,12" -locations_default(#20034,#10000,2,1,2,12) -hasLocation(#20033,#20034) indentation(#10000,2," ",2) -#20035=* -lines(#20035,#20001," try {"," +#20006=* +lines(#20006,#20001," try {"," ") -#20036=@"loc,{#10000},3,1,3,7" -locations_default(#20036,#10000,3,1,3,7) -hasLocation(#20035,#20036) +#20007=@"loc,{#10000},3,1,3,7" +locations_default(#20007,#10000,3,1,3,7) +hasLocation(#20006,#20007) indentation(#10000,3," ",2) -#20037=* -lines(#20037,#20001," } finally {"," +#20008=* +lines(#20008,#20001," } finally {"," ") -#20038=@"loc,{#10000},4,1,4,13" -locations_default(#20038,#10000,4,1,4,13) -hasLocation(#20037,#20038) +#20009=@"loc,{#10000},4,1,4,13" +locations_default(#20009,#10000,4,1,4,13) +hasLocation(#20008,#20009) indentation(#10000,4," ",2) -#20039=* -lines(#20039,#20001," return x;"," +#20010=* +lines(#20010,#20001," return x;"," ") -#20040=@"loc,{#10000},5,1,5,13" -locations_default(#20040,#10000,5,1,5,13) -hasLocation(#20039,#20040) +#20011=@"loc,{#10000},5,1,5,13" +locations_default(#20011,#10000,5,1,5,13) +hasLocation(#20010,#20011) indentation(#10000,5," ",4) -#20041=* -lines(#20041,#20001," }"," +#20012=* +lines(#20012,#20001," }"," ") -#20042=@"loc,{#10000},6,1,6,3" -locations_default(#20042,#10000,6,1,6,3) -hasLocation(#20041,#20042) +#20013=@"loc,{#10000},6,1,6,3" +locations_default(#20013,#10000,6,1,6,3) +hasLocation(#20012,#20013) indentation(#10000,6," ",2) -#20043=* -lines(#20043,#20001,"}"," +#20014=* +lines(#20014,#20001,"}"," ") -#20044=@"loc,{#10000},7,1,7,1" -locations_default(#20044,#10000,7,1,7,1) -hasLocation(#20043,#20044) +#20015=@"loc,{#10000},7,1,7,1" +locations_default(#20015,#10000,7,1,7,1) +hasLocation(#20014,#20015) numlines(#20001,7,7,0) -#20045=* -tokeninfo(#20045,7,#20001,0,"function") -#20046=@"loc,{#10000},1,1,1,8" -locations_default(#20046,#10000,1,1,1,8) -hasLocation(#20045,#20046) -#20047=* -tokeninfo(#20047,6,#20001,1,"foo") -hasLocation(#20047,#20007) +#20016=* +tokeninfo(#20016,7,#20001,0,"function") +#20017=@"loc,{#10000},1,1,1,8" +locations_default(#20017,#10000,1,1,1,8) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,6,#20001,1,"foo") +#20019=@"loc,{#10000},1,10,1,12" +locations_default(#20019,#10000,1,10,1,12) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,2,"(") +#20021=@"loc,{#10000},1,13,1,13" +locations_default(#20021,#10000,1,13,1,13) +hasLocation(#20020,#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,8,#20001,4,"{") +#20025=@"loc,{#10000},1,16,1,16" +locations_default(#20025,#10000,1,16,1,16) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,7,#20001,5,"var") +#20027=@"loc,{#10000},2,3,2,5" +locations_default(#20027,#10000,2,3,2,5) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,6,#20001,6,"x") +#20029=@"loc,{#10000},2,7,2,7" +locations_default(#20029,#10000,2,7,2,7) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,7,"=") +#20031=@"loc,{#10000},2,9,2,9" +locations_default(#20031,#10000,2,9,2,9) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,3,#20001,8,"5") +#20033=@"loc,{#10000},2,11,2,11" +locations_default(#20033,#10000,2,11,2,11) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,9,";") +#20035=@"loc,{#10000},2,12,2,12" +locations_default(#20035,#10000,2,12,2,12) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,7,#20001,10,"try") +#20037=@"loc,{#10000},3,3,3,5" +locations_default(#20037,#10000,3,3,3,5) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,8,#20001,11,"{") +#20039=@"loc,{#10000},3,7,3,7" +locations_default(#20039,#10000,3,7,3,7) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,12,"}") +#20041=@"loc,{#10000},4,3,4,3" +locations_default(#20041,#10000,4,3,4,3) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,7,#20001,13,"finally") +#20043=@"loc,{#10000},4,5,4,11" +locations_default(#20043,#10000,4,5,4,11) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,14,"{") +#20045=@"loc,{#10000},4,13,4,13" +locations_default(#20045,#10000,4,13,4,13) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,7,#20001,15,"return") +#20047=@"loc,{#10000},5,5,5,10" +locations_default(#20047,#10000,5,5,5,10) +hasLocation(#20046,#20047) #20048=* -tokeninfo(#20048,8,#20001,2,"(") -#20049=@"loc,{#10000},1,13,1,13" -locations_default(#20049,#10000,1,13,1,13) +tokeninfo(#20048,6,#20001,16,"x") +#20049=@"loc,{#10000},5,12,5,12" +locations_default(#20049,#10000,5,12,5,12) hasLocation(#20048,#20049) #20050=* -tokeninfo(#20050,8,#20001,3,")") -#20051=@"loc,{#10000},1,14,1,14" -locations_default(#20051,#10000,1,14,1,14) +tokeninfo(#20050,8,#20001,17,";") +#20051=@"loc,{#10000},5,13,5,13" +locations_default(#20051,#10000,5,13,5,13) hasLocation(#20050,#20051) #20052=* -tokeninfo(#20052,8,#20001,4,"{") -#20053=@"loc,{#10000},1,16,1,16" -locations_default(#20053,#10000,1,16,1,16) +tokeninfo(#20052,8,#20001,18,"}") +#20053=@"loc,{#10000},6,3,6,3" +locations_default(#20053,#10000,6,3,6,3) hasLocation(#20052,#20053) #20054=* -tokeninfo(#20054,7,#20001,5,"var") -#20055=@"loc,{#10000},2,3,2,5" -locations_default(#20055,#10000,2,3,2,5) -hasLocation(#20054,#20055) -#20056=* -tokeninfo(#20056,6,#20001,6,"x") -hasLocation(#20056,#20018) -#20057=* -tokeninfo(#20057,8,#20001,7,"=") -#20058=@"loc,{#10000},2,9,2,9" -locations_default(#20058,#10000,2,9,2,9) -hasLocation(#20057,#20058) +tokeninfo(#20054,8,#20001,19,"}") +hasLocation(#20054,#20015) +#20055=* +tokeninfo(#20055,0,#20001,20,"") +#20056=@"loc,{#10000},8,1,8,0" +locations_default(#20056,#10000,8,1,8,0) +hasLocation(#20055,#20056) +toplevels(#20001,0) +#20057=@"loc,{#10000},1,1,8,0" +locations_default(#20057,#10000,1,1,8,0) +hasLocation(#20001,#20057) +#20058=@"var;{foo};{#20000}" +variables(#20058,"foo",#20000) #20059=* -tokeninfo(#20059,3,#20001,8,"5") -hasLocation(#20059,#20020) -#20060=* -tokeninfo(#20060,8,#20001,9,";") -#20061=@"loc,{#10000},2,12,2,12" -locations_default(#20061,#10000,2,12,2,12) -hasLocation(#20060,#20061) +stmts(#20059,17,#20001,0,"functio ... ;\n }\n}") +#20060=@"loc,{#10000},1,1,7,1" +locations_default(#20060,#10000,1,1,7,1) +hasLocation(#20059,#20060) +stmtContainers(#20059,#20001) +#20061=* +exprs(#20061,78,#20059,-1,"foo") +hasLocation(#20061,#20019) +exprContainers(#20061,#20059) +literals("foo","foo",#20061) +decl(#20061,#20058) #20062=* -tokeninfo(#20062,7,#20001,10,"try") -#20063=@"loc,{#10000},3,3,3,5" -locations_default(#20063,#10000,3,3,3,5) -hasLocation(#20062,#20063) -#20064=* -tokeninfo(#20064,8,#20001,11,"{") -#20065=@"loc,{#10000},3,7,3,7" -locations_default(#20065,#10000,3,7,3,7) -hasLocation(#20064,#20065) -#20066=* -tokeninfo(#20066,8,#20001,12,"}") -#20067=@"loc,{#10000},4,3,4,3" -locations_default(#20067,#10000,4,3,4,3) -hasLocation(#20066,#20067) -#20068=* -tokeninfo(#20068,7,#20001,13,"finally") -#20069=@"loc,{#10000},4,5,4,11" -locations_default(#20069,#10000,4,5,4,11) -hasLocation(#20068,#20069) -#20070=* -tokeninfo(#20070,8,#20001,14,"{") -#20071=@"loc,{#10000},4,13,4,13" -locations_default(#20071,#10000,4,13,4,13) -hasLocation(#20070,#20071) +scopes(#20062,1) +scopenodes(#20059,#20062) +scopenesting(#20062,#20000) +#20063=@"var;{x};{#20062}" +variables(#20063,"x",#20062) +#20064=@"var;{arguments};{#20062}" +variables(#20064,"arguments",#20062) +isArgumentsObject(#20064) +#20065=* +stmts(#20065,1,#20059,-2,"{\n var ... ;\n }\n}") +#20066=@"loc,{#10000},1,16,7,1" +locations_default(#20066,#10000,1,16,7,1) +hasLocation(#20065,#20066) +stmtContainers(#20065,#20059) +#20067=* +stmts(#20067,18,#20065,0,"var x = 5;") +#20068=@"loc,{#10000},2,3,2,12" +locations_default(#20068,#10000,2,3,2,12) +hasLocation(#20067,#20068) +stmtContainers(#20067,#20059) +#20069=* +exprs(#20069,64,#20067,0,"x = 5") +#20070=@"loc,{#10000},2,7,2,11" +locations_default(#20070,#10000,2,7,2,11) +hasLocation(#20069,#20070) +enclosingStmt(#20069,#20067) +exprContainers(#20069,#20059) +#20071=* +exprs(#20071,78,#20069,0,"x") +hasLocation(#20071,#20029) +enclosingStmt(#20071,#20067) +exprContainers(#20071,#20059) +literals("x","x",#20071) +decl(#20071,#20063) #20072=* -tokeninfo(#20072,7,#20001,15,"return") -#20073=@"loc,{#10000},5,5,5,10" -locations_default(#20073,#10000,5,5,5,10) -hasLocation(#20072,#20073) -#20074=* -tokeninfo(#20074,6,#20001,16,"x") -hasLocation(#20074,#20030) +exprs(#20072,3,#20069,1,"5") +hasLocation(#20072,#20033) +enclosingStmt(#20072,#20067) +exprContainers(#20072,#20059) +literals("5","5",#20072) +#20073=* +stmts(#20073,11,#20065,1,"try {\n ... x;\n }") +#20074=@"loc,{#10000},3,3,6,3" +locations_default(#20074,#10000,3,3,6,3) +hasLocation(#20073,#20074) +stmtContainers(#20073,#20059) #20075=* -tokeninfo(#20075,8,#20001,17,";") -#20076=@"loc,{#10000},5,13,5,13" -locations_default(#20076,#10000,5,13,5,13) +stmts(#20075,1,#20073,0,"{\n }") +#20076=@"loc,{#10000},3,7,4,3" +locations_default(#20076,#10000,3,7,4,3) hasLocation(#20075,#20076) +stmtContainers(#20075,#20059) #20077=* -tokeninfo(#20077,8,#20001,18,"}") -#20078=@"loc,{#10000},6,3,6,3" -locations_default(#20078,#10000,6,3,6,3) +stmts(#20077,1,#20073,-1,"{\n return x;\n }") +#20078=@"loc,{#10000},4,13,6,3" +locations_default(#20078,#10000,4,13,6,3) hasLocation(#20077,#20078) +stmtContainers(#20077,#20059) #20079=* -tokeninfo(#20079,8,#20001,19,"}") -hasLocation(#20079,#20044) -#20080=* -tokeninfo(#20080,0,#20001,20,"") -#20081=@"loc,{#10000},8,1,8,0" -locations_default(#20081,#10000,8,1,8,0) -hasLocation(#20080,#20081) +stmts(#20079,9,#20077,0,"return x;") +#20080=@"loc,{#10000},5,5,5,13" +locations_default(#20080,#10000,5,5,5,13) +hasLocation(#20079,#20080) +stmtContainers(#20079,#20059) +#20081=* +exprs(#20081,79,#20079,0,"x") +hasLocation(#20081,#20049) +enclosingStmt(#20081,#20079) +exprContainers(#20081,#20059) +literals("x","x",#20081) +bind(#20081,#20063) #20082=* entry_cfg_node(#20082,#20001) #20083=@"loc,{#10000},1,1,1,0" @@ -258,28 +257,28 @@ locations_default(#20083,#10000,1,1,1,0) hasLocation(#20082,#20083) #20084=* exit_cfg_node(#20084,#20001) -hasLocation(#20084,#20081) -successor(#20004,#20084) +hasLocation(#20084,#20056) +successor(#20059,#20084) #20085=* -entry_cfg_node(#20085,#20004) +entry_cfg_node(#20085,#20059) hasLocation(#20085,#20083) #20086=* -exit_cfg_node(#20086,#20004) +exit_cfg_node(#20086,#20059) #20087=@"loc,{#10000},7,2,7,1" locations_default(#20087,#10000,7,2,7,1) hasLocation(#20086,#20087) -successor(#20011,#20013) -successor(#20021,#20023) -successor(#20023,#20025) -successor(#20025,#20029) -successor(#20029,#20027) -successor(#20027,#20086) -successor(#20013,#20017) -successor(#20019,#20015) -successor(#20017,#20019) -successor(#20015,#20021) -successor(#20085,#20011) -successor(#20006,#20004) -successor(#20082,#20006) +successor(#20065,#20067) +successor(#20073,#20075) +successor(#20075,#20077) +successor(#20077,#20081) +successor(#20081,#20079) +successor(#20079,#20086) +successor(#20067,#20071) +successor(#20072,#20069) +successor(#20071,#20072) +successor(#20069,#20073) +successor(#20085,#20065) +successor(#20061,#20059) +successor(#20082,#20061) numlines(#10000,7,7,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/tsx.tsx.trap b/javascript/extractor/tests/ts/output/trap/tsx.tsx.trap index a9064643cc4..89ad14afbff 100644 --- a/javascript/extractor/tests/ts/output/trap/tsx.tsx.trap +++ b/javascript/extractor/tests/ts/output/trap/tsx.tsx.trap @@ -9,340 +9,340 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,5,0" -locations_default(#20002,#10000,1,1,5,0) -hasLocation(#20001,#20002) -#20003=* -stmts(#20003,2,#20001,0,"

") -#20004=@"loc,{#10000},1,1,4,6" -locations_default(#20004,#10000,1,1,4,6) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,89,#20003,0,"
") -hasLocation(#20005,#20004) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -#20006=* -exprs(#20006,0,#20005,-1,"div") -#20007=@"loc,{#10000},1,2,1,4" -locations_default(#20007,#10000,1,2,1,4) -hasLocation(#20006,#20007) -enclosingStmt(#20006,#20003) -exprContainers(#20006,#20001) -literals("div","div",#20006) -#20008=* -properties(#20008,#20005,0,3,"classNa ... sName }") -#20009=@"loc,{#10000},1,6,1,28" -locations_default(#20009,#10000,1,6,1,28) -hasLocation(#20008,#20009) -#20010=* -exprs(#20010,0,#20008,0,"className") -#20011=@"loc,{#10000},1,6,1,14" -locations_default(#20011,#10000,1,6,1,14) -hasLocation(#20010,#20011) -enclosingStmt(#20010,#20003) -exprContainers(#20010,#20001) -literals("className","className",#20010) -#20012=* -exprs(#20012,79,#20008,1,"className") -#20013=@"loc,{#10000},1,18,1,26" -locations_default(#20013,#10000,1,18,1,26) -hasLocation(#20012,#20013) -enclosingStmt(#20012,#20003) -exprContainers(#20012,#20001) -literals("className","className",#20012) -#20014=@"var;{className};{#20000}" -variables(#20014,"className",#20000) -bind(#20012,#20014) -#20015=* -properties(#20015,#20005,1,3,"title={ title }") -#20016=@"loc,{#10000},1,30,1,44" -locations_default(#20016,#10000,1,30,1,44) -hasLocation(#20015,#20016) -#20017=* -exprs(#20017,0,#20015,0,"title") -#20018=@"loc,{#10000},1,30,1,34" -locations_default(#20018,#10000,1,30,1,34) -hasLocation(#20017,#20018) -enclosingStmt(#20017,#20003) -exprContainers(#20017,#20001) -literals("title","title",#20017) -#20019=* -exprs(#20019,79,#20015,1,"title") -#20020=@"loc,{#10000},1,38,1,42" -locations_default(#20020,#10000,1,38,1,42) -hasLocation(#20019,#20020) -enclosingStmt(#20019,#20003) -exprContainers(#20019,#20001) -literals("title","title",#20019) -#20021=@"var;{title};{#20000}" -variables(#20021,"title",#20000) -bind(#20019,#20021) -#20022=* -exprs(#20022,4,#20005,-2,"") -#20023=@"loc,{#10000},2,3,2,2" -locations_default(#20023,#10000,2,3,2,2) -hasLocation(#20022,#20023) -enclosingStmt(#20022,#20003) -exprContainers(#20022,#20001) -literals("","",#20022) -#20024=* -exprs(#20024,89,#20005,-3,"") -#20025=@"loc,{#10000},2,3,2,20" -locations_default(#20025,#10000,2,3,2,20) -hasLocation(#20024,#20025) -enclosingStmt(#20024,#20003) -exprContainers(#20024,#20001) -#20026=* -exprs(#20026,14,#20024,-1,"this.props.icon") -#20027=@"loc,{#10000},2,4,2,18" -locations_default(#20027,#10000,2,4,2,18) -hasLocation(#20026,#20027) -enclosingStmt(#20026,#20003) -exprContainers(#20026,#20001) -#20028=* -exprs(#20028,14,#20026,0,"this.props") -#20029=@"loc,{#10000},2,4,2,13" -locations_default(#20029,#10000,2,4,2,13) -hasLocation(#20028,#20029) -enclosingStmt(#20028,#20003) -exprContainers(#20028,#20001) -#20030=* -exprs(#20030,79,#20028,0,"this") -#20031=@"loc,{#10000},2,4,2,7" -locations_default(#20031,#10000,2,4,2,7) -hasLocation(#20030,#20031) -enclosingStmt(#20030,#20003) -exprContainers(#20030,#20001) -literals("this","this",#20030) -#20032=@"var;{this};{#20000}" -variables(#20032,"this",#20000) -bind(#20030,#20032) -#20033=* -exprs(#20033,0,#20028,1,"props") -#20034=@"loc,{#10000},2,9,2,13" -locations_default(#20034,#10000,2,9,2,13) -hasLocation(#20033,#20034) -enclosingStmt(#20033,#20003) -exprContainers(#20033,#20001) -literals("props","props",#20033) -#20035=* -exprs(#20035,0,#20026,1,"icon") -#20036=@"loc,{#10000},2,15,2,18" -locations_default(#20036,#10000,2,15,2,18) -hasLocation(#20035,#20036) -enclosingStmt(#20035,#20003) -exprContainers(#20035,#20001) -literals("icon","icon",#20035) -#20037=* -exprs(#20037,4,#20005,-4,"") -#20038=@"loc,{#10000},3,3,3,2" -locations_default(#20038,#10000,3,3,3,2) -hasLocation(#20037,#20038) -enclosingStmt(#20037,#20003) -exprContainers(#20037,#20001) -literals("","",#20037) -#20039=* -exprs(#20039,89,#20005,-5,"") -#20040=@"loc,{#10000},3,3,3,21" -locations_default(#20040,#10000,3,3,3,21) -hasLocation(#20039,#20040) -enclosingStmt(#20039,#20003) -exprContainers(#20039,#20001) -#20041=* -exprs(#20041,0,#20039,-1,"name-with-dashes") -#20042=@"loc,{#10000},3,4,3,19" -locations_default(#20042,#10000,3,4,3,19) -hasLocation(#20041,#20042) -enclosingStmt(#20041,#20003) -exprContainers(#20041,#20001) -literals("name-with-dashes","name-with-dashes",#20041) -#20043=* -exprs(#20043,4,#20005,-6,"") -#20044=@"loc,{#10000},4,1,4,0" -locations_default(#20044,#10000,4,1,4,0) -hasLocation(#20043,#20044) -enclosingStmt(#20043,#20003) -exprContainers(#20043,#20001) -literals("","",#20043) -#20045=* -lines(#20045,#20001,"
"," +#20002=* +lines(#20002,#20001,"
"," ") -#20046=@"loc,{#10000},1,1,1,45" -locations_default(#20046,#10000,1,1,1,45) -hasLocation(#20045,#20046) -#20047=* -lines(#20047,#20001," "," +#20003=@"loc,{#10000},1,1,1,45" +locations_default(#20003,#10000,1,1,1,45) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," "," ") -#20048=@"loc,{#10000},2,1,2,20" -locations_default(#20048,#10000,2,1,2,20) -hasLocation(#20047,#20048) +#20005=@"loc,{#10000},2,1,2,20" +locations_default(#20005,#10000,2,1,2,20) +hasLocation(#20004,#20005) indentation(#10000,2," ",2) -#20049=* -lines(#20049,#20001," "," +#20006=* +lines(#20006,#20001," "," ") -#20050=@"loc,{#10000},3,1,3,21" -locations_default(#20050,#10000,3,1,3,21) -hasLocation(#20049,#20050) +#20007=@"loc,{#10000},3,1,3,21" +locations_default(#20007,#10000,3,1,3,21) +hasLocation(#20006,#20007) indentation(#10000,3," ",2) -#20051=* -lines(#20051,#20001,"
"," +#20008=* +lines(#20008,#20001,"
"," ") -#20052=@"loc,{#10000},4,1,4,6" -locations_default(#20052,#10000,4,1,4,6) -hasLocation(#20051,#20052) +#20009=@"loc,{#10000},4,1,4,6" +locations_default(#20009,#10000,4,1,4,6) +hasLocation(#20008,#20009) numlines(#20001,4,4,0) -#20053=* -tokeninfo(#20053,8,#20001,0,"<") -#20054=@"loc,{#10000},1,1,1,1" -locations_default(#20054,#10000,1,1,1,1) -hasLocation(#20053,#20054) -#20055=* -tokeninfo(#20055,6,#20001,1,"div") -hasLocation(#20055,#20007) +#20010=* +tokeninfo(#20010,8,#20001,0,"<") +#20011=@"loc,{#10000},1,1,1,1" +locations_default(#20011,#10000,1,1,1,1) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,6,#20001,1,"div") +#20013=@"loc,{#10000},1,2,1,4" +locations_default(#20013,#10000,1,2,1,4) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,6,#20001,2,"className") +#20015=@"loc,{#10000},1,6,1,14" +locations_default(#20015,#10000,1,6,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,16,1,16" +locations_default(#20019,#10000,1,16,1,16) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,6,#20001,5,"className") +#20021=@"loc,{#10000},1,18,1,26" +locations_default(#20021,#10000,1,18,1,26) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,6,"}") +#20023=@"loc,{#10000},1,28,1,28" +locations_default(#20023,#10000,1,28,1,28) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,6,#20001,7,"title") +#20025=@"loc,{#10000},1,30,1,34" +locations_default(#20025,#10000,1,30,1,34) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,8,"=") +#20027=@"loc,{#10000},1,35,1,35" +locations_default(#20027,#10000,1,35,1,35) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,9,"{") +#20029=@"loc,{#10000},1,36,1,36" +locations_default(#20029,#10000,1,36,1,36) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,6,#20001,10,"title") +#20031=@"loc,{#10000},1,38,1,42" +locations_default(#20031,#10000,1,38,1,42) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,11,"}") +#20033=@"loc,{#10000},1,44,1,44" +locations_default(#20033,#10000,1,44,1,44) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,12,">") +#20035=@"loc,{#10000},1,45,1,45" +locations_default(#20035,#10000,1,45,1,45) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,13,"<") +#20037=@"loc,{#10000},2,3,2,3" +locations_default(#20037,#10000,2,3,2,3) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,7,#20001,14,"this") +#20039=@"loc,{#10000},2,4,2,7" +locations_default(#20039,#10000,2,4,2,7) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,15,".") +#20041=@"loc,{#10000},2,8,2,8" +locations_default(#20041,#10000,2,8,2,8) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,6,#20001,16,"props") +#20043=@"loc,{#10000},2,9,2,13" +locations_default(#20043,#10000,2,9,2,13) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,17,".") +#20045=@"loc,{#10000},2,14,2,14" +locations_default(#20045,#10000,2,14,2,14) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,6,#20001,18,"icon") +#20047=@"loc,{#10000},2,15,2,18" +locations_default(#20047,#10000,2,15,2,18) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,8,#20001,19,"/") +#20049=@"loc,{#10000},2,19,2,19" +locations_default(#20049,#10000,2,19,2,19) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,20,">") +#20051=@"loc,{#10000},2,20,2,20" +locations_default(#20051,#10000,2,20,2,20) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,8,#20001,21,"<") +#20053=@"loc,{#10000},3,3,3,3" +locations_default(#20053,#10000,3,3,3,3) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,6,#20001,22,"name") +#20055=@"loc,{#10000},3,4,3,7" +locations_default(#20055,#10000,3,4,3,7) +hasLocation(#20054,#20055) #20056=* -tokeninfo(#20056,6,#20001,2,"className") -hasLocation(#20056,#20011) -#20057=* -tokeninfo(#20057,8,#20001,3,"=") -#20058=@"loc,{#10000},1,15,1,15" -locations_default(#20058,#10000,1,15,1,15) -hasLocation(#20057,#20058) -#20059=* -tokeninfo(#20059,8,#20001,4,"{") -#20060=@"loc,{#10000},1,16,1,16" -locations_default(#20060,#10000,1,16,1,16) -hasLocation(#20059,#20060) -#20061=* -tokeninfo(#20061,6,#20001,5,"className") -hasLocation(#20061,#20013) +tokeninfo(#20056,8,#20001,23,"-") +#20057=@"loc,{#10000},3,8,3,8" +locations_default(#20057,#10000,3,8,3,8) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,7,#20001,24,"with") +#20059=@"loc,{#10000},3,9,3,12" +locations_default(#20059,#10000,3,9,3,12) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,8,#20001,25,"-") +#20061=@"loc,{#10000},3,13,3,13" +locations_default(#20061,#10000,3,13,3,13) +hasLocation(#20060,#20061) #20062=* -tokeninfo(#20062,8,#20001,6,"}") -#20063=@"loc,{#10000},1,28,1,28" -locations_default(#20063,#10000,1,28,1,28) +tokeninfo(#20062,6,#20001,26,"dashes") +#20063=@"loc,{#10000},3,14,3,19" +locations_default(#20063,#10000,3,14,3,19) hasLocation(#20062,#20063) #20064=* -tokeninfo(#20064,6,#20001,7,"title") -hasLocation(#20064,#20018) -#20065=* -tokeninfo(#20065,8,#20001,8,"=") -#20066=@"loc,{#10000},1,35,1,35" -locations_default(#20066,#10000,1,35,1,35) -hasLocation(#20065,#20066) -#20067=* -tokeninfo(#20067,8,#20001,9,"{") -#20068=@"loc,{#10000},1,36,1,36" -locations_default(#20068,#10000,1,36,1,36) -hasLocation(#20067,#20068) -#20069=* -tokeninfo(#20069,6,#20001,10,"title") -hasLocation(#20069,#20020) +tokeninfo(#20064,8,#20001,27,"/") +#20065=@"loc,{#10000},3,20,3,20" +locations_default(#20065,#10000,3,20,3,20) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,8,#20001,28,">") +#20067=@"loc,{#10000},3,21,3,21" +locations_default(#20067,#10000,3,21,3,21) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,8,#20001,29,"") -#20073=@"loc,{#10000},1,45,1,45" -locations_default(#20073,#10000,1,45,1,45) +tokeninfo(#20072,8,#20001,31,">") +#20073=@"loc,{#10000},4,6,4,6" +locations_default(#20073,#10000,4,6,4,6) hasLocation(#20072,#20073) #20074=* -tokeninfo(#20074,8,#20001,13,"<") -#20075=@"loc,{#10000},2,3,2,3" -locations_default(#20075,#10000,2,3,2,3) +tokeninfo(#20074,0,#20001,32,"") +#20075=@"loc,{#10000},5,1,5,0" +locations_default(#20075,#10000,5,1,5,0) hasLocation(#20074,#20075) -#20076=* -tokeninfo(#20076,7,#20001,14,"this") -hasLocation(#20076,#20031) +toplevels(#20001,0) +#20076=@"loc,{#10000},1,1,5,0" +locations_default(#20076,#10000,1,1,5,0) +hasLocation(#20001,#20076) #20077=* -tokeninfo(#20077,8,#20001,15,".") -#20078=@"loc,{#10000},2,8,2,8" -locations_default(#20078,#10000,2,8,2,8) +stmts(#20077,2,#20001,0,"
") +#20078=@"loc,{#10000},1,1,4,6" +locations_default(#20078,#10000,1,1,4,6) hasLocation(#20077,#20078) +stmtContainers(#20077,#20001) #20079=* -tokeninfo(#20079,6,#20001,16,"props") -hasLocation(#20079,#20034) +exprs(#20079,89,#20077,0,"
") +hasLocation(#20079,#20078) +enclosingStmt(#20079,#20077) +exprContainers(#20079,#20001) #20080=* -tokeninfo(#20080,8,#20001,17,".") -#20081=@"loc,{#10000},2,14,2,14" -locations_default(#20081,#10000,2,14,2,14) -hasLocation(#20080,#20081) -#20082=* -tokeninfo(#20082,6,#20001,18,"icon") -hasLocation(#20082,#20036) +exprs(#20080,0,#20079,-1,"div") +hasLocation(#20080,#20013) +enclosingStmt(#20080,#20077) +exprContainers(#20080,#20001) +literals("div","div",#20080) +#20081=* +properties(#20081,#20079,0,3,"classNa ... sName }") +#20082=@"loc,{#10000},1,6,1,28" +locations_default(#20082,#10000,1,6,1,28) +hasLocation(#20081,#20082) #20083=* -tokeninfo(#20083,8,#20001,19,"/") -#20084=@"loc,{#10000},2,19,2,19" -locations_default(#20084,#10000,2,19,2,19) -hasLocation(#20083,#20084) -#20085=* -tokeninfo(#20085,8,#20001,20,">") -#20086=@"loc,{#10000},2,20,2,20" -locations_default(#20086,#10000,2,20,2,20) -hasLocation(#20085,#20086) -#20087=* -tokeninfo(#20087,8,#20001,21,"<") -#20088=@"loc,{#10000},3,3,3,3" -locations_default(#20088,#10000,3,3,3,3) -hasLocation(#20087,#20088) +exprs(#20083,0,#20081,0,"className") +hasLocation(#20083,#20015) +enclosingStmt(#20083,#20077) +exprContainers(#20083,#20001) +literals("className","className",#20083) +#20084=* +exprs(#20084,79,#20081,1,"className") +hasLocation(#20084,#20021) +enclosingStmt(#20084,#20077) +exprContainers(#20084,#20001) +literals("className","className",#20084) +#20085=@"var;{className};{#20000}" +variables(#20085,"className",#20000) +bind(#20084,#20085) +#20086=* +properties(#20086,#20079,1,3,"title={ title }") +#20087=@"loc,{#10000},1,30,1,44" +locations_default(#20087,#10000,1,30,1,44) +hasLocation(#20086,#20087) +#20088=* +exprs(#20088,0,#20086,0,"title") +hasLocation(#20088,#20025) +enclosingStmt(#20088,#20077) +exprContainers(#20088,#20001) +literals("title","title",#20088) #20089=* -tokeninfo(#20089,6,#20001,22,"name") -#20090=@"loc,{#10000},3,4,3,7" -locations_default(#20090,#10000,3,4,3,7) -hasLocation(#20089,#20090) +exprs(#20089,79,#20086,1,"title") +hasLocation(#20089,#20031) +enclosingStmt(#20089,#20077) +exprContainers(#20089,#20001) +literals("title","title",#20089) +#20090=@"var;{title};{#20000}" +variables(#20090,"title",#20000) +bind(#20089,#20090) #20091=* -tokeninfo(#20091,8,#20001,23,"-") -#20092=@"loc,{#10000},3,8,3,8" -locations_default(#20092,#10000,3,8,3,8) +exprs(#20091,4,#20079,-2,"") +#20092=@"loc,{#10000},2,3,2,2" +locations_default(#20092,#10000,2,3,2,2) hasLocation(#20091,#20092) +enclosingStmt(#20091,#20077) +exprContainers(#20091,#20001) +literals("","",#20091) #20093=* -tokeninfo(#20093,7,#20001,24,"with") -#20094=@"loc,{#10000},3,9,3,12" -locations_default(#20094,#10000,3,9,3,12) +exprs(#20093,89,#20079,-3,"") +#20094=@"loc,{#10000},2,3,2,20" +locations_default(#20094,#10000,2,3,2,20) hasLocation(#20093,#20094) +enclosingStmt(#20093,#20077) +exprContainers(#20093,#20001) #20095=* -tokeninfo(#20095,8,#20001,25,"-") -#20096=@"loc,{#10000},3,13,3,13" -locations_default(#20096,#10000,3,13,3,13) +exprs(#20095,14,#20093,-1,"this.props.icon") +#20096=@"loc,{#10000},2,4,2,18" +locations_default(#20096,#10000,2,4,2,18) hasLocation(#20095,#20096) +enclosingStmt(#20095,#20077) +exprContainers(#20095,#20001) #20097=* -tokeninfo(#20097,6,#20001,26,"dashes") -#20098=@"loc,{#10000},3,14,3,19" -locations_default(#20098,#10000,3,14,3,19) +exprs(#20097,14,#20095,0,"this.props") +#20098=@"loc,{#10000},2,4,2,13" +locations_default(#20098,#10000,2,4,2,13) hasLocation(#20097,#20098) +enclosingStmt(#20097,#20077) +exprContainers(#20097,#20001) #20099=* -tokeninfo(#20099,8,#20001,27,"/") -#20100=@"loc,{#10000},3,20,3,20" -locations_default(#20100,#10000,3,20,3,20) -hasLocation(#20099,#20100) +exprs(#20099,79,#20097,0,"this") +hasLocation(#20099,#20039) +enclosingStmt(#20099,#20077) +exprContainers(#20099,#20001) +literals("this","this",#20099) +#20100=@"var;{this};{#20000}" +variables(#20100,"this",#20000) +bind(#20099,#20100) #20101=* -tokeninfo(#20101,8,#20001,28,">") -#20102=@"loc,{#10000},3,21,3,21" -locations_default(#20102,#10000,3,21,3,21) -hasLocation(#20101,#20102) +exprs(#20101,0,#20097,1,"props") +hasLocation(#20101,#20043) +enclosingStmt(#20101,#20077) +exprContainers(#20101,#20001) +literals("props","props",#20101) +#20102=* +exprs(#20102,0,#20095,1,"icon") +hasLocation(#20102,#20047) +enclosingStmt(#20102,#20077) +exprContainers(#20102,#20001) +literals("icon","icon",#20102) #20103=* -tokeninfo(#20103,8,#20001,29,"") +#20106=@"loc,{#10000},3,3,3,21" +locations_default(#20106,#10000,3,3,3,21) hasLocation(#20105,#20106) +enclosingStmt(#20105,#20077) +exprContainers(#20105,#20001) #20107=* -tokeninfo(#20107,8,#20001,31,">") -#20108=@"loc,{#10000},4,6,4,6" -locations_default(#20108,#10000,4,6,4,6) +exprs(#20107,0,#20105,-1,"name-with-dashes") +#20108=@"loc,{#10000},3,4,3,19" +locations_default(#20108,#10000,3,4,3,19) hasLocation(#20107,#20108) +enclosingStmt(#20107,#20077) +exprContainers(#20107,#20001) +literals("name-with-dashes","name-with-dashes",#20107) #20109=* -tokeninfo(#20109,0,#20001,32,"") -#20110=@"loc,{#10000},5,1,5,0" -locations_default(#20110,#10000,5,1,5,0) +exprs(#20109,4,#20079,-6,"") +#20110=@"loc,{#10000},4,1,4,0" +locations_default(#20110,#10000,4,1,4,0) hasLocation(#20109,#20110) +enclosingStmt(#20109,#20077) +exprContainers(#20109,#20001) +literals("","",#20109) #20111=* entry_cfg_node(#20111,#20001) #20112=@"loc,{#10000},1,1,1,0" @@ -350,27 +350,27 @@ locations_default(#20112,#10000,1,1,1,0) hasLocation(#20111,#20112) #20113=* exit_cfg_node(#20113,#20001) -hasLocation(#20113,#20110) -successor(#20003,#20006) -successor(#20043,#20005) -successor(#20041,#20039) -successor(#20039,#20043) -successor(#20037,#20041) -successor(#20035,#20026) -successor(#20033,#20028) -successor(#20030,#20033) -successor(#20028,#20035) -successor(#20026,#20024) -successor(#20024,#20037) -successor(#20022,#20030) -successor(#20019,#20015) -successor(#20017,#20019) -successor(#20015,#20022) -successor(#20012,#20008) -successor(#20010,#20012) -successor(#20008,#20017) -successor(#20006,#20010) -successor(#20005,#20113) -successor(#20111,#20003) +hasLocation(#20113,#20075) +successor(#20077,#20080) +successor(#20109,#20079) +successor(#20107,#20105) +successor(#20105,#20109) +successor(#20103,#20107) +successor(#20102,#20095) +successor(#20101,#20097) +successor(#20099,#20101) +successor(#20097,#20102) +successor(#20095,#20093) +successor(#20093,#20103) +successor(#20091,#20099) +successor(#20089,#20086) +successor(#20088,#20089) +successor(#20086,#20091) +successor(#20084,#20081) +successor(#20083,#20084) +successor(#20081,#20088) +successor(#20080,#20083) +successor(#20079,#20113) +successor(#20111,#20077) numlines(#10000,4,4,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/typeannotations.ts.trap b/javascript/extractor/tests/ts/output/trap/typeannotations.ts.trap index b968796c59b..b9eacd95a3d 100644 --- a/javascript/extractor/tests/ts/output/trap/typeannotations.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/typeannotations.ts.trap @@ -9,4585 +9,4571 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,66,0" -locations_default(#20002,#10000,1,1,66,0) -hasLocation(#20001,#20002) -#20003=@"var;{anyVar};{#20000}" -variables(#20003,"anyVar",#20000) -#20004=@"var;{objectVar};{#20000}" -variables(#20004,"objectVar",#20000) -#20005=@"var;{numberVar};{#20000}" -variables(#20005,"numberVar",#20000) -#20006=@"var;{stringVar};{#20000}" -variables(#20006,"stringVar",#20000) -#20007=@"var;{booleanVar};{#20000}" -variables(#20007,"booleanVar",#20000) -#20008=@"var;{nullVar};{#20000}" -variables(#20008,"nullVar",#20000) -#20009=@"var;{undefinedVar};{#20000}" -variables(#20009,"undefinedVar",#20000) -#20010=@"var;{voidVar};{#20000}" -variables(#20010,"voidVar",#20000) -#20011=@"var;{neverVar};{#20000}" -variables(#20011,"neverVar",#20000) -#20012=@"var;{symbolVar};{#20000}" -variables(#20012,"symbolVar",#20000) -#20013=@"var;{nestedObjectVar};{#20000}" -variables(#20013,"nestedObjectVar",#20000) -#20014=@"var;{arrayVar};{#20000}" -variables(#20014,"arrayVar",#20000) -#20015=@"var;{stringObjectVar};{#20000}" -variables(#20015,"stringObjectVar",#20000) -#20016=@"var;{pointVar};{#20000}" -variables(#20016,"pointVar",#20000) -#20017=@"var;{rawFunctionVar};{#20000}" -variables(#20017,"rawFunctionVar",#20000) -#20018=@"var;{varVar};{#20000}" -variables(#20018,"varVar",#20000) -#20019=@"var;{genericArrayVar};{#20000}" -variables(#20019,"genericArrayVar",#20000) -#20020=@"var;{nestedGenericVar};{#20000}" -variables(#20020,"nestedGenericVar",#20000) -#20021=@"var;{callSigVar};{#20000}" -variables(#20021,"callSigVar",#20000) -#20022=@"var;{constructSigVar};{#20000}" -variables(#20022,"constructSigVar",#20000) -#20023=@"var;{callSigVoidVar};{#20000}" -variables(#20023,"callSigVoidVar",#20000) -#20024=@"var;{callSigNeverVar};{#20000}" -variables(#20024,"callSigNeverVar",#20000) -#20025=@"var;{unionVar};{#20000}" -variables(#20025,"unionVar",#20000) -#20026=@"var;{stringLiteralVar};{#20000}" -variables(#20026,"stringLiteralVar",#20000) -#20027=@"var;{trueVar};{#20000}" -variables(#20027,"trueVar",#20000) -#20028=@"var;{falseVar};{#20000}" -variables(#20028,"falseVar",#20000) -#20029=@"var;{intLiteralVar};{#20000}" -variables(#20029,"intLiteralVar",#20000) -#20030=@"var;{doubleLiteralVar};{#20000}" -variables(#20030,"doubleLiteralVar",#20000) -#20031=@"var;{tupleVar};{#20000}" -variables(#20031,"tupleVar",#20000) -#20032=@"var;{longUnionVar};{#20000}" -variables(#20032,"longUnionVar",#20000) -#20033=@"var;{intersectVar};{#20000}" -variables(#20033,"intersectVar",#20000) -#20034=@"var;{genericCallSigVar};{#20000}" -variables(#20034,"genericCallSigVar",#20000) -#20035=@"var;{genericConstructSigVar};{#20000}" -variables(#20035,"genericConstructSigVar",#20000) -#20036=@"var;{keyofVar};{#20000}" -variables(#20036,"keyofVar",#20000) -#20037=@"var;{indexedVar};{#20000}" -variables(#20037,"indexedVar",#20000) -#20038=@"var;{typeofVar};{#20000}" -variables(#20038,"typeofVar",#20000) -#20039=@"var;{mappedVar};{#20000}" -variables(#20039,"mappedVar",#20000) -#20040=@"var;{parenthesizedVar};{#20000}" -variables(#20040,"parenthesizedVar",#20000) -#20041=@"var;{namespaceTypeVar};{#20000}" -variables(#20041,"namespaceTypeVar",#20000) -#20042=@"var;{namespaceGenericTypeVar};{#20000}" -variables(#20042,"namespaceGenericTypeVar",#20000) -#20043=@"var;{isFish};{#20000}" -variables(#20043,"isFish",#20000) -#20044=@"local_namespace_name;{N};{#20000}" -local_namespace_names(#20044,"N",#20000) -#20045=@"var;{GenericClass};{#20000}" -variables(#20045,"GenericClass",#20000) -#20046=@"var;{Fish};{#20000}" -variables(#20046,"Fish",#20000) -#20047=@"var;{Bird};{#20000}" -variables(#20047,"Bird",#20000) -#20048=@"var;{ThisTypes};{#20000}" -variables(#20048,"ThisTypes",#20000) -#20049=@"local_type_name;{Point};{#20000}" -local_type_names(#20049,"Point",#20000) -#20050=@"local_type_name;{GenericInterface};{#20000}" -local_type_names(#20050,"GenericInterface",#20000) -#20051=@"local_type_name;{GenericClass};{#20000}" -local_type_names(#20051,"GenericClass",#20000) -#20052=@"local_type_name;{Fish};{#20000}" -local_type_names(#20052,"Fish",#20000) -#20053=@"local_type_name;{Bird};{#20000}" -local_type_names(#20053,"Bird",#20000) -#20054=@"local_type_name;{ThisTypes};{#20000}" -local_type_names(#20054,"ThisTypes",#20000) -#20055=* -stmts(#20055,34,#20001,0,"interfa ... umber }") -#20056=@"loc,{#10000},1,1,1,40" -locations_default(#20056,#10000,1,1,1,40) -hasLocation(#20055,#20056) -stmtContainers(#20055,#20001) -#20057=* -typeexprs(#20057,1,#20055,0,"Point") -#20058=@"loc,{#10000},1,11,1,15" -locations_default(#20058,#10000,1,11,1,15) -hasLocation(#20057,#20058) -enclosingStmt(#20057,#20055) -exprContainers(#20057,#20001) -literals("Point","Point",#20057) -typedecl(#20057,#20049) -#20059=* -properties(#20059,#20055,2,8,"x: number;") -#20060=@"loc,{#10000},1,19,1,28" -locations_default(#20060,#10000,1,19,1,28) -hasLocation(#20059,#20060) -#20061=* -exprs(#20061,0,#20059,0,"x") -#20062=@"loc,{#10000},1,19,1,19" -locations_default(#20062,#10000,1,19,1,19) -hasLocation(#20061,#20062) -enclosingStmt(#20061,#20055) -exprContainers(#20061,#20001) -literals("x","x",#20061) -isAbstractMember(#20059) -#20063=* -typeexprs(#20063,2,#20059,2,"number") -#20064=@"loc,{#10000},1,22,1,27" -locations_default(#20064,#10000,1,22,1,27) -hasLocation(#20063,#20064) -enclosingStmt(#20063,#20055) -exprContainers(#20063,#20001) -literals("number","number",#20063) -#20065=* -properties(#20065,#20055,3,8,"y: number") -#20066=@"loc,{#10000},1,30,1,38" -locations_default(#20066,#10000,1,30,1,38) -hasLocation(#20065,#20066) -#20067=* -exprs(#20067,0,#20065,0,"y") -#20068=@"loc,{#10000},1,30,1,30" -locations_default(#20068,#10000,1,30,1,30) -hasLocation(#20067,#20068) -enclosingStmt(#20067,#20055) -exprContainers(#20067,#20001) -literals("y","y",#20067) -isAbstractMember(#20065) -#20069=* -typeexprs(#20069,2,#20065,2,"number") -#20070=@"loc,{#10000},1,33,1,38" -locations_default(#20070,#10000,1,33,1,38) -hasLocation(#20069,#20070) -enclosingStmt(#20069,#20055) -exprContainers(#20069,#20001) -literals("number","number",#20069) -#20071=* -stmts(#20071,31,#20001,1,"namespa ... T> {}\n}") -#20072=@"loc,{#10000},3,1,6,1" -locations_default(#20072,#10000,3,1,6,1) -hasLocation(#20071,#20072) -stmtContainers(#20071,#20001) -#20073=* -exprs(#20073,78,#20071,-1,"N") -#20074=@"loc,{#10000},3,11,3,11" -locations_default(#20074,#10000,3,11,3,11) -hasLocation(#20073,#20074) -enclosingStmt(#20073,#20071) -exprContainers(#20073,#20001) -literals("N","N",#20073) -namespacedecl(#20073,#20044) -#20075=* -scopes(#20075,9) -scopenodes(#20071,#20075) -scopenesting(#20075,#20000) -#20076=@"local_type_name;{I};{#20075}" -local_type_names(#20076,"I",#20075) -#20077=@"local_type_name;{J};{#20075}" -local_type_names(#20077,"J",#20075) +#20002=* +lines(#20002,#20001,"interface Point { x: number; y: number }"," +") +#20003=@"loc,{#10000},1,1,1,40" +locations_default(#20003,#10000,1,1,1,40) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,""," +") +#20005=@"loc,{#10000},2,1,2,0" +locations_default(#20005,#10000,2,1,2,0) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"namespace N {"," +") +#20007=@"loc,{#10000},3,1,3,13" +locations_default(#20007,#10000,3,1,3,13) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001," export interface I {}"," +") +#20009=@"loc,{#10000},4,1,4,23" +locations_default(#20009,#10000,4,1,4,23) +hasLocation(#20008,#20009) +indentation(#10000,4," ",2) +#20010=* +lines(#20010,#20001," export interface J {}"," +") +#20011=@"loc,{#10000},5,1,5,26" +locations_default(#20011,#10000,5,1,5,26) +hasLocation(#20010,#20011) +indentation(#10000,5," ",2) +#20012=* +lines(#20012,#20001,"}"," +") +#20013=@"loc,{#10000},6,1,6,1" +locations_default(#20013,#10000,6,1,6,1) +hasLocation(#20012,#20013) +#20014=* +lines(#20014,#20001,""," +") +#20015=@"loc,{#10000},7,1,7,0" +locations_default(#20015,#10000,7,1,7,0) +hasLocation(#20014,#20015) +#20016=* +lines(#20016,#20001,"var anyVar: any;"," +") +#20017=@"loc,{#10000},8,1,8,28" +locations_default(#20017,#10000,8,1,8,28) +hasLocation(#20016,#20017) +#20018=* +lines(#20018,#20001,"var objectVar: object;"," +") +#20019=@"loc,{#10000},9,1,9,31" +locations_default(#20019,#10000,9,1,9,31) +hasLocation(#20018,#20019) +#20020=* +lines(#20020,#20001,"var numberVar: number;"," +") +#20021=@"loc,{#10000},10,1,10,31" +locations_default(#20021,#10000,10,1,10,31) +hasLocation(#20020,#20021) +#20022=* +lines(#20022,#20001,"var stringVar: string;"," +") +#20023=@"loc,{#10000},11,1,11,31" +locations_default(#20023,#10000,11,1,11,31) +hasLocation(#20022,#20023) +#20024=* +lines(#20024,#20001,"var booleanVar: boolean;"," +") +#20025=@"loc,{#10000},12,1,12,32" +locations_default(#20025,#10000,12,1,12,32) +hasLocation(#20024,#20025) +#20026=* +lines(#20026,#20001,"var nullVar: null;"," +") +#20027=@"loc,{#10000},13,1,13,29" +locations_default(#20027,#10000,13,1,13,29) +hasLocation(#20026,#20027) +#20028=* +lines(#20028,#20001,"var undefinedVar: undefined;"," +") +#20029=@"loc,{#10000},14,1,14,34" +locations_default(#20029,#10000,14,1,14,34) +hasLocation(#20028,#20029) +#20030=* +lines(#20030,#20001,"var voidVar: void;"," +") +#20031=@"loc,{#10000},15,1,15,29" +locations_default(#20031,#10000,15,1,15,29) +hasLocation(#20030,#20031) +#20032=* +lines(#20032,#20001,"var neverVar: never;"," +") +#20033=@"loc,{#10000},16,1,16,30" +locations_default(#20033,#10000,16,1,16,30) +hasLocation(#20032,#20033) +#20034=* +lines(#20034,#20001,"var symbolVar: symbol;"," +") +#20035=@"loc,{#10000},17,1,17,31" +locations_default(#20035,#10000,17,1,17,31) +hasLocation(#20034,#20035) +#20036=* +lines(#20036,#20001,"var objectVar: { x: number; }"," +") +#20037=@"loc,{#10000},18,1,18,38" +locations_default(#20037,#10000,18,1,18,38) +hasLocation(#20036,#20037) +#20038=* +lines(#20038,#20001,"var nestedObjectVar: { x: { y: number } }"," +") +#20039=@"loc,{#10000},19,1,19,44" +locations_default(#20039,#10000,19,1,19,44) +hasLocation(#20038,#20039) +#20040=* +lines(#20040,#20001,"var arrayVar: number[]"," +") +#20041=@"loc,{#10000},20,1,20,32" +locations_default(#20041,#10000,20,1,20,32) +hasLocation(#20040,#20041) +#20042=* +lines(#20042,#20001,"var stringObjectVar: String"," +") +#20043=@"loc,{#10000},21,1,21,30" +locations_default(#20043,#10000,21,1,21,30) +hasLocation(#20042,#20043) +#20044=* +lines(#20044,#20001,"var pointVar: Point"," +") +#20045=@"loc,{#10000},22,1,22,29" +locations_default(#20045,#10000,22,1,22,29) +hasLocation(#20044,#20045) +#20046=* +lines(#20046,#20001,"var rawFunctionVar: Function"," +") +#20047=@"loc,{#10000},23,1,23,32" +locations_default(#20047,#10000,23,1,23,32) +hasLocation(#20046,#20047) +#20048=* +lines(#20048,#20001,"var varVar: x11"," +") +#20049=@"loc,{#10000},24,1,24,27" +locations_default(#20049,#10000,24,1,24,27) +hasLocation(#20048,#20049) +#20050=* +lines(#20050,#20001,"var genericArrayVar: Array"," +") +#20051=@"loc,{#10000},25,1,25,37" +locations_default(#20051,#10000,25,1,25,37) +hasLocation(#20050,#20051) +#20052=* +lines(#20052,#20001,"var nestedGenericVar: Foo>"," +") +#20053=@"loc,{#10000},26,1,26,40" +locations_default(#20053,#10000,26,1,26,40) +hasLocation(#20052,#20053) +#20054=* +lines(#20054,#20001,"var callSigVar: () => number;"," +") +#20055=@"loc,{#10000},27,1,27,37" +locations_default(#20055,#10000,27,1,27,37) +hasLocation(#20054,#20055) +#20056=* +lines(#20056,#20001,"var constructSigVar: new () => Point;"," +") +#20057=@"loc,{#10000},28,1,28,40" +locations_default(#20057,#10000,28,1,28,40) +hasLocation(#20056,#20057) +#20058=* +lines(#20058,#20001,"var callSigVoidVar: () => void;"," +") +#20059=@"loc,{#10000},29,1,29,35" +locations_default(#20059,#10000,29,1,29,35) +hasLocation(#20058,#20059) +#20060=* +lines(#20060,#20001,"var callSigNeverVar: () => never;"," +") +#20061=@"loc,{#10000},30,1,30,36" +locations_default(#20061,#10000,30,1,30,36) +hasLocation(#20060,#20061) +#20062=* +lines(#20062,#20001,"var unionVar: number | string;"," +") +#20063=@"loc,{#10000},31,1,31,40" +locations_default(#20063,#10000,31,1,31,40) +hasLocation(#20062,#20063) +#20064=* +lines(#20064,#20001,"var stringLiteralVar: ""literal"";"," +") +#20065=@"loc,{#10000},32,1,32,34" +locations_default(#20065,#10000,32,1,32,34) +hasLocation(#20064,#20065) +#20066=* +lines(#20066,#20001,"var trueVar: true;"," +") +#20067=@"loc,{#10000},33,1,33,29" +locations_default(#20067,#10000,33,1,33,29) +hasLocation(#20066,#20067) +#20068=* +lines(#20068,#20001,"var falseVar: false;"," +") +#20069=@"loc,{#10000},34,1,34,30" +locations_default(#20069,#10000,34,1,34,30) +hasLocation(#20068,#20069) +#20070=* +lines(#20070,#20001,"var intLiteralVar: 100;"," +") +#20071=@"loc,{#10000},35,1,35,28" +locations_default(#20071,#10000,35,1,35,28) +hasLocation(#20070,#20071) +#20072=* +lines(#20072,#20001,"var doubleLiteralVar: 100.50;"," +") +#20073=@"loc,{#10000},36,1,36,31" +locations_default(#20073,#10000,36,1,36,31) +hasLocation(#20072,#20073) +#20074=* +lines(#20074,#20001,"var tupleVar: [string, number]"," +") +#20075=@"loc,{#10000},37,1,37,40" +locations_default(#20075,#10000,37,1,37,40) +hasLocation(#20074,#20075) +#20076=* +lines(#20076,#20001,"var longUnionVar: null | 1 | ""two"" | [3]"," +") +#20077=@"loc,{#10000},38,1,38,46" +locations_default(#20077,#10000,38,1,38,46) +hasLocation(#20076,#20077) #20078=* -stmts(#20078,30,#20071,0,"export ... ce I {}") -#20079=@"loc,{#10000},4,3,4,23" -locations_default(#20079,#10000,4,3,4,23) +lines(#20078,#20001,"var intersectVar: Foo & Bar;"," +") +#20079=@"loc,{#10000},39,1,39,34" +locations_default(#20079,#10000,39,1,39,34) hasLocation(#20078,#20079) -stmtContainers(#20078,#20071) #20080=* -stmts(#20080,34,#20078,-1,"interface I {}") -#20081=@"loc,{#10000},4,10,4,23" -locations_default(#20081,#10000,4,10,4,23) +lines(#20080,#20001,"var genericCallSigVar: (x: T) => T;"," +") +#20081=@"loc,{#10000},40,1,40,39" +locations_default(#20081,#10000,40,1,40,39) hasLocation(#20080,#20081) -stmtContainers(#20080,#20071) #20082=* -typeexprs(#20082,1,#20080,0,"I") -#20083=@"loc,{#10000},4,20,4,20" -locations_default(#20083,#10000,4,20,4,20) +lines(#20082,#20001,"var genericConstructSigVar: new (x: T) => T;"," +") +#20083=@"loc,{#10000},41,1,41,47" +locations_default(#20083,#10000,41,1,41,47) hasLocation(#20082,#20083) -enclosingStmt(#20082,#20080) -exprContainers(#20082,#20071) -literals("I","I",#20082) -typedecl(#20082,#20076) #20084=* -stmts(#20084,30,#20071,1,"export ... J {}") -#20085=@"loc,{#10000},5,3,5,26" -locations_default(#20085,#10000,5,3,5,26) +lines(#20084,#20001,"var keyofVar: keyof Point"," +") +#20085=@"loc,{#10000},42,1,42,35" +locations_default(#20085,#10000,42,1,42,35) hasLocation(#20084,#20085) -stmtContainers(#20084,#20071) #20086=* -stmts(#20086,34,#20084,-1,"interface J {}") -#20087=@"loc,{#10000},5,10,5,26" -locations_default(#20087,#10000,5,10,5,26) +lines(#20086,#20001,"var indexedVar: Point[""x""]"," +") +#20087=@"loc,{#10000},43,1,43,34" +locations_default(#20087,#10000,43,1,43,34) hasLocation(#20086,#20087) -stmtContainers(#20086,#20071) #20088=* -scopes(#20088,11) -scopenodes(#20086,#20088) -scopenesting(#20088,#20075) -#20089=@"local_type_name;{T};{#20088}" -local_type_names(#20089,"T",#20088) +lines(#20088,#20001,"var typeofVar: typeof x31"," +") +#20089=@"loc,{#10000},44,1,44,34" +locations_default(#20089,#10000,44,1,44,34) +hasLocation(#20088,#20089) #20090=* -typeexprs(#20090,22,#20086,-2,"T") -#20091=@"loc,{#10000},5,22,5,22" -locations_default(#20091,#10000,5,22,5,22) +lines(#20090,#20001,"var mappedVar: { [K in keyof Point]: any }"," +") +#20091=@"loc,{#10000},45,1,45,51" +locations_default(#20091,#10000,45,1,45,51) hasLocation(#20090,#20091) -enclosingStmt(#20090,#20086) -exprContainers(#20090,#20071) #20092=* -typeexprs(#20092,1,#20090,0,"T") -hasLocation(#20092,#20091) -enclosingStmt(#20092,#20086) -exprContainers(#20092,#20071) -literals("T","T",#20092) -typedecl(#20092,#20089) -#20093=* -typeexprs(#20093,1,#20086,0,"J") -#20094=@"loc,{#10000},5,20,5,20" -locations_default(#20094,#10000,5,20,5,20) -hasLocation(#20093,#20094) -enclosingStmt(#20093,#20086) -exprContainers(#20093,#20071) -literals("J","J",#20093) -typedecl(#20093,#20077) -#20095=* -stmts(#20095,18,#20001,2,"var any ... any;") -#20096=@"loc,{#10000},8,1,8,28" -locations_default(#20096,#10000,8,1,8,28) -hasLocation(#20095,#20096) -stmtContainers(#20095,#20001) -#20097=* -exprs(#20097,64,#20095,0,"anyVar: ... any") -#20098=@"loc,{#10000},8,5,8,27" -locations_default(#20098,#10000,8,5,8,27) -hasLocation(#20097,#20098) -enclosingStmt(#20097,#20095) -exprContainers(#20097,#20001) -#20099=* -exprs(#20099,78,#20097,0,"anyVar") -#20100=@"loc,{#10000},8,5,8,10" -locations_default(#20100,#10000,8,5,8,10) -hasLocation(#20099,#20100) -enclosingStmt(#20099,#20095) -exprContainers(#20099,#20001) -literals("anyVar","anyVar",#20099) -decl(#20099,#20003) -#20101=* -typeexprs(#20101,2,#20097,2,"any") -#20102=@"loc,{#10000},8,25,8,27" -locations_default(#20102,#10000,8,25,8,27) -hasLocation(#20101,#20102) -enclosingStmt(#20101,#20095) -exprContainers(#20101,#20001) -literals("any","any",#20101) -#20103=* -stmts(#20103,18,#20001,3,"var obj ... object;") -#20104=@"loc,{#10000},9,1,9,31" -locations_default(#20104,#10000,9,1,9,31) -hasLocation(#20103,#20104) -stmtContainers(#20103,#20001) -#20105=* -exprs(#20105,64,#20103,0,"objectV ... object") -#20106=@"loc,{#10000},9,5,9,30" -locations_default(#20106,#10000,9,5,9,30) -hasLocation(#20105,#20106) -enclosingStmt(#20105,#20103) -exprContainers(#20105,#20001) -#20107=* -exprs(#20107,78,#20105,0,"objectVar") -#20108=@"loc,{#10000},9,5,9,13" -locations_default(#20108,#10000,9,5,9,13) -hasLocation(#20107,#20108) -enclosingStmt(#20107,#20103) -exprContainers(#20107,#20001) -literals("objectVar","objectVar",#20107) -decl(#20107,#20004) -#20109=* -typeexprs(#20109,2,#20105,2,"object") -#20110=@"loc,{#10000},9,25,9,30" -locations_default(#20110,#10000,9,25,9,30) -hasLocation(#20109,#20110) -enclosingStmt(#20109,#20103) -exprContainers(#20109,#20001) -literals("object","object",#20109) -#20111=* -stmts(#20111,18,#20001,4,"var num ... number;") -#20112=@"loc,{#10000},10,1,10,31" -locations_default(#20112,#10000,10,1,10,31) -hasLocation(#20111,#20112) -stmtContainers(#20111,#20001) -#20113=* -exprs(#20113,64,#20111,0,"numberV ... number") -#20114=@"loc,{#10000},10,5,10,30" -locations_default(#20114,#10000,10,5,10,30) -hasLocation(#20113,#20114) -enclosingStmt(#20113,#20111) -exprContainers(#20113,#20001) -#20115=* -exprs(#20115,78,#20113,0,"numberVar") -#20116=@"loc,{#10000},10,5,10,13" -locations_default(#20116,#10000,10,5,10,13) -hasLocation(#20115,#20116) -enclosingStmt(#20115,#20111) -exprContainers(#20115,#20001) -literals("numberVar","numberVar",#20115) -decl(#20115,#20005) -#20117=* -typeexprs(#20117,2,#20113,2,"number") -#20118=@"loc,{#10000},10,25,10,30" -locations_default(#20118,#10000,10,25,10,30) -hasLocation(#20117,#20118) -enclosingStmt(#20117,#20111) -exprContainers(#20117,#20001) -literals("number","number",#20117) -#20119=* -stmts(#20119,18,#20001,5,"var str ... string;") -#20120=@"loc,{#10000},11,1,11,31" -locations_default(#20120,#10000,11,1,11,31) -hasLocation(#20119,#20120) -stmtContainers(#20119,#20001) -#20121=* -exprs(#20121,64,#20119,0,"stringV ... string") -#20122=@"loc,{#10000},11,5,11,30" -locations_default(#20122,#10000,11,5,11,30) -hasLocation(#20121,#20122) -enclosingStmt(#20121,#20119) -exprContainers(#20121,#20001) -#20123=* -exprs(#20123,78,#20121,0,"stringVar") -#20124=@"loc,{#10000},11,5,11,13" -locations_default(#20124,#10000,11,5,11,13) -hasLocation(#20123,#20124) -enclosingStmt(#20123,#20119) -exprContainers(#20123,#20001) -literals("stringVar","stringVar",#20123) -decl(#20123,#20006) -#20125=* -typeexprs(#20125,2,#20121,2,"string") -#20126=@"loc,{#10000},11,25,11,30" -locations_default(#20126,#10000,11,25,11,30) -hasLocation(#20125,#20126) -enclosingStmt(#20125,#20119) -exprContainers(#20125,#20001) -literals("string","string",#20125) -#20127=* -stmts(#20127,18,#20001,6,"var boo ... oolean;") -#20128=@"loc,{#10000},12,1,12,32" -locations_default(#20128,#10000,12,1,12,32) -hasLocation(#20127,#20128) -stmtContainers(#20127,#20001) -#20129=* -exprs(#20129,64,#20127,0,"boolean ... boolean") -#20130=@"loc,{#10000},12,5,12,31" -locations_default(#20130,#10000,12,5,12,31) -hasLocation(#20129,#20130) -enclosingStmt(#20129,#20127) -exprContainers(#20129,#20001) -#20131=* -exprs(#20131,78,#20129,0,"booleanVar") -#20132=@"loc,{#10000},12,5,12,14" -locations_default(#20132,#10000,12,5,12,14) -hasLocation(#20131,#20132) -enclosingStmt(#20131,#20127) -exprContainers(#20131,#20001) -literals("booleanVar","booleanVar",#20131) -decl(#20131,#20007) -#20133=* -typeexprs(#20133,2,#20129,2,"boolean") -#20134=@"loc,{#10000},12,25,12,31" -locations_default(#20134,#10000,12,25,12,31) -hasLocation(#20133,#20134) -enclosingStmt(#20133,#20127) -exprContainers(#20133,#20001) -literals("boolean","boolean",#20133) -#20135=* -stmts(#20135,18,#20001,7,"var nul ... null;") -#20136=@"loc,{#10000},13,1,13,29" -locations_default(#20136,#10000,13,1,13,29) -hasLocation(#20135,#20136) -stmtContainers(#20135,#20001) -#20137=* -exprs(#20137,64,#20135,0,"nullVar ... null") -#20138=@"loc,{#10000},13,5,13,28" -locations_default(#20138,#10000,13,5,13,28) -hasLocation(#20137,#20138) -enclosingStmt(#20137,#20135) -exprContainers(#20137,#20001) -#20139=* -exprs(#20139,78,#20137,0,"nullVar") -#20140=@"loc,{#10000},13,5,13,11" -locations_default(#20140,#10000,13,5,13,11) -hasLocation(#20139,#20140) -enclosingStmt(#20139,#20135) -exprContainers(#20139,#20001) -literals("nullVar","nullVar",#20139) -decl(#20139,#20008) -#20141=* -typeexprs(#20141,2,#20137,2,"null") -#20142=@"loc,{#10000},13,25,13,28" -locations_default(#20142,#10000,13,25,13,28) -hasLocation(#20141,#20142) -enclosingStmt(#20141,#20135) -exprContainers(#20141,#20001) -literals("null","null",#20141) -#20143=* -stmts(#20143,18,#20001,8,"var und ... efined;") -#20144=@"loc,{#10000},14,1,14,34" -locations_default(#20144,#10000,14,1,14,34) -hasLocation(#20143,#20144) -stmtContainers(#20143,#20001) -#20145=* -exprs(#20145,64,#20143,0,"undefin ... defined") -#20146=@"loc,{#10000},14,5,14,33" -locations_default(#20146,#10000,14,5,14,33) -hasLocation(#20145,#20146) -enclosingStmt(#20145,#20143) -exprContainers(#20145,#20001) -#20147=* -exprs(#20147,78,#20145,0,"undefinedVar") -#20148=@"loc,{#10000},14,5,14,16" -locations_default(#20148,#10000,14,5,14,16) -hasLocation(#20147,#20148) -enclosingStmt(#20147,#20143) -exprContainers(#20147,#20001) -literals("undefinedVar","undefinedVar",#20147) -decl(#20147,#20009) -#20149=* -typeexprs(#20149,2,#20145,2,"undefined") -#20150=@"loc,{#10000},14,25,14,33" -locations_default(#20150,#10000,14,25,14,33) -hasLocation(#20149,#20150) -enclosingStmt(#20149,#20143) -exprContainers(#20149,#20001) -literals("undefined","undefined",#20149) -#20151=* -stmts(#20151,18,#20001,9,"var voi ... void;") -#20152=@"loc,{#10000},15,1,15,29" -locations_default(#20152,#10000,15,1,15,29) -hasLocation(#20151,#20152) -stmtContainers(#20151,#20001) -#20153=* -exprs(#20153,64,#20151,0,"voidVar ... void") -#20154=@"loc,{#10000},15,5,15,28" -locations_default(#20154,#10000,15,5,15,28) -hasLocation(#20153,#20154) -enclosingStmt(#20153,#20151) -exprContainers(#20153,#20001) -#20155=* -exprs(#20155,78,#20153,0,"voidVar") -#20156=@"loc,{#10000},15,5,15,11" -locations_default(#20156,#10000,15,5,15,11) -hasLocation(#20155,#20156) -enclosingStmt(#20155,#20151) -exprContainers(#20155,#20001) -literals("voidVar","voidVar",#20155) -decl(#20155,#20010) -#20157=* -typeexprs(#20157,2,#20153,2,"void") -#20158=@"loc,{#10000},15,25,15,28" -locations_default(#20158,#10000,15,25,15,28) -hasLocation(#20157,#20158) -enclosingStmt(#20157,#20151) -exprContainers(#20157,#20001) -literals("void","void",#20157) -#20159=* -stmts(#20159,18,#20001,10,"var nev ... never;") -#20160=@"loc,{#10000},16,1,16,30" -locations_default(#20160,#10000,16,1,16,30) -hasLocation(#20159,#20160) -stmtContainers(#20159,#20001) -#20161=* -exprs(#20161,64,#20159,0,"neverVa ... never") -#20162=@"loc,{#10000},16,5,16,29" -locations_default(#20162,#10000,16,5,16,29) -hasLocation(#20161,#20162) -enclosingStmt(#20161,#20159) -exprContainers(#20161,#20001) -#20163=* -exprs(#20163,78,#20161,0,"neverVar") -#20164=@"loc,{#10000},16,5,16,12" -locations_default(#20164,#10000,16,5,16,12) -hasLocation(#20163,#20164) -enclosingStmt(#20163,#20159) -exprContainers(#20163,#20001) -literals("neverVar","neverVar",#20163) -decl(#20163,#20011) -#20165=* -typeexprs(#20165,2,#20161,2,"never") -#20166=@"loc,{#10000},16,25,16,29" -locations_default(#20166,#10000,16,25,16,29) -hasLocation(#20165,#20166) -enclosingStmt(#20165,#20159) -exprContainers(#20165,#20001) -literals("never","never",#20165) -#20167=* -stmts(#20167,18,#20001,11,"var sym ... symbol;") -#20168=@"loc,{#10000},17,1,17,31" -locations_default(#20168,#10000,17,1,17,31) -hasLocation(#20167,#20168) -stmtContainers(#20167,#20001) -#20169=* -exprs(#20169,64,#20167,0,"symbolV ... symbol") -#20170=@"loc,{#10000},17,5,17,30" -locations_default(#20170,#10000,17,5,17,30) -hasLocation(#20169,#20170) -enclosingStmt(#20169,#20167) -exprContainers(#20169,#20001) -#20171=* -exprs(#20171,78,#20169,0,"symbolVar") -#20172=@"loc,{#10000},17,5,17,13" -locations_default(#20172,#10000,17,5,17,13) -hasLocation(#20171,#20172) -enclosingStmt(#20171,#20167) -exprContainers(#20171,#20001) -literals("symbolVar","symbolVar",#20171) -decl(#20171,#20012) -#20173=* -typeexprs(#20173,2,#20169,2,"symbol") -#20174=@"loc,{#10000},17,25,17,30" -locations_default(#20174,#10000,17,25,17,30) -hasLocation(#20173,#20174) -enclosingStmt(#20173,#20167) -exprContainers(#20173,#20001) -literals("symbol","symbol",#20173) -#20175=* -stmts(#20175,18,#20001,12,"var obj ... mber; }") -#20176=@"loc,{#10000},18,1,18,38" -locations_default(#20176,#10000,18,1,18,38) -hasLocation(#20175,#20176) -stmtContainers(#20175,#20001) -#20177=* -exprs(#20177,64,#20175,0,"objectV ... mber; }") -#20178=@"loc,{#10000},18,5,18,38" -locations_default(#20178,#10000,18,5,18,38) -hasLocation(#20177,#20178) -enclosingStmt(#20177,#20175) -exprContainers(#20177,#20001) -#20179=* -exprs(#20179,78,#20177,0,"objectVar") -#20180=@"loc,{#10000},18,5,18,13" -locations_default(#20180,#10000,18,5,18,13) -hasLocation(#20179,#20180) -enclosingStmt(#20179,#20175) -exprContainers(#20179,#20001) -literals("objectVar","objectVar",#20179) -decl(#20179,#20004) -#20181=* -typeexprs(#20181,21,#20177,2,"{ x: number; }") -#20182=@"loc,{#10000},18,25,18,38" -locations_default(#20182,#10000,18,25,18,38) -hasLocation(#20181,#20182) -enclosingStmt(#20181,#20175) -exprContainers(#20181,#20001) -#20183=* -properties(#20183,#20181,0,8,"x: number;") -#20184=@"loc,{#10000},18,27,18,36" -locations_default(#20184,#10000,18,27,18,36) -hasLocation(#20183,#20184) -#20185=* -exprs(#20185,0,#20183,0,"x") -#20186=@"loc,{#10000},18,27,18,27" -locations_default(#20186,#10000,18,27,18,27) -hasLocation(#20185,#20186) -enclosingStmt(#20185,#20175) -exprContainers(#20185,#20001) -literals("x","x",#20185) -isAbstractMember(#20183) +lines(#20092,#20001,"var parenthesizedVar: (number);"," +") +#20093=@"loc,{#10000},46,1,46,33" +locations_default(#20093,#10000,46,1,46,33) +hasLocation(#20092,#20093) +#20094=* +lines(#20094,#20001,"var namespaceTypeVar: N.I;"," +") +#20095=@"loc,{#10000},47,1,47,28" +locations_default(#20095,#10000,47,1,47,28) +hasLocation(#20094,#20095) +#20096=* +lines(#20096,#20001,"var namespaceGenericTypeVar: N.J;"," +") +#20097=@"loc,{#10000},48,1,48,41" +locations_default(#20097,#10000,48,1,48,41) +hasLocation(#20096,#20097) +#20098=* +lines(#20098,#20001,""," +") +#20099=@"loc,{#10000},49,1,49,0" +locations_default(#20099,#10000,49,1,49,0) +hasLocation(#20098,#20099) +#20100=* +lines(#20100,#20001,"interface GenericInterface {"," +") +#20101=@"loc,{#10000},50,1,50,31" +locations_default(#20101,#10000,50,1,50,31) +hasLocation(#20100,#20101) +#20102=* +lines(#20102,#20001," field: T;"," +") +#20103=@"loc,{#10000},51,1,51,11" +locations_default(#20103,#10000,51,1,51,11) +hasLocation(#20102,#20103) +indentation(#10000,51," ",2) +#20104=* +lines(#20104,#20001," method(x: T): T;"," +") +#20105=@"loc,{#10000},52,1,52,18" +locations_default(#20105,#10000,52,1,52,18) +hasLocation(#20104,#20105) +indentation(#10000,52," ",2) +#20106=* +lines(#20106,#20001,"}"," +") +#20107=@"loc,{#10000},53,1,53,1" +locations_default(#20107,#10000,53,1,53,1) +hasLocation(#20106,#20107) +#20108=* +lines(#20108,#20001,"abstract class GenericClass implements GenericInterface {"," +") +#20109=@"loc,{#10000},54,1,54,63" +locations_default(#20109,#10000,54,1,54,63) +hasLocation(#20108,#20109) +#20110=* +lines(#20110,#20001," field: T"," +") +#20111=@"loc,{#10000},55,1,55,10" +locations_default(#20111,#10000,55,1,55,10) +hasLocation(#20110,#20111) +indentation(#10000,55," ",2) +#20112=* +lines(#20112,#20001," abstract method(x:T): T;"," +") +#20113=@"loc,{#10000},56,1,56,26" +locations_default(#20113,#10000,56,1,56,26) +hasLocation(#20112,#20113) +indentation(#10000,56," ",2) +#20114=* +lines(#20114,#20001,"}"," +") +#20115=@"loc,{#10000},57,1,57,1" +locations_default(#20115,#10000,57,1,57,1) +hasLocation(#20114,#20115) +#20116=* +lines(#20116,#20001,""," +") +#20117=@"loc,{#10000},58,1,58,0" +locations_default(#20117,#10000,58,1,58,0) +hasLocation(#20116,#20117) +#20118=* +lines(#20118,#20001,"class Fish {}"," +") +#20119=@"loc,{#10000},59,1,59,13" +locations_default(#20119,#10000,59,1,59,13) +hasLocation(#20118,#20119) +#20120=* +lines(#20120,#20001,"class Bird {}"," +") +#20121=@"loc,{#10000},60,1,60,13" +locations_default(#20121,#10000,60,1,60,13) +hasLocation(#20120,#20121) +#20122=* +lines(#20122,#20001,"function isFish(pet : Fish | Bird): pet is Fish {}"," +") +#20123=@"loc,{#10000},61,1,61,50" +locations_default(#20123,#10000,61,1,61,50) +hasLocation(#20122,#20123) +#20124=* +lines(#20124,#20001,""," +") +#20125=@"loc,{#10000},62,1,62,0" +locations_default(#20125,#10000,62,1,62,0) +hasLocation(#20124,#20125) +#20126=* +lines(#20126,#20001,"class ThisTypes {"," +") +#20127=@"loc,{#10000},63,1,63,17" +locations_default(#20127,#10000,63,1,63,17) +hasLocation(#20126,#20127) +#20128=* +lines(#20128,#20001," foo(x: number): this { return this; }"," +") +#20129=@"loc,{#10000},64,1,64,39" +locations_default(#20129,#10000,64,1,64,39) +hasLocation(#20128,#20129) +indentation(#10000,64," ",2) +#20130=* +lines(#20130,#20001,"}"," +") +#20131=@"loc,{#10000},65,1,65,1" +locations_default(#20131,#10000,65,1,65,1) +hasLocation(#20130,#20131) +numlines(#20001,65,60,0) +#20132=* +tokeninfo(#20132,7,#20001,0,"interface") +#20133=@"loc,{#10000},1,1,1,9" +locations_default(#20133,#10000,1,1,1,9) +hasLocation(#20132,#20133) +#20134=* +tokeninfo(#20134,6,#20001,1,"Point") +#20135=@"loc,{#10000},1,11,1,15" +locations_default(#20135,#10000,1,11,1,15) +hasLocation(#20134,#20135) +#20136=* +tokeninfo(#20136,8,#20001,2,"{") +#20137=@"loc,{#10000},1,17,1,17" +locations_default(#20137,#10000,1,17,1,17) +hasLocation(#20136,#20137) +#20138=* +tokeninfo(#20138,6,#20001,3,"x") +#20139=@"loc,{#10000},1,19,1,19" +locations_default(#20139,#10000,1,19,1,19) +hasLocation(#20138,#20139) +#20140=* +tokeninfo(#20140,8,#20001,4,":") +#20141=@"loc,{#10000},1,20,1,20" +locations_default(#20141,#10000,1,20,1,20) +hasLocation(#20140,#20141) +#20142=* +tokeninfo(#20142,7,#20001,5,"number") +#20143=@"loc,{#10000},1,22,1,27" +locations_default(#20143,#10000,1,22,1,27) +hasLocation(#20142,#20143) +#20144=* +tokeninfo(#20144,8,#20001,6,";") +#20145=@"loc,{#10000},1,28,1,28" +locations_default(#20145,#10000,1,28,1,28) +hasLocation(#20144,#20145) +#20146=* +tokeninfo(#20146,6,#20001,7,"y") +#20147=@"loc,{#10000},1,30,1,30" +locations_default(#20147,#10000,1,30,1,30) +hasLocation(#20146,#20147) +#20148=* +tokeninfo(#20148,8,#20001,8,":") +#20149=@"loc,{#10000},1,31,1,31" +locations_default(#20149,#10000,1,31,1,31) +hasLocation(#20148,#20149) +#20150=* +tokeninfo(#20150,7,#20001,9,"number") +#20151=@"loc,{#10000},1,33,1,38" +locations_default(#20151,#10000,1,33,1,38) +hasLocation(#20150,#20151) +#20152=* +tokeninfo(#20152,8,#20001,10,"}") +#20153=@"loc,{#10000},1,40,1,40" +locations_default(#20153,#10000,1,40,1,40) +hasLocation(#20152,#20153) +#20154=* +tokeninfo(#20154,7,#20001,11,"namespace") +#20155=@"loc,{#10000},3,1,3,9" +locations_default(#20155,#10000,3,1,3,9) +hasLocation(#20154,#20155) +#20156=* +tokeninfo(#20156,6,#20001,12,"N") +#20157=@"loc,{#10000},3,11,3,11" +locations_default(#20157,#10000,3,11,3,11) +hasLocation(#20156,#20157) +#20158=* +tokeninfo(#20158,8,#20001,13,"{") +#20159=@"loc,{#10000},3,13,3,13" +locations_default(#20159,#10000,3,13,3,13) +hasLocation(#20158,#20159) +#20160=* +tokeninfo(#20160,7,#20001,14,"export") +#20161=@"loc,{#10000},4,3,4,8" +locations_default(#20161,#10000,4,3,4,8) +hasLocation(#20160,#20161) +#20162=* +tokeninfo(#20162,7,#20001,15,"interface") +#20163=@"loc,{#10000},4,10,4,18" +locations_default(#20163,#10000,4,10,4,18) +hasLocation(#20162,#20163) +#20164=* +tokeninfo(#20164,6,#20001,16,"I") +#20165=@"loc,{#10000},4,20,4,20" +locations_default(#20165,#10000,4,20,4,20) +hasLocation(#20164,#20165) +#20166=* +tokeninfo(#20166,8,#20001,17,"{") +#20167=@"loc,{#10000},4,22,4,22" +locations_default(#20167,#10000,4,22,4,22) +hasLocation(#20166,#20167) +#20168=* +tokeninfo(#20168,8,#20001,18,"}") +#20169=@"loc,{#10000},4,23,4,23" +locations_default(#20169,#10000,4,23,4,23) +hasLocation(#20168,#20169) +#20170=* +tokeninfo(#20170,7,#20001,19,"export") +#20171=@"loc,{#10000},5,3,5,8" +locations_default(#20171,#10000,5,3,5,8) +hasLocation(#20170,#20171) +#20172=* +tokeninfo(#20172,7,#20001,20,"interface") +#20173=@"loc,{#10000},5,10,5,18" +locations_default(#20173,#10000,5,10,5,18) +hasLocation(#20172,#20173) +#20174=* +tokeninfo(#20174,6,#20001,21,"J") +#20175=@"loc,{#10000},5,20,5,20" +locations_default(#20175,#10000,5,20,5,20) +hasLocation(#20174,#20175) +#20176=* +tokeninfo(#20176,8,#20001,22,"<") +#20177=@"loc,{#10000},5,21,5,21" +locations_default(#20177,#10000,5,21,5,21) +hasLocation(#20176,#20177) +#20178=* +tokeninfo(#20178,6,#20001,23,"T") +#20179=@"loc,{#10000},5,22,5,22" +locations_default(#20179,#10000,5,22,5,22) +hasLocation(#20178,#20179) +#20180=* +tokeninfo(#20180,8,#20001,24,">") +#20181=@"loc,{#10000},5,23,5,23" +locations_default(#20181,#10000,5,23,5,23) +hasLocation(#20180,#20181) +#20182=* +tokeninfo(#20182,8,#20001,25,"{") +#20183=@"loc,{#10000},5,25,5,25" +locations_default(#20183,#10000,5,25,5,25) +hasLocation(#20182,#20183) +#20184=* +tokeninfo(#20184,8,#20001,26,"}") +#20185=@"loc,{#10000},5,26,5,26" +locations_default(#20185,#10000,5,26,5,26) +hasLocation(#20184,#20185) +#20186=* +tokeninfo(#20186,8,#20001,27,"}") +hasLocation(#20186,#20013) #20187=* -typeexprs(#20187,2,#20183,2,"number") -#20188=@"loc,{#10000},18,30,18,35" -locations_default(#20188,#10000,18,30,18,35) +tokeninfo(#20187,7,#20001,28,"var") +#20188=@"loc,{#10000},8,1,8,3" +locations_default(#20188,#10000,8,1,8,3) hasLocation(#20187,#20188) -enclosingStmt(#20187,#20175) -exprContainers(#20187,#20001) -literals("number","number",#20187) #20189=* -stmts(#20189,18,#20001,13,"var nes ... ber } }") -#20190=@"loc,{#10000},19,1,19,44" -locations_default(#20190,#10000,19,1,19,44) +tokeninfo(#20189,6,#20001,29,"anyVar") +#20190=@"loc,{#10000},8,5,8,10" +locations_default(#20190,#10000,8,5,8,10) hasLocation(#20189,#20190) -stmtContainers(#20189,#20001) #20191=* -exprs(#20191,64,#20189,0,"nestedO ... ber } }") -#20192=@"loc,{#10000},19,5,19,44" -locations_default(#20192,#10000,19,5,19,44) +tokeninfo(#20191,8,#20001,30,":") +#20192=@"loc,{#10000},8,11,8,11" +locations_default(#20192,#10000,8,11,8,11) hasLocation(#20191,#20192) -enclosingStmt(#20191,#20189) -exprContainers(#20191,#20001) #20193=* -exprs(#20193,78,#20191,0,"nestedObjectVar") -#20194=@"loc,{#10000},19,5,19,19" -locations_default(#20194,#10000,19,5,19,19) +tokeninfo(#20193,7,#20001,31,"any") +#20194=@"loc,{#10000},8,25,8,27" +locations_default(#20194,#10000,8,25,8,27) hasLocation(#20193,#20194) -enclosingStmt(#20193,#20189) -exprContainers(#20193,#20001) -literals("nestedObjectVar","nestedObjectVar",#20193) -decl(#20193,#20013) #20195=* -typeexprs(#20195,21,#20191,2,"{ x: { y: number } }") -#20196=@"loc,{#10000},19,25,19,44" -locations_default(#20196,#10000,19,25,19,44) +tokeninfo(#20195,8,#20001,32,";") +#20196=@"loc,{#10000},8,28,8,28" +locations_default(#20196,#10000,8,28,8,28) hasLocation(#20195,#20196) -enclosingStmt(#20195,#20189) -exprContainers(#20195,#20001) #20197=* -properties(#20197,#20195,0,8,"x: { y: number }") -#20198=@"loc,{#10000},19,27,19,42" -locations_default(#20198,#10000,19,27,19,42) +tokeninfo(#20197,7,#20001,33,"var") +#20198=@"loc,{#10000},9,1,9,3" +locations_default(#20198,#10000,9,1,9,3) hasLocation(#20197,#20198) #20199=* -exprs(#20199,0,#20197,0,"x") -#20200=@"loc,{#10000},19,27,19,27" -locations_default(#20200,#10000,19,27,19,27) +tokeninfo(#20199,6,#20001,34,"objectVar") +#20200=@"loc,{#10000},9,5,9,13" +locations_default(#20200,#10000,9,5,9,13) hasLocation(#20199,#20200) -enclosingStmt(#20199,#20189) -exprContainers(#20199,#20001) -literals("x","x",#20199) -isAbstractMember(#20197) #20201=* -typeexprs(#20201,21,#20197,2,"{ y: number }") -#20202=@"loc,{#10000},19,30,19,42" -locations_default(#20202,#10000,19,30,19,42) +tokeninfo(#20201,8,#20001,35,":") +#20202=@"loc,{#10000},9,14,9,14" +locations_default(#20202,#10000,9,14,9,14) hasLocation(#20201,#20202) -enclosingStmt(#20201,#20189) -exprContainers(#20201,#20001) #20203=* -properties(#20203,#20201,0,8,"y: number") -#20204=@"loc,{#10000},19,32,19,40" -locations_default(#20204,#10000,19,32,19,40) +tokeninfo(#20203,7,#20001,36,"object") +#20204=@"loc,{#10000},9,25,9,30" +locations_default(#20204,#10000,9,25,9,30) hasLocation(#20203,#20204) #20205=* -exprs(#20205,0,#20203,0,"y") -#20206=@"loc,{#10000},19,32,19,32" -locations_default(#20206,#10000,19,32,19,32) +tokeninfo(#20205,8,#20001,37,";") +#20206=@"loc,{#10000},9,31,9,31" +locations_default(#20206,#10000,9,31,9,31) hasLocation(#20205,#20206) -enclosingStmt(#20205,#20189) -exprContainers(#20205,#20001) -literals("y","y",#20205) -isAbstractMember(#20203) #20207=* -typeexprs(#20207,2,#20203,2,"number") -#20208=@"loc,{#10000},19,35,19,40" -locations_default(#20208,#10000,19,35,19,40) +tokeninfo(#20207,7,#20001,38,"var") +#20208=@"loc,{#10000},10,1,10,3" +locations_default(#20208,#10000,10,1,10,3) hasLocation(#20207,#20208) -enclosingStmt(#20207,#20189) -exprContainers(#20207,#20001) -literals("number","number",#20207) #20209=* -stmts(#20209,18,#20001,14,"var arr ... umber[]") -#20210=@"loc,{#10000},20,1,20,32" -locations_default(#20210,#10000,20,1,20,32) +tokeninfo(#20209,6,#20001,39,"numberVar") +#20210=@"loc,{#10000},10,5,10,13" +locations_default(#20210,#10000,10,5,10,13) hasLocation(#20209,#20210) -stmtContainers(#20209,#20001) #20211=* -exprs(#20211,64,#20209,0,"arrayVa ... umber[]") -#20212=@"loc,{#10000},20,5,20,32" -locations_default(#20212,#10000,20,5,20,32) +tokeninfo(#20211,8,#20001,40,":") +#20212=@"loc,{#10000},10,14,10,14" +locations_default(#20212,#10000,10,14,10,14) hasLocation(#20211,#20212) -enclosingStmt(#20211,#20209) -exprContainers(#20211,#20001) #20213=* -exprs(#20213,78,#20211,0,"arrayVar") -#20214=@"loc,{#10000},20,5,20,12" -locations_default(#20214,#10000,20,5,20,12) +tokeninfo(#20213,7,#20001,41,"number") +#20214=@"loc,{#10000},10,25,10,30" +locations_default(#20214,#10000,10,25,10,30) hasLocation(#20213,#20214) -enclosingStmt(#20213,#20209) -exprContainers(#20213,#20001) -literals("arrayVar","arrayVar",#20213) -decl(#20213,#20014) #20215=* -typeexprs(#20215,6,#20211,2,"number[]") -#20216=@"loc,{#10000},20,25,20,32" -locations_default(#20216,#10000,20,25,20,32) +tokeninfo(#20215,8,#20001,42,";") +#20216=@"loc,{#10000},10,31,10,31" +locations_default(#20216,#10000,10,31,10,31) hasLocation(#20215,#20216) -enclosingStmt(#20215,#20209) -exprContainers(#20215,#20001) #20217=* -typeexprs(#20217,2,#20215,0,"number") -#20218=@"loc,{#10000},20,25,20,30" -locations_default(#20218,#10000,20,25,20,30) +tokeninfo(#20217,7,#20001,43,"var") +#20218=@"loc,{#10000},11,1,11,3" +locations_default(#20218,#10000,11,1,11,3) hasLocation(#20217,#20218) -enclosingStmt(#20217,#20209) -exprContainers(#20217,#20001) -literals("number","number",#20217) #20219=* -stmts(#20219,18,#20001,15,"var str ... String") -#20220=@"loc,{#10000},21,1,21,30" -locations_default(#20220,#10000,21,1,21,30) +tokeninfo(#20219,6,#20001,44,"stringVar") +#20220=@"loc,{#10000},11,5,11,13" +locations_default(#20220,#10000,11,5,11,13) hasLocation(#20219,#20220) -stmtContainers(#20219,#20001) #20221=* -exprs(#20221,64,#20219,0,"stringO ... String") -#20222=@"loc,{#10000},21,5,21,30" -locations_default(#20222,#10000,21,5,21,30) +tokeninfo(#20221,8,#20001,45,":") +#20222=@"loc,{#10000},11,14,11,14" +locations_default(#20222,#10000,11,14,11,14) hasLocation(#20221,#20222) -enclosingStmt(#20221,#20219) -exprContainers(#20221,#20001) #20223=* -exprs(#20223,78,#20221,0,"stringObjectVar") -#20224=@"loc,{#10000},21,5,21,19" -locations_default(#20224,#10000,21,5,21,19) +tokeninfo(#20223,7,#20001,46,"string") +#20224=@"loc,{#10000},11,25,11,30" +locations_default(#20224,#10000,11,25,11,30) hasLocation(#20223,#20224) -enclosingStmt(#20223,#20219) -exprContainers(#20223,#20001) -literals("stringObjectVar","stringObjectVar",#20223) -decl(#20223,#20015) #20225=* -typeexprs(#20225,0,#20221,2,"String") -#20226=@"loc,{#10000},21,25,21,30" -locations_default(#20226,#10000,21,25,21,30) +tokeninfo(#20225,8,#20001,47,";") +#20226=@"loc,{#10000},11,31,11,31" +locations_default(#20226,#10000,11,31,11,31) hasLocation(#20225,#20226) -enclosingStmt(#20225,#20219) -exprContainers(#20225,#20001) -literals("String","String",#20225) #20227=* -stmts(#20227,18,#20001,16,"var poi ... Point") -#20228=@"loc,{#10000},22,1,22,29" -locations_default(#20228,#10000,22,1,22,29) +tokeninfo(#20227,7,#20001,48,"var") +#20228=@"loc,{#10000},12,1,12,3" +locations_default(#20228,#10000,12,1,12,3) hasLocation(#20227,#20228) -stmtContainers(#20227,#20001) #20229=* -exprs(#20229,64,#20227,0,"pointVa ... Point") -#20230=@"loc,{#10000},22,5,22,29" -locations_default(#20230,#10000,22,5,22,29) +tokeninfo(#20229,6,#20001,49,"booleanVar") +#20230=@"loc,{#10000},12,5,12,14" +locations_default(#20230,#10000,12,5,12,14) hasLocation(#20229,#20230) -enclosingStmt(#20229,#20227) -exprContainers(#20229,#20001) #20231=* -exprs(#20231,78,#20229,0,"pointVar") -#20232=@"loc,{#10000},22,5,22,12" -locations_default(#20232,#10000,22,5,22,12) +tokeninfo(#20231,8,#20001,50,":") +#20232=@"loc,{#10000},12,15,12,15" +locations_default(#20232,#10000,12,15,12,15) hasLocation(#20231,#20232) -enclosingStmt(#20231,#20227) -exprContainers(#20231,#20001) -literals("pointVar","pointVar",#20231) -decl(#20231,#20016) #20233=* -typeexprs(#20233,0,#20229,2,"Point") -#20234=@"loc,{#10000},22,25,22,29" -locations_default(#20234,#10000,22,25,22,29) +tokeninfo(#20233,7,#20001,51,"boolean") +#20234=@"loc,{#10000},12,25,12,31" +locations_default(#20234,#10000,12,25,12,31) hasLocation(#20233,#20234) -enclosingStmt(#20233,#20227) -exprContainers(#20233,#20001) -literals("Point","Point",#20233) -typebind(#20233,#20049) #20235=* -stmts(#20235,18,#20001,17,"var raw ... unction") -#20236=@"loc,{#10000},23,1,23,32" -locations_default(#20236,#10000,23,1,23,32) +tokeninfo(#20235,8,#20001,52,";") +#20236=@"loc,{#10000},12,32,12,32" +locations_default(#20236,#10000,12,32,12,32) hasLocation(#20235,#20236) -stmtContainers(#20235,#20001) #20237=* -exprs(#20237,64,#20235,0,"rawFunc ... unction") -#20238=@"loc,{#10000},23,5,23,32" -locations_default(#20238,#10000,23,5,23,32) +tokeninfo(#20237,7,#20001,53,"var") +#20238=@"loc,{#10000},13,1,13,3" +locations_default(#20238,#10000,13,1,13,3) hasLocation(#20237,#20238) -enclosingStmt(#20237,#20235) -exprContainers(#20237,#20001) #20239=* -exprs(#20239,78,#20237,0,"rawFunctionVar") -#20240=@"loc,{#10000},23,5,23,18" -locations_default(#20240,#10000,23,5,23,18) +tokeninfo(#20239,6,#20001,54,"nullVar") +#20240=@"loc,{#10000},13,5,13,11" +locations_default(#20240,#10000,13,5,13,11) hasLocation(#20239,#20240) -enclosingStmt(#20239,#20235) -exprContainers(#20239,#20001) -literals("rawFunctionVar","rawFunctionVar",#20239) -decl(#20239,#20017) #20241=* -typeexprs(#20241,0,#20237,2,"Function") -#20242=@"loc,{#10000},23,25,23,32" -locations_default(#20242,#10000,23,25,23,32) +tokeninfo(#20241,8,#20001,55,":") +#20242=@"loc,{#10000},13,12,13,12" +locations_default(#20242,#10000,13,12,13,12) hasLocation(#20241,#20242) -enclosingStmt(#20241,#20235) -exprContainers(#20241,#20001) -literals("Function","Function",#20241) #20243=* -stmts(#20243,18,#20001,18,"var var ... x11") -#20244=@"loc,{#10000},24,1,24,27" -locations_default(#20244,#10000,24,1,24,27) +tokeninfo(#20243,1,#20001,56,"null") +#20244=@"loc,{#10000},13,25,13,28" +locations_default(#20244,#10000,13,25,13,28) hasLocation(#20243,#20244) -stmtContainers(#20243,#20001) #20245=* -exprs(#20245,64,#20243,0,"varVar: ... x11") -#20246=@"loc,{#10000},24,5,24,27" -locations_default(#20246,#10000,24,5,24,27) +tokeninfo(#20245,8,#20001,57,";") +#20246=@"loc,{#10000},13,29,13,29" +locations_default(#20246,#10000,13,29,13,29) hasLocation(#20245,#20246) -enclosingStmt(#20245,#20243) -exprContainers(#20245,#20001) #20247=* -exprs(#20247,78,#20245,0,"varVar") -#20248=@"loc,{#10000},24,5,24,10" -locations_default(#20248,#10000,24,5,24,10) +tokeninfo(#20247,7,#20001,58,"var") +#20248=@"loc,{#10000},14,1,14,3" +locations_default(#20248,#10000,14,1,14,3) hasLocation(#20247,#20248) -enclosingStmt(#20247,#20243) -exprContainers(#20247,#20001) -literals("varVar","varVar",#20247) -decl(#20247,#20018) #20249=* -typeexprs(#20249,0,#20245,2,"x11") -#20250=@"loc,{#10000},24,25,24,27" -locations_default(#20250,#10000,24,25,24,27) +tokeninfo(#20249,6,#20001,59,"undefinedVar") +#20250=@"loc,{#10000},14,5,14,16" +locations_default(#20250,#10000,14,5,14,16) hasLocation(#20249,#20250) -enclosingStmt(#20249,#20243) -exprContainers(#20249,#20001) -literals("x11","x11",#20249) #20251=* -stmts(#20251,18,#20001,19,"var gen ... number>") -#20252=@"loc,{#10000},25,1,25,37" -locations_default(#20252,#10000,25,1,25,37) +tokeninfo(#20251,8,#20001,60,":") +#20252=@"loc,{#10000},14,17,14,17" +locations_default(#20252,#10000,14,17,14,17) hasLocation(#20251,#20252) -stmtContainers(#20251,#20001) #20253=* -exprs(#20253,64,#20251,0,"generic ... number>") -#20254=@"loc,{#10000},25,5,25,37" -locations_default(#20254,#10000,25,5,25,37) +tokeninfo(#20253,7,#20001,61,"undefined") +#20254=@"loc,{#10000},14,25,14,33" +locations_default(#20254,#10000,14,25,14,33) hasLocation(#20253,#20254) -enclosingStmt(#20253,#20251) -exprContainers(#20253,#20001) #20255=* -exprs(#20255,78,#20253,0,"genericArrayVar") -#20256=@"loc,{#10000},25,5,25,19" -locations_default(#20256,#10000,25,5,25,19) +tokeninfo(#20255,8,#20001,62,";") +#20256=@"loc,{#10000},14,34,14,34" +locations_default(#20256,#10000,14,34,14,34) hasLocation(#20255,#20256) -enclosingStmt(#20255,#20251) -exprContainers(#20255,#20001) -literals("genericArrayVar","genericArrayVar",#20255) -decl(#20255,#20019) #20257=* -typeexprs(#20257,14,#20253,2,"Array") -#20258=@"loc,{#10000},25,25,25,37" -locations_default(#20258,#10000,25,25,25,37) +tokeninfo(#20257,7,#20001,63,"var") +#20258=@"loc,{#10000},15,1,15,3" +locations_default(#20258,#10000,15,1,15,3) hasLocation(#20257,#20258) -enclosingStmt(#20257,#20251) -exprContainers(#20257,#20001) #20259=* -typeexprs(#20259,0,#20257,-1,"Array") -#20260=@"loc,{#10000},25,25,25,29" -locations_default(#20260,#10000,25,25,25,29) +tokeninfo(#20259,6,#20001,64,"voidVar") +#20260=@"loc,{#10000},15,5,15,11" +locations_default(#20260,#10000,15,5,15,11) hasLocation(#20259,#20260) -enclosingStmt(#20259,#20251) -exprContainers(#20259,#20001) -literals("Array","Array",#20259) #20261=* -typeexprs(#20261,2,#20257,0,"number") -#20262=@"loc,{#10000},25,31,25,36" -locations_default(#20262,#10000,25,31,25,36) +tokeninfo(#20261,8,#20001,65,":") +#20262=@"loc,{#10000},15,12,15,12" +locations_default(#20262,#10000,15,12,15,12) hasLocation(#20261,#20262) -enclosingStmt(#20261,#20251) -exprContainers(#20261,#20001) -literals("number","number",#20261) #20263=* -stmts(#20263,18,#20001,20,"var nes ... umber>>") -#20264=@"loc,{#10000},26,1,26,40" -locations_default(#20264,#10000,26,1,26,40) +tokeninfo(#20263,7,#20001,66,"void") +#20264=@"loc,{#10000},15,25,15,28" +locations_default(#20264,#10000,15,25,15,28) hasLocation(#20263,#20264) -stmtContainers(#20263,#20001) #20265=* -exprs(#20265,64,#20263,0,"nestedG ... umber>>") -#20266=@"loc,{#10000},26,5,26,40" -locations_default(#20266,#10000,26,5,26,40) +tokeninfo(#20265,8,#20001,67,";") +#20266=@"loc,{#10000},15,29,15,29" +locations_default(#20266,#10000,15,29,15,29) hasLocation(#20265,#20266) -enclosingStmt(#20265,#20263) -exprContainers(#20265,#20001) #20267=* -exprs(#20267,78,#20265,0,"nestedGenericVar") -#20268=@"loc,{#10000},26,5,26,20" -locations_default(#20268,#10000,26,5,26,20) +tokeninfo(#20267,7,#20001,68,"var") +#20268=@"loc,{#10000},16,1,16,3" +locations_default(#20268,#10000,16,1,16,3) hasLocation(#20267,#20268) -enclosingStmt(#20267,#20263) -exprContainers(#20267,#20001) -literals("nestedGenericVar","nestedGenericVar",#20267) -decl(#20267,#20020) #20269=* -typeexprs(#20269,14,#20265,2,"Foo>") -#20270=@"loc,{#10000},26,25,26,40" -locations_default(#20270,#10000,26,25,26,40) +tokeninfo(#20269,6,#20001,69,"neverVar") +#20270=@"loc,{#10000},16,5,16,12" +locations_default(#20270,#10000,16,5,16,12) hasLocation(#20269,#20270) -enclosingStmt(#20269,#20263) -exprContainers(#20269,#20001) #20271=* -typeexprs(#20271,0,#20269,-1,"Foo") -#20272=@"loc,{#10000},26,25,26,27" -locations_default(#20272,#10000,26,25,26,27) +tokeninfo(#20271,8,#20001,70,":") +#20272=@"loc,{#10000},16,13,16,13" +locations_default(#20272,#10000,16,13,16,13) hasLocation(#20271,#20272) -enclosingStmt(#20271,#20263) -exprContainers(#20271,#20001) -literals("Foo","Foo",#20271) #20273=* -typeexprs(#20273,14,#20269,0,"Foo") -#20274=@"loc,{#10000},26,29,26,39" -locations_default(#20274,#10000,26,29,26,39) +tokeninfo(#20273,7,#20001,71,"never") +#20274=@"loc,{#10000},16,25,16,29" +locations_default(#20274,#10000,16,25,16,29) hasLocation(#20273,#20274) -enclosingStmt(#20273,#20263) -exprContainers(#20273,#20001) #20275=* -typeexprs(#20275,0,#20273,-1,"Foo") -#20276=@"loc,{#10000},26,29,26,31" -locations_default(#20276,#10000,26,29,26,31) +tokeninfo(#20275,8,#20001,72,";") +#20276=@"loc,{#10000},16,30,16,30" +locations_default(#20276,#10000,16,30,16,30) hasLocation(#20275,#20276) -enclosingStmt(#20275,#20263) -exprContainers(#20275,#20001) -literals("Foo","Foo",#20275) #20277=* -typeexprs(#20277,2,#20273,0,"number") -#20278=@"loc,{#10000},26,33,26,38" -locations_default(#20278,#10000,26,33,26,38) +tokeninfo(#20277,7,#20001,73,"var") +#20278=@"loc,{#10000},17,1,17,3" +locations_default(#20278,#10000,17,1,17,3) hasLocation(#20277,#20278) -enclosingStmt(#20277,#20263) -exprContainers(#20277,#20001) -literals("number","number",#20277) #20279=* -stmts(#20279,18,#20001,21,"var cal ... number;") -#20280=@"loc,{#10000},27,1,27,37" -locations_default(#20280,#10000,27,1,27,37) +tokeninfo(#20279,6,#20001,74,"symbolVar") +#20280=@"loc,{#10000},17,5,17,13" +locations_default(#20280,#10000,17,5,17,13) hasLocation(#20279,#20280) -stmtContainers(#20279,#20001) #20281=* -exprs(#20281,64,#20279,0,"callSig ... number") -#20282=@"loc,{#10000},27,5,27,36" -locations_default(#20282,#10000,27,5,27,36) +tokeninfo(#20281,8,#20001,75,":") +#20282=@"loc,{#10000},17,14,17,14" +locations_default(#20282,#10000,17,14,17,14) hasLocation(#20281,#20282) -enclosingStmt(#20281,#20279) -exprContainers(#20281,#20001) #20283=* -exprs(#20283,78,#20281,0,"callSigVar") -#20284=@"loc,{#10000},27,5,27,14" -locations_default(#20284,#10000,27,5,27,14) +tokeninfo(#20283,7,#20001,76,"symbol") +#20284=@"loc,{#10000},17,25,17,30" +locations_default(#20284,#10000,17,25,17,30) hasLocation(#20283,#20284) -enclosingStmt(#20283,#20279) -exprContainers(#20283,#20001) -literals("callSigVar","callSigVar",#20283) -decl(#20283,#20021) #20285=* -typeexprs(#20285,23,#20281,2,"() => number") -#20286=@"loc,{#10000},27,25,27,36" -locations_default(#20286,#10000,27,25,27,36) +tokeninfo(#20285,8,#20001,77,";") +#20286=@"loc,{#10000},17,31,17,31" +locations_default(#20286,#10000,17,31,17,31) hasLocation(#20285,#20286) -enclosingStmt(#20285,#20279) -exprContainers(#20285,#20001) #20287=* -exprs(#20287,9,#20285,0,"() => number") -hasLocation(#20287,#20286) -enclosingStmt(#20287,#20279) -exprContainers(#20287,#20001) -#20288=* -scopes(#20288,1) -scopenodes(#20287,#20288) -scopenesting(#20288,#20000) -#20289=@"var;{arguments};{#20288}" -variables(#20289,"arguments",#20288) -isArgumentsObject(#20289) -#20290=* -typeexprs(#20290,2,#20287,-3,"number") -#20291=@"loc,{#10000},27,31,27,36" -locations_default(#20291,#10000,27,31,27,36) -hasLocation(#20290,#20291) -exprContainers(#20290,#20287) -literals("number","number",#20290) -numlines(#20287,1,1,0) -#20292=* -stmts(#20292,18,#20001,22,"var con ... Point;") -#20293=@"loc,{#10000},28,1,28,40" -locations_default(#20293,#10000,28,1,28,40) -hasLocation(#20292,#20293) -stmtContainers(#20292,#20001) -#20294=* -exprs(#20294,64,#20292,0,"constru ... > Point") -#20295=@"loc,{#10000},28,5,28,39" -locations_default(#20295,#10000,28,5,28,39) -hasLocation(#20294,#20295) -enclosingStmt(#20294,#20292) -exprContainers(#20294,#20001) -#20296=* -exprs(#20296,78,#20294,0,"constructSigVar") -#20297=@"loc,{#10000},28,5,28,19" -locations_default(#20297,#10000,28,5,28,19) -hasLocation(#20296,#20297) -enclosingStmt(#20296,#20292) -exprContainers(#20296,#20001) -literals("constructSigVar","constructSigVar",#20296) -decl(#20296,#20022) -#20298=* -typeexprs(#20298,24,#20294,2,"new () => Point") -#20299=@"loc,{#10000},28,25,28,39" -locations_default(#20299,#10000,28,25,28,39) -hasLocation(#20298,#20299) -enclosingStmt(#20298,#20292) -exprContainers(#20298,#20001) -#20300=* -exprs(#20300,9,#20298,0,"new () => Point") -hasLocation(#20300,#20299) -enclosingStmt(#20300,#20292) -exprContainers(#20300,#20001) +tokeninfo(#20287,7,#20001,78,"var") +#20288=@"loc,{#10000},18,1,18,3" +locations_default(#20288,#10000,18,1,18,3) +hasLocation(#20287,#20288) +#20289=* +tokeninfo(#20289,6,#20001,79,"objectVar") +#20290=@"loc,{#10000},18,5,18,13" +locations_default(#20290,#10000,18,5,18,13) +hasLocation(#20289,#20290) +#20291=* +tokeninfo(#20291,8,#20001,80,":") +#20292=@"loc,{#10000},18,14,18,14" +locations_default(#20292,#10000,18,14,18,14) +hasLocation(#20291,#20292) +#20293=* +tokeninfo(#20293,8,#20001,81,"{") +#20294=@"loc,{#10000},18,25,18,25" +locations_default(#20294,#10000,18,25,18,25) +hasLocation(#20293,#20294) +#20295=* +tokeninfo(#20295,6,#20001,82,"x") +#20296=@"loc,{#10000},18,27,18,27" +locations_default(#20296,#10000,18,27,18,27) +hasLocation(#20295,#20296) +#20297=* +tokeninfo(#20297,8,#20001,83,":") +#20298=@"loc,{#10000},18,28,18,28" +locations_default(#20298,#10000,18,28,18,28) +hasLocation(#20297,#20298) +#20299=* +tokeninfo(#20299,7,#20001,84,"number") +#20300=@"loc,{#10000},18,30,18,35" +locations_default(#20300,#10000,18,30,18,35) +hasLocation(#20299,#20300) #20301=* -scopes(#20301,1) -scopenodes(#20300,#20301) -scopenesting(#20301,#20000) -#20302=@"var;{arguments};{#20301}" -variables(#20302,"arguments",#20301) -isArgumentsObject(#20302) +tokeninfo(#20301,8,#20001,85,";") +#20302=@"loc,{#10000},18,36,18,36" +locations_default(#20302,#10000,18,36,18,36) +hasLocation(#20301,#20302) #20303=* -typeexprs(#20303,0,#20300,-3,"Point") -#20304=@"loc,{#10000},28,35,28,39" -locations_default(#20304,#10000,28,35,28,39) +tokeninfo(#20303,8,#20001,86,"}") +#20304=@"loc,{#10000},18,38,18,38" +locations_default(#20304,#10000,18,38,18,38) hasLocation(#20303,#20304) -exprContainers(#20303,#20300) -literals("Point","Point",#20303) -typebind(#20303,#20049) -numlines(#20300,1,1,0) #20305=* -stmts(#20305,18,#20001,23,"var cal ... > void;") -#20306=@"loc,{#10000},29,1,29,35" -locations_default(#20306,#10000,29,1,29,35) +tokeninfo(#20305,7,#20001,87,"var") +#20306=@"loc,{#10000},19,1,19,3" +locations_default(#20306,#10000,19,1,19,3) hasLocation(#20305,#20306) -stmtContainers(#20305,#20001) #20307=* -exprs(#20307,64,#20305,0,"callSig ... => void") -#20308=@"loc,{#10000},29,5,29,34" -locations_default(#20308,#10000,29,5,29,34) +tokeninfo(#20307,6,#20001,88,"nestedObjectVar") +#20308=@"loc,{#10000},19,5,19,19" +locations_default(#20308,#10000,19,5,19,19) hasLocation(#20307,#20308) -enclosingStmt(#20307,#20305) -exprContainers(#20307,#20001) #20309=* -exprs(#20309,78,#20307,0,"callSigVoidVar") -#20310=@"loc,{#10000},29,5,29,18" -locations_default(#20310,#10000,29,5,29,18) +tokeninfo(#20309,8,#20001,89,":") +#20310=@"loc,{#10000},19,20,19,20" +locations_default(#20310,#10000,19,20,19,20) hasLocation(#20309,#20310) -enclosingStmt(#20309,#20305) -exprContainers(#20309,#20001) -literals("callSigVoidVar","callSigVoidVar",#20309) -decl(#20309,#20023) #20311=* -typeexprs(#20311,23,#20307,2,"() => void") -#20312=@"loc,{#10000},29,25,29,34" -locations_default(#20312,#10000,29,25,29,34) +tokeninfo(#20311,8,#20001,90,"{") +#20312=@"loc,{#10000},19,25,19,25" +locations_default(#20312,#10000,19,25,19,25) hasLocation(#20311,#20312) -enclosingStmt(#20311,#20305) -exprContainers(#20311,#20001) #20313=* -exprs(#20313,9,#20311,0,"() => void") -hasLocation(#20313,#20312) -enclosingStmt(#20313,#20305) -exprContainers(#20313,#20001) -#20314=* -scopes(#20314,1) -scopenodes(#20313,#20314) -scopenesting(#20314,#20000) -#20315=@"var;{arguments};{#20314}" -variables(#20315,"arguments",#20314) -isArgumentsObject(#20315) -#20316=* -typeexprs(#20316,2,#20313,-3,"void") -#20317=@"loc,{#10000},29,31,29,34" -locations_default(#20317,#10000,29,31,29,34) -hasLocation(#20316,#20317) -exprContainers(#20316,#20313) -literals("void","void",#20316) -numlines(#20313,1,1,0) -#20318=* -stmts(#20318,18,#20001,24,"var cal ... never;") -#20319=@"loc,{#10000},30,1,30,36" -locations_default(#20319,#10000,30,1,30,36) -hasLocation(#20318,#20319) -stmtContainers(#20318,#20001) -#20320=* -exprs(#20320,64,#20318,0,"callSig ... > never") -#20321=@"loc,{#10000},30,5,30,35" -locations_default(#20321,#10000,30,5,30,35) -hasLocation(#20320,#20321) -enclosingStmt(#20320,#20318) -exprContainers(#20320,#20001) -#20322=* -exprs(#20322,78,#20320,0,"callSigNeverVar") -#20323=@"loc,{#10000},30,5,30,19" -locations_default(#20323,#10000,30,5,30,19) -hasLocation(#20322,#20323) -enclosingStmt(#20322,#20318) -exprContainers(#20322,#20001) -literals("callSigNeverVar","callSigNeverVar",#20322) -decl(#20322,#20024) -#20324=* -typeexprs(#20324,23,#20320,2,"() => never") -#20325=@"loc,{#10000},30,25,30,35" -locations_default(#20325,#10000,30,25,30,35) -hasLocation(#20324,#20325) -enclosingStmt(#20324,#20318) -exprContainers(#20324,#20001) -#20326=* -exprs(#20326,9,#20324,0,"() => never") -hasLocation(#20326,#20325) -enclosingStmt(#20326,#20318) -exprContainers(#20326,#20001) +tokeninfo(#20313,6,#20001,91,"x") +#20314=@"loc,{#10000},19,27,19,27" +locations_default(#20314,#10000,19,27,19,27) +hasLocation(#20313,#20314) +#20315=* +tokeninfo(#20315,8,#20001,92,":") +#20316=@"loc,{#10000},19,28,19,28" +locations_default(#20316,#10000,19,28,19,28) +hasLocation(#20315,#20316) +#20317=* +tokeninfo(#20317,8,#20001,93,"{") +#20318=@"loc,{#10000},19,30,19,30" +locations_default(#20318,#10000,19,30,19,30) +hasLocation(#20317,#20318) +#20319=* +tokeninfo(#20319,6,#20001,94,"y") +#20320=@"loc,{#10000},19,32,19,32" +locations_default(#20320,#10000,19,32,19,32) +hasLocation(#20319,#20320) +#20321=* +tokeninfo(#20321,8,#20001,95,":") +#20322=@"loc,{#10000},19,33,19,33" +locations_default(#20322,#10000,19,33,19,33) +hasLocation(#20321,#20322) +#20323=* +tokeninfo(#20323,7,#20001,96,"number") +#20324=@"loc,{#10000},19,35,19,40" +locations_default(#20324,#10000,19,35,19,40) +hasLocation(#20323,#20324) +#20325=* +tokeninfo(#20325,8,#20001,97,"}") +#20326=@"loc,{#10000},19,42,19,42" +locations_default(#20326,#10000,19,42,19,42) +hasLocation(#20325,#20326) #20327=* -scopes(#20327,1) -scopenodes(#20326,#20327) -scopenesting(#20327,#20000) -#20328=@"var;{arguments};{#20327}" -variables(#20328,"arguments",#20327) -isArgumentsObject(#20328) +tokeninfo(#20327,8,#20001,98,"}") +#20328=@"loc,{#10000},19,44,19,44" +locations_default(#20328,#10000,19,44,19,44) +hasLocation(#20327,#20328) #20329=* -typeexprs(#20329,2,#20326,-3,"never") -#20330=@"loc,{#10000},30,31,30,35" -locations_default(#20330,#10000,30,31,30,35) +tokeninfo(#20329,7,#20001,99,"var") +#20330=@"loc,{#10000},20,1,20,3" +locations_default(#20330,#10000,20,1,20,3) hasLocation(#20329,#20330) -exprContainers(#20329,#20326) -literals("never","never",#20329) -numlines(#20326,1,1,0) #20331=* -stmts(#20331,18,#20001,25,"var uni ... string;") -#20332=@"loc,{#10000},31,1,31,40" -locations_default(#20332,#10000,31,1,31,40) +tokeninfo(#20331,6,#20001,100,"arrayVar") +#20332=@"loc,{#10000},20,5,20,12" +locations_default(#20332,#10000,20,5,20,12) hasLocation(#20331,#20332) -stmtContainers(#20331,#20001) #20333=* -exprs(#20333,64,#20331,0,"unionVa ... string") -#20334=@"loc,{#10000},31,5,31,39" -locations_default(#20334,#10000,31,5,31,39) +tokeninfo(#20333,8,#20001,101,":") +#20334=@"loc,{#10000},20,13,20,13" +locations_default(#20334,#10000,20,13,20,13) hasLocation(#20333,#20334) -enclosingStmt(#20333,#20331) -exprContainers(#20333,#20001) #20335=* -exprs(#20335,78,#20333,0,"unionVar") -#20336=@"loc,{#10000},31,5,31,12" -locations_default(#20336,#10000,31,5,31,12) +tokeninfo(#20335,7,#20001,102,"number") +#20336=@"loc,{#10000},20,25,20,30" +locations_default(#20336,#10000,20,25,20,30) hasLocation(#20335,#20336) -enclosingStmt(#20335,#20331) -exprContainers(#20335,#20001) -literals("unionVar","unionVar",#20335) -decl(#20335,#20025) #20337=* -typeexprs(#20337,7,#20333,2,"number | string") -#20338=@"loc,{#10000},31,25,31,39" -locations_default(#20338,#10000,31,25,31,39) +tokeninfo(#20337,8,#20001,103,"[") +#20338=@"loc,{#10000},20,31,20,31" +locations_default(#20338,#10000,20,31,20,31) hasLocation(#20337,#20338) -enclosingStmt(#20337,#20331) -exprContainers(#20337,#20001) #20339=* -typeexprs(#20339,2,#20337,0,"number") -#20340=@"loc,{#10000},31,25,31,30" -locations_default(#20340,#10000,31,25,31,30) +tokeninfo(#20339,8,#20001,104,"]") +#20340=@"loc,{#10000},20,32,20,32" +locations_default(#20340,#10000,20,32,20,32) hasLocation(#20339,#20340) -enclosingStmt(#20339,#20331) -exprContainers(#20339,#20001) -literals("number","number",#20339) #20341=* -typeexprs(#20341,2,#20337,1,"string") -#20342=@"loc,{#10000},31,34,31,39" -locations_default(#20342,#10000,31,34,31,39) +tokeninfo(#20341,7,#20001,105,"var") +#20342=@"loc,{#10000},21,1,21,3" +locations_default(#20342,#10000,21,1,21,3) hasLocation(#20341,#20342) -enclosingStmt(#20341,#20331) -exprContainers(#20341,#20001) -literals("string","string",#20341) #20343=* -stmts(#20343,18,#20001,26,"var str ... teral"";") -#20344=@"loc,{#10000},32,1,32,34" -locations_default(#20344,#10000,32,1,32,34) +tokeninfo(#20343,6,#20001,106,"stringObjectVar") +#20344=@"loc,{#10000},21,5,21,19" +locations_default(#20344,#10000,21,5,21,19) hasLocation(#20343,#20344) -stmtContainers(#20343,#20001) #20345=* -exprs(#20345,64,#20343,0,"stringL ... iteral""") -#20346=@"loc,{#10000},32,5,32,33" -locations_default(#20346,#10000,32,5,32,33) +tokeninfo(#20345,8,#20001,107,":") +#20346=@"loc,{#10000},21,20,21,20" +locations_default(#20346,#10000,21,20,21,20) hasLocation(#20345,#20346) -enclosingStmt(#20345,#20343) -exprContainers(#20345,#20001) #20347=* -exprs(#20347,78,#20345,0,"stringLiteralVar") -#20348=@"loc,{#10000},32,5,32,20" -locations_default(#20348,#10000,32,5,32,20) +tokeninfo(#20347,6,#20001,108,"String") +#20348=@"loc,{#10000},21,25,21,30" +locations_default(#20348,#10000,21,25,21,30) hasLocation(#20347,#20348) -enclosingStmt(#20347,#20343) -exprContainers(#20347,#20001) -literals("stringLiteralVar","stringLiteralVar",#20347) -decl(#20347,#20026) #20349=* -typeexprs(#20349,3,#20345,2,"""literal""") -#20350=@"loc,{#10000},32,25,32,33" -locations_default(#20350,#10000,32,25,32,33) +tokeninfo(#20349,7,#20001,109,"var") +#20350=@"loc,{#10000},22,1,22,3" +locations_default(#20350,#10000,22,1,22,3) hasLocation(#20349,#20350) -enclosingStmt(#20349,#20343) -exprContainers(#20349,#20001) -literals("literal","""literal""",#20349) #20351=* -stmts(#20351,18,#20001,27,"var tru ... true;") -#20352=@"loc,{#10000},33,1,33,29" -locations_default(#20352,#10000,33,1,33,29) +tokeninfo(#20351,6,#20001,110,"pointVar") +#20352=@"loc,{#10000},22,5,22,12" +locations_default(#20352,#10000,22,5,22,12) hasLocation(#20351,#20352) -stmtContainers(#20351,#20001) #20353=* -exprs(#20353,64,#20351,0,"trueVar ... true") -#20354=@"loc,{#10000},33,5,33,28" -locations_default(#20354,#10000,33,5,33,28) +tokeninfo(#20353,8,#20001,111,":") +#20354=@"loc,{#10000},22,13,22,13" +locations_default(#20354,#10000,22,13,22,13) hasLocation(#20353,#20354) -enclosingStmt(#20353,#20351) -exprContainers(#20353,#20001) #20355=* -exprs(#20355,78,#20353,0,"trueVar") -#20356=@"loc,{#10000},33,5,33,11" -locations_default(#20356,#10000,33,5,33,11) +tokeninfo(#20355,6,#20001,112,"Point") +#20356=@"loc,{#10000},22,25,22,29" +locations_default(#20356,#10000,22,25,22,29) hasLocation(#20355,#20356) -enclosingStmt(#20355,#20351) -exprContainers(#20355,#20001) -literals("trueVar","trueVar",#20355) -decl(#20355,#20027) #20357=* -typeexprs(#20357,5,#20353,2,"true") -#20358=@"loc,{#10000},33,25,33,28" -locations_default(#20358,#10000,33,25,33,28) +tokeninfo(#20357,7,#20001,113,"var") +#20358=@"loc,{#10000},23,1,23,3" +locations_default(#20358,#10000,23,1,23,3) hasLocation(#20357,#20358) -enclosingStmt(#20357,#20351) -exprContainers(#20357,#20001) -literals("true","true",#20357) #20359=* -stmts(#20359,18,#20001,28,"var fal ... false;") -#20360=@"loc,{#10000},34,1,34,30" -locations_default(#20360,#10000,34,1,34,30) +tokeninfo(#20359,6,#20001,114,"rawFunctionVar") +#20360=@"loc,{#10000},23,5,23,18" +locations_default(#20360,#10000,23,5,23,18) hasLocation(#20359,#20360) -stmtContainers(#20359,#20001) #20361=* -exprs(#20361,64,#20359,0,"falseVa ... false") -#20362=@"loc,{#10000},34,5,34,29" -locations_default(#20362,#10000,34,5,34,29) +tokeninfo(#20361,8,#20001,115,":") +#20362=@"loc,{#10000},23,19,23,19" +locations_default(#20362,#10000,23,19,23,19) hasLocation(#20361,#20362) -enclosingStmt(#20361,#20359) -exprContainers(#20361,#20001) #20363=* -exprs(#20363,78,#20361,0,"falseVar") -#20364=@"loc,{#10000},34,5,34,12" -locations_default(#20364,#10000,34,5,34,12) +tokeninfo(#20363,6,#20001,116,"Function") +#20364=@"loc,{#10000},23,25,23,32" +locations_default(#20364,#10000,23,25,23,32) hasLocation(#20363,#20364) -enclosingStmt(#20363,#20359) -exprContainers(#20363,#20001) -literals("falseVar","falseVar",#20363) -decl(#20363,#20028) #20365=* -typeexprs(#20365,5,#20361,2,"false") -#20366=@"loc,{#10000},34,25,34,29" -locations_default(#20366,#10000,34,25,34,29) +tokeninfo(#20365,7,#20001,117,"var") +#20366=@"loc,{#10000},24,1,24,3" +locations_default(#20366,#10000,24,1,24,3) hasLocation(#20365,#20366) -enclosingStmt(#20365,#20359) -exprContainers(#20365,#20001) -literals("false","false",#20365) #20367=* -stmts(#20367,18,#20001,29,"var int ... 100;") -#20368=@"loc,{#10000},35,1,35,28" -locations_default(#20368,#10000,35,1,35,28) +tokeninfo(#20367,6,#20001,118,"varVar") +#20368=@"loc,{#10000},24,5,24,10" +locations_default(#20368,#10000,24,5,24,10) hasLocation(#20367,#20368) -stmtContainers(#20367,#20001) #20369=* -exprs(#20369,64,#20367,0,"intLite ... 100") -#20370=@"loc,{#10000},35,5,35,27" -locations_default(#20370,#10000,35,5,35,27) +tokeninfo(#20369,8,#20001,119,":") +#20370=@"loc,{#10000},24,11,24,11" +locations_default(#20370,#10000,24,11,24,11) hasLocation(#20369,#20370) -enclosingStmt(#20369,#20367) -exprContainers(#20369,#20001) #20371=* -exprs(#20371,78,#20369,0,"intLiteralVar") -#20372=@"loc,{#10000},35,5,35,17" -locations_default(#20372,#10000,35,5,35,17) +tokeninfo(#20371,6,#20001,120,"x11") +#20372=@"loc,{#10000},24,25,24,27" +locations_default(#20372,#10000,24,25,24,27) hasLocation(#20371,#20372) -enclosingStmt(#20371,#20367) -exprContainers(#20371,#20001) -literals("intLiteralVar","intLiteralVar",#20371) -decl(#20371,#20029) #20373=* -typeexprs(#20373,4,#20369,2,"100") -#20374=@"loc,{#10000},35,25,35,27" -locations_default(#20374,#10000,35,25,35,27) +tokeninfo(#20373,7,#20001,121,"var") +#20374=@"loc,{#10000},25,1,25,3" +locations_default(#20374,#10000,25,1,25,3) hasLocation(#20373,#20374) -enclosingStmt(#20373,#20367) -exprContainers(#20373,#20001) -literals("100","100",#20373) #20375=* -stmts(#20375,18,#20001,30,"var dou ... 100.50;") -#20376=@"loc,{#10000},36,1,36,31" -locations_default(#20376,#10000,36,1,36,31) +tokeninfo(#20375,6,#20001,122,"genericArrayVar") +#20376=@"loc,{#10000},25,5,25,19" +locations_default(#20376,#10000,25,5,25,19) hasLocation(#20375,#20376) -stmtContainers(#20375,#20001) #20377=* -exprs(#20377,64,#20375,0,"doubleL ... 100.50") -#20378=@"loc,{#10000},36,5,36,30" -locations_default(#20378,#10000,36,5,36,30) +tokeninfo(#20377,8,#20001,123,":") +#20378=@"loc,{#10000},25,20,25,20" +locations_default(#20378,#10000,25,20,25,20) hasLocation(#20377,#20378) -enclosingStmt(#20377,#20375) -exprContainers(#20377,#20001) #20379=* -exprs(#20379,78,#20377,0,"doubleLiteralVar") -#20380=@"loc,{#10000},36,5,36,20" -locations_default(#20380,#10000,36,5,36,20) +tokeninfo(#20379,6,#20001,124,"Array") +#20380=@"loc,{#10000},25,25,25,29" +locations_default(#20380,#10000,25,25,25,29) hasLocation(#20379,#20380) -enclosingStmt(#20379,#20375) -exprContainers(#20379,#20001) -literals("doubleLiteralVar","doubleLiteralVar",#20379) -decl(#20379,#20030) #20381=* -typeexprs(#20381,4,#20377,2,"100.50") -#20382=@"loc,{#10000},36,25,36,30" -locations_default(#20382,#10000,36,25,36,30) +tokeninfo(#20381,8,#20001,125,"<") +#20382=@"loc,{#10000},25,30,25,30" +locations_default(#20382,#10000,25,30,25,30) hasLocation(#20381,#20382) -enclosingStmt(#20381,#20375) -exprContainers(#20381,#20001) -literals("100.5","100.50",#20381) #20383=* -stmts(#20383,18,#20001,31,"var tup ... number]") -#20384=@"loc,{#10000},37,1,37,40" -locations_default(#20384,#10000,37,1,37,40) +tokeninfo(#20383,7,#20001,126,"number") +#20384=@"loc,{#10000},25,31,25,36" +locations_default(#20384,#10000,25,31,25,36) hasLocation(#20383,#20384) -stmtContainers(#20383,#20001) #20385=* -exprs(#20385,64,#20383,0,"tupleVa ... number]") -#20386=@"loc,{#10000},37,5,37,40" -locations_default(#20386,#10000,37,5,37,40) +tokeninfo(#20385,8,#20001,127,">") +#20386=@"loc,{#10000},25,37,25,37" +locations_default(#20386,#10000,25,37,25,37) hasLocation(#20385,#20386) -enclosingStmt(#20385,#20383) -exprContainers(#20385,#20001) #20387=* -exprs(#20387,78,#20385,0,"tupleVar") -#20388=@"loc,{#10000},37,5,37,12" -locations_default(#20388,#10000,37,5,37,12) +tokeninfo(#20387,7,#20001,128,"var") +#20388=@"loc,{#10000},26,1,26,3" +locations_default(#20388,#10000,26,1,26,3) hasLocation(#20387,#20388) -enclosingStmt(#20387,#20383) -exprContainers(#20387,#20001) -literals("tupleVar","tupleVar",#20387) -decl(#20387,#20031) #20389=* -typeexprs(#20389,11,#20385,2,"[string, number]") -#20390=@"loc,{#10000},37,25,37,40" -locations_default(#20390,#10000,37,25,37,40) +tokeninfo(#20389,6,#20001,129,"nestedGenericVar") +#20390=@"loc,{#10000},26,5,26,20" +locations_default(#20390,#10000,26,5,26,20) hasLocation(#20389,#20390) -enclosingStmt(#20389,#20383) -exprContainers(#20389,#20001) #20391=* -typeexprs(#20391,2,#20389,0,"string") -#20392=@"loc,{#10000},37,26,37,31" -locations_default(#20392,#10000,37,26,37,31) +tokeninfo(#20391,8,#20001,130,":") +#20392=@"loc,{#10000},26,21,26,21" +locations_default(#20392,#10000,26,21,26,21) hasLocation(#20391,#20392) -enclosingStmt(#20391,#20383) -exprContainers(#20391,#20001) -literals("string","string",#20391) #20393=* -typeexprs(#20393,2,#20389,1,"number") -#20394=@"loc,{#10000},37,34,37,39" -locations_default(#20394,#10000,37,34,37,39) +tokeninfo(#20393,6,#20001,131,"Foo") +#20394=@"loc,{#10000},26,25,26,27" +locations_default(#20394,#10000,26,25,26,27) hasLocation(#20393,#20394) -enclosingStmt(#20393,#20383) -exprContainers(#20393,#20001) -literals("number","number",#20393) #20395=* -stmts(#20395,18,#20001,32,"var lon ... "" | [3]") -#20396=@"loc,{#10000},38,1,38,46" -locations_default(#20396,#10000,38,1,38,46) +tokeninfo(#20395,8,#20001,132,"<") +#20396=@"loc,{#10000},26,28,26,28" +locations_default(#20396,#10000,26,28,26,28) hasLocation(#20395,#20396) -stmtContainers(#20395,#20001) #20397=* -exprs(#20397,64,#20395,0,"longUni ... "" | [3]") -#20398=@"loc,{#10000},38,5,38,46" -locations_default(#20398,#10000,38,5,38,46) +tokeninfo(#20397,6,#20001,133,"Foo") +#20398=@"loc,{#10000},26,29,26,31" +locations_default(#20398,#10000,26,29,26,31) hasLocation(#20397,#20398) -enclosingStmt(#20397,#20395) -exprContainers(#20397,#20001) #20399=* -exprs(#20399,78,#20397,0,"longUnionVar") -#20400=@"loc,{#10000},38,5,38,16" -locations_default(#20400,#10000,38,5,38,16) +tokeninfo(#20399,8,#20001,134,"<") +#20400=@"loc,{#10000},26,32,26,32" +locations_default(#20400,#10000,26,32,26,32) hasLocation(#20399,#20400) -enclosingStmt(#20399,#20395) -exprContainers(#20399,#20001) -literals("longUnionVar","longUnionVar",#20399) -decl(#20399,#20032) #20401=* -typeexprs(#20401,7,#20397,2,"null | ... "" | [3]") -#20402=@"loc,{#10000},38,25,38,46" -locations_default(#20402,#10000,38,25,38,46) +tokeninfo(#20401,7,#20001,135,"number") +#20402=@"loc,{#10000},26,33,26,38" +locations_default(#20402,#10000,26,33,26,38) hasLocation(#20401,#20402) -enclosingStmt(#20401,#20395) -exprContainers(#20401,#20001) #20403=* -typeexprs(#20403,2,#20401,0,"null") -#20404=@"loc,{#10000},38,25,38,28" -locations_default(#20404,#10000,38,25,38,28) +tokeninfo(#20403,8,#20001,136,">") +#20404=@"loc,{#10000},26,39,26,39" +locations_default(#20404,#10000,26,39,26,39) hasLocation(#20403,#20404) -enclosingStmt(#20403,#20395) -exprContainers(#20403,#20001) -literals("null","null",#20403) #20405=* -typeexprs(#20405,4,#20401,1,"1") -#20406=@"loc,{#10000},38,32,38,32" -locations_default(#20406,#10000,38,32,38,32) +tokeninfo(#20405,8,#20001,137,">") +#20406=@"loc,{#10000},26,40,26,40" +locations_default(#20406,#10000,26,40,26,40) hasLocation(#20405,#20406) -enclosingStmt(#20405,#20395) -exprContainers(#20405,#20001) -literals("1","1",#20405) #20407=* -typeexprs(#20407,3,#20401,2,"""two""") -#20408=@"loc,{#10000},38,36,38,40" -locations_default(#20408,#10000,38,36,38,40) +tokeninfo(#20407,7,#20001,138,"var") +#20408=@"loc,{#10000},27,1,27,3" +locations_default(#20408,#10000,27,1,27,3) hasLocation(#20407,#20408) -enclosingStmt(#20407,#20395) -exprContainers(#20407,#20001) -literals("two","""two""",#20407) #20409=* -typeexprs(#20409,11,#20401,3,"[3]") -#20410=@"loc,{#10000},38,44,38,46" -locations_default(#20410,#10000,38,44,38,46) +tokeninfo(#20409,6,#20001,139,"callSigVar") +#20410=@"loc,{#10000},27,5,27,14" +locations_default(#20410,#10000,27,5,27,14) hasLocation(#20409,#20410) -enclosingStmt(#20409,#20395) -exprContainers(#20409,#20001) #20411=* -typeexprs(#20411,4,#20409,0,"3") -#20412=@"loc,{#10000},38,45,38,45" -locations_default(#20412,#10000,38,45,38,45) +tokeninfo(#20411,8,#20001,140,":") +#20412=@"loc,{#10000},27,15,27,15" +locations_default(#20412,#10000,27,15,27,15) hasLocation(#20411,#20412) -enclosingStmt(#20411,#20395) -exprContainers(#20411,#20001) -literals("3","3",#20411) #20413=* -stmts(#20413,18,#20001,33,"var int ... & Bar;") -#20414=@"loc,{#10000},39,1,39,34" -locations_default(#20414,#10000,39,1,39,34) +tokeninfo(#20413,8,#20001,141,"(") +#20414=@"loc,{#10000},27,25,27,25" +locations_default(#20414,#10000,27,25,27,25) hasLocation(#20413,#20414) -stmtContainers(#20413,#20001) #20415=* -exprs(#20415,64,#20413,0,"interse ... o & Bar") -#20416=@"loc,{#10000},39,5,39,33" -locations_default(#20416,#10000,39,5,39,33) +tokeninfo(#20415,8,#20001,142,")") +#20416=@"loc,{#10000},27,26,27,26" +locations_default(#20416,#10000,27,26,27,26) hasLocation(#20415,#20416) -enclosingStmt(#20415,#20413) -exprContainers(#20415,#20001) #20417=* -exprs(#20417,78,#20415,0,"intersectVar") -#20418=@"loc,{#10000},39,5,39,16" -locations_default(#20418,#10000,39,5,39,16) +tokeninfo(#20417,8,#20001,143,"=>") +#20418=@"loc,{#10000},27,28,27,29" +locations_default(#20418,#10000,27,28,27,29) hasLocation(#20417,#20418) -enclosingStmt(#20417,#20413) -exprContainers(#20417,#20001) -literals("intersectVar","intersectVar",#20417) -decl(#20417,#20033) #20419=* -typeexprs(#20419,9,#20415,2,"Foo & Bar") -#20420=@"loc,{#10000},39,25,39,33" -locations_default(#20420,#10000,39,25,39,33) +tokeninfo(#20419,7,#20001,144,"number") +#20420=@"loc,{#10000},27,31,27,36" +locations_default(#20420,#10000,27,31,27,36) hasLocation(#20419,#20420) -enclosingStmt(#20419,#20413) -exprContainers(#20419,#20001) #20421=* -typeexprs(#20421,0,#20419,0,"Foo") -#20422=@"loc,{#10000},39,25,39,27" -locations_default(#20422,#10000,39,25,39,27) +tokeninfo(#20421,8,#20001,145,";") +#20422=@"loc,{#10000},27,37,27,37" +locations_default(#20422,#10000,27,37,27,37) hasLocation(#20421,#20422) -enclosingStmt(#20421,#20413) -exprContainers(#20421,#20001) -literals("Foo","Foo",#20421) #20423=* -typeexprs(#20423,0,#20419,1,"Bar") -#20424=@"loc,{#10000},39,31,39,33" -locations_default(#20424,#10000,39,31,39,33) +tokeninfo(#20423,7,#20001,146,"var") +#20424=@"loc,{#10000},28,1,28,3" +locations_default(#20424,#10000,28,1,28,3) hasLocation(#20423,#20424) -enclosingStmt(#20423,#20413) -exprContainers(#20423,#20001) -literals("Bar","Bar",#20423) #20425=* -stmts(#20425,18,#20001,34,"var gen ... ) => T;") -#20426=@"loc,{#10000},40,1,40,39" -locations_default(#20426,#10000,40,1,40,39) +tokeninfo(#20425,6,#20001,147,"constructSigVar") +#20426=@"loc,{#10000},28,5,28,19" +locations_default(#20426,#10000,28,5,28,19) hasLocation(#20425,#20426) -stmtContainers(#20425,#20001) #20427=* -exprs(#20427,64,#20425,0,"generic ... T) => T") -#20428=@"loc,{#10000},40,5,40,38" -locations_default(#20428,#10000,40,5,40,38) +tokeninfo(#20427,8,#20001,148,":") +#20428=@"loc,{#10000},28,20,28,20" +locations_default(#20428,#10000,28,20,28,20) hasLocation(#20427,#20428) -enclosingStmt(#20427,#20425) -exprContainers(#20427,#20001) #20429=* -exprs(#20429,78,#20427,0,"genericCallSigVar") -#20430=@"loc,{#10000},40,5,40,21" -locations_default(#20430,#10000,40,5,40,21) +tokeninfo(#20429,7,#20001,149,"new") +#20430=@"loc,{#10000},28,25,28,27" +locations_default(#20430,#10000,28,25,28,27) hasLocation(#20429,#20430) -enclosingStmt(#20429,#20425) -exprContainers(#20429,#20001) -literals("genericCallSigVar","genericCallSigVar",#20429) -decl(#20429,#20034) #20431=* -typeexprs(#20431,23,#20427,2,"(x: T) => T") -#20432=@"loc,{#10000},40,25,40,38" -locations_default(#20432,#10000,40,25,40,38) +tokeninfo(#20431,8,#20001,150,"(") +#20432=@"loc,{#10000},28,29,28,29" +locations_default(#20432,#10000,28,29,28,29) hasLocation(#20431,#20432) -enclosingStmt(#20431,#20425) -exprContainers(#20431,#20001) #20433=* -exprs(#20433,9,#20431,0,"(x: T) => T") -hasLocation(#20433,#20432) -enclosingStmt(#20433,#20425) -exprContainers(#20433,#20001) -#20434=* -scopes(#20434,1) -scopenodes(#20433,#20434) -scopenesting(#20434,#20000) -#20435=@"local_type_name;{T};{#20434}" -local_type_names(#20435,"T",#20434) -#20436=@"var;{x};{#20434}" -variables(#20436,"x",#20434) +tokeninfo(#20433,8,#20001,151,")") +#20434=@"loc,{#10000},28,30,28,30" +locations_default(#20434,#10000,28,30,28,30) +hasLocation(#20433,#20434) +#20435=* +tokeninfo(#20435,8,#20001,152,"=>") +#20436=@"loc,{#10000},28,32,28,33" +locations_default(#20436,#10000,28,32,28,33) +hasLocation(#20435,#20436) #20437=* -exprs(#20437,78,#20433,0,"x") -#20438=@"loc,{#10000},40,29,40,29" -locations_default(#20438,#10000,40,29,40,29) +tokeninfo(#20437,6,#20001,153,"Point") +#20438=@"loc,{#10000},28,35,28,39" +locations_default(#20438,#10000,28,35,28,39) hasLocation(#20437,#20438) -exprContainers(#20437,#20433) -literals("x","x",#20437) -decl(#20437,#20436) -#20439=@"var;{arguments};{#20434}" -variables(#20439,"arguments",#20434) -isArgumentsObject(#20439) -#20440=* -typeexprs(#20440,0,#20433,-3,"T") -#20441=@"loc,{#10000},40,38,40,38" -locations_default(#20441,#10000,40,38,40,38) -hasLocation(#20440,#20441) -exprContainers(#20440,#20433) -literals("T","T",#20440) -typebind(#20440,#20435) -#20442=* -typeexprs(#20442,0,#20433,-6,"T") -#20443=@"loc,{#10000},40,32,40,32" -locations_default(#20443,#10000,40,32,40,32) -hasLocation(#20442,#20443) -exprContainers(#20442,#20433) -literals("T","T",#20442) -typebind(#20442,#20435) -#20444=* -typeexprs(#20444,22,#20433,-7,"T") -#20445=@"loc,{#10000},40,26,40,26" -locations_default(#20445,#10000,40,26,40,26) -hasLocation(#20444,#20445) -exprContainers(#20444,#20433) -#20446=* -typeexprs(#20446,1,#20444,0,"T") -hasLocation(#20446,#20445) -exprContainers(#20446,#20433) -literals("T","T",#20446) -typedecl(#20446,#20435) -numlines(#20433,1,1,0) +#20439=* +tokeninfo(#20439,8,#20001,154,";") +#20440=@"loc,{#10000},28,40,28,40" +locations_default(#20440,#10000,28,40,28,40) +hasLocation(#20439,#20440) +#20441=* +tokeninfo(#20441,7,#20001,155,"var") +#20442=@"loc,{#10000},29,1,29,3" +locations_default(#20442,#10000,29,1,29,3) +hasLocation(#20441,#20442) +#20443=* +tokeninfo(#20443,6,#20001,156,"callSigVoidVar") +#20444=@"loc,{#10000},29,5,29,18" +locations_default(#20444,#10000,29,5,29,18) +hasLocation(#20443,#20444) +#20445=* +tokeninfo(#20445,8,#20001,157,":") +#20446=@"loc,{#10000},29,19,29,19" +locations_default(#20446,#10000,29,19,29,19) +hasLocation(#20445,#20446) #20447=* -stmts(#20447,18,#20001,35,"var gen ... ) => T;") -#20448=@"loc,{#10000},41,1,41,47" -locations_default(#20448,#10000,41,1,41,47) +tokeninfo(#20447,8,#20001,158,"(") +#20448=@"loc,{#10000},29,25,29,25" +locations_default(#20448,#10000,29,25,29,25) hasLocation(#20447,#20448) -stmtContainers(#20447,#20001) #20449=* -exprs(#20449,64,#20447,0,"generic ... T) => T") -#20450=@"loc,{#10000},41,5,41,46" -locations_default(#20450,#10000,41,5,41,46) +tokeninfo(#20449,8,#20001,159,")") +#20450=@"loc,{#10000},29,26,29,26" +locations_default(#20450,#10000,29,26,29,26) hasLocation(#20449,#20450) -enclosingStmt(#20449,#20447) -exprContainers(#20449,#20001) #20451=* -exprs(#20451,78,#20449,0,"generic ... tSigVar") -#20452=@"loc,{#10000},41,5,41,26" -locations_default(#20452,#10000,41,5,41,26) +tokeninfo(#20451,8,#20001,160,"=>") +#20452=@"loc,{#10000},29,28,29,29" +locations_default(#20452,#10000,29,28,29,29) hasLocation(#20451,#20452) -enclosingStmt(#20451,#20447) -exprContainers(#20451,#20001) -literals("genericConstructSigVar","genericConstructSigVar",#20451) -decl(#20451,#20035) #20453=* -typeexprs(#20453,24,#20449,2,"new (x: T) => T") -#20454=@"loc,{#10000},41,29,41,46" -locations_default(#20454,#10000,41,29,41,46) +tokeninfo(#20453,7,#20001,161,"void") +#20454=@"loc,{#10000},29,31,29,34" +locations_default(#20454,#10000,29,31,29,34) hasLocation(#20453,#20454) -enclosingStmt(#20453,#20447) -exprContainers(#20453,#20001) #20455=* -exprs(#20455,9,#20453,0,"new (x: T) => T") -hasLocation(#20455,#20454) -enclosingStmt(#20455,#20447) -exprContainers(#20455,#20001) -#20456=* -scopes(#20456,1) -scopenodes(#20455,#20456) -scopenesting(#20456,#20000) -#20457=@"local_type_name;{T};{#20456}" -local_type_names(#20457,"T",#20456) -#20458=@"var;{x};{#20456}" -variables(#20458,"x",#20456) +tokeninfo(#20455,8,#20001,162,";") +#20456=@"loc,{#10000},29,35,29,35" +locations_default(#20456,#10000,29,35,29,35) +hasLocation(#20455,#20456) +#20457=* +tokeninfo(#20457,7,#20001,163,"var") +#20458=@"loc,{#10000},30,1,30,3" +locations_default(#20458,#10000,30,1,30,3) +hasLocation(#20457,#20458) #20459=* -exprs(#20459,78,#20455,0,"x") -#20460=@"loc,{#10000},41,37,41,37" -locations_default(#20460,#10000,41,37,41,37) +tokeninfo(#20459,6,#20001,164,"callSigNeverVar") +#20460=@"loc,{#10000},30,5,30,19" +locations_default(#20460,#10000,30,5,30,19) hasLocation(#20459,#20460) -exprContainers(#20459,#20455) -literals("x","x",#20459) -decl(#20459,#20458) -#20461=@"var;{arguments};{#20456}" -variables(#20461,"arguments",#20456) -isArgumentsObject(#20461) -#20462=* -typeexprs(#20462,0,#20455,-3,"T") -#20463=@"loc,{#10000},41,46,41,46" -locations_default(#20463,#10000,41,46,41,46) -hasLocation(#20462,#20463) -exprContainers(#20462,#20455) -literals("T","T",#20462) -typebind(#20462,#20457) -#20464=* -typeexprs(#20464,0,#20455,-6,"T") -#20465=@"loc,{#10000},41,40,41,40" -locations_default(#20465,#10000,41,40,41,40) -hasLocation(#20464,#20465) -exprContainers(#20464,#20455) -literals("T","T",#20464) -typebind(#20464,#20457) -#20466=* -typeexprs(#20466,22,#20455,-7,"T") -#20467=@"loc,{#10000},41,34,41,34" -locations_default(#20467,#10000,41,34,41,34) -hasLocation(#20466,#20467) -exprContainers(#20466,#20455) -#20468=* -typeexprs(#20468,1,#20466,0,"T") -hasLocation(#20468,#20467) -exprContainers(#20468,#20455) -literals("T","T",#20468) -typedecl(#20468,#20457) -numlines(#20455,1,1,0) +#20461=* +tokeninfo(#20461,8,#20001,165,":") +#20462=@"loc,{#10000},30,20,30,20" +locations_default(#20462,#10000,30,20,30,20) +hasLocation(#20461,#20462) +#20463=* +tokeninfo(#20463,8,#20001,166,"(") +#20464=@"loc,{#10000},30,25,30,25" +locations_default(#20464,#10000,30,25,30,25) +hasLocation(#20463,#20464) +#20465=* +tokeninfo(#20465,8,#20001,167,")") +#20466=@"loc,{#10000},30,26,30,26" +locations_default(#20466,#10000,30,26,30,26) +hasLocation(#20465,#20466) +#20467=* +tokeninfo(#20467,8,#20001,168,"=>") +#20468=@"loc,{#10000},30,28,30,29" +locations_default(#20468,#10000,30,28,30,29) +hasLocation(#20467,#20468) #20469=* -stmts(#20469,18,#20001,36,"var key ... f Point") -#20470=@"loc,{#10000},42,1,42,35" -locations_default(#20470,#10000,42,1,42,35) +tokeninfo(#20469,7,#20001,169,"never") +#20470=@"loc,{#10000},30,31,30,35" +locations_default(#20470,#10000,30,31,30,35) hasLocation(#20469,#20470) -stmtContainers(#20469,#20001) #20471=* -exprs(#20471,64,#20469,0,"keyofVa ... f Point") -#20472=@"loc,{#10000},42,5,42,35" -locations_default(#20472,#10000,42,5,42,35) +tokeninfo(#20471,8,#20001,170,";") +#20472=@"loc,{#10000},30,36,30,36" +locations_default(#20472,#10000,30,36,30,36) hasLocation(#20471,#20472) -enclosingStmt(#20471,#20469) -exprContainers(#20471,#20001) #20473=* -exprs(#20473,78,#20471,0,"keyofVar") -#20474=@"loc,{#10000},42,5,42,12" -locations_default(#20474,#10000,42,5,42,12) +tokeninfo(#20473,7,#20001,171,"var") +#20474=@"loc,{#10000},31,1,31,3" +locations_default(#20474,#10000,31,1,31,3) hasLocation(#20473,#20474) -enclosingStmt(#20473,#20469) -exprContainers(#20473,#20001) -literals("keyofVar","keyofVar",#20473) -decl(#20473,#20036) #20475=* -typeexprs(#20475,12,#20471,2,"keyof Point") -#20476=@"loc,{#10000},42,25,42,35" -locations_default(#20476,#10000,42,25,42,35) +tokeninfo(#20475,6,#20001,172,"unionVar") +#20476=@"loc,{#10000},31,5,31,12" +locations_default(#20476,#10000,31,5,31,12) hasLocation(#20475,#20476) -enclosingStmt(#20475,#20469) -exprContainers(#20475,#20001) #20477=* -typeexprs(#20477,0,#20475,0,"Point") -#20478=@"loc,{#10000},42,31,42,35" -locations_default(#20478,#10000,42,31,42,35) +tokeninfo(#20477,8,#20001,173,":") +#20478=@"loc,{#10000},31,13,31,13" +locations_default(#20478,#10000,31,13,31,13) hasLocation(#20477,#20478) -enclosingStmt(#20477,#20469) -exprContainers(#20477,#20001) -literals("Point","Point",#20477) -typebind(#20477,#20049) #20479=* -stmts(#20479,18,#20001,37,"var ind ... nt[""x""]") -#20480=@"loc,{#10000},43,1,43,34" -locations_default(#20480,#10000,43,1,43,34) +tokeninfo(#20479,7,#20001,174,"number") +#20480=@"loc,{#10000},31,25,31,30" +locations_default(#20480,#10000,31,25,31,30) hasLocation(#20479,#20480) -stmtContainers(#20479,#20001) #20481=* -exprs(#20481,64,#20479,0,"indexed ... nt[""x""]") -#20482=@"loc,{#10000},43,5,43,34" -locations_default(#20482,#10000,43,5,43,34) +tokeninfo(#20481,8,#20001,175,"|") +#20482=@"loc,{#10000},31,32,31,32" +locations_default(#20482,#10000,31,32,31,32) hasLocation(#20481,#20482) -enclosingStmt(#20481,#20479) -exprContainers(#20481,#20001) #20483=* -exprs(#20483,78,#20481,0,"indexedVar") -#20484=@"loc,{#10000},43,5,43,14" -locations_default(#20484,#10000,43,5,43,14) +tokeninfo(#20483,7,#20001,176,"string") +#20484=@"loc,{#10000},31,34,31,39" +locations_default(#20484,#10000,31,34,31,39) hasLocation(#20483,#20484) -enclosingStmt(#20483,#20479) -exprContainers(#20483,#20001) -literals("indexedVar","indexedVar",#20483) -decl(#20483,#20037) #20485=* -typeexprs(#20485,8,#20481,2,"Point[""x""]") -#20486=@"loc,{#10000},43,25,43,34" -locations_default(#20486,#10000,43,25,43,34) +tokeninfo(#20485,8,#20001,177,";") +#20486=@"loc,{#10000},31,40,31,40" +locations_default(#20486,#10000,31,40,31,40) hasLocation(#20485,#20486) -enclosingStmt(#20485,#20479) -exprContainers(#20485,#20001) #20487=* -typeexprs(#20487,0,#20485,0,"Point") -#20488=@"loc,{#10000},43,25,43,29" -locations_default(#20488,#10000,43,25,43,29) +tokeninfo(#20487,7,#20001,178,"var") +#20488=@"loc,{#10000},32,1,32,3" +locations_default(#20488,#10000,32,1,32,3) hasLocation(#20487,#20488) -enclosingStmt(#20487,#20479) -exprContainers(#20487,#20001) -literals("Point","Point",#20487) -typebind(#20487,#20049) #20489=* -typeexprs(#20489,3,#20485,1,"""x""") -#20490=@"loc,{#10000},43,31,43,33" -locations_default(#20490,#10000,43,31,43,33) +tokeninfo(#20489,6,#20001,179,"stringLiteralVar") +#20490=@"loc,{#10000},32,5,32,20" +locations_default(#20490,#10000,32,5,32,20) hasLocation(#20489,#20490) -enclosingStmt(#20489,#20479) -exprContainers(#20489,#20001) -literals("x","""x""",#20489) #20491=* -stmts(#20491,18,#20001,38,"var typ ... eof x31") -#20492=@"loc,{#10000},44,1,44,34" -locations_default(#20492,#10000,44,1,44,34) +tokeninfo(#20491,8,#20001,180,":") +#20492=@"loc,{#10000},32,21,32,21" +locations_default(#20492,#10000,32,21,32,21) hasLocation(#20491,#20492) -stmtContainers(#20491,#20001) #20493=* -exprs(#20493,64,#20491,0,"typeofV ... eof x31") -#20494=@"loc,{#10000},44,5,44,34" -locations_default(#20494,#10000,44,5,44,34) +tokeninfo(#20493,4,#20001,181,"""literal""") +#20494=@"loc,{#10000},32,25,32,33" +locations_default(#20494,#10000,32,25,32,33) hasLocation(#20493,#20494) -enclosingStmt(#20493,#20491) -exprContainers(#20493,#20001) #20495=* -exprs(#20495,78,#20493,0,"typeofVar") -#20496=@"loc,{#10000},44,5,44,13" -locations_default(#20496,#10000,44,5,44,13) +tokeninfo(#20495,8,#20001,182,";") +#20496=@"loc,{#10000},32,34,32,34" +locations_default(#20496,#10000,32,34,32,34) hasLocation(#20495,#20496) -enclosingStmt(#20495,#20491) -exprContainers(#20495,#20001) -literals("typeofVar","typeofVar",#20495) -decl(#20495,#20038) #20497=* -typeexprs(#20497,16,#20493,2,"typeof x31") -#20498=@"loc,{#10000},44,25,44,34" -locations_default(#20498,#10000,44,25,44,34) +tokeninfo(#20497,7,#20001,183,"var") +#20498=@"loc,{#10000},33,1,33,3" +locations_default(#20498,#10000,33,1,33,3) hasLocation(#20497,#20498) -enclosingStmt(#20497,#20491) -exprContainers(#20497,#20001) #20499=* -typeexprs(#20499,17,#20497,0,"x31") -#20500=@"loc,{#10000},44,32,44,34" -locations_default(#20500,#10000,44,32,44,34) +tokeninfo(#20499,6,#20001,184,"trueVar") +#20500=@"loc,{#10000},33,5,33,11" +locations_default(#20500,#10000,33,5,33,11) hasLocation(#20499,#20500) -enclosingStmt(#20499,#20491) -exprContainers(#20499,#20001) -literals("x31","x31",#20499) -#20501=@"var;{x31};{#20000}" -variables(#20501,"x31",#20000) -bind(#20499,#20501) -#20502=* -stmts(#20502,18,#20001,39,"var map ... : any }") -#20503=@"loc,{#10000},45,1,45,51" -locations_default(#20503,#10000,45,1,45,51) -hasLocation(#20502,#20503) -stmtContainers(#20502,#20001) -#20504=* -exprs(#20504,64,#20502,0,"mappedV ... : any }") -#20505=@"loc,{#10000},45,5,45,51" -locations_default(#20505,#10000,45,5,45,51) -hasLocation(#20504,#20505) -enclosingStmt(#20504,#20502) -exprContainers(#20504,#20001) -#20506=* -exprs(#20506,78,#20504,0,"mappedVar") -#20507=@"loc,{#10000},45,5,45,13" -locations_default(#20507,#10000,45,5,45,13) -hasLocation(#20506,#20507) -enclosingStmt(#20506,#20502) -exprContainers(#20506,#20001) -literals("mappedVar","mappedVar",#20506) -decl(#20506,#20039) -#20508=* -typeexprs(#20508,27,#20504,2,"{ [K in ... : any }") -#20509=@"loc,{#10000},45,25,45,51" -locations_default(#20509,#10000,45,25,45,51) -hasLocation(#20508,#20509) -enclosingStmt(#20508,#20502) -exprContainers(#20508,#20001) -#20510=* -scopes(#20510,13) -scopenodes(#20508,#20510) -scopenesting(#20510,#20000) -#20511=@"local_type_name;{K};{#20510}" -local_type_names(#20511,"K",#20510) -#20512=* -typeexprs(#20512,22,#20508,0,"K in keyof Point") -#20513=@"loc,{#10000},45,28,45,43" -locations_default(#20513,#10000,45,28,45,43) -hasLocation(#20512,#20513) -enclosingStmt(#20512,#20502) -exprContainers(#20512,#20001) -#20514=* -typeexprs(#20514,1,#20512,0,"K") -#20515=@"loc,{#10000},45,28,45,28" -locations_default(#20515,#10000,45,28,45,28) -hasLocation(#20514,#20515) -enclosingStmt(#20514,#20502) -exprContainers(#20514,#20001) -literals("K","K",#20514) -typedecl(#20514,#20511) -#20516=* -typeexprs(#20516,12,#20512,1,"keyof Point") -#20517=@"loc,{#10000},45,33,45,43" -locations_default(#20517,#10000,45,33,45,43) -hasLocation(#20516,#20517) -enclosingStmt(#20516,#20502) -exprContainers(#20516,#20001) -#20518=* -typeexprs(#20518,0,#20516,0,"Point") -#20519=@"loc,{#10000},45,39,45,43" -locations_default(#20519,#10000,45,39,45,43) -hasLocation(#20518,#20519) -enclosingStmt(#20518,#20502) -exprContainers(#20518,#20001) -literals("Point","Point",#20518) -typebind(#20518,#20049) -#20520=* -typeexprs(#20520,2,#20508,1,"any") -#20521=@"loc,{#10000},45,47,45,49" -locations_default(#20521,#10000,45,47,45,49) -hasLocation(#20520,#20521) -enclosingStmt(#20520,#20502) -exprContainers(#20520,#20001) -literals("any","any",#20520) -#20522=* -stmts(#20522,18,#20001,40,"var par ... umber);") -#20523=@"loc,{#10000},46,1,46,33" -locations_default(#20523,#10000,46,1,46,33) -hasLocation(#20522,#20523) -stmtContainers(#20522,#20001) -#20524=* -exprs(#20524,64,#20522,0,"parenth ... number)") -#20525=@"loc,{#10000},46,5,46,32" -locations_default(#20525,#10000,46,5,46,32) -hasLocation(#20524,#20525) -enclosingStmt(#20524,#20522) -exprContainers(#20524,#20001) -#20526=* -exprs(#20526,78,#20524,0,"parenthesizedVar") -#20527=@"loc,{#10000},46,5,46,20" -locations_default(#20527,#10000,46,5,46,20) -hasLocation(#20526,#20527) -enclosingStmt(#20526,#20522) -exprContainers(#20526,#20001) -literals("parenthesizedVar","parenthesizedVar",#20526) -decl(#20526,#20040) -#20528=* -typeexprs(#20528,10,#20524,2,"(number)") -#20529=@"loc,{#10000},46,25,46,32" -locations_default(#20529,#10000,46,25,46,32) -hasLocation(#20528,#20529) -enclosingStmt(#20528,#20522) -exprContainers(#20528,#20001) -#20530=* -typeexprs(#20530,2,#20528,0,"number") -#20531=@"loc,{#10000},46,26,46,31" -locations_default(#20531,#10000,46,26,46,31) -hasLocation(#20530,#20531) -enclosingStmt(#20530,#20522) -exprContainers(#20530,#20001) -literals("number","number",#20530) -#20532=* -stmts(#20532,18,#20001,41,"var nam ... N.I;") -#20533=@"loc,{#10000},47,1,47,28" -locations_default(#20533,#10000,47,1,47,28) -hasLocation(#20532,#20533) -stmtContainers(#20532,#20001) -#20534=* -exprs(#20534,64,#20532,0,"namespa ... : N.I") -#20535=@"loc,{#10000},47,5,47,27" -locations_default(#20535,#10000,47,5,47,27) -hasLocation(#20534,#20535) -enclosingStmt(#20534,#20532) -exprContainers(#20534,#20001) -#20536=* -exprs(#20536,78,#20534,0,"namespaceTypeVar") -#20537=@"loc,{#10000},47,5,47,20" -locations_default(#20537,#10000,47,5,47,20) -hasLocation(#20536,#20537) -enclosingStmt(#20536,#20532) -exprContainers(#20536,#20001) -literals("namespaceTypeVar","namespaceTypeVar",#20536) -decl(#20536,#20041) -#20538=* -typeexprs(#20538,13,#20534,2,"N.I") -#20539=@"loc,{#10000},47,25,47,27" -locations_default(#20539,#10000,47,25,47,27) -hasLocation(#20538,#20539) -enclosingStmt(#20538,#20532) -exprContainers(#20538,#20001) -#20540=* -typeexprs(#20540,25,#20538,0,"N") -#20541=@"loc,{#10000},47,25,47,25" -locations_default(#20541,#10000,47,25,47,25) -hasLocation(#20540,#20541) -enclosingStmt(#20540,#20532) -exprContainers(#20540,#20001) -literals("N","N",#20540) -namespacebind(#20540,#20044) -#20542=* -typeexprs(#20542,15,#20538,1,"I") -#20543=@"loc,{#10000},47,27,47,27" -locations_default(#20543,#10000,47,27,47,27) -hasLocation(#20542,#20543) -enclosingStmt(#20542,#20532) -exprContainers(#20542,#20001) -literals("I","I",#20542) -#20544=* -stmts(#20544,18,#20001,42,"var nam ... umber>;") -#20545=@"loc,{#10000},48,1,48,41" -locations_default(#20545,#10000,48,1,48,41) -hasLocation(#20544,#20545) -stmtContainers(#20544,#20001) -#20546=* -exprs(#20546,64,#20544,0,"namespa ... number>") -#20547=@"loc,{#10000},48,5,48,40" -locations_default(#20547,#10000,48,5,48,40) -hasLocation(#20546,#20547) -enclosingStmt(#20546,#20544) -exprContainers(#20546,#20001) -#20548=* -exprs(#20548,78,#20546,0,"namespa ... TypeVar") -#20549=@"loc,{#10000},48,5,48,27" -locations_default(#20549,#10000,48,5,48,27) -hasLocation(#20548,#20549) -enclosingStmt(#20548,#20544) -exprContainers(#20548,#20001) -literals("namespaceGenericTypeVar","namespaceGenericTypeVar",#20548) -decl(#20548,#20042) -#20550=* -typeexprs(#20550,14,#20546,2,"N.J") -#20551=@"loc,{#10000},48,30,48,40" -locations_default(#20551,#10000,48,30,48,40) -hasLocation(#20550,#20551) -enclosingStmt(#20550,#20544) -exprContainers(#20550,#20001) -#20552=* -typeexprs(#20552,13,#20550,-1,"N.J") -#20553=@"loc,{#10000},48,30,48,32" -locations_default(#20553,#10000,48,30,48,32) -hasLocation(#20552,#20553) -enclosingStmt(#20552,#20544) -exprContainers(#20552,#20001) -#20554=* -typeexprs(#20554,25,#20552,0,"N") -#20555=@"loc,{#10000},48,30,48,30" -locations_default(#20555,#10000,48,30,48,30) -hasLocation(#20554,#20555) -enclosingStmt(#20554,#20544) -exprContainers(#20554,#20001) -literals("N","N",#20554) -namespacebind(#20554,#20044) -#20556=* -typeexprs(#20556,15,#20552,1,"J") -#20557=@"loc,{#10000},48,32,48,32" -locations_default(#20557,#10000,48,32,48,32) -hasLocation(#20556,#20557) -enclosingStmt(#20556,#20544) -exprContainers(#20556,#20001) -literals("J","J",#20556) -#20558=* -typeexprs(#20558,2,#20550,0,"number") -#20559=@"loc,{#10000},48,34,48,39" -locations_default(#20559,#10000,48,34,48,39) -hasLocation(#20558,#20559) -enclosingStmt(#20558,#20544) -exprContainers(#20558,#20001) -literals("number","number",#20558) -#20560=* -stmts(#20560,34,#20001,43,"interfa ... ): T;\n}") -#20561=@"loc,{#10000},50,1,53,1" -locations_default(#20561,#10000,50,1,53,1) -hasLocation(#20560,#20561) -stmtContainers(#20560,#20001) -#20562=* -scopes(#20562,11) -scopenodes(#20560,#20562) -scopenesting(#20562,#20000) -#20563=@"local_type_name;{T};{#20562}" -local_type_names(#20563,"T",#20562) -#20564=* -typeexprs(#20564,22,#20560,-2,"T") -#20565=@"loc,{#10000},50,28,50,28" -locations_default(#20565,#10000,50,28,50,28) -hasLocation(#20564,#20565) -enclosingStmt(#20564,#20560) -exprContainers(#20564,#20001) -#20566=* -typeexprs(#20566,1,#20564,0,"T") -hasLocation(#20566,#20565) -enclosingStmt(#20566,#20560) -exprContainers(#20566,#20001) -literals("T","T",#20566) -typedecl(#20566,#20563) +#20501=* +tokeninfo(#20501,8,#20001,185,":") +#20502=@"loc,{#10000},33,12,33,12" +locations_default(#20502,#10000,33,12,33,12) +hasLocation(#20501,#20502) +#20503=* +tokeninfo(#20503,2,#20001,186,"true") +#20504=@"loc,{#10000},33,25,33,28" +locations_default(#20504,#10000,33,25,33,28) +hasLocation(#20503,#20504) +#20505=* +tokeninfo(#20505,8,#20001,187,";") +#20506=@"loc,{#10000},33,29,33,29" +locations_default(#20506,#10000,33,29,33,29) +hasLocation(#20505,#20506) +#20507=* +tokeninfo(#20507,7,#20001,188,"var") +#20508=@"loc,{#10000},34,1,34,3" +locations_default(#20508,#10000,34,1,34,3) +hasLocation(#20507,#20508) +#20509=* +tokeninfo(#20509,6,#20001,189,"falseVar") +#20510=@"loc,{#10000},34,5,34,12" +locations_default(#20510,#10000,34,5,34,12) +hasLocation(#20509,#20510) +#20511=* +tokeninfo(#20511,8,#20001,190,":") +#20512=@"loc,{#10000},34,13,34,13" +locations_default(#20512,#10000,34,13,34,13) +hasLocation(#20511,#20512) +#20513=* +tokeninfo(#20513,2,#20001,191,"false") +#20514=@"loc,{#10000},34,25,34,29" +locations_default(#20514,#10000,34,25,34,29) +hasLocation(#20513,#20514) +#20515=* +tokeninfo(#20515,8,#20001,192,";") +#20516=@"loc,{#10000},34,30,34,30" +locations_default(#20516,#10000,34,30,34,30) +hasLocation(#20515,#20516) +#20517=* +tokeninfo(#20517,7,#20001,193,"var") +#20518=@"loc,{#10000},35,1,35,3" +locations_default(#20518,#10000,35,1,35,3) +hasLocation(#20517,#20518) +#20519=* +tokeninfo(#20519,6,#20001,194,"intLiteralVar") +#20520=@"loc,{#10000},35,5,35,17" +locations_default(#20520,#10000,35,5,35,17) +hasLocation(#20519,#20520) +#20521=* +tokeninfo(#20521,8,#20001,195,":") +#20522=@"loc,{#10000},35,18,35,18" +locations_default(#20522,#10000,35,18,35,18) +hasLocation(#20521,#20522) +#20523=* +tokeninfo(#20523,3,#20001,196,"100") +#20524=@"loc,{#10000},35,25,35,27" +locations_default(#20524,#10000,35,25,35,27) +hasLocation(#20523,#20524) +#20525=* +tokeninfo(#20525,8,#20001,197,";") +#20526=@"loc,{#10000},35,28,35,28" +locations_default(#20526,#10000,35,28,35,28) +hasLocation(#20525,#20526) +#20527=* +tokeninfo(#20527,7,#20001,198,"var") +#20528=@"loc,{#10000},36,1,36,3" +locations_default(#20528,#10000,36,1,36,3) +hasLocation(#20527,#20528) +#20529=* +tokeninfo(#20529,6,#20001,199,"doubleLiteralVar") +#20530=@"loc,{#10000},36,5,36,20" +locations_default(#20530,#10000,36,5,36,20) +hasLocation(#20529,#20530) +#20531=* +tokeninfo(#20531,8,#20001,200,":") +#20532=@"loc,{#10000},36,21,36,21" +locations_default(#20532,#10000,36,21,36,21) +hasLocation(#20531,#20532) +#20533=* +tokeninfo(#20533,3,#20001,201,"100.50") +#20534=@"loc,{#10000},36,25,36,30" +locations_default(#20534,#10000,36,25,36,30) +hasLocation(#20533,#20534) +#20535=* +tokeninfo(#20535,8,#20001,202,";") +#20536=@"loc,{#10000},36,31,36,31" +locations_default(#20536,#10000,36,31,36,31) +hasLocation(#20535,#20536) +#20537=* +tokeninfo(#20537,7,#20001,203,"var") +#20538=@"loc,{#10000},37,1,37,3" +locations_default(#20538,#10000,37,1,37,3) +hasLocation(#20537,#20538) +#20539=* +tokeninfo(#20539,6,#20001,204,"tupleVar") +#20540=@"loc,{#10000},37,5,37,12" +locations_default(#20540,#10000,37,5,37,12) +hasLocation(#20539,#20540) +#20541=* +tokeninfo(#20541,8,#20001,205,":") +#20542=@"loc,{#10000},37,13,37,13" +locations_default(#20542,#10000,37,13,37,13) +hasLocation(#20541,#20542) +#20543=* +tokeninfo(#20543,8,#20001,206,"[") +#20544=@"loc,{#10000},37,25,37,25" +locations_default(#20544,#10000,37,25,37,25) +hasLocation(#20543,#20544) +#20545=* +tokeninfo(#20545,7,#20001,207,"string") +#20546=@"loc,{#10000},37,26,37,31" +locations_default(#20546,#10000,37,26,37,31) +hasLocation(#20545,#20546) +#20547=* +tokeninfo(#20547,8,#20001,208,",") +#20548=@"loc,{#10000},37,32,37,32" +locations_default(#20548,#10000,37,32,37,32) +hasLocation(#20547,#20548) +#20549=* +tokeninfo(#20549,7,#20001,209,"number") +#20550=@"loc,{#10000},37,34,37,39" +locations_default(#20550,#10000,37,34,37,39) +hasLocation(#20549,#20550) +#20551=* +tokeninfo(#20551,8,#20001,210,"]") +#20552=@"loc,{#10000},37,40,37,40" +locations_default(#20552,#10000,37,40,37,40) +hasLocation(#20551,#20552) +#20553=* +tokeninfo(#20553,7,#20001,211,"var") +#20554=@"loc,{#10000},38,1,38,3" +locations_default(#20554,#10000,38,1,38,3) +hasLocation(#20553,#20554) +#20555=* +tokeninfo(#20555,6,#20001,212,"longUnionVar") +#20556=@"loc,{#10000},38,5,38,16" +locations_default(#20556,#10000,38,5,38,16) +hasLocation(#20555,#20556) +#20557=* +tokeninfo(#20557,8,#20001,213,":") +#20558=@"loc,{#10000},38,17,38,17" +locations_default(#20558,#10000,38,17,38,17) +hasLocation(#20557,#20558) +#20559=* +tokeninfo(#20559,1,#20001,214,"null") +#20560=@"loc,{#10000},38,25,38,28" +locations_default(#20560,#10000,38,25,38,28) +hasLocation(#20559,#20560) +#20561=* +tokeninfo(#20561,8,#20001,215,"|") +#20562=@"loc,{#10000},38,30,38,30" +locations_default(#20562,#10000,38,30,38,30) +hasLocation(#20561,#20562) +#20563=* +tokeninfo(#20563,3,#20001,216,"1") +#20564=@"loc,{#10000},38,32,38,32" +locations_default(#20564,#10000,38,32,38,32) +hasLocation(#20563,#20564) +#20565=* +tokeninfo(#20565,8,#20001,217,"|") +#20566=@"loc,{#10000},38,34,38,34" +locations_default(#20566,#10000,38,34,38,34) +hasLocation(#20565,#20566) #20567=* -typeexprs(#20567,1,#20560,0,"GenericInterface") -#20568=@"loc,{#10000},50,11,50,26" -locations_default(#20568,#10000,50,11,50,26) +tokeninfo(#20567,4,#20001,218,"""two""") +#20568=@"loc,{#10000},38,36,38,40" +locations_default(#20568,#10000,38,36,38,40) hasLocation(#20567,#20568) -enclosingStmt(#20567,#20560) -exprContainers(#20567,#20001) -literals("GenericInterface","GenericInterface",#20567) -typedecl(#20567,#20050) #20569=* -properties(#20569,#20560,2,8,"field: T;") -#20570=@"loc,{#10000},51,3,51,11" -locations_default(#20570,#10000,51,3,51,11) +tokeninfo(#20569,8,#20001,219,"|") +#20570=@"loc,{#10000},38,42,38,42" +locations_default(#20570,#10000,38,42,38,42) hasLocation(#20569,#20570) #20571=* -exprs(#20571,0,#20569,0,"field") -#20572=@"loc,{#10000},51,3,51,7" -locations_default(#20572,#10000,51,3,51,7) +tokeninfo(#20571,8,#20001,220,"[") +#20572=@"loc,{#10000},38,44,38,44" +locations_default(#20572,#10000,38,44,38,44) hasLocation(#20571,#20572) -enclosingStmt(#20571,#20560) -exprContainers(#20571,#20001) -literals("field","field",#20571) -isAbstractMember(#20569) #20573=* -typeexprs(#20573,0,#20569,2,"T") -#20574=@"loc,{#10000},51,10,51,10" -locations_default(#20574,#10000,51,10,51,10) +tokeninfo(#20573,3,#20001,221,"3") +#20574=@"loc,{#10000},38,45,38,45" +locations_default(#20574,#10000,38,45,38,45) hasLocation(#20573,#20574) -enclosingStmt(#20573,#20560) -exprContainers(#20573,#20001) -literals("T","T",#20573) -typebind(#20573,#20563) #20575=* -properties(#20575,#20560,3,0,"method(x: T): T;") -#20576=@"loc,{#10000},52,3,52,18" -locations_default(#20576,#10000,52,3,52,18) +tokeninfo(#20575,8,#20001,222,"]") +#20576=@"loc,{#10000},38,46,38,46" +locations_default(#20576,#10000,38,46,38,46) hasLocation(#20575,#20576) #20577=* -exprs(#20577,0,#20575,0,"method") -#20578=@"loc,{#10000},52,3,52,8" -locations_default(#20578,#10000,52,3,52,8) +tokeninfo(#20577,7,#20001,223,"var") +#20578=@"loc,{#10000},39,1,39,3" +locations_default(#20578,#10000,39,1,39,3) hasLocation(#20577,#20578) -enclosingStmt(#20577,#20560) -exprContainers(#20577,#20001) -literals("method","method",#20577) #20579=* -exprs(#20579,9,#20575,1,"method(x: T): T;") -hasLocation(#20579,#20576) -enclosingStmt(#20579,#20560) -exprContainers(#20579,#20001) -#20580=* -scopes(#20580,1) -scopenodes(#20579,#20580) -scopenesting(#20580,#20562) -#20581=@"var;{x};{#20580}" -variables(#20581,"x",#20580) -#20582=* -exprs(#20582,78,#20579,0,"x") -#20583=@"loc,{#10000},52,10,52,10" -locations_default(#20583,#10000,52,10,52,10) -hasLocation(#20582,#20583) -exprContainers(#20582,#20579) -literals("x","x",#20582) -decl(#20582,#20581) -#20584=@"var;{arguments};{#20580}" -variables(#20584,"arguments",#20580) -isArgumentsObject(#20584) +tokeninfo(#20579,6,#20001,224,"intersectVar") +#20580=@"loc,{#10000},39,5,39,16" +locations_default(#20580,#10000,39,5,39,16) +hasLocation(#20579,#20580) +#20581=* +tokeninfo(#20581,8,#20001,225,":") +#20582=@"loc,{#10000},39,17,39,17" +locations_default(#20582,#10000,39,17,39,17) +hasLocation(#20581,#20582) +#20583=* +tokeninfo(#20583,6,#20001,226,"Foo") +#20584=@"loc,{#10000},39,25,39,27" +locations_default(#20584,#10000,39,25,39,27) +hasLocation(#20583,#20584) #20585=* -typeexprs(#20585,0,#20579,-3,"T") -#20586=@"loc,{#10000},52,17,52,17" -locations_default(#20586,#10000,52,17,52,17) +tokeninfo(#20585,8,#20001,227,"&") +#20586=@"loc,{#10000},39,29,39,29" +locations_default(#20586,#10000,39,29,39,29) hasLocation(#20585,#20586) -exprContainers(#20585,#20579) -literals("T","T",#20585) -typebind(#20585,#20563) #20587=* -typeexprs(#20587,0,#20579,-6,"T") -#20588=@"loc,{#10000},52,13,52,13" -locations_default(#20588,#10000,52,13,52,13) +tokeninfo(#20587,6,#20001,228,"Bar") +#20588=@"loc,{#10000},39,31,39,33" +locations_default(#20588,#10000,39,31,39,33) hasLocation(#20587,#20588) -exprContainers(#20587,#20579) -literals("T","T",#20587) -typebind(#20587,#20563) -numlines(#20579,1,1,0) -isMethod(#20575) -isAbstractMember(#20575) #20589=* -stmts(#20589,26,#20001,44,"abstrac ... ): T;\n}") -#20590=@"loc,{#10000},54,1,57,1" -locations_default(#20590,#10000,54,1,57,1) +tokeninfo(#20589,8,#20001,229,";") +#20590=@"loc,{#10000},39,34,39,34" +locations_default(#20590,#10000,39,34,39,34) hasLocation(#20589,#20590) -stmtContainers(#20589,#20001) -isAbstractClass(#20589) #20591=* -exprs(#20591,78,#20589,0,"GenericClass") -#20592=@"loc,{#10000},54,16,54,27" -locations_default(#20592,#10000,54,16,54,27) +tokeninfo(#20591,7,#20001,230,"var") +#20592=@"loc,{#10000},40,1,40,3" +locations_default(#20592,#10000,40,1,40,3) hasLocation(#20591,#20592) -enclosingStmt(#20591,#20589) -exprContainers(#20591,#20001) -literals("GenericClass","GenericClass",#20591) -decl(#20591,#20045) -typedecl(#20591,#20051) #20593=* -scopes(#20593,10) -scopenodes(#20589,#20593) -scopenesting(#20593,#20000) -#20594=@"local_type_name;{T};{#20593}" -local_type_names(#20594,"T",#20593) +tokeninfo(#20593,6,#20001,231,"genericCallSigVar") +#20594=@"loc,{#10000},40,5,40,21" +locations_default(#20594,#10000,40,5,40,21) +hasLocation(#20593,#20594) #20595=* -typeexprs(#20595,22,#20589,-3,"T") -#20596=@"loc,{#10000},54,29,54,29" -locations_default(#20596,#10000,54,29,54,29) +tokeninfo(#20595,8,#20001,232,":") +#20596=@"loc,{#10000},40,22,40,22" +locations_default(#20596,#10000,40,22,40,22) hasLocation(#20595,#20596) -enclosingStmt(#20595,#20589) -exprContainers(#20595,#20001) #20597=* -typeexprs(#20597,1,#20595,0,"T") -hasLocation(#20597,#20596) -enclosingStmt(#20597,#20589) -exprContainers(#20597,#20001) -literals("T","T",#20597) -typedecl(#20597,#20594) -#20598=* -typeexprs(#20598,14,#20589,-1,"GenericInterface") -#20599=@"loc,{#10000},54,43,54,61" -locations_default(#20599,#10000,54,43,54,61) -hasLocation(#20598,#20599) -enclosingStmt(#20598,#20589) -exprContainers(#20598,#20001) -#20600=* -typeexprs(#20600,0,#20598,-1,"GenericInterface") -#20601=@"loc,{#10000},54,43,54,58" -locations_default(#20601,#10000,54,43,54,58) -hasLocation(#20600,#20601) -enclosingStmt(#20600,#20589) -exprContainers(#20600,#20001) -literals("GenericInterface","GenericInterface",#20600) -typebind(#20600,#20050) -#20602=* -typeexprs(#20602,0,#20598,0,"T") -#20603=@"loc,{#10000},54,60,54,60" -locations_default(#20603,#10000,54,60,54,60) -hasLocation(#20602,#20603) -enclosingStmt(#20602,#20589) -exprContainers(#20602,#20001) -literals("T","T",#20602) -typebind(#20602,#20594) -#20604=* -properties(#20604,#20589,2,8,"field: T") -#20605=@"loc,{#10000},55,3,55,10" -locations_default(#20605,#10000,55,3,55,10) -hasLocation(#20604,#20605) -#20606=* -exprs(#20606,0,#20604,0,"field") -#20607=@"loc,{#10000},55,3,55,7" -locations_default(#20607,#10000,55,3,55,7) -hasLocation(#20606,#20607) -enclosingStmt(#20606,#20589) -exprContainers(#20606,#20001) -literals("field","field",#20606) -#20608=* +tokeninfo(#20597,8,#20001,233,"<") +#20598=@"loc,{#10000},40,25,40,25" +locations_default(#20598,#10000,40,25,40,25) +hasLocation(#20597,#20598) +#20599=* +tokeninfo(#20599,6,#20001,234,"T") +#20600=@"loc,{#10000},40,26,40,26" +locations_default(#20600,#10000,40,26,40,26) +hasLocation(#20599,#20600) +#20601=* +tokeninfo(#20601,8,#20001,235,">") +#20602=@"loc,{#10000},40,27,40,27" +locations_default(#20602,#10000,40,27,40,27) +hasLocation(#20601,#20602) +#20603=* +tokeninfo(#20603,8,#20001,236,"(") +#20604=@"loc,{#10000},40,28,40,28" +locations_default(#20604,#10000,40,28,40,28) +hasLocation(#20603,#20604) +#20605=* +tokeninfo(#20605,6,#20001,237,"x") +#20606=@"loc,{#10000},40,29,40,29" +locations_default(#20606,#10000,40,29,40,29) +hasLocation(#20605,#20606) +#20607=* +tokeninfo(#20607,8,#20001,238,":") +#20608=@"loc,{#10000},40,30,40,30" +locations_default(#20608,#10000,40,30,40,30) +hasLocation(#20607,#20608) #20609=* -typeexprs(#20609,0,#20604,2,"T") -#20610=@"loc,{#10000},55,10,55,10" -locations_default(#20610,#10000,55,10,55,10) +tokeninfo(#20609,6,#20001,239,"T") +#20610=@"loc,{#10000},40,32,40,32" +locations_default(#20610,#10000,40,32,40,32) hasLocation(#20609,#20610) -enclosingStmt(#20609,#20589) -exprContainers(#20609,#20001) -literals("T","T",#20609) -typebind(#20609,#20594) #20611=* -properties(#20611,#20589,3,0,"abstrac ... :T): T;") -#20612=@"loc,{#10000},56,3,56,26" -locations_default(#20612,#10000,56,3,56,26) +tokeninfo(#20611,8,#20001,240,")") +#20612=@"loc,{#10000},40,33,40,33" +locations_default(#20612,#10000,40,33,40,33) hasLocation(#20611,#20612) #20613=* -exprs(#20613,0,#20611,0,"method") -#20614=@"loc,{#10000},56,12,56,17" -locations_default(#20614,#10000,56,12,56,17) +tokeninfo(#20613,8,#20001,241,"=>") +#20614=@"loc,{#10000},40,35,40,36" +locations_default(#20614,#10000,40,35,40,36) hasLocation(#20613,#20614) -enclosingStmt(#20613,#20589) -exprContainers(#20613,#20001) -literals("method","method",#20613) #20615=* -exprs(#20615,9,#20611,1,"abstrac ... :T): T;") -hasLocation(#20615,#20612) -enclosingStmt(#20615,#20589) -exprContainers(#20615,#20001) -#20616=* -scopes(#20616,1) -scopenodes(#20615,#20616) -scopenesting(#20616,#20593) -#20617=@"var;{x};{#20616}" -variables(#20617,"x",#20616) -#20618=* -exprs(#20618,78,#20615,0,"x") -#20619=@"loc,{#10000},56,19,56,19" -locations_default(#20619,#10000,56,19,56,19) -hasLocation(#20618,#20619) -exprContainers(#20618,#20615) -literals("x","x",#20618) -decl(#20618,#20617) -#20620=@"var;{arguments};{#20616}" -variables(#20620,"arguments",#20616) -isArgumentsObject(#20620) +tokeninfo(#20615,6,#20001,242,"T") +#20616=@"loc,{#10000},40,38,40,38" +locations_default(#20616,#10000,40,38,40,38) +hasLocation(#20615,#20616) +#20617=* +tokeninfo(#20617,8,#20001,243,";") +#20618=@"loc,{#10000},40,39,40,39" +locations_default(#20618,#10000,40,39,40,39) +hasLocation(#20617,#20618) +#20619=* +tokeninfo(#20619,7,#20001,244,"var") +#20620=@"loc,{#10000},41,1,41,3" +locations_default(#20620,#10000,41,1,41,3) +hasLocation(#20619,#20620) #20621=* -typeexprs(#20621,0,#20615,-3,"T") -#20622=@"loc,{#10000},56,25,56,25" -locations_default(#20622,#10000,56,25,56,25) +tokeninfo(#20621,6,#20001,245,"genericConstructSigVar") +#20622=@"loc,{#10000},41,5,41,26" +locations_default(#20622,#10000,41,5,41,26) hasLocation(#20621,#20622) -exprContainers(#20621,#20615) -literals("T","T",#20621) -typebind(#20621,#20594) #20623=* -typeexprs(#20623,0,#20615,-6,"T") -#20624=@"loc,{#10000},56,21,56,21" -locations_default(#20624,#10000,56,21,56,21) +tokeninfo(#20623,8,#20001,246,":") +#20624=@"loc,{#10000},41,27,41,27" +locations_default(#20624,#10000,41,27,41,27) hasLocation(#20623,#20624) -exprContainers(#20623,#20615) -literals("T","T",#20623) -typebind(#20623,#20594) -numlines(#20615,1,1,0) -isMethod(#20611) -isAbstractMember(#20611) #20625=* -properties(#20625,#20589,4,0,"constructor() {}") -#20626=@"loc,{#10000},54,63,54,62" -locations_default(#20626,#10000,54,63,54,62) +tokeninfo(#20625,7,#20001,247,"new") +#20626=@"loc,{#10000},41,29,41,31" +locations_default(#20626,#10000,41,29,41,31) hasLocation(#20625,#20626) #20627=* -exprs(#20627,0,#20625,0,"constructor") -hasLocation(#20627,#20626) -enclosingStmt(#20627,#20589) -exprContainers(#20627,#20001) -literals("constructor","constructor",#20627) -exprs(#20608,9,#20625,1,"() {}") -hasLocation(#20608,#20626) -enclosingStmt(#20608,#20589) -exprContainers(#20608,#20001) -#20628=* -scopes(#20628,1) -scopenodes(#20608,#20628) -scopenesting(#20628,#20593) -#20629=@"var;{arguments};{#20628}" -variables(#20629,"arguments",#20628) -isArgumentsObject(#20629) -#20630=* -stmts(#20630,1,#20608,-2,"{}") -hasLocation(#20630,#20626) -stmtContainers(#20630,#20608) -numlines(#20608,1,0,0) -isMethod(#20625) +tokeninfo(#20627,8,#20001,248,"<") +#20628=@"loc,{#10000},41,33,41,33" +locations_default(#20628,#10000,41,33,41,33) +hasLocation(#20627,#20628) +#20629=* +tokeninfo(#20629,6,#20001,249,"T") +#20630=@"loc,{#10000},41,34,41,34" +locations_default(#20630,#10000,41,34,41,34) +hasLocation(#20629,#20630) #20631=* -stmts(#20631,26,#20001,45,"class Fish {}") -#20632=@"loc,{#10000},59,1,59,13" -locations_default(#20632,#10000,59,1,59,13) +tokeninfo(#20631,8,#20001,250,">") +#20632=@"loc,{#10000},41,35,41,35" +locations_default(#20632,#10000,41,35,41,35) hasLocation(#20631,#20632) -stmtContainers(#20631,#20001) #20633=* -exprs(#20633,78,#20631,0,"Fish") -#20634=@"loc,{#10000},59,7,59,10" -locations_default(#20634,#10000,59,7,59,10) +tokeninfo(#20633,8,#20001,251,"(") +#20634=@"loc,{#10000},41,36,41,36" +locations_default(#20634,#10000,41,36,41,36) hasLocation(#20633,#20634) -enclosingStmt(#20633,#20631) -exprContainers(#20633,#20001) -literals("Fish","Fish",#20633) -decl(#20633,#20046) -typedecl(#20633,#20052) #20635=* -scopes(#20635,10) -scopenodes(#20631,#20635) -scopenesting(#20635,#20000) -#20636=* -properties(#20636,#20631,2,0,"constructor() {}") -#20637=@"loc,{#10000},59,12,59,11" -locations_default(#20637,#10000,59,12,59,11) -hasLocation(#20636,#20637) -#20638=* -exprs(#20638,0,#20636,0,"constructor") -hasLocation(#20638,#20637) -enclosingStmt(#20638,#20631) -exprContainers(#20638,#20001) -literals("constructor","constructor",#20638) +tokeninfo(#20635,6,#20001,252,"x") +#20636=@"loc,{#10000},41,37,41,37" +locations_default(#20636,#10000,41,37,41,37) +hasLocation(#20635,#20636) +#20637=* +tokeninfo(#20637,8,#20001,253,":") +#20638=@"loc,{#10000},41,38,41,38" +locations_default(#20638,#10000,41,38,41,38) +hasLocation(#20637,#20638) #20639=* -exprs(#20639,9,#20636,1,"() {}") -hasLocation(#20639,#20637) -enclosingStmt(#20639,#20631) -exprContainers(#20639,#20001) -#20640=* -scopes(#20640,1) -scopenodes(#20639,#20640) -scopenesting(#20640,#20635) -#20641=@"var;{arguments};{#20640}" -variables(#20641,"arguments",#20640) -isArgumentsObject(#20641) -#20642=* -stmts(#20642,1,#20639,-2,"{}") -hasLocation(#20642,#20637) -stmtContainers(#20642,#20639) -numlines(#20639,1,0,0) -isMethod(#20636) +tokeninfo(#20639,6,#20001,254,"T") +#20640=@"loc,{#10000},41,40,41,40" +locations_default(#20640,#10000,41,40,41,40) +hasLocation(#20639,#20640) +#20641=* +tokeninfo(#20641,8,#20001,255,")") +#20642=@"loc,{#10000},41,41,41,41" +locations_default(#20642,#10000,41,41,41,41) +hasLocation(#20641,#20642) #20643=* -stmts(#20643,26,#20001,46,"class Bird {}") -#20644=@"loc,{#10000},60,1,60,13" -locations_default(#20644,#10000,60,1,60,13) +tokeninfo(#20643,8,#20001,256,"=>") +#20644=@"loc,{#10000},41,43,41,44" +locations_default(#20644,#10000,41,43,41,44) hasLocation(#20643,#20644) -stmtContainers(#20643,#20001) #20645=* -exprs(#20645,78,#20643,0,"Bird") -#20646=@"loc,{#10000},60,7,60,10" -locations_default(#20646,#10000,60,7,60,10) +tokeninfo(#20645,6,#20001,257,"T") +#20646=@"loc,{#10000},41,46,41,46" +locations_default(#20646,#10000,41,46,41,46) hasLocation(#20645,#20646) -enclosingStmt(#20645,#20643) -exprContainers(#20645,#20001) -literals("Bird","Bird",#20645) -decl(#20645,#20047) -typedecl(#20645,#20053) #20647=* -scopes(#20647,10) -scopenodes(#20643,#20647) -scopenesting(#20647,#20000) -#20648=* -properties(#20648,#20643,2,0,"constructor() {}") -#20649=@"loc,{#10000},60,12,60,11" -locations_default(#20649,#10000,60,12,60,11) -hasLocation(#20648,#20649) -#20650=* -exprs(#20650,0,#20648,0,"constructor") -hasLocation(#20650,#20649) -enclosingStmt(#20650,#20643) -exprContainers(#20650,#20001) -literals("constructor","constructor",#20650) +tokeninfo(#20647,8,#20001,258,";") +#20648=@"loc,{#10000},41,47,41,47" +locations_default(#20648,#10000,41,47,41,47) +hasLocation(#20647,#20648) +#20649=* +tokeninfo(#20649,7,#20001,259,"var") +#20650=@"loc,{#10000},42,1,42,3" +locations_default(#20650,#10000,42,1,42,3) +hasLocation(#20649,#20650) #20651=* -exprs(#20651,9,#20648,1,"() {}") -hasLocation(#20651,#20649) -enclosingStmt(#20651,#20643) -exprContainers(#20651,#20001) -#20652=* -scopes(#20652,1) -scopenodes(#20651,#20652) -scopenesting(#20652,#20647) -#20653=@"var;{arguments};{#20652}" -variables(#20653,"arguments",#20652) -isArgumentsObject(#20653) -#20654=* -stmts(#20654,1,#20651,-2,"{}") -hasLocation(#20654,#20649) -stmtContainers(#20654,#20651) -numlines(#20651,1,0,0) -isMethod(#20648) +tokeninfo(#20651,6,#20001,260,"keyofVar") +#20652=@"loc,{#10000},42,5,42,12" +locations_default(#20652,#10000,42,5,42,12) +hasLocation(#20651,#20652) +#20653=* +tokeninfo(#20653,8,#20001,261,":") +#20654=@"loc,{#10000},42,13,42,13" +locations_default(#20654,#10000,42,13,42,13) +hasLocation(#20653,#20654) #20655=* -stmts(#20655,17,#20001,47,"functio ... Fish {}") -#20656=@"loc,{#10000},61,1,61,50" -locations_default(#20656,#10000,61,1,61,50) +tokeninfo(#20655,7,#20001,262,"keyof") +#20656=@"loc,{#10000},42,25,42,29" +locations_default(#20656,#10000,42,25,42,29) hasLocation(#20655,#20656) -stmtContainers(#20655,#20001) #20657=* -exprs(#20657,78,#20655,-1,"isFish") -#20658=@"loc,{#10000},61,10,61,15" -locations_default(#20658,#10000,61,10,61,15) +tokeninfo(#20657,6,#20001,263,"Point") +#20658=@"loc,{#10000},42,31,42,35" +locations_default(#20658,#10000,42,31,42,35) hasLocation(#20657,#20658) -exprContainers(#20657,#20655) -literals("isFish","isFish",#20657) -decl(#20657,#20043) #20659=* -scopes(#20659,1) -scopenodes(#20655,#20659) -scopenesting(#20659,#20000) -#20660=@"var;{pet};{#20659}" -variables(#20660,"pet",#20659) +tokeninfo(#20659,7,#20001,264,"var") +#20660=@"loc,{#10000},43,1,43,3" +locations_default(#20660,#10000,43,1,43,3) +hasLocation(#20659,#20660) #20661=* -exprs(#20661,78,#20655,0,"pet") -#20662=@"loc,{#10000},61,17,61,19" -locations_default(#20662,#10000,61,17,61,19) +tokeninfo(#20661,6,#20001,265,"indexedVar") +#20662=@"loc,{#10000},43,5,43,14" +locations_default(#20662,#10000,43,5,43,14) hasLocation(#20661,#20662) -exprContainers(#20661,#20655) -literals("pet","pet",#20661) -decl(#20661,#20660) -#20663=@"var;{arguments};{#20659}" -variables(#20663,"arguments",#20659) -isArgumentsObject(#20663) -#20664=* -typeexprs(#20664,20,#20655,-3,"pet is Fish") -#20665=@"loc,{#10000},61,37,61,47" -locations_default(#20665,#10000,61,37,61,47) -hasLocation(#20664,#20665) -exprContainers(#20664,#20655) -#20666=* -typeexprs(#20666,17,#20664,0,"pet") -#20667=@"loc,{#10000},61,37,61,39" -locations_default(#20667,#10000,61,37,61,39) -hasLocation(#20666,#20667) -exprContainers(#20666,#20655) -literals("pet","pet",#20666) -bind(#20666,#20660) -#20668=* -typeexprs(#20668,0,#20664,1,"Fish") -#20669=@"loc,{#10000},61,44,61,47" -locations_default(#20669,#10000,61,44,61,47) -hasLocation(#20668,#20669) -exprContainers(#20668,#20655) -literals("Fish","Fish",#20668) -typebind(#20668,#20052) -#20670=* -typeexprs(#20670,7,#20655,-6,"Fish | Bird") -#20671=@"loc,{#10000},61,23,61,33" -locations_default(#20671,#10000,61,23,61,33) -hasLocation(#20670,#20671) -exprContainers(#20670,#20655) -#20672=* -typeexprs(#20672,0,#20670,0,"Fish") -#20673=@"loc,{#10000},61,23,61,26" -locations_default(#20673,#10000,61,23,61,26) -hasLocation(#20672,#20673) -exprContainers(#20672,#20655) -literals("Fish","Fish",#20672) -typebind(#20672,#20052) -#20674=* -typeexprs(#20674,0,#20670,1,"Bird") -#20675=@"loc,{#10000},61,30,61,33" -locations_default(#20675,#10000,61,30,61,33) -hasLocation(#20674,#20675) -exprContainers(#20674,#20655) -literals("Bird","Bird",#20674) -typebind(#20674,#20053) -#20676=* -stmts(#20676,1,#20655,-2,"{}") -#20677=@"loc,{#10000},61,49,61,50" -locations_default(#20677,#10000,61,49,61,50) -hasLocation(#20676,#20677) -stmtContainers(#20676,#20655) -numlines(#20655,1,1,0) -#20678=* -stmts(#20678,26,#20001,48,"class T ... is; }\n}") -#20679=@"loc,{#10000},63,1,65,1" -locations_default(#20679,#10000,63,1,65,1) -hasLocation(#20678,#20679) -stmtContainers(#20678,#20001) -#20680=* -exprs(#20680,78,#20678,0,"ThisTypes") -#20681=@"loc,{#10000},63,7,63,15" -locations_default(#20681,#10000,63,7,63,15) -hasLocation(#20680,#20681) -enclosingStmt(#20680,#20678) -exprContainers(#20680,#20001) -literals("ThisTypes","ThisTypes",#20680) -decl(#20680,#20048) -typedecl(#20680,#20054) -#20682=* -scopes(#20682,10) -scopenodes(#20678,#20682) -scopenesting(#20682,#20000) +#20663=* +tokeninfo(#20663,8,#20001,266,":") +#20664=@"loc,{#10000},43,15,43,15" +locations_default(#20664,#10000,43,15,43,15) +hasLocation(#20663,#20664) +#20665=* +tokeninfo(#20665,6,#20001,267,"Point") +#20666=@"loc,{#10000},43,25,43,29" +locations_default(#20666,#10000,43,25,43,29) +hasLocation(#20665,#20666) +#20667=* +tokeninfo(#20667,8,#20001,268,"[") +#20668=@"loc,{#10000},43,30,43,30" +locations_default(#20668,#10000,43,30,43,30) +hasLocation(#20667,#20668) +#20669=* +tokeninfo(#20669,4,#20001,269,"""x""") +#20670=@"loc,{#10000},43,31,43,33" +locations_default(#20670,#10000,43,31,43,33) +hasLocation(#20669,#20670) +#20671=* +tokeninfo(#20671,8,#20001,270,"]") +#20672=@"loc,{#10000},43,34,43,34" +locations_default(#20672,#10000,43,34,43,34) +hasLocation(#20671,#20672) +#20673=* +tokeninfo(#20673,7,#20001,271,"var") +#20674=@"loc,{#10000},44,1,44,3" +locations_default(#20674,#10000,44,1,44,3) +hasLocation(#20673,#20674) +#20675=* +tokeninfo(#20675,6,#20001,272,"typeofVar") +#20676=@"loc,{#10000},44,5,44,13" +locations_default(#20676,#10000,44,5,44,13) +hasLocation(#20675,#20676) +#20677=* +tokeninfo(#20677,8,#20001,273,":") +#20678=@"loc,{#10000},44,14,44,14" +locations_default(#20678,#10000,44,14,44,14) +hasLocation(#20677,#20678) +#20679=* +tokeninfo(#20679,7,#20001,274,"typeof") +#20680=@"loc,{#10000},44,25,44,30" +locations_default(#20680,#10000,44,25,44,30) +hasLocation(#20679,#20680) +#20681=* +tokeninfo(#20681,6,#20001,275,"x31") +#20682=@"loc,{#10000},44,32,44,34" +locations_default(#20682,#10000,44,32,44,34) +hasLocation(#20681,#20682) #20683=* -properties(#20683,#20678,2,0,"foo(x: ... this; }") -#20684=@"loc,{#10000},64,3,64,39" -locations_default(#20684,#10000,64,3,64,39) +tokeninfo(#20683,7,#20001,276,"var") +#20684=@"loc,{#10000},45,1,45,3" +locations_default(#20684,#10000,45,1,45,3) hasLocation(#20683,#20684) #20685=* -exprs(#20685,0,#20683,0,"foo") -#20686=@"loc,{#10000},64,3,64,5" -locations_default(#20686,#10000,64,3,64,5) +tokeninfo(#20685,6,#20001,277,"mappedVar") +#20686=@"loc,{#10000},45,5,45,13" +locations_default(#20686,#10000,45,5,45,13) hasLocation(#20685,#20686) -enclosingStmt(#20685,#20678) -exprContainers(#20685,#20001) -literals("foo","foo",#20685) #20687=* -exprs(#20687,9,#20683,1,"foo(x: ... this; }") -hasLocation(#20687,#20684) -enclosingStmt(#20687,#20678) -exprContainers(#20687,#20001) -#20688=* -scopes(#20688,1) -scopenodes(#20687,#20688) -scopenesting(#20688,#20682) -#20689=@"var;{x};{#20688}" -variables(#20689,"x",#20688) -#20690=* -exprs(#20690,78,#20687,0,"x") -#20691=@"loc,{#10000},64,7,64,7" -locations_default(#20691,#10000,64,7,64,7) -hasLocation(#20690,#20691) -exprContainers(#20690,#20687) -literals("x","x",#20690) -decl(#20690,#20689) -#20692=@"var;{arguments};{#20688}" -variables(#20692,"arguments",#20688) -isArgumentsObject(#20692) +tokeninfo(#20687,8,#20001,278,":") +#20688=@"loc,{#10000},45,14,45,14" +locations_default(#20688,#10000,45,14,45,14) +hasLocation(#20687,#20688) +#20689=* +tokeninfo(#20689,8,#20001,279,"{") +#20690=@"loc,{#10000},45,25,45,25" +locations_default(#20690,#10000,45,25,45,25) +hasLocation(#20689,#20690) +#20691=* +tokeninfo(#20691,8,#20001,280,"[") +#20692=@"loc,{#10000},45,27,45,27" +locations_default(#20692,#10000,45,27,45,27) +hasLocation(#20691,#20692) #20693=* -typeexprs(#20693,2,#20687,-3,"this") -#20694=@"loc,{#10000},64,19,64,22" -locations_default(#20694,#10000,64,19,64,22) +tokeninfo(#20693,6,#20001,281,"K") +#20694=@"loc,{#10000},45,28,45,28" +locations_default(#20694,#10000,45,28,45,28) hasLocation(#20693,#20694) -exprContainers(#20693,#20687) -literals("this","this",#20693) #20695=* -typeexprs(#20695,2,#20687,-6,"number") -#20696=@"loc,{#10000},64,10,64,15" -locations_default(#20696,#10000,64,10,64,15) +tokeninfo(#20695,7,#20001,282,"in") +#20696=@"loc,{#10000},45,30,45,31" +locations_default(#20696,#10000,45,30,45,31) hasLocation(#20695,#20696) -exprContainers(#20695,#20687) -literals("number","number",#20695) #20697=* -stmts(#20697,1,#20687,-2,"{ return this; }") -#20698=@"loc,{#10000},64,24,64,39" -locations_default(#20698,#10000,64,24,64,39) +tokeninfo(#20697,7,#20001,283,"keyof") +#20698=@"loc,{#10000},45,33,45,37" +locations_default(#20698,#10000,45,33,45,37) hasLocation(#20697,#20698) -stmtContainers(#20697,#20687) #20699=* -stmts(#20699,9,#20697,0,"return this;") -#20700=@"loc,{#10000},64,26,64,37" -locations_default(#20700,#10000,64,26,64,37) +tokeninfo(#20699,6,#20001,284,"Point") +#20700=@"loc,{#10000},45,39,45,43" +locations_default(#20700,#10000,45,39,45,43) hasLocation(#20699,#20700) -stmtContainers(#20699,#20687) #20701=* -exprs(#20701,6,#20699,0,"this") -#20702=@"loc,{#10000},64,33,64,36" -locations_default(#20702,#10000,64,33,64,36) +tokeninfo(#20701,8,#20001,285,"]") +#20702=@"loc,{#10000},45,44,45,44" +locations_default(#20702,#10000,45,44,45,44) hasLocation(#20701,#20702) -enclosingStmt(#20701,#20699) -exprContainers(#20701,#20687) -numlines(#20687,1,1,0) -isMethod(#20683) #20703=* -properties(#20703,#20678,3,0,"constructor() {}") -#20704=@"loc,{#10000},63,17,63,16" -locations_default(#20704,#10000,63,17,63,16) +tokeninfo(#20703,8,#20001,286,":") +#20704=@"loc,{#10000},45,45,45,45" +locations_default(#20704,#10000,45,45,45,45) hasLocation(#20703,#20704) #20705=* -exprs(#20705,0,#20703,0,"constructor") -hasLocation(#20705,#20704) -enclosingStmt(#20705,#20678) -exprContainers(#20705,#20001) -literals("constructor","constructor",#20705) -#20706=* -exprs(#20706,9,#20703,1,"() {}") -hasLocation(#20706,#20704) -enclosingStmt(#20706,#20678) -exprContainers(#20706,#20001) +tokeninfo(#20705,7,#20001,287,"any") +#20706=@"loc,{#10000},45,47,45,49" +locations_default(#20706,#10000,45,47,45,49) +hasLocation(#20705,#20706) #20707=* -scopes(#20707,1) -scopenodes(#20706,#20707) -scopenesting(#20707,#20682) -#20708=@"var;{arguments};{#20707}" -variables(#20708,"arguments",#20707) -isArgumentsObject(#20708) +tokeninfo(#20707,8,#20001,288,"}") +#20708=@"loc,{#10000},45,51,45,51" +locations_default(#20708,#10000,45,51,45,51) +hasLocation(#20707,#20708) #20709=* -stmts(#20709,1,#20706,-2,"{}") -hasLocation(#20709,#20704) -stmtContainers(#20709,#20706) -numlines(#20706,1,0,0) -isMethod(#20703) -#20710=* -lines(#20710,#20001,"interface Point { x: number; y: number }"," -") -hasLocation(#20710,#20056) +tokeninfo(#20709,7,#20001,289,"var") +#20710=@"loc,{#10000},46,1,46,3" +locations_default(#20710,#10000,46,1,46,3) +hasLocation(#20709,#20710) #20711=* -lines(#20711,#20001,""," -") -#20712=@"loc,{#10000},2,1,2,0" -locations_default(#20712,#10000,2,1,2,0) +tokeninfo(#20711,6,#20001,290,"parenthesizedVar") +#20712=@"loc,{#10000},46,5,46,20" +locations_default(#20712,#10000,46,5,46,20) hasLocation(#20711,#20712) #20713=* -lines(#20713,#20001,"namespace N {"," -") -#20714=@"loc,{#10000},3,1,3,13" -locations_default(#20714,#10000,3,1,3,13) +tokeninfo(#20713,8,#20001,291,":") +#20714=@"loc,{#10000},46,21,46,21" +locations_default(#20714,#10000,46,21,46,21) hasLocation(#20713,#20714) #20715=* -lines(#20715,#20001," export interface I {}"," -") -#20716=@"loc,{#10000},4,1,4,23" -locations_default(#20716,#10000,4,1,4,23) +tokeninfo(#20715,8,#20001,292,"(") +#20716=@"loc,{#10000},46,25,46,25" +locations_default(#20716,#10000,46,25,46,25) hasLocation(#20715,#20716) -indentation(#10000,4," ",2) #20717=* -lines(#20717,#20001," export interface J {}"," -") -#20718=@"loc,{#10000},5,1,5,26" -locations_default(#20718,#10000,5,1,5,26) +tokeninfo(#20717,7,#20001,293,"number") +#20718=@"loc,{#10000},46,26,46,31" +locations_default(#20718,#10000,46,26,46,31) hasLocation(#20717,#20718) -indentation(#10000,5," ",2) #20719=* -lines(#20719,#20001,"}"," -") -#20720=@"loc,{#10000},6,1,6,1" -locations_default(#20720,#10000,6,1,6,1) +tokeninfo(#20719,8,#20001,294,")") +#20720=@"loc,{#10000},46,32,46,32" +locations_default(#20720,#10000,46,32,46,32) hasLocation(#20719,#20720) #20721=* -lines(#20721,#20001,""," -") -#20722=@"loc,{#10000},7,1,7,0" -locations_default(#20722,#10000,7,1,7,0) +tokeninfo(#20721,8,#20001,295,";") +#20722=@"loc,{#10000},46,33,46,33" +locations_default(#20722,#10000,46,33,46,33) hasLocation(#20721,#20722) #20723=* -lines(#20723,#20001,"var anyVar: any;"," -") -hasLocation(#20723,#20096) -#20724=* -lines(#20724,#20001,"var objectVar: object;"," -") -hasLocation(#20724,#20104) +tokeninfo(#20723,7,#20001,296,"var") +#20724=@"loc,{#10000},47,1,47,3" +locations_default(#20724,#10000,47,1,47,3) +hasLocation(#20723,#20724) #20725=* -lines(#20725,#20001,"var numberVar: number;"," -") -hasLocation(#20725,#20112) -#20726=* -lines(#20726,#20001,"var stringVar: string;"," -") -hasLocation(#20726,#20120) +tokeninfo(#20725,6,#20001,297,"namespaceTypeVar") +#20726=@"loc,{#10000},47,5,47,20" +locations_default(#20726,#10000,47,5,47,20) +hasLocation(#20725,#20726) #20727=* -lines(#20727,#20001,"var booleanVar: boolean;"," -") -hasLocation(#20727,#20128) -#20728=* -lines(#20728,#20001,"var nullVar: null;"," -") -hasLocation(#20728,#20136) +tokeninfo(#20727,8,#20001,298,":") +#20728=@"loc,{#10000},47,21,47,21" +locations_default(#20728,#10000,47,21,47,21) +hasLocation(#20727,#20728) #20729=* -lines(#20729,#20001,"var undefinedVar: undefined;"," -") -hasLocation(#20729,#20144) -#20730=* -lines(#20730,#20001,"var voidVar: void;"," -") -hasLocation(#20730,#20152) +tokeninfo(#20729,6,#20001,299,"N") +#20730=@"loc,{#10000},47,25,47,25" +locations_default(#20730,#10000,47,25,47,25) +hasLocation(#20729,#20730) #20731=* -lines(#20731,#20001,"var neverVar: never;"," -") -hasLocation(#20731,#20160) -#20732=* -lines(#20732,#20001,"var symbolVar: symbol;"," -") -hasLocation(#20732,#20168) +tokeninfo(#20731,8,#20001,300,".") +#20732=@"loc,{#10000},47,26,47,26" +locations_default(#20732,#10000,47,26,47,26) +hasLocation(#20731,#20732) #20733=* -lines(#20733,#20001,"var objectVar: { x: number; }"," -") -hasLocation(#20733,#20176) -#20734=* -lines(#20734,#20001,"var nestedObjectVar: { x: { y: number } }"," -") -hasLocation(#20734,#20190) +tokeninfo(#20733,6,#20001,301,"I") +#20734=@"loc,{#10000},47,27,47,27" +locations_default(#20734,#10000,47,27,47,27) +hasLocation(#20733,#20734) #20735=* -lines(#20735,#20001,"var arrayVar: number[]"," -") -hasLocation(#20735,#20210) -#20736=* -lines(#20736,#20001,"var stringObjectVar: String"," -") -hasLocation(#20736,#20220) +tokeninfo(#20735,8,#20001,302,";") +#20736=@"loc,{#10000},47,28,47,28" +locations_default(#20736,#10000,47,28,47,28) +hasLocation(#20735,#20736) #20737=* -lines(#20737,#20001,"var pointVar: Point"," -") -hasLocation(#20737,#20228) -#20738=* -lines(#20738,#20001,"var rawFunctionVar: Function"," -") -hasLocation(#20738,#20236) +tokeninfo(#20737,7,#20001,303,"var") +#20738=@"loc,{#10000},48,1,48,3" +locations_default(#20738,#10000,48,1,48,3) +hasLocation(#20737,#20738) #20739=* -lines(#20739,#20001,"var varVar: x11"," -") -hasLocation(#20739,#20244) -#20740=* -lines(#20740,#20001,"var genericArrayVar: Array"," -") -hasLocation(#20740,#20252) +tokeninfo(#20739,6,#20001,304,"namespaceGenericTypeVar") +#20740=@"loc,{#10000},48,5,48,27" +locations_default(#20740,#10000,48,5,48,27) +hasLocation(#20739,#20740) #20741=* -lines(#20741,#20001,"var nestedGenericVar: Foo>"," -") -hasLocation(#20741,#20264) -#20742=* -lines(#20742,#20001,"var callSigVar: () => number;"," -") -hasLocation(#20742,#20280) +tokeninfo(#20741,8,#20001,305,":") +#20742=@"loc,{#10000},48,28,48,28" +locations_default(#20742,#10000,48,28,48,28) +hasLocation(#20741,#20742) #20743=* -lines(#20743,#20001,"var constructSigVar: new () => Point;"," -") -hasLocation(#20743,#20293) -#20744=* -lines(#20744,#20001,"var callSigVoidVar: () => void;"," -") -hasLocation(#20744,#20306) +tokeninfo(#20743,6,#20001,306,"N") +#20744=@"loc,{#10000},48,30,48,30" +locations_default(#20744,#10000,48,30,48,30) +hasLocation(#20743,#20744) #20745=* -lines(#20745,#20001,"var callSigNeverVar: () => never;"," -") -hasLocation(#20745,#20319) -#20746=* -lines(#20746,#20001,"var unionVar: number | string;"," -") -hasLocation(#20746,#20332) +tokeninfo(#20745,8,#20001,307,".") +#20746=@"loc,{#10000},48,31,48,31" +locations_default(#20746,#10000,48,31,48,31) +hasLocation(#20745,#20746) #20747=* -lines(#20747,#20001,"var stringLiteralVar: ""literal"";"," -") -hasLocation(#20747,#20344) -#20748=* -lines(#20748,#20001,"var trueVar: true;"," -") -hasLocation(#20748,#20352) +tokeninfo(#20747,6,#20001,308,"J") +#20748=@"loc,{#10000},48,32,48,32" +locations_default(#20748,#10000,48,32,48,32) +hasLocation(#20747,#20748) #20749=* -lines(#20749,#20001,"var falseVar: false;"," -") -hasLocation(#20749,#20360) -#20750=* -lines(#20750,#20001,"var intLiteralVar: 100;"," -") -hasLocation(#20750,#20368) +tokeninfo(#20749,8,#20001,309,"<") +#20750=@"loc,{#10000},48,33,48,33" +locations_default(#20750,#10000,48,33,48,33) +hasLocation(#20749,#20750) #20751=* -lines(#20751,#20001,"var doubleLiteralVar: 100.50;"," -") -hasLocation(#20751,#20376) -#20752=* -lines(#20752,#20001,"var tupleVar: [string, number]"," -") -hasLocation(#20752,#20384) +tokeninfo(#20751,7,#20001,310,"number") +#20752=@"loc,{#10000},48,34,48,39" +locations_default(#20752,#10000,48,34,48,39) +hasLocation(#20751,#20752) #20753=* -lines(#20753,#20001,"var longUnionVar: null | 1 | ""two"" | [3]"," -") -hasLocation(#20753,#20396) -#20754=* -lines(#20754,#20001,"var intersectVar: Foo & Bar;"," -") -hasLocation(#20754,#20414) +tokeninfo(#20753,8,#20001,311,">") +#20754=@"loc,{#10000},48,40,48,40" +locations_default(#20754,#10000,48,40,48,40) +hasLocation(#20753,#20754) #20755=* -lines(#20755,#20001,"var genericCallSigVar: (x: T) => T;"," -") -hasLocation(#20755,#20426) -#20756=* -lines(#20756,#20001,"var genericConstructSigVar: new (x: T) => T;"," -") -hasLocation(#20756,#20448) +tokeninfo(#20755,8,#20001,312,";") +#20756=@"loc,{#10000},48,41,48,41" +locations_default(#20756,#10000,48,41,48,41) +hasLocation(#20755,#20756) #20757=* -lines(#20757,#20001,"var keyofVar: keyof Point"," -") -hasLocation(#20757,#20470) -#20758=* -lines(#20758,#20001,"var indexedVar: Point[""x""]"," -") -hasLocation(#20758,#20480) +tokeninfo(#20757,7,#20001,313,"interface") +#20758=@"loc,{#10000},50,1,50,9" +locations_default(#20758,#10000,50,1,50,9) +hasLocation(#20757,#20758) #20759=* -lines(#20759,#20001,"var typeofVar: typeof x31"," -") -hasLocation(#20759,#20492) -#20760=* -lines(#20760,#20001,"var mappedVar: { [K in keyof Point]: any }"," -") -hasLocation(#20760,#20503) +tokeninfo(#20759,6,#20001,314,"GenericInterface") +#20760=@"loc,{#10000},50,11,50,26" +locations_default(#20760,#10000,50,11,50,26) +hasLocation(#20759,#20760) #20761=* -lines(#20761,#20001,"var parenthesizedVar: (number);"," -") -hasLocation(#20761,#20523) -#20762=* -lines(#20762,#20001,"var namespaceTypeVar: N.I;"," -") -hasLocation(#20762,#20533) +tokeninfo(#20761,8,#20001,315,"<") +#20762=@"loc,{#10000},50,27,50,27" +locations_default(#20762,#10000,50,27,50,27) +hasLocation(#20761,#20762) #20763=* -lines(#20763,#20001,"var namespaceGenericTypeVar: N.J;"," -") -hasLocation(#20763,#20545) -#20764=* -lines(#20764,#20001,""," -") -#20765=@"loc,{#10000},49,1,49,0" -locations_default(#20765,#10000,49,1,49,0) -hasLocation(#20764,#20765) -#20766=* -lines(#20766,#20001,"interface GenericInterface {"," -") -#20767=@"loc,{#10000},50,1,50,31" -locations_default(#20767,#10000,50,1,50,31) -hasLocation(#20766,#20767) -#20768=* -lines(#20768,#20001," field: T;"," -") -#20769=@"loc,{#10000},51,1,51,11" -locations_default(#20769,#10000,51,1,51,11) -hasLocation(#20768,#20769) -indentation(#10000,51," ",2) -#20770=* -lines(#20770,#20001," method(x: T): T;"," -") -#20771=@"loc,{#10000},52,1,52,18" -locations_default(#20771,#10000,52,1,52,18) -hasLocation(#20770,#20771) -indentation(#10000,52," ",2) -#20772=* -lines(#20772,#20001,"}"," -") -#20773=@"loc,{#10000},53,1,53,1" -locations_default(#20773,#10000,53,1,53,1) -hasLocation(#20772,#20773) -#20774=* -lines(#20774,#20001,"abstract class GenericClass implements GenericInterface {"," -") -#20775=@"loc,{#10000},54,1,54,63" -locations_default(#20775,#10000,54,1,54,63) -hasLocation(#20774,#20775) -#20776=* -lines(#20776,#20001," field: T"," -") -#20777=@"loc,{#10000},55,1,55,10" -locations_default(#20777,#10000,55,1,55,10) -hasLocation(#20776,#20777) -indentation(#10000,55," ",2) -#20778=* -lines(#20778,#20001," abstract method(x:T): T;"," -") -#20779=@"loc,{#10000},56,1,56,26" -locations_default(#20779,#10000,56,1,56,26) -hasLocation(#20778,#20779) -indentation(#10000,56," ",2) -#20780=* -lines(#20780,#20001,"}"," -") -#20781=@"loc,{#10000},57,1,57,1" -locations_default(#20781,#10000,57,1,57,1) -hasLocation(#20780,#20781) -#20782=* -lines(#20782,#20001,""," -") -#20783=@"loc,{#10000},58,1,58,0" -locations_default(#20783,#10000,58,1,58,0) -hasLocation(#20782,#20783) -#20784=* -lines(#20784,#20001,"class Fish {}"," -") -hasLocation(#20784,#20632) +tokeninfo(#20763,6,#20001,316,"T") +#20764=@"loc,{#10000},50,28,50,28" +locations_default(#20764,#10000,50,28,50,28) +hasLocation(#20763,#20764) +#20765=* +tokeninfo(#20765,8,#20001,317,">") +#20766=@"loc,{#10000},50,29,50,29" +locations_default(#20766,#10000,50,29,50,29) +hasLocation(#20765,#20766) +#20767=* +tokeninfo(#20767,8,#20001,318,"{") +#20768=@"loc,{#10000},50,31,50,31" +locations_default(#20768,#10000,50,31,50,31) +hasLocation(#20767,#20768) +#20769=* +tokeninfo(#20769,6,#20001,319,"field") +#20770=@"loc,{#10000},51,3,51,7" +locations_default(#20770,#10000,51,3,51,7) +hasLocation(#20769,#20770) +#20771=* +tokeninfo(#20771,8,#20001,320,":") +#20772=@"loc,{#10000},51,8,51,8" +locations_default(#20772,#10000,51,8,51,8) +hasLocation(#20771,#20772) +#20773=* +tokeninfo(#20773,6,#20001,321,"T") +#20774=@"loc,{#10000},51,10,51,10" +locations_default(#20774,#10000,51,10,51,10) +hasLocation(#20773,#20774) +#20775=* +tokeninfo(#20775,8,#20001,322,";") +#20776=@"loc,{#10000},51,11,51,11" +locations_default(#20776,#10000,51,11,51,11) +hasLocation(#20775,#20776) +#20777=* +tokeninfo(#20777,6,#20001,323,"method") +#20778=@"loc,{#10000},52,3,52,8" +locations_default(#20778,#10000,52,3,52,8) +hasLocation(#20777,#20778) +#20779=* +tokeninfo(#20779,8,#20001,324,"(") +#20780=@"loc,{#10000},52,9,52,9" +locations_default(#20780,#10000,52,9,52,9) +hasLocation(#20779,#20780) +#20781=* +tokeninfo(#20781,6,#20001,325,"x") +#20782=@"loc,{#10000},52,10,52,10" +locations_default(#20782,#10000,52,10,52,10) +hasLocation(#20781,#20782) +#20783=* +tokeninfo(#20783,8,#20001,326,":") +#20784=@"loc,{#10000},52,11,52,11" +locations_default(#20784,#10000,52,11,52,11) +hasLocation(#20783,#20784) #20785=* -lines(#20785,#20001,"class Bird {}"," -") -hasLocation(#20785,#20644) -#20786=* -lines(#20786,#20001,"function isFish(pet : Fish | Bird): pet is Fish {}"," -") -hasLocation(#20786,#20656) +tokeninfo(#20785,6,#20001,327,"T") +#20786=@"loc,{#10000},52,13,52,13" +locations_default(#20786,#10000,52,13,52,13) +hasLocation(#20785,#20786) #20787=* -lines(#20787,#20001,""," -") -#20788=@"loc,{#10000},62,1,62,0" -locations_default(#20788,#10000,62,1,62,0) +tokeninfo(#20787,8,#20001,328,")") +#20788=@"loc,{#10000},52,14,52,14" +locations_default(#20788,#10000,52,14,52,14) hasLocation(#20787,#20788) #20789=* -lines(#20789,#20001,"class ThisTypes {"," -") -#20790=@"loc,{#10000},63,1,63,17" -locations_default(#20790,#10000,63,1,63,17) +tokeninfo(#20789,8,#20001,329,":") +#20790=@"loc,{#10000},52,15,52,15" +locations_default(#20790,#10000,52,15,52,15) hasLocation(#20789,#20790) #20791=* -lines(#20791,#20001," foo(x: number): this { return this; }"," -") -#20792=@"loc,{#10000},64,1,64,39" -locations_default(#20792,#10000,64,1,64,39) +tokeninfo(#20791,6,#20001,330,"T") +#20792=@"loc,{#10000},52,17,52,17" +locations_default(#20792,#10000,52,17,52,17) hasLocation(#20791,#20792) -indentation(#10000,64," ",2) #20793=* -lines(#20793,#20001,"}"," -") -#20794=@"loc,{#10000},65,1,65,1" -locations_default(#20794,#10000,65,1,65,1) +tokeninfo(#20793,8,#20001,331,";") +#20794=@"loc,{#10000},52,18,52,18" +locations_default(#20794,#10000,52,18,52,18) hasLocation(#20793,#20794) -numlines(#20001,65,60,0) #20795=* -tokeninfo(#20795,7,#20001,0,"interface") -#20796=@"loc,{#10000},1,1,1,9" -locations_default(#20796,#10000,1,1,1,9) -hasLocation(#20795,#20796) -#20797=* -tokeninfo(#20797,6,#20001,1,"Point") -hasLocation(#20797,#20058) +tokeninfo(#20795,8,#20001,332,"}") +hasLocation(#20795,#20107) +#20796=* +tokeninfo(#20796,7,#20001,333,"abstract") +#20797=@"loc,{#10000},54,1,54,8" +locations_default(#20797,#10000,54,1,54,8) +hasLocation(#20796,#20797) #20798=* -tokeninfo(#20798,8,#20001,2,"{") -#20799=@"loc,{#10000},1,17,1,17" -locations_default(#20799,#10000,1,17,1,17) +tokeninfo(#20798,7,#20001,334,"class") +#20799=@"loc,{#10000},54,10,54,14" +locations_default(#20799,#10000,54,10,54,14) hasLocation(#20798,#20799) #20800=* -tokeninfo(#20800,6,#20001,3,"x") -hasLocation(#20800,#20062) -#20801=* -tokeninfo(#20801,8,#20001,4,":") -#20802=@"loc,{#10000},1,20,1,20" -locations_default(#20802,#10000,1,20,1,20) -hasLocation(#20801,#20802) -#20803=* -tokeninfo(#20803,7,#20001,5,"number") -hasLocation(#20803,#20064) +tokeninfo(#20800,6,#20001,335,"GenericClass") +#20801=@"loc,{#10000},54,16,54,27" +locations_default(#20801,#10000,54,16,54,27) +hasLocation(#20800,#20801) +#20802=* +tokeninfo(#20802,8,#20001,336,"<") +#20803=@"loc,{#10000},54,28,54,28" +locations_default(#20803,#10000,54,28,54,28) +hasLocation(#20802,#20803) #20804=* -tokeninfo(#20804,8,#20001,6,";") -#20805=@"loc,{#10000},1,28,1,28" -locations_default(#20805,#10000,1,28,1,28) +tokeninfo(#20804,6,#20001,337,"T") +#20805=@"loc,{#10000},54,29,54,29" +locations_default(#20805,#10000,54,29,54,29) hasLocation(#20804,#20805) #20806=* -tokeninfo(#20806,6,#20001,7,"y") -hasLocation(#20806,#20068) -#20807=* -tokeninfo(#20807,8,#20001,8,":") -#20808=@"loc,{#10000},1,31,1,31" -locations_default(#20808,#10000,1,31,1,31) -hasLocation(#20807,#20808) -#20809=* -tokeninfo(#20809,7,#20001,9,"number") -hasLocation(#20809,#20070) +tokeninfo(#20806,8,#20001,338,">") +#20807=@"loc,{#10000},54,30,54,30" +locations_default(#20807,#10000,54,30,54,30) +hasLocation(#20806,#20807) +#20808=* +tokeninfo(#20808,7,#20001,339,"implements") +#20809=@"loc,{#10000},54,32,54,41" +locations_default(#20809,#10000,54,32,54,41) +hasLocation(#20808,#20809) #20810=* -tokeninfo(#20810,8,#20001,10,"}") -#20811=@"loc,{#10000},1,40,1,40" -locations_default(#20811,#10000,1,40,1,40) +tokeninfo(#20810,6,#20001,340,"GenericInterface") +#20811=@"loc,{#10000},54,43,54,58" +locations_default(#20811,#10000,54,43,54,58) hasLocation(#20810,#20811) #20812=* -tokeninfo(#20812,7,#20001,11,"namespace") -#20813=@"loc,{#10000},3,1,3,9" -locations_default(#20813,#10000,3,1,3,9) +tokeninfo(#20812,8,#20001,341,"<") +#20813=@"loc,{#10000},54,59,54,59" +locations_default(#20813,#10000,54,59,54,59) hasLocation(#20812,#20813) #20814=* -tokeninfo(#20814,6,#20001,12,"N") -hasLocation(#20814,#20074) -#20815=* -tokeninfo(#20815,8,#20001,13,"{") -#20816=@"loc,{#10000},3,13,3,13" -locations_default(#20816,#10000,3,13,3,13) -hasLocation(#20815,#20816) -#20817=* -tokeninfo(#20817,7,#20001,14,"export") -#20818=@"loc,{#10000},4,3,4,8" -locations_default(#20818,#10000,4,3,4,8) -hasLocation(#20817,#20818) -#20819=* -tokeninfo(#20819,7,#20001,15,"interface") -#20820=@"loc,{#10000},4,10,4,18" -locations_default(#20820,#10000,4,10,4,18) -hasLocation(#20819,#20820) -#20821=* -tokeninfo(#20821,6,#20001,16,"I") -hasLocation(#20821,#20083) +tokeninfo(#20814,6,#20001,342,"T") +#20815=@"loc,{#10000},54,60,54,60" +locations_default(#20815,#10000,54,60,54,60) +hasLocation(#20814,#20815) +#20816=* +tokeninfo(#20816,8,#20001,343,">") +#20817=@"loc,{#10000},54,61,54,61" +locations_default(#20817,#10000,54,61,54,61) +hasLocation(#20816,#20817) +#20818=* +tokeninfo(#20818,8,#20001,344,"{") +#20819=@"loc,{#10000},54,63,54,63" +locations_default(#20819,#10000,54,63,54,63) +hasLocation(#20818,#20819) +#20820=* +tokeninfo(#20820,6,#20001,345,"field") +#20821=@"loc,{#10000},55,3,55,7" +locations_default(#20821,#10000,55,3,55,7) +hasLocation(#20820,#20821) #20822=* -tokeninfo(#20822,8,#20001,17,"{") -#20823=@"loc,{#10000},4,22,4,22" -locations_default(#20823,#10000,4,22,4,22) +tokeninfo(#20822,8,#20001,346,":") +#20823=@"loc,{#10000},55,8,55,8" +locations_default(#20823,#10000,55,8,55,8) hasLocation(#20822,#20823) #20824=* -tokeninfo(#20824,8,#20001,18,"}") -#20825=@"loc,{#10000},4,23,4,23" -locations_default(#20825,#10000,4,23,4,23) +tokeninfo(#20824,6,#20001,347,"T") +#20825=@"loc,{#10000},55,10,55,10" +locations_default(#20825,#10000,55,10,55,10) hasLocation(#20824,#20825) #20826=* -tokeninfo(#20826,7,#20001,19,"export") -#20827=@"loc,{#10000},5,3,5,8" -locations_default(#20827,#10000,5,3,5,8) +tokeninfo(#20826,7,#20001,348,"abstract") +#20827=@"loc,{#10000},56,3,56,10" +locations_default(#20827,#10000,56,3,56,10) hasLocation(#20826,#20827) #20828=* -tokeninfo(#20828,7,#20001,20,"interface") -#20829=@"loc,{#10000},5,10,5,18" -locations_default(#20829,#10000,5,10,5,18) +tokeninfo(#20828,6,#20001,349,"method") +#20829=@"loc,{#10000},56,12,56,17" +locations_default(#20829,#10000,56,12,56,17) hasLocation(#20828,#20829) #20830=* -tokeninfo(#20830,6,#20001,21,"J") -hasLocation(#20830,#20094) -#20831=* -tokeninfo(#20831,8,#20001,22,"<") -#20832=@"loc,{#10000},5,21,5,21" -locations_default(#20832,#10000,5,21,5,21) -hasLocation(#20831,#20832) -#20833=* -tokeninfo(#20833,6,#20001,23,"T") -hasLocation(#20833,#20091) +tokeninfo(#20830,8,#20001,350,"(") +#20831=@"loc,{#10000},56,18,56,18" +locations_default(#20831,#10000,56,18,56,18) +hasLocation(#20830,#20831) +#20832=* +tokeninfo(#20832,6,#20001,351,"x") +#20833=@"loc,{#10000},56,19,56,19" +locations_default(#20833,#10000,56,19,56,19) +hasLocation(#20832,#20833) #20834=* -tokeninfo(#20834,8,#20001,24,">") -#20835=@"loc,{#10000},5,23,5,23" -locations_default(#20835,#10000,5,23,5,23) +tokeninfo(#20834,8,#20001,352,":") +#20835=@"loc,{#10000},56,20,56,20" +locations_default(#20835,#10000,56,20,56,20) hasLocation(#20834,#20835) #20836=* -tokeninfo(#20836,8,#20001,25,"{") -#20837=@"loc,{#10000},5,25,5,25" -locations_default(#20837,#10000,5,25,5,25) +tokeninfo(#20836,6,#20001,353,"T") +#20837=@"loc,{#10000},56,21,56,21" +locations_default(#20837,#10000,56,21,56,21) hasLocation(#20836,#20837) #20838=* -tokeninfo(#20838,8,#20001,26,"}") -#20839=@"loc,{#10000},5,26,5,26" -locations_default(#20839,#10000,5,26,5,26) +tokeninfo(#20838,8,#20001,354,")") +#20839=@"loc,{#10000},56,22,56,22" +locations_default(#20839,#10000,56,22,56,22) hasLocation(#20838,#20839) #20840=* -tokeninfo(#20840,8,#20001,27,"}") -hasLocation(#20840,#20720) -#20841=* -tokeninfo(#20841,7,#20001,28,"var") -#20842=@"loc,{#10000},8,1,8,3" -locations_default(#20842,#10000,8,1,8,3) -hasLocation(#20841,#20842) -#20843=* -tokeninfo(#20843,6,#20001,29,"anyVar") -hasLocation(#20843,#20100) +tokeninfo(#20840,8,#20001,355,":") +#20841=@"loc,{#10000},56,23,56,23" +locations_default(#20841,#10000,56,23,56,23) +hasLocation(#20840,#20841) +#20842=* +tokeninfo(#20842,6,#20001,356,"T") +#20843=@"loc,{#10000},56,25,56,25" +locations_default(#20843,#10000,56,25,56,25) +hasLocation(#20842,#20843) #20844=* -tokeninfo(#20844,8,#20001,30,":") -#20845=@"loc,{#10000},8,11,8,11" -locations_default(#20845,#10000,8,11,8,11) +tokeninfo(#20844,8,#20001,357,";") +#20845=@"loc,{#10000},56,26,56,26" +locations_default(#20845,#10000,56,26,56,26) hasLocation(#20844,#20845) #20846=* -tokeninfo(#20846,7,#20001,31,"any") -hasLocation(#20846,#20102) +tokeninfo(#20846,8,#20001,358,"}") +hasLocation(#20846,#20115) #20847=* -tokeninfo(#20847,8,#20001,32,";") -#20848=@"loc,{#10000},8,28,8,28" -locations_default(#20848,#10000,8,28,8,28) +tokeninfo(#20847,7,#20001,359,"class") +#20848=@"loc,{#10000},59,1,59,5" +locations_default(#20848,#10000,59,1,59,5) hasLocation(#20847,#20848) #20849=* -tokeninfo(#20849,7,#20001,33,"var") -#20850=@"loc,{#10000},9,1,9,3" -locations_default(#20850,#10000,9,1,9,3) +tokeninfo(#20849,6,#20001,360,"Fish") +#20850=@"loc,{#10000},59,7,59,10" +locations_default(#20850,#10000,59,7,59,10) hasLocation(#20849,#20850) #20851=* -tokeninfo(#20851,6,#20001,34,"objectVar") -hasLocation(#20851,#20108) -#20852=* -tokeninfo(#20852,8,#20001,35,":") -#20853=@"loc,{#10000},9,14,9,14" -locations_default(#20853,#10000,9,14,9,14) -hasLocation(#20852,#20853) -#20854=* -tokeninfo(#20854,7,#20001,36,"object") -hasLocation(#20854,#20110) +tokeninfo(#20851,8,#20001,361,"{") +#20852=@"loc,{#10000},59,12,59,12" +locations_default(#20852,#10000,59,12,59,12) +hasLocation(#20851,#20852) +#20853=* +tokeninfo(#20853,8,#20001,362,"}") +#20854=@"loc,{#10000},59,13,59,13" +locations_default(#20854,#10000,59,13,59,13) +hasLocation(#20853,#20854) #20855=* -tokeninfo(#20855,8,#20001,37,";") -#20856=@"loc,{#10000},9,31,9,31" -locations_default(#20856,#10000,9,31,9,31) +tokeninfo(#20855,7,#20001,363,"class") +#20856=@"loc,{#10000},60,1,60,5" +locations_default(#20856,#10000,60,1,60,5) hasLocation(#20855,#20856) #20857=* -tokeninfo(#20857,7,#20001,38,"var") -#20858=@"loc,{#10000},10,1,10,3" -locations_default(#20858,#10000,10,1,10,3) +tokeninfo(#20857,6,#20001,364,"Bird") +#20858=@"loc,{#10000},60,7,60,10" +locations_default(#20858,#10000,60,7,60,10) hasLocation(#20857,#20858) #20859=* -tokeninfo(#20859,6,#20001,39,"numberVar") -hasLocation(#20859,#20116) -#20860=* -tokeninfo(#20860,8,#20001,40,":") -#20861=@"loc,{#10000},10,14,10,14" -locations_default(#20861,#10000,10,14,10,14) -hasLocation(#20860,#20861) -#20862=* -tokeninfo(#20862,7,#20001,41,"number") -hasLocation(#20862,#20118) +tokeninfo(#20859,8,#20001,365,"{") +#20860=@"loc,{#10000},60,12,60,12" +locations_default(#20860,#10000,60,12,60,12) +hasLocation(#20859,#20860) +#20861=* +tokeninfo(#20861,8,#20001,366,"}") +#20862=@"loc,{#10000},60,13,60,13" +locations_default(#20862,#10000,60,13,60,13) +hasLocation(#20861,#20862) #20863=* -tokeninfo(#20863,8,#20001,42,";") -#20864=@"loc,{#10000},10,31,10,31" -locations_default(#20864,#10000,10,31,10,31) +tokeninfo(#20863,7,#20001,367,"function") +#20864=@"loc,{#10000},61,1,61,8" +locations_default(#20864,#10000,61,1,61,8) hasLocation(#20863,#20864) #20865=* -tokeninfo(#20865,7,#20001,43,"var") -#20866=@"loc,{#10000},11,1,11,3" -locations_default(#20866,#10000,11,1,11,3) +tokeninfo(#20865,6,#20001,368,"isFish") +#20866=@"loc,{#10000},61,10,61,15" +locations_default(#20866,#10000,61,10,61,15) hasLocation(#20865,#20866) #20867=* -tokeninfo(#20867,6,#20001,44,"stringVar") -hasLocation(#20867,#20124) -#20868=* -tokeninfo(#20868,8,#20001,45,":") -#20869=@"loc,{#10000},11,14,11,14" -locations_default(#20869,#10000,11,14,11,14) -hasLocation(#20868,#20869) -#20870=* -tokeninfo(#20870,7,#20001,46,"string") -hasLocation(#20870,#20126) +tokeninfo(#20867,8,#20001,369,"(") +#20868=@"loc,{#10000},61,16,61,16" +locations_default(#20868,#10000,61,16,61,16) +hasLocation(#20867,#20868) +#20869=* +tokeninfo(#20869,6,#20001,370,"pet") +#20870=@"loc,{#10000},61,17,61,19" +locations_default(#20870,#10000,61,17,61,19) +hasLocation(#20869,#20870) #20871=* -tokeninfo(#20871,8,#20001,47,";") -#20872=@"loc,{#10000},11,31,11,31" -locations_default(#20872,#10000,11,31,11,31) +tokeninfo(#20871,8,#20001,371,":") +#20872=@"loc,{#10000},61,21,61,21" +locations_default(#20872,#10000,61,21,61,21) hasLocation(#20871,#20872) #20873=* -tokeninfo(#20873,7,#20001,48,"var") -#20874=@"loc,{#10000},12,1,12,3" -locations_default(#20874,#10000,12,1,12,3) +tokeninfo(#20873,6,#20001,372,"Fish") +#20874=@"loc,{#10000},61,23,61,26" +locations_default(#20874,#10000,61,23,61,26) hasLocation(#20873,#20874) #20875=* -tokeninfo(#20875,6,#20001,49,"booleanVar") -hasLocation(#20875,#20132) -#20876=* -tokeninfo(#20876,8,#20001,50,":") -#20877=@"loc,{#10000},12,15,12,15" -locations_default(#20877,#10000,12,15,12,15) -hasLocation(#20876,#20877) -#20878=* -tokeninfo(#20878,7,#20001,51,"boolean") -hasLocation(#20878,#20134) +tokeninfo(#20875,8,#20001,373,"|") +#20876=@"loc,{#10000},61,28,61,28" +locations_default(#20876,#10000,61,28,61,28) +hasLocation(#20875,#20876) +#20877=* +tokeninfo(#20877,6,#20001,374,"Bird") +#20878=@"loc,{#10000},61,30,61,33" +locations_default(#20878,#10000,61,30,61,33) +hasLocation(#20877,#20878) #20879=* -tokeninfo(#20879,8,#20001,52,";") -#20880=@"loc,{#10000},12,32,12,32" -locations_default(#20880,#10000,12,32,12,32) +tokeninfo(#20879,8,#20001,375,")") +#20880=@"loc,{#10000},61,34,61,34" +locations_default(#20880,#10000,61,34,61,34) hasLocation(#20879,#20880) #20881=* -tokeninfo(#20881,7,#20001,53,"var") -#20882=@"loc,{#10000},13,1,13,3" -locations_default(#20882,#10000,13,1,13,3) +tokeninfo(#20881,8,#20001,376,":") +#20882=@"loc,{#10000},61,35,61,35" +locations_default(#20882,#10000,61,35,61,35) hasLocation(#20881,#20882) #20883=* -tokeninfo(#20883,6,#20001,54,"nullVar") -hasLocation(#20883,#20140) -#20884=* -tokeninfo(#20884,8,#20001,55,":") -#20885=@"loc,{#10000},13,12,13,12" -locations_default(#20885,#10000,13,12,13,12) -hasLocation(#20884,#20885) -#20886=* -tokeninfo(#20886,1,#20001,56,"null") -hasLocation(#20886,#20142) +tokeninfo(#20883,6,#20001,377,"pet") +#20884=@"loc,{#10000},61,37,61,39" +locations_default(#20884,#10000,61,37,61,39) +hasLocation(#20883,#20884) +#20885=* +tokeninfo(#20885,7,#20001,378,"is") +#20886=@"loc,{#10000},61,41,61,42" +locations_default(#20886,#10000,61,41,61,42) +hasLocation(#20885,#20886) #20887=* -tokeninfo(#20887,8,#20001,57,";") -#20888=@"loc,{#10000},13,29,13,29" -locations_default(#20888,#10000,13,29,13,29) +tokeninfo(#20887,6,#20001,379,"Fish") +#20888=@"loc,{#10000},61,44,61,47" +locations_default(#20888,#10000,61,44,61,47) hasLocation(#20887,#20888) #20889=* -tokeninfo(#20889,7,#20001,58,"var") -#20890=@"loc,{#10000},14,1,14,3" -locations_default(#20890,#10000,14,1,14,3) +tokeninfo(#20889,8,#20001,380,"{") +#20890=@"loc,{#10000},61,49,61,49" +locations_default(#20890,#10000,61,49,61,49) hasLocation(#20889,#20890) #20891=* -tokeninfo(#20891,6,#20001,59,"undefinedVar") -hasLocation(#20891,#20148) -#20892=* -tokeninfo(#20892,8,#20001,60,":") -#20893=@"loc,{#10000},14,17,14,17" -locations_default(#20893,#10000,14,17,14,17) -hasLocation(#20892,#20893) -#20894=* -tokeninfo(#20894,7,#20001,61,"undefined") -hasLocation(#20894,#20150) +tokeninfo(#20891,8,#20001,381,"}") +#20892=@"loc,{#10000},61,50,61,50" +locations_default(#20892,#10000,61,50,61,50) +hasLocation(#20891,#20892) +#20893=* +tokeninfo(#20893,7,#20001,382,"class") +#20894=@"loc,{#10000},63,1,63,5" +locations_default(#20894,#10000,63,1,63,5) +hasLocation(#20893,#20894) #20895=* -tokeninfo(#20895,8,#20001,62,";") -#20896=@"loc,{#10000},14,34,14,34" -locations_default(#20896,#10000,14,34,14,34) +tokeninfo(#20895,6,#20001,383,"ThisTypes") +#20896=@"loc,{#10000},63,7,63,15" +locations_default(#20896,#10000,63,7,63,15) hasLocation(#20895,#20896) #20897=* -tokeninfo(#20897,7,#20001,63,"var") -#20898=@"loc,{#10000},15,1,15,3" -locations_default(#20898,#10000,15,1,15,3) +tokeninfo(#20897,8,#20001,384,"{") +#20898=@"loc,{#10000},63,17,63,17" +locations_default(#20898,#10000,63,17,63,17) hasLocation(#20897,#20898) #20899=* -tokeninfo(#20899,6,#20001,64,"voidVar") -hasLocation(#20899,#20156) -#20900=* -tokeninfo(#20900,8,#20001,65,":") -#20901=@"loc,{#10000},15,12,15,12" -locations_default(#20901,#10000,15,12,15,12) -hasLocation(#20900,#20901) -#20902=* -tokeninfo(#20902,7,#20001,66,"void") -hasLocation(#20902,#20158) +tokeninfo(#20899,6,#20001,385,"foo") +#20900=@"loc,{#10000},64,3,64,5" +locations_default(#20900,#10000,64,3,64,5) +hasLocation(#20899,#20900) +#20901=* +tokeninfo(#20901,8,#20001,386,"(") +#20902=@"loc,{#10000},64,6,64,6" +locations_default(#20902,#10000,64,6,64,6) +hasLocation(#20901,#20902) #20903=* -tokeninfo(#20903,8,#20001,67,";") -#20904=@"loc,{#10000},15,29,15,29" -locations_default(#20904,#10000,15,29,15,29) +tokeninfo(#20903,6,#20001,387,"x") +#20904=@"loc,{#10000},64,7,64,7" +locations_default(#20904,#10000,64,7,64,7) hasLocation(#20903,#20904) #20905=* -tokeninfo(#20905,7,#20001,68,"var") -#20906=@"loc,{#10000},16,1,16,3" -locations_default(#20906,#10000,16,1,16,3) +tokeninfo(#20905,8,#20001,388,":") +#20906=@"loc,{#10000},64,8,64,8" +locations_default(#20906,#10000,64,8,64,8) hasLocation(#20905,#20906) #20907=* -tokeninfo(#20907,6,#20001,69,"neverVar") -hasLocation(#20907,#20164) -#20908=* -tokeninfo(#20908,8,#20001,70,":") -#20909=@"loc,{#10000},16,13,16,13" -locations_default(#20909,#10000,16,13,16,13) -hasLocation(#20908,#20909) -#20910=* -tokeninfo(#20910,7,#20001,71,"never") -hasLocation(#20910,#20166) +tokeninfo(#20907,7,#20001,389,"number") +#20908=@"loc,{#10000},64,10,64,15" +locations_default(#20908,#10000,64,10,64,15) +hasLocation(#20907,#20908) +#20909=* +tokeninfo(#20909,8,#20001,390,")") +#20910=@"loc,{#10000},64,16,64,16" +locations_default(#20910,#10000,64,16,64,16) +hasLocation(#20909,#20910) #20911=* -tokeninfo(#20911,8,#20001,72,";") -#20912=@"loc,{#10000},16,30,16,30" -locations_default(#20912,#10000,16,30,16,30) +tokeninfo(#20911,8,#20001,391,":") +#20912=@"loc,{#10000},64,17,64,17" +locations_default(#20912,#10000,64,17,64,17) hasLocation(#20911,#20912) #20913=* -tokeninfo(#20913,7,#20001,73,"var") -#20914=@"loc,{#10000},17,1,17,3" -locations_default(#20914,#10000,17,1,17,3) +tokeninfo(#20913,7,#20001,392,"this") +#20914=@"loc,{#10000},64,19,64,22" +locations_default(#20914,#10000,64,19,64,22) hasLocation(#20913,#20914) #20915=* -tokeninfo(#20915,6,#20001,74,"symbolVar") -hasLocation(#20915,#20172) -#20916=* -tokeninfo(#20916,8,#20001,75,":") -#20917=@"loc,{#10000},17,14,17,14" -locations_default(#20917,#10000,17,14,17,14) -hasLocation(#20916,#20917) -#20918=* -tokeninfo(#20918,7,#20001,76,"symbol") -hasLocation(#20918,#20174) +tokeninfo(#20915,8,#20001,393,"{") +#20916=@"loc,{#10000},64,24,64,24" +locations_default(#20916,#10000,64,24,64,24) +hasLocation(#20915,#20916) +#20917=* +tokeninfo(#20917,7,#20001,394,"return") +#20918=@"loc,{#10000},64,26,64,31" +locations_default(#20918,#10000,64,26,64,31) +hasLocation(#20917,#20918) #20919=* -tokeninfo(#20919,8,#20001,77,";") -#20920=@"loc,{#10000},17,31,17,31" -locations_default(#20920,#10000,17,31,17,31) +tokeninfo(#20919,7,#20001,395,"this") +#20920=@"loc,{#10000},64,33,64,36" +locations_default(#20920,#10000,64,33,64,36) hasLocation(#20919,#20920) #20921=* -tokeninfo(#20921,7,#20001,78,"var") -#20922=@"loc,{#10000},18,1,18,3" -locations_default(#20922,#10000,18,1,18,3) +tokeninfo(#20921,8,#20001,396,";") +#20922=@"loc,{#10000},64,37,64,37" +locations_default(#20922,#10000,64,37,64,37) hasLocation(#20921,#20922) #20923=* -tokeninfo(#20923,6,#20001,79,"objectVar") -hasLocation(#20923,#20180) -#20924=* -tokeninfo(#20924,8,#20001,80,":") -#20925=@"loc,{#10000},18,14,18,14" -locations_default(#20925,#10000,18,14,18,14) -hasLocation(#20924,#20925) +tokeninfo(#20923,8,#20001,397,"}") +#20924=@"loc,{#10000},64,39,64,39" +locations_default(#20924,#10000,64,39,64,39) +hasLocation(#20923,#20924) +#20925=* +tokeninfo(#20925,8,#20001,398,"}") +hasLocation(#20925,#20131) #20926=* -tokeninfo(#20926,8,#20001,81,"{") -#20927=@"loc,{#10000},18,25,18,25" -locations_default(#20927,#10000,18,25,18,25) +tokeninfo(#20926,0,#20001,399,"") +#20927=@"loc,{#10000},66,1,66,0" +locations_default(#20927,#10000,66,1,66,0) hasLocation(#20926,#20927) -#20928=* -tokeninfo(#20928,6,#20001,82,"x") -hasLocation(#20928,#20186) -#20929=* -tokeninfo(#20929,8,#20001,83,":") -#20930=@"loc,{#10000},18,28,18,28" -locations_default(#20930,#10000,18,28,18,28) -hasLocation(#20929,#20930) -#20931=* -tokeninfo(#20931,7,#20001,84,"number") -hasLocation(#20931,#20188) -#20932=* -tokeninfo(#20932,8,#20001,85,";") -#20933=@"loc,{#10000},18,36,18,36" -locations_default(#20933,#10000,18,36,18,36) -hasLocation(#20932,#20933) -#20934=* -tokeninfo(#20934,8,#20001,86,"}") -#20935=@"loc,{#10000},18,38,18,38" -locations_default(#20935,#10000,18,38,18,38) -hasLocation(#20934,#20935) -#20936=* -tokeninfo(#20936,7,#20001,87,"var") -#20937=@"loc,{#10000},19,1,19,3" -locations_default(#20937,#10000,19,1,19,3) -hasLocation(#20936,#20937) -#20938=* -tokeninfo(#20938,6,#20001,88,"nestedObjectVar") -hasLocation(#20938,#20194) -#20939=* -tokeninfo(#20939,8,#20001,89,":") -#20940=@"loc,{#10000},19,20,19,20" -locations_default(#20940,#10000,19,20,19,20) -hasLocation(#20939,#20940) -#20941=* -tokeninfo(#20941,8,#20001,90,"{") -#20942=@"loc,{#10000},19,25,19,25" -locations_default(#20942,#10000,19,25,19,25) -hasLocation(#20941,#20942) -#20943=* -tokeninfo(#20943,6,#20001,91,"x") -hasLocation(#20943,#20200) -#20944=* -tokeninfo(#20944,8,#20001,92,":") -#20945=@"loc,{#10000},19,28,19,28" -locations_default(#20945,#10000,19,28,19,28) -hasLocation(#20944,#20945) -#20946=* -tokeninfo(#20946,8,#20001,93,"{") -#20947=@"loc,{#10000},19,30,19,30" -locations_default(#20947,#10000,19,30,19,30) -hasLocation(#20946,#20947) -#20948=* -tokeninfo(#20948,6,#20001,94,"y") -hasLocation(#20948,#20206) -#20949=* -tokeninfo(#20949,8,#20001,95,":") -#20950=@"loc,{#10000},19,33,19,33" -locations_default(#20950,#10000,19,33,19,33) -hasLocation(#20949,#20950) -#20951=* -tokeninfo(#20951,7,#20001,96,"number") -hasLocation(#20951,#20208) -#20952=* -tokeninfo(#20952,8,#20001,97,"}") -#20953=@"loc,{#10000},19,42,19,42" -locations_default(#20953,#10000,19,42,19,42) -hasLocation(#20952,#20953) -#20954=* -tokeninfo(#20954,8,#20001,98,"}") -#20955=@"loc,{#10000},19,44,19,44" -locations_default(#20955,#10000,19,44,19,44) -hasLocation(#20954,#20955) -#20956=* -tokeninfo(#20956,7,#20001,99,"var") -#20957=@"loc,{#10000},20,1,20,3" -locations_default(#20957,#10000,20,1,20,3) -hasLocation(#20956,#20957) -#20958=* -tokeninfo(#20958,6,#20001,100,"arrayVar") -hasLocation(#20958,#20214) -#20959=* -tokeninfo(#20959,8,#20001,101,":") -#20960=@"loc,{#10000},20,13,20,13" -locations_default(#20960,#10000,20,13,20,13) -hasLocation(#20959,#20960) -#20961=* -tokeninfo(#20961,7,#20001,102,"number") -hasLocation(#20961,#20218) -#20962=* -tokeninfo(#20962,8,#20001,103,"[") -#20963=@"loc,{#10000},20,31,20,31" -locations_default(#20963,#10000,20,31,20,31) -hasLocation(#20962,#20963) -#20964=* -tokeninfo(#20964,8,#20001,104,"]") -#20965=@"loc,{#10000},20,32,20,32" -locations_default(#20965,#10000,20,32,20,32) -hasLocation(#20964,#20965) -#20966=* -tokeninfo(#20966,7,#20001,105,"var") -#20967=@"loc,{#10000},21,1,21,3" -locations_default(#20967,#10000,21,1,21,3) -hasLocation(#20966,#20967) -#20968=* -tokeninfo(#20968,6,#20001,106,"stringObjectVar") -hasLocation(#20968,#20224) -#20969=* -tokeninfo(#20969,8,#20001,107,":") -#20970=@"loc,{#10000},21,20,21,20" -locations_default(#20970,#10000,21,20,21,20) -hasLocation(#20969,#20970) -#20971=* -tokeninfo(#20971,6,#20001,108,"String") -hasLocation(#20971,#20226) -#20972=* -tokeninfo(#20972,7,#20001,109,"var") -#20973=@"loc,{#10000},22,1,22,3" -locations_default(#20973,#10000,22,1,22,3) -hasLocation(#20972,#20973) -#20974=* -tokeninfo(#20974,6,#20001,110,"pointVar") -hasLocation(#20974,#20232) -#20975=* -tokeninfo(#20975,8,#20001,111,":") -#20976=@"loc,{#10000},22,13,22,13" -locations_default(#20976,#10000,22,13,22,13) -hasLocation(#20975,#20976) -#20977=* -tokeninfo(#20977,6,#20001,112,"Point") -hasLocation(#20977,#20234) -#20978=* -tokeninfo(#20978,7,#20001,113,"var") -#20979=@"loc,{#10000},23,1,23,3" -locations_default(#20979,#10000,23,1,23,3) -hasLocation(#20978,#20979) -#20980=* -tokeninfo(#20980,6,#20001,114,"rawFunctionVar") -hasLocation(#20980,#20240) +toplevels(#20001,0) +#20928=@"loc,{#10000},1,1,66,0" +locations_default(#20928,#10000,1,1,66,0) +hasLocation(#20001,#20928) +#20929=@"var;{anyVar};{#20000}" +variables(#20929,"anyVar",#20000) +#20930=@"var;{objectVar};{#20000}" +variables(#20930,"objectVar",#20000) +#20931=@"var;{numberVar};{#20000}" +variables(#20931,"numberVar",#20000) +#20932=@"var;{stringVar};{#20000}" +variables(#20932,"stringVar",#20000) +#20933=@"var;{booleanVar};{#20000}" +variables(#20933,"booleanVar",#20000) +#20934=@"var;{nullVar};{#20000}" +variables(#20934,"nullVar",#20000) +#20935=@"var;{undefinedVar};{#20000}" +variables(#20935,"undefinedVar",#20000) +#20936=@"var;{voidVar};{#20000}" +variables(#20936,"voidVar",#20000) +#20937=@"var;{neverVar};{#20000}" +variables(#20937,"neverVar",#20000) +#20938=@"var;{symbolVar};{#20000}" +variables(#20938,"symbolVar",#20000) +#20939=@"var;{nestedObjectVar};{#20000}" +variables(#20939,"nestedObjectVar",#20000) +#20940=@"var;{arrayVar};{#20000}" +variables(#20940,"arrayVar",#20000) +#20941=@"var;{stringObjectVar};{#20000}" +variables(#20941,"stringObjectVar",#20000) +#20942=@"var;{pointVar};{#20000}" +variables(#20942,"pointVar",#20000) +#20943=@"var;{rawFunctionVar};{#20000}" +variables(#20943,"rawFunctionVar",#20000) +#20944=@"var;{varVar};{#20000}" +variables(#20944,"varVar",#20000) +#20945=@"var;{genericArrayVar};{#20000}" +variables(#20945,"genericArrayVar",#20000) +#20946=@"var;{nestedGenericVar};{#20000}" +variables(#20946,"nestedGenericVar",#20000) +#20947=@"var;{callSigVar};{#20000}" +variables(#20947,"callSigVar",#20000) +#20948=@"var;{constructSigVar};{#20000}" +variables(#20948,"constructSigVar",#20000) +#20949=@"var;{callSigVoidVar};{#20000}" +variables(#20949,"callSigVoidVar",#20000) +#20950=@"var;{callSigNeverVar};{#20000}" +variables(#20950,"callSigNeverVar",#20000) +#20951=@"var;{unionVar};{#20000}" +variables(#20951,"unionVar",#20000) +#20952=@"var;{stringLiteralVar};{#20000}" +variables(#20952,"stringLiteralVar",#20000) +#20953=@"var;{trueVar};{#20000}" +variables(#20953,"trueVar",#20000) +#20954=@"var;{falseVar};{#20000}" +variables(#20954,"falseVar",#20000) +#20955=@"var;{intLiteralVar};{#20000}" +variables(#20955,"intLiteralVar",#20000) +#20956=@"var;{doubleLiteralVar};{#20000}" +variables(#20956,"doubleLiteralVar",#20000) +#20957=@"var;{tupleVar};{#20000}" +variables(#20957,"tupleVar",#20000) +#20958=@"var;{longUnionVar};{#20000}" +variables(#20958,"longUnionVar",#20000) +#20959=@"var;{intersectVar};{#20000}" +variables(#20959,"intersectVar",#20000) +#20960=@"var;{genericCallSigVar};{#20000}" +variables(#20960,"genericCallSigVar",#20000) +#20961=@"var;{genericConstructSigVar};{#20000}" +variables(#20961,"genericConstructSigVar",#20000) +#20962=@"var;{keyofVar};{#20000}" +variables(#20962,"keyofVar",#20000) +#20963=@"var;{indexedVar};{#20000}" +variables(#20963,"indexedVar",#20000) +#20964=@"var;{typeofVar};{#20000}" +variables(#20964,"typeofVar",#20000) +#20965=@"var;{mappedVar};{#20000}" +variables(#20965,"mappedVar",#20000) +#20966=@"var;{parenthesizedVar};{#20000}" +variables(#20966,"parenthesizedVar",#20000) +#20967=@"var;{namespaceTypeVar};{#20000}" +variables(#20967,"namespaceTypeVar",#20000) +#20968=@"var;{namespaceGenericTypeVar};{#20000}" +variables(#20968,"namespaceGenericTypeVar",#20000) +#20969=@"var;{isFish};{#20000}" +variables(#20969,"isFish",#20000) +#20970=@"local_namespace_name;{N};{#20000}" +local_namespace_names(#20970,"N",#20000) +#20971=@"var;{GenericClass};{#20000}" +variables(#20971,"GenericClass",#20000) +#20972=@"var;{Fish};{#20000}" +variables(#20972,"Fish",#20000) +#20973=@"var;{Bird};{#20000}" +variables(#20973,"Bird",#20000) +#20974=@"var;{ThisTypes};{#20000}" +variables(#20974,"ThisTypes",#20000) +#20975=@"local_type_name;{Point};{#20000}" +local_type_names(#20975,"Point",#20000) +#20976=@"local_type_name;{GenericInterface};{#20000}" +local_type_names(#20976,"GenericInterface",#20000) +#20977=@"local_type_name;{GenericClass};{#20000}" +local_type_names(#20977,"GenericClass",#20000) +#20978=@"local_type_name;{Fish};{#20000}" +local_type_names(#20978,"Fish",#20000) +#20979=@"local_type_name;{Bird};{#20000}" +local_type_names(#20979,"Bird",#20000) +#20980=@"local_type_name;{ThisTypes};{#20000}" +local_type_names(#20980,"ThisTypes",#20000) #20981=* -tokeninfo(#20981,8,#20001,115,":") -#20982=@"loc,{#10000},23,19,23,19" -locations_default(#20982,#10000,23,19,23,19) -hasLocation(#20981,#20982) +stmts(#20981,34,#20001,0,"interfa ... umber }") +hasLocation(#20981,#20003) +stmtContainers(#20981,#20001) +#20982=* +typeexprs(#20982,1,#20981,0,"Point") +hasLocation(#20982,#20135) +enclosingStmt(#20982,#20981) +exprContainers(#20982,#20001) +literals("Point","Point",#20982) +typedecl(#20982,#20975) #20983=* -tokeninfo(#20983,6,#20001,116,"Function") -hasLocation(#20983,#20242) -#20984=* -tokeninfo(#20984,7,#20001,117,"var") -#20985=@"loc,{#10000},24,1,24,3" -locations_default(#20985,#10000,24,1,24,3) -hasLocation(#20984,#20985) +properties(#20983,#20981,2,8,"x: number;") +#20984=@"loc,{#10000},1,19,1,28" +locations_default(#20984,#10000,1,19,1,28) +hasLocation(#20983,#20984) +#20985=* +exprs(#20985,0,#20983,0,"x") +hasLocation(#20985,#20139) +enclosingStmt(#20985,#20981) +exprContainers(#20985,#20001) +literals("x","x",#20985) +isAbstractMember(#20983) #20986=* -tokeninfo(#20986,6,#20001,118,"varVar") -hasLocation(#20986,#20248) +typeexprs(#20986,2,#20983,2,"number") +hasLocation(#20986,#20143) +enclosingStmt(#20986,#20981) +exprContainers(#20986,#20001) +literals("number","number",#20986) #20987=* -tokeninfo(#20987,8,#20001,119,":") -#20988=@"loc,{#10000},24,11,24,11" -locations_default(#20988,#10000,24,11,24,11) +properties(#20987,#20981,3,8,"y: number") +#20988=@"loc,{#10000},1,30,1,38" +locations_default(#20988,#10000,1,30,1,38) hasLocation(#20987,#20988) #20989=* -tokeninfo(#20989,6,#20001,120,"x11") -hasLocation(#20989,#20250) +exprs(#20989,0,#20987,0,"y") +hasLocation(#20989,#20147) +enclosingStmt(#20989,#20981) +exprContainers(#20989,#20001) +literals("y","y",#20989) +isAbstractMember(#20987) #20990=* -tokeninfo(#20990,7,#20001,121,"var") -#20991=@"loc,{#10000},25,1,25,3" -locations_default(#20991,#10000,25,1,25,3) -hasLocation(#20990,#20991) -#20992=* -tokeninfo(#20992,6,#20001,122,"genericArrayVar") -hasLocation(#20992,#20256) +typeexprs(#20990,2,#20987,2,"number") +hasLocation(#20990,#20151) +enclosingStmt(#20990,#20981) +exprContainers(#20990,#20001) +literals("number","number",#20990) +#20991=* +stmts(#20991,31,#20001,1,"namespa ... T> {}\n}") +#20992=@"loc,{#10000},3,1,6,1" +locations_default(#20992,#10000,3,1,6,1) +hasLocation(#20991,#20992) +stmtContainers(#20991,#20001) #20993=* -tokeninfo(#20993,8,#20001,123,":") -#20994=@"loc,{#10000},25,20,25,20" -locations_default(#20994,#10000,25,20,25,20) -hasLocation(#20993,#20994) -#20995=* -tokeninfo(#20995,6,#20001,124,"Array") -hasLocation(#20995,#20260) -#20996=* -tokeninfo(#20996,8,#20001,125,"<") -#20997=@"loc,{#10000},25,30,25,30" -locations_default(#20997,#10000,25,30,25,30) -hasLocation(#20996,#20997) -#20998=* -tokeninfo(#20998,7,#20001,126,"number") -hasLocation(#20998,#20262) +exprs(#20993,78,#20991,-1,"N") +hasLocation(#20993,#20157) +enclosingStmt(#20993,#20991) +exprContainers(#20993,#20001) +literals("N","N",#20993) +namespacedecl(#20993,#20970) +#20994=* +scopes(#20994,9) +scopenodes(#20991,#20994) +scopenesting(#20994,#20000) +#20995=@"local_type_name;{I};{#20994}" +local_type_names(#20995,"I",#20994) +#20996=@"local_type_name;{J};{#20994}" +local_type_names(#20996,"J",#20994) +#20997=* +stmts(#20997,30,#20991,0,"export ... ce I {}") +#20998=@"loc,{#10000},4,3,4,23" +locations_default(#20998,#10000,4,3,4,23) +hasLocation(#20997,#20998) +stmtContainers(#20997,#20991) #20999=* -tokeninfo(#20999,8,#20001,127,">") -#21000=@"loc,{#10000},25,37,25,37" -locations_default(#21000,#10000,25,37,25,37) +stmts(#20999,34,#20997,-1,"interface I {}") +#21000=@"loc,{#10000},4,10,4,23" +locations_default(#21000,#10000,4,10,4,23) hasLocation(#20999,#21000) +stmtContainers(#20999,#20991) #21001=* -tokeninfo(#21001,7,#20001,128,"var") -#21002=@"loc,{#10000},26,1,26,3" -locations_default(#21002,#10000,26,1,26,3) -hasLocation(#21001,#21002) -#21003=* -tokeninfo(#21003,6,#20001,129,"nestedGenericVar") -hasLocation(#21003,#20268) +typeexprs(#21001,1,#20999,0,"I") +hasLocation(#21001,#20165) +enclosingStmt(#21001,#20999) +exprContainers(#21001,#20991) +literals("I","I",#21001) +typedecl(#21001,#20995) +#21002=* +stmts(#21002,30,#20991,1,"export ... J {}") +#21003=@"loc,{#10000},5,3,5,26" +locations_default(#21003,#10000,5,3,5,26) +hasLocation(#21002,#21003) +stmtContainers(#21002,#20991) #21004=* -tokeninfo(#21004,8,#20001,130,":") -#21005=@"loc,{#10000},26,21,26,21" -locations_default(#21005,#10000,26,21,26,21) +stmts(#21004,34,#21002,-1,"interface J {}") +#21005=@"loc,{#10000},5,10,5,26" +locations_default(#21005,#10000,5,10,5,26) hasLocation(#21004,#21005) +stmtContainers(#21004,#20991) #21006=* -tokeninfo(#21006,6,#20001,131,"Foo") -hasLocation(#21006,#20272) -#21007=* -tokeninfo(#21007,8,#20001,132,"<") -#21008=@"loc,{#10000},26,28,26,28" -locations_default(#21008,#10000,26,28,26,28) -hasLocation(#21007,#21008) +scopes(#21006,11) +scopenodes(#21004,#21006) +scopenesting(#21006,#20994) +#21007=@"local_type_name;{T};{#21006}" +local_type_names(#21007,"T",#21006) +#21008=* +typeexprs(#21008,22,#21004,-2,"T") +hasLocation(#21008,#20179) +enclosingStmt(#21008,#21004) +exprContainers(#21008,#20991) #21009=* -tokeninfo(#21009,6,#20001,133,"Foo") -hasLocation(#21009,#20276) +typeexprs(#21009,1,#21008,0,"T") +hasLocation(#21009,#20179) +enclosingStmt(#21009,#21004) +exprContainers(#21009,#20991) +literals("T","T",#21009) +typedecl(#21009,#21007) #21010=* -tokeninfo(#21010,8,#20001,134,"<") -#21011=@"loc,{#10000},26,32,26,32" -locations_default(#21011,#10000,26,32,26,32) -hasLocation(#21010,#21011) +typeexprs(#21010,1,#21004,0,"J") +hasLocation(#21010,#20175) +enclosingStmt(#21010,#21004) +exprContainers(#21010,#20991) +literals("J","J",#21010) +typedecl(#21010,#20996) +#21011=* +stmts(#21011,18,#20001,2,"var any ... any;") +hasLocation(#21011,#20017) +stmtContainers(#21011,#20001) #21012=* -tokeninfo(#21012,7,#20001,135,"number") -hasLocation(#21012,#20278) -#21013=* -tokeninfo(#21013,8,#20001,136,">") -#21014=@"loc,{#10000},26,39,26,39" -locations_default(#21014,#10000,26,39,26,39) -hasLocation(#21013,#21014) +exprs(#21012,64,#21011,0,"anyVar: ... any") +#21013=@"loc,{#10000},8,5,8,27" +locations_default(#21013,#10000,8,5,8,27) +hasLocation(#21012,#21013) +enclosingStmt(#21012,#21011) +exprContainers(#21012,#20001) +#21014=* +exprs(#21014,78,#21012,0,"anyVar") +hasLocation(#21014,#20190) +enclosingStmt(#21014,#21011) +exprContainers(#21014,#20001) +literals("anyVar","anyVar",#21014) +decl(#21014,#20929) #21015=* -tokeninfo(#21015,8,#20001,137,">") -#21016=@"loc,{#10000},26,40,26,40" -locations_default(#21016,#10000,26,40,26,40) -hasLocation(#21015,#21016) +typeexprs(#21015,2,#21012,2,"any") +hasLocation(#21015,#20194) +enclosingStmt(#21015,#21011) +exprContainers(#21015,#20001) +literals("any","any",#21015) +#21016=* +stmts(#21016,18,#20001,3,"var obj ... object;") +hasLocation(#21016,#20019) +stmtContainers(#21016,#20001) #21017=* -tokeninfo(#21017,7,#20001,138,"var") -#21018=@"loc,{#10000},27,1,27,3" -locations_default(#21018,#10000,27,1,27,3) +exprs(#21017,64,#21016,0,"objectV ... object") +#21018=@"loc,{#10000},9,5,9,30" +locations_default(#21018,#10000,9,5,9,30) hasLocation(#21017,#21018) +enclosingStmt(#21017,#21016) +exprContainers(#21017,#20001) #21019=* -tokeninfo(#21019,6,#20001,139,"callSigVar") -hasLocation(#21019,#20284) +exprs(#21019,78,#21017,0,"objectVar") +hasLocation(#21019,#20200) +enclosingStmt(#21019,#21016) +exprContainers(#21019,#20001) +literals("objectVar","objectVar",#21019) +decl(#21019,#20930) #21020=* -tokeninfo(#21020,8,#20001,140,":") -#21021=@"loc,{#10000},27,15,27,15" -locations_default(#21021,#10000,27,15,27,15) -hasLocation(#21020,#21021) +typeexprs(#21020,2,#21017,2,"object") +hasLocation(#21020,#20204) +enclosingStmt(#21020,#21016) +exprContainers(#21020,#20001) +literals("object","object",#21020) +#21021=* +stmts(#21021,18,#20001,4,"var num ... number;") +hasLocation(#21021,#20021) +stmtContainers(#21021,#20001) #21022=* -tokeninfo(#21022,8,#20001,141,"(") -#21023=@"loc,{#10000},27,25,27,25" -locations_default(#21023,#10000,27,25,27,25) +exprs(#21022,64,#21021,0,"numberV ... number") +#21023=@"loc,{#10000},10,5,10,30" +locations_default(#21023,#10000,10,5,10,30) hasLocation(#21022,#21023) +enclosingStmt(#21022,#21021) +exprContainers(#21022,#20001) #21024=* -tokeninfo(#21024,8,#20001,142,")") -#21025=@"loc,{#10000},27,26,27,26" -locations_default(#21025,#10000,27,26,27,26) -hasLocation(#21024,#21025) +exprs(#21024,78,#21022,0,"numberVar") +hasLocation(#21024,#20210) +enclosingStmt(#21024,#21021) +exprContainers(#21024,#20001) +literals("numberVar","numberVar",#21024) +decl(#21024,#20931) +#21025=* +typeexprs(#21025,2,#21022,2,"number") +hasLocation(#21025,#20214) +enclosingStmt(#21025,#21021) +exprContainers(#21025,#20001) +literals("number","number",#21025) #21026=* -tokeninfo(#21026,8,#20001,143,"=>") -#21027=@"loc,{#10000},27,28,27,29" -locations_default(#21027,#10000,27,28,27,29) -hasLocation(#21026,#21027) -#21028=* -tokeninfo(#21028,7,#20001,144,"number") -hasLocation(#21028,#20291) +stmts(#21026,18,#20001,5,"var str ... string;") +hasLocation(#21026,#20023) +stmtContainers(#21026,#20001) +#21027=* +exprs(#21027,64,#21026,0,"stringV ... string") +#21028=@"loc,{#10000},11,5,11,30" +locations_default(#21028,#10000,11,5,11,30) +hasLocation(#21027,#21028) +enclosingStmt(#21027,#21026) +exprContainers(#21027,#20001) #21029=* -tokeninfo(#21029,8,#20001,145,";") -#21030=@"loc,{#10000},27,37,27,37" -locations_default(#21030,#10000,27,37,27,37) -hasLocation(#21029,#21030) +exprs(#21029,78,#21027,0,"stringVar") +hasLocation(#21029,#20220) +enclosingStmt(#21029,#21026) +exprContainers(#21029,#20001) +literals("stringVar","stringVar",#21029) +decl(#21029,#20932) +#21030=* +typeexprs(#21030,2,#21027,2,"string") +hasLocation(#21030,#20224) +enclosingStmt(#21030,#21026) +exprContainers(#21030,#20001) +literals("string","string",#21030) #21031=* -tokeninfo(#21031,7,#20001,146,"var") -#21032=@"loc,{#10000},28,1,28,3" -locations_default(#21032,#10000,28,1,28,3) -hasLocation(#21031,#21032) -#21033=* -tokeninfo(#21033,6,#20001,147,"constructSigVar") -hasLocation(#21033,#20297) +stmts(#21031,18,#20001,6,"var boo ... oolean;") +hasLocation(#21031,#20025) +stmtContainers(#21031,#20001) +#21032=* +exprs(#21032,64,#21031,0,"boolean ... boolean") +#21033=@"loc,{#10000},12,5,12,31" +locations_default(#21033,#10000,12,5,12,31) +hasLocation(#21032,#21033) +enclosingStmt(#21032,#21031) +exprContainers(#21032,#20001) #21034=* -tokeninfo(#21034,8,#20001,148,":") -#21035=@"loc,{#10000},28,20,28,20" -locations_default(#21035,#10000,28,20,28,20) -hasLocation(#21034,#21035) +exprs(#21034,78,#21032,0,"booleanVar") +hasLocation(#21034,#20230) +enclosingStmt(#21034,#21031) +exprContainers(#21034,#20001) +literals("booleanVar","booleanVar",#21034) +decl(#21034,#20933) +#21035=* +typeexprs(#21035,2,#21032,2,"boolean") +hasLocation(#21035,#20234) +enclosingStmt(#21035,#21031) +exprContainers(#21035,#20001) +literals("boolean","boolean",#21035) #21036=* -tokeninfo(#21036,7,#20001,149,"new") -#21037=@"loc,{#10000},28,25,28,27" -locations_default(#21037,#10000,28,25,28,27) -hasLocation(#21036,#21037) -#21038=* -tokeninfo(#21038,8,#20001,150,"(") -#21039=@"loc,{#10000},28,29,28,29" -locations_default(#21039,#10000,28,29,28,29) -hasLocation(#21038,#21039) +stmts(#21036,18,#20001,7,"var nul ... null;") +hasLocation(#21036,#20027) +stmtContainers(#21036,#20001) +#21037=* +exprs(#21037,64,#21036,0,"nullVar ... null") +#21038=@"loc,{#10000},13,5,13,28" +locations_default(#21038,#10000,13,5,13,28) +hasLocation(#21037,#21038) +enclosingStmt(#21037,#21036) +exprContainers(#21037,#20001) +#21039=* +exprs(#21039,78,#21037,0,"nullVar") +hasLocation(#21039,#20240) +enclosingStmt(#21039,#21036) +exprContainers(#21039,#20001) +literals("nullVar","nullVar",#21039) +decl(#21039,#20934) #21040=* -tokeninfo(#21040,8,#20001,151,")") -#21041=@"loc,{#10000},28,30,28,30" -locations_default(#21041,#10000,28,30,28,30) -hasLocation(#21040,#21041) +typeexprs(#21040,2,#21037,2,"null") +hasLocation(#21040,#20244) +enclosingStmt(#21040,#21036) +exprContainers(#21040,#20001) +literals("null","null",#21040) +#21041=* +stmts(#21041,18,#20001,8,"var und ... efined;") +hasLocation(#21041,#20029) +stmtContainers(#21041,#20001) #21042=* -tokeninfo(#21042,8,#20001,152,"=>") -#21043=@"loc,{#10000},28,32,28,33" -locations_default(#21043,#10000,28,32,28,33) +exprs(#21042,64,#21041,0,"undefin ... defined") +#21043=@"loc,{#10000},14,5,14,33" +locations_default(#21043,#10000,14,5,14,33) hasLocation(#21042,#21043) +enclosingStmt(#21042,#21041) +exprContainers(#21042,#20001) #21044=* -tokeninfo(#21044,6,#20001,153,"Point") -hasLocation(#21044,#20304) +exprs(#21044,78,#21042,0,"undefinedVar") +hasLocation(#21044,#20250) +enclosingStmt(#21044,#21041) +exprContainers(#21044,#20001) +literals("undefinedVar","undefinedVar",#21044) +decl(#21044,#20935) #21045=* -tokeninfo(#21045,8,#20001,154,";") -#21046=@"loc,{#10000},28,40,28,40" -locations_default(#21046,#10000,28,40,28,40) -hasLocation(#21045,#21046) +typeexprs(#21045,2,#21042,2,"undefined") +hasLocation(#21045,#20254) +enclosingStmt(#21045,#21041) +exprContainers(#21045,#20001) +literals("undefined","undefined",#21045) +#21046=* +stmts(#21046,18,#20001,9,"var voi ... void;") +hasLocation(#21046,#20031) +stmtContainers(#21046,#20001) #21047=* -tokeninfo(#21047,7,#20001,155,"var") -#21048=@"loc,{#10000},29,1,29,3" -locations_default(#21048,#10000,29,1,29,3) +exprs(#21047,64,#21046,0,"voidVar ... void") +#21048=@"loc,{#10000},15,5,15,28" +locations_default(#21048,#10000,15,5,15,28) hasLocation(#21047,#21048) +enclosingStmt(#21047,#21046) +exprContainers(#21047,#20001) #21049=* -tokeninfo(#21049,6,#20001,156,"callSigVoidVar") -hasLocation(#21049,#20310) +exprs(#21049,78,#21047,0,"voidVar") +hasLocation(#21049,#20260) +enclosingStmt(#21049,#21046) +exprContainers(#21049,#20001) +literals("voidVar","voidVar",#21049) +decl(#21049,#20936) #21050=* -tokeninfo(#21050,8,#20001,157,":") -#21051=@"loc,{#10000},29,19,29,19" -locations_default(#21051,#10000,29,19,29,19) -hasLocation(#21050,#21051) +typeexprs(#21050,2,#21047,2,"void") +hasLocation(#21050,#20264) +enclosingStmt(#21050,#21046) +exprContainers(#21050,#20001) +literals("void","void",#21050) +#21051=* +stmts(#21051,18,#20001,10,"var nev ... never;") +hasLocation(#21051,#20033) +stmtContainers(#21051,#20001) #21052=* -tokeninfo(#21052,8,#20001,158,"(") -#21053=@"loc,{#10000},29,25,29,25" -locations_default(#21053,#10000,29,25,29,25) +exprs(#21052,64,#21051,0,"neverVa ... never") +#21053=@"loc,{#10000},16,5,16,29" +locations_default(#21053,#10000,16,5,16,29) hasLocation(#21052,#21053) +enclosingStmt(#21052,#21051) +exprContainers(#21052,#20001) #21054=* -tokeninfo(#21054,8,#20001,159,")") -#21055=@"loc,{#10000},29,26,29,26" -locations_default(#21055,#10000,29,26,29,26) -hasLocation(#21054,#21055) +exprs(#21054,78,#21052,0,"neverVar") +hasLocation(#21054,#20270) +enclosingStmt(#21054,#21051) +exprContainers(#21054,#20001) +literals("neverVar","neverVar",#21054) +decl(#21054,#20937) +#21055=* +typeexprs(#21055,2,#21052,2,"never") +hasLocation(#21055,#20274) +enclosingStmt(#21055,#21051) +exprContainers(#21055,#20001) +literals("never","never",#21055) #21056=* -tokeninfo(#21056,8,#20001,160,"=>") -#21057=@"loc,{#10000},29,28,29,29" -locations_default(#21057,#10000,29,28,29,29) -hasLocation(#21056,#21057) -#21058=* -tokeninfo(#21058,7,#20001,161,"void") -hasLocation(#21058,#20317) +stmts(#21056,18,#20001,11,"var sym ... symbol;") +hasLocation(#21056,#20035) +stmtContainers(#21056,#20001) +#21057=* +exprs(#21057,64,#21056,0,"symbolV ... symbol") +#21058=@"loc,{#10000},17,5,17,30" +locations_default(#21058,#10000,17,5,17,30) +hasLocation(#21057,#21058) +enclosingStmt(#21057,#21056) +exprContainers(#21057,#20001) #21059=* -tokeninfo(#21059,8,#20001,162,";") -#21060=@"loc,{#10000},29,35,29,35" -locations_default(#21060,#10000,29,35,29,35) -hasLocation(#21059,#21060) +exprs(#21059,78,#21057,0,"symbolVar") +hasLocation(#21059,#20280) +enclosingStmt(#21059,#21056) +exprContainers(#21059,#20001) +literals("symbolVar","symbolVar",#21059) +decl(#21059,#20938) +#21060=* +typeexprs(#21060,2,#21057,2,"symbol") +hasLocation(#21060,#20284) +enclosingStmt(#21060,#21056) +exprContainers(#21060,#20001) +literals("symbol","symbol",#21060) #21061=* -tokeninfo(#21061,7,#20001,163,"var") -#21062=@"loc,{#10000},30,1,30,3" -locations_default(#21062,#10000,30,1,30,3) -hasLocation(#21061,#21062) -#21063=* -tokeninfo(#21063,6,#20001,164,"callSigNeverVar") -hasLocation(#21063,#20323) +stmts(#21061,18,#20001,12,"var obj ... mber; }") +hasLocation(#21061,#20037) +stmtContainers(#21061,#20001) +#21062=* +exprs(#21062,64,#21061,0,"objectV ... mber; }") +#21063=@"loc,{#10000},18,5,18,38" +locations_default(#21063,#10000,18,5,18,38) +hasLocation(#21062,#21063) +enclosingStmt(#21062,#21061) +exprContainers(#21062,#20001) #21064=* -tokeninfo(#21064,8,#20001,165,":") -#21065=@"loc,{#10000},30,20,30,20" -locations_default(#21065,#10000,30,20,30,20) -hasLocation(#21064,#21065) -#21066=* -tokeninfo(#21066,8,#20001,166,"(") -#21067=@"loc,{#10000},30,25,30,25" -locations_default(#21067,#10000,30,25,30,25) -hasLocation(#21066,#21067) -#21068=* -tokeninfo(#21068,8,#20001,167,")") -#21069=@"loc,{#10000},30,26,30,26" -locations_default(#21069,#10000,30,26,30,26) -hasLocation(#21068,#21069) +exprs(#21064,78,#21062,0,"objectVar") +hasLocation(#21064,#20290) +enclosingStmt(#21064,#21061) +exprContainers(#21064,#20001) +literals("objectVar","objectVar",#21064) +decl(#21064,#20930) +#21065=* +typeexprs(#21065,21,#21062,2,"{ x: number; }") +#21066=@"loc,{#10000},18,25,18,38" +locations_default(#21066,#10000,18,25,18,38) +hasLocation(#21065,#21066) +enclosingStmt(#21065,#21061) +exprContainers(#21065,#20001) +#21067=* +properties(#21067,#21065,0,8,"x: number;") +#21068=@"loc,{#10000},18,27,18,36" +locations_default(#21068,#10000,18,27,18,36) +hasLocation(#21067,#21068) +#21069=* +exprs(#21069,0,#21067,0,"x") +hasLocation(#21069,#20296) +enclosingStmt(#21069,#21061) +exprContainers(#21069,#20001) +literals("x","x",#21069) +isAbstractMember(#21067) #21070=* -tokeninfo(#21070,8,#20001,168,"=>") -#21071=@"loc,{#10000},30,28,30,29" -locations_default(#21071,#10000,30,28,30,29) -hasLocation(#21070,#21071) +typeexprs(#21070,2,#21067,2,"number") +hasLocation(#21070,#20300) +enclosingStmt(#21070,#21061) +exprContainers(#21070,#20001) +literals("number","number",#21070) +#21071=* +stmts(#21071,18,#20001,13,"var nes ... ber } }") +hasLocation(#21071,#20039) +stmtContainers(#21071,#20001) #21072=* -tokeninfo(#21072,7,#20001,169,"never") -hasLocation(#21072,#20330) -#21073=* -tokeninfo(#21073,8,#20001,170,";") -#21074=@"loc,{#10000},30,36,30,36" -locations_default(#21074,#10000,30,36,30,36) -hasLocation(#21073,#21074) +exprs(#21072,64,#21071,0,"nestedO ... ber } }") +#21073=@"loc,{#10000},19,5,19,44" +locations_default(#21073,#10000,19,5,19,44) +hasLocation(#21072,#21073) +enclosingStmt(#21072,#21071) +exprContainers(#21072,#20001) +#21074=* +exprs(#21074,78,#21072,0,"nestedObjectVar") +hasLocation(#21074,#20308) +enclosingStmt(#21074,#21071) +exprContainers(#21074,#20001) +literals("nestedObjectVar","nestedObjectVar",#21074) +decl(#21074,#20939) #21075=* -tokeninfo(#21075,7,#20001,171,"var") -#21076=@"loc,{#10000},31,1,31,3" -locations_default(#21076,#10000,31,1,31,3) +typeexprs(#21075,21,#21072,2,"{ x: { y: number } }") +#21076=@"loc,{#10000},19,25,19,44" +locations_default(#21076,#10000,19,25,19,44) hasLocation(#21075,#21076) +enclosingStmt(#21075,#21071) +exprContainers(#21075,#20001) #21077=* -tokeninfo(#21077,6,#20001,172,"unionVar") -hasLocation(#21077,#20336) -#21078=* -tokeninfo(#21078,8,#20001,173,":") -#21079=@"loc,{#10000},31,13,31,13" -locations_default(#21079,#10000,31,13,31,13) -hasLocation(#21078,#21079) +properties(#21077,#21075,0,8,"x: { y: number }") +#21078=@"loc,{#10000},19,27,19,42" +locations_default(#21078,#10000,19,27,19,42) +hasLocation(#21077,#21078) +#21079=* +exprs(#21079,0,#21077,0,"x") +hasLocation(#21079,#20314) +enclosingStmt(#21079,#21071) +exprContainers(#21079,#20001) +literals("x","x",#21079) +isAbstractMember(#21077) #21080=* -tokeninfo(#21080,7,#20001,174,"number") -hasLocation(#21080,#20340) -#21081=* -tokeninfo(#21081,8,#20001,175,"|") -#21082=@"loc,{#10000},31,32,31,32" -locations_default(#21082,#10000,31,32,31,32) -hasLocation(#21081,#21082) -#21083=* -tokeninfo(#21083,7,#20001,176,"string") -hasLocation(#21083,#20342) +typeexprs(#21080,21,#21077,2,"{ y: number }") +#21081=@"loc,{#10000},19,30,19,42" +locations_default(#21081,#10000,19,30,19,42) +hasLocation(#21080,#21081) +enclosingStmt(#21080,#21071) +exprContainers(#21080,#20001) +#21082=* +properties(#21082,#21080,0,8,"y: number") +#21083=@"loc,{#10000},19,32,19,40" +locations_default(#21083,#10000,19,32,19,40) +hasLocation(#21082,#21083) #21084=* -tokeninfo(#21084,8,#20001,177,";") -#21085=@"loc,{#10000},31,40,31,40" -locations_default(#21085,#10000,31,40,31,40) -hasLocation(#21084,#21085) +exprs(#21084,0,#21082,0,"y") +hasLocation(#21084,#20320) +enclosingStmt(#21084,#21071) +exprContainers(#21084,#20001) +literals("y","y",#21084) +isAbstractMember(#21082) +#21085=* +typeexprs(#21085,2,#21082,2,"number") +hasLocation(#21085,#20324) +enclosingStmt(#21085,#21071) +exprContainers(#21085,#20001) +literals("number","number",#21085) #21086=* -tokeninfo(#21086,7,#20001,178,"var") -#21087=@"loc,{#10000},32,1,32,3" -locations_default(#21087,#10000,32,1,32,3) -hasLocation(#21086,#21087) -#21088=* -tokeninfo(#21088,6,#20001,179,"stringLiteralVar") -hasLocation(#21088,#20348) +stmts(#21086,18,#20001,14,"var arr ... umber[]") +hasLocation(#21086,#20041) +stmtContainers(#21086,#20001) +#21087=* +exprs(#21087,64,#21086,0,"arrayVa ... umber[]") +#21088=@"loc,{#10000},20,5,20,32" +locations_default(#21088,#10000,20,5,20,32) +hasLocation(#21087,#21088) +enclosingStmt(#21087,#21086) +exprContainers(#21087,#20001) #21089=* -tokeninfo(#21089,8,#20001,180,":") -#21090=@"loc,{#10000},32,21,32,21" -locations_default(#21090,#10000,32,21,32,21) -hasLocation(#21089,#21090) -#21091=* -tokeninfo(#21091,4,#20001,181,"""literal""") -hasLocation(#21091,#20350) +exprs(#21089,78,#21087,0,"arrayVar") +hasLocation(#21089,#20332) +enclosingStmt(#21089,#21086) +exprContainers(#21089,#20001) +literals("arrayVar","arrayVar",#21089) +decl(#21089,#20940) +#21090=* +typeexprs(#21090,6,#21087,2,"number[]") +#21091=@"loc,{#10000},20,25,20,32" +locations_default(#21091,#10000,20,25,20,32) +hasLocation(#21090,#21091) +enclosingStmt(#21090,#21086) +exprContainers(#21090,#20001) #21092=* -tokeninfo(#21092,8,#20001,182,";") -#21093=@"loc,{#10000},32,34,32,34" -locations_default(#21093,#10000,32,34,32,34) -hasLocation(#21092,#21093) +typeexprs(#21092,2,#21090,0,"number") +hasLocation(#21092,#20336) +enclosingStmt(#21092,#21086) +exprContainers(#21092,#20001) +literals("number","number",#21092) +#21093=* +stmts(#21093,18,#20001,15,"var str ... String") +hasLocation(#21093,#20043) +stmtContainers(#21093,#20001) #21094=* -tokeninfo(#21094,7,#20001,183,"var") -#21095=@"loc,{#10000},33,1,33,3" -locations_default(#21095,#10000,33,1,33,3) +exprs(#21094,64,#21093,0,"stringO ... String") +#21095=@"loc,{#10000},21,5,21,30" +locations_default(#21095,#10000,21,5,21,30) hasLocation(#21094,#21095) +enclosingStmt(#21094,#21093) +exprContainers(#21094,#20001) #21096=* -tokeninfo(#21096,6,#20001,184,"trueVar") -hasLocation(#21096,#20356) +exprs(#21096,78,#21094,0,"stringObjectVar") +hasLocation(#21096,#20344) +enclosingStmt(#21096,#21093) +exprContainers(#21096,#20001) +literals("stringObjectVar","stringObjectVar",#21096) +decl(#21096,#20941) #21097=* -tokeninfo(#21097,8,#20001,185,":") -#21098=@"loc,{#10000},33,12,33,12" -locations_default(#21098,#10000,33,12,33,12) -hasLocation(#21097,#21098) +typeexprs(#21097,0,#21094,2,"String") +hasLocation(#21097,#20348) +enclosingStmt(#21097,#21093) +exprContainers(#21097,#20001) +literals("String","String",#21097) +#21098=* +stmts(#21098,18,#20001,16,"var poi ... Point") +hasLocation(#21098,#20045) +stmtContainers(#21098,#20001) #21099=* -tokeninfo(#21099,2,#20001,186,"true") -hasLocation(#21099,#20358) -#21100=* -tokeninfo(#21100,8,#20001,187,";") -#21101=@"loc,{#10000},33,29,33,29" -locations_default(#21101,#10000,33,29,33,29) -hasLocation(#21100,#21101) +exprs(#21099,64,#21098,0,"pointVa ... Point") +#21100=@"loc,{#10000},22,5,22,29" +locations_default(#21100,#10000,22,5,22,29) +hasLocation(#21099,#21100) +enclosingStmt(#21099,#21098) +exprContainers(#21099,#20001) +#21101=* +exprs(#21101,78,#21099,0,"pointVar") +hasLocation(#21101,#20352) +enclosingStmt(#21101,#21098) +exprContainers(#21101,#20001) +literals("pointVar","pointVar",#21101) +decl(#21101,#20942) #21102=* -tokeninfo(#21102,7,#20001,188,"var") -#21103=@"loc,{#10000},34,1,34,3" -locations_default(#21103,#10000,34,1,34,3) -hasLocation(#21102,#21103) +typeexprs(#21102,0,#21099,2,"Point") +hasLocation(#21102,#20356) +enclosingStmt(#21102,#21098) +exprContainers(#21102,#20001) +literals("Point","Point",#21102) +typebind(#21102,#20975) +#21103=* +stmts(#21103,18,#20001,17,"var raw ... unction") +hasLocation(#21103,#20047) +stmtContainers(#21103,#20001) #21104=* -tokeninfo(#21104,6,#20001,189,"falseVar") -hasLocation(#21104,#20364) -#21105=* -tokeninfo(#21105,8,#20001,190,":") -#21106=@"loc,{#10000},34,13,34,13" -locations_default(#21106,#10000,34,13,34,13) -hasLocation(#21105,#21106) +exprs(#21104,64,#21103,0,"rawFunc ... unction") +#21105=@"loc,{#10000},23,5,23,32" +locations_default(#21105,#10000,23,5,23,32) +hasLocation(#21104,#21105) +enclosingStmt(#21104,#21103) +exprContainers(#21104,#20001) +#21106=* +exprs(#21106,78,#21104,0,"rawFunctionVar") +hasLocation(#21106,#20360) +enclosingStmt(#21106,#21103) +exprContainers(#21106,#20001) +literals("rawFunctionVar","rawFunctionVar",#21106) +decl(#21106,#20943) #21107=* -tokeninfo(#21107,2,#20001,191,"false") -hasLocation(#21107,#20366) +typeexprs(#21107,0,#21104,2,"Function") +hasLocation(#21107,#20364) +enclosingStmt(#21107,#21103) +exprContainers(#21107,#20001) +literals("Function","Function",#21107) #21108=* -tokeninfo(#21108,8,#20001,192,";") -#21109=@"loc,{#10000},34,30,34,30" -locations_default(#21109,#10000,34,30,34,30) -hasLocation(#21108,#21109) -#21110=* -tokeninfo(#21110,7,#20001,193,"var") -#21111=@"loc,{#10000},35,1,35,3" -locations_default(#21111,#10000,35,1,35,3) -hasLocation(#21110,#21111) +stmts(#21108,18,#20001,18,"var var ... x11") +hasLocation(#21108,#20049) +stmtContainers(#21108,#20001) +#21109=* +exprs(#21109,64,#21108,0,"varVar: ... x11") +#21110=@"loc,{#10000},24,5,24,27" +locations_default(#21110,#10000,24,5,24,27) +hasLocation(#21109,#21110) +enclosingStmt(#21109,#21108) +exprContainers(#21109,#20001) +#21111=* +exprs(#21111,78,#21109,0,"varVar") +hasLocation(#21111,#20368) +enclosingStmt(#21111,#21108) +exprContainers(#21111,#20001) +literals("varVar","varVar",#21111) +decl(#21111,#20944) #21112=* -tokeninfo(#21112,6,#20001,194,"intLiteralVar") +typeexprs(#21112,0,#21109,2,"x11") hasLocation(#21112,#20372) +enclosingStmt(#21112,#21108) +exprContainers(#21112,#20001) +literals("x11","x11",#21112) #21113=* -tokeninfo(#21113,8,#20001,195,":") -#21114=@"loc,{#10000},35,18,35,18" -locations_default(#21114,#10000,35,18,35,18) -hasLocation(#21113,#21114) -#21115=* -tokeninfo(#21115,3,#20001,196,"100") -hasLocation(#21115,#20374) +stmts(#21113,18,#20001,19,"var gen ... number>") +hasLocation(#21113,#20051) +stmtContainers(#21113,#20001) +#21114=* +exprs(#21114,64,#21113,0,"generic ... number>") +#21115=@"loc,{#10000},25,5,25,37" +locations_default(#21115,#10000,25,5,25,37) +hasLocation(#21114,#21115) +enclosingStmt(#21114,#21113) +exprContainers(#21114,#20001) #21116=* -tokeninfo(#21116,8,#20001,197,";") -#21117=@"loc,{#10000},35,28,35,28" -locations_default(#21117,#10000,35,28,35,28) -hasLocation(#21116,#21117) -#21118=* -tokeninfo(#21118,7,#20001,198,"var") -#21119=@"loc,{#10000},36,1,36,3" -locations_default(#21119,#10000,36,1,36,3) -hasLocation(#21118,#21119) +exprs(#21116,78,#21114,0,"genericArrayVar") +hasLocation(#21116,#20376) +enclosingStmt(#21116,#21113) +exprContainers(#21116,#20001) +literals("genericArrayVar","genericArrayVar",#21116) +decl(#21116,#20945) +#21117=* +typeexprs(#21117,14,#21114,2,"Array") +#21118=@"loc,{#10000},25,25,25,37" +locations_default(#21118,#10000,25,25,25,37) +hasLocation(#21117,#21118) +enclosingStmt(#21117,#21113) +exprContainers(#21117,#20001) +#21119=* +typeexprs(#21119,0,#21117,-1,"Array") +hasLocation(#21119,#20380) +enclosingStmt(#21119,#21113) +exprContainers(#21119,#20001) +literals("Array","Array",#21119) #21120=* -tokeninfo(#21120,6,#20001,199,"doubleLiteralVar") -hasLocation(#21120,#20380) +typeexprs(#21120,2,#21117,0,"number") +hasLocation(#21120,#20384) +enclosingStmt(#21120,#21113) +exprContainers(#21120,#20001) +literals("number","number",#21120) #21121=* -tokeninfo(#21121,8,#20001,200,":") -#21122=@"loc,{#10000},36,21,36,21" -locations_default(#21122,#10000,36,21,36,21) -hasLocation(#21121,#21122) -#21123=* -tokeninfo(#21123,3,#20001,201,"100.50") -hasLocation(#21123,#20382) +stmts(#21121,18,#20001,20,"var nes ... umber>>") +hasLocation(#21121,#20053) +stmtContainers(#21121,#20001) +#21122=* +exprs(#21122,64,#21121,0,"nestedG ... umber>>") +#21123=@"loc,{#10000},26,5,26,40" +locations_default(#21123,#10000,26,5,26,40) +hasLocation(#21122,#21123) +enclosingStmt(#21122,#21121) +exprContainers(#21122,#20001) #21124=* -tokeninfo(#21124,8,#20001,202,";") -#21125=@"loc,{#10000},36,31,36,31" -locations_default(#21125,#10000,36,31,36,31) -hasLocation(#21124,#21125) -#21126=* -tokeninfo(#21126,7,#20001,203,"var") -#21127=@"loc,{#10000},37,1,37,3" -locations_default(#21127,#10000,37,1,37,3) -hasLocation(#21126,#21127) +exprs(#21124,78,#21122,0,"nestedGenericVar") +hasLocation(#21124,#20390) +enclosingStmt(#21124,#21121) +exprContainers(#21124,#20001) +literals("nestedGenericVar","nestedGenericVar",#21124) +decl(#21124,#20946) +#21125=* +typeexprs(#21125,14,#21122,2,"Foo>") +#21126=@"loc,{#10000},26,25,26,40" +locations_default(#21126,#10000,26,25,26,40) +hasLocation(#21125,#21126) +enclosingStmt(#21125,#21121) +exprContainers(#21125,#20001) +#21127=* +typeexprs(#21127,0,#21125,-1,"Foo") +hasLocation(#21127,#20394) +enclosingStmt(#21127,#21121) +exprContainers(#21127,#20001) +literals("Foo","Foo",#21127) #21128=* -tokeninfo(#21128,6,#20001,204,"tupleVar") -hasLocation(#21128,#20388) -#21129=* -tokeninfo(#21129,8,#20001,205,":") -#21130=@"loc,{#10000},37,13,37,13" -locations_default(#21130,#10000,37,13,37,13) -hasLocation(#21129,#21130) +typeexprs(#21128,14,#21125,0,"Foo") +#21129=@"loc,{#10000},26,29,26,39" +locations_default(#21129,#10000,26,29,26,39) +hasLocation(#21128,#21129) +enclosingStmt(#21128,#21121) +exprContainers(#21128,#20001) +#21130=* +typeexprs(#21130,0,#21128,-1,"Foo") +hasLocation(#21130,#20398) +enclosingStmt(#21130,#21121) +exprContainers(#21130,#20001) +literals("Foo","Foo",#21130) #21131=* -tokeninfo(#21131,8,#20001,206,"[") -#21132=@"loc,{#10000},37,25,37,25" -locations_default(#21132,#10000,37,25,37,25) -hasLocation(#21131,#21132) +typeexprs(#21131,2,#21128,0,"number") +hasLocation(#21131,#20402) +enclosingStmt(#21131,#21121) +exprContainers(#21131,#20001) +literals("number","number",#21131) +#21132=* +stmts(#21132,18,#20001,21,"var cal ... number;") +hasLocation(#21132,#20055) +stmtContainers(#21132,#20001) #21133=* -tokeninfo(#21133,7,#20001,207,"string") -hasLocation(#21133,#20392) -#21134=* -tokeninfo(#21134,8,#20001,208,",") -#21135=@"loc,{#10000},37,32,37,32" -locations_default(#21135,#10000,37,32,37,32) -hasLocation(#21134,#21135) +exprs(#21133,64,#21132,0,"callSig ... number") +#21134=@"loc,{#10000},27,5,27,36" +locations_default(#21134,#10000,27,5,27,36) +hasLocation(#21133,#21134) +enclosingStmt(#21133,#21132) +exprContainers(#21133,#20001) +#21135=* +exprs(#21135,78,#21133,0,"callSigVar") +hasLocation(#21135,#20410) +enclosingStmt(#21135,#21132) +exprContainers(#21135,#20001) +literals("callSigVar","callSigVar",#21135) +decl(#21135,#20947) #21136=* -tokeninfo(#21136,7,#20001,209,"number") -hasLocation(#21136,#20394) -#21137=* -tokeninfo(#21137,8,#20001,210,"]") -#21138=@"loc,{#10000},37,40,37,40" -locations_default(#21138,#10000,37,40,37,40) -hasLocation(#21137,#21138) +typeexprs(#21136,23,#21133,2,"() => number") +#21137=@"loc,{#10000},27,25,27,36" +locations_default(#21137,#10000,27,25,27,36) +hasLocation(#21136,#21137) +enclosingStmt(#21136,#21132) +exprContainers(#21136,#20001) +#21138=* +exprs(#21138,9,#21136,0,"() => number") +hasLocation(#21138,#21137) +enclosingStmt(#21138,#21132) +exprContainers(#21138,#20001) #21139=* -tokeninfo(#21139,7,#20001,211,"var") -#21140=@"loc,{#10000},38,1,38,3" -locations_default(#21140,#10000,38,1,38,3) -hasLocation(#21139,#21140) +scopes(#21139,1) +scopenodes(#21138,#21139) +scopenesting(#21139,#20000) +#21140=@"var;{arguments};{#21139}" +variables(#21140,"arguments",#21139) +isArgumentsObject(#21140) #21141=* -tokeninfo(#21141,6,#20001,212,"longUnionVar") -hasLocation(#21141,#20400) +typeexprs(#21141,2,#21138,-3,"number") +hasLocation(#21141,#20420) +exprContainers(#21141,#21138) +literals("number","number",#21141) #21142=* -tokeninfo(#21142,8,#20001,213,":") -#21143=@"loc,{#10000},38,17,38,17" -locations_default(#21143,#10000,38,17,38,17) -hasLocation(#21142,#21143) -#21144=* -tokeninfo(#21144,1,#20001,214,"null") -hasLocation(#21144,#20404) +stmts(#21142,18,#20001,22,"var con ... Point;") +hasLocation(#21142,#20057) +stmtContainers(#21142,#20001) +#21143=* +exprs(#21143,64,#21142,0,"constru ... > Point") +#21144=@"loc,{#10000},28,5,28,39" +locations_default(#21144,#10000,28,5,28,39) +hasLocation(#21143,#21144) +enclosingStmt(#21143,#21142) +exprContainers(#21143,#20001) #21145=* -tokeninfo(#21145,8,#20001,215,"|") -#21146=@"loc,{#10000},38,30,38,30" -locations_default(#21146,#10000,38,30,38,30) -hasLocation(#21145,#21146) -#21147=* -tokeninfo(#21147,3,#20001,216,"1") -hasLocation(#21147,#20406) +exprs(#21145,78,#21143,0,"constructSigVar") +hasLocation(#21145,#20426) +enclosingStmt(#21145,#21142) +exprContainers(#21145,#20001) +literals("constructSigVar","constructSigVar",#21145) +decl(#21145,#20948) +#21146=* +typeexprs(#21146,24,#21143,2,"new () => Point") +#21147=@"loc,{#10000},28,25,28,39" +locations_default(#21147,#10000,28,25,28,39) +hasLocation(#21146,#21147) +enclosingStmt(#21146,#21142) +exprContainers(#21146,#20001) #21148=* -tokeninfo(#21148,8,#20001,217,"|") -#21149=@"loc,{#10000},38,34,38,34" -locations_default(#21149,#10000,38,34,38,34) -hasLocation(#21148,#21149) -#21150=* -tokeninfo(#21150,4,#20001,218,"""two""") -hasLocation(#21150,#20408) +exprs(#21148,9,#21146,0,"new () => Point") +hasLocation(#21148,#21147) +enclosingStmt(#21148,#21142) +exprContainers(#21148,#20001) +#21149=* +scopes(#21149,1) +scopenodes(#21148,#21149) +scopenesting(#21149,#20000) +#21150=@"var;{arguments};{#21149}" +variables(#21150,"arguments",#21149) +isArgumentsObject(#21150) #21151=* -tokeninfo(#21151,8,#20001,219,"|") -#21152=@"loc,{#10000},38,42,38,42" -locations_default(#21152,#10000,38,42,38,42) -hasLocation(#21151,#21152) +typeexprs(#21151,0,#21148,-3,"Point") +hasLocation(#21151,#20438) +exprContainers(#21151,#21148) +literals("Point","Point",#21151) +typebind(#21151,#20975) +#21152=* +stmts(#21152,18,#20001,23,"var cal ... > void;") +hasLocation(#21152,#20059) +stmtContainers(#21152,#20001) #21153=* -tokeninfo(#21153,8,#20001,220,"[") -#21154=@"loc,{#10000},38,44,38,44" -locations_default(#21154,#10000,38,44,38,44) +exprs(#21153,64,#21152,0,"callSig ... => void") +#21154=@"loc,{#10000},29,5,29,34" +locations_default(#21154,#10000,29,5,29,34) hasLocation(#21153,#21154) +enclosingStmt(#21153,#21152) +exprContainers(#21153,#20001) #21155=* -tokeninfo(#21155,3,#20001,221,"3") -hasLocation(#21155,#20412) +exprs(#21155,78,#21153,0,"callSigVoidVar") +hasLocation(#21155,#20444) +enclosingStmt(#21155,#21152) +exprContainers(#21155,#20001) +literals("callSigVoidVar","callSigVoidVar",#21155) +decl(#21155,#20949) #21156=* -tokeninfo(#21156,8,#20001,222,"]") -#21157=@"loc,{#10000},38,46,38,46" -locations_default(#21157,#10000,38,46,38,46) +typeexprs(#21156,23,#21153,2,"() => void") +#21157=@"loc,{#10000},29,25,29,34" +locations_default(#21157,#10000,29,25,29,34) hasLocation(#21156,#21157) +enclosingStmt(#21156,#21152) +exprContainers(#21156,#20001) #21158=* -tokeninfo(#21158,7,#20001,223,"var") -#21159=@"loc,{#10000},39,1,39,3" -locations_default(#21159,#10000,39,1,39,3) -hasLocation(#21158,#21159) -#21160=* -tokeninfo(#21160,6,#20001,224,"intersectVar") -hasLocation(#21160,#20418) +exprs(#21158,9,#21156,0,"() => void") +hasLocation(#21158,#21157) +enclosingStmt(#21158,#21152) +exprContainers(#21158,#20001) +#21159=* +scopes(#21159,1) +scopenodes(#21158,#21159) +scopenesting(#21159,#20000) +#21160=@"var;{arguments};{#21159}" +variables(#21160,"arguments",#21159) +isArgumentsObject(#21160) #21161=* -tokeninfo(#21161,8,#20001,225,":") -#21162=@"loc,{#10000},39,17,39,17" -locations_default(#21162,#10000,39,17,39,17) -hasLocation(#21161,#21162) +typeexprs(#21161,2,#21158,-3,"void") +hasLocation(#21161,#20454) +exprContainers(#21161,#21158) +literals("void","void",#21161) +#21162=* +stmts(#21162,18,#20001,24,"var cal ... never;") +hasLocation(#21162,#20061) +stmtContainers(#21162,#20001) #21163=* -tokeninfo(#21163,6,#20001,226,"Foo") -hasLocation(#21163,#20422) -#21164=* -tokeninfo(#21164,8,#20001,227,"&") -#21165=@"loc,{#10000},39,29,39,29" -locations_default(#21165,#10000,39,29,39,29) -hasLocation(#21164,#21165) +exprs(#21163,64,#21162,0,"callSig ... > never") +#21164=@"loc,{#10000},30,5,30,35" +locations_default(#21164,#10000,30,5,30,35) +hasLocation(#21163,#21164) +enclosingStmt(#21163,#21162) +exprContainers(#21163,#20001) +#21165=* +exprs(#21165,78,#21163,0,"callSigNeverVar") +hasLocation(#21165,#20460) +enclosingStmt(#21165,#21162) +exprContainers(#21165,#20001) +literals("callSigNeverVar","callSigNeverVar",#21165) +decl(#21165,#20950) #21166=* -tokeninfo(#21166,6,#20001,228,"Bar") -hasLocation(#21166,#20424) -#21167=* -tokeninfo(#21167,8,#20001,229,";") -#21168=@"loc,{#10000},39,34,39,34" -locations_default(#21168,#10000,39,34,39,34) -hasLocation(#21167,#21168) +typeexprs(#21166,23,#21163,2,"() => never") +#21167=@"loc,{#10000},30,25,30,35" +locations_default(#21167,#10000,30,25,30,35) +hasLocation(#21166,#21167) +enclosingStmt(#21166,#21162) +exprContainers(#21166,#20001) +#21168=* +exprs(#21168,9,#21166,0,"() => never") +hasLocation(#21168,#21167) +enclosingStmt(#21168,#21162) +exprContainers(#21168,#20001) #21169=* -tokeninfo(#21169,7,#20001,230,"var") -#21170=@"loc,{#10000},40,1,40,3" -locations_default(#21170,#10000,40,1,40,3) -hasLocation(#21169,#21170) +scopes(#21169,1) +scopenodes(#21168,#21169) +scopenesting(#21169,#20000) +#21170=@"var;{arguments};{#21169}" +variables(#21170,"arguments",#21169) +isArgumentsObject(#21170) #21171=* -tokeninfo(#21171,6,#20001,231,"genericCallSigVar") -hasLocation(#21171,#20430) +typeexprs(#21171,2,#21168,-3,"never") +hasLocation(#21171,#20470) +exprContainers(#21171,#21168) +literals("never","never",#21171) #21172=* -tokeninfo(#21172,8,#20001,232,":") -#21173=@"loc,{#10000},40,22,40,22" -locations_default(#21173,#10000,40,22,40,22) -hasLocation(#21172,#21173) -#21174=* -tokeninfo(#21174,8,#20001,233,"<") -#21175=@"loc,{#10000},40,25,40,25" -locations_default(#21175,#10000,40,25,40,25) -hasLocation(#21174,#21175) +stmts(#21172,18,#20001,25,"var uni ... string;") +hasLocation(#21172,#20063) +stmtContainers(#21172,#20001) +#21173=* +exprs(#21173,64,#21172,0,"unionVa ... string") +#21174=@"loc,{#10000},31,5,31,39" +locations_default(#21174,#10000,31,5,31,39) +hasLocation(#21173,#21174) +enclosingStmt(#21173,#21172) +exprContainers(#21173,#20001) +#21175=* +exprs(#21175,78,#21173,0,"unionVar") +hasLocation(#21175,#20476) +enclosingStmt(#21175,#21172) +exprContainers(#21175,#20001) +literals("unionVar","unionVar",#21175) +decl(#21175,#20951) #21176=* -tokeninfo(#21176,6,#20001,234,"T") -hasLocation(#21176,#20445) -#21177=* -tokeninfo(#21177,8,#20001,235,">") -#21178=@"loc,{#10000},40,27,40,27" -locations_default(#21178,#10000,40,27,40,27) -hasLocation(#21177,#21178) +typeexprs(#21176,7,#21173,2,"number | string") +#21177=@"loc,{#10000},31,25,31,39" +locations_default(#21177,#10000,31,25,31,39) +hasLocation(#21176,#21177) +enclosingStmt(#21176,#21172) +exprContainers(#21176,#20001) +#21178=* +typeexprs(#21178,2,#21176,0,"number") +hasLocation(#21178,#20480) +enclosingStmt(#21178,#21172) +exprContainers(#21178,#20001) +literals("number","number",#21178) #21179=* -tokeninfo(#21179,8,#20001,236,"(") -#21180=@"loc,{#10000},40,28,40,28" -locations_default(#21180,#10000,40,28,40,28) -hasLocation(#21179,#21180) +typeexprs(#21179,2,#21176,1,"string") +hasLocation(#21179,#20484) +enclosingStmt(#21179,#21172) +exprContainers(#21179,#20001) +literals("string","string",#21179) +#21180=* +stmts(#21180,18,#20001,26,"var str ... teral"";") +hasLocation(#21180,#20065) +stmtContainers(#21180,#20001) #21181=* -tokeninfo(#21181,6,#20001,237,"x") -hasLocation(#21181,#20438) -#21182=* -tokeninfo(#21182,8,#20001,238,":") -#21183=@"loc,{#10000},40,30,40,30" -locations_default(#21183,#10000,40,30,40,30) -hasLocation(#21182,#21183) +exprs(#21181,64,#21180,0,"stringL ... iteral""") +#21182=@"loc,{#10000},32,5,32,33" +locations_default(#21182,#10000,32,5,32,33) +hasLocation(#21181,#21182) +enclosingStmt(#21181,#21180) +exprContainers(#21181,#20001) +#21183=* +exprs(#21183,78,#21181,0,"stringLiteralVar") +hasLocation(#21183,#20490) +enclosingStmt(#21183,#21180) +exprContainers(#21183,#20001) +literals("stringLiteralVar","stringLiteralVar",#21183) +decl(#21183,#20952) #21184=* -tokeninfo(#21184,6,#20001,239,"T") -hasLocation(#21184,#20443) +typeexprs(#21184,3,#21181,2,"""literal""") +hasLocation(#21184,#20494) +enclosingStmt(#21184,#21180) +exprContainers(#21184,#20001) +literals("literal","""literal""",#21184) #21185=* -tokeninfo(#21185,8,#20001,240,")") -#21186=@"loc,{#10000},40,33,40,33" -locations_default(#21186,#10000,40,33,40,33) -hasLocation(#21185,#21186) -#21187=* -tokeninfo(#21187,8,#20001,241,"=>") -#21188=@"loc,{#10000},40,35,40,36" -locations_default(#21188,#10000,40,35,40,36) -hasLocation(#21187,#21188) +stmts(#21185,18,#20001,27,"var tru ... true;") +hasLocation(#21185,#20067) +stmtContainers(#21185,#20001) +#21186=* +exprs(#21186,64,#21185,0,"trueVar ... true") +#21187=@"loc,{#10000},33,5,33,28" +locations_default(#21187,#10000,33,5,33,28) +hasLocation(#21186,#21187) +enclosingStmt(#21186,#21185) +exprContainers(#21186,#20001) +#21188=* +exprs(#21188,78,#21186,0,"trueVar") +hasLocation(#21188,#20500) +enclosingStmt(#21188,#21185) +exprContainers(#21188,#20001) +literals("trueVar","trueVar",#21188) +decl(#21188,#20953) #21189=* -tokeninfo(#21189,6,#20001,242,"T") -hasLocation(#21189,#20441) +typeexprs(#21189,5,#21186,2,"true") +hasLocation(#21189,#20504) +enclosingStmt(#21189,#21185) +exprContainers(#21189,#20001) +literals("true","true",#21189) #21190=* -tokeninfo(#21190,8,#20001,243,";") -#21191=@"loc,{#10000},40,39,40,39" -locations_default(#21191,#10000,40,39,40,39) -hasLocation(#21190,#21191) -#21192=* -tokeninfo(#21192,7,#20001,244,"var") -#21193=@"loc,{#10000},41,1,41,3" -locations_default(#21193,#10000,41,1,41,3) -hasLocation(#21192,#21193) +stmts(#21190,18,#20001,28,"var fal ... false;") +hasLocation(#21190,#20069) +stmtContainers(#21190,#20001) +#21191=* +exprs(#21191,64,#21190,0,"falseVa ... false") +#21192=@"loc,{#10000},34,5,34,29" +locations_default(#21192,#10000,34,5,34,29) +hasLocation(#21191,#21192) +enclosingStmt(#21191,#21190) +exprContainers(#21191,#20001) +#21193=* +exprs(#21193,78,#21191,0,"falseVar") +hasLocation(#21193,#20510) +enclosingStmt(#21193,#21190) +exprContainers(#21193,#20001) +literals("falseVar","falseVar",#21193) +decl(#21193,#20954) #21194=* -tokeninfo(#21194,6,#20001,245,"genericConstructSigVar") -hasLocation(#21194,#20452) +typeexprs(#21194,5,#21191,2,"false") +hasLocation(#21194,#20514) +enclosingStmt(#21194,#21190) +exprContainers(#21194,#20001) +literals("false","false",#21194) #21195=* -tokeninfo(#21195,8,#20001,246,":") -#21196=@"loc,{#10000},41,27,41,27" -locations_default(#21196,#10000,41,27,41,27) -hasLocation(#21195,#21196) -#21197=* -tokeninfo(#21197,7,#20001,247,"new") -#21198=@"loc,{#10000},41,29,41,31" -locations_default(#21198,#10000,41,29,41,31) -hasLocation(#21197,#21198) +stmts(#21195,18,#20001,29,"var int ... 100;") +hasLocation(#21195,#20071) +stmtContainers(#21195,#20001) +#21196=* +exprs(#21196,64,#21195,0,"intLite ... 100") +#21197=@"loc,{#10000},35,5,35,27" +locations_default(#21197,#10000,35,5,35,27) +hasLocation(#21196,#21197) +enclosingStmt(#21196,#21195) +exprContainers(#21196,#20001) +#21198=* +exprs(#21198,78,#21196,0,"intLiteralVar") +hasLocation(#21198,#20520) +enclosingStmt(#21198,#21195) +exprContainers(#21198,#20001) +literals("intLiteralVar","intLiteralVar",#21198) +decl(#21198,#20955) #21199=* -tokeninfo(#21199,8,#20001,248,"<") -#21200=@"loc,{#10000},41,33,41,33" -locations_default(#21200,#10000,41,33,41,33) -hasLocation(#21199,#21200) +typeexprs(#21199,4,#21196,2,"100") +hasLocation(#21199,#20524) +enclosingStmt(#21199,#21195) +exprContainers(#21199,#20001) +literals("100","100",#21199) +#21200=* +stmts(#21200,18,#20001,30,"var dou ... 100.50;") +hasLocation(#21200,#20073) +stmtContainers(#21200,#20001) #21201=* -tokeninfo(#21201,6,#20001,249,"T") -hasLocation(#21201,#20467) -#21202=* -tokeninfo(#21202,8,#20001,250,">") -#21203=@"loc,{#10000},41,35,41,35" -locations_default(#21203,#10000,41,35,41,35) -hasLocation(#21202,#21203) +exprs(#21201,64,#21200,0,"doubleL ... 100.50") +#21202=@"loc,{#10000},36,5,36,30" +locations_default(#21202,#10000,36,5,36,30) +hasLocation(#21201,#21202) +enclosingStmt(#21201,#21200) +exprContainers(#21201,#20001) +#21203=* +exprs(#21203,78,#21201,0,"doubleLiteralVar") +hasLocation(#21203,#20530) +enclosingStmt(#21203,#21200) +exprContainers(#21203,#20001) +literals("doubleLiteralVar","doubleLiteralVar",#21203) +decl(#21203,#20956) #21204=* -tokeninfo(#21204,8,#20001,251,"(") -#21205=@"loc,{#10000},41,36,41,36" -locations_default(#21205,#10000,41,36,41,36) -hasLocation(#21204,#21205) +typeexprs(#21204,4,#21201,2,"100.50") +hasLocation(#21204,#20534) +enclosingStmt(#21204,#21200) +exprContainers(#21204,#20001) +literals("100.5","100.50",#21204) +#21205=* +stmts(#21205,18,#20001,31,"var tup ... number]") +hasLocation(#21205,#20075) +stmtContainers(#21205,#20001) #21206=* -tokeninfo(#21206,6,#20001,252,"x") -hasLocation(#21206,#20460) -#21207=* -tokeninfo(#21207,8,#20001,253,":") -#21208=@"loc,{#10000},41,38,41,38" -locations_default(#21208,#10000,41,38,41,38) -hasLocation(#21207,#21208) +exprs(#21206,64,#21205,0,"tupleVa ... number]") +#21207=@"loc,{#10000},37,5,37,40" +locations_default(#21207,#10000,37,5,37,40) +hasLocation(#21206,#21207) +enclosingStmt(#21206,#21205) +exprContainers(#21206,#20001) +#21208=* +exprs(#21208,78,#21206,0,"tupleVar") +hasLocation(#21208,#20540) +enclosingStmt(#21208,#21205) +exprContainers(#21208,#20001) +literals("tupleVar","tupleVar",#21208) +decl(#21208,#20957) #21209=* -tokeninfo(#21209,6,#20001,254,"T") -hasLocation(#21209,#20465) -#21210=* -tokeninfo(#21210,8,#20001,255,")") -#21211=@"loc,{#10000},41,41,41,41" -locations_default(#21211,#10000,41,41,41,41) -hasLocation(#21210,#21211) +typeexprs(#21209,11,#21206,2,"[string, number]") +#21210=@"loc,{#10000},37,25,37,40" +locations_default(#21210,#10000,37,25,37,40) +hasLocation(#21209,#21210) +enclosingStmt(#21209,#21205) +exprContainers(#21209,#20001) +#21211=* +typeexprs(#21211,2,#21209,0,"string") +hasLocation(#21211,#20546) +enclosingStmt(#21211,#21205) +exprContainers(#21211,#20001) +literals("string","string",#21211) #21212=* -tokeninfo(#21212,8,#20001,256,"=>") -#21213=@"loc,{#10000},41,43,41,44" -locations_default(#21213,#10000,41,43,41,44) -hasLocation(#21212,#21213) +typeexprs(#21212,2,#21209,1,"number") +hasLocation(#21212,#20550) +enclosingStmt(#21212,#21205) +exprContainers(#21212,#20001) +literals("number","number",#21212) +#21213=* +stmts(#21213,18,#20001,32,"var lon ... "" | [3]") +hasLocation(#21213,#20077) +stmtContainers(#21213,#20001) #21214=* -tokeninfo(#21214,6,#20001,257,"T") -hasLocation(#21214,#20463) -#21215=* -tokeninfo(#21215,8,#20001,258,";") -#21216=@"loc,{#10000},41,47,41,47" -locations_default(#21216,#10000,41,47,41,47) -hasLocation(#21215,#21216) +exprs(#21214,64,#21213,0,"longUni ... "" | [3]") +#21215=@"loc,{#10000},38,5,38,46" +locations_default(#21215,#10000,38,5,38,46) +hasLocation(#21214,#21215) +enclosingStmt(#21214,#21213) +exprContainers(#21214,#20001) +#21216=* +exprs(#21216,78,#21214,0,"longUnionVar") +hasLocation(#21216,#20556) +enclosingStmt(#21216,#21213) +exprContainers(#21216,#20001) +literals("longUnionVar","longUnionVar",#21216) +decl(#21216,#20958) #21217=* -tokeninfo(#21217,7,#20001,259,"var") -#21218=@"loc,{#10000},42,1,42,3" -locations_default(#21218,#10000,42,1,42,3) +typeexprs(#21217,7,#21214,2,"null | ... "" | [3]") +#21218=@"loc,{#10000},38,25,38,46" +locations_default(#21218,#10000,38,25,38,46) hasLocation(#21217,#21218) +enclosingStmt(#21217,#21213) +exprContainers(#21217,#20001) #21219=* -tokeninfo(#21219,6,#20001,260,"keyofVar") -hasLocation(#21219,#20474) +typeexprs(#21219,2,#21217,0,"null") +hasLocation(#21219,#20560) +enclosingStmt(#21219,#21213) +exprContainers(#21219,#20001) +literals("null","null",#21219) #21220=* -tokeninfo(#21220,8,#20001,261,":") -#21221=@"loc,{#10000},42,13,42,13" -locations_default(#21221,#10000,42,13,42,13) -hasLocation(#21220,#21221) +typeexprs(#21220,4,#21217,1,"1") +hasLocation(#21220,#20564) +enclosingStmt(#21220,#21213) +exprContainers(#21220,#20001) +literals("1","1",#21220) +#21221=* +typeexprs(#21221,3,#21217,2,"""two""") +hasLocation(#21221,#20568) +enclosingStmt(#21221,#21213) +exprContainers(#21221,#20001) +literals("two","""two""",#21221) #21222=* -tokeninfo(#21222,7,#20001,262,"keyof") -#21223=@"loc,{#10000},42,25,42,29" -locations_default(#21223,#10000,42,25,42,29) +typeexprs(#21222,11,#21217,3,"[3]") +#21223=@"loc,{#10000},38,44,38,46" +locations_default(#21223,#10000,38,44,38,46) hasLocation(#21222,#21223) +enclosingStmt(#21222,#21213) +exprContainers(#21222,#20001) #21224=* -tokeninfo(#21224,6,#20001,263,"Point") -hasLocation(#21224,#20478) +typeexprs(#21224,4,#21222,0,"3") +hasLocation(#21224,#20574) +enclosingStmt(#21224,#21213) +exprContainers(#21224,#20001) +literals("3","3",#21224) #21225=* -tokeninfo(#21225,7,#20001,264,"var") -#21226=@"loc,{#10000},43,1,43,3" -locations_default(#21226,#10000,43,1,43,3) -hasLocation(#21225,#21226) -#21227=* -tokeninfo(#21227,6,#20001,265,"indexedVar") -hasLocation(#21227,#20484) +stmts(#21225,18,#20001,33,"var int ... & Bar;") +hasLocation(#21225,#20079) +stmtContainers(#21225,#20001) +#21226=* +exprs(#21226,64,#21225,0,"interse ... o & Bar") +#21227=@"loc,{#10000},39,5,39,33" +locations_default(#21227,#10000,39,5,39,33) +hasLocation(#21226,#21227) +enclosingStmt(#21226,#21225) +exprContainers(#21226,#20001) #21228=* -tokeninfo(#21228,8,#20001,266,":") -#21229=@"loc,{#10000},43,15,43,15" -locations_default(#21229,#10000,43,15,43,15) -hasLocation(#21228,#21229) -#21230=* -tokeninfo(#21230,6,#20001,267,"Point") -hasLocation(#21230,#20488) +exprs(#21228,78,#21226,0,"intersectVar") +hasLocation(#21228,#20580) +enclosingStmt(#21228,#21225) +exprContainers(#21228,#20001) +literals("intersectVar","intersectVar",#21228) +decl(#21228,#20959) +#21229=* +typeexprs(#21229,9,#21226,2,"Foo & Bar") +#21230=@"loc,{#10000},39,25,39,33" +locations_default(#21230,#10000,39,25,39,33) +hasLocation(#21229,#21230) +enclosingStmt(#21229,#21225) +exprContainers(#21229,#20001) #21231=* -tokeninfo(#21231,8,#20001,268,"[") -#21232=@"loc,{#10000},43,30,43,30" -locations_default(#21232,#10000,43,30,43,30) -hasLocation(#21231,#21232) +typeexprs(#21231,0,#21229,0,"Foo") +hasLocation(#21231,#20584) +enclosingStmt(#21231,#21225) +exprContainers(#21231,#20001) +literals("Foo","Foo",#21231) +#21232=* +typeexprs(#21232,0,#21229,1,"Bar") +hasLocation(#21232,#20588) +enclosingStmt(#21232,#21225) +exprContainers(#21232,#20001) +literals("Bar","Bar",#21232) #21233=* -tokeninfo(#21233,4,#20001,269,"""x""") -hasLocation(#21233,#20490) +stmts(#21233,18,#20001,34,"var gen ... ) => T;") +hasLocation(#21233,#20081) +stmtContainers(#21233,#20001) #21234=* -tokeninfo(#21234,8,#20001,270,"]") -#21235=@"loc,{#10000},43,34,43,34" -locations_default(#21235,#10000,43,34,43,34) +exprs(#21234,64,#21233,0,"generic ... T) => T") +#21235=@"loc,{#10000},40,5,40,38" +locations_default(#21235,#10000,40,5,40,38) hasLocation(#21234,#21235) +enclosingStmt(#21234,#21233) +exprContainers(#21234,#20001) #21236=* -tokeninfo(#21236,7,#20001,271,"var") -#21237=@"loc,{#10000},44,1,44,3" -locations_default(#21237,#10000,44,1,44,3) -hasLocation(#21236,#21237) -#21238=* -tokeninfo(#21238,6,#20001,272,"typeofVar") -hasLocation(#21238,#20496) +exprs(#21236,78,#21234,0,"genericCallSigVar") +hasLocation(#21236,#20594) +enclosingStmt(#21236,#21233) +exprContainers(#21236,#20001) +literals("genericCallSigVar","genericCallSigVar",#21236) +decl(#21236,#20960) +#21237=* +typeexprs(#21237,23,#21234,2,"(x: T) => T") +#21238=@"loc,{#10000},40,25,40,38" +locations_default(#21238,#10000,40,25,40,38) +hasLocation(#21237,#21238) +enclosingStmt(#21237,#21233) +exprContainers(#21237,#20001) #21239=* -tokeninfo(#21239,8,#20001,273,":") -#21240=@"loc,{#10000},44,14,44,14" -locations_default(#21240,#10000,44,14,44,14) -hasLocation(#21239,#21240) -#21241=* -tokeninfo(#21241,7,#20001,274,"typeof") -#21242=@"loc,{#10000},44,25,44,30" -locations_default(#21242,#10000,44,25,44,30) -hasLocation(#21241,#21242) +exprs(#21239,9,#21237,0,"(x: T) => T") +hasLocation(#21239,#21238) +enclosingStmt(#21239,#21233) +exprContainers(#21239,#20001) +#21240=* +scopes(#21240,1) +scopenodes(#21239,#21240) +scopenesting(#21240,#20000) +#21241=@"local_type_name;{T};{#21240}" +local_type_names(#21241,"T",#21240) +#21242=@"var;{x};{#21240}" +variables(#21242,"x",#21240) #21243=* -tokeninfo(#21243,6,#20001,275,"x31") -hasLocation(#21243,#20500) -#21244=* -tokeninfo(#21244,7,#20001,276,"var") -#21245=@"loc,{#10000},45,1,45,3" -locations_default(#21245,#10000,45,1,45,3) -hasLocation(#21244,#21245) +exprs(#21243,78,#21239,0,"x") +hasLocation(#21243,#20606) +exprContainers(#21243,#21239) +literals("x","x",#21243) +decl(#21243,#21242) +#21244=@"var;{arguments};{#21240}" +variables(#21244,"arguments",#21240) +isArgumentsObject(#21244) +#21245=* +typeexprs(#21245,0,#21239,-3,"T") +hasLocation(#21245,#20616) +exprContainers(#21245,#21239) +literals("T","T",#21245) +typebind(#21245,#21241) #21246=* -tokeninfo(#21246,6,#20001,277,"mappedVar") -hasLocation(#21246,#20507) +typeexprs(#21246,0,#21239,-6,"T") +hasLocation(#21246,#20610) +exprContainers(#21246,#21239) +literals("T","T",#21246) +typebind(#21246,#21241) #21247=* -tokeninfo(#21247,8,#20001,278,":") -#21248=@"loc,{#10000},45,14,45,14" -locations_default(#21248,#10000,45,14,45,14) -hasLocation(#21247,#21248) +typeexprs(#21247,22,#21239,-7,"T") +hasLocation(#21247,#20600) +exprContainers(#21247,#21239) +#21248=* +typeexprs(#21248,1,#21247,0,"T") +hasLocation(#21248,#20600) +exprContainers(#21248,#21239) +literals("T","T",#21248) +typedecl(#21248,#21241) #21249=* -tokeninfo(#21249,8,#20001,279,"{") -#21250=@"loc,{#10000},45,25,45,25" -locations_default(#21250,#10000,45,25,45,25) -hasLocation(#21249,#21250) -#21251=* -tokeninfo(#21251,8,#20001,280,"[") -#21252=@"loc,{#10000},45,27,45,27" -locations_default(#21252,#10000,45,27,45,27) -hasLocation(#21251,#21252) +stmts(#21249,18,#20001,35,"var gen ... ) => T;") +hasLocation(#21249,#20083) +stmtContainers(#21249,#20001) +#21250=* +exprs(#21250,64,#21249,0,"generic ... T) => T") +#21251=@"loc,{#10000},41,5,41,46" +locations_default(#21251,#10000,41,5,41,46) +hasLocation(#21250,#21251) +enclosingStmt(#21250,#21249) +exprContainers(#21250,#20001) +#21252=* +exprs(#21252,78,#21250,0,"generic ... tSigVar") +hasLocation(#21252,#20622) +enclosingStmt(#21252,#21249) +exprContainers(#21252,#20001) +literals("genericConstructSigVar","genericConstructSigVar",#21252) +decl(#21252,#20961) #21253=* -tokeninfo(#21253,6,#20001,281,"K") -hasLocation(#21253,#20515) -#21254=* -tokeninfo(#21254,7,#20001,282,"in") -#21255=@"loc,{#10000},45,30,45,31" -locations_default(#21255,#10000,45,30,45,31) -hasLocation(#21254,#21255) +typeexprs(#21253,24,#21250,2,"new (x: T) => T") +#21254=@"loc,{#10000},41,29,41,46" +locations_default(#21254,#10000,41,29,41,46) +hasLocation(#21253,#21254) +enclosingStmt(#21253,#21249) +exprContainers(#21253,#20001) +#21255=* +exprs(#21255,9,#21253,0,"new (x: T) => T") +hasLocation(#21255,#21254) +enclosingStmt(#21255,#21249) +exprContainers(#21255,#20001) #21256=* -tokeninfo(#21256,7,#20001,283,"keyof") -#21257=@"loc,{#10000},45,33,45,37" -locations_default(#21257,#10000,45,33,45,37) -hasLocation(#21256,#21257) -#21258=* -tokeninfo(#21258,6,#20001,284,"Point") -hasLocation(#21258,#20519) +scopes(#21256,1) +scopenodes(#21255,#21256) +scopenesting(#21256,#20000) +#21257=@"local_type_name;{T};{#21256}" +local_type_names(#21257,"T",#21256) +#21258=@"var;{x};{#21256}" +variables(#21258,"x",#21256) #21259=* -tokeninfo(#21259,8,#20001,285,"]") -#21260=@"loc,{#10000},45,44,45,44" -locations_default(#21260,#10000,45,44,45,44) -hasLocation(#21259,#21260) +exprs(#21259,78,#21255,0,"x") +hasLocation(#21259,#20636) +exprContainers(#21259,#21255) +literals("x","x",#21259) +decl(#21259,#21258) +#21260=@"var;{arguments};{#21256}" +variables(#21260,"arguments",#21256) +isArgumentsObject(#21260) #21261=* -tokeninfo(#21261,8,#20001,286,":") -#21262=@"loc,{#10000},45,45,45,45" -locations_default(#21262,#10000,45,45,45,45) -hasLocation(#21261,#21262) +typeexprs(#21261,0,#21255,-3,"T") +hasLocation(#21261,#20646) +exprContainers(#21261,#21255) +literals("T","T",#21261) +typebind(#21261,#21257) +#21262=* +typeexprs(#21262,0,#21255,-6,"T") +hasLocation(#21262,#20640) +exprContainers(#21262,#21255) +literals("T","T",#21262) +typebind(#21262,#21257) #21263=* -tokeninfo(#21263,7,#20001,287,"any") -hasLocation(#21263,#20521) +typeexprs(#21263,22,#21255,-7,"T") +hasLocation(#21263,#20630) +exprContainers(#21263,#21255) #21264=* -tokeninfo(#21264,8,#20001,288,"}") -#21265=@"loc,{#10000},45,51,45,51" -locations_default(#21265,#10000,45,51,45,51) -hasLocation(#21264,#21265) +typeexprs(#21264,1,#21263,0,"T") +hasLocation(#21264,#20630) +exprContainers(#21264,#21255) +literals("T","T",#21264) +typedecl(#21264,#21257) +#21265=* +stmts(#21265,18,#20001,36,"var key ... f Point") +hasLocation(#21265,#20085) +stmtContainers(#21265,#20001) #21266=* -tokeninfo(#21266,7,#20001,289,"var") -#21267=@"loc,{#10000},46,1,46,3" -locations_default(#21267,#10000,46,1,46,3) +exprs(#21266,64,#21265,0,"keyofVa ... f Point") +#21267=@"loc,{#10000},42,5,42,35" +locations_default(#21267,#10000,42,5,42,35) hasLocation(#21266,#21267) +enclosingStmt(#21266,#21265) +exprContainers(#21266,#20001) #21268=* -tokeninfo(#21268,6,#20001,290,"parenthesizedVar") -hasLocation(#21268,#20527) +exprs(#21268,78,#21266,0,"keyofVar") +hasLocation(#21268,#20652) +enclosingStmt(#21268,#21265) +exprContainers(#21268,#20001) +literals("keyofVar","keyofVar",#21268) +decl(#21268,#20962) #21269=* -tokeninfo(#21269,8,#20001,291,":") -#21270=@"loc,{#10000},46,21,46,21" -locations_default(#21270,#10000,46,21,46,21) +typeexprs(#21269,12,#21266,2,"keyof Point") +#21270=@"loc,{#10000},42,25,42,35" +locations_default(#21270,#10000,42,25,42,35) hasLocation(#21269,#21270) +enclosingStmt(#21269,#21265) +exprContainers(#21269,#20001) #21271=* -tokeninfo(#21271,8,#20001,292,"(") -#21272=@"loc,{#10000},46,25,46,25" -locations_default(#21272,#10000,46,25,46,25) -hasLocation(#21271,#21272) +typeexprs(#21271,0,#21269,0,"Point") +hasLocation(#21271,#20658) +enclosingStmt(#21271,#21265) +exprContainers(#21271,#20001) +literals("Point","Point",#21271) +typebind(#21271,#20975) +#21272=* +stmts(#21272,18,#20001,37,"var ind ... nt[""x""]") +hasLocation(#21272,#20087) +stmtContainers(#21272,#20001) #21273=* -tokeninfo(#21273,7,#20001,293,"number") -hasLocation(#21273,#20531) -#21274=* -tokeninfo(#21274,8,#20001,294,")") -#21275=@"loc,{#10000},46,32,46,32" -locations_default(#21275,#10000,46,32,46,32) -hasLocation(#21274,#21275) +exprs(#21273,64,#21272,0,"indexed ... nt[""x""]") +#21274=@"loc,{#10000},43,5,43,34" +locations_default(#21274,#10000,43,5,43,34) +hasLocation(#21273,#21274) +enclosingStmt(#21273,#21272) +exprContainers(#21273,#20001) +#21275=* +exprs(#21275,78,#21273,0,"indexedVar") +hasLocation(#21275,#20662) +enclosingStmt(#21275,#21272) +exprContainers(#21275,#20001) +literals("indexedVar","indexedVar",#21275) +decl(#21275,#20963) #21276=* -tokeninfo(#21276,8,#20001,295,";") -#21277=@"loc,{#10000},46,33,46,33" -locations_default(#21277,#10000,46,33,46,33) +typeexprs(#21276,8,#21273,2,"Point[""x""]") +#21277=@"loc,{#10000},43,25,43,34" +locations_default(#21277,#10000,43,25,43,34) hasLocation(#21276,#21277) +enclosingStmt(#21276,#21272) +exprContainers(#21276,#20001) #21278=* -tokeninfo(#21278,7,#20001,296,"var") -#21279=@"loc,{#10000},47,1,47,3" -locations_default(#21279,#10000,47,1,47,3) -hasLocation(#21278,#21279) +typeexprs(#21278,0,#21276,0,"Point") +hasLocation(#21278,#20666) +enclosingStmt(#21278,#21272) +exprContainers(#21278,#20001) +literals("Point","Point",#21278) +typebind(#21278,#20975) +#21279=* +typeexprs(#21279,3,#21276,1,"""x""") +hasLocation(#21279,#20670) +enclosingStmt(#21279,#21272) +exprContainers(#21279,#20001) +literals("x","""x""",#21279) #21280=* -tokeninfo(#21280,6,#20001,297,"namespaceTypeVar") -hasLocation(#21280,#20537) +stmts(#21280,18,#20001,38,"var typ ... eof x31") +hasLocation(#21280,#20089) +stmtContainers(#21280,#20001) #21281=* -tokeninfo(#21281,8,#20001,298,":") -#21282=@"loc,{#10000},47,21,47,21" -locations_default(#21282,#10000,47,21,47,21) +exprs(#21281,64,#21280,0,"typeofV ... eof x31") +#21282=@"loc,{#10000},44,5,44,34" +locations_default(#21282,#10000,44,5,44,34) hasLocation(#21281,#21282) +enclosingStmt(#21281,#21280) +exprContainers(#21281,#20001) #21283=* -tokeninfo(#21283,6,#20001,299,"N") -hasLocation(#21283,#20541) +exprs(#21283,78,#21281,0,"typeofVar") +hasLocation(#21283,#20676) +enclosingStmt(#21283,#21280) +exprContainers(#21283,#20001) +literals("typeofVar","typeofVar",#21283) +decl(#21283,#20964) #21284=* -tokeninfo(#21284,8,#20001,300,".") -#21285=@"loc,{#10000},47,26,47,26" -locations_default(#21285,#10000,47,26,47,26) +typeexprs(#21284,16,#21281,2,"typeof x31") +#21285=@"loc,{#10000},44,25,44,34" +locations_default(#21285,#10000,44,25,44,34) hasLocation(#21284,#21285) +enclosingStmt(#21284,#21280) +exprContainers(#21284,#20001) #21286=* -tokeninfo(#21286,6,#20001,301,"I") -hasLocation(#21286,#20543) -#21287=* -tokeninfo(#21287,8,#20001,302,";") -#21288=@"loc,{#10000},47,28,47,28" -locations_default(#21288,#10000,47,28,47,28) -hasLocation(#21287,#21288) +typeexprs(#21286,17,#21284,0,"x31") +hasLocation(#21286,#20682) +enclosingStmt(#21286,#21280) +exprContainers(#21286,#20001) +literals("x31","x31",#21286) +#21287=@"var;{x31};{#20000}" +variables(#21287,"x31",#20000) +bind(#21286,#21287) +#21288=* +stmts(#21288,18,#20001,39,"var map ... : any }") +hasLocation(#21288,#20091) +stmtContainers(#21288,#20001) #21289=* -tokeninfo(#21289,7,#20001,303,"var") -#21290=@"loc,{#10000},48,1,48,3" -locations_default(#21290,#10000,48,1,48,3) +exprs(#21289,64,#21288,0,"mappedV ... : any }") +#21290=@"loc,{#10000},45,5,45,51" +locations_default(#21290,#10000,45,5,45,51) hasLocation(#21289,#21290) +enclosingStmt(#21289,#21288) +exprContainers(#21289,#20001) #21291=* -tokeninfo(#21291,6,#20001,304,"namespaceGenericTypeVar") -hasLocation(#21291,#20549) +exprs(#21291,78,#21289,0,"mappedVar") +hasLocation(#21291,#20686) +enclosingStmt(#21291,#21288) +exprContainers(#21291,#20001) +literals("mappedVar","mappedVar",#21291) +decl(#21291,#20965) #21292=* -tokeninfo(#21292,8,#20001,305,":") -#21293=@"loc,{#10000},48,28,48,28" -locations_default(#21293,#10000,48,28,48,28) +typeexprs(#21292,27,#21289,2,"{ [K in ... : any }") +#21293=@"loc,{#10000},45,25,45,51" +locations_default(#21293,#10000,45,25,45,51) hasLocation(#21292,#21293) +enclosingStmt(#21292,#21288) +exprContainers(#21292,#20001) #21294=* -tokeninfo(#21294,6,#20001,306,"N") -hasLocation(#21294,#20555) -#21295=* -tokeninfo(#21295,8,#20001,307,".") -#21296=@"loc,{#10000},48,31,48,31" -locations_default(#21296,#10000,48,31,48,31) -hasLocation(#21295,#21296) -#21297=* -tokeninfo(#21297,6,#20001,308,"J") -hasLocation(#21297,#20557) +scopes(#21294,13) +scopenodes(#21292,#21294) +scopenesting(#21294,#20000) +#21295=@"local_type_name;{K};{#21294}" +local_type_names(#21295,"K",#21294) +#21296=* +typeexprs(#21296,22,#21292,0,"K in keyof Point") +#21297=@"loc,{#10000},45,28,45,43" +locations_default(#21297,#10000,45,28,45,43) +hasLocation(#21296,#21297) +enclosingStmt(#21296,#21288) +exprContainers(#21296,#20001) #21298=* -tokeninfo(#21298,8,#20001,309,"<") -#21299=@"loc,{#10000},48,33,48,33" -locations_default(#21299,#10000,48,33,48,33) -hasLocation(#21298,#21299) -#21300=* -tokeninfo(#21300,7,#20001,310,"number") -hasLocation(#21300,#20559) +typeexprs(#21298,1,#21296,0,"K") +hasLocation(#21298,#20694) +enclosingStmt(#21298,#21288) +exprContainers(#21298,#20001) +literals("K","K",#21298) +typedecl(#21298,#21295) +#21299=* +typeexprs(#21299,12,#21296,1,"keyof Point") +#21300=@"loc,{#10000},45,33,45,43" +locations_default(#21300,#10000,45,33,45,43) +hasLocation(#21299,#21300) +enclosingStmt(#21299,#21288) +exprContainers(#21299,#20001) #21301=* -tokeninfo(#21301,8,#20001,311,">") -#21302=@"loc,{#10000},48,40,48,40" -locations_default(#21302,#10000,48,40,48,40) -hasLocation(#21301,#21302) +typeexprs(#21301,0,#21299,0,"Point") +hasLocation(#21301,#20700) +enclosingStmt(#21301,#21288) +exprContainers(#21301,#20001) +literals("Point","Point",#21301) +typebind(#21301,#20975) +#21302=* +typeexprs(#21302,2,#21292,1,"any") +hasLocation(#21302,#20706) +enclosingStmt(#21302,#21288) +exprContainers(#21302,#20001) +literals("any","any",#21302) #21303=* -tokeninfo(#21303,8,#20001,312,";") -#21304=@"loc,{#10000},48,41,48,41" -locations_default(#21304,#10000,48,41,48,41) -hasLocation(#21303,#21304) -#21305=* -tokeninfo(#21305,7,#20001,313,"interface") -#21306=@"loc,{#10000},50,1,50,9" -locations_default(#21306,#10000,50,1,50,9) -hasLocation(#21305,#21306) +stmts(#21303,18,#20001,40,"var par ... umber);") +hasLocation(#21303,#20093) +stmtContainers(#21303,#20001) +#21304=* +exprs(#21304,64,#21303,0,"parenth ... number)") +#21305=@"loc,{#10000},46,5,46,32" +locations_default(#21305,#10000,46,5,46,32) +hasLocation(#21304,#21305) +enclosingStmt(#21304,#21303) +exprContainers(#21304,#20001) +#21306=* +exprs(#21306,78,#21304,0,"parenthesizedVar") +hasLocation(#21306,#20712) +enclosingStmt(#21306,#21303) +exprContainers(#21306,#20001) +literals("parenthesizedVar","parenthesizedVar",#21306) +decl(#21306,#20966) #21307=* -tokeninfo(#21307,6,#20001,314,"GenericInterface") -hasLocation(#21307,#20568) -#21308=* -tokeninfo(#21308,8,#20001,315,"<") -#21309=@"loc,{#10000},50,27,50,27" -locations_default(#21309,#10000,50,27,50,27) -hasLocation(#21308,#21309) +typeexprs(#21307,10,#21304,2,"(number)") +#21308=@"loc,{#10000},46,25,46,32" +locations_default(#21308,#10000,46,25,46,32) +hasLocation(#21307,#21308) +enclosingStmt(#21307,#21303) +exprContainers(#21307,#20001) +#21309=* +typeexprs(#21309,2,#21307,0,"number") +hasLocation(#21309,#20718) +enclosingStmt(#21309,#21303) +exprContainers(#21309,#20001) +literals("number","number",#21309) #21310=* -tokeninfo(#21310,6,#20001,316,"T") -hasLocation(#21310,#20565) +stmts(#21310,18,#20001,41,"var nam ... N.I;") +hasLocation(#21310,#20095) +stmtContainers(#21310,#20001) #21311=* -tokeninfo(#21311,8,#20001,317,">") -#21312=@"loc,{#10000},50,29,50,29" -locations_default(#21312,#10000,50,29,50,29) +exprs(#21311,64,#21310,0,"namespa ... : N.I") +#21312=@"loc,{#10000},47,5,47,27" +locations_default(#21312,#10000,47,5,47,27) hasLocation(#21311,#21312) +enclosingStmt(#21311,#21310) +exprContainers(#21311,#20001) #21313=* -tokeninfo(#21313,8,#20001,318,"{") -#21314=@"loc,{#10000},50,31,50,31" -locations_default(#21314,#10000,50,31,50,31) -hasLocation(#21313,#21314) -#21315=* -tokeninfo(#21315,6,#20001,319,"field") -hasLocation(#21315,#20572) +exprs(#21313,78,#21311,0,"namespaceTypeVar") +hasLocation(#21313,#20726) +enclosingStmt(#21313,#21310) +exprContainers(#21313,#20001) +literals("namespaceTypeVar","namespaceTypeVar",#21313) +decl(#21313,#20967) +#21314=* +typeexprs(#21314,13,#21311,2,"N.I") +#21315=@"loc,{#10000},47,25,47,27" +locations_default(#21315,#10000,47,25,47,27) +hasLocation(#21314,#21315) +enclosingStmt(#21314,#21310) +exprContainers(#21314,#20001) #21316=* -tokeninfo(#21316,8,#20001,320,":") -#21317=@"loc,{#10000},51,8,51,8" -locations_default(#21317,#10000,51,8,51,8) -hasLocation(#21316,#21317) +typeexprs(#21316,25,#21314,0,"N") +hasLocation(#21316,#20730) +enclosingStmt(#21316,#21310) +exprContainers(#21316,#20001) +literals("N","N",#21316) +namespacebind(#21316,#20970) +#21317=* +typeexprs(#21317,15,#21314,1,"I") +hasLocation(#21317,#20734) +enclosingStmt(#21317,#21310) +exprContainers(#21317,#20001) +literals("I","I",#21317) #21318=* -tokeninfo(#21318,6,#20001,321,"T") -hasLocation(#21318,#20574) +stmts(#21318,18,#20001,42,"var nam ... umber>;") +hasLocation(#21318,#20097) +stmtContainers(#21318,#20001) #21319=* -tokeninfo(#21319,8,#20001,322,";") -#21320=@"loc,{#10000},51,11,51,11" -locations_default(#21320,#10000,51,11,51,11) +exprs(#21319,64,#21318,0,"namespa ... number>") +#21320=@"loc,{#10000},48,5,48,40" +locations_default(#21320,#10000,48,5,48,40) hasLocation(#21319,#21320) +enclosingStmt(#21319,#21318) +exprContainers(#21319,#20001) #21321=* -tokeninfo(#21321,6,#20001,323,"method") -hasLocation(#21321,#20578) +exprs(#21321,78,#21319,0,"namespa ... TypeVar") +hasLocation(#21321,#20740) +enclosingStmt(#21321,#21318) +exprContainers(#21321,#20001) +literals("namespaceGenericTypeVar","namespaceGenericTypeVar",#21321) +decl(#21321,#20968) #21322=* -tokeninfo(#21322,8,#20001,324,"(") -#21323=@"loc,{#10000},52,9,52,9" -locations_default(#21323,#10000,52,9,52,9) +typeexprs(#21322,14,#21319,2,"N.J") +#21323=@"loc,{#10000},48,30,48,40" +locations_default(#21323,#10000,48,30,48,40) hasLocation(#21322,#21323) +enclosingStmt(#21322,#21318) +exprContainers(#21322,#20001) #21324=* -tokeninfo(#21324,6,#20001,325,"x") -hasLocation(#21324,#20583) -#21325=* -tokeninfo(#21325,8,#20001,326,":") -#21326=@"loc,{#10000},52,11,52,11" -locations_default(#21326,#10000,52,11,52,11) -hasLocation(#21325,#21326) +typeexprs(#21324,13,#21322,-1,"N.J") +#21325=@"loc,{#10000},48,30,48,32" +locations_default(#21325,#10000,48,30,48,32) +hasLocation(#21324,#21325) +enclosingStmt(#21324,#21318) +exprContainers(#21324,#20001) +#21326=* +typeexprs(#21326,25,#21324,0,"N") +hasLocation(#21326,#20744) +enclosingStmt(#21326,#21318) +exprContainers(#21326,#20001) +literals("N","N",#21326) +namespacebind(#21326,#20970) #21327=* -tokeninfo(#21327,6,#20001,327,"T") -hasLocation(#21327,#20588) +typeexprs(#21327,15,#21324,1,"J") +hasLocation(#21327,#20748) +enclosingStmt(#21327,#21318) +exprContainers(#21327,#20001) +literals("J","J",#21327) #21328=* -tokeninfo(#21328,8,#20001,328,")") -#21329=@"loc,{#10000},52,14,52,14" -locations_default(#21329,#10000,52,14,52,14) -hasLocation(#21328,#21329) -#21330=* -tokeninfo(#21330,8,#20001,329,":") -#21331=@"loc,{#10000},52,15,52,15" -locations_default(#21331,#10000,52,15,52,15) -hasLocation(#21330,#21331) -#21332=* -tokeninfo(#21332,6,#20001,330,"T") -hasLocation(#21332,#20586) +typeexprs(#21328,2,#21322,0,"number") +hasLocation(#21328,#20752) +enclosingStmt(#21328,#21318) +exprContainers(#21328,#20001) +literals("number","number",#21328) +#21329=* +stmts(#21329,34,#20001,43,"interfa ... ): T;\n}") +#21330=@"loc,{#10000},50,1,53,1" +locations_default(#21330,#10000,50,1,53,1) +hasLocation(#21329,#21330) +stmtContainers(#21329,#20001) +#21331=* +scopes(#21331,11) +scopenodes(#21329,#21331) +scopenesting(#21331,#20000) +#21332=@"local_type_name;{T};{#21331}" +local_type_names(#21332,"T",#21331) #21333=* -tokeninfo(#21333,8,#20001,331,";") -#21334=@"loc,{#10000},52,18,52,18" -locations_default(#21334,#10000,52,18,52,18) -hasLocation(#21333,#21334) +typeexprs(#21333,22,#21329,-2,"T") +hasLocation(#21333,#20764) +enclosingStmt(#21333,#21329) +exprContainers(#21333,#20001) +#21334=* +typeexprs(#21334,1,#21333,0,"T") +hasLocation(#21334,#20764) +enclosingStmt(#21334,#21329) +exprContainers(#21334,#20001) +literals("T","T",#21334) +typedecl(#21334,#21332) #21335=* -tokeninfo(#21335,8,#20001,332,"}") -hasLocation(#21335,#20773) +typeexprs(#21335,1,#21329,0,"GenericInterface") +hasLocation(#21335,#20760) +enclosingStmt(#21335,#21329) +exprContainers(#21335,#20001) +literals("GenericInterface","GenericInterface",#21335) +typedecl(#21335,#20976) #21336=* -tokeninfo(#21336,7,#20001,333,"abstract") -#21337=@"loc,{#10000},54,1,54,8" -locations_default(#21337,#10000,54,1,54,8) +properties(#21336,#21329,2,8,"field: T;") +#21337=@"loc,{#10000},51,3,51,11" +locations_default(#21337,#10000,51,3,51,11) hasLocation(#21336,#21337) #21338=* -tokeninfo(#21338,7,#20001,334,"class") -#21339=@"loc,{#10000},54,10,54,14" -locations_default(#21339,#10000,54,10,54,14) -hasLocation(#21338,#21339) +exprs(#21338,0,#21336,0,"field") +hasLocation(#21338,#20770) +enclosingStmt(#21338,#21329) +exprContainers(#21338,#20001) +literals("field","field",#21338) +isAbstractMember(#21336) +#21339=* +typeexprs(#21339,0,#21336,2,"T") +hasLocation(#21339,#20774) +enclosingStmt(#21339,#21329) +exprContainers(#21339,#20001) +literals("T","T",#21339) +typebind(#21339,#21332) #21340=* -tokeninfo(#21340,6,#20001,335,"GenericClass") -hasLocation(#21340,#20592) -#21341=* -tokeninfo(#21341,8,#20001,336,"<") -#21342=@"loc,{#10000},54,28,54,28" -locations_default(#21342,#10000,54,28,54,28) -hasLocation(#21341,#21342) +properties(#21340,#21329,3,0,"method(x: T): T;") +#21341=@"loc,{#10000},52,3,52,18" +locations_default(#21341,#10000,52,3,52,18) +hasLocation(#21340,#21341) +#21342=* +exprs(#21342,0,#21340,0,"method") +hasLocation(#21342,#20778) +enclosingStmt(#21342,#21329) +exprContainers(#21342,#20001) +literals("method","method",#21342) #21343=* -tokeninfo(#21343,6,#20001,337,"T") -hasLocation(#21343,#20596) +exprs(#21343,9,#21340,1,"method(x: T): T;") +hasLocation(#21343,#21341) +enclosingStmt(#21343,#21329) +exprContainers(#21343,#20001) #21344=* -tokeninfo(#21344,8,#20001,338,">") -#21345=@"loc,{#10000},54,30,54,30" -locations_default(#21345,#10000,54,30,54,30) -hasLocation(#21344,#21345) +scopes(#21344,1) +scopenodes(#21343,#21344) +scopenesting(#21344,#21331) +#21345=@"var;{x};{#21344}" +variables(#21345,"x",#21344) #21346=* -tokeninfo(#21346,7,#20001,339,"implements") -#21347=@"loc,{#10000},54,32,54,41" -locations_default(#21347,#10000,54,32,54,41) -hasLocation(#21346,#21347) +exprs(#21346,78,#21343,0,"x") +hasLocation(#21346,#20782) +exprContainers(#21346,#21343) +literals("x","x",#21346) +decl(#21346,#21345) +#21347=@"var;{arguments};{#21344}" +variables(#21347,"arguments",#21344) +isArgumentsObject(#21347) #21348=* -tokeninfo(#21348,6,#20001,340,"GenericInterface") -hasLocation(#21348,#20601) +typeexprs(#21348,0,#21343,-3,"T") +hasLocation(#21348,#20792) +exprContainers(#21348,#21343) +literals("T","T",#21348) +typebind(#21348,#21332) #21349=* -tokeninfo(#21349,8,#20001,341,"<") -#21350=@"loc,{#10000},54,59,54,59" -locations_default(#21350,#10000,54,59,54,59) -hasLocation(#21349,#21350) -#21351=* -tokeninfo(#21351,6,#20001,342,"T") -hasLocation(#21351,#20603) +typeexprs(#21349,0,#21343,-6,"T") +hasLocation(#21349,#20786) +exprContainers(#21349,#21343) +literals("T","T",#21349) +typebind(#21349,#21332) +isMethod(#21340) +isAbstractMember(#21340) +#21350=* +stmts(#21350,26,#20001,44,"abstrac ... ): T;\n}") +#21351=@"loc,{#10000},54,1,57,1" +locations_default(#21351,#10000,54,1,57,1) +hasLocation(#21350,#21351) +stmtContainers(#21350,#20001) +isAbstractClass(#21350) #21352=* -tokeninfo(#21352,8,#20001,343,">") -#21353=@"loc,{#10000},54,61,54,61" -locations_default(#21353,#10000,54,61,54,61) -hasLocation(#21352,#21353) -#21354=* -tokeninfo(#21354,8,#20001,344,"{") -#21355=@"loc,{#10000},54,63,54,63" -locations_default(#21355,#10000,54,63,54,63) -hasLocation(#21354,#21355) +exprs(#21352,78,#21350,0,"GenericClass") +hasLocation(#21352,#20801) +enclosingStmt(#21352,#21350) +exprContainers(#21352,#20001) +literals("GenericClass","GenericClass",#21352) +decl(#21352,#20971) +typedecl(#21352,#20977) +#21353=* +scopes(#21353,10) +scopenodes(#21350,#21353) +scopenesting(#21353,#20000) +#21354=@"local_type_name;{T};{#21353}" +local_type_names(#21354,"T",#21353) +#21355=* +typeexprs(#21355,22,#21350,-3,"T") +hasLocation(#21355,#20805) +enclosingStmt(#21355,#21350) +exprContainers(#21355,#20001) #21356=* -tokeninfo(#21356,6,#20001,345,"field") -hasLocation(#21356,#20607) +typeexprs(#21356,1,#21355,0,"T") +hasLocation(#21356,#20805) +enclosingStmt(#21356,#21350) +exprContainers(#21356,#20001) +literals("T","T",#21356) +typedecl(#21356,#21354) #21357=* -tokeninfo(#21357,8,#20001,346,":") -#21358=@"loc,{#10000},55,8,55,8" -locations_default(#21358,#10000,55,8,55,8) +typeexprs(#21357,14,#21350,-1,"GenericInterface") +#21358=@"loc,{#10000},54,43,54,61" +locations_default(#21358,#10000,54,43,54,61) hasLocation(#21357,#21358) +enclosingStmt(#21357,#21350) +exprContainers(#21357,#20001) #21359=* -tokeninfo(#21359,6,#20001,347,"T") -hasLocation(#21359,#20610) +typeexprs(#21359,0,#21357,-1,"GenericInterface") +hasLocation(#21359,#20811) +enclosingStmt(#21359,#21350) +exprContainers(#21359,#20001) +literals("GenericInterface","GenericInterface",#21359) +typebind(#21359,#20976) #21360=* -tokeninfo(#21360,7,#20001,348,"abstract") -#21361=@"loc,{#10000},56,3,56,10" -locations_default(#21361,#10000,56,3,56,10) -hasLocation(#21360,#21361) -#21362=* -tokeninfo(#21362,6,#20001,349,"method") -hasLocation(#21362,#20614) +typeexprs(#21360,0,#21357,0,"T") +hasLocation(#21360,#20815) +enclosingStmt(#21360,#21350) +exprContainers(#21360,#20001) +literals("T","T",#21360) +typebind(#21360,#21354) +#21361=* +properties(#21361,#21350,2,8,"field: T") +#21362=@"loc,{#10000},55,3,55,10" +locations_default(#21362,#10000,55,3,55,10) +hasLocation(#21361,#21362) #21363=* -tokeninfo(#21363,8,#20001,350,"(") -#21364=@"loc,{#10000},56,18,56,18" -locations_default(#21364,#10000,56,18,56,18) -hasLocation(#21363,#21364) +exprs(#21363,0,#21361,0,"field") +hasLocation(#21363,#20821) +enclosingStmt(#21363,#21350) +exprContainers(#21363,#20001) +literals("field","field",#21363) +#21364=* #21365=* -tokeninfo(#21365,6,#20001,351,"x") -hasLocation(#21365,#20619) +typeexprs(#21365,0,#21361,2,"T") +hasLocation(#21365,#20825) +enclosingStmt(#21365,#21350) +exprContainers(#21365,#20001) +literals("T","T",#21365) +typebind(#21365,#21354) #21366=* -tokeninfo(#21366,8,#20001,352,":") -#21367=@"loc,{#10000},56,20,56,20" -locations_default(#21367,#10000,56,20,56,20) +properties(#21366,#21350,3,0,"abstrac ... :T): T;") +#21367=@"loc,{#10000},56,3,56,26" +locations_default(#21367,#10000,56,3,56,26) hasLocation(#21366,#21367) #21368=* -tokeninfo(#21368,6,#20001,353,"T") -hasLocation(#21368,#20624) +exprs(#21368,0,#21366,0,"method") +hasLocation(#21368,#20829) +enclosingStmt(#21368,#21350) +exprContainers(#21368,#20001) +literals("method","method",#21368) #21369=* -tokeninfo(#21369,8,#20001,354,")") -#21370=@"loc,{#10000},56,22,56,22" -locations_default(#21370,#10000,56,22,56,22) -hasLocation(#21369,#21370) -#21371=* -tokeninfo(#21371,8,#20001,355,":") -#21372=@"loc,{#10000},56,23,56,23" -locations_default(#21372,#10000,56,23,56,23) -hasLocation(#21371,#21372) -#21373=* -tokeninfo(#21373,6,#20001,356,"T") -hasLocation(#21373,#20622) +exprs(#21369,9,#21366,1,"abstrac ... :T): T;") +hasLocation(#21369,#21367) +enclosingStmt(#21369,#21350) +exprContainers(#21369,#20001) +#21370=* +scopes(#21370,1) +scopenodes(#21369,#21370) +scopenesting(#21370,#21353) +#21371=@"var;{x};{#21370}" +variables(#21371,"x",#21370) +#21372=* +exprs(#21372,78,#21369,0,"x") +hasLocation(#21372,#20833) +exprContainers(#21372,#21369) +literals("x","x",#21372) +decl(#21372,#21371) +#21373=@"var;{arguments};{#21370}" +variables(#21373,"arguments",#21370) +isArgumentsObject(#21373) #21374=* -tokeninfo(#21374,8,#20001,357,";") -#21375=@"loc,{#10000},56,26,56,26" -locations_default(#21375,#10000,56,26,56,26) -hasLocation(#21374,#21375) +typeexprs(#21374,0,#21369,-3,"T") +hasLocation(#21374,#20843) +exprContainers(#21374,#21369) +literals("T","T",#21374) +typebind(#21374,#21354) +#21375=* +typeexprs(#21375,0,#21369,-6,"T") +hasLocation(#21375,#20837) +exprContainers(#21375,#21369) +literals("T","T",#21375) +typebind(#21375,#21354) +isMethod(#21366) +isAbstractMember(#21366) #21376=* -tokeninfo(#21376,8,#20001,358,"}") -hasLocation(#21376,#20781) -#21377=* -tokeninfo(#21377,7,#20001,359,"class") -#21378=@"loc,{#10000},59,1,59,5" -locations_default(#21378,#10000,59,1,59,5) -hasLocation(#21377,#21378) +properties(#21376,#21350,4,0,"constructor() {}") +#21377=@"loc,{#10000},54,63,54,62" +locations_default(#21377,#10000,54,63,54,62) +hasLocation(#21376,#21377) +#21378=* +exprs(#21378,0,#21376,0,"constructor") +hasLocation(#21378,#21377) +enclosingStmt(#21378,#21350) +exprContainers(#21378,#20001) +literals("constructor","constructor",#21378) +exprs(#21364,9,#21376,1,"() {}") +hasLocation(#21364,#21377) +enclosingStmt(#21364,#21350) +exprContainers(#21364,#20001) #21379=* -tokeninfo(#21379,6,#20001,360,"Fish") -hasLocation(#21379,#20634) -#21380=* -tokeninfo(#21380,8,#20001,361,"{") -#21381=@"loc,{#10000},59,12,59,12" -locations_default(#21381,#10000,59,12,59,12) -hasLocation(#21380,#21381) +scopes(#21379,1) +scopenodes(#21364,#21379) +scopenesting(#21379,#21353) +#21380=@"var;{arguments};{#21379}" +variables(#21380,"arguments",#21379) +isArgumentsObject(#21380) +#21381=* +stmts(#21381,1,#21364,-2,"{}") +hasLocation(#21381,#21377) +stmtContainers(#21381,#21364) +isMethod(#21376) #21382=* -tokeninfo(#21382,8,#20001,362,"}") -#21383=@"loc,{#10000},59,13,59,13" -locations_default(#21383,#10000,59,13,59,13) -hasLocation(#21382,#21383) +stmts(#21382,26,#20001,45,"class Fish {}") +hasLocation(#21382,#20119) +stmtContainers(#21382,#20001) +#21383=* +exprs(#21383,78,#21382,0,"Fish") +hasLocation(#21383,#20850) +enclosingStmt(#21383,#21382) +exprContainers(#21383,#20001) +literals("Fish","Fish",#21383) +decl(#21383,#20972) +typedecl(#21383,#20978) #21384=* -tokeninfo(#21384,7,#20001,363,"class") -#21385=@"loc,{#10000},60,1,60,5" -locations_default(#21385,#10000,60,1,60,5) -hasLocation(#21384,#21385) -#21386=* -tokeninfo(#21386,6,#20001,364,"Bird") -hasLocation(#21386,#20646) +scopes(#21384,10) +scopenodes(#21382,#21384) +scopenesting(#21384,#20000) +#21385=* +properties(#21385,#21382,2,0,"constructor() {}") +#21386=@"loc,{#10000},59,12,59,11" +locations_default(#21386,#10000,59,12,59,11) +hasLocation(#21385,#21386) #21387=* -tokeninfo(#21387,8,#20001,365,"{") -#21388=@"loc,{#10000},60,12,60,12" -locations_default(#21388,#10000,60,12,60,12) -hasLocation(#21387,#21388) +exprs(#21387,0,#21385,0,"constructor") +hasLocation(#21387,#21386) +enclosingStmt(#21387,#21382) +exprContainers(#21387,#20001) +literals("constructor","constructor",#21387) +#21388=* +exprs(#21388,9,#21385,1,"() {}") +hasLocation(#21388,#21386) +enclosingStmt(#21388,#21382) +exprContainers(#21388,#20001) #21389=* -tokeninfo(#21389,8,#20001,366,"}") -#21390=@"loc,{#10000},60,13,60,13" -locations_default(#21390,#10000,60,13,60,13) -hasLocation(#21389,#21390) +scopes(#21389,1) +scopenodes(#21388,#21389) +scopenesting(#21389,#21384) +#21390=@"var;{arguments};{#21389}" +variables(#21390,"arguments",#21389) +isArgumentsObject(#21390) #21391=* -tokeninfo(#21391,7,#20001,367,"function") -#21392=@"loc,{#10000},61,1,61,8" -locations_default(#21392,#10000,61,1,61,8) -hasLocation(#21391,#21392) +stmts(#21391,1,#21388,-2,"{}") +hasLocation(#21391,#21386) +stmtContainers(#21391,#21388) +isMethod(#21385) +#21392=* +stmts(#21392,26,#20001,46,"class Bird {}") +hasLocation(#21392,#20121) +stmtContainers(#21392,#20001) #21393=* -tokeninfo(#21393,6,#20001,368,"isFish") -hasLocation(#21393,#20658) +exprs(#21393,78,#21392,0,"Bird") +hasLocation(#21393,#20858) +enclosingStmt(#21393,#21392) +exprContainers(#21393,#20001) +literals("Bird","Bird",#21393) +decl(#21393,#20973) +typedecl(#21393,#20979) #21394=* -tokeninfo(#21394,8,#20001,369,"(") -#21395=@"loc,{#10000},61,16,61,16" -locations_default(#21395,#10000,61,16,61,16) -hasLocation(#21394,#21395) -#21396=* -tokeninfo(#21396,6,#20001,370,"pet") -hasLocation(#21396,#20662) +scopes(#21394,10) +scopenodes(#21392,#21394) +scopenesting(#21394,#20000) +#21395=* +properties(#21395,#21392,2,0,"constructor() {}") +#21396=@"loc,{#10000},60,12,60,11" +locations_default(#21396,#10000,60,12,60,11) +hasLocation(#21395,#21396) #21397=* -tokeninfo(#21397,8,#20001,371,":") -#21398=@"loc,{#10000},61,21,61,21" -locations_default(#21398,#10000,61,21,61,21) -hasLocation(#21397,#21398) +exprs(#21397,0,#21395,0,"constructor") +hasLocation(#21397,#21396) +enclosingStmt(#21397,#21392) +exprContainers(#21397,#20001) +literals("constructor","constructor",#21397) +#21398=* +exprs(#21398,9,#21395,1,"() {}") +hasLocation(#21398,#21396) +enclosingStmt(#21398,#21392) +exprContainers(#21398,#20001) #21399=* -tokeninfo(#21399,6,#20001,372,"Fish") -hasLocation(#21399,#20673) -#21400=* -tokeninfo(#21400,8,#20001,373,"|") -#21401=@"loc,{#10000},61,28,61,28" -locations_default(#21401,#10000,61,28,61,28) -hasLocation(#21400,#21401) +scopes(#21399,1) +scopenodes(#21398,#21399) +scopenesting(#21399,#21394) +#21400=@"var;{arguments};{#21399}" +variables(#21400,"arguments",#21399) +isArgumentsObject(#21400) +#21401=* +stmts(#21401,1,#21398,-2,"{}") +hasLocation(#21401,#21396) +stmtContainers(#21401,#21398) +isMethod(#21395) #21402=* -tokeninfo(#21402,6,#20001,374,"Bird") -hasLocation(#21402,#20675) +stmts(#21402,17,#20001,47,"functio ... Fish {}") +hasLocation(#21402,#20123) +stmtContainers(#21402,#20001) #21403=* -tokeninfo(#21403,8,#20001,375,")") -#21404=@"loc,{#10000},61,34,61,34" -locations_default(#21404,#10000,61,34,61,34) -hasLocation(#21403,#21404) -#21405=* -tokeninfo(#21405,8,#20001,376,":") -#21406=@"loc,{#10000},61,35,61,35" -locations_default(#21406,#10000,61,35,61,35) -hasLocation(#21405,#21406) -#21407=* -tokeninfo(#21407,6,#20001,377,"pet") -hasLocation(#21407,#20667) +exprs(#21403,78,#21402,-1,"isFish") +hasLocation(#21403,#20866) +exprContainers(#21403,#21402) +literals("isFish","isFish",#21403) +decl(#21403,#20969) +#21404=* +scopes(#21404,1) +scopenodes(#21402,#21404) +scopenesting(#21404,#20000) +#21405=@"var;{pet};{#21404}" +variables(#21405,"pet",#21404) +#21406=* +exprs(#21406,78,#21402,0,"pet") +hasLocation(#21406,#20870) +exprContainers(#21406,#21402) +literals("pet","pet",#21406) +decl(#21406,#21405) +#21407=@"var;{arguments};{#21404}" +variables(#21407,"arguments",#21404) +isArgumentsObject(#21407) #21408=* -tokeninfo(#21408,7,#20001,378,"is") -#21409=@"loc,{#10000},61,41,61,42" -locations_default(#21409,#10000,61,41,61,42) +typeexprs(#21408,20,#21402,-3,"pet is Fish") +#21409=@"loc,{#10000},61,37,61,47" +locations_default(#21409,#10000,61,37,61,47) hasLocation(#21408,#21409) +exprContainers(#21408,#21402) #21410=* -tokeninfo(#21410,6,#20001,379,"Fish") -hasLocation(#21410,#20669) +typeexprs(#21410,17,#21408,0,"pet") +hasLocation(#21410,#20884) +exprContainers(#21410,#21402) +literals("pet","pet",#21410) +bind(#21410,#21405) #21411=* -tokeninfo(#21411,8,#20001,380,"{") -#21412=@"loc,{#10000},61,49,61,49" -locations_default(#21412,#10000,61,49,61,49) -hasLocation(#21411,#21412) -#21413=* -tokeninfo(#21413,8,#20001,381,"}") -#21414=@"loc,{#10000},61,50,61,50" -locations_default(#21414,#10000,61,50,61,50) -hasLocation(#21413,#21414) +typeexprs(#21411,0,#21408,1,"Fish") +hasLocation(#21411,#20888) +exprContainers(#21411,#21402) +literals("Fish","Fish",#21411) +typebind(#21411,#20978) +#21412=* +typeexprs(#21412,7,#21402,-6,"Fish | Bird") +#21413=@"loc,{#10000},61,23,61,33" +locations_default(#21413,#10000,61,23,61,33) +hasLocation(#21412,#21413) +exprContainers(#21412,#21402) +#21414=* +typeexprs(#21414,0,#21412,0,"Fish") +hasLocation(#21414,#20874) +exprContainers(#21414,#21402) +literals("Fish","Fish",#21414) +typebind(#21414,#20978) #21415=* -tokeninfo(#21415,7,#20001,382,"class") -#21416=@"loc,{#10000},63,1,63,5" -locations_default(#21416,#10000,63,1,63,5) -hasLocation(#21415,#21416) -#21417=* -tokeninfo(#21417,6,#20001,383,"ThisTypes") -hasLocation(#21417,#20681) +typeexprs(#21415,0,#21412,1,"Bird") +hasLocation(#21415,#20878) +exprContainers(#21415,#21402) +literals("Bird","Bird",#21415) +typebind(#21415,#20979) +#21416=* +stmts(#21416,1,#21402,-2,"{}") +#21417=@"loc,{#10000},61,49,61,50" +locations_default(#21417,#10000,61,49,61,50) +hasLocation(#21416,#21417) +stmtContainers(#21416,#21402) #21418=* -tokeninfo(#21418,8,#20001,384,"{") -#21419=@"loc,{#10000},63,17,63,17" -locations_default(#21419,#10000,63,17,63,17) +stmts(#21418,26,#20001,48,"class T ... is; }\n}") +#21419=@"loc,{#10000},63,1,65,1" +locations_default(#21419,#10000,63,1,65,1) hasLocation(#21418,#21419) +stmtContainers(#21418,#20001) #21420=* -tokeninfo(#21420,6,#20001,385,"foo") -hasLocation(#21420,#20686) +exprs(#21420,78,#21418,0,"ThisTypes") +hasLocation(#21420,#20896) +enclosingStmt(#21420,#21418) +exprContainers(#21420,#20001) +literals("ThisTypes","ThisTypes",#21420) +decl(#21420,#20974) +typedecl(#21420,#20980) #21421=* -tokeninfo(#21421,8,#20001,386,"(") -#21422=@"loc,{#10000},64,6,64,6" -locations_default(#21422,#10000,64,6,64,6) -hasLocation(#21421,#21422) -#21423=* -tokeninfo(#21423,6,#20001,387,"x") -hasLocation(#21423,#20691) +scopes(#21421,10) +scopenodes(#21418,#21421) +scopenesting(#21421,#20000) +#21422=* +properties(#21422,#21418,2,0,"foo(x: ... this; }") +#21423=@"loc,{#10000},64,3,64,39" +locations_default(#21423,#10000,64,3,64,39) +hasLocation(#21422,#21423) #21424=* -tokeninfo(#21424,8,#20001,388,":") -#21425=@"loc,{#10000},64,8,64,8" -locations_default(#21425,#10000,64,8,64,8) -hasLocation(#21424,#21425) +exprs(#21424,0,#21422,0,"foo") +hasLocation(#21424,#20900) +enclosingStmt(#21424,#21418) +exprContainers(#21424,#20001) +literals("foo","foo",#21424) +#21425=* +exprs(#21425,9,#21422,1,"foo(x: ... this; }") +hasLocation(#21425,#21423) +enclosingStmt(#21425,#21418) +exprContainers(#21425,#20001) #21426=* -tokeninfo(#21426,7,#20001,389,"number") -hasLocation(#21426,#20696) -#21427=* -tokeninfo(#21427,8,#20001,390,")") -#21428=@"loc,{#10000},64,16,64,16" -locations_default(#21428,#10000,64,16,64,16) -hasLocation(#21427,#21428) -#21429=* -tokeninfo(#21429,8,#20001,391,":") -#21430=@"loc,{#10000},64,17,64,17" -locations_default(#21430,#10000,64,17,64,17) -hasLocation(#21429,#21430) +scopes(#21426,1) +scopenodes(#21425,#21426) +scopenesting(#21426,#21421) +#21427=@"var;{x};{#21426}" +variables(#21427,"x",#21426) +#21428=* +exprs(#21428,78,#21425,0,"x") +hasLocation(#21428,#20904) +exprContainers(#21428,#21425) +literals("x","x",#21428) +decl(#21428,#21427) +#21429=@"var;{arguments};{#21426}" +variables(#21429,"arguments",#21426) +isArgumentsObject(#21429) +#21430=* +typeexprs(#21430,2,#21425,-3,"this") +hasLocation(#21430,#20914) +exprContainers(#21430,#21425) +literals("this","this",#21430) #21431=* -tokeninfo(#21431,7,#20001,392,"this") -hasLocation(#21431,#20694) +typeexprs(#21431,2,#21425,-6,"number") +hasLocation(#21431,#20908) +exprContainers(#21431,#21425) +literals("number","number",#21431) #21432=* -tokeninfo(#21432,8,#20001,393,"{") -#21433=@"loc,{#10000},64,24,64,24" -locations_default(#21433,#10000,64,24,64,24) +stmts(#21432,1,#21425,-2,"{ return this; }") +#21433=@"loc,{#10000},64,24,64,39" +locations_default(#21433,#10000,64,24,64,39) hasLocation(#21432,#21433) +stmtContainers(#21432,#21425) #21434=* -tokeninfo(#21434,7,#20001,394,"return") -#21435=@"loc,{#10000},64,26,64,31" -locations_default(#21435,#10000,64,26,64,31) +stmts(#21434,9,#21432,0,"return this;") +#21435=@"loc,{#10000},64,26,64,37" +locations_default(#21435,#10000,64,26,64,37) hasLocation(#21434,#21435) +stmtContainers(#21434,#21425) #21436=* -tokeninfo(#21436,7,#20001,395,"this") -hasLocation(#21436,#20702) +exprs(#21436,6,#21434,0,"this") +hasLocation(#21436,#20920) +enclosingStmt(#21436,#21434) +exprContainers(#21436,#21425) +isMethod(#21422) #21437=* -tokeninfo(#21437,8,#20001,396,";") -#21438=@"loc,{#10000},64,37,64,37" -locations_default(#21438,#10000,64,37,64,37) +properties(#21437,#21418,3,0,"constructor() {}") +#21438=@"loc,{#10000},63,17,63,16" +locations_default(#21438,#10000,63,17,63,16) hasLocation(#21437,#21438) #21439=* -tokeninfo(#21439,8,#20001,397,"}") -#21440=@"loc,{#10000},64,39,64,39" -locations_default(#21440,#10000,64,39,64,39) -hasLocation(#21439,#21440) +exprs(#21439,0,#21437,0,"constructor") +hasLocation(#21439,#21438) +enclosingStmt(#21439,#21418) +exprContainers(#21439,#20001) +literals("constructor","constructor",#21439) +#21440=* +exprs(#21440,9,#21437,1,"() {}") +hasLocation(#21440,#21438) +enclosingStmt(#21440,#21418) +exprContainers(#21440,#20001) #21441=* -tokeninfo(#21441,8,#20001,398,"}") -hasLocation(#21441,#20794) -#21442=* -tokeninfo(#21442,0,#20001,399,"") -#21443=@"loc,{#10000},66,1,66,0" -locations_default(#21443,#10000,66,1,66,0) -hasLocation(#21442,#21443) +scopes(#21441,1) +scopenodes(#21440,#21441) +scopenesting(#21441,#21421) +#21442=@"var;{arguments};{#21441}" +variables(#21442,"arguments",#21441) +isArgumentsObject(#21442) +#21443=* +stmts(#21443,1,#21440,-2,"{}") +hasLocation(#21443,#21438) +stmtContainers(#21443,#21440) +isMethod(#21437) #21444=* entry_cfg_node(#21444,#20001) #21445=@"loc,{#10000},1,1,1,0" @@ -4595,226 +4581,226 @@ locations_default(#21445,#10000,1,1,1,0) hasLocation(#21444,#21445) #21446=* exit_cfg_node(#21446,#20001) -hasLocation(#21446,#21443) -successor(#20706,#20703) +hasLocation(#21446,#20927) +successor(#21440,#21437) #21447=* -entry_cfg_node(#21447,#20706) -hasLocation(#21447,#20704) +entry_cfg_node(#21447,#21440) +hasLocation(#21447,#21438) #21448=* -exit_cfg_node(#21448,#20706) -hasLocation(#21448,#20704) -successor(#20709,#21448) -successor(#21447,#20709) -successor(#20705,#20706) -successor(#20703,#20678) -successor(#20687,#20683) +exit_cfg_node(#21448,#21440) +hasLocation(#21448,#21438) +successor(#21443,#21448) +successor(#21447,#21443) +successor(#21439,#21440) +successor(#21437,#21418) +successor(#21425,#21422) #21449=* -entry_cfg_node(#21449,#20687) +entry_cfg_node(#21449,#21425) #21450=@"loc,{#10000},64,3,64,2" locations_default(#21450,#10000,64,3,64,2) hasLocation(#21449,#21450) #21451=* -exit_cfg_node(#21451,#20687) +exit_cfg_node(#21451,#21425) #21452=@"loc,{#10000},64,40,64,39" locations_default(#21452,#10000,64,40,64,39) hasLocation(#21451,#21452) -successor(#20697,#20701) -successor(#20701,#20699) -successor(#20699,#21451) -successor(#20690,#20697) -successor(#21449,#20690) -successor(#20685,#20687) -successor(#20683,#20705) -successor(#20680,#20685) -successor(#20678,#21446) -successor(#20655,#20680) +successor(#21432,#21436) +successor(#21436,#21434) +successor(#21434,#21451) +successor(#21428,#21432) +successor(#21449,#21428) +successor(#21424,#21425) +successor(#21422,#21439) +successor(#21420,#21424) +successor(#21418,#21446) +successor(#21402,#21420) #21453=* -entry_cfg_node(#21453,#20655) +entry_cfg_node(#21453,#21402) #21454=@"loc,{#10000},61,1,61,0" locations_default(#21454,#10000,61,1,61,0) hasLocation(#21453,#21454) #21455=* -exit_cfg_node(#21455,#20655) +exit_cfg_node(#21455,#21402) #21456=@"loc,{#10000},61,51,61,50" locations_default(#21456,#10000,61,51,61,50) hasLocation(#21455,#21456) -successor(#20676,#21455) -successor(#20661,#20676) -successor(#21453,#20661) -successor(#20651,#20648) +successor(#21416,#21455) +successor(#21406,#21416) +successor(#21453,#21406) +successor(#21398,#21395) #21457=* -entry_cfg_node(#21457,#20651) -hasLocation(#21457,#20649) +entry_cfg_node(#21457,#21398) +hasLocation(#21457,#21396) #21458=* -exit_cfg_node(#21458,#20651) -hasLocation(#21458,#20649) -successor(#20654,#21458) -successor(#21457,#20654) -successor(#20650,#20651) -successor(#20648,#20643) -successor(#20645,#20650) -successor(#20643,#20655) -successor(#20639,#20636) +exit_cfg_node(#21458,#21398) +hasLocation(#21458,#21396) +successor(#21401,#21458) +successor(#21457,#21401) +successor(#21397,#21398) +successor(#21395,#21392) +successor(#21393,#21397) +successor(#21392,#21402) +successor(#21388,#21385) #21459=* -entry_cfg_node(#21459,#20639) -hasLocation(#21459,#20637) +entry_cfg_node(#21459,#21388) +hasLocation(#21459,#21386) #21460=* -exit_cfg_node(#21460,#20639) -hasLocation(#21460,#20637) -successor(#20642,#21460) -successor(#21459,#20642) -successor(#20638,#20639) -successor(#20636,#20631) -successor(#20633,#20638) -successor(#20631,#20645) -successor(#20606,#20604) -successor(#20608,#20625) +exit_cfg_node(#21460,#21388) +hasLocation(#21460,#21386) +successor(#21391,#21460) +successor(#21459,#21391) +successor(#21387,#21388) +successor(#21385,#21382) +successor(#21383,#21387) +successor(#21382,#21393) +successor(#21363,#21361) +successor(#21364,#21376) #21461=* -entry_cfg_node(#21461,#20608) -hasLocation(#21461,#20626) -successor(#20604,#20630) +entry_cfg_node(#21461,#21364) +hasLocation(#21461,#21377) +successor(#21361,#21381) #21462=* -exit_cfg_node(#21462,#20608) -hasLocation(#21462,#20626) -successor(#20630,#21462) -successor(#21461,#20606) -successor(#20627,#20608) -successor(#20625,#20589) -successor(#20611,#20627) -successor(#20591,#20611) -successor(#20589,#20633) -successor(#20560,#20591) -successor(#20544,#20548) -successor(#20548,#20546) -successor(#20546,#20560) -successor(#20532,#20536) -successor(#20536,#20534) -successor(#20534,#20544) -successor(#20522,#20526) -successor(#20526,#20524) -successor(#20524,#20532) -successor(#20502,#20506) -successor(#20506,#20504) -successor(#20504,#20522) -successor(#20491,#20495) -successor(#20495,#20493) -successor(#20493,#20502) -successor(#20479,#20483) -successor(#20483,#20481) -successor(#20481,#20491) -successor(#20469,#20473) -successor(#20473,#20471) -successor(#20471,#20479) -successor(#20447,#20451) -successor(#20451,#20449) -successor(#20449,#20469) -successor(#20425,#20429) -successor(#20429,#20427) -successor(#20427,#20447) -successor(#20413,#20417) -successor(#20417,#20415) -successor(#20415,#20425) -successor(#20395,#20399) -successor(#20399,#20397) -successor(#20397,#20413) -successor(#20383,#20387) -successor(#20387,#20385) -successor(#20385,#20395) -successor(#20375,#20379) -successor(#20379,#20377) -successor(#20377,#20383) -successor(#20367,#20371) -successor(#20371,#20369) -successor(#20369,#20375) -successor(#20359,#20363) -successor(#20363,#20361) -successor(#20361,#20367) -successor(#20351,#20355) -successor(#20355,#20353) -successor(#20353,#20359) -successor(#20343,#20347) -successor(#20347,#20345) -successor(#20345,#20351) -successor(#20331,#20335) -successor(#20335,#20333) -successor(#20333,#20343) -successor(#20318,#20322) -successor(#20322,#20320) -successor(#20320,#20331) -successor(#20305,#20309) -successor(#20309,#20307) -successor(#20307,#20318) -successor(#20292,#20296) -successor(#20296,#20294) -successor(#20294,#20305) -successor(#20279,#20283) -successor(#20283,#20281) -successor(#20281,#20292) -successor(#20263,#20267) -successor(#20267,#20265) -successor(#20265,#20279) -successor(#20251,#20255) -successor(#20255,#20253) -successor(#20253,#20263) -successor(#20243,#20247) -successor(#20247,#20245) -successor(#20245,#20251) -successor(#20235,#20239) -successor(#20239,#20237) -successor(#20237,#20243) -successor(#20227,#20231) -successor(#20231,#20229) -successor(#20229,#20235) -successor(#20219,#20223) -successor(#20223,#20221) -successor(#20221,#20227) -successor(#20209,#20213) -successor(#20213,#20211) -successor(#20211,#20219) -successor(#20189,#20193) -successor(#20193,#20191) -successor(#20191,#20209) -successor(#20175,#20179) -successor(#20179,#20177) -successor(#20177,#20189) -successor(#20167,#20171) -successor(#20171,#20169) -successor(#20169,#20175) -successor(#20159,#20163) -successor(#20163,#20161) -successor(#20161,#20167) -successor(#20151,#20155) -successor(#20155,#20153) -successor(#20153,#20159) -successor(#20143,#20147) -successor(#20147,#20145) -successor(#20145,#20151) -successor(#20135,#20139) -successor(#20139,#20137) -successor(#20137,#20143) -successor(#20127,#20131) -successor(#20131,#20129) -successor(#20129,#20135) -successor(#20119,#20123) -successor(#20123,#20121) -successor(#20121,#20127) -successor(#20111,#20115) -successor(#20115,#20113) -successor(#20113,#20119) -successor(#20103,#20107) -successor(#20107,#20105) -successor(#20105,#20111) -successor(#20095,#20099) -successor(#20099,#20097) -successor(#20097,#20103) -successor(#20073,#20071) -successor(#20084,#20086) -successor(#20086,#20095) -successor(#20078,#20080) -successor(#20080,#20084) -successor(#20071,#20078) -successor(#20055,#20073) -successor(#20657,#20055) -successor(#21444,#20657) +exit_cfg_node(#21462,#21364) +hasLocation(#21462,#21377) +successor(#21381,#21462) +successor(#21461,#21363) +successor(#21378,#21364) +successor(#21376,#21350) +successor(#21366,#21378) +successor(#21352,#21366) +successor(#21350,#21383) +successor(#21329,#21352) +successor(#21318,#21321) +successor(#21321,#21319) +successor(#21319,#21329) +successor(#21310,#21313) +successor(#21313,#21311) +successor(#21311,#21318) +successor(#21303,#21306) +successor(#21306,#21304) +successor(#21304,#21310) +successor(#21288,#21291) +successor(#21291,#21289) +successor(#21289,#21303) +successor(#21280,#21283) +successor(#21283,#21281) +successor(#21281,#21288) +successor(#21272,#21275) +successor(#21275,#21273) +successor(#21273,#21280) +successor(#21265,#21268) +successor(#21268,#21266) +successor(#21266,#21272) +successor(#21249,#21252) +successor(#21252,#21250) +successor(#21250,#21265) +successor(#21233,#21236) +successor(#21236,#21234) +successor(#21234,#21249) +successor(#21225,#21228) +successor(#21228,#21226) +successor(#21226,#21233) +successor(#21213,#21216) +successor(#21216,#21214) +successor(#21214,#21225) +successor(#21205,#21208) +successor(#21208,#21206) +successor(#21206,#21213) +successor(#21200,#21203) +successor(#21203,#21201) +successor(#21201,#21205) +successor(#21195,#21198) +successor(#21198,#21196) +successor(#21196,#21200) +successor(#21190,#21193) +successor(#21193,#21191) +successor(#21191,#21195) +successor(#21185,#21188) +successor(#21188,#21186) +successor(#21186,#21190) +successor(#21180,#21183) +successor(#21183,#21181) +successor(#21181,#21185) +successor(#21172,#21175) +successor(#21175,#21173) +successor(#21173,#21180) +successor(#21162,#21165) +successor(#21165,#21163) +successor(#21163,#21172) +successor(#21152,#21155) +successor(#21155,#21153) +successor(#21153,#21162) +successor(#21142,#21145) +successor(#21145,#21143) +successor(#21143,#21152) +successor(#21132,#21135) +successor(#21135,#21133) +successor(#21133,#21142) +successor(#21121,#21124) +successor(#21124,#21122) +successor(#21122,#21132) +successor(#21113,#21116) +successor(#21116,#21114) +successor(#21114,#21121) +successor(#21108,#21111) +successor(#21111,#21109) +successor(#21109,#21113) +successor(#21103,#21106) +successor(#21106,#21104) +successor(#21104,#21108) +successor(#21098,#21101) +successor(#21101,#21099) +successor(#21099,#21103) +successor(#21093,#21096) +successor(#21096,#21094) +successor(#21094,#21098) +successor(#21086,#21089) +successor(#21089,#21087) +successor(#21087,#21093) +successor(#21071,#21074) +successor(#21074,#21072) +successor(#21072,#21086) +successor(#21061,#21064) +successor(#21064,#21062) +successor(#21062,#21071) +successor(#21056,#21059) +successor(#21059,#21057) +successor(#21057,#21061) +successor(#21051,#21054) +successor(#21054,#21052) +successor(#21052,#21056) +successor(#21046,#21049) +successor(#21049,#21047) +successor(#21047,#21051) +successor(#21041,#21044) +successor(#21044,#21042) +successor(#21042,#21046) +successor(#21036,#21039) +successor(#21039,#21037) +successor(#21037,#21041) +successor(#21031,#21034) +successor(#21034,#21032) +successor(#21032,#21036) +successor(#21026,#21029) +successor(#21029,#21027) +successor(#21027,#21031) +successor(#21021,#21024) +successor(#21024,#21022) +successor(#21022,#21026) +successor(#21016,#21019) +successor(#21019,#21017) +successor(#21017,#21021) +successor(#21011,#21014) +successor(#21014,#21012) +successor(#21012,#21016) +successor(#20993,#20991) +successor(#21002,#21004) +successor(#21004,#21011) +successor(#20997,#20999) +successor(#20999,#21002) +successor(#20991,#20997) +successor(#20981,#20993) +successor(#21403,#20981) +successor(#21444,#21403) numlines(#10000,65,60,0) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/unicode.ts.trap b/javascript/extractor/tests/ts/output/trap/unicode.ts.trap index 0508f485c17..5eb51f0c4b5 100644 --- a/javascript/extractor/tests/ts/output/trap/unicode.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/unicode.ts.trap @@ -9,50 +9,50 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},4,1,4,0" -locations_default(#20002,#10000,4,1,4,0) -hasLocation(#20001,#20002) -#20003=* -comments(#20003,0,#20001," Ø α","// \u00d8 \u03b1") -#20004=@"loc,{#10000},1,1,1,6" -locations_default(#20004,#10000,1,1,1,6) -hasLocation(#20003,#20004) -#20005=* -comments(#20005,0,#20001," ࢢ ","// \u08a2 ") -#20006=@"loc,{#10000},2,1,2,5" -locations_default(#20006,#10000,2,1,2,5) -hasLocation(#20005,#20006) -#20007=* -comments(#20007,0,#20001," 𝄞","// \u1d11e\udd1e") -#20008=@"loc,{#10000},3,1,3,5" -locations_default(#20008,#10000,3,1,3,5) -hasLocation(#20007,#20008) +#20002=* +comments(#20002,0,#20001," Ø α","// \u00d8 \u03b1") +#20003=@"loc,{#10000},1,1,1,6" +locations_default(#20003,#10000,1,1,1,6) +hasLocation(#20002,#20003) +#20004=* +comments(#20004,0,#20001," ࢢ ","// \u08a2 ") +#20005=@"loc,{#10000},2,1,2,5" +locations_default(#20005,#10000,2,1,2,5) +hasLocation(#20004,#20005) +#20006=* +comments(#20006,0,#20001," 𝄞","// \u1d11e\udd1e") +#20007=@"loc,{#10000},3,1,3,5" +locations_default(#20007,#10000,3,1,3,5) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001,"// Ø α"," +") +hasLocation(#20008,#20003) #20009=* -lines(#20009,#20001,"// Ø α"," +lines(#20009,#20001,"// ࢢ "," ") -hasLocation(#20009,#20004) +hasLocation(#20009,#20005) #20010=* -lines(#20010,#20001,"// ࢢ "," +lines(#20010,#20001,"// 𝄞"," ") -hasLocation(#20010,#20006) -#20011=* -lines(#20011,#20001,"// 𝄞"," -") -hasLocation(#20011,#20008) +hasLocation(#20010,#20007) numlines(#20001,3,0,3) -#20012=* -tokeninfo(#20012,0,#20001,0,"") -hasLocation(#20012,#20002) -next_token(#20003,#20012) -next_token(#20005,#20012) -next_token(#20007,#20012) +#20011=* +tokeninfo(#20011,0,#20001,0,"") +#20012=@"loc,{#10000},4,1,4,0" +locations_default(#20012,#10000,4,1,4,0) +hasLocation(#20011,#20012) +next_token(#20002,#20011) +next_token(#20004,#20011) +next_token(#20006,#20011) +toplevels(#20001,0) +hasLocation(#20001,#20012) #20013=* entry_cfg_node(#20013,#20001) -hasLocation(#20013,#20002) +hasLocation(#20013,#20012) #20014=* exit_cfg_node(#20014,#20001) -hasLocation(#20014,#20002) +hasLocation(#20014,#20012) successor(#20013,#20014) numlines(#10000,3,0,3) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/unicodeId.ts.trap b/javascript/extractor/tests/ts/output/trap/unicodeId.ts.trap index aa3513e68ee..91b53c070be 100644 --- a/javascript/extractor/tests/ts/output/trap/unicodeId.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/unicodeId.ts.trap @@ -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;{才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123};{#20000}" -variables(#20003,"才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123",#20000) +#20002=* +lines(#20002,#20001,"var 才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123 = 1;"," +") +#20003=@"loc,{#10000},1,1,1,82" +locations_default(#20003,#10000,1,1,1,82) +hasLocation(#20002,#20003) +numlines(#20001,1,1,0) #20004=* -stmts(#20004,18,#20001,0,"var \u624d\u80fd\u30bd ... 23 = 1;") -#20005=@"loc,{#10000},1,1,1,82" -locations_default(#20005,#10000,1,1,1,82) +tokeninfo(#20004,7,#20001,0,"var") +#20005=@"loc,{#10000},1,1,1,3" +locations_default(#20005,#10000,1,1,1,3) hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) #20006=* -exprs(#20006,64,#20004,0,"\u624d\u80fd\u30bd\u042b\u2168\u84a4\u90f3 ... 123 = 1") -#20007=@"loc,{#10000},1,5,1,81" -locations_default(#20007,#10000,1,5,1,81) +tokeninfo(#20006,6,#20001,1,"才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123") +#20007=@"loc,{#10000},1,5,1,77" +locations_default(#20007,#10000,1,5,1,77) hasLocation(#20006,#20007) -enclosingStmt(#20006,#20004) -exprContainers(#20006,#20001) #20008=* -exprs(#20008,78,#20006,0,"\u624d\u80fd\u30bd\u042b\u2168\u84a4\u90f3 ... Abcd123") -#20009=@"loc,{#10000},1,5,1,77" -locations_default(#20009,#10000,1,5,1,77) +tokeninfo(#20008,8,#20001,2,"=") +#20009=@"loc,{#10000},1,79,1,79" +locations_default(#20009,#10000,1,79,1,79) hasLocation(#20008,#20009) -enclosingStmt(#20008,#20004) -exprContainers(#20008,#20001) -literals("才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123","才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123",#20008) -decl(#20008,#20003) #20010=* -exprs(#20010,3,#20006,1,"1") +tokeninfo(#20010,3,#20001,3,"1") #20011=@"loc,{#10000},1,81,1,81" locations_default(#20011,#10000,1,81,1,81) hasLocation(#20010,#20011) -enclosingStmt(#20010,#20004) -exprContainers(#20010,#20001) -literals("1","1",#20010) #20012=* -lines(#20012,#20001,"var 才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123 = 1;"," -") -hasLocation(#20012,#20005) -numlines(#20001,1,1,0) -#20013=* -tokeninfo(#20013,7,#20001,0,"var") -#20014=@"loc,{#10000},1,1,1,3" -locations_default(#20014,#10000,1,1,1,3) -hasLocation(#20013,#20014) -#20015=* -tokeninfo(#20015,6,#20001,1,"才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123") -hasLocation(#20015,#20009) -#20016=* -tokeninfo(#20016,8,#20001,2,"=") -#20017=@"loc,{#10000},1,79,1,79" -locations_default(#20017,#10000,1,79,1,79) -hasLocation(#20016,#20017) +tokeninfo(#20012,8,#20001,4,";") +#20013=@"loc,{#10000},1,82,1,82" +locations_default(#20013,#10000,1,82,1,82) +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;{才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123};{#20000}" +variables(#20017,"才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123",#20000) #20018=* -tokeninfo(#20018,3,#20001,3,"1") -hasLocation(#20018,#20011) +stmts(#20018,18,#20001,0,"var \u624d\u80fd\u30bd ... 23 = 1;") +hasLocation(#20018,#20003) +stmtContainers(#20018,#20001) #20019=* -tokeninfo(#20019,8,#20001,4,";") -#20020=@"loc,{#10000},1,82,1,82" -locations_default(#20020,#10000,1,82,1,82) +exprs(#20019,64,#20018,0,"\u624d\u80fd\u30bd\u042b\u2168\u84a4\u90f3 ... 123 = 1") +#20020=@"loc,{#10000},1,5,1,81" +locations_default(#20020,#10000,1,5,1,81) 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,"\u624d\u80fd\u30bd\u042b\u2168\u84a4\u90f3 ... Abcd123") +hasLocation(#20021,#20007) +enclosingStmt(#20021,#20018) +exprContainers(#20021,#20001) +literals("才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123","才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüß才能ソЫⅨ蒤郳र्क्ड्राüışğİliيونيكودöÄüßAbcd123",#20021) +decl(#20021,#20017) +#20022=* +exprs(#20022,3,#20019,1,"1") +hasLocation(#20022,#20011) +enclosingStmt(#20022,#20018) +exprContainers(#20022,#20001) +literals("1","1",#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,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/uninstantiatedNamespace.ts.trap b/javascript/extractor/tests/ts/output/trap/uninstantiatedNamespace.ts.trap index 2fe5f45632c..e40a2a13915 100644 --- a/javascript/extractor/tests/ts/output/trap/uninstantiatedNamespace.ts.trap +++ b/javascript/extractor/tests/ts/output/trap/uninstantiatedNamespace.ts.trap @@ -9,947 +9,946 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,26,0" -locations_default(#20002,#10000,1,1,26,0) -hasLocation(#20001,#20002) -#20003=@"var;{Wrapper};{#20000}" -variables(#20003,"Wrapper",#20000) -#20004=@"local_namespace_name;{Wrapper};{#20000}" -local_namespace_names(#20004,"Wrapper",#20000) -#20005=* -stmts(#20005,31,#20001,0,"namespa ... lock]\n}") -#20006=@"loc,{#10000},1,1,25,1" -locations_default(#20006,#10000,1,1,25,1) -hasLocation(#20005,#20006) -stmtContainers(#20005,#20001) -#20007=* -exprs(#20007,78,#20005,-1,"Wrapper") -#20008=@"loc,{#10000},1,11,1,17" -locations_default(#20008,#10000,1,11,1,17) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20005) -exprContainers(#20007,#20001) -literals("Wrapper","Wrapper",#20007) -decl(#20007,#20003) -namespacedecl(#20007,#20004) -#20009=* -scopes(#20009,9) -scopenodes(#20005,#20009) -scopenesting(#20009,#20000) -#20010=@"var;{EmptyStatement};{#20009}" -variables(#20010,"EmptyStatement",#20009) -#20011=@"var;{EmptyBlock};{#20009}" -variables(#20011,"EmptyBlock",#20009) -#20012=@"var;{x};{#20009}" -variables(#20012,"x",#20009) -#20013=@"local_namespace_name;{Empty};{#20009}" -local_namespace_names(#20013,"Empty",#20009) -#20014=@"local_namespace_name;{Comments};{#20009}" -local_namespace_names(#20014,"Comments",#20009) -#20015=@"local_namespace_name;{Outer};{#20009}" -local_namespace_names(#20015,"Outer",#20009) -#20016=@"local_namespace_name;{Outer2};{#20009}" -local_namespace_names(#20016,"Outer2",#20009) -#20017=@"local_namespace_name;{Interfaces};{#20009}" -local_namespace_names(#20017,"Interfaces",#20009) -#20018=@"local_namespace_name;{EmptyStatement};{#20009}" -local_namespace_names(#20018,"EmptyStatement",#20009) -#20019=@"local_namespace_name;{EmptyBlock};{#20009}" -local_namespace_names(#20019,"EmptyBlock",#20009) +#20002=* +comments(#20002,0,#20001," foo","// foo") +#20003=@"loc,{#10000},5,5,5,10" +locations_default(#20003,#10000,5,5,5,10) +hasLocation(#20002,#20003) +#20004=* +comments(#20004,1,#20001," bar ","/* bar */") +#20005=@"loc,{#10000},6,5,6,13" +locations_default(#20005,#10000,6,5,6,13) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"namespace Wrapper {"," +") +#20007=@"loc,{#10000},1,1,1,19" +locations_default(#20007,#10000,1,1,1,19) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001,""," +") +#20009=@"loc,{#10000},2,1,2,0" +locations_default(#20009,#10000,2,1,2,0) +hasLocation(#20008,#20009) +#20010=* +lines(#20010,#20001," namespace Empty {}"," +") +#20011=@"loc,{#10000},3,1,3,20" +locations_default(#20011,#10000,3,1,3,20) +hasLocation(#20010,#20011) +indentation(#10000,3," ",2) +#20012=* +lines(#20012,#20001," namespace Comments {"," +") +#20013=@"loc,{#10000},4,1,4,22" +locations_default(#20013,#10000,4,1,4,22) +hasLocation(#20012,#20013) +indentation(#10000,4," ",2) +#20014=* +lines(#20014,#20001," // foo"," +") +#20015=@"loc,{#10000},5,1,5,10" +locations_default(#20015,#10000,5,1,5,10) +hasLocation(#20014,#20015) +indentation(#10000,5," ",4) +#20016=* +lines(#20016,#20001," /* bar */"," +") +#20017=@"loc,{#10000},6,1,6,13" +locations_default(#20017,#10000,6,1,6,13) +hasLocation(#20016,#20017) +indentation(#10000,6," ",4) +#20018=* +lines(#20018,#20001," }"," +") +#20019=@"loc,{#10000},7,1,7,3" +locations_default(#20019,#10000,7,1,7,3) +hasLocation(#20018,#20019) +indentation(#10000,7," ",2) #20020=* -stmts(#20020,31,#20005,0,"namespace Empty {}") -#20021=@"loc,{#10000},3,3,3,20" -locations_default(#20021,#10000,3,3,3,20) +lines(#20020,#20001," namespace Outer {"," +") +#20021=@"loc,{#10000},8,1,8,19" +locations_default(#20021,#10000,8,1,8,19) hasLocation(#20020,#20021) -stmtContainers(#20020,#20005) +indentation(#10000,8," ",2) #20022=* -exprs(#20022,78,#20020,-1,"Empty") -#20023=@"loc,{#10000},3,13,3,17" -locations_default(#20023,#10000,3,13,3,17) +lines(#20022,#20001," namespace Inner {}"," +") +#20023=@"loc,{#10000},9,1,9,22" +locations_default(#20023,#10000,9,1,9,22) hasLocation(#20022,#20023) -enclosingStmt(#20022,#20020) -exprContainers(#20022,#20005) -literals("Empty","Empty",#20022) -namespacedecl(#20022,#20013) +indentation(#10000,9," ",4) #20024=* -scopes(#20024,9) -scopenodes(#20020,#20024) -scopenesting(#20024,#20009) -#20025=* -stmts(#20025,31,#20005,1,"namespa ... */\n }") -#20026=@"loc,{#10000},4,3,7,3" -locations_default(#20026,#10000,4,3,7,3) -hasLocation(#20025,#20026) -stmtContainers(#20025,#20005) -#20027=* -exprs(#20027,78,#20025,-1,"Comments") -#20028=@"loc,{#10000},4,13,4,20" -locations_default(#20028,#10000,4,13,4,20) -hasLocation(#20027,#20028) -enclosingStmt(#20027,#20025) -exprContainers(#20027,#20005) -literals("Comments","Comments",#20027) -namespacedecl(#20027,#20014) -#20029=* -scopes(#20029,9) -scopenodes(#20025,#20029) -scopenesting(#20029,#20009) +lines(#20024,#20001," }"," +") +#20025=@"loc,{#10000},10,1,10,3" +locations_default(#20025,#10000,10,1,10,3) +hasLocation(#20024,#20025) +indentation(#10000,10," ",2) +#20026=* +lines(#20026,#20001," namespace Outer2 {"," +") +#20027=@"loc,{#10000},11,1,11,20" +locations_default(#20027,#10000,11,1,11,20) +hasLocation(#20026,#20027) +indentation(#10000,11," ",2) +#20028=* +lines(#20028,#20001," export namespace Inner {}"," +") +#20029=@"loc,{#10000},12,1,12,29" +locations_default(#20029,#10000,12,1,12,29) +hasLocation(#20028,#20029) +indentation(#10000,12," ",4) #20030=* -stmts(#20030,31,#20005,2,"namespa ... {}\n }") -#20031=@"loc,{#10000},8,3,10,3" -locations_default(#20031,#10000,8,3,10,3) +lines(#20030,#20001," }"," +") +#20031=@"loc,{#10000},13,1,13,3" +locations_default(#20031,#10000,13,1,13,3) hasLocation(#20030,#20031) -stmtContainers(#20030,#20005) +indentation(#10000,13," ",2) #20032=* -exprs(#20032,78,#20030,-1,"Outer") -#20033=@"loc,{#10000},8,13,8,17" -locations_default(#20033,#10000,8,13,8,17) +lines(#20032,#20001," namespace Interfaces {"," +") +#20033=@"loc,{#10000},14,1,14,24" +locations_default(#20033,#10000,14,1,14,24) hasLocation(#20032,#20033) -enclosingStmt(#20032,#20030) -exprContainers(#20032,#20005) -literals("Outer","Outer",#20032) -namespacedecl(#20032,#20015) +indentation(#10000,14," ",2) #20034=* -scopes(#20034,9) -scopenodes(#20030,#20034) -scopenesting(#20034,#20009) -#20035=@"local_namespace_name;{Inner};{#20034}" -local_namespace_names(#20035,"Inner",#20034) +lines(#20034,#20001," interface I {"," +") +#20035=@"loc,{#10000},15,1,15,17" +locations_default(#20035,#10000,15,1,15,17) +hasLocation(#20034,#20035) +indentation(#10000,15," ",4) #20036=* -stmts(#20036,31,#20030,0,"namespace Inner {}") -#20037=@"loc,{#10000},9,5,9,22" -locations_default(#20037,#10000,9,5,9,22) +lines(#20036,#20001," x: number;"," +") +#20037=@"loc,{#10000},16,1,16,16" +locations_default(#20037,#10000,16,1,16,16) hasLocation(#20036,#20037) -stmtContainers(#20036,#20030) +indentation(#10000,16," ",6) #20038=* -exprs(#20038,78,#20036,-1,"Inner") -#20039=@"loc,{#10000},9,15,9,19" -locations_default(#20039,#10000,9,15,9,19) +lines(#20038,#20001," foo(): number;"," +") +#20039=@"loc,{#10000},17,1,17,20" +locations_default(#20039,#10000,17,1,17,20) hasLocation(#20038,#20039) -enclosingStmt(#20038,#20036) -exprContainers(#20038,#20030) -literals("Inner","Inner",#20038) -namespacedecl(#20038,#20035) +indentation(#10000,17," ",6) #20040=* -scopes(#20040,9) -scopenodes(#20036,#20040) -scopenesting(#20040,#20034) -#20041=* -stmts(#20041,31,#20005,3,"namespa ... {}\n }") -#20042=@"loc,{#10000},11,3,13,3" -locations_default(#20042,#10000,11,3,13,3) -hasLocation(#20041,#20042) -stmtContainers(#20041,#20005) -#20043=* -exprs(#20043,78,#20041,-1,"Outer2") -#20044=@"loc,{#10000},11,13,11,18" -locations_default(#20044,#10000,11,13,11,18) -hasLocation(#20043,#20044) -enclosingStmt(#20043,#20041) -exprContainers(#20043,#20005) -literals("Outer2","Outer2",#20043) -namespacedecl(#20043,#20016) -#20045=* -scopes(#20045,9) -scopenodes(#20041,#20045) -scopenesting(#20045,#20009) -#20046=@"local_namespace_name;{Inner};{#20045}" -local_namespace_names(#20046,"Inner",#20045) -#20047=* -stmts(#20047,30,#20041,0,"export ... nner {}") -#20048=@"loc,{#10000},12,5,12,29" -locations_default(#20048,#10000,12,5,12,29) -hasLocation(#20047,#20048) -stmtContainers(#20047,#20041) -#20049=* -stmts(#20049,31,#20047,-1,"namespace Inner {}") -#20050=@"loc,{#10000},12,12,12,29" -locations_default(#20050,#10000,12,12,12,29) -hasLocation(#20049,#20050) -stmtContainers(#20049,#20041) -#20051=* -exprs(#20051,78,#20049,-1,"Inner") -#20052=@"loc,{#10000},12,22,12,26" -locations_default(#20052,#10000,12,22,12,26) -hasLocation(#20051,#20052) -enclosingStmt(#20051,#20049) -exprContainers(#20051,#20041) -literals("Inner","Inner",#20051) -namespacedecl(#20051,#20046) -#20053=* -scopes(#20053,9) -scopenodes(#20049,#20053) -scopenesting(#20053,#20045) +lines(#20040,#20001," }"," +") +#20041=@"loc,{#10000},18,1,18,5" +locations_default(#20041,#10000,18,1,18,5) +hasLocation(#20040,#20041) +indentation(#10000,18," ",4) +#20042=* +lines(#20042,#20001," }"," +") +#20043=@"loc,{#10000},19,1,19,3" +locations_default(#20043,#10000,19,1,19,3) +hasLocation(#20042,#20043) +indentation(#10000,19," ",2) +#20044=* +lines(#20044,#20001,""," +") +#20045=@"loc,{#10000},20,1,20,0" +locations_default(#20045,#10000,20,1,20,0) +hasLocation(#20044,#20045) +#20046=* +lines(#20046,#20001," namespace EmptyStatement {;}"," +") +#20047=@"loc,{#10000},21,1,21,30" +locations_default(#20047,#10000,21,1,21,30) +hasLocation(#20046,#20047) +indentation(#10000,21," ",2) +#20048=* +lines(#20048,#20001," namespace EmptyBlock {{}}"," +") +#20049=@"loc,{#10000},22,1,22,27" +locations_default(#20049,#10000,22,1,22,27) +hasLocation(#20048,#20049) +indentation(#10000,22," ",2) +#20050=* +lines(#20050,#20001,""," +") +#20051=@"loc,{#10000},23,1,23,0" +locations_default(#20051,#10000,23,1,23,0) +hasLocation(#20050,#20051) +#20052=* +lines(#20052,#20001," var x = [Empty, Comments, Outer, Outer2, Interfaces, EmptyStatement, EmptyBlock]"," +") +#20053=@"loc,{#10000},24,1,24,82" +locations_default(#20053,#10000,24,1,24,82) +hasLocation(#20052,#20053) +indentation(#10000,24," ",2) #20054=* -stmts(#20054,31,#20005,4,"namespa ... }\n }") -#20055=@"loc,{#10000},14,3,19,3" -locations_default(#20055,#10000,14,3,19,3) +lines(#20054,#20001,"}"," +") +#20055=@"loc,{#10000},25,1,25,1" +locations_default(#20055,#10000,25,1,25,1) hasLocation(#20054,#20055) -stmtContainers(#20054,#20005) +numlines(#20001,25,20,2) #20056=* -exprs(#20056,78,#20054,-1,"Interfaces") -#20057=@"loc,{#10000},14,13,14,22" -locations_default(#20057,#10000,14,13,14,22) +tokeninfo(#20056,7,#20001,0,"namespace") +#20057=@"loc,{#10000},1,1,1,9" +locations_default(#20057,#10000,1,1,1,9) hasLocation(#20056,#20057) -enclosingStmt(#20056,#20054) -exprContainers(#20056,#20005) -literals("Interfaces","Interfaces",#20056) -namespacedecl(#20056,#20017) #20058=* -scopes(#20058,9) -scopenodes(#20054,#20058) -scopenesting(#20058,#20009) -#20059=@"local_type_name;{I};{#20058}" -local_type_names(#20059,"I",#20058) +tokeninfo(#20058,6,#20001,1,"Wrapper") +#20059=@"loc,{#10000},1,11,1,17" +locations_default(#20059,#10000,1,11,1,17) +hasLocation(#20058,#20059) #20060=* -stmts(#20060,34,#20054,0,"interfa ... ;\n }") -#20061=@"loc,{#10000},15,5,18,5" -locations_default(#20061,#10000,15,5,18,5) +tokeninfo(#20060,8,#20001,2,"{") +#20061=@"loc,{#10000},1,19,1,19" +locations_default(#20061,#10000,1,19,1,19) hasLocation(#20060,#20061) -stmtContainers(#20060,#20054) #20062=* -typeexprs(#20062,1,#20060,0,"I") -#20063=@"loc,{#10000},15,15,15,15" -locations_default(#20063,#10000,15,15,15,15) +tokeninfo(#20062,7,#20001,3,"namespace") +#20063=@"loc,{#10000},3,3,3,11" +locations_default(#20063,#10000,3,3,3,11) hasLocation(#20062,#20063) -enclosingStmt(#20062,#20060) -exprContainers(#20062,#20054) -literals("I","I",#20062) -typedecl(#20062,#20059) #20064=* -properties(#20064,#20060,2,8,"x: number;") -#20065=@"loc,{#10000},16,7,16,16" -locations_default(#20065,#10000,16,7,16,16) +tokeninfo(#20064,6,#20001,4,"Empty") +#20065=@"loc,{#10000},3,13,3,17" +locations_default(#20065,#10000,3,13,3,17) hasLocation(#20064,#20065) #20066=* -exprs(#20066,0,#20064,0,"x") -#20067=@"loc,{#10000},16,7,16,7" -locations_default(#20067,#10000,16,7,16,7) +tokeninfo(#20066,8,#20001,5,"{") +#20067=@"loc,{#10000},3,19,3,19" +locations_default(#20067,#10000,3,19,3,19) hasLocation(#20066,#20067) -enclosingStmt(#20066,#20060) -exprContainers(#20066,#20054) -literals("x","x",#20066) -isAbstractMember(#20064) #20068=* -typeexprs(#20068,2,#20064,2,"number") -#20069=@"loc,{#10000},16,10,16,15" -locations_default(#20069,#10000,16,10,16,15) +tokeninfo(#20068,8,#20001,6,"}") +#20069=@"loc,{#10000},3,20,3,20" +locations_default(#20069,#10000,3,20,3,20) hasLocation(#20068,#20069) -enclosingStmt(#20068,#20060) -exprContainers(#20068,#20054) -literals("number","number",#20068) #20070=* -properties(#20070,#20060,3,0,"foo(): number;") -#20071=@"loc,{#10000},17,7,17,20" -locations_default(#20071,#10000,17,7,17,20) +tokeninfo(#20070,7,#20001,7,"namespace") +#20071=@"loc,{#10000},4,3,4,11" +locations_default(#20071,#10000,4,3,4,11) hasLocation(#20070,#20071) #20072=* -exprs(#20072,0,#20070,0,"foo") -#20073=@"loc,{#10000},17,7,17,9" -locations_default(#20073,#10000,17,7,17,9) +tokeninfo(#20072,6,#20001,8,"Comments") +#20073=@"loc,{#10000},4,13,4,20" +locations_default(#20073,#10000,4,13,4,20) hasLocation(#20072,#20073) -enclosingStmt(#20072,#20060) -exprContainers(#20072,#20054) -literals("foo","foo",#20072) #20074=* -exprs(#20074,9,#20070,1,"foo(): number;") -hasLocation(#20074,#20071) -enclosingStmt(#20074,#20060) -exprContainers(#20074,#20054) -#20075=* -scopes(#20075,1) -scopenodes(#20074,#20075) -scopenesting(#20075,#20058) -#20076=@"var;{arguments};{#20075}" -variables(#20076,"arguments",#20075) -isArgumentsObject(#20076) -#20077=* -typeexprs(#20077,2,#20074,-3,"number") -#20078=@"loc,{#10000},17,14,17,19" -locations_default(#20078,#10000,17,14,17,19) -hasLocation(#20077,#20078) -exprContainers(#20077,#20074) -literals("number","number",#20077) -numlines(#20074,1,1,0) -isMethod(#20070) -isAbstractMember(#20070) -#20079=* -stmts(#20079,31,#20005,5,"namespa ... ent {;}") -#20080=@"loc,{#10000},21,3,21,30" -locations_default(#20080,#10000,21,3,21,30) -hasLocation(#20079,#20080) -stmtContainers(#20079,#20005) -#20081=* -exprs(#20081,78,#20079,-1,"EmptyStatement") -#20082=@"loc,{#10000},21,13,21,26" -locations_default(#20082,#10000,21,13,21,26) -hasLocation(#20081,#20082) -enclosingStmt(#20081,#20079) -exprContainers(#20081,#20005) -literals("EmptyStatement","EmptyStatement",#20081) -decl(#20081,#20010) -namespacedecl(#20081,#20018) -#20083=* -scopes(#20083,9) -scopenodes(#20079,#20083) -scopenesting(#20083,#20009) +tokeninfo(#20074,8,#20001,9,"{") +#20075=@"loc,{#10000},4,22,4,22" +locations_default(#20075,#10000,4,22,4,22) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,8,#20001,10,"}") +#20077=@"loc,{#10000},7,3,7,3" +locations_default(#20077,#10000,7,3,7,3) +hasLocation(#20076,#20077) +next_token(#20002,#20076) +next_token(#20004,#20076) +#20078=* +tokeninfo(#20078,7,#20001,11,"namespace") +#20079=@"loc,{#10000},8,3,8,11" +locations_default(#20079,#10000,8,3,8,11) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,6,#20001,12,"Outer") +#20081=@"loc,{#10000},8,13,8,17" +locations_default(#20081,#10000,8,13,8,17) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,8,#20001,13,"{") +#20083=@"loc,{#10000},8,19,8,19" +locations_default(#20083,#10000,8,19,8,19) +hasLocation(#20082,#20083) #20084=* -stmts(#20084,0,#20079,0,";") -#20085=@"loc,{#10000},21,29,21,29" -locations_default(#20085,#10000,21,29,21,29) +tokeninfo(#20084,7,#20001,14,"namespace") +#20085=@"loc,{#10000},9,5,9,13" +locations_default(#20085,#10000,9,5,9,13) hasLocation(#20084,#20085) -stmtContainers(#20084,#20079) -isInstantiated(#20079) #20086=* -stmts(#20086,31,#20005,6,"namespa ... ck {{}}") -#20087=@"loc,{#10000},22,3,22,27" -locations_default(#20087,#10000,22,3,22,27) +tokeninfo(#20086,6,#20001,15,"Inner") +#20087=@"loc,{#10000},9,15,9,19" +locations_default(#20087,#10000,9,15,9,19) hasLocation(#20086,#20087) -stmtContainers(#20086,#20005) #20088=* -exprs(#20088,78,#20086,-1,"EmptyBlock") -#20089=@"loc,{#10000},22,13,22,22" -locations_default(#20089,#10000,22,13,22,22) +tokeninfo(#20088,8,#20001,16,"{") +#20089=@"loc,{#10000},9,21,9,21" +locations_default(#20089,#10000,9,21,9,21) hasLocation(#20088,#20089) -enclosingStmt(#20088,#20086) -exprContainers(#20088,#20005) -literals("EmptyBlock","EmptyBlock",#20088) -decl(#20088,#20011) -namespacedecl(#20088,#20019) #20090=* -scopes(#20090,9) -scopenodes(#20086,#20090) -scopenesting(#20090,#20009) -#20091=* -stmts(#20091,1,#20086,0,"{}") -#20092=@"loc,{#10000},22,25,22,26" -locations_default(#20092,#10000,22,25,22,26) -hasLocation(#20091,#20092) -stmtContainers(#20091,#20086) -isInstantiated(#20086) -#20093=* -stmts(#20093,18,#20005,7,"var x = ... yBlock]") -#20094=@"loc,{#10000},24,3,24,82" -locations_default(#20094,#10000,24,3,24,82) -hasLocation(#20093,#20094) -stmtContainers(#20093,#20005) -#20095=* -exprs(#20095,64,#20093,0,"x = [Em ... yBlock]") -#20096=@"loc,{#10000},24,7,24,82" -locations_default(#20096,#10000,24,7,24,82) -hasLocation(#20095,#20096) -enclosingStmt(#20095,#20093) -exprContainers(#20095,#20005) -#20097=* -exprs(#20097,78,#20095,0,"x") -#20098=@"loc,{#10000},24,7,24,7" -locations_default(#20098,#10000,24,7,24,7) -hasLocation(#20097,#20098) -enclosingStmt(#20097,#20093) -exprContainers(#20097,#20005) -literals("x","x",#20097) -decl(#20097,#20012) -#20099=* -exprs(#20099,7,#20095,1,"[Empty, ... yBlock]") -#20100=@"loc,{#10000},24,11,24,82" -locations_default(#20100,#10000,24,11,24,82) -hasLocation(#20099,#20100) -enclosingStmt(#20099,#20093) -exprContainers(#20099,#20005) -#20101=* -exprs(#20101,79,#20099,0,"Empty") -#20102=@"loc,{#10000},24,12,24,16" -locations_default(#20102,#10000,24,12,24,16) -hasLocation(#20101,#20102) -enclosingStmt(#20101,#20093) -exprContainers(#20101,#20005) -literals("Empty","Empty",#20101) -#20103=@"var;{Empty};{#20000}" -variables(#20103,"Empty",#20000) -bind(#20101,#20103) +tokeninfo(#20090,8,#20001,17,"}") +#20091=@"loc,{#10000},9,22,9,22" +locations_default(#20091,#10000,9,22,9,22) +hasLocation(#20090,#20091) +#20092=* +tokeninfo(#20092,8,#20001,18,"}") +#20093=@"loc,{#10000},10,3,10,3" +locations_default(#20093,#10000,10,3,10,3) +hasLocation(#20092,#20093) +#20094=* +tokeninfo(#20094,7,#20001,19,"namespace") +#20095=@"loc,{#10000},11,3,11,11" +locations_default(#20095,#10000,11,3,11,11) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,6,#20001,20,"Outer2") +#20097=@"loc,{#10000},11,13,11,18" +locations_default(#20097,#10000,11,13,11,18) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,8,#20001,21,"{") +#20099=@"loc,{#10000},11,20,11,20" +locations_default(#20099,#10000,11,20,11,20) +hasLocation(#20098,#20099) +#20100=* +tokeninfo(#20100,7,#20001,22,"export") +#20101=@"loc,{#10000},12,5,12,10" +locations_default(#20101,#10000,12,5,12,10) +hasLocation(#20100,#20101) +#20102=* +tokeninfo(#20102,7,#20001,23,"namespace") +#20103=@"loc,{#10000},12,12,12,20" +locations_default(#20103,#10000,12,12,12,20) +hasLocation(#20102,#20103) #20104=* -exprs(#20104,79,#20099,1,"Comments") -#20105=@"loc,{#10000},24,19,24,26" -locations_default(#20105,#10000,24,19,24,26) +tokeninfo(#20104,6,#20001,24,"Inner") +#20105=@"loc,{#10000},12,22,12,26" +locations_default(#20105,#10000,12,22,12,26) hasLocation(#20104,#20105) -enclosingStmt(#20104,#20093) -exprContainers(#20104,#20005) -literals("Comments","Comments",#20104) -#20106=@"var;{Comments};{#20000}" -variables(#20106,"Comments",#20000) -bind(#20104,#20106) -#20107=* -exprs(#20107,79,#20099,2,"Outer") -#20108=@"loc,{#10000},24,29,24,33" -locations_default(#20108,#10000,24,29,24,33) -hasLocation(#20107,#20108) -enclosingStmt(#20107,#20093) -exprContainers(#20107,#20005) -literals("Outer","Outer",#20107) -#20109=@"var;{Outer};{#20000}" -variables(#20109,"Outer",#20000) -bind(#20107,#20109) +#20106=* +tokeninfo(#20106,8,#20001,25,"{") +#20107=@"loc,{#10000},12,28,12,28" +locations_default(#20107,#10000,12,28,12,28) +hasLocation(#20106,#20107) +#20108=* +tokeninfo(#20108,8,#20001,26,"}") +#20109=@"loc,{#10000},12,29,12,29" +locations_default(#20109,#10000,12,29,12,29) +hasLocation(#20108,#20109) #20110=* -exprs(#20110,79,#20099,3,"Outer2") -#20111=@"loc,{#10000},24,36,24,41" -locations_default(#20111,#10000,24,36,24,41) +tokeninfo(#20110,8,#20001,27,"}") +#20111=@"loc,{#10000},13,3,13,3" +locations_default(#20111,#10000,13,3,13,3) hasLocation(#20110,#20111) -enclosingStmt(#20110,#20093) -exprContainers(#20110,#20005) -literals("Outer2","Outer2",#20110) -#20112=@"var;{Outer2};{#20000}" -variables(#20112,"Outer2",#20000) -bind(#20110,#20112) -#20113=* -exprs(#20113,79,#20099,4,"Interfaces") -#20114=@"loc,{#10000},24,44,24,53" -locations_default(#20114,#10000,24,44,24,53) -hasLocation(#20113,#20114) -enclosingStmt(#20113,#20093) -exprContainers(#20113,#20005) -literals("Interfaces","Interfaces",#20113) -#20115=@"var;{Interfaces};{#20000}" -variables(#20115,"Interfaces",#20000) -bind(#20113,#20115) +#20112=* +tokeninfo(#20112,7,#20001,28,"namespace") +#20113=@"loc,{#10000},14,3,14,11" +locations_default(#20113,#10000,14,3,14,11) +hasLocation(#20112,#20113) +#20114=* +tokeninfo(#20114,6,#20001,29,"Interfaces") +#20115=@"loc,{#10000},14,13,14,22" +locations_default(#20115,#10000,14,13,14,22) +hasLocation(#20114,#20115) #20116=* -exprs(#20116,79,#20099,5,"EmptyStatement") -#20117=@"loc,{#10000},24,56,24,69" -locations_default(#20117,#10000,24,56,24,69) +tokeninfo(#20116,8,#20001,30,"{") +#20117=@"loc,{#10000},14,24,14,24" +locations_default(#20117,#10000,14,24,14,24) hasLocation(#20116,#20117) -enclosingStmt(#20116,#20093) -exprContainers(#20116,#20005) -literals("EmptyStatement","EmptyStatement",#20116) -bind(#20116,#20010) #20118=* -exprs(#20118,79,#20099,6,"EmptyBlock") -#20119=@"loc,{#10000},24,72,24,81" -locations_default(#20119,#10000,24,72,24,81) +tokeninfo(#20118,7,#20001,31,"interface") +#20119=@"loc,{#10000},15,5,15,13" +locations_default(#20119,#10000,15,5,15,13) hasLocation(#20118,#20119) -enclosingStmt(#20118,#20093) -exprContainers(#20118,#20005) -literals("EmptyBlock","EmptyBlock",#20118) -bind(#20118,#20011) -arraySize(#20099,7) -isInstantiated(#20005) #20120=* -comments(#20120,0,#20001," foo","// foo") -#20121=@"loc,{#10000},5,5,5,10" -locations_default(#20121,#10000,5,5,5,10) +tokeninfo(#20120,6,#20001,32,"I") +#20121=@"loc,{#10000},15,15,15,15" +locations_default(#20121,#10000,15,15,15,15) hasLocation(#20120,#20121) #20122=* -comments(#20122,1,#20001," bar ","/* bar */") -#20123=@"loc,{#10000},6,5,6,13" -locations_default(#20123,#10000,6,5,6,13) +tokeninfo(#20122,8,#20001,33,"{") +#20123=@"loc,{#10000},15,17,15,17" +locations_default(#20123,#10000,15,17,15,17) hasLocation(#20122,#20123) #20124=* -lines(#20124,#20001,"namespace Wrapper {"," -") -#20125=@"loc,{#10000},1,1,1,19" -locations_default(#20125,#10000,1,1,1,19) +tokeninfo(#20124,6,#20001,34,"x") +#20125=@"loc,{#10000},16,7,16,7" +locations_default(#20125,#10000,16,7,16,7) hasLocation(#20124,#20125) #20126=* -lines(#20126,#20001,""," -") -#20127=@"loc,{#10000},2,1,2,0" -locations_default(#20127,#10000,2,1,2,0) +tokeninfo(#20126,8,#20001,35,":") +#20127=@"loc,{#10000},16,8,16,8" +locations_default(#20127,#10000,16,8,16,8) hasLocation(#20126,#20127) #20128=* -lines(#20128,#20001," namespace Empty {}"," -") -#20129=@"loc,{#10000},3,1,3,20" -locations_default(#20129,#10000,3,1,3,20) +tokeninfo(#20128,7,#20001,36,"number") +#20129=@"loc,{#10000},16,10,16,15" +locations_default(#20129,#10000,16,10,16,15) hasLocation(#20128,#20129) -indentation(#10000,3," ",2) #20130=* -lines(#20130,#20001," namespace Comments {"," -") -#20131=@"loc,{#10000},4,1,4,22" -locations_default(#20131,#10000,4,1,4,22) +tokeninfo(#20130,8,#20001,37,";") +#20131=@"loc,{#10000},16,16,16,16" +locations_default(#20131,#10000,16,16,16,16) hasLocation(#20130,#20131) -indentation(#10000,4," ",2) #20132=* -lines(#20132,#20001," // foo"," -") -#20133=@"loc,{#10000},5,1,5,10" -locations_default(#20133,#10000,5,1,5,10) +tokeninfo(#20132,6,#20001,38,"foo") +#20133=@"loc,{#10000},17,7,17,9" +locations_default(#20133,#10000,17,7,17,9) hasLocation(#20132,#20133) -indentation(#10000,5," ",4) #20134=* -lines(#20134,#20001," /* bar */"," -") -#20135=@"loc,{#10000},6,1,6,13" -locations_default(#20135,#10000,6,1,6,13) +tokeninfo(#20134,8,#20001,39,"(") +#20135=@"loc,{#10000},17,10,17,10" +locations_default(#20135,#10000,17,10,17,10) hasLocation(#20134,#20135) -indentation(#10000,6," ",4) #20136=* -lines(#20136,#20001," }"," -") -#20137=@"loc,{#10000},7,1,7,3" -locations_default(#20137,#10000,7,1,7,3) +tokeninfo(#20136,8,#20001,40,")") +#20137=@"loc,{#10000},17,11,17,11" +locations_default(#20137,#10000,17,11,17,11) hasLocation(#20136,#20137) -indentation(#10000,7," ",2) #20138=* -lines(#20138,#20001," namespace Outer {"," -") -#20139=@"loc,{#10000},8,1,8,19" -locations_default(#20139,#10000,8,1,8,19) +tokeninfo(#20138,8,#20001,41,":") +#20139=@"loc,{#10000},17,12,17,12" +locations_default(#20139,#10000,17,12,17,12) hasLocation(#20138,#20139) -indentation(#10000,8," ",2) #20140=* -lines(#20140,#20001," namespace Inner {}"," -") -#20141=@"loc,{#10000},9,1,9,22" -locations_default(#20141,#10000,9,1,9,22) +tokeninfo(#20140,7,#20001,42,"number") +#20141=@"loc,{#10000},17,14,17,19" +locations_default(#20141,#10000,17,14,17,19) hasLocation(#20140,#20141) -indentation(#10000,9," ",4) #20142=* -lines(#20142,#20001," }"," -") -#20143=@"loc,{#10000},10,1,10,3" -locations_default(#20143,#10000,10,1,10,3) +tokeninfo(#20142,8,#20001,43,";") +#20143=@"loc,{#10000},17,20,17,20" +locations_default(#20143,#10000,17,20,17,20) hasLocation(#20142,#20143) -indentation(#10000,10," ",2) #20144=* -lines(#20144,#20001," namespace Outer2 {"," -") -#20145=@"loc,{#10000},11,1,11,20" -locations_default(#20145,#10000,11,1,11,20) +tokeninfo(#20144,8,#20001,44,"}") +#20145=@"loc,{#10000},18,5,18,5" +locations_default(#20145,#10000,18,5,18,5) hasLocation(#20144,#20145) -indentation(#10000,11," ",2) #20146=* -lines(#20146,#20001," export namespace Inner {}"," -") -#20147=@"loc,{#10000},12,1,12,29" -locations_default(#20147,#10000,12,1,12,29) +tokeninfo(#20146,8,#20001,45,"}") +#20147=@"loc,{#10000},19,3,19,3" +locations_default(#20147,#10000,19,3,19,3) hasLocation(#20146,#20147) -indentation(#10000,12," ",4) #20148=* -lines(#20148,#20001," }"," -") -#20149=@"loc,{#10000},13,1,13,3" -locations_default(#20149,#10000,13,1,13,3) +tokeninfo(#20148,7,#20001,46,"namespace") +#20149=@"loc,{#10000},21,3,21,11" +locations_default(#20149,#10000,21,3,21,11) hasLocation(#20148,#20149) -indentation(#10000,13," ",2) #20150=* -lines(#20150,#20001," namespace Interfaces {"," -") -#20151=@"loc,{#10000},14,1,14,24" -locations_default(#20151,#10000,14,1,14,24) +tokeninfo(#20150,6,#20001,47,"EmptyStatement") +#20151=@"loc,{#10000},21,13,21,26" +locations_default(#20151,#10000,21,13,21,26) hasLocation(#20150,#20151) -indentation(#10000,14," ",2) #20152=* -lines(#20152,#20001," interface I {"," -") -#20153=@"loc,{#10000},15,1,15,17" -locations_default(#20153,#10000,15,1,15,17) +tokeninfo(#20152,8,#20001,48,"{") +#20153=@"loc,{#10000},21,28,21,28" +locations_default(#20153,#10000,21,28,21,28) hasLocation(#20152,#20153) -indentation(#10000,15," ",4) #20154=* -lines(#20154,#20001," x: number;"," -") -#20155=@"loc,{#10000},16,1,16,16" -locations_default(#20155,#10000,16,1,16,16) +tokeninfo(#20154,8,#20001,49,";") +#20155=@"loc,{#10000},21,29,21,29" +locations_default(#20155,#10000,21,29,21,29) hasLocation(#20154,#20155) -indentation(#10000,16," ",6) #20156=* -lines(#20156,#20001," foo(): number;"," -") -#20157=@"loc,{#10000},17,1,17,20" -locations_default(#20157,#10000,17,1,17,20) +tokeninfo(#20156,8,#20001,50,"}") +#20157=@"loc,{#10000},21,30,21,30" +locations_default(#20157,#10000,21,30,21,30) hasLocation(#20156,#20157) -indentation(#10000,17," ",6) #20158=* -lines(#20158,#20001," }"," -") -#20159=@"loc,{#10000},18,1,18,5" -locations_default(#20159,#10000,18,1,18,5) +tokeninfo(#20158,7,#20001,51,"namespace") +#20159=@"loc,{#10000},22,3,22,11" +locations_default(#20159,#10000,22,3,22,11) hasLocation(#20158,#20159) -indentation(#10000,18," ",4) #20160=* -lines(#20160,#20001," }"," -") -#20161=@"loc,{#10000},19,1,19,3" -locations_default(#20161,#10000,19,1,19,3) +tokeninfo(#20160,6,#20001,52,"EmptyBlock") +#20161=@"loc,{#10000},22,13,22,22" +locations_default(#20161,#10000,22,13,22,22) hasLocation(#20160,#20161) -indentation(#10000,19," ",2) #20162=* -lines(#20162,#20001,""," -") -#20163=@"loc,{#10000},20,1,20,0" -locations_default(#20163,#10000,20,1,20,0) +tokeninfo(#20162,8,#20001,53,"{") +#20163=@"loc,{#10000},22,24,22,24" +locations_default(#20163,#10000,22,24,22,24) hasLocation(#20162,#20163) #20164=* -lines(#20164,#20001," namespace EmptyStatement {;}"," -") -#20165=@"loc,{#10000},21,1,21,30" -locations_default(#20165,#10000,21,1,21,30) +tokeninfo(#20164,8,#20001,54,"{") +#20165=@"loc,{#10000},22,25,22,25" +locations_default(#20165,#10000,22,25,22,25) hasLocation(#20164,#20165) -indentation(#10000,21," ",2) #20166=* -lines(#20166,#20001," namespace EmptyBlock {{}}"," -") -#20167=@"loc,{#10000},22,1,22,27" -locations_default(#20167,#10000,22,1,22,27) +tokeninfo(#20166,8,#20001,55,"}") +#20167=@"loc,{#10000},22,26,22,26" +locations_default(#20167,#10000,22,26,22,26) hasLocation(#20166,#20167) -indentation(#10000,22," ",2) #20168=* -lines(#20168,#20001,""," -") -#20169=@"loc,{#10000},23,1,23,0" -locations_default(#20169,#10000,23,1,23,0) +tokeninfo(#20168,8,#20001,56,"}") +#20169=@"loc,{#10000},22,27,22,27" +locations_default(#20169,#10000,22,27,22,27) hasLocation(#20168,#20169) #20170=* -lines(#20170,#20001," var x = [Empty, Comments, Outer, Outer2, Interfaces, EmptyStatement, EmptyBlock]"," -") -#20171=@"loc,{#10000},24,1,24,82" -locations_default(#20171,#10000,24,1,24,82) +tokeninfo(#20170,7,#20001,57,"var") +#20171=@"loc,{#10000},24,3,24,5" +locations_default(#20171,#10000,24,3,24,5) hasLocation(#20170,#20171) -indentation(#10000,24," ",2) #20172=* -lines(#20172,#20001,"}"," -") -#20173=@"loc,{#10000},25,1,25,1" -locations_default(#20173,#10000,25,1,25,1) +tokeninfo(#20172,6,#20001,58,"x") +#20173=@"loc,{#10000},24,7,24,7" +locations_default(#20173,#10000,24,7,24,7) hasLocation(#20172,#20173) -numlines(#20001,25,20,2) #20174=* -tokeninfo(#20174,7,#20001,0,"namespace") -#20175=@"loc,{#10000},1,1,1,9" -locations_default(#20175,#10000,1,1,1,9) +tokeninfo(#20174,8,#20001,59,"=") +#20175=@"loc,{#10000},24,9,24,9" +locations_default(#20175,#10000,24,9,24,9) hasLocation(#20174,#20175) #20176=* -tokeninfo(#20176,6,#20001,1,"Wrapper") -hasLocation(#20176,#20008) -#20177=* -tokeninfo(#20177,8,#20001,2,"{") -#20178=@"loc,{#10000},1,19,1,19" -locations_default(#20178,#10000,1,19,1,19) -hasLocation(#20177,#20178) -#20179=* -tokeninfo(#20179,7,#20001,3,"namespace") -#20180=@"loc,{#10000},3,3,3,11" -locations_default(#20180,#10000,3,3,3,11) -hasLocation(#20179,#20180) -#20181=* -tokeninfo(#20181,6,#20001,4,"Empty") -hasLocation(#20181,#20023) +tokeninfo(#20176,8,#20001,60,"[") +#20177=@"loc,{#10000},24,11,24,11" +locations_default(#20177,#10000,24,11,24,11) +hasLocation(#20176,#20177) +#20178=* +tokeninfo(#20178,6,#20001,61,"Empty") +#20179=@"loc,{#10000},24,12,24,16" +locations_default(#20179,#10000,24,12,24,16) +hasLocation(#20178,#20179) +#20180=* +tokeninfo(#20180,8,#20001,62,",") +#20181=@"loc,{#10000},24,17,24,17" +locations_default(#20181,#10000,24,17,24,17) +hasLocation(#20180,#20181) #20182=* -tokeninfo(#20182,8,#20001,5,"{") -#20183=@"loc,{#10000},3,19,3,19" -locations_default(#20183,#10000,3,19,3,19) +tokeninfo(#20182,6,#20001,63,"Comments") +#20183=@"loc,{#10000},24,19,24,26" +locations_default(#20183,#10000,24,19,24,26) hasLocation(#20182,#20183) #20184=* -tokeninfo(#20184,8,#20001,6,"}") -#20185=@"loc,{#10000},3,20,3,20" -locations_default(#20185,#10000,3,20,3,20) +tokeninfo(#20184,8,#20001,64,",") +#20185=@"loc,{#10000},24,27,24,27" +locations_default(#20185,#10000,24,27,24,27) hasLocation(#20184,#20185) #20186=* -tokeninfo(#20186,7,#20001,7,"namespace") -#20187=@"loc,{#10000},4,3,4,11" -locations_default(#20187,#10000,4,3,4,11) +tokeninfo(#20186,6,#20001,65,"Outer") +#20187=@"loc,{#10000},24,29,24,33" +locations_default(#20187,#10000,24,29,24,33) hasLocation(#20186,#20187) #20188=* -tokeninfo(#20188,6,#20001,8,"Comments") -hasLocation(#20188,#20028) -#20189=* -tokeninfo(#20189,8,#20001,9,"{") -#20190=@"loc,{#10000},4,22,4,22" -locations_default(#20190,#10000,4,22,4,22) -hasLocation(#20189,#20190) -#20191=* -tokeninfo(#20191,8,#20001,10,"}") -#20192=@"loc,{#10000},7,3,7,3" -locations_default(#20192,#10000,7,3,7,3) -hasLocation(#20191,#20192) -next_token(#20120,#20191) -next_token(#20122,#20191) -#20193=* -tokeninfo(#20193,7,#20001,11,"namespace") -#20194=@"loc,{#10000},8,3,8,11" -locations_default(#20194,#10000,8,3,8,11) -hasLocation(#20193,#20194) -#20195=* -tokeninfo(#20195,6,#20001,12,"Outer") -hasLocation(#20195,#20033) +tokeninfo(#20188,8,#20001,66,",") +#20189=@"loc,{#10000},24,34,24,34" +locations_default(#20189,#10000,24,34,24,34) +hasLocation(#20188,#20189) +#20190=* +tokeninfo(#20190,6,#20001,67,"Outer2") +#20191=@"loc,{#10000},24,36,24,41" +locations_default(#20191,#10000,24,36,24,41) +hasLocation(#20190,#20191) +#20192=* +tokeninfo(#20192,8,#20001,68,",") +#20193=@"loc,{#10000},24,42,24,42" +locations_default(#20193,#10000,24,42,24,42) +hasLocation(#20192,#20193) +#20194=* +tokeninfo(#20194,6,#20001,69,"Interfaces") +#20195=@"loc,{#10000},24,44,24,53" +locations_default(#20195,#10000,24,44,24,53) +hasLocation(#20194,#20195) #20196=* -tokeninfo(#20196,8,#20001,13,"{") -#20197=@"loc,{#10000},8,19,8,19" -locations_default(#20197,#10000,8,19,8,19) +tokeninfo(#20196,8,#20001,70,",") +#20197=@"loc,{#10000},24,54,24,54" +locations_default(#20197,#10000,24,54,24,54) hasLocation(#20196,#20197) #20198=* -tokeninfo(#20198,7,#20001,14,"namespace") -#20199=@"loc,{#10000},9,5,9,13" -locations_default(#20199,#10000,9,5,9,13) +tokeninfo(#20198,6,#20001,71,"EmptyStatement") +#20199=@"loc,{#10000},24,56,24,69" +locations_default(#20199,#10000,24,56,24,69) hasLocation(#20198,#20199) #20200=* -tokeninfo(#20200,6,#20001,15,"Inner") -hasLocation(#20200,#20039) -#20201=* -tokeninfo(#20201,8,#20001,16,"{") -#20202=@"loc,{#10000},9,21,9,21" -locations_default(#20202,#10000,9,21,9,21) -hasLocation(#20201,#20202) -#20203=* -tokeninfo(#20203,8,#20001,17,"}") -#20204=@"loc,{#10000},9,22,9,22" -locations_default(#20204,#10000,9,22,9,22) -hasLocation(#20203,#20204) -#20205=* -tokeninfo(#20205,8,#20001,18,"}") -#20206=@"loc,{#10000},10,3,10,3" -locations_default(#20206,#10000,10,3,10,3) -hasLocation(#20205,#20206) +tokeninfo(#20200,8,#20001,72,",") +#20201=@"loc,{#10000},24,70,24,70" +locations_default(#20201,#10000,24,70,24,70) +hasLocation(#20200,#20201) +#20202=* +tokeninfo(#20202,6,#20001,73,"EmptyBlock") +#20203=@"loc,{#10000},24,72,24,81" +locations_default(#20203,#10000,24,72,24,81) +hasLocation(#20202,#20203) +#20204=* +tokeninfo(#20204,8,#20001,74,"]") +#20205=@"loc,{#10000},24,82,24,82" +locations_default(#20205,#10000,24,82,24,82) +hasLocation(#20204,#20205) +#20206=* +tokeninfo(#20206,8,#20001,75,"}") +hasLocation(#20206,#20055) #20207=* -tokeninfo(#20207,7,#20001,19,"namespace") -#20208=@"loc,{#10000},11,3,11,11" -locations_default(#20208,#10000,11,3,11,11) +tokeninfo(#20207,0,#20001,76,"") +#20208=@"loc,{#10000},26,1,26,0" +locations_default(#20208,#10000,26,1,26,0) hasLocation(#20207,#20208) -#20209=* -tokeninfo(#20209,6,#20001,20,"Outer2") -hasLocation(#20209,#20044) -#20210=* -tokeninfo(#20210,8,#20001,21,"{") -#20211=@"loc,{#10000},11,20,11,20" -locations_default(#20211,#10000,11,20,11,20) -hasLocation(#20210,#20211) +toplevels(#20001,0) +#20209=@"loc,{#10000},1,1,26,0" +locations_default(#20209,#10000,1,1,26,0) +hasLocation(#20001,#20209) +#20210=@"var;{Wrapper};{#20000}" +variables(#20210,"Wrapper",#20000) +#20211=@"local_namespace_name;{Wrapper};{#20000}" +local_namespace_names(#20211,"Wrapper",#20000) #20212=* -tokeninfo(#20212,7,#20001,22,"export") -#20213=@"loc,{#10000},12,5,12,10" -locations_default(#20213,#10000,12,5,12,10) +stmts(#20212,31,#20001,0,"namespa ... lock]\n}") +#20213=@"loc,{#10000},1,1,25,1" +locations_default(#20213,#10000,1,1,25,1) hasLocation(#20212,#20213) +stmtContainers(#20212,#20001) #20214=* -tokeninfo(#20214,7,#20001,23,"namespace") -#20215=@"loc,{#10000},12,12,12,20" -locations_default(#20215,#10000,12,12,12,20) -hasLocation(#20214,#20215) -#20216=* -tokeninfo(#20216,6,#20001,24,"Inner") -hasLocation(#20216,#20052) -#20217=* -tokeninfo(#20217,8,#20001,25,"{") -#20218=@"loc,{#10000},12,28,12,28" -locations_default(#20218,#10000,12,28,12,28) -hasLocation(#20217,#20218) -#20219=* -tokeninfo(#20219,8,#20001,26,"}") -#20220=@"loc,{#10000},12,29,12,29" -locations_default(#20220,#10000,12,29,12,29) -hasLocation(#20219,#20220) -#20221=* -tokeninfo(#20221,8,#20001,27,"}") -#20222=@"loc,{#10000},13,3,13,3" -locations_default(#20222,#10000,13,3,13,3) -hasLocation(#20221,#20222) -#20223=* -tokeninfo(#20223,7,#20001,28,"namespace") -#20224=@"loc,{#10000},14,3,14,11" -locations_default(#20224,#10000,14,3,14,11) -hasLocation(#20223,#20224) -#20225=* -tokeninfo(#20225,6,#20001,29,"Interfaces") -hasLocation(#20225,#20057) +exprs(#20214,78,#20212,-1,"Wrapper") +hasLocation(#20214,#20059) +enclosingStmt(#20214,#20212) +exprContainers(#20214,#20001) +literals("Wrapper","Wrapper",#20214) +decl(#20214,#20210) +namespacedecl(#20214,#20211) +#20215=* +scopes(#20215,9) +scopenodes(#20212,#20215) +scopenesting(#20215,#20000) +#20216=@"var;{EmptyStatement};{#20215}" +variables(#20216,"EmptyStatement",#20215) +#20217=@"var;{EmptyBlock};{#20215}" +variables(#20217,"EmptyBlock",#20215) +#20218=@"var;{x};{#20215}" +variables(#20218,"x",#20215) +#20219=@"local_namespace_name;{Empty};{#20215}" +local_namespace_names(#20219,"Empty",#20215) +#20220=@"local_namespace_name;{Comments};{#20215}" +local_namespace_names(#20220,"Comments",#20215) +#20221=@"local_namespace_name;{Outer};{#20215}" +local_namespace_names(#20221,"Outer",#20215) +#20222=@"local_namespace_name;{Outer2};{#20215}" +local_namespace_names(#20222,"Outer2",#20215) +#20223=@"local_namespace_name;{Interfaces};{#20215}" +local_namespace_names(#20223,"Interfaces",#20215) +#20224=@"local_namespace_name;{EmptyStatement};{#20215}" +local_namespace_names(#20224,"EmptyStatement",#20215) +#20225=@"local_namespace_name;{EmptyBlock};{#20215}" +local_namespace_names(#20225,"EmptyBlock",#20215) #20226=* -tokeninfo(#20226,8,#20001,30,"{") -#20227=@"loc,{#10000},14,24,14,24" -locations_default(#20227,#10000,14,24,14,24) +stmts(#20226,31,#20212,0,"namespace Empty {}") +#20227=@"loc,{#10000},3,3,3,20" +locations_default(#20227,#10000,3,3,3,20) hasLocation(#20226,#20227) +stmtContainers(#20226,#20212) #20228=* -tokeninfo(#20228,7,#20001,31,"interface") -#20229=@"loc,{#10000},15,5,15,13" -locations_default(#20229,#10000,15,5,15,13) -hasLocation(#20228,#20229) +exprs(#20228,78,#20226,-1,"Empty") +hasLocation(#20228,#20065) +enclosingStmt(#20228,#20226) +exprContainers(#20228,#20212) +literals("Empty","Empty",#20228) +namespacedecl(#20228,#20219) +#20229=* +scopes(#20229,9) +scopenodes(#20226,#20229) +scopenesting(#20229,#20215) #20230=* -tokeninfo(#20230,6,#20001,32,"I") -hasLocation(#20230,#20063) -#20231=* -tokeninfo(#20231,8,#20001,33,"{") -#20232=@"loc,{#10000},15,17,15,17" -locations_default(#20232,#10000,15,17,15,17) -hasLocation(#20231,#20232) +stmts(#20230,31,#20212,1,"namespa ... */\n }") +#20231=@"loc,{#10000},4,3,7,3" +locations_default(#20231,#10000,4,3,7,3) +hasLocation(#20230,#20231) +stmtContainers(#20230,#20212) +#20232=* +exprs(#20232,78,#20230,-1,"Comments") +hasLocation(#20232,#20073) +enclosingStmt(#20232,#20230) +exprContainers(#20232,#20212) +literals("Comments","Comments",#20232) +namespacedecl(#20232,#20220) #20233=* -tokeninfo(#20233,6,#20001,34,"x") -hasLocation(#20233,#20067) +scopes(#20233,9) +scopenodes(#20230,#20233) +scopenesting(#20233,#20215) #20234=* -tokeninfo(#20234,8,#20001,35,":") -#20235=@"loc,{#10000},16,8,16,8" -locations_default(#20235,#10000,16,8,16,8) +stmts(#20234,31,#20212,2,"namespa ... {}\n }") +#20235=@"loc,{#10000},8,3,10,3" +locations_default(#20235,#10000,8,3,10,3) hasLocation(#20234,#20235) +stmtContainers(#20234,#20212) #20236=* -tokeninfo(#20236,7,#20001,36,"number") -hasLocation(#20236,#20069) +exprs(#20236,78,#20234,-1,"Outer") +hasLocation(#20236,#20081) +enclosingStmt(#20236,#20234) +exprContainers(#20236,#20212) +literals("Outer","Outer",#20236) +namespacedecl(#20236,#20221) #20237=* -tokeninfo(#20237,8,#20001,37,";") -#20238=@"loc,{#10000},16,16,16,16" -locations_default(#20238,#10000,16,16,16,16) -hasLocation(#20237,#20238) +scopes(#20237,9) +scopenodes(#20234,#20237) +scopenesting(#20237,#20215) +#20238=@"local_namespace_name;{Inner};{#20237}" +local_namespace_names(#20238,"Inner",#20237) #20239=* -tokeninfo(#20239,6,#20001,38,"foo") -hasLocation(#20239,#20073) -#20240=* -tokeninfo(#20240,8,#20001,39,"(") -#20241=@"loc,{#10000},17,10,17,10" -locations_default(#20241,#10000,17,10,17,10) -hasLocation(#20240,#20241) +stmts(#20239,31,#20234,0,"namespace Inner {}") +#20240=@"loc,{#10000},9,5,9,22" +locations_default(#20240,#10000,9,5,9,22) +hasLocation(#20239,#20240) +stmtContainers(#20239,#20234) +#20241=* +exprs(#20241,78,#20239,-1,"Inner") +hasLocation(#20241,#20087) +enclosingStmt(#20241,#20239) +exprContainers(#20241,#20234) +literals("Inner","Inner",#20241) +namespacedecl(#20241,#20238) #20242=* -tokeninfo(#20242,8,#20001,40,")") -#20243=@"loc,{#10000},17,11,17,11" -locations_default(#20243,#10000,17,11,17,11) -hasLocation(#20242,#20243) -#20244=* -tokeninfo(#20244,8,#20001,41,":") -#20245=@"loc,{#10000},17,12,17,12" -locations_default(#20245,#10000,17,12,17,12) -hasLocation(#20244,#20245) +scopes(#20242,9) +scopenodes(#20239,#20242) +scopenesting(#20242,#20237) +#20243=* +stmts(#20243,31,#20212,3,"namespa ... {}\n }") +#20244=@"loc,{#10000},11,3,13,3" +locations_default(#20244,#10000,11,3,13,3) +hasLocation(#20243,#20244) +stmtContainers(#20243,#20212) +#20245=* +exprs(#20245,78,#20243,-1,"Outer2") +hasLocation(#20245,#20097) +enclosingStmt(#20245,#20243) +exprContainers(#20245,#20212) +literals("Outer2","Outer2",#20245) +namespacedecl(#20245,#20222) #20246=* -tokeninfo(#20246,7,#20001,42,"number") -hasLocation(#20246,#20078) -#20247=* -tokeninfo(#20247,8,#20001,43,";") -#20248=@"loc,{#10000},17,20,17,20" -locations_default(#20248,#10000,17,20,17,20) -hasLocation(#20247,#20248) -#20249=* -tokeninfo(#20249,8,#20001,44,"}") -#20250=@"loc,{#10000},18,5,18,5" -locations_default(#20250,#10000,18,5,18,5) -hasLocation(#20249,#20250) -#20251=* -tokeninfo(#20251,8,#20001,45,"}") -#20252=@"loc,{#10000},19,3,19,3" -locations_default(#20252,#10000,19,3,19,3) -hasLocation(#20251,#20252) +scopes(#20246,9) +scopenodes(#20243,#20246) +scopenesting(#20246,#20215) +#20247=@"local_namespace_name;{Inner};{#20246}" +local_namespace_names(#20247,"Inner",#20246) +#20248=* +stmts(#20248,30,#20243,0,"export ... nner {}") +#20249=@"loc,{#10000},12,5,12,29" +locations_default(#20249,#10000,12,5,12,29) +hasLocation(#20248,#20249) +stmtContainers(#20248,#20243) +#20250=* +stmts(#20250,31,#20248,-1,"namespace Inner {}") +#20251=@"loc,{#10000},12,12,12,29" +locations_default(#20251,#10000,12,12,12,29) +hasLocation(#20250,#20251) +stmtContainers(#20250,#20243) +#20252=* +exprs(#20252,78,#20250,-1,"Inner") +hasLocation(#20252,#20105) +enclosingStmt(#20252,#20250) +exprContainers(#20252,#20243) +literals("Inner","Inner",#20252) +namespacedecl(#20252,#20247) #20253=* -tokeninfo(#20253,7,#20001,46,"namespace") -#20254=@"loc,{#10000},21,3,21,11" -locations_default(#20254,#10000,21,3,21,11) -hasLocation(#20253,#20254) -#20255=* -tokeninfo(#20255,6,#20001,47,"EmptyStatement") -hasLocation(#20255,#20082) +scopes(#20253,9) +scopenodes(#20250,#20253) +scopenesting(#20253,#20246) +#20254=* +stmts(#20254,31,#20212,4,"namespa ... }\n }") +#20255=@"loc,{#10000},14,3,19,3" +locations_default(#20255,#10000,14,3,19,3) +hasLocation(#20254,#20255) +stmtContainers(#20254,#20212) #20256=* -tokeninfo(#20256,8,#20001,48,"{") -#20257=@"loc,{#10000},21,28,21,28" -locations_default(#20257,#10000,21,28,21,28) -hasLocation(#20256,#20257) -#20258=* -tokeninfo(#20258,8,#20001,49,";") -hasLocation(#20258,#20085) +exprs(#20256,78,#20254,-1,"Interfaces") +hasLocation(#20256,#20115) +enclosingStmt(#20256,#20254) +exprContainers(#20256,#20212) +literals("Interfaces","Interfaces",#20256) +namespacedecl(#20256,#20223) +#20257=* +scopes(#20257,9) +scopenodes(#20254,#20257) +scopenesting(#20257,#20215) +#20258=@"local_type_name;{I};{#20257}" +local_type_names(#20258,"I",#20257) #20259=* -tokeninfo(#20259,8,#20001,50,"}") -#20260=@"loc,{#10000},21,30,21,30" -locations_default(#20260,#10000,21,30,21,30) +stmts(#20259,34,#20254,0,"interfa ... ;\n }") +#20260=@"loc,{#10000},15,5,18,5" +locations_default(#20260,#10000,15,5,18,5) hasLocation(#20259,#20260) +stmtContainers(#20259,#20254) #20261=* -tokeninfo(#20261,7,#20001,51,"namespace") -#20262=@"loc,{#10000},22,3,22,11" -locations_default(#20262,#10000,22,3,22,11) -hasLocation(#20261,#20262) -#20263=* -tokeninfo(#20263,6,#20001,52,"EmptyBlock") -hasLocation(#20263,#20089) +typeexprs(#20261,1,#20259,0,"I") +hasLocation(#20261,#20121) +enclosingStmt(#20261,#20259) +exprContainers(#20261,#20254) +literals("I","I",#20261) +typedecl(#20261,#20258) +#20262=* +properties(#20262,#20259,2,8,"x: number;") +#20263=@"loc,{#10000},16,7,16,16" +locations_default(#20263,#10000,16,7,16,16) +hasLocation(#20262,#20263) #20264=* -tokeninfo(#20264,8,#20001,53,"{") -#20265=@"loc,{#10000},22,24,22,24" -locations_default(#20265,#10000,22,24,22,24) -hasLocation(#20264,#20265) +exprs(#20264,0,#20262,0,"x") +hasLocation(#20264,#20125) +enclosingStmt(#20264,#20259) +exprContainers(#20264,#20254) +literals("x","x",#20264) +isAbstractMember(#20262) +#20265=* +typeexprs(#20265,2,#20262,2,"number") +hasLocation(#20265,#20129) +enclosingStmt(#20265,#20259) +exprContainers(#20265,#20254) +literals("number","number",#20265) #20266=* -tokeninfo(#20266,8,#20001,54,"{") -#20267=@"loc,{#10000},22,25,22,25" -locations_default(#20267,#10000,22,25,22,25) +properties(#20266,#20259,3,0,"foo(): number;") +#20267=@"loc,{#10000},17,7,17,20" +locations_default(#20267,#10000,17,7,17,20) hasLocation(#20266,#20267) #20268=* -tokeninfo(#20268,8,#20001,55,"}") -#20269=@"loc,{#10000},22,26,22,26" -locations_default(#20269,#10000,22,26,22,26) -hasLocation(#20268,#20269) +exprs(#20268,0,#20266,0,"foo") +hasLocation(#20268,#20133) +enclosingStmt(#20268,#20259) +exprContainers(#20268,#20254) +literals("foo","foo",#20268) +#20269=* +exprs(#20269,9,#20266,1,"foo(): number;") +hasLocation(#20269,#20267) +enclosingStmt(#20269,#20259) +exprContainers(#20269,#20254) #20270=* -tokeninfo(#20270,8,#20001,56,"}") -#20271=@"loc,{#10000},22,27,22,27" -locations_default(#20271,#10000,22,27,22,27) -hasLocation(#20270,#20271) +scopes(#20270,1) +scopenodes(#20269,#20270) +scopenesting(#20270,#20257) +#20271=@"var;{arguments};{#20270}" +variables(#20271,"arguments",#20270) +isArgumentsObject(#20271) #20272=* -tokeninfo(#20272,7,#20001,57,"var") -#20273=@"loc,{#10000},24,3,24,5" -locations_default(#20273,#10000,24,3,24,5) -hasLocation(#20272,#20273) -#20274=* -tokeninfo(#20274,6,#20001,58,"x") -hasLocation(#20274,#20098) +typeexprs(#20272,2,#20269,-3,"number") +hasLocation(#20272,#20141) +exprContainers(#20272,#20269) +literals("number","number",#20272) +isMethod(#20266) +isAbstractMember(#20266) +#20273=* +stmts(#20273,31,#20212,5,"namespa ... ent {;}") +#20274=@"loc,{#10000},21,3,21,30" +locations_default(#20274,#10000,21,3,21,30) +hasLocation(#20273,#20274) +stmtContainers(#20273,#20212) #20275=* -tokeninfo(#20275,8,#20001,59,"=") -#20276=@"loc,{#10000},24,9,24,9" -locations_default(#20276,#10000,24,9,24,9) -hasLocation(#20275,#20276) +exprs(#20275,78,#20273,-1,"EmptyStatement") +hasLocation(#20275,#20151) +enclosingStmt(#20275,#20273) +exprContainers(#20275,#20212) +literals("EmptyStatement","EmptyStatement",#20275) +decl(#20275,#20216) +namespacedecl(#20275,#20224) +#20276=* +scopes(#20276,9) +scopenodes(#20273,#20276) +scopenesting(#20276,#20215) #20277=* -tokeninfo(#20277,8,#20001,60,"[") -#20278=@"loc,{#10000},24,11,24,11" -locations_default(#20278,#10000,24,11,24,11) -hasLocation(#20277,#20278) -#20279=* -tokeninfo(#20279,6,#20001,61,"Empty") -hasLocation(#20279,#20102) +stmts(#20277,0,#20273,0,";") +hasLocation(#20277,#20155) +stmtContainers(#20277,#20273) +isInstantiated(#20273) +#20278=* +stmts(#20278,31,#20212,6,"namespa ... ck {{}}") +#20279=@"loc,{#10000},22,3,22,27" +locations_default(#20279,#10000,22,3,22,27) +hasLocation(#20278,#20279) +stmtContainers(#20278,#20212) #20280=* -tokeninfo(#20280,8,#20001,62,",") -#20281=@"loc,{#10000},24,17,24,17" -locations_default(#20281,#10000,24,17,24,17) -hasLocation(#20280,#20281) +exprs(#20280,78,#20278,-1,"EmptyBlock") +hasLocation(#20280,#20161) +enclosingStmt(#20280,#20278) +exprContainers(#20280,#20212) +literals("EmptyBlock","EmptyBlock",#20280) +decl(#20280,#20217) +namespacedecl(#20280,#20225) +#20281=* +scopes(#20281,9) +scopenodes(#20278,#20281) +scopenesting(#20281,#20215) #20282=* -tokeninfo(#20282,6,#20001,63,"Comments") -hasLocation(#20282,#20105) -#20283=* -tokeninfo(#20283,8,#20001,64,",") -#20284=@"loc,{#10000},24,27,24,27" -locations_default(#20284,#10000,24,27,24,27) -hasLocation(#20283,#20284) -#20285=* -tokeninfo(#20285,6,#20001,65,"Outer") -hasLocation(#20285,#20108) +stmts(#20282,1,#20278,0,"{}") +#20283=@"loc,{#10000},22,25,22,26" +locations_default(#20283,#10000,22,25,22,26) +hasLocation(#20282,#20283) +stmtContainers(#20282,#20278) +isInstantiated(#20278) +#20284=* +stmts(#20284,18,#20212,7,"var x = ... yBlock]") +#20285=@"loc,{#10000},24,3,24,82" +locations_default(#20285,#10000,24,3,24,82) +hasLocation(#20284,#20285) +stmtContainers(#20284,#20212) #20286=* -tokeninfo(#20286,8,#20001,66,",") -#20287=@"loc,{#10000},24,34,24,34" -locations_default(#20287,#10000,24,34,24,34) +exprs(#20286,64,#20284,0,"x = [Em ... yBlock]") +#20287=@"loc,{#10000},24,7,24,82" +locations_default(#20287,#10000,24,7,24,82) hasLocation(#20286,#20287) +enclosingStmt(#20286,#20284) +exprContainers(#20286,#20212) #20288=* -tokeninfo(#20288,6,#20001,67,"Outer2") -hasLocation(#20288,#20111) +exprs(#20288,78,#20286,0,"x") +hasLocation(#20288,#20173) +enclosingStmt(#20288,#20284) +exprContainers(#20288,#20212) +literals("x","x",#20288) +decl(#20288,#20218) #20289=* -tokeninfo(#20289,8,#20001,68,",") -#20290=@"loc,{#10000},24,42,24,42" -locations_default(#20290,#10000,24,42,24,42) +exprs(#20289,7,#20286,1,"[Empty, ... yBlock]") +#20290=@"loc,{#10000},24,11,24,82" +locations_default(#20290,#10000,24,11,24,82) hasLocation(#20289,#20290) +enclosingStmt(#20289,#20284) +exprContainers(#20289,#20212) #20291=* -tokeninfo(#20291,6,#20001,69,"Interfaces") -hasLocation(#20291,#20114) -#20292=* -tokeninfo(#20292,8,#20001,70,",") -#20293=@"loc,{#10000},24,54,24,54" -locations_default(#20293,#10000,24,54,24,54) -hasLocation(#20292,#20293) -#20294=* -tokeninfo(#20294,6,#20001,71,"EmptyStatement") -hasLocation(#20294,#20117) +exprs(#20291,79,#20289,0,"Empty") +hasLocation(#20291,#20179) +enclosingStmt(#20291,#20284) +exprContainers(#20291,#20212) +literals("Empty","Empty",#20291) +#20292=@"var;{Empty};{#20000}" +variables(#20292,"Empty",#20000) +bind(#20291,#20292) +#20293=* +exprs(#20293,79,#20289,1,"Comments") +hasLocation(#20293,#20183) +enclosingStmt(#20293,#20284) +exprContainers(#20293,#20212) +literals("Comments","Comments",#20293) +#20294=@"var;{Comments};{#20000}" +variables(#20294,"Comments",#20000) +bind(#20293,#20294) #20295=* -tokeninfo(#20295,8,#20001,72,",") -#20296=@"loc,{#10000},24,70,24,70" -locations_default(#20296,#10000,24,70,24,70) -hasLocation(#20295,#20296) +exprs(#20295,79,#20289,2,"Outer") +hasLocation(#20295,#20187) +enclosingStmt(#20295,#20284) +exprContainers(#20295,#20212) +literals("Outer","Outer",#20295) +#20296=@"var;{Outer};{#20000}" +variables(#20296,"Outer",#20000) +bind(#20295,#20296) #20297=* -tokeninfo(#20297,6,#20001,73,"EmptyBlock") -hasLocation(#20297,#20119) -#20298=* -tokeninfo(#20298,8,#20001,74,"]") -#20299=@"loc,{#10000},24,82,24,82" -locations_default(#20299,#10000,24,82,24,82) -hasLocation(#20298,#20299) -#20300=* -tokeninfo(#20300,8,#20001,75,"}") -hasLocation(#20300,#20173) +exprs(#20297,79,#20289,3,"Outer2") +hasLocation(#20297,#20191) +enclosingStmt(#20297,#20284) +exprContainers(#20297,#20212) +literals("Outer2","Outer2",#20297) +#20298=@"var;{Outer2};{#20000}" +variables(#20298,"Outer2",#20000) +bind(#20297,#20298) +#20299=* +exprs(#20299,79,#20289,4,"Interfaces") +hasLocation(#20299,#20195) +enclosingStmt(#20299,#20284) +exprContainers(#20299,#20212) +literals("Interfaces","Interfaces",#20299) +#20300=@"var;{Interfaces};{#20000}" +variables(#20300,"Interfaces",#20000) +bind(#20299,#20300) #20301=* -tokeninfo(#20301,0,#20001,76,"") -#20302=@"loc,{#10000},26,1,26,0" -locations_default(#20302,#10000,26,1,26,0) -hasLocation(#20301,#20302) +exprs(#20301,79,#20289,5,"EmptyStatement") +hasLocation(#20301,#20199) +enclosingStmt(#20301,#20284) +exprContainers(#20301,#20212) +literals("EmptyStatement","EmptyStatement",#20301) +bind(#20301,#20216) +#20302=* +exprs(#20302,79,#20289,6,"EmptyBlock") +hasLocation(#20302,#20203) +enclosingStmt(#20302,#20284) +exprContainers(#20302,#20212) +literals("EmptyBlock","EmptyBlock",#20302) +bind(#20302,#20217) +arraySize(#20289,7) +isInstantiated(#20212) #20303=* entry_cfg_node(#20303,#20001) #20304=@"loc,{#10000},1,1,1,0" @@ -957,42 +956,42 @@ locations_default(#20304,#10000,1,1,1,0) hasLocation(#20303,#20304) #20305=* exit_cfg_node(#20305,#20001) -hasLocation(#20305,#20302) -successor(#20007,#20005) -successor(#20093,#20097) -successor(#20099,#20101) -successor(#20118,#20095) -successor(#20116,#20118) -successor(#20113,#20116) -successor(#20110,#20113) -successor(#20107,#20110) -successor(#20104,#20107) -successor(#20101,#20104) -successor(#20097,#20099) -successor(#20095,#20305) -successor(#20088,#20086) -successor(#20091,#20093) -successor(#20086,#20091) -successor(#20081,#20079) -successor(#20084,#20088) -successor(#20079,#20084) -successor(#20056,#20054) -successor(#20060,#20081) -successor(#20054,#20060) -successor(#20043,#20041) -successor(#20047,#20051) -successor(#20051,#20049) -successor(#20049,#20056) -successor(#20041,#20047) -successor(#20032,#20030) -successor(#20038,#20036) -successor(#20036,#20043) -successor(#20030,#20038) -successor(#20027,#20025) -successor(#20025,#20032) -successor(#20022,#20020) -successor(#20020,#20027) -successor(#20005,#20022) -successor(#20303,#20007) +hasLocation(#20305,#20208) +successor(#20214,#20212) +successor(#20284,#20288) +successor(#20289,#20291) +successor(#20302,#20286) +successor(#20301,#20302) +successor(#20299,#20301) +successor(#20297,#20299) +successor(#20295,#20297) +successor(#20293,#20295) +successor(#20291,#20293) +successor(#20288,#20289) +successor(#20286,#20305) +successor(#20280,#20278) +successor(#20282,#20284) +successor(#20278,#20282) +successor(#20275,#20273) +successor(#20277,#20280) +successor(#20273,#20277) +successor(#20256,#20254) +successor(#20259,#20275) +successor(#20254,#20259) +successor(#20245,#20243) +successor(#20248,#20252) +successor(#20252,#20250) +successor(#20250,#20256) +successor(#20243,#20248) +successor(#20236,#20234) +successor(#20241,#20239) +successor(#20239,#20245) +successor(#20234,#20241) +successor(#20232,#20230) +successor(#20230,#20236) +successor(#20228,#20226) +successor(#20226,#20232) +successor(#20212,#20228) +successor(#20303,#20214) numlines(#10000,25,20,2) filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/v8/output/trap/tst.js.trap b/javascript/extractor/tests/v8/output/trap/tst.js.trap index cb2ccc20a90..729b0531c16 100644 --- a/javascript/extractor/tests/v8/output/trap/tst.js.trap +++ b/javascript/extractor/tests/v8/output/trap/tst.js.trap @@ -9,170 +9,170 @@ 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=* -stmts(#20003,2,#20001,0,"%CheckI ... ping();") -#20004=@"loc,{#10000},1,1,1,24" -locations_default(#20004,#10000,1,1,1,24) -hasLocation(#20003,#20004) -stmtContainers(#20003,#20001) -#20005=* -exprs(#20005,13,#20003,0,"%CheckI ... pping()") -#20006=@"loc,{#10000},1,1,1,23" -locations_default(#20006,#10000,1,1,1,23) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20003) -exprContainers(#20005,#20001) -#20007=* -exprs(#20007,79,#20005,-1,"CheckIsBootstrapping") -#20008=@"loc,{#10000},1,2,1,21" -locations_default(#20008,#10000,1,2,1,21) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20003) -exprContainers(#20007,#20001) -literals("CheckIsBootstrapping","CheckIsBootstrapping",#20007) -#20009=@"var;{CheckIsBootstrapping};{#20000}" -variables(#20009,"CheckIsBootstrapping",#20000) -bind(#20007,#20009) -#20010=* -stmts(#20010,2,#20001,1,"a%%NumberAdd(1, 2);") -#20011=@"loc,{#10000},2,1,2,19" -locations_default(#20011,#10000,2,1,2,19) -hasLocation(#20010,#20011) -stmtContainers(#20010,#20001) -#20012=* -exprs(#20012,38,#20010,0,"a%%NumberAdd(1, 2)") -#20013=@"loc,{#10000},2,1,2,18" -locations_default(#20013,#10000,2,1,2,18) -hasLocation(#20012,#20013) -enclosingStmt(#20012,#20010) -exprContainers(#20012,#20001) -#20014=* -exprs(#20014,79,#20012,0,"a") -#20015=@"loc,{#10000},2,1,2,1" -locations_default(#20015,#10000,2,1,2,1) -hasLocation(#20014,#20015) -enclosingStmt(#20014,#20010) -exprContainers(#20014,#20001) -literals("a","a",#20014) -#20016=@"var;{a};{#20000}" -variables(#20016,"a",#20000) -bind(#20014,#20016) -#20017=* -exprs(#20017,13,#20012,1,"%NumberAdd(1, 2)") -#20018=@"loc,{#10000},2,3,2,18" -locations_default(#20018,#10000,2,3,2,18) -hasLocation(#20017,#20018) -enclosingStmt(#20017,#20010) -exprContainers(#20017,#20001) -#20019=* -exprs(#20019,79,#20017,-1,"NumberAdd") -#20020=@"loc,{#10000},2,4,2,12" -locations_default(#20020,#10000,2,4,2,12) -hasLocation(#20019,#20020) -enclosingStmt(#20019,#20010) -exprContainers(#20019,#20001) -literals("NumberAdd","NumberAdd",#20019) -#20021=@"var;{NumberAdd};{#20000}" -variables(#20021,"NumberAdd",#20000) -bind(#20019,#20021) -#20022=* -exprs(#20022,3,#20017,0,"1") -#20023=@"loc,{#10000},2,14,2,14" -locations_default(#20023,#10000,2,14,2,14) -hasLocation(#20022,#20023) -enclosingStmt(#20022,#20010) -exprContainers(#20022,#20001) -literals("1","1",#20022) -#20024=* -exprs(#20024,3,#20017,1,"2") -#20025=@"loc,{#10000},2,17,2,17" -locations_default(#20025,#10000,2,17,2,17) -hasLocation(#20024,#20025) -enclosingStmt(#20024,#20010) -exprContainers(#20024,#20001) -literals("2","2",#20024) -#20026=* -lines(#20026,#20001,"%CheckIsBootstrapping();"," +#20002=* +lines(#20002,#20001,"%CheckIsBootstrapping();"," ") -hasLocation(#20026,#20004) -#20027=* -lines(#20027,#20001,"a%%NumberAdd(1, 2);","") -hasLocation(#20027,#20011) +#20003=@"loc,{#10000},1,1,1,24" +locations_default(#20003,#10000,1,1,1,24) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"a%%NumberAdd(1, 2);","") +#20005=@"loc,{#10000},2,1,2,19" +locations_default(#20005,#10000,2,1,2,19) +hasLocation(#20004,#20005) numlines(#20001,2,2,0) +#20006=* +tokeninfo(#20006,8,#20001,0,"%") +#20007=@"loc,{#10000},1,1,1,1" +locations_default(#20007,#10000,1,1,1,1) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,6,#20001,1,"CheckIsBootstrapping") +#20009=@"loc,{#10000},1,2,1,21" +locations_default(#20009,#10000,1,2,1,21) +hasLocation(#20008,#20009) +#20010=* +tokeninfo(#20010,8,#20001,2,"(") +#20011=@"loc,{#10000},1,22,1,22" +locations_default(#20011,#10000,1,22,1,22) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,8,#20001,3,")") +#20013=@"loc,{#10000},1,23,1,23" +locations_default(#20013,#10000,1,23,1,23) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,4,";") +#20015=@"loc,{#10000},1,24,1,24" +locations_default(#20015,#10000,1,24,1,24) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,6,#20001,5,"a") +#20017=@"loc,{#10000},2,1,2,1" +locations_default(#20017,#10000,2,1,2,1) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,6,"%") +#20019=@"loc,{#10000},2,2,2,2" +locations_default(#20019,#10000,2,2,2,2) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,7,"%") +#20021=@"loc,{#10000},2,3,2,3" +locations_default(#20021,#10000,2,3,2,3) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,6,#20001,8,"NumberAdd") +#20023=@"loc,{#10000},2,4,2,12" +locations_default(#20023,#10000,2,4,2,12) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,9,"(") +#20025=@"loc,{#10000},2,13,2,13" +locations_default(#20025,#10000,2,13,2,13) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,3,#20001,10,"1") +#20027=@"loc,{#10000},2,14,2,14" +locations_default(#20027,#10000,2,14,2,14) +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,8,#20001,11,",") +#20029=@"loc,{#10000},2,15,2,15" +locations_default(#20029,#10000,2,15,2,15) hasLocation(#20028,#20029) #20030=* -tokeninfo(#20030,6,#20001,1,"CheckIsBootstrapping") -hasLocation(#20030,#20008) -#20031=* -tokeninfo(#20031,8,#20001,2,"(") -#20032=@"loc,{#10000},1,22,1,22" -locations_default(#20032,#10000,1,22,1,22) -hasLocation(#20031,#20032) -#20033=* -tokeninfo(#20033,8,#20001,3,")") -#20034=@"loc,{#10000},1,23,1,23" -locations_default(#20034,#10000,1,23,1,23) -hasLocation(#20033,#20034) -#20035=* -tokeninfo(#20035,8,#20001,4,";") -#20036=@"loc,{#10000},1,24,1,24" -locations_default(#20036,#10000,1,24,1,24) -hasLocation(#20035,#20036) -#20037=* -tokeninfo(#20037,6,#20001,5,"a") -hasLocation(#20037,#20015) -#20038=* -tokeninfo(#20038,8,#20001,6,"%") -#20039=@"loc,{#10000},2,2,2,2" -locations_default(#20039,#10000,2,2,2,2) -hasLocation(#20038,#20039) +tokeninfo(#20030,3,#20001,12,"2") +#20031=@"loc,{#10000},2,17,2,17" +locations_default(#20031,#10000,2,17,2,17) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,13,")") +#20033=@"loc,{#10000},2,18,2,18" +locations_default(#20033,#10000,2,18,2,18) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,14,";") +#20035=@"loc,{#10000},2,19,2,19" +locations_default(#20035,#10000,2,19,2,19) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,0,#20001,15,"") +#20037=@"loc,{#10000},2,20,2,19" +locations_default(#20037,#10000,2,20,2,19) +hasLocation(#20036,#20037) +toplevels(#20001,0) +#20038=@"loc,{#10000},1,1,2,19" +locations_default(#20038,#10000,1,1,2,19) +hasLocation(#20001,#20038) +#20039=* +stmts(#20039,2,#20001,0,"%CheckI ... ping();") +hasLocation(#20039,#20003) +stmtContainers(#20039,#20001) #20040=* -tokeninfo(#20040,8,#20001,7,"%") -#20041=@"loc,{#10000},2,3,2,3" -locations_default(#20041,#10000,2,3,2,3) +exprs(#20040,13,#20039,0,"%CheckI ... pping()") +#20041=@"loc,{#10000},1,1,1,23" +locations_default(#20041,#10000,1,1,1,23) hasLocation(#20040,#20041) +enclosingStmt(#20040,#20039) +exprContainers(#20040,#20001) #20042=* -tokeninfo(#20042,6,#20001,8,"NumberAdd") -hasLocation(#20042,#20020) -#20043=* -tokeninfo(#20043,8,#20001,9,"(") -#20044=@"loc,{#10000},2,13,2,13" -locations_default(#20044,#10000,2,13,2,13) -hasLocation(#20043,#20044) +exprs(#20042,79,#20040,-1,"CheckIsBootstrapping") +hasLocation(#20042,#20009) +enclosingStmt(#20042,#20039) +exprContainers(#20042,#20001) +literals("CheckIsBootstrapping","CheckIsBootstrapping",#20042) +#20043=@"var;{CheckIsBootstrapping};{#20000}" +variables(#20043,"CheckIsBootstrapping",#20000) +bind(#20042,#20043) +#20044=* +stmts(#20044,2,#20001,1,"a%%NumberAdd(1, 2);") +hasLocation(#20044,#20005) +stmtContainers(#20044,#20001) #20045=* -tokeninfo(#20045,3,#20001,10,"1") -hasLocation(#20045,#20023) -#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,3,#20001,12,"2") -hasLocation(#20048,#20025) +exprs(#20045,38,#20044,0,"a%%NumberAdd(1, 2)") +#20046=@"loc,{#10000},2,1,2,18" +locations_default(#20046,#10000,2,1,2,18) +hasLocation(#20045,#20046) +enclosingStmt(#20045,#20044) +exprContainers(#20045,#20001) +#20047=* +exprs(#20047,79,#20045,0,"a") +hasLocation(#20047,#20017) +enclosingStmt(#20047,#20044) +exprContainers(#20047,#20001) +literals("a","a",#20047) +#20048=@"var;{a};{#20000}" +variables(#20048,"a",#20000) +bind(#20047,#20048) #20049=* -tokeninfo(#20049,8,#20001,13,")") -#20050=@"loc,{#10000},2,18,2,18" -locations_default(#20050,#10000,2,18,2,18) +exprs(#20049,13,#20045,1,"%NumberAdd(1, 2)") +#20050=@"loc,{#10000},2,3,2,18" +locations_default(#20050,#10000,2,3,2,18) hasLocation(#20049,#20050) +enclosingStmt(#20049,#20044) +exprContainers(#20049,#20001) #20051=* -tokeninfo(#20051,8,#20001,14,";") -#20052=@"loc,{#10000},2,19,2,19" -locations_default(#20052,#10000,2,19,2,19) -hasLocation(#20051,#20052) +exprs(#20051,79,#20049,-1,"NumberAdd") +hasLocation(#20051,#20023) +enclosingStmt(#20051,#20044) +exprContainers(#20051,#20001) +literals("NumberAdd","NumberAdd",#20051) +#20052=@"var;{NumberAdd};{#20000}" +variables(#20052,"NumberAdd",#20000) +bind(#20051,#20052) #20053=* -tokeninfo(#20053,0,#20001,15,"") -#20054=@"loc,{#10000},2,20,2,19" -locations_default(#20054,#10000,2,20,2,19) -hasLocation(#20053,#20054) +exprs(#20053,3,#20049,0,"1") +hasLocation(#20053,#20027) +enclosingStmt(#20053,#20044) +exprContainers(#20053,#20001) +literals("1","1",#20053) +#20054=* +exprs(#20054,3,#20049,1,"2") +hasLocation(#20054,#20031) +enclosingStmt(#20054,#20044) +exprContainers(#20054,#20001) +literals("2","2",#20054) #20055=* entry_cfg_node(#20055,#20001) #20056=@"loc,{#10000},1,1,1,0" @@ -180,17 +180,17 @@ locations_default(#20056,#10000,1,1,1,0) hasLocation(#20055,#20056) #20057=* exit_cfg_node(#20057,#20001) -hasLocation(#20057,#20054) -successor(#20010,#20014) -successor(#20024,#20017) -successor(#20022,#20024) -successor(#20019,#20022) -successor(#20017,#20012) -successor(#20014,#20019) -successor(#20012,#20057) -successor(#20003,#20007) -successor(#20007,#20005) -successor(#20005,#20010) -successor(#20055,#20003) +hasLocation(#20057,#20037) +successor(#20044,#20047) +successor(#20054,#20049) +successor(#20053,#20054) +successor(#20051,#20053) +successor(#20049,#20045) +successor(#20047,#20051) +successor(#20045,#20057) +successor(#20039,#20042) +successor(#20042,#20040) +successor(#20040,#20044) +successor(#20055,#20039) numlines(#10000,2,2,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/variables/output/trap/const.js.trap b/javascript/extractor/tests/variables/output/trap/const.js.trap index e3e1846c4fc..3265aead854 100644 --- a/javascript/extractor/tests/variables/output/trap/const.js.trap +++ b/javascript/extractor/tests/variables/output/trap/const.js.trap @@ -9,70 +9,70 @@ 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=@"var;{answer};{#20000}" -variables(#20003,"answer",#20000) -#20004=* -stmts(#20004,22,#20001,0,"const answer = 42;") -hasLocation(#20004,#20002) -stmtContainers(#20004,#20001) -#20005=* -exprs(#20005,64,#20004,0,"answer = 42") -#20006=@"loc,{#10000},1,7,1,17" -locations_default(#20006,#10000,1,7,1,17) -hasLocation(#20005,#20006) -enclosingStmt(#20005,#20004) -exprContainers(#20005,#20001) -#20007=* -exprs(#20007,78,#20005,0,"answer") -#20008=@"loc,{#10000},1,7,1,12" -locations_default(#20008,#10000,1,7,1,12) -hasLocation(#20007,#20008) -enclosingStmt(#20007,#20004) -exprContainers(#20007,#20001) -literals("answer","answer",#20007) -decl(#20007,#20003) -#20009=* -exprs(#20009,3,#20005,1,"42") -#20010=@"loc,{#10000},1,16,1,17" -locations_default(#20010,#10000,1,16,1,17) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20004) -exprContainers(#20009,#20001) -literals("42","42",#20009) -#20011=* -lines(#20011,#20001,"const answer = 42;","") -hasLocation(#20011,#20002) +#20002=* +lines(#20002,#20001,"const answer = 42;","") +#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,"const") +#20005=@"loc,{#10000},1,1,1,5" +locations_default(#20005,#10000,1,1,1,5) +hasLocation(#20004,#20005) +#20006=* +tokeninfo(#20006,6,#20001,1,"answer") +#20007=@"loc,{#10000},1,7,1,12" +locations_default(#20007,#10000,1,7,1,12) +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,3,#20001,3,"42") +#20011=@"loc,{#10000},1,16,1,17" +locations_default(#20011,#10000,1,16,1,17) +hasLocation(#20010,#20011) #20012=* -tokeninfo(#20012,7,#20001,0,"const") -#20013=@"loc,{#10000},1,1,1,5" -locations_default(#20013,#10000,1,1,1,5) +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,6,#20001,1,"answer") -hasLocation(#20014,#20008) -#20015=* -tokeninfo(#20015,8,#20001,2,"=") -#20016=@"loc,{#10000},1,14,1,14" -locations_default(#20016,#10000,1,14,1,14) -hasLocation(#20015,#20016) +tokeninfo(#20014,0,#20001,5,"") +#20015=@"loc,{#10000},1,19,1,18" +locations_default(#20015,#10000,1,19,1,18) +hasLocation(#20014,#20015) +toplevels(#20001,0) +hasLocation(#20001,#20003) +#20016=@"var;{answer};{#20000}" +variables(#20016,"answer",#20000) #20017=* -tokeninfo(#20017,3,#20001,3,"42") -hasLocation(#20017,#20010) +stmts(#20017,22,#20001,0,"const answer = 42;") +hasLocation(#20017,#20003) +stmtContainers(#20017,#20001) #20018=* -tokeninfo(#20018,8,#20001,4,";") -#20019=@"loc,{#10000},1,18,1,18" -locations_default(#20019,#10000,1,18,1,18) +exprs(#20018,64,#20017,0,"answer = 42") +#20019=@"loc,{#10000},1,7,1,17" +locations_default(#20019,#10000,1,7,1,17) hasLocation(#20018,#20019) +enclosingStmt(#20018,#20017) +exprContainers(#20018,#20001) #20020=* -tokeninfo(#20020,0,#20001,5,"") -#20021=@"loc,{#10000},1,19,1,18" -locations_default(#20021,#10000,1,19,1,18) -hasLocation(#20020,#20021) +exprs(#20020,78,#20018,0,"answer") +hasLocation(#20020,#20007) +enclosingStmt(#20020,#20017) +exprContainers(#20020,#20001) +literals("answer","answer",#20020) +decl(#20020,#20016) +#20021=* +exprs(#20021,3,#20018,1,"42") +hasLocation(#20021,#20011) +enclosingStmt(#20021,#20017) +exprContainers(#20021,#20001) +literals("42","42",#20021) #20022=* entry_cfg_node(#20022,#20001) #20023=@"loc,{#10000},1,1,1,0" @@ -80,11 +80,11 @@ locations_default(#20023,#10000,1,1,1,0) hasLocation(#20022,#20023) #20024=* exit_cfg_node(#20024,#20001) -hasLocation(#20024,#20021) -successor(#20004,#20007) -successor(#20009,#20005) -successor(#20007,#20009) -successor(#20005,#20024) -successor(#20022,#20004) +hasLocation(#20024,#20015) +successor(#20017,#20020) +successor(#20021,#20018) +successor(#20020,#20021) +successor(#20018,#20024) +successor(#20022,#20017) numlines(#10000,1,1,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/variables/output/trap/finally.js.trap b/javascript/extractor/tests/variables/output/trap/finally.js.trap index b1c76a9e920..c8152d22a65 100644 --- a/javascript/extractor/tests/variables/output/trap/finally.js.trap +++ b/javascript/extractor/tests/variables/output/trap/finally.js.trap @@ -9,280 +9,278 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,9,0" -locations_default(#20002,#10000,1,1,9,0) -hasLocation(#20001,#20002) -#20003=@"var;{f};{#20000}" -variables(#20003,"f",#20000) -#20004=* -stmts(#20004,17,#20001,0,"functio ... }\n }\n}") -#20005=@"loc,{#10000},1,1,8,1" -locations_default(#20005,#10000,1,1,8,1) -hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) -#20006=* -exprs(#20006,78,#20004,-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;{g};{#20008}" -variables(#20009,"g",#20008) -#20010=@"var;{x};{#20008}" -variables(#20010,"x",#20008) -#20011=* -exprs(#20011,78,#20004,0,"x") -#20012=@"loc,{#10000},1,12,1,12" -locations_default(#20012,#10000,1,12,1,12) -hasLocation(#20011,#20012) -exprContainers(#20011,#20004) -literals("x","x",#20011) -decl(#20011,#20010) -#20013=@"var;{arguments};{#20008}" -variables(#20013,"arguments",#20008) -isArgumentsObject(#20013) -#20014=* -stmts(#20014,1,#20004,-2,"{\n fun ... }\n }\n}") -#20015=@"loc,{#10000},1,15,8,1" -locations_default(#20015,#10000,1,15,8,1) -hasLocation(#20014,#20015) -stmtContainers(#20014,#20004) -#20016=* -stmts(#20016,17,#20014,0,"functio ... }\n }") -#20017=@"loc,{#10000},2,3,7,3" -locations_default(#20017,#10000,2,3,7,3) -hasLocation(#20016,#20017) -stmtContainers(#20016,#20004) -#20018=* -exprs(#20018,78,#20016,-1,"g") -#20019=@"loc,{#10000},2,12,2,12" -locations_default(#20019,#10000,2,12,2,12) -hasLocation(#20018,#20019) -exprContainers(#20018,#20016) -literals("g","g",#20018) -decl(#20018,#20009) -#20020=* -scopes(#20020,1) -scopenodes(#20016,#20020) -scopenesting(#20020,#20008) -#20021=@"var;{x};{#20020}" -variables(#20021,"x",#20020) -#20022=@"var;{arguments};{#20020}" -variables(#20022,"arguments",#20020) -isArgumentsObject(#20022) -#20023=* -stmts(#20023,1,#20016,-2,"{\n t ... }\n }") -#20024=@"loc,{#10000},2,16,7,3" -locations_default(#20024,#10000,2,16,7,3) -hasLocation(#20023,#20024) -stmtContainers(#20023,#20016) -#20025=* -stmts(#20025,11,#20023,0,"try {\n ... ;\n }") -#20026=@"loc,{#10000},3,5,6,5" -locations_default(#20026,#10000,3,5,6,5) -hasLocation(#20025,#20026) -stmtContainers(#20025,#20016) -#20027=* -stmts(#20027,1,#20025,0,"{\n }") -#20028=@"loc,{#10000},3,9,4,5" -locations_default(#20028,#10000,3,9,4,5) -hasLocation(#20027,#20028) -stmtContainers(#20027,#20016) -#20029=* -stmts(#20029,1,#20025,-1,"{\n var x;\n }") -#20030=@"loc,{#10000},4,15,6,5" -locations_default(#20030,#10000,4,15,6,5) -hasLocation(#20029,#20030) -stmtContainers(#20029,#20016) -#20031=* -stmts(#20031,18,#20029,0,"var x;") -#20032=@"loc,{#10000},5,7,5,12" -locations_default(#20032,#10000,5,7,5,12) -hasLocation(#20031,#20032) -stmtContainers(#20031,#20016) -#20033=* -exprs(#20033,64,#20031,0,"x") -#20034=@"loc,{#10000},5,11,5,11" -locations_default(#20034,#10000,5,11,5,11) -hasLocation(#20033,#20034) -enclosingStmt(#20033,#20031) -exprContainers(#20033,#20016) -#20035=* -exprs(#20035,78,#20033,0,"x") -hasLocation(#20035,#20034) -enclosingStmt(#20035,#20031) -exprContainers(#20035,#20016) -literals("x","x",#20035) -decl(#20035,#20021) -numlines(#20016,6,6,0) -numlines(#20004,8,8,0) -#20036=* -lines(#20036,#20001,"function f(x) {"," +#20002=* +lines(#20002,#20001,"function f(x) {"," ") -#20037=@"loc,{#10000},1,1,1,15" -locations_default(#20037,#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," function g() {"," +") +#20005=@"loc,{#10000},2,1,2,16" +locations_default(#20005,#10000,2,1,2,16) +hasLocation(#20004,#20005) +indentation(#10000,2," ",2) +#20006=* +lines(#20006,#20001," try {"," +") +#20007=@"loc,{#10000},3,1,3,9" +locations_default(#20007,#10000,3,1,3,9) +hasLocation(#20006,#20007) +indentation(#10000,3," ",4) +#20008=* +lines(#20008,#20001," } finally {"," +") +#20009=@"loc,{#10000},4,1,4,15" +locations_default(#20009,#10000,4,1,4,15) +hasLocation(#20008,#20009) +indentation(#10000,4," ",4) +#20010=* +lines(#20010,#20001," var x;"," +") +#20011=@"loc,{#10000},5,1,5,12" +locations_default(#20011,#10000,5,1,5,12) +hasLocation(#20010,#20011) +indentation(#10000,5," ",6) +#20012=* +lines(#20012,#20001," }"," +") +#20013=@"loc,{#10000},6,1,6,5" +locations_default(#20013,#10000,6,1,6,5) +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,"function") +#20019=@"loc,{#10000},1,1,1,8" +locations_default(#20019,#10000,1,1,1,8) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,6,#20001,1,"f") +#20021=@"loc,{#10000},1,10,1,10" +locations_default(#20021,#10000,1,10,1,10) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,2,"(") +#20023=@"loc,{#10000},1,11,1,11" +locations_default(#20023,#10000,1,11,1,11) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,6,#20001,3,"x") +#20025=@"loc,{#10000},1,12,1,12" +locations_default(#20025,#10000,1,12,1,12) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,4,")") +#20027=@"loc,{#10000},1,13,1,13" +locations_default(#20027,#10000,1,13,1,13) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,5,"{") +#20029=@"loc,{#10000},1,15,1,15" +locations_default(#20029,#10000,1,15,1,15) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,7,#20001,6,"function") +#20031=@"loc,{#10000},2,3,2,10" +locations_default(#20031,#10000,2,3,2,10) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,6,#20001,7,"g") +#20033=@"loc,{#10000},2,12,2,12" +locations_default(#20033,#10000,2,12,2,12) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,8,"(") +#20035=@"loc,{#10000},2,13,2,13" +locations_default(#20035,#10000,2,13,2,13) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,9,")") +#20037=@"loc,{#10000},2,14,2,14" +locations_default(#20037,#10000,2,14,2,14) hasLocation(#20036,#20037) #20038=* -lines(#20038,#20001," function g() {"," -") -#20039=@"loc,{#10000},2,1,2,16" -locations_default(#20039,#10000,2,1,2,16) +tokeninfo(#20038,8,#20001,10,"{") +#20039=@"loc,{#10000},2,16,2,16" +locations_default(#20039,#10000,2,16,2,16) hasLocation(#20038,#20039) -indentation(#10000,2," ",2) #20040=* -lines(#20040,#20001," try {"," -") -#20041=@"loc,{#10000},3,1,3,9" -locations_default(#20041,#10000,3,1,3,9) +tokeninfo(#20040,7,#20001,11,"try") +#20041=@"loc,{#10000},3,5,3,7" +locations_default(#20041,#10000,3,5,3,7) hasLocation(#20040,#20041) -indentation(#10000,3," ",4) #20042=* -lines(#20042,#20001," } finally {"," -") -#20043=@"loc,{#10000},4,1,4,15" -locations_default(#20043,#10000,4,1,4,15) +tokeninfo(#20042,8,#20001,12,"{") +#20043=@"loc,{#10000},3,9,3,9" +locations_default(#20043,#10000,3,9,3,9) hasLocation(#20042,#20043) -indentation(#10000,4," ",4) #20044=* -lines(#20044,#20001," var x;"," -") -#20045=@"loc,{#10000},5,1,5,12" -locations_default(#20045,#10000,5,1,5,12) +tokeninfo(#20044,8,#20001,13,"}") +#20045=@"loc,{#10000},4,5,4,5" +locations_default(#20045,#10000,4,5,4,5) hasLocation(#20044,#20045) -indentation(#10000,5," ",6) #20046=* -lines(#20046,#20001," }"," -") -#20047=@"loc,{#10000},6,1,6,5" -locations_default(#20047,#10000,6,1,6,5) +tokeninfo(#20046,7,#20001,14,"finally") +#20047=@"loc,{#10000},4,7,4,13" +locations_default(#20047,#10000,4,7,4,13) hasLocation(#20046,#20047) -indentation(#10000,6," ",4) #20048=* -lines(#20048,#20001," }"," -") -#20049=@"loc,{#10000},7,1,7,3" -locations_default(#20049,#10000,7,1,7,3) +tokeninfo(#20048,8,#20001,15,"{") +#20049=@"loc,{#10000},4,15,4,15" +locations_default(#20049,#10000,4,15,4,15) hasLocation(#20048,#20049) -indentation(#10000,7," ",2) #20050=* -lines(#20050,#20001,"}"," -") -#20051=@"loc,{#10000},8,1,8,1" -locations_default(#20051,#10000,8,1,8,1) +tokeninfo(#20050,7,#20001,16,"var") +#20051=@"loc,{#10000},5,7,5,9" +locations_default(#20051,#10000,5,7,5,9) hasLocation(#20050,#20051) -numlines(#20001,8,8,0) #20052=* -tokeninfo(#20052,7,#20001,0,"function") -#20053=@"loc,{#10000},1,1,1,8" -locations_default(#20053,#10000,1,1,1,8) +tokeninfo(#20052,6,#20001,17,"x") +#20053=@"loc,{#10000},5,11,5,11" +locations_default(#20053,#10000,5,11,5,11) hasLocation(#20052,#20053) #20054=* -tokeninfo(#20054,6,#20001,1,"f") -hasLocation(#20054,#20007) -#20055=* -tokeninfo(#20055,8,#20001,2,"(") -#20056=@"loc,{#10000},1,11,1,11" -locations_default(#20056,#10000,1,11,1,11) -hasLocation(#20055,#20056) -#20057=* -tokeninfo(#20057,6,#20001,3,"x") -hasLocation(#20057,#20012) +tokeninfo(#20054,8,#20001,18,";") +#20055=@"loc,{#10000},5,12,5,12" +locations_default(#20055,#10000,5,12,5,12) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,8,#20001,19,"}") +#20057=@"loc,{#10000},6,5,6,5" +locations_default(#20057,#10000,6,5,6,5) +hasLocation(#20056,#20057) #20058=* -tokeninfo(#20058,8,#20001,4,")") -#20059=@"loc,{#10000},1,13,1,13" -locations_default(#20059,#10000,1,13,1,13) +tokeninfo(#20058,8,#20001,20,"}") +#20059=@"loc,{#10000},7,3,7,3" +locations_default(#20059,#10000,7,3,7,3) hasLocation(#20058,#20059) #20060=* -tokeninfo(#20060,8,#20001,5,"{") -#20061=@"loc,{#10000},1,15,1,15" -locations_default(#20061,#10000,1,15,1,15) -hasLocation(#20060,#20061) -#20062=* -tokeninfo(#20062,7,#20001,6,"function") -#20063=@"loc,{#10000},2,3,2,10" -locations_default(#20063,#10000,2,3,2,10) -hasLocation(#20062,#20063) -#20064=* -tokeninfo(#20064,6,#20001,7,"g") -hasLocation(#20064,#20019) +tokeninfo(#20060,8,#20001,21,"}") +hasLocation(#20060,#20017) +#20061=* +tokeninfo(#20061,0,#20001,22,"") +#20062=@"loc,{#10000},9,1,9,0" +locations_default(#20062,#10000,9,1,9,0) +hasLocation(#20061,#20062) +toplevels(#20001,0) +#20063=@"loc,{#10000},1,1,9,0" +locations_default(#20063,#10000,1,1,9,0) +hasLocation(#20001,#20063) +#20064=@"var;{f};{#20000}" +variables(#20064,"f",#20000) #20065=* -tokeninfo(#20065,8,#20001,8,"(") -#20066=@"loc,{#10000},2,13,2,13" -locations_default(#20066,#10000,2,13,2,13) +stmts(#20065,17,#20001,0,"functio ... }\n }\n}") +#20066=@"loc,{#10000},1,1,8,1" +locations_default(#20066,#10000,1,1,8,1) hasLocation(#20065,#20066) +stmtContainers(#20065,#20001) #20067=* -tokeninfo(#20067,8,#20001,9,")") -#20068=@"loc,{#10000},2,14,2,14" -locations_default(#20068,#10000,2,14,2,14) -hasLocation(#20067,#20068) -#20069=* -tokeninfo(#20069,8,#20001,10,"{") -#20070=@"loc,{#10000},2,16,2,16" -locations_default(#20070,#10000,2,16,2,16) -hasLocation(#20069,#20070) +exprs(#20067,78,#20065,-1,"f") +hasLocation(#20067,#20021) +exprContainers(#20067,#20065) +literals("f","f",#20067) +decl(#20067,#20064) +#20068=* +scopes(#20068,1) +scopenodes(#20065,#20068) +scopenesting(#20068,#20000) +#20069=@"var;{g};{#20068}" +variables(#20069,"g",#20068) +#20070=@"var;{x};{#20068}" +variables(#20070,"x",#20068) #20071=* -tokeninfo(#20071,7,#20001,11,"try") -#20072=@"loc,{#10000},3,5,3,7" -locations_default(#20072,#10000,3,5,3,7) -hasLocation(#20071,#20072) +exprs(#20071,78,#20065,0,"x") +hasLocation(#20071,#20025) +exprContainers(#20071,#20065) +literals("x","x",#20071) +decl(#20071,#20070) +#20072=@"var;{arguments};{#20068}" +variables(#20072,"arguments",#20068) +isArgumentsObject(#20072) #20073=* -tokeninfo(#20073,8,#20001,12,"{") -#20074=@"loc,{#10000},3,9,3,9" -locations_default(#20074,#10000,3,9,3,9) +stmts(#20073,1,#20065,-2,"{\n fun ... }\n }\n}") +#20074=@"loc,{#10000},1,15,8,1" +locations_default(#20074,#10000,1,15,8,1) hasLocation(#20073,#20074) +stmtContainers(#20073,#20065) #20075=* -tokeninfo(#20075,8,#20001,13,"}") -#20076=@"loc,{#10000},4,5,4,5" -locations_default(#20076,#10000,4,5,4,5) +stmts(#20075,17,#20073,0,"functio ... }\n }") +#20076=@"loc,{#10000},2,3,7,3" +locations_default(#20076,#10000,2,3,7,3) hasLocation(#20075,#20076) +stmtContainers(#20075,#20065) #20077=* -tokeninfo(#20077,7,#20001,14,"finally") -#20078=@"loc,{#10000},4,7,4,13" -locations_default(#20078,#10000,4,7,4,13) -hasLocation(#20077,#20078) -#20079=* -tokeninfo(#20079,8,#20001,15,"{") -#20080=@"loc,{#10000},4,15,4,15" -locations_default(#20080,#10000,4,15,4,15) -hasLocation(#20079,#20080) +exprs(#20077,78,#20075,-1,"g") +hasLocation(#20077,#20033) +exprContainers(#20077,#20075) +literals("g","g",#20077) +decl(#20077,#20069) +#20078=* +scopes(#20078,1) +scopenodes(#20075,#20078) +scopenesting(#20078,#20068) +#20079=@"var;{x};{#20078}" +variables(#20079,"x",#20078) +#20080=@"var;{arguments};{#20078}" +variables(#20080,"arguments",#20078) +isArgumentsObject(#20080) #20081=* -tokeninfo(#20081,7,#20001,16,"var") -#20082=@"loc,{#10000},5,7,5,9" -locations_default(#20082,#10000,5,7,5,9) +stmts(#20081,1,#20075,-2,"{\n t ... }\n }") +#20082=@"loc,{#10000},2,16,7,3" +locations_default(#20082,#10000,2,16,7,3) hasLocation(#20081,#20082) +stmtContainers(#20081,#20075) #20083=* -tokeninfo(#20083,6,#20001,17,"x") -hasLocation(#20083,#20034) -#20084=* -tokeninfo(#20084,8,#20001,18,";") -#20085=@"loc,{#10000},5,12,5,12" -locations_default(#20085,#10000,5,12,5,12) -hasLocation(#20084,#20085) -#20086=* -tokeninfo(#20086,8,#20001,19,"}") -#20087=@"loc,{#10000},6,5,6,5" -locations_default(#20087,#10000,6,5,6,5) -hasLocation(#20086,#20087) -#20088=* -tokeninfo(#20088,8,#20001,20,"}") -#20089=@"loc,{#10000},7,3,7,3" -locations_default(#20089,#10000,7,3,7,3) -hasLocation(#20088,#20089) -#20090=* -tokeninfo(#20090,8,#20001,21,"}") -hasLocation(#20090,#20051) +stmts(#20083,11,#20081,0,"try {\n ... ;\n }") +#20084=@"loc,{#10000},3,5,6,5" +locations_default(#20084,#10000,3,5,6,5) +hasLocation(#20083,#20084) +stmtContainers(#20083,#20075) +#20085=* +stmts(#20085,1,#20083,0,"{\n }") +#20086=@"loc,{#10000},3,9,4,5" +locations_default(#20086,#10000,3,9,4,5) +hasLocation(#20085,#20086) +stmtContainers(#20085,#20075) +#20087=* +stmts(#20087,1,#20083,-1,"{\n var x;\n }") +#20088=@"loc,{#10000},4,15,6,5" +locations_default(#20088,#10000,4,15,6,5) +hasLocation(#20087,#20088) +stmtContainers(#20087,#20075) +#20089=* +stmts(#20089,18,#20087,0,"var x;") +#20090=@"loc,{#10000},5,7,5,12" +locations_default(#20090,#10000,5,7,5,12) +hasLocation(#20089,#20090) +stmtContainers(#20089,#20075) #20091=* -tokeninfo(#20091,0,#20001,22,"") -#20092=@"loc,{#10000},9,1,9,0" -locations_default(#20092,#10000,9,1,9,0) -hasLocation(#20091,#20092) +exprs(#20091,64,#20089,0,"x") +hasLocation(#20091,#20053) +enclosingStmt(#20091,#20089) +exprContainers(#20091,#20075) +#20092=* +exprs(#20092,78,#20091,0,"x") +hasLocation(#20092,#20053) +enclosingStmt(#20092,#20089) +exprContainers(#20092,#20075) +literals("x","x",#20092) +decl(#20092,#20079) #20093=* entry_cfg_node(#20093,#20001) #20094=@"loc,{#10000},1,1,1,0" @@ -290,40 +288,40 @@ locations_default(#20094,#10000,1,1,1,0) hasLocation(#20093,#20094) #20095=* exit_cfg_node(#20095,#20001) -hasLocation(#20095,#20092) -successor(#20004,#20095) +hasLocation(#20095,#20062) +successor(#20065,#20095) #20096=* -entry_cfg_node(#20096,#20004) +entry_cfg_node(#20096,#20065) hasLocation(#20096,#20094) #20097=* -exit_cfg_node(#20097,#20004) +exit_cfg_node(#20097,#20065) #20098=@"loc,{#10000},8,2,8,1" locations_default(#20098,#10000,8,2,8,1) hasLocation(#20097,#20098) -successor(#20014,#20016) -successor(#20016,#20097) +successor(#20073,#20075) +successor(#20075,#20097) #20099=* -entry_cfg_node(#20099,#20016) +entry_cfg_node(#20099,#20075) #20100=@"loc,{#10000},2,3,2,2" locations_default(#20100,#10000,2,3,2,2) hasLocation(#20099,#20100) #20101=* -exit_cfg_node(#20101,#20016) +exit_cfg_node(#20101,#20075) #20102=@"loc,{#10000},7,4,7,3" locations_default(#20102,#10000,7,4,7,3) hasLocation(#20101,#20102) -successor(#20023,#20025) -successor(#20025,#20027) -successor(#20027,#20029) -successor(#20029,#20031) -successor(#20031,#20035) -successor(#20035,#20033) -successor(#20033,#20101) -successor(#20099,#20023) -successor(#20018,#20014) -successor(#20011,#20018) -successor(#20096,#20011) -successor(#20006,#20004) -successor(#20093,#20006) +successor(#20081,#20083) +successor(#20083,#20085) +successor(#20085,#20087) +successor(#20087,#20089) +successor(#20089,#20092) +successor(#20092,#20091) +successor(#20091,#20101) +successor(#20099,#20081) +successor(#20077,#20073) +successor(#20071,#20077) +successor(#20096,#20071) +successor(#20067,#20065) +successor(#20093,#20067) numlines(#10000,8,8,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/variables/output/trap/switch.js.trap b/javascript/extractor/tests/variables/output/trap/switch.js.trap index f3cd6549fb6..a2c00ff6426 100644 --- a/javascript/extractor/tests/variables/output/trap/switch.js.trap +++ b/javascript/extractor/tests/variables/output/trap/switch.js.trap @@ -9,205 +9,204 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,7,0" -locations_default(#20002,#10000,1,1,7,0) -hasLocation(#20001,#20002) -#20003=@"var;{g};{#20000}" -variables(#20003,"g",#20000) -#20004=* -stmts(#20004,17,#20001,0,"functio ... i;\n\t}\n}") -#20005=@"loc,{#10000},1,1,6,1" -locations_default(#20005,#10000,1,1,6,1) -hasLocation(#20004,#20005) -stmtContainers(#20004,#20001) -#20006=* -exprs(#20006,78,#20004,-1,"g") -#20007=@"loc,{#10000},1,10,1,10" -locations_default(#20007,#10000,1,10,1,10) -hasLocation(#20006,#20007) -exprContainers(#20006,#20004) -literals("g","g",#20006) -decl(#20006,#20003) -#20008=* -scopes(#20008,1) -scopenodes(#20004,#20008) -scopenesting(#20008,#20000) -#20009=@"var;{i};{#20008}" -variables(#20009,"i",#20008) -#20010=@"var;{arguments};{#20008}" -variables(#20010,"arguments",#20008) -isArgumentsObject(#20010) -#20011=* -stmts(#20011,1,#20004,-2,"{\n\tswit ... i;\n\t}\n}") -#20012=@"loc,{#10000},1,14,6,1" -locations_default(#20012,#10000,1,14,6,1) -hasLocation(#20011,#20012) -stmtContainers(#20011,#20004) -#20013=* -stmts(#20013,8,#20011,0,"switch ... r i;\n\t}") -#20014=@"loc,{#10000},2,2,5,2" -locations_default(#20014,#10000,2,2,5,2) -hasLocation(#20013,#20014) -stmtContainers(#20013,#20004) -#20015=* -exprs(#20015,3,#20013,-1,"0") -#20016=@"loc,{#10000},2,10,2,10" -locations_default(#20016,#10000,2,10,2,10) -hasLocation(#20015,#20016) -enclosingStmt(#20015,#20013) -exprContainers(#20015,#20004) -literals("0","0",#20015) -#20017=* -stmts(#20017,19,#20013,0,"default:\n\t\tvar i;") -#20018=@"loc,{#10000},3,2,4,8" -locations_default(#20018,#10000,3,2,4,8) -hasLocation(#20017,#20018) -stmtContainers(#20017,#20004) -#20019=* -stmts(#20019,18,#20017,0,"var i;") -#20020=@"loc,{#10000},4,3,4,8" -locations_default(#20020,#10000,4,3,4,8) -hasLocation(#20019,#20020) -stmtContainers(#20019,#20004) -#20021=* -exprs(#20021,64,#20019,0,"i") -#20022=@"loc,{#10000},4,7,4,7" -locations_default(#20022,#10000,4,7,4,7) -hasLocation(#20021,#20022) -enclosingStmt(#20021,#20019) -exprContainers(#20021,#20004) -#20023=* -exprs(#20023,78,#20021,0,"i") -hasLocation(#20023,#20022) -enclosingStmt(#20023,#20019) -exprContainers(#20023,#20004) -literals("i","i",#20023) -decl(#20023,#20009) -numlines(#20004,6,6,0) -#20024=* -lines(#20024,#20001,"function g() {"," +#20002=* +lines(#20002,#20001,"function g() {"," ") -#20025=@"loc,{#10000},1,1,1,14" -locations_default(#20025,#10000,1,1,1,14) +#20003=@"loc,{#10000},1,1,1,14" +locations_default(#20003,#10000,1,1,1,14) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001," switch (0) {"," +") +#20005=@"loc,{#10000},2,1,2,13" +locations_default(#20005,#10000,2,1,2,13) +hasLocation(#20004,#20005) +indentation(#10000,2," ",1) +#20006=* +lines(#20006,#20001," default:"," +") +#20007=@"loc,{#10000},3,1,3,9" +locations_default(#20007,#10000,3,1,3,9) +hasLocation(#20006,#20007) +indentation(#10000,3," ",1) +#20008=* +lines(#20008,#20001," var i;"," +") +#20009=@"loc,{#10000},4,1,4,8" +locations_default(#20009,#10000,4,1,4,8) +hasLocation(#20008,#20009) +indentation(#10000,4," ",2) +#20010=* +lines(#20010,#20001," }"," +") +#20011=@"loc,{#10000},5,1,5,2" +locations_default(#20011,#10000,5,1,5,2) +hasLocation(#20010,#20011) +indentation(#10000,5," ",1) +#20012=* +lines(#20012,#20001,"}"," +") +#20013=@"loc,{#10000},6,1,6,1" +locations_default(#20013,#10000,6,1,6,1) +hasLocation(#20012,#20013) +numlines(#20001,6,6,0) +#20014=* +tokeninfo(#20014,7,#20001,0,"function") +#20015=@"loc,{#10000},1,1,1,8" +locations_default(#20015,#10000,1,1,1,8) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,6,#20001,1,"g") +#20017=@"loc,{#10000},1,10,1,10" +locations_default(#20017,#10000,1,10,1,10) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,2,"(") +#20019=@"loc,{#10000},1,11,1,11" +locations_default(#20019,#10000,1,11,1,11) +hasLocation(#20018,#20019) +#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,8,#20001,4,"{") +#20023=@"loc,{#10000},1,14,1,14" +locations_default(#20023,#10000,1,14,1,14) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,7,#20001,5,"switch") +#20025=@"loc,{#10000},2,2,2,7" +locations_default(#20025,#10000,2,2,2,7) hasLocation(#20024,#20025) #20026=* -lines(#20026,#20001," switch (0) {"," -") -#20027=@"loc,{#10000},2,1,2,13" -locations_default(#20027,#10000,2,1,2,13) +tokeninfo(#20026,8,#20001,6,"(") +#20027=@"loc,{#10000},2,9,2,9" +locations_default(#20027,#10000,2,9,2,9) hasLocation(#20026,#20027) -indentation(#10000,2," ",1) #20028=* -lines(#20028,#20001," default:"," -") -#20029=@"loc,{#10000},3,1,3,9" -locations_default(#20029,#10000,3,1,3,9) +tokeninfo(#20028,3,#20001,7,"0") +#20029=@"loc,{#10000},2,10,2,10" +locations_default(#20029,#10000,2,10,2,10) hasLocation(#20028,#20029) -indentation(#10000,3," ",1) #20030=* -lines(#20030,#20001," var i;"," -") -#20031=@"loc,{#10000},4,1,4,8" -locations_default(#20031,#10000,4,1,4,8) +tokeninfo(#20030,8,#20001,8,")") +#20031=@"loc,{#10000},2,11,2,11" +locations_default(#20031,#10000,2,11,2,11) hasLocation(#20030,#20031) -indentation(#10000,4," ",2) #20032=* -lines(#20032,#20001," }"," -") -#20033=@"loc,{#10000},5,1,5,2" -locations_default(#20033,#10000,5,1,5,2) +tokeninfo(#20032,8,#20001,9,"{") +#20033=@"loc,{#10000},2,13,2,13" +locations_default(#20033,#10000,2,13,2,13) hasLocation(#20032,#20033) -indentation(#10000,5," ",1) #20034=* -lines(#20034,#20001,"}"," -") -#20035=@"loc,{#10000},6,1,6,1" -locations_default(#20035,#10000,6,1,6,1) +tokeninfo(#20034,7,#20001,10,"default") +#20035=@"loc,{#10000},3,2,3,8" +locations_default(#20035,#10000,3,2,3,8) hasLocation(#20034,#20035) -numlines(#20001,6,6,0) #20036=* -tokeninfo(#20036,7,#20001,0,"function") -#20037=@"loc,{#10000},1,1,1,8" -locations_default(#20037,#10000,1,1,1,8) +tokeninfo(#20036,8,#20001,11,":") +#20037=@"loc,{#10000},3,9,3,9" +locations_default(#20037,#10000,3,9,3,9) hasLocation(#20036,#20037) #20038=* -tokeninfo(#20038,6,#20001,1,"g") -hasLocation(#20038,#20007) -#20039=* -tokeninfo(#20039,8,#20001,2,"(") -#20040=@"loc,{#10000},1,11,1,11" -locations_default(#20040,#10000,1,11,1,11) -hasLocation(#20039,#20040) -#20041=* -tokeninfo(#20041,8,#20001,3,")") -#20042=@"loc,{#10000},1,12,1,12" -locations_default(#20042,#10000,1,12,1,12) -hasLocation(#20041,#20042) -#20043=* -tokeninfo(#20043,8,#20001,4,"{") -#20044=@"loc,{#10000},1,14,1,14" -locations_default(#20044,#10000,1,14,1,14) -hasLocation(#20043,#20044) -#20045=* -tokeninfo(#20045,7,#20001,5,"switch") -#20046=@"loc,{#10000},2,2,2,7" -locations_default(#20046,#10000,2,2,2,7) -hasLocation(#20045,#20046) +tokeninfo(#20038,7,#20001,12,"var") +#20039=@"loc,{#10000},4,3,4,5" +locations_default(#20039,#10000,4,3,4,5) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,6,#20001,13,"i") +#20041=@"loc,{#10000},4,7,4,7" +locations_default(#20041,#10000,4,7,4,7) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,14,";") +#20043=@"loc,{#10000},4,8,4,8" +locations_default(#20043,#10000,4,8,4,8) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,15,"}") +#20045=@"loc,{#10000},5,2,5,2" +locations_default(#20045,#10000,5,2,5,2) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,16,"}") +hasLocation(#20046,#20013) #20047=* -tokeninfo(#20047,8,#20001,6,"(") -#20048=@"loc,{#10000},2,9,2,9" -locations_default(#20048,#10000,2,9,2,9) +tokeninfo(#20047,0,#20001,17,"") +#20048=@"loc,{#10000},7,1,7,0" +locations_default(#20048,#10000,7,1,7,0) hasLocation(#20047,#20048) -#20049=* -tokeninfo(#20049,3,#20001,7,"0") -hasLocation(#20049,#20016) -#20050=* -tokeninfo(#20050,8,#20001,8,")") -#20051=@"loc,{#10000},2,11,2,11" -locations_default(#20051,#10000,2,11,2,11) -hasLocation(#20050,#20051) -#20052=* -tokeninfo(#20052,8,#20001,9,"{") -#20053=@"loc,{#10000},2,13,2,13" -locations_default(#20053,#10000,2,13,2,13) -hasLocation(#20052,#20053) +toplevels(#20001,0) +#20049=@"loc,{#10000},1,1,7,0" +locations_default(#20049,#10000,1,1,7,0) +hasLocation(#20001,#20049) +#20050=@"var;{g};{#20000}" +variables(#20050,"g",#20000) +#20051=* +stmts(#20051,17,#20001,0,"functio ... i;\n\t}\n}") +#20052=@"loc,{#10000},1,1,6,1" +locations_default(#20052,#10000,1,1,6,1) +hasLocation(#20051,#20052) +stmtContainers(#20051,#20001) +#20053=* +exprs(#20053,78,#20051,-1,"g") +hasLocation(#20053,#20017) +exprContainers(#20053,#20051) +literals("g","g",#20053) +decl(#20053,#20050) #20054=* -tokeninfo(#20054,7,#20001,10,"default") -#20055=@"loc,{#10000},3,2,3,8" -locations_default(#20055,#10000,3,2,3,8) -hasLocation(#20054,#20055) -#20056=* -tokeninfo(#20056,8,#20001,11,":") -#20057=@"loc,{#10000},3,9,3,9" -locations_default(#20057,#10000,3,9,3,9) -hasLocation(#20056,#20057) -#20058=* -tokeninfo(#20058,7,#20001,12,"var") -#20059=@"loc,{#10000},4,3,4,5" -locations_default(#20059,#10000,4,3,4,5) -hasLocation(#20058,#20059) -#20060=* -tokeninfo(#20060,6,#20001,13,"i") -hasLocation(#20060,#20022) +scopes(#20054,1) +scopenodes(#20051,#20054) +scopenesting(#20054,#20000) +#20055=@"var;{i};{#20054}" +variables(#20055,"i",#20054) +#20056=@"var;{arguments};{#20054}" +variables(#20056,"arguments",#20054) +isArgumentsObject(#20056) +#20057=* +stmts(#20057,1,#20051,-2,"{\n\tswit ... i;\n\t}\n}") +#20058=@"loc,{#10000},1,14,6,1" +locations_default(#20058,#10000,1,14,6,1) +hasLocation(#20057,#20058) +stmtContainers(#20057,#20051) +#20059=* +stmts(#20059,8,#20057,0,"switch ... r i;\n\t}") +#20060=@"loc,{#10000},2,2,5,2" +locations_default(#20060,#10000,2,2,5,2) +hasLocation(#20059,#20060) +stmtContainers(#20059,#20051) #20061=* -tokeninfo(#20061,8,#20001,14,";") -#20062=@"loc,{#10000},4,8,4,8" -locations_default(#20062,#10000,4,8,4,8) -hasLocation(#20061,#20062) -#20063=* -tokeninfo(#20063,8,#20001,15,"}") -#20064=@"loc,{#10000},5,2,5,2" -locations_default(#20064,#10000,5,2,5,2) -hasLocation(#20063,#20064) -#20065=* -tokeninfo(#20065,8,#20001,16,"}") -hasLocation(#20065,#20035) +exprs(#20061,3,#20059,-1,"0") +hasLocation(#20061,#20029) +enclosingStmt(#20061,#20059) +exprContainers(#20061,#20051) +literals("0","0",#20061) +#20062=* +stmts(#20062,19,#20059,0,"default:\n\t\tvar i;") +#20063=@"loc,{#10000},3,2,4,8" +locations_default(#20063,#10000,3,2,4,8) +hasLocation(#20062,#20063) +stmtContainers(#20062,#20051) +#20064=* +stmts(#20064,18,#20062,0,"var i;") +#20065=@"loc,{#10000},4,3,4,8" +locations_default(#20065,#10000,4,3,4,8) +hasLocation(#20064,#20065) +stmtContainers(#20064,#20051) #20066=* -tokeninfo(#20066,0,#20001,17,"") -#20067=@"loc,{#10000},7,1,7,0" -locations_default(#20067,#10000,7,1,7,0) -hasLocation(#20066,#20067) +exprs(#20066,64,#20064,0,"i") +hasLocation(#20066,#20041) +enclosingStmt(#20066,#20064) +exprContainers(#20066,#20051) +#20067=* +exprs(#20067,78,#20066,0,"i") +hasLocation(#20067,#20041) +enclosingStmt(#20067,#20064) +exprContainers(#20067,#20051) +literals("i","i",#20067) +decl(#20067,#20055) #20068=* entry_cfg_node(#20068,#20001) #20069=@"loc,{#10000},1,1,1,0" @@ -215,25 +214,25 @@ locations_default(#20069,#10000,1,1,1,0) hasLocation(#20068,#20069) #20070=* exit_cfg_node(#20070,#20001) -hasLocation(#20070,#20067) -successor(#20004,#20070) +hasLocation(#20070,#20048) +successor(#20051,#20070) #20071=* -entry_cfg_node(#20071,#20004) +entry_cfg_node(#20071,#20051) hasLocation(#20071,#20069) #20072=* -exit_cfg_node(#20072,#20004) +exit_cfg_node(#20072,#20051) #20073=@"loc,{#10000},6,2,6,1" locations_default(#20073,#10000,6,2,6,1) hasLocation(#20072,#20073) -successor(#20011,#20013) -successor(#20013,#20015) -successor(#20015,#20017) -successor(#20017,#20019) -successor(#20019,#20023) -successor(#20023,#20021) -successor(#20021,#20072) -successor(#20071,#20011) -successor(#20006,#20004) -successor(#20068,#20006) +successor(#20057,#20059) +successor(#20059,#20061) +successor(#20061,#20062) +successor(#20062,#20064) +successor(#20064,#20067) +successor(#20067,#20066) +successor(#20066,#20072) +successor(#20071,#20057) +successor(#20053,#20051) +successor(#20068,#20053) numlines(#10000,6,6,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/variables/output/trap/try.js.trap b/javascript/extractor/tests/variables/output/trap/try.js.trap index 601b9e6d413..4309208aa53 100644 --- a/javascript/extractor/tests/variables/output/trap/try.js.trap +++ b/javascript/extractor/tests/variables/output/trap/try.js.trap @@ -9,185 +9,184 @@ 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;{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 ... ly {}\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;{x};{#20007}" -variables(#20008,"x",#20007) -#20009=@"var;{arguments};{#20007}" -variables(#20009,"arguments",#20007) -isArgumentsObject(#20009) -#20010=* -stmts(#20010,1,#20004,-2,"{\n\ttry ... ly {}\n}") -#20011=@"loc,{#10000},1,14,5,1" -locations_default(#20011,#10000,1,14,5,1) -hasLocation(#20010,#20011) -stmtContainers(#20010,#20004) -#20012=* -stmts(#20012,11,#20010,0,"try {\n\t ... ally {}") -#20013=@"loc,{#10000},2,2,4,13" -locations_default(#20013,#10000,2,2,4,13) -hasLocation(#20012,#20013) -stmtContainers(#20012,#20004) -#20014=* -stmts(#20014,1,#20012,0,"{\n\t\tvar x;\n\t}") -#20015=@"loc,{#10000},2,6,4,2" -locations_default(#20015,#10000,2,6,4,2) -hasLocation(#20014,#20015) -stmtContainers(#20014,#20004) -#20016=* -stmts(#20016,18,#20014,0,"var x;") -#20017=@"loc,{#10000},3,3,3,8" -locations_default(#20017,#10000,3,3,3,8) -hasLocation(#20016,#20017) -stmtContainers(#20016,#20004) -#20018=* -exprs(#20018,64,#20016,0,"x") -#20019=@"loc,{#10000},3,7,3,7" -locations_default(#20019,#10000,3,7,3,7) -hasLocation(#20018,#20019) -enclosingStmt(#20018,#20016) -exprContainers(#20018,#20004) -#20020=* -exprs(#20020,78,#20018,0,"x") -hasLocation(#20020,#20019) -enclosingStmt(#20020,#20016) -exprContainers(#20020,#20004) -literals("x","x",#20020) -decl(#20020,#20008) -#20021=* -stmts(#20021,1,#20012,-1,"{}") -#20022=@"loc,{#10000},4,12,4,13" -locations_default(#20022,#10000,4,12,4,13) -hasLocation(#20021,#20022) -stmtContainers(#20021,#20004) -numlines(#20004,5,5,0) -#20023=* -lines(#20023,#20001,"function f() {"," +lines(#20004,#20001," try {"," ") -#20024=@"loc,{#10000},1,1,1,14" -locations_default(#20024,#10000,1,1,1,14) -hasLocation(#20023,#20024) -#20025=* -lines(#20025,#20001," try {"," -") -#20026=@"loc,{#10000},2,1,2,6" -locations_default(#20026,#10000,2,1,2,6) -hasLocation(#20025,#20026) +#20005=@"loc,{#10000},2,1,2,6" +locations_default(#20005,#10000,2,1,2,6) +hasLocation(#20004,#20005) indentation(#10000,2," ",1) -#20027=* -lines(#20027,#20001," var x;"," +#20006=* +lines(#20006,#20001," var x;"," ") -#20028=@"loc,{#10000},3,1,3,8" -locations_default(#20028,#10000,3,1,3,8) -hasLocation(#20027,#20028) +#20007=@"loc,{#10000},3,1,3,8" +locations_default(#20007,#10000,3,1,3,8) +hasLocation(#20006,#20007) indentation(#10000,3," ",2) -#20029=* -lines(#20029,#20001," } finally {}"," +#20008=* +lines(#20008,#20001," } finally {}"," ") -#20030=@"loc,{#10000},4,1,4,13" -locations_default(#20030,#10000,4,1,4,13) -hasLocation(#20029,#20030) +#20009=@"loc,{#10000},4,1,4,13" +locations_default(#20009,#10000,4,1,4,13) +hasLocation(#20008,#20009) indentation(#10000,4," ",1) -#20031=* -lines(#20031,#20001,"}","") -#20032=@"loc,{#10000},5,1,5,1" -locations_default(#20032,#10000,5,1,5,1) -hasLocation(#20031,#20032) +#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) -#20033=* -tokeninfo(#20033,7,#20001,0,"function") -#20034=@"loc,{#10000},1,1,1,8" -locations_default(#20034,#10000,1,1,1,8) -hasLocation(#20033,#20034) -#20035=* -tokeninfo(#20035,6,#20001,1,"f") -hasLocation(#20035,#20006) +#20012=* +tokeninfo(#20012,7,#20001,0,"function") +#20013=@"loc,{#10000},1,1,1,8" +locations_default(#20013,#10000,1,1,1,8) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,6,#20001,1,"f") +#20015=@"loc,{#10000},1,10,1,10" +locations_default(#20015,#10000,1,10,1,10) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,2,"(") +#20017=@"loc,{#10000},1,11,1,11" +locations_default(#20017,#10000,1,11,1,11) +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,8,#20001,4,"{") +#20021=@"loc,{#10000},1,14,1,14" +locations_default(#20021,#10000,1,14,1,14) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,7,#20001,5,"try") +#20023=@"loc,{#10000},2,2,2,4" +locations_default(#20023,#10000,2,2,2,4) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,6,"{") +#20025=@"loc,{#10000},2,6,2,6" +locations_default(#20025,#10000,2,6,2,6) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,7,#20001,7,"var") +#20027=@"loc,{#10000},3,3,3,5" +locations_default(#20027,#10000,3,3,3,5) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,6,#20001,8,"x") +#20029=@"loc,{#10000},3,7,3,7" +locations_default(#20029,#10000,3,7,3,7) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,9,";") +#20031=@"loc,{#10000},3,8,3,8" +locations_default(#20031,#10000,3,8,3,8) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,10,"}") +#20033=@"loc,{#10000},4,2,4,2" +locations_default(#20033,#10000,4,2,4,2) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,7,#20001,11,"finally") +#20035=@"loc,{#10000},4,4,4,10" +locations_default(#20035,#10000,4,4,4,10) +hasLocation(#20034,#20035) #20036=* -tokeninfo(#20036,8,#20001,2,"(") -#20037=@"loc,{#10000},1,11,1,11" -locations_default(#20037,#10000,1,11,1,11) +tokeninfo(#20036,8,#20001,12,"{") +#20037=@"loc,{#10000},4,12,4,12" +locations_default(#20037,#10000,4,12,4,12) hasLocation(#20036,#20037) #20038=* -tokeninfo(#20038,8,#20001,3,")") -#20039=@"loc,{#10000},1,12,1,12" -locations_default(#20039,#10000,1,12,1,12) +tokeninfo(#20038,8,#20001,13,"}") +#20039=@"loc,{#10000},4,13,4,13" +locations_default(#20039,#10000,4,13,4,13) hasLocation(#20038,#20039) #20040=* -tokeninfo(#20040,8,#20001,4,"{") -#20041=@"loc,{#10000},1,14,1,14" -locations_default(#20041,#10000,1,14,1,14) -hasLocation(#20040,#20041) -#20042=* -tokeninfo(#20042,7,#20001,5,"try") -#20043=@"loc,{#10000},2,2,2,4" -locations_default(#20043,#10000,2,2,2,4) -hasLocation(#20042,#20043) -#20044=* -tokeninfo(#20044,8,#20001,6,"{") -#20045=@"loc,{#10000},2,6,2,6" -locations_default(#20045,#10000,2,6,2,6) -hasLocation(#20044,#20045) +tokeninfo(#20040,8,#20001,14,"}") +hasLocation(#20040,#20011) +#20041=* +tokeninfo(#20041,0,#20001,15,"") +#20042=@"loc,{#10000},5,2,5,1" +locations_default(#20042,#10000,5,2,5,1) +hasLocation(#20041,#20042) +toplevels(#20001,0) +#20043=@"loc,{#10000},1,1,5,1" +locations_default(#20043,#10000,1,1,5,1) +hasLocation(#20001,#20043) +#20044=@"var;{f};{#20000}" +variables(#20044,"f",#20000) +#20045=* +stmts(#20045,17,#20001,0,"functio ... ly {}\n}") +hasLocation(#20045,#20043) +stmtContainers(#20045,#20001) #20046=* -tokeninfo(#20046,7,#20001,7,"var") -#20047=@"loc,{#10000},3,3,3,5" -locations_default(#20047,#10000,3,3,3,5) -hasLocation(#20046,#20047) -#20048=* -tokeninfo(#20048,6,#20001,8,"x") -hasLocation(#20048,#20019) -#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,8,#20001,10,"}") -#20052=@"loc,{#10000},4,2,4,2" -locations_default(#20052,#10000,4,2,4,2) -hasLocation(#20051,#20052) -#20053=* -tokeninfo(#20053,7,#20001,11,"finally") -#20054=@"loc,{#10000},4,4,4,10" -locations_default(#20054,#10000,4,4,4,10) -hasLocation(#20053,#20054) -#20055=* -tokeninfo(#20055,8,#20001,12,"{") -#20056=@"loc,{#10000},4,12,4,12" -locations_default(#20056,#10000,4,12,4,12) -hasLocation(#20055,#20056) -#20057=* -tokeninfo(#20057,8,#20001,13,"}") -#20058=@"loc,{#10000},4,13,4,13" -locations_default(#20058,#10000,4,13,4,13) -hasLocation(#20057,#20058) +exprs(#20046,78,#20045,-1,"f") +hasLocation(#20046,#20015) +exprContainers(#20046,#20045) +literals("f","f",#20046) +decl(#20046,#20044) +#20047=* +scopes(#20047,1) +scopenodes(#20045,#20047) +scopenesting(#20047,#20000) +#20048=@"var;{x};{#20047}" +variables(#20048,"x",#20047) +#20049=@"var;{arguments};{#20047}" +variables(#20049,"arguments",#20047) +isArgumentsObject(#20049) +#20050=* +stmts(#20050,1,#20045,-2,"{\n\ttry ... ly {}\n}") +#20051=@"loc,{#10000},1,14,5,1" +locations_default(#20051,#10000,1,14,5,1) +hasLocation(#20050,#20051) +stmtContainers(#20050,#20045) +#20052=* +stmts(#20052,11,#20050,0,"try {\n\t ... ally {}") +#20053=@"loc,{#10000},2,2,4,13" +locations_default(#20053,#10000,2,2,4,13) +hasLocation(#20052,#20053) +stmtContainers(#20052,#20045) +#20054=* +stmts(#20054,1,#20052,0,"{\n\t\tvar x;\n\t}") +#20055=@"loc,{#10000},2,6,4,2" +locations_default(#20055,#10000,2,6,4,2) +hasLocation(#20054,#20055) +stmtContainers(#20054,#20045) +#20056=* +stmts(#20056,18,#20054,0,"var x;") +#20057=@"loc,{#10000},3,3,3,8" +locations_default(#20057,#10000,3,3,3,8) +hasLocation(#20056,#20057) +stmtContainers(#20056,#20045) +#20058=* +exprs(#20058,64,#20056,0,"x") +hasLocation(#20058,#20029) +enclosingStmt(#20058,#20056) +exprContainers(#20058,#20045) #20059=* -tokeninfo(#20059,8,#20001,14,"}") -hasLocation(#20059,#20032) +exprs(#20059,78,#20058,0,"x") +hasLocation(#20059,#20029) +enclosingStmt(#20059,#20056) +exprContainers(#20059,#20045) +literals("x","x",#20059) +decl(#20059,#20048) #20060=* -tokeninfo(#20060,0,#20001,15,"") -#20061=@"loc,{#10000},5,2,5,1" -locations_default(#20061,#10000,5,2,5,1) +stmts(#20060,1,#20052,-1,"{}") +#20061=@"loc,{#10000},4,12,4,13" +locations_default(#20061,#10000,4,12,4,13) hasLocation(#20060,#20061) +stmtContainers(#20060,#20045) #20062=* entry_cfg_node(#20062,#20001) #20063=@"loc,{#10000},1,1,1,0" @@ -195,23 +194,23 @@ locations_default(#20063,#10000,1,1,1,0) hasLocation(#20062,#20063) #20064=* exit_cfg_node(#20064,#20001) -hasLocation(#20064,#20061) -successor(#20004,#20064) +hasLocation(#20064,#20042) +successor(#20045,#20064) #20065=* -entry_cfg_node(#20065,#20004) +entry_cfg_node(#20065,#20045) hasLocation(#20065,#20063) #20066=* -exit_cfg_node(#20066,#20004) -hasLocation(#20066,#20061) -successor(#20010,#20012) -successor(#20012,#20014) -successor(#20014,#20016) -successor(#20016,#20020) -successor(#20020,#20018) -successor(#20018,#20021) -successor(#20021,#20066) -successor(#20065,#20010) -successor(#20005,#20004) -successor(#20062,#20005) +exit_cfg_node(#20066,#20045) +hasLocation(#20066,#20042) +successor(#20050,#20052) +successor(#20052,#20054) +successor(#20054,#20056) +successor(#20056,#20059) +successor(#20059,#20058) +successor(#20058,#20060) +successor(#20060,#20066) +successor(#20065,#20050) +successor(#20046,#20045) +successor(#20062,#20046) numlines(#10000,5,5,0) filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/variables/output/trap/variables.js.trap b/javascript/extractor/tests/variables/output/trap/variables.js.trap index 38256367619..dfe092a5fef 100644 --- a/javascript/extractor/tests/variables/output/trap/variables.js.trap +++ b/javascript/extractor/tests/variables/output/trap/variables.js.trap @@ -9,683 +9,679 @@ hasLocation(#10000,#10002) #20000=@"global_scope" scopes(#20000,0) #20001=@"script;{#10000},1,1" -toplevels(#20001,0) -#20002=@"loc,{#10000},1,1,19,1" -locations_default(#20002,#10000,1,1,19,1) -hasLocation(#20001,#20002) -#20003=@"var;{global};{#20000}" -variables(#20003,"global",#20000) -#20004=@"var;{another_global};{#20000}" -variables(#20004,"another_global",#20000) -#20005=@"var;{f};{#20000}" -variables(#20005,"f",#20000) -#20006=@"var;{g};{#20000}" -variables(#20006,"g",#20000) -#20007=* -stmts(#20007,18,#20001,0,"var global;") -#20008=@"loc,{#10000},1,1,1,11" -locations_default(#20008,#10000,1,1,1,11) -hasLocation(#20007,#20008) -stmtContainers(#20007,#20001) -#20009=* -exprs(#20009,64,#20007,0,"global") -#20010=@"loc,{#10000},1,5,1,10" -locations_default(#20010,#10000,1,5,1,10) -hasLocation(#20009,#20010) -enclosingStmt(#20009,#20007) -exprContainers(#20009,#20001) -#20011=* -exprs(#20011,78,#20009,0,"global") -hasLocation(#20011,#20010) -enclosingStmt(#20011,#20007) -exprContainers(#20011,#20001) -literals("global","global",#20011) -decl(#20011,#20003) +#20002=* +lines(#20002,#20001,"var global;"," +") +#20003=@"loc,{#10000},1,1,1,11" +locations_default(#20003,#10000,1,1,1,11) +hasLocation(#20002,#20003) +#20004=* +lines(#20004,#20001,"also_a_global = 23;"," +") +#20005=@"loc,{#10000},2,1,2,19" +locations_default(#20005,#10000,2,1,2,19) +hasLocation(#20004,#20005) +#20006=* +lines(#20006,#20001,"global;"," +") +#20007=@"loc,{#10000},3,1,3,7" +locations_default(#20007,#10000,3,1,3,7) +hasLocation(#20006,#20007) +#20008=* +lines(#20008,#20001,"another_global;"," +") +#20009=@"loc,{#10000},4,1,4,15" +locations_default(#20009,#10000,4,1,4,15) +hasLocation(#20008,#20009) +#20010=* +lines(#20010,#20001,"{"," +") +#20011=@"loc,{#10000},5,1,5,1" +locations_default(#20011,#10000,5,1,5,1) +hasLocation(#20010,#20011) #20012=* -stmts(#20012,2,#20001,1,"also_a_global = 23;") -#20013=@"loc,{#10000},2,1,2,19" -locations_default(#20013,#10000,2,1,2,19) +lines(#20012,#20001," var another_global;"," +") +#20013=@"loc,{#10000},6,1,6,20" +locations_default(#20013,#10000,6,1,6,20) hasLocation(#20012,#20013) -stmtContainers(#20012,#20001) +indentation(#10000,6," ",1) #20014=* -exprs(#20014,47,#20012,0,"also_a_global = 23") -#20015=@"loc,{#10000},2,1,2,18" -locations_default(#20015,#10000,2,1,2,18) +lines(#20014,#20001,"}"," +") +#20015=@"loc,{#10000},7,1,7,1" +locations_default(#20015,#10000,7,1,7,1) hasLocation(#20014,#20015) -enclosingStmt(#20014,#20012) -exprContainers(#20014,#20001) #20016=* -exprs(#20016,79,#20014,0,"also_a_global") -#20017=@"loc,{#10000},2,1,2,13" -locations_default(#20017,#10000,2,1,2,13) +lines(#20016,#20001,"function f() {"," +") +#20017=@"loc,{#10000},8,1,8,14" +locations_default(#20017,#10000,8,1,8,14) hasLocation(#20016,#20017) -enclosingStmt(#20016,#20012) -exprContainers(#20016,#20001) -literals("also_a_global","also_a_global",#20016) -#20018=@"var;{also_a_global};{#20000}" -variables(#20018,"also_a_global",#20000) -bind(#20016,#20018) -#20019=* -exprs(#20019,3,#20014,1,"23") -#20020=@"loc,{#10000},2,17,2,18" -locations_default(#20020,#10000,2,17,2,18) -hasLocation(#20019,#20020) -enclosingStmt(#20019,#20012) -exprContainers(#20019,#20001) -literals("23","23",#20019) -#20021=* -stmts(#20021,2,#20001,2,"global;") -#20022=@"loc,{#10000},3,1,3,7" -locations_default(#20022,#10000,3,1,3,7) -hasLocation(#20021,#20022) -stmtContainers(#20021,#20001) -#20023=* -exprs(#20023,79,#20021,0,"global") -#20024=@"loc,{#10000},3,1,3,6" -locations_default(#20024,#10000,3,1,3,6) -hasLocation(#20023,#20024) -enclosingStmt(#20023,#20021) -exprContainers(#20023,#20001) -literals("global","global",#20023) -bind(#20023,#20003) -#20025=* -stmts(#20025,2,#20001,3,"another_global;") -#20026=@"loc,{#10000},4,1,4,15" -locations_default(#20026,#10000,4,1,4,15) -hasLocation(#20025,#20026) -stmtContainers(#20025,#20001) -#20027=* -exprs(#20027,79,#20025,0,"another_global") -#20028=@"loc,{#10000},4,1,4,14" -locations_default(#20028,#10000,4,1,4,14) -hasLocation(#20027,#20028) -enclosingStmt(#20027,#20025) -exprContainers(#20027,#20001) -literals("another_global","another_global",#20027) -bind(#20027,#20004) -#20029=* -stmts(#20029,1,#20001,4,"{\n\tvar ... obal;\n}") -#20030=@"loc,{#10000},5,1,7,1" -locations_default(#20030,#10000,5,1,7,1) -hasLocation(#20029,#20030) -stmtContainers(#20029,#20001) -#20031=* -stmts(#20031,18,#20029,0,"var another_global;") -#20032=@"loc,{#10000},6,2,6,20" -locations_default(#20032,#10000,6,2,6,20) -hasLocation(#20031,#20032) -stmtContainers(#20031,#20001) -#20033=* -exprs(#20033,64,#20031,0,"another_global") -#20034=@"loc,{#10000},6,6,6,19" -locations_default(#20034,#10000,6,6,6,19) -hasLocation(#20033,#20034) -enclosingStmt(#20033,#20031) -exprContainers(#20033,#20001) -#20035=* -exprs(#20035,78,#20033,0,"another_global") -hasLocation(#20035,#20034) -enclosingStmt(#20035,#20031) -exprContainers(#20035,#20001) -literals("another_global","another_global",#20035) -decl(#20035,#20004) +#20018=* +lines(#20018,#20001," var x;"," +") +#20019=@"loc,{#10000},9,1,9,7" +locations_default(#20019,#10000,9,1,9,7) +hasLocation(#20018,#20019) +indentation(#10000,9," ",1) +#20020=* +lines(#20020,#20001," x;"," +") +#20021=@"loc,{#10000},10,1,10,3" +locations_default(#20021,#10000,10,1,10,3) +hasLocation(#20020,#20021) +indentation(#10000,10," ",1) +#20022=* +lines(#20022,#20001,"}"," +") +#20023=@"loc,{#10000},11,1,11,1" +locations_default(#20023,#10000,11,1,11,1) +hasLocation(#20022,#20023) +#20024=* +lines(#20024,#20001,"function g() {"," +") +#20025=@"loc,{#10000},12,1,12,14" +locations_default(#20025,#10000,12,1,12,14) +hasLocation(#20024,#20025) +#20026=* +lines(#20026,#20001," x;"," +") +#20027=@"loc,{#10000},13,1,13,3" +locations_default(#20027,#10000,13,1,13,3) +hasLocation(#20026,#20027) +indentation(#10000,13," ",1) +#20028=* +lines(#20028,#20001," var x;"," +") +#20029=@"loc,{#10000},14,1,14,7" +locations_default(#20029,#10000,14,1,14,7) +hasLocation(#20028,#20029) +indentation(#10000,14," ",1) +#20030=* +lines(#20030,#20001," {"," +") +#20031=@"loc,{#10000},15,1,15,2" +locations_default(#20031,#10000,15,1,15,2) +hasLocation(#20030,#20031) +indentation(#10000,15," ",1) +#20032=* +lines(#20032,#20001," function h() {}"," +") +#20033=@"loc,{#10000},16,1,16,17" +locations_default(#20033,#10000,16,1,16,17) +hasLocation(#20032,#20033) +indentation(#10000,16," ",2) +#20034=* +lines(#20034,#20001," !function k() {}"," +") +#20035=@"loc,{#10000},17,1,17,18" +locations_default(#20035,#10000,17,1,17,18) +hasLocation(#20034,#20035) +indentation(#10000,17," ",2) #20036=* -stmts(#20036,17,#20001,5,"functio ... ;\n\tx;\n}") -#20037=@"loc,{#10000},8,1,11,1" -locations_default(#20037,#10000,8,1,11,1) +lines(#20036,#20001," }"," +") +#20037=@"loc,{#10000},18,1,18,2" +locations_default(#20037,#10000,18,1,18,2) hasLocation(#20036,#20037) -stmtContainers(#20036,#20001) +indentation(#10000,18," ",1) #20038=* -exprs(#20038,78,#20036,-1,"f") -#20039=@"loc,{#10000},8,10,8,10" -locations_default(#20039,#10000,8,10,8,10) +lines(#20038,#20001,"}","") +#20039=@"loc,{#10000},19,1,19,1" +locations_default(#20039,#10000,19,1,19,1) hasLocation(#20038,#20039) -exprContainers(#20038,#20036) -literals("f","f",#20038) -decl(#20038,#20005) +numlines(#20001,19,19,0) #20040=* -scopes(#20040,1) -scopenodes(#20036,#20040) -scopenesting(#20040,#20000) -#20041=@"var;{x};{#20040}" -variables(#20041,"x",#20040) -#20042=@"var;{arguments};{#20040}" -variables(#20042,"arguments",#20040) -isArgumentsObject(#20042) -#20043=* -stmts(#20043,1,#20036,-2,"{\n\tvar x;\n\tx;\n}") -#20044=@"loc,{#10000},8,14,11,1" -locations_default(#20044,#10000,8,14,11,1) -hasLocation(#20043,#20044) -stmtContainers(#20043,#20036) -#20045=* -stmts(#20045,18,#20043,0,"var x;") -#20046=@"loc,{#10000},9,2,9,7" -locations_default(#20046,#10000,9,2,9,7) -hasLocation(#20045,#20046) -stmtContainers(#20045,#20036) -#20047=* -exprs(#20047,64,#20045,0,"x") -#20048=@"loc,{#10000},9,6,9,6" -locations_default(#20048,#10000,9,6,9,6) -hasLocation(#20047,#20048) -enclosingStmt(#20047,#20045) -exprContainers(#20047,#20036) -#20049=* -exprs(#20049,78,#20047,0,"x") -hasLocation(#20049,#20048) -enclosingStmt(#20049,#20045) -exprContainers(#20049,#20036) -literals("x","x",#20049) -decl(#20049,#20041) +tokeninfo(#20040,7,#20001,0,"var") +#20041=@"loc,{#10000},1,1,1,3" +locations_default(#20041,#10000,1,1,1,3) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,6,#20001,1,"global") +#20043=@"loc,{#10000},1,5,1,10" +locations_default(#20043,#10000,1,5,1,10) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,2,";") +#20045=@"loc,{#10000},1,11,1,11" +locations_default(#20045,#10000,1,11,1,11) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,6,#20001,3,"also_a_global") +#20047=@"loc,{#10000},2,1,2,13" +locations_default(#20047,#10000,2,1,2,13) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,8,#20001,4,"=") +#20049=@"loc,{#10000},2,15,2,15" +locations_default(#20049,#10000,2,15,2,15) +hasLocation(#20048,#20049) #20050=* -stmts(#20050,2,#20043,1,"x;") -#20051=@"loc,{#10000},10,2,10,3" -locations_default(#20051,#10000,10,2,10,3) +tokeninfo(#20050,3,#20001,5,"23") +#20051=@"loc,{#10000},2,17,2,18" +locations_default(#20051,#10000,2,17,2,18) hasLocation(#20050,#20051) -stmtContainers(#20050,#20036) #20052=* -exprs(#20052,79,#20050,0,"x") -#20053=@"loc,{#10000},10,2,10,2" -locations_default(#20053,#10000,10,2,10,2) +tokeninfo(#20052,8,#20001,6,";") +#20053=@"loc,{#10000},2,19,2,19" +locations_default(#20053,#10000,2,19,2,19) hasLocation(#20052,#20053) -enclosingStmt(#20052,#20050) -exprContainers(#20052,#20036) -literals("x","x",#20052) -bind(#20052,#20041) -numlines(#20036,4,4,0) #20054=* -stmts(#20054,17,#20001,6,"functio ... {}\n\t}\n}") -#20055=@"loc,{#10000},12,1,19,1" -locations_default(#20055,#10000,12,1,19,1) +tokeninfo(#20054,6,#20001,7,"global") +#20055=@"loc,{#10000},3,1,3,6" +locations_default(#20055,#10000,3,1,3,6) hasLocation(#20054,#20055) -stmtContainers(#20054,#20001) #20056=* -exprs(#20056,78,#20054,-1,"g") -#20057=@"loc,{#10000},12,10,12,10" -locations_default(#20057,#10000,12,10,12,10) +tokeninfo(#20056,8,#20001,8,";") +#20057=@"loc,{#10000},3,7,3,7" +locations_default(#20057,#10000,3,7,3,7) hasLocation(#20056,#20057) -exprContainers(#20056,#20054) -literals("g","g",#20056) -decl(#20056,#20006) #20058=* -scopes(#20058,1) -scopenodes(#20054,#20058) -scopenesting(#20058,#20000) -#20059=@"var;{x};{#20058}" -variables(#20059,"x",#20058) -#20060=@"var;{h};{#20058}" -variables(#20060,"h",#20058) -#20061=@"var;{arguments};{#20058}" -variables(#20061,"arguments",#20058) -isArgumentsObject(#20061) +tokeninfo(#20058,6,#20001,9,"another_global") +#20059=@"loc,{#10000},4,1,4,14" +locations_default(#20059,#10000,4,1,4,14) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,8,#20001,10,";") +#20061=@"loc,{#10000},4,15,4,15" +locations_default(#20061,#10000,4,15,4,15) +hasLocation(#20060,#20061) #20062=* -stmts(#20062,1,#20054,-2,"{\n\tx;\n\t ... {}\n\t}\n}") -#20063=@"loc,{#10000},12,14,19,1" -locations_default(#20063,#10000,12,14,19,1) -hasLocation(#20062,#20063) -stmtContainers(#20062,#20054) -#20064=* -stmts(#20064,2,#20062,0,"x;") -#20065=@"loc,{#10000},13,2,13,3" -locations_default(#20065,#10000,13,2,13,3) -hasLocation(#20064,#20065) -stmtContainers(#20064,#20054) -#20066=* -exprs(#20066,79,#20064,0,"x") -#20067=@"loc,{#10000},13,2,13,2" -locations_default(#20067,#10000,13,2,13,2) -hasLocation(#20066,#20067) -enclosingStmt(#20066,#20064) -exprContainers(#20066,#20054) -literals("x","x",#20066) -bind(#20066,#20059) -#20068=* -stmts(#20068,18,#20062,1,"var x;") -#20069=@"loc,{#10000},14,2,14,7" -locations_default(#20069,#10000,14,2,14,7) -hasLocation(#20068,#20069) -stmtContainers(#20068,#20054) +tokeninfo(#20062,8,#20001,11,"{") +hasLocation(#20062,#20011) +#20063=* +tokeninfo(#20063,7,#20001,12,"var") +#20064=@"loc,{#10000},6,2,6,4" +locations_default(#20064,#10000,6,2,6,4) +hasLocation(#20063,#20064) +#20065=* +tokeninfo(#20065,6,#20001,13,"another_global") +#20066=@"loc,{#10000},6,6,6,19" +locations_default(#20066,#10000,6,6,6,19) +hasLocation(#20065,#20066) +#20067=* +tokeninfo(#20067,8,#20001,14,";") +#20068=@"loc,{#10000},6,20,6,20" +locations_default(#20068,#10000,6,20,6,20) +hasLocation(#20067,#20068) +#20069=* +tokeninfo(#20069,8,#20001,15,"}") +hasLocation(#20069,#20015) #20070=* -exprs(#20070,64,#20068,0,"x") -#20071=@"loc,{#10000},14,6,14,6" -locations_default(#20071,#10000,14,6,14,6) +tokeninfo(#20070,7,#20001,16,"function") +#20071=@"loc,{#10000},8,1,8,8" +locations_default(#20071,#10000,8,1,8,8) hasLocation(#20070,#20071) -enclosingStmt(#20070,#20068) -exprContainers(#20070,#20054) #20072=* -exprs(#20072,78,#20070,0,"x") -hasLocation(#20072,#20071) -enclosingStmt(#20072,#20068) -exprContainers(#20072,#20054) -literals("x","x",#20072) -decl(#20072,#20059) -#20073=* -stmts(#20073,1,#20062,2,"{\n\t\tfun ... ) {}\n\t}") -#20074=@"loc,{#10000},15,2,18,2" -locations_default(#20074,#10000,15,2,18,2) -hasLocation(#20073,#20074) -stmtContainers(#20073,#20054) -#20075=* -stmts(#20075,17,#20073,0,"function h() {}") -#20076=@"loc,{#10000},16,3,16,17" -locations_default(#20076,#10000,16,3,16,17) -hasLocation(#20075,#20076) -stmtContainers(#20075,#20054) -#20077=* -exprs(#20077,78,#20075,-1,"h") -#20078=@"loc,{#10000},16,12,16,12" -locations_default(#20078,#10000,16,12,16,12) -hasLocation(#20077,#20078) -exprContainers(#20077,#20075) -literals("h","h",#20077) -decl(#20077,#20060) -#20079=* -scopes(#20079,1) -scopenodes(#20075,#20079) -scopenesting(#20079,#20058) -#20080=@"var;{arguments};{#20079}" -variables(#20080,"arguments",#20079) -isArgumentsObject(#20080) -#20081=* -stmts(#20081,1,#20075,-2,"{}") -#20082=@"loc,{#10000},16,16,16,17" -locations_default(#20082,#10000,16,16,16,17) -hasLocation(#20081,#20082) -stmtContainers(#20081,#20075) -numlines(#20075,1,1,0) -#20083=* -stmts(#20083,2,#20073,1,"!function k() {}") -#20084=@"loc,{#10000},17,3,17,18" -locations_default(#20084,#10000,17,3,17,18) -hasLocation(#20083,#20084) -stmtContainers(#20083,#20054) -#20085=* -exprs(#20085,18,#20083,0,"!function k() {}") -hasLocation(#20085,#20084) -enclosingStmt(#20085,#20083) -exprContainers(#20085,#20054) +tokeninfo(#20072,6,#20001,17,"f") +#20073=@"loc,{#10000},8,10,8,10" +locations_default(#20073,#10000,8,10,8,10) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,8,#20001,18,"(") +#20075=@"loc,{#10000},8,11,8,11" +locations_default(#20075,#10000,8,11,8,11) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,8,#20001,19,")") +#20077=@"loc,{#10000},8,12,8,12" +locations_default(#20077,#10000,8,12,8,12) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,8,#20001,20,"{") +#20079=@"loc,{#10000},8,14,8,14" +locations_default(#20079,#10000,8,14,8,14) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,7,#20001,21,"var") +#20081=@"loc,{#10000},9,2,9,4" +locations_default(#20081,#10000,9,2,9,4) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,6,#20001,22,"x") +#20083=@"loc,{#10000},9,6,9,6" +locations_default(#20083,#10000,9,6,9,6) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,8,#20001,23,";") +#20085=@"loc,{#10000},9,7,9,7" +locations_default(#20085,#10000,9,7,9,7) +hasLocation(#20084,#20085) #20086=* -exprs(#20086,9,#20085,0,"function k() {}") -#20087=@"loc,{#10000},17,4,17,18" -locations_default(#20087,#10000,17,4,17,18) +tokeninfo(#20086,6,#20001,24,"x") +#20087=@"loc,{#10000},10,2,10,2" +locations_default(#20087,#10000,10,2,10,2) hasLocation(#20086,#20087) -enclosingStmt(#20086,#20083) -exprContainers(#20086,#20054) #20088=* -scopes(#20088,1) -scopenodes(#20086,#20088) -scopenesting(#20088,#20058) -#20089=@"var;{k};{#20088}" -variables(#20089,"k",#20088) +tokeninfo(#20088,8,#20001,25,";") +#20089=@"loc,{#10000},10,3,10,3" +locations_default(#20089,#10000,10,3,10,3) +hasLocation(#20088,#20089) #20090=* -exprs(#20090,78,#20086,-1,"k") -#20091=@"loc,{#10000},17,13,17,13" -locations_default(#20091,#10000,17,13,17,13) -hasLocation(#20090,#20091) -exprContainers(#20090,#20086) -literals("k","k",#20090) -decl(#20090,#20089) -#20092=@"var;{arguments};{#20088}" -variables(#20092,"arguments",#20088) -isArgumentsObject(#20092) +tokeninfo(#20090,8,#20001,26,"}") +hasLocation(#20090,#20023) +#20091=* +tokeninfo(#20091,7,#20001,27,"function") +#20092=@"loc,{#10000},12,1,12,8" +locations_default(#20092,#10000,12,1,12,8) +hasLocation(#20091,#20092) #20093=* -stmts(#20093,1,#20086,-2,"{}") -#20094=@"loc,{#10000},17,17,17,18" -locations_default(#20094,#10000,17,17,17,18) +tokeninfo(#20093,6,#20001,28,"g") +#20094=@"loc,{#10000},12,10,12,10" +locations_default(#20094,#10000,12,10,12,10) hasLocation(#20093,#20094) -stmtContainers(#20093,#20086) -numlines(#20086,1,1,0) -numlines(#20054,8,8,0) #20095=* -lines(#20095,#20001,"var global;"," -") -hasLocation(#20095,#20008) -#20096=* -lines(#20096,#20001,"also_a_global = 23;"," -") -hasLocation(#20096,#20013) +tokeninfo(#20095,8,#20001,29,"(") +#20096=@"loc,{#10000},12,11,12,11" +locations_default(#20096,#10000,12,11,12,11) +hasLocation(#20095,#20096) #20097=* -lines(#20097,#20001,"global;"," -") -hasLocation(#20097,#20022) -#20098=* -lines(#20098,#20001,"another_global;"," -") -hasLocation(#20098,#20026) +tokeninfo(#20097,8,#20001,30,")") +#20098=@"loc,{#10000},12,12,12,12" +locations_default(#20098,#10000,12,12,12,12) +hasLocation(#20097,#20098) #20099=* -lines(#20099,#20001,"{"," -") -#20100=@"loc,{#10000},5,1,5,1" -locations_default(#20100,#10000,5,1,5,1) +tokeninfo(#20099,8,#20001,31,"{") +#20100=@"loc,{#10000},12,14,12,14" +locations_default(#20100,#10000,12,14,12,14) hasLocation(#20099,#20100) #20101=* -lines(#20101,#20001," var another_global;"," -") -#20102=@"loc,{#10000},6,1,6,20" -locations_default(#20102,#10000,6,1,6,20) +tokeninfo(#20101,6,#20001,32,"x") +#20102=@"loc,{#10000},13,2,13,2" +locations_default(#20102,#10000,13,2,13,2) hasLocation(#20101,#20102) -indentation(#10000,6," ",1) #20103=* -lines(#20103,#20001,"}"," -") -#20104=@"loc,{#10000},7,1,7,1" -locations_default(#20104,#10000,7,1,7,1) +tokeninfo(#20103,8,#20001,33,";") +#20104=@"loc,{#10000},13,3,13,3" +locations_default(#20104,#10000,13,3,13,3) hasLocation(#20103,#20104) #20105=* -lines(#20105,#20001,"function f() {"," -") -#20106=@"loc,{#10000},8,1,8,14" -locations_default(#20106,#10000,8,1,8,14) +tokeninfo(#20105,7,#20001,34,"var") +#20106=@"loc,{#10000},14,2,14,4" +locations_default(#20106,#10000,14,2,14,4) hasLocation(#20105,#20106) #20107=* -lines(#20107,#20001," var x;"," -") -#20108=@"loc,{#10000},9,1,9,7" -locations_default(#20108,#10000,9,1,9,7) +tokeninfo(#20107,6,#20001,35,"x") +#20108=@"loc,{#10000},14,6,14,6" +locations_default(#20108,#10000,14,6,14,6) hasLocation(#20107,#20108) -indentation(#10000,9," ",1) #20109=* -lines(#20109,#20001," x;"," -") -#20110=@"loc,{#10000},10,1,10,3" -locations_default(#20110,#10000,10,1,10,3) +tokeninfo(#20109,8,#20001,36,";") +#20110=@"loc,{#10000},14,7,14,7" +locations_default(#20110,#10000,14,7,14,7) hasLocation(#20109,#20110) -indentation(#10000,10," ",1) #20111=* -lines(#20111,#20001,"}"," -") -#20112=@"loc,{#10000},11,1,11,1" -locations_default(#20112,#10000,11,1,11,1) +tokeninfo(#20111,8,#20001,37,"{") +#20112=@"loc,{#10000},15,2,15,2" +locations_default(#20112,#10000,15,2,15,2) hasLocation(#20111,#20112) #20113=* -lines(#20113,#20001,"function g() {"," -") -#20114=@"loc,{#10000},12,1,12,14" -locations_default(#20114,#10000,12,1,12,14) +tokeninfo(#20113,7,#20001,38,"function") +#20114=@"loc,{#10000},16,3,16,10" +locations_default(#20114,#10000,16,3,16,10) hasLocation(#20113,#20114) #20115=* -lines(#20115,#20001," x;"," -") -#20116=@"loc,{#10000},13,1,13,3" -locations_default(#20116,#10000,13,1,13,3) +tokeninfo(#20115,6,#20001,39,"h") +#20116=@"loc,{#10000},16,12,16,12" +locations_default(#20116,#10000,16,12,16,12) hasLocation(#20115,#20116) -indentation(#10000,13," ",1) #20117=* -lines(#20117,#20001," var x;"," -") -#20118=@"loc,{#10000},14,1,14,7" -locations_default(#20118,#10000,14,1,14,7) +tokeninfo(#20117,8,#20001,40,"(") +#20118=@"loc,{#10000},16,13,16,13" +locations_default(#20118,#10000,16,13,16,13) hasLocation(#20117,#20118) -indentation(#10000,14," ",1) #20119=* -lines(#20119,#20001," {"," -") -#20120=@"loc,{#10000},15,1,15,2" -locations_default(#20120,#10000,15,1,15,2) +tokeninfo(#20119,8,#20001,41,")") +#20120=@"loc,{#10000},16,14,16,14" +locations_default(#20120,#10000,16,14,16,14) hasLocation(#20119,#20120) -indentation(#10000,15," ",1) #20121=* -lines(#20121,#20001," function h() {}"," -") -#20122=@"loc,{#10000},16,1,16,17" -locations_default(#20122,#10000,16,1,16,17) +tokeninfo(#20121,8,#20001,42,"{") +#20122=@"loc,{#10000},16,16,16,16" +locations_default(#20122,#10000,16,16,16,16) hasLocation(#20121,#20122) -indentation(#10000,16," ",2) #20123=* -lines(#20123,#20001," !function k() {}"," -") -#20124=@"loc,{#10000},17,1,17,18" -locations_default(#20124,#10000,17,1,17,18) +tokeninfo(#20123,8,#20001,43,"}") +#20124=@"loc,{#10000},16,17,16,17" +locations_default(#20124,#10000,16,17,16,17) hasLocation(#20123,#20124) -indentation(#10000,17," ",2) #20125=* -lines(#20125,#20001," }"," -") -#20126=@"loc,{#10000},18,1,18,2" -locations_default(#20126,#10000,18,1,18,2) +tokeninfo(#20125,8,#20001,44,"!") +#20126=@"loc,{#10000},17,3,17,3" +locations_default(#20126,#10000,17,3,17,3) hasLocation(#20125,#20126) -indentation(#10000,18," ",1) #20127=* -lines(#20127,#20001,"}","") -#20128=@"loc,{#10000},19,1,19,1" -locations_default(#20128,#10000,19,1,19,1) +tokeninfo(#20127,7,#20001,45,"function") +#20128=@"loc,{#10000},17,4,17,11" +locations_default(#20128,#10000,17,4,17,11) hasLocation(#20127,#20128) -numlines(#20001,19,19,0) #20129=* -tokeninfo(#20129,7,#20001,0,"var") -#20130=@"loc,{#10000},1,1,1,3" -locations_default(#20130,#10000,1,1,1,3) +tokeninfo(#20129,6,#20001,46,"k") +#20130=@"loc,{#10000},17,13,17,13" +locations_default(#20130,#10000,17,13,17,13) hasLocation(#20129,#20130) #20131=* -tokeninfo(#20131,6,#20001,1,"global") -hasLocation(#20131,#20010) -#20132=* -tokeninfo(#20132,8,#20001,2,";") -#20133=@"loc,{#10000},1,11,1,11" -locations_default(#20133,#10000,1,11,1,11) -hasLocation(#20132,#20133) -#20134=* -tokeninfo(#20134,6,#20001,3,"also_a_global") -hasLocation(#20134,#20017) +tokeninfo(#20131,8,#20001,47,"(") +#20132=@"loc,{#10000},17,14,17,14" +locations_default(#20132,#10000,17,14,17,14) +hasLocation(#20131,#20132) +#20133=* +tokeninfo(#20133,8,#20001,48,")") +#20134=@"loc,{#10000},17,15,17,15" +locations_default(#20134,#10000,17,15,17,15) +hasLocation(#20133,#20134) #20135=* -tokeninfo(#20135,8,#20001,4,"=") -#20136=@"loc,{#10000},2,15,2,15" -locations_default(#20136,#10000,2,15,2,15) +tokeninfo(#20135,8,#20001,49,"{") +#20136=@"loc,{#10000},17,17,17,17" +locations_default(#20136,#10000,17,17,17,17) hasLocation(#20135,#20136) #20137=* -tokeninfo(#20137,3,#20001,5,"23") -hasLocation(#20137,#20020) -#20138=* -tokeninfo(#20138,8,#20001,6,";") -#20139=@"loc,{#10000},2,19,2,19" -locations_default(#20139,#10000,2,19,2,19) -hasLocation(#20138,#20139) -#20140=* -tokeninfo(#20140,6,#20001,7,"global") -hasLocation(#20140,#20024) +tokeninfo(#20137,8,#20001,50,"}") +#20138=@"loc,{#10000},17,18,17,18" +locations_default(#20138,#10000,17,18,17,18) +hasLocation(#20137,#20138) +#20139=* +tokeninfo(#20139,8,#20001,51,"}") +#20140=@"loc,{#10000},18,2,18,2" +locations_default(#20140,#10000,18,2,18,2) +hasLocation(#20139,#20140) #20141=* -tokeninfo(#20141,8,#20001,8,";") -#20142=@"loc,{#10000},3,7,3,7" -locations_default(#20142,#10000,3,7,3,7) -hasLocation(#20141,#20142) -#20143=* -tokeninfo(#20143,6,#20001,9,"another_global") -hasLocation(#20143,#20028) -#20144=* -tokeninfo(#20144,8,#20001,10,";") -#20145=@"loc,{#10000},4,15,4,15" -locations_default(#20145,#10000,4,15,4,15) -hasLocation(#20144,#20145) -#20146=* -tokeninfo(#20146,8,#20001,11,"{") -hasLocation(#20146,#20100) -#20147=* -tokeninfo(#20147,7,#20001,12,"var") -#20148=@"loc,{#10000},6,2,6,4" -locations_default(#20148,#10000,6,2,6,4) -hasLocation(#20147,#20148) +tokeninfo(#20141,8,#20001,52,"}") +hasLocation(#20141,#20039) +#20142=* +tokeninfo(#20142,0,#20001,53,"") +#20143=@"loc,{#10000},19,2,19,1" +locations_default(#20143,#10000,19,2,19,1) +hasLocation(#20142,#20143) +toplevels(#20001,0) +#20144=@"loc,{#10000},1,1,19,1" +locations_default(#20144,#10000,1,1,19,1) +hasLocation(#20001,#20144) +#20145=@"var;{global};{#20000}" +variables(#20145,"global",#20000) +#20146=@"var;{another_global};{#20000}" +variables(#20146,"another_global",#20000) +#20147=@"var;{f};{#20000}" +variables(#20147,"f",#20000) +#20148=@"var;{g};{#20000}" +variables(#20148,"g",#20000) #20149=* -tokeninfo(#20149,6,#20001,13,"another_global") -hasLocation(#20149,#20034) +stmts(#20149,18,#20001,0,"var global;") +hasLocation(#20149,#20003) +stmtContainers(#20149,#20001) #20150=* -tokeninfo(#20150,8,#20001,14,";") -#20151=@"loc,{#10000},6,20,6,20" -locations_default(#20151,#10000,6,20,6,20) -hasLocation(#20150,#20151) +exprs(#20150,64,#20149,0,"global") +hasLocation(#20150,#20043) +enclosingStmt(#20150,#20149) +exprContainers(#20150,#20001) +#20151=* +exprs(#20151,78,#20150,0,"global") +hasLocation(#20151,#20043) +enclosingStmt(#20151,#20149) +exprContainers(#20151,#20001) +literals("global","global",#20151) +decl(#20151,#20145) #20152=* -tokeninfo(#20152,8,#20001,15,"}") -hasLocation(#20152,#20104) +stmts(#20152,2,#20001,1,"also_a_global = 23;") +hasLocation(#20152,#20005) +stmtContainers(#20152,#20001) #20153=* -tokeninfo(#20153,7,#20001,16,"function") -#20154=@"loc,{#10000},8,1,8,8" -locations_default(#20154,#10000,8,1,8,8) +exprs(#20153,47,#20152,0,"also_a_global = 23") +#20154=@"loc,{#10000},2,1,2,18" +locations_default(#20154,#10000,2,1,2,18) hasLocation(#20153,#20154) +enclosingStmt(#20153,#20152) +exprContainers(#20153,#20001) #20155=* -tokeninfo(#20155,6,#20001,17,"f") -hasLocation(#20155,#20039) -#20156=* -tokeninfo(#20156,8,#20001,18,"(") -#20157=@"loc,{#10000},8,11,8,11" -locations_default(#20157,#10000,8,11,8,11) -hasLocation(#20156,#20157) +exprs(#20155,79,#20153,0,"also_a_global") +hasLocation(#20155,#20047) +enclosingStmt(#20155,#20152) +exprContainers(#20155,#20001) +literals("also_a_global","also_a_global",#20155) +#20156=@"var;{also_a_global};{#20000}" +variables(#20156,"also_a_global",#20000) +bind(#20155,#20156) +#20157=* +exprs(#20157,3,#20153,1,"23") +hasLocation(#20157,#20051) +enclosingStmt(#20157,#20152) +exprContainers(#20157,#20001) +literals("23","23",#20157) #20158=* -tokeninfo(#20158,8,#20001,19,")") -#20159=@"loc,{#10000},8,12,8,12" -locations_default(#20159,#10000,8,12,8,12) -hasLocation(#20158,#20159) +stmts(#20158,2,#20001,2,"global;") +hasLocation(#20158,#20007) +stmtContainers(#20158,#20001) +#20159=* +exprs(#20159,79,#20158,0,"global") +hasLocation(#20159,#20055) +enclosingStmt(#20159,#20158) +exprContainers(#20159,#20001) +literals("global","global",#20159) +bind(#20159,#20145) #20160=* -tokeninfo(#20160,8,#20001,20,"{") -#20161=@"loc,{#10000},8,14,8,14" -locations_default(#20161,#10000,8,14,8,14) -hasLocation(#20160,#20161) +stmts(#20160,2,#20001,3,"another_global;") +hasLocation(#20160,#20009) +stmtContainers(#20160,#20001) +#20161=* +exprs(#20161,79,#20160,0,"another_global") +hasLocation(#20161,#20059) +enclosingStmt(#20161,#20160) +exprContainers(#20161,#20001) +literals("another_global","another_global",#20161) +bind(#20161,#20146) #20162=* -tokeninfo(#20162,7,#20001,21,"var") -#20163=@"loc,{#10000},9,2,9,4" -locations_default(#20163,#10000,9,2,9,4) +stmts(#20162,1,#20001,4,"{\n\tvar ... obal;\n}") +#20163=@"loc,{#10000},5,1,7,1" +locations_default(#20163,#10000,5,1,7,1) hasLocation(#20162,#20163) +stmtContainers(#20162,#20001) #20164=* -tokeninfo(#20164,6,#20001,22,"x") -hasLocation(#20164,#20048) -#20165=* -tokeninfo(#20165,8,#20001,23,";") -#20166=@"loc,{#10000},9,7,9,7" -locations_default(#20166,#10000,9,7,9,7) -hasLocation(#20165,#20166) +stmts(#20164,18,#20162,0,"var another_global;") +#20165=@"loc,{#10000},6,2,6,20" +locations_default(#20165,#10000,6,2,6,20) +hasLocation(#20164,#20165) +stmtContainers(#20164,#20001) +#20166=* +exprs(#20166,64,#20164,0,"another_global") +hasLocation(#20166,#20066) +enclosingStmt(#20166,#20164) +exprContainers(#20166,#20001) #20167=* -tokeninfo(#20167,6,#20001,24,"x") -hasLocation(#20167,#20053) +exprs(#20167,78,#20166,0,"another_global") +hasLocation(#20167,#20066) +enclosingStmt(#20167,#20164) +exprContainers(#20167,#20001) +literals("another_global","another_global",#20167) +decl(#20167,#20146) #20168=* -tokeninfo(#20168,8,#20001,25,";") -#20169=@"loc,{#10000},10,3,10,3" -locations_default(#20169,#10000,10,3,10,3) +stmts(#20168,17,#20001,5,"functio ... ;\n\tx;\n}") +#20169=@"loc,{#10000},8,1,11,1" +locations_default(#20169,#10000,8,1,11,1) hasLocation(#20168,#20169) +stmtContainers(#20168,#20001) #20170=* -tokeninfo(#20170,8,#20001,26,"}") -hasLocation(#20170,#20112) +exprs(#20170,78,#20168,-1,"f") +hasLocation(#20170,#20073) +exprContainers(#20170,#20168) +literals("f","f",#20170) +decl(#20170,#20147) #20171=* -tokeninfo(#20171,7,#20001,27,"function") -#20172=@"loc,{#10000},12,1,12,8" -locations_default(#20172,#10000,12,1,12,8) -hasLocation(#20171,#20172) -#20173=* -tokeninfo(#20173,6,#20001,28,"g") -hasLocation(#20173,#20057) +scopes(#20171,1) +scopenodes(#20168,#20171) +scopenesting(#20171,#20000) +#20172=@"var;{x};{#20171}" +variables(#20172,"x",#20171) +#20173=@"var;{arguments};{#20171}" +variables(#20173,"arguments",#20171) +isArgumentsObject(#20173) #20174=* -tokeninfo(#20174,8,#20001,29,"(") -#20175=@"loc,{#10000},12,11,12,11" -locations_default(#20175,#10000,12,11,12,11) +stmts(#20174,1,#20168,-2,"{\n\tvar x;\n\tx;\n}") +#20175=@"loc,{#10000},8,14,11,1" +locations_default(#20175,#10000,8,14,11,1) hasLocation(#20174,#20175) +stmtContainers(#20174,#20168) #20176=* -tokeninfo(#20176,8,#20001,30,")") -#20177=@"loc,{#10000},12,12,12,12" -locations_default(#20177,#10000,12,12,12,12) +stmts(#20176,18,#20174,0,"var x;") +#20177=@"loc,{#10000},9,2,9,7" +locations_default(#20177,#10000,9,2,9,7) hasLocation(#20176,#20177) +stmtContainers(#20176,#20168) #20178=* -tokeninfo(#20178,8,#20001,31,"{") -#20179=@"loc,{#10000},12,14,12,14" -locations_default(#20179,#10000,12,14,12,14) -hasLocation(#20178,#20179) +exprs(#20178,64,#20176,0,"x") +hasLocation(#20178,#20083) +enclosingStmt(#20178,#20176) +exprContainers(#20178,#20168) +#20179=* +exprs(#20179,78,#20178,0,"x") +hasLocation(#20179,#20083) +enclosingStmt(#20179,#20176) +exprContainers(#20179,#20168) +literals("x","x",#20179) +decl(#20179,#20172) #20180=* -tokeninfo(#20180,6,#20001,32,"x") -hasLocation(#20180,#20067) -#20181=* -tokeninfo(#20181,8,#20001,33,";") -#20182=@"loc,{#10000},13,3,13,3" -locations_default(#20182,#10000,13,3,13,3) -hasLocation(#20181,#20182) +stmts(#20180,2,#20174,1,"x;") +#20181=@"loc,{#10000},10,2,10,3" +locations_default(#20181,#10000,10,2,10,3) +hasLocation(#20180,#20181) +stmtContainers(#20180,#20168) +#20182=* +exprs(#20182,79,#20180,0,"x") +hasLocation(#20182,#20087) +enclosingStmt(#20182,#20180) +exprContainers(#20182,#20168) +literals("x","x",#20182) +bind(#20182,#20172) #20183=* -tokeninfo(#20183,7,#20001,34,"var") -#20184=@"loc,{#10000},14,2,14,4" -locations_default(#20184,#10000,14,2,14,4) +stmts(#20183,17,#20001,6,"functio ... {}\n\t}\n}") +#20184=@"loc,{#10000},12,1,19,1" +locations_default(#20184,#10000,12,1,19,1) hasLocation(#20183,#20184) +stmtContainers(#20183,#20001) #20185=* -tokeninfo(#20185,6,#20001,35,"x") -hasLocation(#20185,#20071) +exprs(#20185,78,#20183,-1,"g") +hasLocation(#20185,#20094) +exprContainers(#20185,#20183) +literals("g","g",#20185) +decl(#20185,#20148) #20186=* -tokeninfo(#20186,8,#20001,36,";") -#20187=@"loc,{#10000},14,7,14,7" -locations_default(#20187,#10000,14,7,14,7) -hasLocation(#20186,#20187) -#20188=* -tokeninfo(#20188,8,#20001,37,"{") -#20189=@"loc,{#10000},15,2,15,2" -locations_default(#20189,#10000,15,2,15,2) -hasLocation(#20188,#20189) +scopes(#20186,1) +scopenodes(#20183,#20186) +scopenesting(#20186,#20000) +#20187=@"var;{x};{#20186}" +variables(#20187,"x",#20186) +#20188=@"var;{h};{#20186}" +variables(#20188,"h",#20186) +#20189=@"var;{arguments};{#20186}" +variables(#20189,"arguments",#20186) +isArgumentsObject(#20189) #20190=* -tokeninfo(#20190,7,#20001,38,"function") -#20191=@"loc,{#10000},16,3,16,10" -locations_default(#20191,#10000,16,3,16,10) +stmts(#20190,1,#20183,-2,"{\n\tx;\n\t ... {}\n\t}\n}") +#20191=@"loc,{#10000},12,14,19,1" +locations_default(#20191,#10000,12,14,19,1) hasLocation(#20190,#20191) +stmtContainers(#20190,#20183) #20192=* -tokeninfo(#20192,6,#20001,39,"h") -hasLocation(#20192,#20078) -#20193=* -tokeninfo(#20193,8,#20001,40,"(") -#20194=@"loc,{#10000},16,13,16,13" -locations_default(#20194,#10000,16,13,16,13) -hasLocation(#20193,#20194) +stmts(#20192,2,#20190,0,"x;") +#20193=@"loc,{#10000},13,2,13,3" +locations_default(#20193,#10000,13,2,13,3) +hasLocation(#20192,#20193) +stmtContainers(#20192,#20183) +#20194=* +exprs(#20194,79,#20192,0,"x") +hasLocation(#20194,#20102) +enclosingStmt(#20194,#20192) +exprContainers(#20194,#20183) +literals("x","x",#20194) +bind(#20194,#20187) #20195=* -tokeninfo(#20195,8,#20001,41,")") -#20196=@"loc,{#10000},16,14,16,14" -locations_default(#20196,#10000,16,14,16,14) +stmts(#20195,18,#20190,1,"var x;") +#20196=@"loc,{#10000},14,2,14,7" +locations_default(#20196,#10000,14,2,14,7) hasLocation(#20195,#20196) +stmtContainers(#20195,#20183) #20197=* -tokeninfo(#20197,8,#20001,42,"{") -#20198=@"loc,{#10000},16,16,16,16" -locations_default(#20198,#10000,16,16,16,16) -hasLocation(#20197,#20198) +exprs(#20197,64,#20195,0,"x") +hasLocation(#20197,#20108) +enclosingStmt(#20197,#20195) +exprContainers(#20197,#20183) +#20198=* +exprs(#20198,78,#20197,0,"x") +hasLocation(#20198,#20108) +enclosingStmt(#20198,#20195) +exprContainers(#20198,#20183) +literals("x","x",#20198) +decl(#20198,#20187) #20199=* -tokeninfo(#20199,8,#20001,43,"}") -#20200=@"loc,{#10000},16,17,16,17" -locations_default(#20200,#10000,16,17,16,17) +stmts(#20199,1,#20190,2,"{\n\t\tfun ... ) {}\n\t}") +#20200=@"loc,{#10000},15,2,18,2" +locations_default(#20200,#10000,15,2,18,2) hasLocation(#20199,#20200) +stmtContainers(#20199,#20183) #20201=* -tokeninfo(#20201,8,#20001,44,"!") -#20202=@"loc,{#10000},17,3,17,3" -locations_default(#20202,#10000,17,3,17,3) +stmts(#20201,17,#20199,0,"function h() {}") +#20202=@"loc,{#10000},16,3,16,17" +locations_default(#20202,#10000,16,3,16,17) hasLocation(#20201,#20202) +stmtContainers(#20201,#20183) #20203=* -tokeninfo(#20203,7,#20001,45,"function") -#20204=@"loc,{#10000},17,4,17,11" -locations_default(#20204,#10000,17,4,17,11) -hasLocation(#20203,#20204) -#20205=* -tokeninfo(#20205,6,#20001,46,"k") -hasLocation(#20205,#20091) +exprs(#20203,78,#20201,-1,"h") +hasLocation(#20203,#20116) +exprContainers(#20203,#20201) +literals("h","h",#20203) +decl(#20203,#20188) +#20204=* +scopes(#20204,1) +scopenodes(#20201,#20204) +scopenesting(#20204,#20186) +#20205=@"var;{arguments};{#20204}" +variables(#20205,"arguments",#20204) +isArgumentsObject(#20205) #20206=* -tokeninfo(#20206,8,#20001,47,"(") -#20207=@"loc,{#10000},17,14,17,14" -locations_default(#20207,#10000,17,14,17,14) +stmts(#20206,1,#20201,-2,"{}") +#20207=@"loc,{#10000},16,16,16,17" +locations_default(#20207,#10000,16,16,16,17) hasLocation(#20206,#20207) +stmtContainers(#20206,#20201) #20208=* -tokeninfo(#20208,8,#20001,48,")") -#20209=@"loc,{#10000},17,15,17,15" -locations_default(#20209,#10000,17,15,17,15) +stmts(#20208,2,#20199,1,"!function k() {}") +#20209=@"loc,{#10000},17,3,17,18" +locations_default(#20209,#10000,17,3,17,18) hasLocation(#20208,#20209) +stmtContainers(#20208,#20183) #20210=* -tokeninfo(#20210,8,#20001,49,"{") -#20211=@"loc,{#10000},17,17,17,17" -locations_default(#20211,#10000,17,17,17,17) -hasLocation(#20210,#20211) -#20212=* -tokeninfo(#20212,8,#20001,50,"}") -#20213=@"loc,{#10000},17,18,17,18" -locations_default(#20213,#10000,17,18,17,18) -hasLocation(#20212,#20213) -#20214=* -tokeninfo(#20214,8,#20001,51,"}") -#20215=@"loc,{#10000},18,2,18,2" -locations_default(#20215,#10000,18,2,18,2) -hasLocation(#20214,#20215) -#20216=* -tokeninfo(#20216,8,#20001,52,"}") -hasLocation(#20216,#20128) +exprs(#20210,18,#20208,0,"!function k() {}") +hasLocation(#20210,#20209) +enclosingStmt(#20210,#20208) +exprContainers(#20210,#20183) +#20211=* +exprs(#20211,9,#20210,0,"function k() {}") +#20212=@"loc,{#10000},17,4,17,18" +locations_default(#20212,#10000,17,4,17,18) +hasLocation(#20211,#20212) +enclosingStmt(#20211,#20208) +exprContainers(#20211,#20183) +#20213=* +scopes(#20213,1) +scopenodes(#20211,#20213) +scopenesting(#20213,#20186) +#20214=@"var;{k};{#20213}" +variables(#20214,"k",#20213) +#20215=* +exprs(#20215,78,#20211,-1,"k") +hasLocation(#20215,#20130) +exprContainers(#20215,#20211) +literals("k","k",#20215) +decl(#20215,#20214) +#20216=@"var;{arguments};{#20213}" +variables(#20216,"arguments",#20213) +isArgumentsObject(#20216) #20217=* -tokeninfo(#20217,0,#20001,53,"") -#20218=@"loc,{#10000},19,2,19,1" -locations_default(#20218,#10000,19,2,19,1) +stmts(#20217,1,#20211,-2,"{}") +#20218=@"loc,{#10000},17,17,17,18" +locations_default(#20218,#10000,17,17,17,18) hasLocation(#20217,#20218) +stmtContainers(#20217,#20211) #20219=* entry_cfg_node(#20219,#20001) #20220=@"loc,{#10000},1,1,1,0" @@ -693,89 +689,89 @@ locations_default(#20220,#10000,1,1,1,0) hasLocation(#20219,#20220) #20221=* exit_cfg_node(#20221,#20001) -hasLocation(#20221,#20218) -successor(#20054,#20221) +hasLocation(#20221,#20143) +successor(#20183,#20221) #20222=* -entry_cfg_node(#20222,#20054) +entry_cfg_node(#20222,#20183) #20223=@"loc,{#10000},12,1,12,0" locations_default(#20223,#10000,12,1,12,0) hasLocation(#20222,#20223) #20224=* -exit_cfg_node(#20224,#20054) -hasLocation(#20224,#20218) -successor(#20062,#20064) -successor(#20073,#20075) -successor(#20083,#20086) -successor(#20086,#20085) +exit_cfg_node(#20224,#20183) +hasLocation(#20224,#20143) +successor(#20190,#20192) +successor(#20199,#20201) +successor(#20208,#20211) +successor(#20211,#20210) #20225=* -entry_cfg_node(#20225,#20086) +entry_cfg_node(#20225,#20211) #20226=@"loc,{#10000},17,4,17,3" locations_default(#20226,#10000,17,4,17,3) hasLocation(#20225,#20226) #20227=* -exit_cfg_node(#20227,#20086) +exit_cfg_node(#20227,#20211) #20228=@"loc,{#10000},17,19,17,18" locations_default(#20228,#10000,17,19,17,18) hasLocation(#20227,#20228) -successor(#20093,#20227) -successor(#20090,#20093) -successor(#20225,#20090) -successor(#20085,#20224) -successor(#20075,#20077) -successor(#20077,#20083) +successor(#20217,#20227) +successor(#20215,#20217) +successor(#20225,#20215) +successor(#20210,#20224) +successor(#20201,#20203) +successor(#20203,#20208) #20229=* -entry_cfg_node(#20229,#20075) +entry_cfg_node(#20229,#20201) #20230=@"loc,{#10000},16,3,16,2" locations_default(#20230,#10000,16,3,16,2) hasLocation(#20229,#20230) #20231=* -exit_cfg_node(#20231,#20075) +exit_cfg_node(#20231,#20201) #20232=@"loc,{#10000},16,18,16,17" locations_default(#20232,#10000,16,18,16,17) hasLocation(#20231,#20232) -successor(#20081,#20231) -successor(#20229,#20081) -successor(#20068,#20072) -successor(#20072,#20070) -successor(#20070,#20073) -successor(#20064,#20066) -successor(#20066,#20068) -successor(#20222,#20062) -successor(#20036,#20054) +successor(#20206,#20231) +successor(#20229,#20206) +successor(#20195,#20198) +successor(#20198,#20197) +successor(#20197,#20199) +successor(#20192,#20194) +successor(#20194,#20195) +successor(#20222,#20190) +successor(#20168,#20183) #20233=* -entry_cfg_node(#20233,#20036) +entry_cfg_node(#20233,#20168) #20234=@"loc,{#10000},8,1,8,0" locations_default(#20234,#10000,8,1,8,0) hasLocation(#20233,#20234) #20235=* -exit_cfg_node(#20235,#20036) +exit_cfg_node(#20235,#20168) #20236=@"loc,{#10000},11,2,11,1" locations_default(#20236,#10000,11,2,11,1) hasLocation(#20235,#20236) -successor(#20043,#20045) -successor(#20050,#20052) -successor(#20052,#20235) -successor(#20045,#20049) -successor(#20049,#20047) -successor(#20047,#20050) -successor(#20233,#20043) -successor(#20029,#20031) -successor(#20031,#20035) -successor(#20035,#20033) -successor(#20033,#20036) -successor(#20025,#20027) -successor(#20027,#20029) -successor(#20021,#20023) -successor(#20023,#20025) -successor(#20012,#20016) -successor(#20019,#20014) -successor(#20016,#20019) -successor(#20014,#20021) -successor(#20007,#20011) -successor(#20011,#20009) -successor(#20009,#20012) -successor(#20056,#20007) -successor(#20038,#20056) -successor(#20219,#20038) +successor(#20174,#20176) +successor(#20180,#20182) +successor(#20182,#20235) +successor(#20176,#20179) +successor(#20179,#20178) +successor(#20178,#20180) +successor(#20233,#20174) +successor(#20162,#20164) +successor(#20164,#20167) +successor(#20167,#20166) +successor(#20166,#20168) +successor(#20160,#20161) +successor(#20161,#20162) +successor(#20158,#20159) +successor(#20159,#20160) +successor(#20152,#20155) +successor(#20157,#20153) +successor(#20155,#20157) +successor(#20153,#20158) +successor(#20149,#20151) +successor(#20151,#20150) +successor(#20150,#20152) +successor(#20185,#20149) +successor(#20170,#20185) +successor(#20219,#20170) numlines(#10000,19,19,0) filetype(#10000,"javascript") diff --git a/javascript/ql/src/AlertSuppression.ql b/javascript/ql/src/AlertSuppression.ql index 9bd6bbbf8c1..4b3cc078c25 100644 --- a/javascript/ql/src/AlertSuppression.ql +++ b/javascript/ql/src/AlertSuppression.ql @@ -62,7 +62,7 @@ class SuppressionScope extends @locatable { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn diff --git a/javascript/ql/src/Comments/CommentedOut.qll b/javascript/ql/src/Comments/CommentedOut.qll index a8d4159bb89..21cc27388ab 100644 --- a/javascript/ql/src/Comments/CommentedOut.qll +++ b/javascript/ql/src/Comments/CommentedOut.qll @@ -127,7 +127,7 @@ class CommentedOutCode extends Comment { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn diff --git a/javascript/ql/src/Declarations/DeadStoreOfLocal.ql b/javascript/ql/src/Declarations/DeadStoreOfLocal.ql index c996c74a723..d738227d1a5 100644 --- a/javascript/ql/src/Declarations/DeadStoreOfLocal.ql +++ b/javascript/ql/src/Declarations/DeadStoreOfLocal.ql @@ -49,5 +49,7 @@ where // don't flag assignments in externs not dead.(ASTNode).inExternsFile() and // don't flag exported variables - not any(ES2015Module m).exportsAs(v, _) + not any(ES2015Module m).exportsAs(v, _) and + // don't flag 'exports' assignments in closure modules + not any(Closure::ClosureModule mod).getExportsVariable() = v select dead, "This definition of " + v.getName() + " is useless, since its value is never read." diff --git a/javascript/ql/src/Expressions/MisspelledIdentifier.ql b/javascript/ql/src/Expressions/MisspelledIdentifier.ql index 4d482724a50..95fd9026149 100644 --- a/javascript/ql/src/Expressions/MisspelledIdentifier.ql +++ b/javascript/ql/src/Expressions/MisspelledIdentifier.ql @@ -22,7 +22,7 @@ class IdentifierPart extends string { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn diff --git a/javascript/ql/src/LanguageFeatures/EmptyArrayInit.ql b/javascript/ql/src/LanguageFeatures/EmptyArrayInit.ql index 5b0d4bb9b85..426ac694e22 100644 --- a/javascript/ql/src/LanguageFeatures/EmptyArrayInit.ql +++ b/javascript/ql/src/LanguageFeatures/EmptyArrayInit.ql @@ -29,7 +29,7 @@ class OmittedArrayElement extends ArrayExpr { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn diff --git a/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql b/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql index 6741a6e48d7..b6d1b37f019 100644 --- a/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql +++ b/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql @@ -68,7 +68,7 @@ class SpuriousArguments extends Expr { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn diff --git a/javascript/ql/src/NodeJS/InvalidExport.ql b/javascript/ql/src/NodeJS/InvalidExport.ql index df9a9b3387e..08925ab07d2 100644 --- a/javascript/ql/src/NodeJS/InvalidExport.ql +++ b/javascript/ql/src/NodeJS/InvalidExport.ql @@ -46,5 +46,7 @@ where moduleExportsAssign(_, exportsVal) and // however, if there are no further uses of `exports` the assignment is useless anyway strictcount(exportsVar.getAnAccess()) > 1 - ) + ) and + // export assignments do work in closure modules + not assgn.getTopLevel() instanceof Closure::ClosureModule select assgn, "Assigning to 'exports' does not export anything." diff --git a/javascript/ql/src/Security/CWE-201/PostMessageStar.qhelp b/javascript/ql/src/Security/CWE-201/PostMessageStar.qhelp new file mode 100644 index 00000000000..c3a0bcb0268 --- /dev/null +++ b/javascript/ql/src/Security/CWE-201/PostMessageStar.qhelp @@ -0,0 +1,56 @@ + + + + +

+The window.postMessage method allows different windows or iframes +to communicate directly, even if they were loaded from different origins, circumventing +the usual same-origin policy. +

+

+The sender of the message can restrict the origin of the receiver by specifying +a target origin. If the receiver window does not come from this origin, the +message is not sent. +

+

+Alternatively, the sender can specify a target origin of '*', which means +that any origin is acceptable and the message is always sent. +

+

+This feature should not be used if the message being sent contains sensitive data such +as user credentials: the target window may have been loaded from a malicious site, +to which the data would then become available. +

+
+ + +

+If possible, specify a target origin when using window.postMessage. +Alternatively, encrypt the sensitive data before sending it to prevent an unauthorized +receiver from accessing it. +

+
+ + +

+The following example code sends user credentials (in this case, their user +name) to window.parent without checking its origin. If a malicious site +loads the page containing this code into an iframe it would be able to gain access +to the user name. +

+ +

+To prevent this from happening, the origin of the target window should be restricted, +as in this example: +

+ +
+ + + +
  • Mozilla Developer Network: Window.postMessage.
  • +
  • Mozilla Developer Network: Same-origin policy.
  • +
    +
    diff --git a/javascript/ql/src/Security/CWE-201/PostMessageStar.ql b/javascript/ql/src/Security/CWE-201/PostMessageStar.ql new file mode 100644 index 00000000000..e746b28a3d4 --- /dev/null +++ b/javascript/ql/src/Security/CWE-201/PostMessageStar.ql @@ -0,0 +1,23 @@ +/** + * @name Cross-window communication with unrestricted target origin + * @description When sending sensitive information to another window using `postMessage`, + * the origin of the target window should be restricted to avoid unintentional + * information leaks. + * @kind path-problem + * @problem.severity error + * @precision high + * @id js/cross-window-information-leak + * @tags security + * external/cwe/cwe-201 + * external/cwe/cwe-359 + */ + +import javascript +import semmle.javascript.security.dataflow.PostMessageStar::PostMessageStar +import DataFlow::PathGraph + +from Configuration cfg, DataFlow::PathNode source, DataFlow::PathNode sink +where cfg.hasFlowPath(source, sink) +select sink.getNode(), source, sink, + "Sensitive data returned from $@ is sent to another window without origin restriction.", + source.getNode(), "here" diff --git a/javascript/ql/src/Security/CWE-201/examples/PostMessageStar.js b/javascript/ql/src/Security/CWE-201/examples/PostMessageStar.js new file mode 100644 index 00000000000..63aa2666c69 --- /dev/null +++ b/javascript/ql/src/Security/CWE-201/examples/PostMessageStar.js @@ -0,0 +1 @@ +window.parent.postMessage(userName, '*'); diff --git a/javascript/ql/src/Security/CWE-201/examples/PostMessageStarGood.js b/javascript/ql/src/Security/CWE-201/examples/PostMessageStarGood.js new file mode 100644 index 00000000000..a904f896c27 --- /dev/null +++ b/javascript/ql/src/Security/CWE-201/examples/PostMessageStarGood.js @@ -0,0 +1 @@ +window.parent.postMessage(userName, 'https://lgtm.com'); diff --git a/javascript/ql/src/external/CodeDuplication.qll b/javascript/ql/src/external/CodeDuplication.qll index a25f41c4a61..1573962265c 100644 --- a/javascript/ql/src/external/CodeDuplication.qll +++ b/javascript/ql/src/external/CodeDuplication.qll @@ -9,7 +9,7 @@ private string relativePath(File file) { result = file.getRelativePath().replace * Holds if the `index`-th token of block `copy` is in file `file`, spanning * column `sc` of line `sl` to column `ec` of line `el`. * - * For more information, see [LGTM locations](https://lgtm.com/help/ql/locations). + * For more information, see [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ pragma[noinline] private predicate tokenLocation(File file, int sl, int sc, int ec, int el, Copy copy, int index) { @@ -62,7 +62,7 @@ class Copy extends @duplication_or_similarity { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn diff --git a/javascript/ql/src/external/DefectFilter.qll b/javascript/ql/src/external/DefectFilter.qll index ee23bab1f51..dcac0cf7b5e 100644 --- a/javascript/ql/src/external/DefectFilter.qll +++ b/javascript/ql/src/external/DefectFilter.qll @@ -8,7 +8,7 @@ import semmle.javascript.Files * column `startcolumn` of line `startline` to column `endcolumn` of line `endline` * in file `filepath`. * - * For more information, see [LGTM locations](https://lgtm.com/help/ql/locations). + * For more information, see [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ external predicate defectResults( int id, string queryPath, string file, int startline, int startcol, int endline, int endcol, diff --git a/javascript/ql/src/external/MetricFilter.qll b/javascript/ql/src/external/MetricFilter.qll index 7c39499ba4f..43ac75ef889 100644 --- a/javascript/ql/src/external/MetricFilter.qll +++ b/javascript/ql/src/external/MetricFilter.qll @@ -8,7 +8,7 @@ import javascript * column `startcolumn` of line `startline` to column `endcolumn` of line `endline` * in file `filepath`. * - * For more information, see [LGTM locations](https://lgtm.com/help/ql/locations). + * For more information, see [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ external predicate metricResults( int id, string queryPath, string file, int startline, int startcol, int endline, int endcol, diff --git a/javascript/ql/src/javascript.qll b/javascript/ql/src/javascript.qll index 8683898156b..7e0163c102f 100644 --- a/javascript/ql/src/javascript.qll +++ b/javascript/ql/src/javascript.qll @@ -8,6 +8,7 @@ import semmle.javascript.AST import semmle.javascript.BasicBlocks import semmle.javascript.CFG import semmle.javascript.Classes +import semmle.javascript.Closure import semmle.javascript.Comments import semmle.javascript.Concepts import semmle.javascript.Constants diff --git a/javascript/ql/src/semmle/javascript/Closure.qll b/javascript/ql/src/semmle/javascript/Closure.qll index 616e7746d7c..bea775c29ff 100644 --- a/javascript/ql/src/semmle/javascript/Closure.qll +++ b/javascript/ql/src/semmle/javascript/Closure.qll @@ -1,75 +1,209 @@ /** - * Provides classes for working with Google Closure code. + * Provides classes for working with the Closure-Library module system. */ import javascript -/** - * A call to a function in the `goog` namespace such as `goog.provide` or `goog.load`. - */ -class GoogFunctionCall extends CallExpr { - GoogFunctionCall() { - exists(GlobalVariable gv | gv.getName() = "goog" | - this.getCallee().(DotExpr).getBase() = gv.getAnAccess() +module Closure { + /** + * A call to a function in the `goog` namespace such as `goog.provide` or `goog.load`. + */ + class GoogFunctionCall extends CallExpr { + GoogFunctionCall() { + exists(GlobalVariable gv | gv.getName() = "goog" | + this.getCallee().(DotExpr).getBase() = gv.getAnAccess() + ) + } + + /** Gets the name of the invoked function. */ + string getFunctionName() { result = getCallee().(DotExpr).getPropertyName() } + } + + /** + * An expression statement consisting of a call to a function + * in the `goog` namespace. + */ + class GoogFunctionCallStmt extends ExprStmt { + GoogFunctionCallStmt() { super.getExpr() instanceof GoogFunctionCall } + + override GoogFunctionCall getExpr() { result = super.getExpr() } + + /** Gets the name of the invoked function. */ + string getFunctionName() { result = getExpr().getFunctionName() } + + /** Gets the `i`th argument to the invoked function. */ + Expr getArgument(int i) { result = getExpr().getArgument(i) } + + /** Gets an argument to the invoked function. */ + Expr getAnArgument() { result = getArgument(_) } + } + + abstract private class GoogNamespaceRef extends ExprOrStmt { abstract string getNamespaceId(); } + + /** + * A call to `goog.provide`. + */ + class GoogProvide extends GoogFunctionCallStmt, GoogNamespaceRef { + GoogProvide() { getFunctionName() = "provide" } + + /** Gets the identifier of the namespace created by this call. */ + override string getNamespaceId() { result = getArgument(0).getStringValue() } + } + + /** + * A call to `goog.require`. + */ + class GoogRequire extends GoogFunctionCall, GoogNamespaceRef { + GoogRequire() { getFunctionName() = "require" } + + /** Gets the identifier of the namespace imported by this call. */ + override string getNamespaceId() { result = getArgument(0).getStringValue() } + } + + private class GoogRequireImport extends GoogRequire, Import { + /** Gets the module in which this import appears. */ + override Module getEnclosingModule() { result = getTopLevel() } + + /** Gets the (unresolved) path that this import refers to. */ + override PathExpr getImportedPath() { result = getArgument(0) } + } + + /** + * A call to `goog.module` or `goog.declareModuleId`. + */ + class GoogModuleDeclaration extends GoogFunctionCallStmt, GoogNamespaceRef { + GoogModuleDeclaration() { + getFunctionName() = "module" or + getFunctionName() = "declareModuleId" + } + + /** Gets the identifier of the namespace imported by this call. */ + override string getNamespaceId() { result = getArgument(0).getStringValue() } + } + + /** + * A module using the Closure module system, declared using `goog.module()` or `goog.declareModuleId()`. + */ + class ClosureModule extends Module { + ClosureModule() { getAChildStmt() instanceof GoogModuleDeclaration } + + /** + * Gets the call to `goog.module` or `goog.declareModuleId` in this module. + */ + GoogModuleDeclaration getModuleDeclaration() { result = getAChildStmt() } + + /** + * Gets the namespace of this module. + */ + string getNamespaceId() { result = getModuleDeclaration().getNamespaceId() } + + override Module getAnImportedModule() { + exists(GoogRequireImport imprt | + imprt.getEnclosingModule() = this and + result.(ClosureModule).getNamespaceId() = imprt.getNamespaceId() + ) + } + + /** + * Gets the top-level `exports` variable in this module, if this module is defined by + * a `good.module` call. + * + * This variable denotes the object exported from this module. + * + * Has no result for ES6 modules using `goog.declareModuleId`. + */ + Variable getExportsVariable() { + getModuleDeclaration().getFunctionName() = "module" and + result = getScope().getVariable("exports") + } + + override predicate exports(string name, ASTNode export) { + exists(DataFlow::PropWrite write, Expr base | + write.getAstNode() = export and + write.writes(base.flow(), name, _) and + ( + base = getExportsVariable().getAReference() + or + base = getExportsVariable().getAnAssignedExpr() + ) + ) + } + } + + /** + * A global Closure script, that is, a toplevel that is executed in the global scope and + * contains a toplevel call to `goog.provide` or `goog.require`. + */ + class ClosureScript extends TopLevel { + ClosureScript() { + not this instanceof ClosureModule and + getAChildStmt() instanceof GoogProvide + or + getAChildStmt().(ExprStmt).getExpr() instanceof GoogRequire + } + + /** Gets the identifier of a namespace required by this module. */ + string getARequiredNamespace() { + result = getAChildStmt().(ExprStmt).getExpr().(GoogRequire).getNamespaceId() + } + + /** Gets the identifer of a namespace provided by this module. */ + string getAProvidedNamespace() { result = getAChildStmt().(GoogProvide).getNamespaceId() } + } + + /** + * Holds if `name` is a closure namespace, including proper namespace prefixes. + */ + pragma[noinline] + predicate isLibraryNamespacePath(string name) { + exists(string namespace | namespace = any(GoogNamespaceRef provide).getNamespaceId() | + name = namespace.substring(0, namespace.indexOf(".")) + or + name = namespace ) } - /** Gets the name of the invoked function. */ - string getFunctionName() { result = getCallee().(DotExpr).getPropertyName() } -} - -/** - * An expression statement consisting of a call to a function - * in the `goog` namespace. - */ -class GoogFunctionCallStmt extends ExprStmt { - GoogFunctionCallStmt() { super.getExpr() instanceof GoogFunctionCall } - - override GoogFunctionCall getExpr() { result = super.getExpr() } - - /** Gets the name of the invoked function. */ - string getFunctionName() { result = getExpr().getFunctionName() } - - /** Gets the `i`th argument to the invoked function. */ - Expr getArgument(int i) { result = getExpr().getArgument(i) } - - /** Gets an argument to the invoked function. */ - Expr getAnArgument() { result = getArgument(_) } -} - -/** - * A call to `goog.provide`. - */ -class GoogProvide extends GoogFunctionCallStmt { - GoogProvide() { getFunctionName() = "provide" } - - /** Gets the identifier of the namespace created by this call. */ - string getNamespaceId() { result = getArgument(0).(ConstantString).getStringValue() } -} - -/** - * A call to `goog.require`. - */ -class GoogRequire extends GoogFunctionCallStmt { - GoogRequire() { getFunctionName() = "require" } - - /** Gets the identifier of the namespace imported by this call. */ - string getNamespaceId() { result = getArgument(0).(ConstantString).getStringValue() } -} - -/** - * A Closure module, that is, a toplevel that contains a call to `goog.provide` or - * `goog.require`. - */ -class ClosureModule extends TopLevel { - ClosureModule() { - getAChildStmt() instanceof GoogProvide or - getAChildStmt() instanceof GoogRequire + /** + * Gets the closure namespace path addressed by the given dataflow node, if any. + */ + string getLibraryAccessPath(DataFlow::SourceNode node) { + isLibraryNamespacePath(result) and + node = DataFlow::globalVarRef(result) + or + isLibraryNamespacePath(result) and + exists(DataFlow::PropRead read | node = read | + result = getLibraryAccessPath(read.getBase().getALocalSource()) + "." + read.getPropertyName() + ) + or + // Associate an access path with the immediate RHS of a store on a closure namespace. + // This is to support patterns like: + // foo.bar = { baz() {} } + exists(DataFlow::PropWrite write | + node = write.getRhs() and + result = getWrittenLibraryAccessPath(write) + ) + or + result = node.asExpr().(GoogRequire).getNamespaceId() } - /** Gets the identifier of a namespace required by this module. */ - string getARequiredNamespace() { result = getAChildStmt().(GoogRequire).getNamespaceId() } + /** + * Gets the closure namespace path written to by the given property write, if any. + */ + string getWrittenLibraryAccessPath(DataFlow::PropWrite node) { + result = getLibraryAccessPath(node.getBase().getALocalSource()) + "." + node.getPropertyName() + } - /** Gets the identifer of a namespace provided by this module. */ - string getAProvidedNamespace() { result = getAChildStmt().(GoogProvide).getNamespaceId() } + /** + * Gets a dataflow node that refers to the given Closure module. + */ + DataFlow::SourceNode moduleImport(string moduleName) { + getLibraryAccessPath(result) = moduleName + } + + /** + * Gets a dataflow node that refers to the given member of a Closure module. + */ + DataFlow::SourceNode moduleMember(string moduleName, string memberName) { + result = moduleImport(moduleName).getAPropertyRead(memberName) + } } diff --git a/javascript/ql/src/semmle/javascript/ES2015Modules.qll b/javascript/ql/src/semmle/javascript/ES2015Modules.qll index 55e820f77ee..fa3d82c7720 100644 --- a/javascript/ql/src/semmle/javascript/ES2015Modules.qll +++ b/javascript/ql/src/semmle/javascript/ES2015Modules.qll @@ -7,8 +7,7 @@ import javascript */ class ES2015Module extends Module { ES2015Module() { - isModule(this) and - not isNodejs(this) + isES2015Module(this) } override ModuleScope getScope() { result.getScopeElement() = this } diff --git a/javascript/ql/src/semmle/javascript/Files.qll b/javascript/ql/src/semmle/javascript/Files.qll index 26189e5ad06..acdc3020a11 100644 --- a/javascript/ql/src/semmle/javascript/Files.qll +++ b/javascript/ql/src/semmle/javascript/Files.qll @@ -34,7 +34,7 @@ abstract class Container extends @container { /** * Gets a URL representing the location of this container. * - * For more information see https://lgtm.com/help/ql/locations#providing-urls. + * For more information see [Providing URLs](https://help.semmle.com/QL/learn-ql/ql/locations.html#providing-urls). */ abstract string getURL(); diff --git a/javascript/ql/src/semmle/javascript/Functions.qll b/javascript/ql/src/semmle/javascript/Functions.qll index 80840033d59..082699da073 100644 --- a/javascript/ql/src/semmle/javascript/Functions.qll +++ b/javascript/ql/src/semmle/javascript/Functions.qll @@ -119,13 +119,15 @@ class Function extends @function, Parameterized, TypeParameterized, StmtContaine override StmtContainer getEnclosingContainer() { result = getEnclosingStmt().getContainer() } /** Gets the number of lines in this function. */ - int getNumberOfLines() { numlines(this, result, _, _) } + int getNumberOfLines() { + exists(int sl, int el | getLocation().hasLocationInfo(_, sl, _, el, _) | result = el - sl + 1) + } /** Gets the number of lines containing code in this function. */ - int getNumberOfLinesOfCode() { numlines(this, _, result, _) } + int getNumberOfLinesOfCode() { result = LinesOfCode::getNumCodeLines(this) } /** Gets the number of lines containing comments in this function. */ - int getNumberOfLinesOfComments() { numlines(this, _, _, result) } + int getNumberOfLinesOfComments() { result = LinesOfComments::getNumCommentLines(this) } /** Gets the cyclomatic complexity of this function. */ int getCyclomaticComplexity() { @@ -341,6 +343,118 @@ class Function extends @function, Parameterized, TypeParameterized, StmtContaine CanonicalFunctionName getCanonicalName() { ast_node_symbol(this, result) } } +/** + * Provides predicates for computing lines-of-code information for functions. + */ +private module LinesOfCode { + /** + * Holds if `tk` is interesting for the purposes of counting lines of code, that is, it might + * contribute a line of code that isn't covered by any other token. + * + * A token is interesting if it is the first token on its line, or if it spans multiple lines. + */ + private predicate isInteresting(Token tk) { + exists(int sl, int el | tk.getLocation().hasLocationInfo(_, sl, _, el, _) | + not tk.getPreviousToken().getLocation().getEndLine() = sl + or + sl != el + ) + } + + /** + * Gets the `i`th token in toplevel `tl`, but only if it is interesting. + */ + pragma[noinline] + private Token getInterestingToken(TopLevel tl, int i) { + result.getTopLevel() = tl and + result.getIndex() = i and + isInteresting(result) + } + + /** + * Holds if `f` covers tokens between indices `start` and `end` (inclusive) in toplevel `tl`. + */ + predicate tokenRange(Function f, TopLevel tl, int start, int end) { + tl = f.getTopLevel() and + start = f.getFirstToken().getIndex() and + end = f.getLastToken().getIndex() + } + + /** + * Gets an interesting token belonging to `f`. + */ + private Token getAnInterestingToken(Function f) { + result = f.getFirstToken() + or + exists(TopLevel tl, int start, int end | tokenRange(f, tl, start, end) | + result = getInterestingToken(tl, [start .. end]) + ) + } + + /** + * Gets the line number of a line covered by `f` that contains at least one token. + */ + private int getACodeLine(Function f) { + exists(Location loc | loc = getAnInterestingToken(f).getLocation() | + result in [loc.getStartLine() .. loc.getEndLine()] + ) + } + + /** + * Gets the number of lines of code of `f`. + * + * Note the special handling of empty locations; this is needed to correctly deal with + * synthetic constructors. + */ + int getNumCodeLines(Function f) { + if f.getLocation().isEmpty() then result = 0 else result = count(getACodeLine(f)) + } +} + +/** + * Provides predicates for computing lines-of-comments information for functions. + */ +private module LinesOfComments { + /** + * Holds if `tk` is interesting for the purposes of counting comments, that is, + * if it is preceded by a comment. + */ + private predicate isInteresting(Token tk) { exists(Comment c | tk = c.getNextToken()) } + + /** + * Gets the `i`th token in `tl`, if it is interesting. + */ + pragma[noinline] + private Token getToken(TopLevel tl, int i) { + result.getTopLevel() = tl and + result.getIndex() = i and + isInteresting(result) + } + + /** + * Gets a comment inside function `f`. + */ + private Comment getAComment(Function f) { + exists(TopLevel tl, int start, int end | LinesOfCode::tokenRange(f, tl, start, end) | + result.getNextToken() = getToken(tl, [start + 1 .. end]) + ) + } + + /** + * Gets a line covered by `f` on which at least one comment appears. + */ + private int getACommentLine(Function f) { + exists(Location loc | loc = getAComment(f).getLocation() | + result in [loc.getStartLine() .. loc.getEndLine()] + ) + } + + /** + * Gets the number of lines with at least one comment in `f`. + */ + int getNumCommentLines(Function f) { result = count(getACommentLine(f)) } +} + /** * A method defined in a class or object expression. */ diff --git a/javascript/ql/src/semmle/javascript/Locations.qll b/javascript/ql/src/semmle/javascript/Locations.qll index 92cb471c762..165975d9905 100644 --- a/javascript/ql/src/semmle/javascript/Locations.qll +++ b/javascript/ql/src/semmle/javascript/Locations.qll @@ -6,7 +6,7 @@ import javascript * A location as given by a file, a start line, a start column, * an end line, and an end column. * - * For more information about locations see [LGTM locations](https://lgtm.com/help/ql/locations). + * For more information about locations see [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ class Location extends @location { /** Gets the file for this location. */ @@ -70,7 +70,7 @@ class Location extends @location { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn diff --git a/javascript/ql/src/semmle/javascript/RestrictedLocations.qll b/javascript/ql/src/semmle/javascript/RestrictedLocations.qll index 2c3e047c61a..4146f177009 100644 --- a/javascript/ql/src/semmle/javascript/RestrictedLocations.qll +++ b/javascript/ql/src/semmle/javascript/RestrictedLocations.qll @@ -14,7 +14,7 @@ class FirstLineOf extends Locatable { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn @@ -44,7 +44,7 @@ class LastLineOf extends Locatable { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn diff --git a/javascript/ql/src/semmle/javascript/SSA.qll b/javascript/ql/src/semmle/javascript/SSA.qll index 1186a4ae2cb..58514742ab1 100644 --- a/javascript/ql/src/semmle/javascript/SSA.qll +++ b/javascript/ql/src/semmle/javascript/SSA.qll @@ -414,7 +414,7 @@ class SsaVariable extends TSsaDefinition { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn @@ -479,7 +479,7 @@ class SsaDefinition extends TSsaDefinition { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ abstract predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn diff --git a/javascript/ql/src/semmle/javascript/XML.qll b/javascript/ql/src/semmle/javascript/XML.qll index acdf36da604..1887f009ee2 100755 --- a/javascript/ql/src/semmle/javascript/XML.qll +++ b/javascript/ql/src/semmle/javascript/XML.qll @@ -14,7 +14,7 @@ abstract class XMLLocatable extends @xmllocatable { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn diff --git a/javascript/ql/src/semmle/javascript/dataflow/AbstractValues.qll b/javascript/ql/src/semmle/javascript/dataflow/AbstractValues.qll index a492f63362e..e6e54a347ab 100644 --- a/javascript/ql/src/semmle/javascript/dataflow/AbstractValues.qll +++ b/javascript/ql/src/semmle/javascript/dataflow/AbstractValues.qll @@ -109,7 +109,7 @@ class AbstractValue extends TAbstractValue { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `f`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo(string f, int startline, int startcolumn, int endline, int endcolumn) { f = "" and startline = 0 and startcolumn = 0 and endline = 0 and endcolumn = 0 diff --git a/javascript/ql/src/semmle/javascript/dataflow/Configuration.qll b/javascript/ql/src/semmle/javascript/dataflow/Configuration.qll index d0451341099..a03362dac6c 100644 --- a/javascript/ql/src/semmle/javascript/dataflow/Configuration.qll +++ b/javascript/ql/src/semmle/javascript/dataflow/Configuration.qll @@ -708,7 +708,7 @@ private predicate summarizedHigherOrderCall( * - The flow label mapping of the summary corresponds to the transformation from `arg` to the * invocation of the callback. */ -predicate higherOrderCall( +private predicate higherOrderCall( DataFlow::Node arg, DataFlow::SourceNode callback, int i, DataFlow::Configuration cfg, PathSummary summary ) { @@ -897,7 +897,7 @@ class PathNode extends TPathNode { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn diff --git a/javascript/ql/src/semmle/javascript/dataflow/DataFlow.qll b/javascript/ql/src/semmle/javascript/dataflow/DataFlow.qll index 09a5ac19fc8..5aa7b6a56a3 100644 --- a/javascript/ql/src/semmle/javascript/dataflow/DataFlow.qll +++ b/javascript/ql/src/semmle/javascript/dataflow/DataFlow.qll @@ -115,7 +115,7 @@ module DataFlow { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn @@ -475,14 +475,36 @@ module DataFlow { * A static member definition, viewed as a data flow node that adds * a property to the class. */ - private class ClassMemberAsPropWrite extends PropWrite, PropNode { + private class StaticClassMemberAsPropWrite extends PropWrite, PropNode { override MemberDefinition prop; - override Node getBase() { - prop.isStatic() and - result = valueNode(prop.getDeclaringClass()) + StaticClassMemberAsPropWrite() { prop.isStatic() } + + override Node getBase() { result = valueNode(prop.getDeclaringClass()) } + + override Expr getPropertyNameExpr() { result = prop.getNameExpr() } + + override string getPropertyName() { result = prop.getName() } + + override Node getRhs() { + not prop instanceof AccessorMethodDefinition and + result = valueNode(prop.getInit()) } + override ControlFlowNode getWriteNode() { result = prop } + } + + /** + * An instance method definition, viewed as a data flow node that adds + * a property to an unseen value. + */ + private class InstanceMethodAsPropWrite extends PropWrite, PropNode { + override MethodDefinition prop; + + InstanceMethodAsPropWrite() { not prop.isStatic() } + + override Node getBase() { none() } // The prototype has no DataFlow node + override Expr getPropertyNameExpr() { result = prop.getNameExpr() } override string getPropertyName() { result = prop.getName() } @@ -513,6 +535,49 @@ module DataFlow { override ControlFlowNode getWriteNode() { result = prop } } + /** + * A field induced by an initializing constructor parameter, seen as a property write (TypeScript only). + */ + private class ParameterFieldAsPropWrite extends PropWrite, PropNode { + override ParameterField prop; + + override Node getBase() { + result = thisNode(prop.getDeclaringClass().getConstructor().getBody()) + } + + override Expr getPropertyNameExpr() { result = prop.getNameExpr() } + + override string getPropertyName() { result = prop.getName() } + + override Node getRhs() { result = parameterNode(prop.getParameter()) } + + override ControlFlowNode getWriteNode() { result = prop.getParameter() } + } + + /** + * An instance field, seen as a property write. + */ + private class InstanceFieldAsPropWrite extends PropWrite, PropNode { + override FieldDefinition prop; + + InstanceFieldAsPropWrite() { + not prop.isStatic() and + not prop instanceof ParameterField + } + + override Node getBase() { + result = thisNode(prop.getDeclaringClass().getConstructor().getBody()) + } + + override Expr getPropertyNameExpr() { result = prop.getNameExpr() } + + override string getPropertyName() { result = prop.getName() } + + override Node getRhs() { result = valueNode(prop.getInit()) } + + override ControlFlowNode getWriteNode() { result = prop } + } + /** * A data flow node that reads an object property. */ @@ -974,7 +1039,7 @@ module DataFlow { or exists(GlobalVarAccess va | nd = valueNode(va.(VarUse)) and - cause = "global" + if Closure::isLibraryNamespacePath(va.getName()) then cause = "heap" else cause = "global" ) or exists(Expr e | e = nd.asExpr() and cause = "call" | diff --git a/javascript/ql/src/semmle/javascript/dataflow/internal/InterModuleTypeInference.qll b/javascript/ql/src/semmle/javascript/dataflow/internal/InterModuleTypeInference.qll index 7f8a2325ee2..da2b54fc14f 100644 --- a/javascript/ql/src/semmle/javascript/dataflow/internal/InterModuleTypeInference.qll +++ b/javascript/ql/src/semmle/javascript/dataflow/internal/InterModuleTypeInference.qll @@ -332,3 +332,48 @@ private class AnalyzedExportAssign extends AnalyzedPropertyWrite, DataFlow::Valu source = this } } + +/** + * Flow analysis for assignments to the `exports` variable in a Closure module. + */ +private class AnalyzedClosureExportAssign extends AnalyzedPropertyWrite, DataFlow::ValueNode { + override AssignExpr astNode; + + Closure::ClosureModule mod; + + AnalyzedClosureExportAssign() { astNode.getLhs() = mod.getExportsVariable().getAReference() } + + override predicate writes(AbstractValue baseVal, string propName, DataFlow::AnalyzedNode source) { + baseVal = TAbstractModuleObject(astNode.getTopLevel()) and + propName = "exports" and + source = astNode.getRhs().flow() + } +} + +/** + * Read of a global access path exported by a Closure library. + * + * This adds a direct flow edge to the assigned value. + */ +private class AnalyzedClosureGlobalAccessPath extends AnalyzedNode, AnalyzedPropertyRead { + string accessPath; + + AnalyzedClosureGlobalAccessPath() { accessPath = Closure::getLibraryAccessPath(this) } + + override AnalyzedNode localFlowPred() { + exists(DataFlow::PropWrite write | + Closure::getWrittenLibraryAccessPath(write) = accessPath and + result = write.getRhs() + ) + or + result = AnalyzedNode.super.localFlowPred() + } + + override predicate reads(AbstractValue base, string propName) { + exists(Closure::ClosureModule mod | + mod.getNamespaceId() = accessPath and + base = TAbstractModuleObject(mod) and + propName = "exports" + ) + } +} diff --git a/javascript/ql/src/semmle/javascript/dataflow/internal/VariableTypeInference.qll b/javascript/ql/src/semmle/javascript/dataflow/internal/VariableTypeInference.qll index 2aa17e42593..844aaa4ed3b 100644 --- a/javascript/ql/src/semmle/javascript/dataflow/internal/VariableTypeInference.qll +++ b/javascript/ql/src/semmle/javascript/dataflow/internal/VariableTypeInference.qll @@ -41,6 +41,27 @@ private class SsaVarAccessAnalysis extends DataFlow::AnalyzedValueNode { override AbstractValue getALocalValue() { result = def.getAnRhsValue() } } +/** + * Flow analysis for accesses to SSA variables. + * + * Unlike `SsaVarAccessAnalysis`, this only contributes to `getAValue()`, not `getALocalValue()`. + */ +private class SsaVarAccessWithNonLocalAnalysis extends SsaVarAccessAnalysis { + DataFlow::AnalyzedValueNode src; + + SsaVarAccessWithNonLocalAnalysis() { + exists(VarDef varDef | + varDef = def.(SsaExplicitDefinition).getDef() and + varDef.getSource().flow() = src and + src instanceof CallWithNonLocalAnalyzedReturnFlow and + // avoid relating `v` and `f()` in `var {v} = f();` + not varDef.getTarget() instanceof DestructuringPattern + ) + } + + override AbstractValue getAValue() { result = src.getAValue() } +} + /** * Flow analysis for `VarDef`s. */ diff --git a/javascript/ql/src/semmle/javascript/frameworks/xUnit.qll b/javascript/ql/src/semmle/javascript/frameworks/xUnit.qll index 1917aa8ee50..5037bcdb57a 100644 --- a/javascript/ql/src/semmle/javascript/frameworks/xUnit.qll +++ b/javascript/ql/src/semmle/javascript/frameworks/xUnit.qll @@ -131,7 +131,7 @@ class XUnitAnnotation extends Expr { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo( string filepath, int startline, int startcolumn, int endline, int endcolumn diff --git a/javascript/ql/src/semmle/javascript/security/SensitiveActions.qll b/javascript/ql/src/semmle/javascript/security/SensitiveActions.qll index 100ea0984ae..dbf8edc1a29 100644 --- a/javascript/ql/src/semmle/javascript/security/SensitiveActions.qll +++ b/javascript/ql/src/semmle/javascript/security/SensitiveActions.qll @@ -17,22 +17,32 @@ import javascript * INTERNAL: Do not use directly. */ module HeuristicNames { - /** A regular expression that identifies strings that look like they represent secret data that are not passwords. */ + /** Gets a regular expression that identifies strings that look like they represent secret data that are not passwords. */ string suspiciousNonPassword() { result = "(?is).*(secret|account|accnt|(? | -| b.js:1:1:3:21 | | diff --git a/javascript/ql/test/library-tests/Closure/ClosureModule.ql b/javascript/ql/test/library-tests/Closure/ClosureModule.ql deleted file mode 100644 index c13884e72eb..00000000000 --- a/javascript/ql/test/library-tests/Closure/ClosureModule.ql +++ /dev/null @@ -1,4 +0,0 @@ -import semmle.javascript.Closure - -from ClosureModule cm -select cm diff --git a/javascript/ql/test/library-tests/Closure/ClosureModule_getAProvidedNamespace.expected b/javascript/ql/test/library-tests/Closure/ClosureModule_getAProvidedNamespace.expected deleted file mode 100644 index b00fa691b2a..00000000000 --- a/javascript/ql/test/library-tests/Closure/ClosureModule_getAProvidedNamespace.expected +++ /dev/null @@ -1 +0,0 @@ -| a.js:1:1:5:1 | | a | diff --git a/javascript/ql/test/library-tests/Closure/ClosureModule_getAProvidedNamespace.ql b/javascript/ql/test/library-tests/Closure/ClosureModule_getAProvidedNamespace.ql deleted file mode 100644 index 23e7b3831b3..00000000000 --- a/javascript/ql/test/library-tests/Closure/ClosureModule_getAProvidedNamespace.ql +++ /dev/null @@ -1,4 +0,0 @@ -import semmle.javascript.Closure - -from ClosureModule cm -select cm, cm.getAProvidedNamespace() diff --git a/javascript/ql/test/library-tests/Closure/ClosureModule_getARequiredNamespace.expected b/javascript/ql/test/library-tests/Closure/ClosureModule_getARequiredNamespace.expected deleted file mode 100644 index 3346345796b..00000000000 --- a/javascript/ql/test/library-tests/Closure/ClosureModule_getARequiredNamespace.expected +++ /dev/null @@ -1 +0,0 @@ -| b.js:1:1:3:21 | | a | diff --git a/javascript/ql/test/library-tests/Closure/ClosureModule_getARequiredNamespace.ql b/javascript/ql/test/library-tests/Closure/ClosureModule_getARequiredNamespace.ql deleted file mode 100644 index c187bf2ce65..00000000000 --- a/javascript/ql/test/library-tests/Closure/ClosureModule_getARequiredNamespace.ql +++ /dev/null @@ -1,4 +0,0 @@ -import semmle.javascript.Closure - -from ClosureModule cm -select cm, cm.getARequiredNamespace() diff --git a/javascript/ql/test/library-tests/Closure/GoogFunctionCall.expected b/javascript/ql/test/library-tests/Closure/GoogFunctionCall.expected deleted file mode 100644 index 315105fa6fc..00000000000 --- a/javascript/ql/test/library-tests/Closure/GoogFunctionCall.expected +++ /dev/null @@ -1,3 +0,0 @@ -| a.js:1:1:1:17 | goog.provide('a') | provide | -| b.js:1:1:1:17 | goog.require('a') | require | -| c.js:2:1:2:14 | goog.leyness() | leyness | diff --git a/javascript/ql/test/library-tests/Closure/GoogFunctionCall.ql b/javascript/ql/test/library-tests/Closure/GoogFunctionCall.ql deleted file mode 100644 index 93b44a4a144..00000000000 --- a/javascript/ql/test/library-tests/Closure/GoogFunctionCall.ql +++ /dev/null @@ -1,4 +0,0 @@ -import semmle.javascript.Closure - -from GoogFunctionCall gfc -select gfc, gfc.getFunctionName() diff --git a/javascript/ql/test/library-tests/Closure/GoogProvide.expected b/javascript/ql/test/library-tests/Closure/GoogProvide.expected deleted file mode 100644 index 818436b0e0a..00000000000 --- a/javascript/ql/test/library-tests/Closure/GoogProvide.expected +++ /dev/null @@ -1 +0,0 @@ -| a.js:1:1:1:18 | goog.provide('a'); | a | diff --git a/javascript/ql/test/library-tests/Closure/GoogProvide.ql b/javascript/ql/test/library-tests/Closure/GoogProvide.ql deleted file mode 100644 index c02842bf060..00000000000 --- a/javascript/ql/test/library-tests/Closure/GoogProvide.ql +++ /dev/null @@ -1,4 +0,0 @@ -import semmle.javascript.Closure - -from GoogProvide gp -select gp, gp.getNamespaceId() diff --git a/javascript/ql/test/library-tests/Closure/GoogRequire.expected b/javascript/ql/test/library-tests/Closure/GoogRequire.expected deleted file mode 100644 index 753c733b30d..00000000000 --- a/javascript/ql/test/library-tests/Closure/GoogRequire.expected +++ /dev/null @@ -1 +0,0 @@ -| b.js:1:1:1:18 | goog.require('a'); | a | diff --git a/javascript/ql/test/library-tests/Closure/GoogRequire.ql b/javascript/ql/test/library-tests/Closure/GoogRequire.ql deleted file mode 100644 index 17c19b361e5..00000000000 --- a/javascript/ql/test/library-tests/Closure/GoogRequire.ql +++ /dev/null @@ -1,4 +0,0 @@ -import semmle.javascript.Closure - -from GoogRequire gr -select gr, gr.getNamespaceId() diff --git a/javascript/ql/test/library-tests/Closure/StrictMode.expected b/javascript/ql/test/library-tests/Closure/StrictMode.expected new file mode 100644 index 00000000000..a968cd35cae --- /dev/null +++ b/javascript/ql/test/library-tests/Closure/StrictMode.expected @@ -0,0 +1,4 @@ +| tests/es6Module.js:0:0:0:0 | tests/es6Module.js | +| tests/es6ModuleDefault.js:0:0:0:0 | tests/es6ModuleDefault.js | +| tests/importFromEs6.js:0:0:0:0 | tests/importFromEs6.js | +| tests/requireFromEs6.js:0:0:0:0 | tests/requireFromEs6.js | diff --git a/javascript/ql/test/library-tests/Closure/StrictMode.ql b/javascript/ql/test/library-tests/Closure/StrictMode.ql new file mode 100644 index 00000000000..211c306a3a5 --- /dev/null +++ b/javascript/ql/test/library-tests/Closure/StrictMode.ql @@ -0,0 +1,5 @@ +import javascript + +from TopLevel tl +where tl.isStrict() +select tl.getFile() diff --git a/javascript/ql/test/library-tests/Closure/a.js b/javascript/ql/test/library-tests/Closure/a.js deleted file mode 100644 index fe9a093506f..00000000000 --- a/javascript/ql/test/library-tests/Closure/a.js +++ /dev/null @@ -1,5 +0,0 @@ -goog.provide('a'); - -a.foo = function() { - return 42; -} \ No newline at end of file diff --git a/javascript/ql/test/library-tests/Closure/b.js b/javascript/ql/test/library-tests/Closure/b.js deleted file mode 100644 index ce45c3aa444..00000000000 --- a/javascript/ql/test/library-tests/Closure/b.js +++ /dev/null @@ -1,3 +0,0 @@ -goog.require('a'); - -console.log(a.foo()); \ No newline at end of file diff --git a/javascript/ql/test/library-tests/Closure/c.js b/javascript/ql/test/library-tests/Closure/c.js deleted file mode 100644 index f46c1963e52..00000000000 --- a/javascript/ql/test/library-tests/Closure/c.js +++ /dev/null @@ -1,2 +0,0 @@ -// not a Closure module -goog.leyness(); \ No newline at end of file diff --git a/javascript/ql/test/library-tests/Closure/moduleImport.expected b/javascript/ql/test/library-tests/Closure/moduleImport.expected new file mode 100644 index 00000000000..f143eea96aa --- /dev/null +++ b/javascript/ql/test/library-tests/Closure/moduleImport.expected @@ -0,0 +1,51 @@ +| x | tests/globalModule.js:3:1:3:1 | x | +| x | tests/globalModuleDefault.js:3:1:3:1 | x | +| x | tests/requireFromGlobalModule.js:10:1:10:1 | x | +| x | tests/requireFromGlobalModule.js:11:1:11:1 | x | +| x | tests/requireFromGlobalModule.js:13:1:13:1 | x | +| x | tests/requireFromGlobalModule.js:14:1:14:1 | x | +| x | tests/requireFromGlobalModule.js:16:1:16:1 | x | +| x | tests/requireFromGlobalModule.js:17:1:17:1 | x | +| x.y | tests/globalModule.js:3:1:3:3 | x.y | +| x.y | tests/globalModuleDefault.js:3:1:3:3 | x.y | +| x.y | tests/requireFromGlobalModule.js:10:1:10:3 | x.y | +| x.y | tests/requireFromGlobalModule.js:11:1:11:3 | x.y | +| x.y | tests/requireFromGlobalModule.js:13:1:13:3 | x.y | +| x.y | tests/requireFromGlobalModule.js:14:1:14:3 | x.y | +| x.y | tests/requireFromGlobalModule.js:16:1:16:3 | x.y | +| x.y | tests/requireFromGlobalModule.js:17:1:17:3 | x.y | +| x.y.z | tests/globalModule.js:3:1:3:5 | x.y.z | +| x.y.z | tests/globalModuleDefault.js:3:1:3:5 | x.y.z | +| x.y.z | tests/requireFromGlobalModule.js:10:1:10:5 | x.y.z | +| x.y.z | tests/requireFromGlobalModule.js:11:1:11:5 | x.y.z | +| x.y.z | tests/requireFromGlobalModule.js:13:1:13:5 | x.y.z | +| x.y.z | tests/requireFromGlobalModule.js:14:1:14:5 | x.y.z | +| x.y.z | tests/requireFromGlobalModule.js:16:1:16:5 | x.y.z | +| x.y.z | tests/requireFromGlobalModule.js:17:1:17:5 | x.y.z | +| x.y.z.es6 | tests/requireFromEs6.js:6:17:6:41 | goog.re ... z.es6') | +| x.y.z.es6 | tests/requireFromGlobalModule.js:7:1:7:25 | goog.re ... z.es6') | +| x.y.z.es6 | tests/requireFromGlobalModule.js:16:1:16:9 | x.y.z.es6 | +| x.y.z.es6 | tests/requireFromGoogModule.js:6:17:6:41 | goog.re ... z.es6') | +| x.y.z.es6default | tests/requireFromEs6.js:7:24:7:55 | goog.re ... fault') | +| x.y.z.es6default | tests/requireFromGlobalModule.js:8:1:8:32 | goog.re ... fault') | +| x.y.z.es6default | tests/requireFromGlobalModule.js:17:1:17:16 | x.y.z.es6default | +| x.y.z.es6default | tests/requireFromGoogModule.js:7:24:7:55 | goog.re ... fault') | +| x.y.z.global | tests/globalModule.js:3:16:5:1 | {\\n fun() {}\\n} | +| x.y.z.global | tests/requireFromEs6.js:3:20:3:47 | goog.re ... lobal') | +| x.y.z.global | tests/requireFromGlobalModule.js:1:1:1:28 | goog.re ... lobal') | +| x.y.z.global | tests/requireFromGlobalModule.js:10:1:10:12 | x.y.z.global | +| x.y.z.global | tests/requireFromGoogModule.js:3:20:3:47 | goog.re ... lobal') | +| x.y.z.global.fun | tests/globalModule.js:4:6:4:10 | () {} | +| x.y.z.globaldefault | tests/globalModuleDefault.js:3:23:3:39 | function fun() {} | +| x.y.z.globaldefault | tests/requireFromEs6.js:4:27:4:61 | goog.re ... fault') | +| x.y.z.globaldefault | tests/requireFromGlobalModule.js:2:1:2:35 | goog.re ... fault') | +| x.y.z.globaldefault | tests/requireFromGlobalModule.js:11:1:11:19 | x.y.z.globaldefault | +| x.y.z.globaldefault | tests/requireFromGoogModule.js:4:27:4:61 | goog.re ... fault') | +| x.y.z.goog | tests/requireFromEs6.js:9:18:9:43 | goog.re ... .goog') | +| x.y.z.goog | tests/requireFromGlobalModule.js:4:1:4:26 | goog.re ... .goog') | +| x.y.z.goog | tests/requireFromGlobalModule.js:13:1:13:10 | x.y.z.goog | +| x.y.z.goog | tests/requireFromGoogModule.js:9:18:9:43 | goog.re ... .goog') | +| x.y.z.googdefault | tests/requireFromEs6.js:10:25:10:57 | goog.re ... fault') | +| x.y.z.googdefault | tests/requireFromGlobalModule.js:5:1:5:33 | goog.re ... fault') | +| x.y.z.googdefault | tests/requireFromGlobalModule.js:14:1:14:17 | x.y.z.googdefault | +| x.y.z.googdefault | tests/requireFromGoogModule.js:10:25:10:57 | goog.re ... fault') | diff --git a/javascript/ql/test/library-tests/Closure/moduleImport.ql b/javascript/ql/test/library-tests/Closure/moduleImport.ql new file mode 100644 index 00000000000..ac6cf21ccca --- /dev/null +++ b/javascript/ql/test/library-tests/Closure/moduleImport.ql @@ -0,0 +1,4 @@ +import javascript + +from string name +select name, Closure::moduleImport(name) diff --git a/javascript/ql/test/library-tests/Closure/moduleMember.expected b/javascript/ql/test/library-tests/Closure/moduleMember.expected new file mode 100644 index 00000000000..281e8176555 --- /dev/null +++ b/javascript/ql/test/library-tests/Closure/moduleMember.expected @@ -0,0 +1,31 @@ +| x | y | tests/globalModule.js:3:1:3:3 | x.y | +| x | y | tests/globalModuleDefault.js:3:1:3:3 | x.y | +| x | y | tests/requireFromGlobalModule.js:10:1:10:3 | x.y | +| x | y | tests/requireFromGlobalModule.js:11:1:11:3 | x.y | +| x | y | tests/requireFromGlobalModule.js:13:1:13:3 | x.y | +| x | y | tests/requireFromGlobalModule.js:14:1:14:3 | x.y | +| x | y | tests/requireFromGlobalModule.js:16:1:16:3 | x.y | +| x | y | tests/requireFromGlobalModule.js:17:1:17:3 | x.y | +| x.y | z | tests/globalModule.js:3:1:3:5 | x.y.z | +| x.y | z | tests/globalModuleDefault.js:3:1:3:5 | x.y.z | +| x.y | z | tests/requireFromGlobalModule.js:10:1:10:5 | x.y.z | +| x.y | z | tests/requireFromGlobalModule.js:11:1:11:5 | x.y.z | +| x.y | z | tests/requireFromGlobalModule.js:13:1:13:5 | x.y.z | +| x.y | z | tests/requireFromGlobalModule.js:14:1:14:5 | x.y.z | +| x.y | z | tests/requireFromGlobalModule.js:16:1:16:5 | x.y.z | +| x.y | z | tests/requireFromGlobalModule.js:17:1:17:5 | x.y.z | +| x.y.z | es6 | tests/requireFromGlobalModule.js:16:1:16:9 | x.y.z.es6 | +| x.y.z | es6default | tests/requireFromGlobalModule.js:17:1:17:16 | x.y.z.es6default | +| x.y.z | global | tests/requireFromGlobalModule.js:10:1:10:12 | x.y.z.global | +| x.y.z | globaldefault | tests/requireFromGlobalModule.js:11:1:11:19 | x.y.z.globaldefault | +| x.y.z | goog | tests/requireFromGlobalModule.js:13:1:13:10 | x.y.z.goog | +| x.y.z | googdefault | tests/requireFromGlobalModule.js:14:1:14:17 | x.y.z.googdefault | +| x.y.z.es6 | fun | tests/requireFromEs6.js:15:1:15:13 | es6Module.fun | +| x.y.z.es6 | fun | tests/requireFromGlobalModule.js:16:1:16:13 | x.y.z.es6.fun | +| x.y.z.es6 | fun | tests/requireFromGoogModule.js:15:1:15:13 | es6Module.fun | +| x.y.z.global | fun | tests/requireFromEs6.js:12:1:12:16 | globalModule.fun | +| x.y.z.global | fun | tests/requireFromGlobalModule.js:10:1:10:16 | x.y.z.global.fun | +| x.y.z.global | fun | tests/requireFromGoogModule.js:12:1:12:16 | globalModule.fun | +| x.y.z.goog | fun | tests/requireFromEs6.js:18:1:18:14 | googModule.fun | +| x.y.z.goog | fun | tests/requireFromGlobalModule.js:13:1:13:14 | x.y.z.goog.fun | +| x.y.z.goog | fun | tests/requireFromGoogModule.js:18:1:18:14 | googModule.fun | diff --git a/javascript/ql/test/library-tests/Closure/moduleMember.ql b/javascript/ql/test/library-tests/Closure/moduleMember.ql new file mode 100644 index 00000000000..8e4cf30998d --- /dev/null +++ b/javascript/ql/test/library-tests/Closure/moduleMember.ql @@ -0,0 +1,4 @@ +import javascript + +from string mod, string name +select mod, name, Closure::moduleMember(mod, name) \ No newline at end of file diff --git a/javascript/ql/test/library-tests/Closure/tests/es6Module.js b/javascript/ql/test/library-tests/Closure/tests/es6Module.js new file mode 100644 index 00000000000..c1a709d4037 --- /dev/null +++ b/javascript/ql/test/library-tests/Closure/tests/es6Module.js @@ -0,0 +1,3 @@ +goog.declareModuleId('x.y.z.es6'); + +export function fun() {} diff --git a/javascript/ql/test/library-tests/Closure/tests/es6ModuleDefault.js b/javascript/ql/test/library-tests/Closure/tests/es6ModuleDefault.js new file mode 100644 index 00000000000..72f98436c2e --- /dev/null +++ b/javascript/ql/test/library-tests/Closure/tests/es6ModuleDefault.js @@ -0,0 +1,3 @@ +goog.declareModuleId('x.y.z.es6default'); + +export default function() {} diff --git a/javascript/ql/test/library-tests/Closure/tests/globalModule.js b/javascript/ql/test/library-tests/Closure/tests/globalModule.js new file mode 100644 index 00000000000..129a313d937 --- /dev/null +++ b/javascript/ql/test/library-tests/Closure/tests/globalModule.js @@ -0,0 +1,5 @@ +goog.provide('x.y.z.global'); + +x.y.z.global = { + fun() {} +}; diff --git a/javascript/ql/test/library-tests/Closure/tests/globalModuleDefault.js b/javascript/ql/test/library-tests/Closure/tests/globalModuleDefault.js new file mode 100644 index 00000000000..d5044e56dbb --- /dev/null +++ b/javascript/ql/test/library-tests/Closure/tests/globalModuleDefault.js @@ -0,0 +1,3 @@ +goog.provide('x.y.z.globaldefault'); + +x.y.z.globaldefault = function fun() {} diff --git a/javascript/ql/test/library-tests/Closure/tests/googModule.js b/javascript/ql/test/library-tests/Closure/tests/googModule.js new file mode 100644 index 00000000000..c986078db3e --- /dev/null +++ b/javascript/ql/test/library-tests/Closure/tests/googModule.js @@ -0,0 +1,5 @@ +goog.module('x.y.z.goog'); + +exports = { + fun() {} +}; diff --git a/javascript/ql/test/library-tests/Closure/tests/googModuleDefault.js b/javascript/ql/test/library-tests/Closure/tests/googModuleDefault.js new file mode 100644 index 00000000000..a4bf3384848 --- /dev/null +++ b/javascript/ql/test/library-tests/Closure/tests/googModuleDefault.js @@ -0,0 +1,3 @@ +goog.module('x.y.z.googdefault'); + +exports = function fun() {}; diff --git a/javascript/ql/test/library-tests/Closure/tests/importFromEs6.js b/javascript/ql/test/library-tests/Closure/tests/importFromEs6.js new file mode 100644 index 00000000000..5e380984817 --- /dev/null +++ b/javascript/ql/test/library-tests/Closure/tests/importFromEs6.js @@ -0,0 +1,13 @@ +// ES6 imports can import files by name, as long as they are modules + +import * as googModule from './googModule'; +import * as googModuleDefault from './googModuleDefault'; + +import * as es6Module from './es6Module'; +import * as es6ModuleDefault from './es6ModuleDefault'; + +es6Module.fun(); +es6ModuleDefault(); + +googModule.fun(); +googModuleDefault(); diff --git a/javascript/ql/test/library-tests/Closure/tests/requireFromEs6.js b/javascript/ql/test/library-tests/Closure/tests/requireFromEs6.js new file mode 100644 index 00000000000..9078bb91c40 --- /dev/null +++ b/javascript/ql/test/library-tests/Closure/tests/requireFromEs6.js @@ -0,0 +1,19 @@ +import * as dummy from 'dummy'; // treat as ES6 module + +let globalModule = goog.require('x.y.z.global'); +let globalModuleDefault = goog.require('x.y.z.globaldefault'); + +let es6Module = goog.require('x.y.z.es6'); +let es6ModuleDefault = goog.require('x.y.z.es6default'); + +let googModule = goog.require('x.y.z.goog'); +let googModuleDefault = goog.require('x.y.z.googdefault'); + +globalModule.fun(); +globalModuleDefault(); + +es6Module.fun(); +es6ModuleDefault(); + +googModule.fun(); +googModuleDefault(); diff --git a/javascript/ql/test/library-tests/Closure/tests/requireFromGlobalModule.js b/javascript/ql/test/library-tests/Closure/tests/requireFromGlobalModule.js new file mode 100644 index 00000000000..0542e6fd356 --- /dev/null +++ b/javascript/ql/test/library-tests/Closure/tests/requireFromGlobalModule.js @@ -0,0 +1,17 @@ +goog.require('x.y.z.global'); +goog.require('x.y.z.globaldefault'); + +goog.require('x.y.z.goog'); +goog.require('x.y.z.googdefault'); + +goog.require('x.y.z.es6'); +goog.require('x.y.z.es6default'); + +x.y.z.global.fun(); +x.y.z.globaldefault(); + +x.y.z.goog.fun(); +x.y.z.googdefault(); + +x.y.z.es6.fun(); +x.y.z.es6default(); diff --git a/javascript/ql/test/library-tests/Closure/tests/requireFromGoogModule.js b/javascript/ql/test/library-tests/Closure/tests/requireFromGoogModule.js new file mode 100644 index 00000000000..00df1fb3ae1 --- /dev/null +++ b/javascript/ql/test/library-tests/Closure/tests/requireFromGoogModule.js @@ -0,0 +1,19 @@ +goog.module('test.importer'); + +let globalModule = goog.require('x.y.z.global'); +let globalModuleDefault = goog.require('x.y.z.globaldefault'); + +let es6Module = goog.require('x.y.z.es6'); +let es6ModuleDefault = goog.require('x.y.z.es6default'); + +let googModule = goog.require('x.y.z.goog'); +let googModuleDefault = goog.require('x.y.z.googdefault'); + +globalModule.fun(); +globalModuleDefault(); + +es6Module.fun(); +es6ModuleDefault(); + +googModule.fun(); +googModuleDefault(); diff --git a/javascript/ql/test/library-tests/Comments/Comments.expected b/javascript/ql/test/library-tests/Comments/Comments.expected index 5bed5be3ff2..17652739c1f 100644 --- a/javascript/ql/test/library-tests/Comments/Comments.expected +++ b/javascript/ql/test/library-tests/Comments/Comments.expected @@ -3,3 +3,5 @@ | comments.js:3:7:3:29 | HTML comment end | HTML comment end | +| comments.js:7:1:7:9 | /*start*/ | start | +| comments.js:7:24:7:30 | /*end*/ | end | diff --git a/javascript/ql/test/library-tests/Comments/comments.js b/javascript/ql/test/library-tests/Comments/comments.js index 57acc2b2a9f..73351a84f5e 100644 --- a/javascript/ql/test/library-tests/Comments/comments.js +++ b/javascript/ql/test/library-tests/Comments/comments.js @@ -2,4 +2,6 @@ /* block comment */ stuff HTML comment end \ No newline at end of file +--> HTML comment end + +/*start*/function f() {/*end*/} diff --git a/javascript/ql/test/library-tests/Comments/next_token.expected b/javascript/ql/test/library-tests/Comments/next_token.expected index fbdf4db98c4..b68f4d93a7d 100644 --- a/javascript/ql/test/library-tests/Comments/next_token.expected +++ b/javascript/ql/test/library-tests/Comments/next_token.expected @@ -1,4 +1,7 @@ | comments.js:1:1:1:15 | // line comment | comments.js:3:1:3:5 | stuff | | comments.js:2:1:2:19 | /* block comment */ | comments.js:3:1:3:5 | stuff | -| comments.js:3:7:3:29 | HTML comment end | comments.js:7:10:7:17 | function | +| comments.js:7:1:7:9 | /*start*/ | comments.js:7:10:7:17 | function | +| comments.js:7:24:7:30 | /*end*/ | comments.js:7:31:7:31 | } | diff --git a/javascript/ql/test/library-tests/Modules/GlobalVariableRef.expected b/javascript/ql/test/library-tests/Modules/GlobalVariableRef.expected new file mode 100644 index 00000000000..90cf72071ae --- /dev/null +++ b/javascript/ql/test/library-tests/Modules/GlobalVariableRef.expected @@ -0,0 +1,3 @@ +| a.js:5:31:5:31 | o | +| exports.js:3:9:3:15 | exports | +| tst.html:6:3:6:7 | alert | diff --git a/javascript/ql/test/library-tests/Modules/GlobalVariableRef.ql b/javascript/ql/test/library-tests/Modules/GlobalVariableRef.ql new file mode 100644 index 00000000000..5b06a07a226 --- /dev/null +++ b/javascript/ql/test/library-tests/Modules/GlobalVariableRef.ql @@ -0,0 +1,5 @@ +import javascript + +from VarAccess access +where access.getVariable() instanceof GlobalVariable +select access diff --git a/javascript/ql/test/library-tests/Modules/ImportNamespaceSpecifier.expected b/javascript/ql/test/library-tests/Modules/ImportNamespaceSpecifier.expected index d7305160b05..61093b96451 100644 --- a/javascript/ql/test/library-tests/Modules/ImportNamespaceSpecifier.expected +++ b/javascript/ql/test/library-tests/Modules/ImportNamespaceSpecifier.expected @@ -1 +1,2 @@ +| exports.js:1:8:1:17 | * as dummy | | m/c.js:1:8:1:13 | * as b | diff --git a/javascript/ql/test/library-tests/Modules/ImportSpecifiers.expected b/javascript/ql/test/library-tests/Modules/ImportSpecifiers.expected index 7abe8cb7244..73763be7450 100644 --- a/javascript/ql/test/library-tests/Modules/ImportSpecifiers.expected +++ b/javascript/ql/test/library-tests/Modules/ImportSpecifiers.expected @@ -1,6 +1,7 @@ | b.js:1:8:1:8 | f | b.js:1:8:1:8 | f | | d.js:1:10:1:21 | default as g | d.js:1:21:1:21 | g | | d.js:1:24:1:29 | x as y | d.js:1:29:1:29 | y | +| exports.js:1:8:1:17 | * as dummy | exports.js:1:13:1:17 | dummy | | f.ts:1:8:1:8 | g | f.ts:1:8:1:8 | g | | g.ts:1:9:1:11 | foo | g.ts:1:9:1:11 | foo | | import-in-mjs.mjs:1:8:1:24 | exported_from_mjs | import-in-mjs.mjs:1:8:1:24 | exported_from_mjs | diff --git a/javascript/ql/test/library-tests/Modules/Imports.expected b/javascript/ql/test/library-tests/Modules/Imports.expected index d3ef73bcc5b..723f3542039 100644 --- a/javascript/ql/test/library-tests/Modules/Imports.expected +++ b/javascript/ql/test/library-tests/Modules/Imports.expected @@ -1,6 +1,7 @@ | b.js:1:1:1:20 | import f from './a'; | b.js:1:15:1:19 | './a' | 1 | | d.js:1:1:1:43 | import ... './a'; | d.js:1:38:1:42 | './a' | 2 | | d.js:2:1:2:13 | import './b'; | d.js:2:8:2:12 | './b' | 0 | +| exports.js:1:1:1:31 | import ... dummy'; | exports.js:1:24:1:30 | 'dummy' | 1 | | f.ts:1:1:1:19 | import g from './e' | f.ts:1:15:1:19 | './e' | 1 | | g.ts:1:1:1:23 | import ... m './f' | g.ts:1:19:1:23 | './f' | 1 | | import-in-mjs.mjs:1:1:1:46 | import ... n-mjs'; | import-in-mjs.mjs:1:31:1:45 | 'export-in-mjs' | 1 | diff --git a/javascript/ql/test/library-tests/Modules/exports.js b/javascript/ql/test/library-tests/Modules/exports.js new file mode 100644 index 00000000000..c4a90d9da65 --- /dev/null +++ b/javascript/ql/test/library-tests/Modules/exports.js @@ -0,0 +1,4 @@ +import * as dummy from 'dummy'; // Recognize as ES6 module + +let x = exports; // global variable +x.foo(); diff --git a/javascript/ql/test/library-tests/PropWrite/PropWrite.expected b/javascript/ql/test/library-tests/PropWrite/PropWrite.expected index 9a1b19c4bcf..091d4f792b6 100644 --- a/javascript/ql/test/library-tests/PropWrite/PropWrite.expected +++ b/javascript/ql/test/library-tests/PropWrite/PropWrite.expected @@ -1,3 +1,7 @@ +| classes.ts:3:21:3:20 | constructor() {} | +| classes.ts:4:3:4:24 | instanc ... foo(); | +| classes.ts:8:3:8:39 | constru ... eld) {} | +| classes.ts:8:15:8:35 | public ... erField | | tst.js:3:5:3:8 | x: 4 | | tst.js:4:5:6:5 | func: f ... ;\\n } | | tst.js:7:5:9:5 | f() {\\n ... ;\\n } | diff --git a/javascript/ql/test/library-tests/PropWrite/PropWriteBase.expected b/javascript/ql/test/library-tests/PropWrite/PropWriteBase.expected index e4916f4638c..241e2c7d583 100644 --- a/javascript/ql/test/library-tests/PropWrite/PropWriteBase.expected +++ b/javascript/ql/test/library-tests/PropWrite/PropWriteBase.expected @@ -1,3 +1,5 @@ +| classes.ts:4:3:4:24 | instanc ... foo(); | classes.ts:3:21:3:20 | this | +| classes.ts:8:15:8:35 | public ... erField | classes.ts:8:3:8:2 | this | | tst.js:3:5:3:8 | x: 4 | tst.js:2:11:10:1 | {\\n x ... }\\n} | | tst.js:4:5:6:5 | func: f ... ;\\n } | tst.js:2:11:10:1 | {\\n x ... }\\n} | | tst.js:7:5:9:5 | f() {\\n ... ;\\n } | tst.js:2:11:10:1 | {\\n x ... }\\n} | diff --git a/javascript/ql/test/library-tests/PropWrite/PropWritePropName.expected b/javascript/ql/test/library-tests/PropWrite/PropWritePropName.expected index f35006bc8ad..d2ac2679d25 100644 --- a/javascript/ql/test/library-tests/PropWrite/PropWritePropName.expected +++ b/javascript/ql/test/library-tests/PropWrite/PropWritePropName.expected @@ -1,3 +1,7 @@ +| classes.ts:3:21:3:20 | constructor() {} | constructor | +| classes.ts:4:3:4:24 | instanc ... foo(); | instanceField | +| classes.ts:8:3:8:39 | constru ... eld) {} | constructor | +| classes.ts:8:15:8:35 | public ... erField | parameterField | | tst.js:3:5:3:8 | x: 4 | x | | tst.js:4:5:6:5 | func: f ... ;\\n } | func | | tst.js:7:5:9:5 | f() {\\n ... ;\\n } | f | diff --git a/javascript/ql/test/library-tests/PropWrite/PropWriteRhs.expected b/javascript/ql/test/library-tests/PropWrite/PropWriteRhs.expected index 14e751dd3cf..68c11131753 100644 --- a/javascript/ql/test/library-tests/PropWrite/PropWriteRhs.expected +++ b/javascript/ql/test/library-tests/PropWrite/PropWriteRhs.expected @@ -1,3 +1,7 @@ +| classes.ts:3:21:3:20 | constructor() {} | classes.ts:3:21:3:20 | () {} | +| classes.ts:4:3:4:24 | instanc ... foo(); | classes.ts:4:19:4:23 | foo() | +| classes.ts:8:3:8:39 | constru ... eld) {} | classes.ts:8:3:8:39 | constru ... eld) {} | +| classes.ts:8:15:8:35 | public ... erField | classes.ts:8:22:8:35 | parameterField | | tst.js:3:5:3:8 | x: 4 | tst.js:3:8:3:8 | 4 | | tst.js:4:5:6:5 | func: f ... ;\\n } | tst.js:4:11:6:5 | functio ... ;\\n } | | tst.js:7:5:9:5 | f() {\\n ... ;\\n } | tst.js:7:6:9:5 | () {\\n ... ;\\n } | diff --git a/javascript/ql/test/library-tests/PropWrite/classes.ts b/javascript/ql/test/library-tests/PropWrite/classes.ts new file mode 100644 index 00000000000..7fff3a522c1 --- /dev/null +++ b/javascript/ql/test/library-tests/PropWrite/classes.ts @@ -0,0 +1,9 @@ +import * as dummy from 'dummy'; + +class InstanceField { + instanceField = foo(); +} + +class ParameterField { + constructor(public parameterField) {} +} diff --git a/javascript/ql/test/library-tests/PropWrite/getAPropertyReference.expected b/javascript/ql/test/library-tests/PropWrite/getAPropertyReference.expected index e31be10e629..bf832301b9b 100644 --- a/javascript/ql/test/library-tests/PropWrite/getAPropertyReference.expected +++ b/javascript/ql/test/library-tests/PropWrite/getAPropertyReference.expected @@ -1,3 +1,5 @@ +| classes.ts:3:21:3:20 | this | classes.ts:4:3:4:24 | instanc ... foo(); | +| classes.ts:8:3:8:2 | this | classes.ts:8:15:8:35 | public ... erField | | tst.js:1:1:1:0 | this | tst.js:23:15:23:29 | this.someMethod | | tst.js:1:1:1:0 | this | tst.js:24:36:24:45 | this.state | | tst.js:2:11:10:1 | {\\n x ... }\\n} | tst.js:3:5:3:8 | x: 4 | diff --git a/javascript/ql/test/library-tests/PropWrite/getAPropertyReference2.expected b/javascript/ql/test/library-tests/PropWrite/getAPropertyReference2.expected index 1f18e7dd51e..55c3bb6ea68 100644 --- a/javascript/ql/test/library-tests/PropWrite/getAPropertyReference2.expected +++ b/javascript/ql/test/library-tests/PropWrite/getAPropertyReference2.expected @@ -1,3 +1,5 @@ +| classes.ts:3:21:3:20 | this | instanceField | classes.ts:4:3:4:24 | instanc ... foo(); | +| classes.ts:8:3:8:2 | this | parameterField | classes.ts:8:15:8:35 | public ... erField | | tst.js:1:1:1:0 | this | someMethod | tst.js:23:15:23:29 | this.someMethod | | tst.js:1:1:1:0 | this | state | tst.js:24:36:24:45 | this.state | | tst.js:2:11:10:1 | {\\n x ... }\\n} | f | tst.js:7:5:9:5 | f() {\\n ... ;\\n } | diff --git a/javascript/ql/test/library-tests/PropWrite/getAPropertySource.expected b/javascript/ql/test/library-tests/PropWrite/getAPropertySource.expected index 70e6e98360c..6cdb0154c11 100644 --- a/javascript/ql/test/library-tests/PropWrite/getAPropertySource.expected +++ b/javascript/ql/test/library-tests/PropWrite/getAPropertySource.expected @@ -1,3 +1,5 @@ +| classes.ts:3:21:3:20 | this | instanceField | classes.ts:4:19:4:23 | foo() | +| classes.ts:8:3:8:2 | this | parameterField | classes.ts:8:22:8:35 | parameterField | | tst.js:2:11:10:1 | {\\n x ... }\\n} | f | tst.js:7:6:9:5 | () {\\n ... ;\\n } | | tst.js:2:11:10:1 | {\\n x ... }\\n} | func | tst.js:4:11:6:5 | functio ... ;\\n } | | tst.js:12:1:19:1 | class C ... ;\\n }\\n} | func | tst.js:13:14:15:3 | (x) {\\n ... x);\\n } | diff --git a/javascript/ql/test/library-tests/PropWrite/getAPropertyWrite.expected b/javascript/ql/test/library-tests/PropWrite/getAPropertyWrite.expected index 22734a8c95b..39344ef11d7 100644 --- a/javascript/ql/test/library-tests/PropWrite/getAPropertyWrite.expected +++ b/javascript/ql/test/library-tests/PropWrite/getAPropertyWrite.expected @@ -1,3 +1,5 @@ +| classes.ts:3:21:3:20 | this | classes.ts:4:3:4:24 | instanc ... foo(); | +| classes.ts:8:3:8:2 | this | classes.ts:8:15:8:35 | public ... erField | | tst.js:2:11:10:1 | {\\n x ... }\\n} | tst.js:3:5:3:8 | x: 4 | | tst.js:2:11:10:1 | {\\n x ... }\\n} | tst.js:4:5:6:5 | func: f ... ;\\n } | | tst.js:2:11:10:1 | {\\n x ... }\\n} | tst.js:7:5:9:5 | f() {\\n ... ;\\n } | diff --git a/javascript/ql/test/library-tests/PropWrite/getAPropertyWrite2.expected b/javascript/ql/test/library-tests/PropWrite/getAPropertyWrite2.expected index a1d5d31bef0..4e38837a447 100644 --- a/javascript/ql/test/library-tests/PropWrite/getAPropertyWrite2.expected +++ b/javascript/ql/test/library-tests/PropWrite/getAPropertyWrite2.expected @@ -1,3 +1,5 @@ +| classes.ts:3:21:3:20 | this | instanceField | classes.ts:4:3:4:24 | instanc ... foo(); | +| classes.ts:8:3:8:2 | this | parameterField | classes.ts:8:15:8:35 | public ... erField | | tst.js:2:11:10:1 | {\\n x ... }\\n} | f | tst.js:7:5:9:5 | f() {\\n ... ;\\n } | | tst.js:2:11:10:1 | {\\n x ... }\\n} | func | tst.js:4:5:6:5 | func: f ... ;\\n } | | tst.js:2:11:10:1 | {\\n x ... }\\n} | x | tst.js:3:5:3:8 | x: 4 | diff --git a/javascript/ql/test/library-tests/PropWrite/hasPropertyWrite.expected b/javascript/ql/test/library-tests/PropWrite/hasPropertyWrite.expected index 36ccb1c1d1f..b4d999ab9a2 100644 --- a/javascript/ql/test/library-tests/PropWrite/hasPropertyWrite.expected +++ b/javascript/ql/test/library-tests/PropWrite/hasPropertyWrite.expected @@ -1,3 +1,5 @@ +| classes.ts:3:21:3:20 | this | instanceField | classes.ts:4:19:4:23 | foo() | +| classes.ts:8:3:8:2 | this | parameterField | classes.ts:8:22:8:35 | parameterField | | tst.js:2:11:10:1 | {\\n x ... }\\n} | f | tst.js:7:6:9:5 | () {\\n ... ;\\n } | | tst.js:2:11:10:1 | {\\n x ... }\\n} | func | tst.js:4:11:6:5 | functio ... ;\\n } | | tst.js:2:11:10:1 | {\\n x ... }\\n} | x | tst.js:3:8:3:8 | 4 | diff --git a/javascript/ql/test/query-tests/Security/CWE-201/PostMessageStar.expected b/javascript/ql/test/query-tests/Security/CWE-201/PostMessageStar.expected new file mode 100644 index 00000000000..d5f76456e25 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-201/PostMessageStar.expected @@ -0,0 +1,20 @@ +nodes +| PostMessageStar2.js:1:27:1:34 | password | +| PostMessageStar2.js:4:7:4:15 | data | +| PostMessageStar2.js:4:14:4:15 | {} | +| PostMessageStar2.js:5:14:5:21 | password | +| PostMessageStar2.js:8:29:8:32 | data | +| PostMessageStar2.js:9:29:9:36 | data.foo | +| PostMessageStar2.js:13:27:13:33 | authKey | +| PostMessageStar.js:1:27:1:34 | userName | +edges +| PostMessageStar2.js:4:7:4:15 | data | PostMessageStar2.js:8:29:8:32 | data | +| PostMessageStar2.js:4:14:4:15 | {} | PostMessageStar2.js:4:7:4:15 | data | +| PostMessageStar2.js:5:14:5:21 | password | PostMessageStar2.js:4:14:4:15 | {} | +| PostMessageStar2.js:5:14:5:21 | password | PostMessageStar2.js:9:29:9:36 | data.foo | +#select +| PostMessageStar2.js:1:27:1:34 | password | PostMessageStar2.js:1:27:1:34 | password | PostMessageStar2.js:1:27:1:34 | password | Sensitive data returned from $@ is sent to another window without origin restriction. | PostMessageStar2.js:1:27:1:34 | password | here | +| PostMessageStar2.js:8:29:8:32 | data | PostMessageStar2.js:5:14:5:21 | password | PostMessageStar2.js:8:29:8:32 | data | Sensitive data returned from $@ is sent to another window without origin restriction. | PostMessageStar2.js:5:14:5:21 | password | here | +| PostMessageStar2.js:9:29:9:36 | data.foo | PostMessageStar2.js:5:14:5:21 | password | PostMessageStar2.js:9:29:9:36 | data.foo | Sensitive data returned from $@ is sent to another window without origin restriction. | PostMessageStar2.js:5:14:5:21 | password | here | +| PostMessageStar2.js:13:27:13:33 | authKey | PostMessageStar2.js:13:27:13:33 | authKey | PostMessageStar2.js:13:27:13:33 | authKey | Sensitive data returned from $@ is sent to another window without origin restriction. | PostMessageStar2.js:13:27:13:33 | authKey | here | +| PostMessageStar.js:1:27:1:34 | userName | PostMessageStar.js:1:27:1:34 | userName | PostMessageStar.js:1:27:1:34 | userName | Sensitive data returned from $@ is sent to another window without origin restriction. | PostMessageStar.js:1:27:1:34 | userName | here | diff --git a/javascript/ql/test/query-tests/Security/CWE-201/PostMessageStar.js b/javascript/ql/test/query-tests/Security/CWE-201/PostMessageStar.js new file mode 100644 index 00000000000..63aa2666c69 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-201/PostMessageStar.js @@ -0,0 +1 @@ +window.parent.postMessage(userName, '*'); diff --git a/javascript/ql/test/query-tests/Security/CWE-201/PostMessageStar.qlref b/javascript/ql/test/query-tests/Security/CWE-201/PostMessageStar.qlref new file mode 100644 index 00000000000..1f3b38b16f0 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-201/PostMessageStar.qlref @@ -0,0 +1 @@ +Security/CWE-201/PostMessageStar.ql \ No newline at end of file diff --git a/javascript/ql/test/query-tests/Security/CWE-201/PostMessageStar2.js b/javascript/ql/test/query-tests/Security/CWE-201/PostMessageStar2.js new file mode 100644 index 00000000000..74c1e5ff8bf --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-201/PostMessageStar2.js @@ -0,0 +1,13 @@ +window.parent.postMessage(password, '*'); // NOT OK + +(function() { + var data = {}; + data.foo = password; + data.bar = "unproblematic"; + + window.parent.postMessage(data, '*'); // NOT OK + window.parent.postMessage(data.foo, '*'); // NOT OK + window.parent.postMessage(data.bar, '*'); // OK +})(); + +window.parent.postMessage(authKey, '*'); diff --git a/javascript/ql/test/query-tests/Security/CWE-201/PostMessageStarGood.js b/javascript/ql/test/query-tests/Security/CWE-201/PostMessageStarGood.js new file mode 100644 index 00000000000..a904f896c27 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-201/PostMessageStarGood.js @@ -0,0 +1 @@ +window.parent.postMessage(userName, 'https://lgtm.com'); diff --git a/javascript/ql/test/query-tests/Security/CWE-798/HardcodedCredentials.js b/javascript/ql/test/query-tests/Security/CWE-798/HardcodedCredentials.js index c32e1468fbe..c6356a87f6b 100644 --- a/javascript/ql/test/query-tests/Security/CWE-798/HardcodedCredentials.js +++ b/javascript/ql/test/query-tests/Security/CWE-798/HardcodedCredentials.js @@ -134,3 +134,13 @@ (function(){ require("cookie-session")({ secret: "cookie-session secret" }); })() + +(function(){ + var request = require('request'); + request.get(url, { // OK + 'auth': { + 'user': '', + 'pass': process.env.PASSWORD + } + }); +})(); diff --git a/javascript/ql/test/query-tests/Statements/UselessConditional/UselessConditional.expected b/javascript/ql/test/query-tests/Statements/UselessConditional/UselessConditional.expected index 5de81fba4b8..46606438497 100644 --- a/javascript/ql/test/query-tests/Statements/UselessConditional/UselessConditional.expected +++ b/javascript/ql/test/query-tests/Statements/UselessConditional/UselessConditional.expected @@ -25,6 +25,10 @@ | UselessConditional.js:129:6:129:24 | constantUndefined() | This call to constantUndefined always evaluates to false. | | UselessConditional.js:135:6:135:32 | constan ... ined1() | This call to constantFalseOrUndefined1 always evaluates to false. | | UselessConditional.js:139:6:139:32 | constan ... ined2() | This call to constantFalseOrUndefined2 always evaluates to false. | +| UselessConditional.js:148:6:148:8 | p() | This call to p always evaluates to true. | +| UselessConditional.js:151:6:151:6 | v | This use of variable 'v' always evaluates to true. | +| UselessConditional.js:163:5:163:17 | findOrThrow() | This call to findOrThrow always evaluates to true. | +| UselessConditional.js:166:6:166:6 | v | This use of variable 'v' always evaluates to true. | | UselessConditionalGood.js:58:12:58:13 | x2 | This use of variable 'x2' always evaluates to false. | | UselessConditionalGood.js:69:12:69:13 | xy | This use of variable 'xy' always evaluates to false. | | UselessConditionalGood.js:85:12:85:13 | xy | This use of variable 'xy' always evaluates to false. | diff --git a/javascript/ql/test/query-tests/Statements/UselessConditional/UselessConditional.js b/javascript/ql/test/query-tests/Statements/UselessConditional/UselessConditional.js index f58152bf240..8731ac0cfac 100644 --- a/javascript/ql/test/query-tests/Statements/UselessConditional/UselessConditional.js +++ b/javascript/ql/test/query-tests/Statements/UselessConditional/UselessConditional.js @@ -140,4 +140,41 @@ async function awaitFlow(){ return; }); + +(function () { + function p() { + return {}; + } + if (p()) { // NOT OK + } + var v = p(); + if (v) { // NOT OK + } + if (v) { // NOT OK, but not detected due to SSA limitations + } +}); + +(function() { + function findOrThrow() { + var e = find(); + if (e) return e; + throw new Error(); + } + if(findOrThrow()){ // NOT OK + } + var v = findOrThrow(); + if (v) { // NOT OK + } + if (v) { // NOT OK, but not detected due to SSA limitations + } +}); + +(function () { + function f(){ return { v: unkown };} + f(); + var { v } = f(); + if (v) { // OK + } +}); + // semmle-extractor-options: --experimental diff --git a/javascript/upgrades/7eead88269b20e9d61f61cd2291affb737dc831e/isES2015Module.ql b/javascript/upgrades/7eead88269b20e9d61f61cd2291affb737dc831e/isES2015Module.ql new file mode 100644 index 00000000000..38971a50710 --- /dev/null +++ b/javascript/upgrades/7eead88269b20e9d61f61cd2291affb737dc831e/isES2015Module.ql @@ -0,0 +1,7 @@ +class TopLevel extends @toplevel { + string toString() { none() } +} + +from TopLevel tl +where isModule(tl) and not isNodejs(tl) +select tl diff --git a/javascript/upgrades/7eead88269b20e9d61f61cd2291affb737dc831e/old.dbscheme b/javascript/upgrades/7eead88269b20e9d61f61cd2291affb737dc831e/old.dbscheme new file mode 100644 index 00000000000..7eead88269b --- /dev/null +++ b/javascript/upgrades/7eead88269b20e9d61f61cd2291affb737dc831e/old.dbscheme @@ -0,0 +1,1088 @@ +/*** Standard fragments ***/ + +/** Files and folders **/ + +@location = @location_default; + +locations_default(unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref + ); + +@sourceline = @locatable; + +numlines(int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref + ); + + +/* + fromSource(0) = unknown, + fromSource(1) = from source, + fromSource(2) = from library +*/ +files(unique int id: @file, + varchar(900) name: string ref, + varchar(900) simple: string ref, + varchar(900) ext: string ref, + int fromSource: int ref); + +folders(unique int id: @folder, + varchar(900) name: string ref, + varchar(900) simple: string ref); + + +@container = @folder | @file ; + + +containerparent(int parent: @container ref, + unique int child: @container ref); + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string ref); + +/** Version control data **/ + +svnentries( + int id : @svnentry, + varchar(500) revision : string ref, + varchar(500) author : string ref, + date revisionDate : date ref, + int changeSize : int ref +); + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + varchar(500) action : string ref +); + +svnentrymsg( + int id : @svnentry ref, + varchar(500) message : string ref +); + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +); + + +/*** JavaScript-specific part ***/ + +filetype( + int file: @file ref, + string filetype: string ref +) + +// top-level code fragments +toplevels (unique int id: @toplevel, + int kind: int ref); + +isExterns (int toplevel: @toplevel ref); + +case @toplevel.kind of + 0 = @script +| 1 = @inline_script +| 2 = @event_handler +| 3 = @javascript_url; + +isModule (int tl: @toplevel ref); +isNodejs (int tl: @toplevel ref); + +// statements +#keyset[parent, idx] +stmts (unique int id: @stmt, + int kind: int ref, + int parent: @stmtparent ref, + int idx: int ref, + varchar(900) tostring: string ref); + +stmtContainers (unique int stmt: @stmt ref, + int container: @stmt_container ref); + +jumpTargets (unique int jump: @stmt ref, + int target: @stmt ref); + +@stmtparent = @stmt | @toplevel | @functionexpr | @arrowfunctionexpr; +@stmt_container = @toplevel | @function | @namespacedeclaration | @externalmoduledeclaration | @globalaugmentationdeclaration; + +case @stmt.kind of + 0 = @emptystmt +| 1 = @blockstmt +| 2 = @exprstmt +| 3 = @ifstmt +| 4 = @labeledstmt +| 5 = @breakstmt +| 6 = @continuestmt +| 7 = @withstmt +| 8 = @switchstmt +| 9 = @returnstmt +| 10 = @throwstmt +| 11 = @trystmt +| 12 = @whilestmt +| 13 = @dowhilestmt +| 14 = @forstmt +| 15 = @forinstmt +| 16 = @debuggerstmt +| 17 = @functiondeclstmt +| 18 = @vardeclstmt +| 19 = @case +| 20 = @catchclause +| 21 = @forofstmt +| 22 = @constdeclstmt +| 23 = @letstmt +| 24 = @legacy_letstmt +| 25 = @foreachstmt +| 26 = @classdeclstmt +| 27 = @importdeclaration +| 28 = @exportalldeclaration +| 29 = @exportdefaultdeclaration +| 30 = @exportnameddeclaration +| 31 = @namespacedeclaration +| 32 = @importequalsdeclaration +| 33 = @exportassigndeclaration +| 34 = @interfacedeclaration +| 35 = @typealiasdeclaration +| 36 = @enumdeclaration +| 37 = @externalmoduledeclaration +| 38 = @exportasnamespacedeclaration +| 39 = @globalaugmentationdeclaration +; + +@declstmt = @vardeclstmt | @constdeclstmt | @letstmt | @legacy_letstmt; + +@exportdeclaration = @exportalldeclaration | @exportdefaultdeclaration | @exportnameddeclaration; + +@namespacedefinition = @namespacedeclaration | @enumdeclaration; +@typedefinition = @classdefinition | @interfacedeclaration | @enumdeclaration | @typealiasdeclaration | @enum_member; + +isInstantiated(unique int decl: @namespacedeclaration ref); + +@declarablestmt = @declstmt | @namespacedeclaration | @classdeclstmt | @functiondeclstmt | @enumdeclaration | @externalmoduledeclaration | @globalaugmentationdeclaration; +hasDeclareKeyword(unique int stmt: @declarablestmt ref); + +isForAwaitOf(unique int forof: @forofstmt ref); + +// expressions +#keyset[parent, idx] +exprs (unique int id: @expr, + int kind: int ref, + int parent: @exprparent ref, + int idx: int ref, + varchar(900) tostring: string ref); + +literals (varchar(900) value: string ref, + varchar(900) raw: string ref, + unique int expr: @exprortype ref); + +enclosingStmt (unique int expr: @exprortype ref, + int stmt: @stmt ref); + +exprContainers (unique int expr: @exprortype ref, + int container: @stmt_container ref); + +arraySize (unique int ae: @arraylike ref, + int sz: int ref); + +isDelegating (int yield: @yieldexpr ref); + +@exprorstmt = @expr | @stmt; +@exprortype = @expr | @typeexpr; +@exprparent = @exprorstmt | @property | @functiontypeexpr; +@arraylike = @arrayexpr | @arraypattern; + +case @expr.kind of + 0 = @label +| 1 = @nullliteral +| 2 = @booleanliteral +| 3 = @numberliteral +| 4 = @stringliteral +| 5 = @regexpliteral +| 6 = @thisexpr +| 7 = @arrayexpr +| 8 = @objexpr +| 9 = @functionexpr +| 10 = @seqexpr +| 11 = @conditionalexpr +| 12 = @newexpr +| 13 = @callexpr +| 14 = @dotexpr +| 15 = @indexexpr +| 16 = @negexpr +| 17 = @plusexpr +| 18 = @lognotexpr +| 19 = @bitnotexpr +| 20 = @typeofexpr +| 21 = @voidexpr +| 22 = @deleteexpr +| 23 = @eqexpr +| 24 = @neqexpr +| 25 = @eqqexpr +| 26 = @neqqexpr +| 27 = @ltexpr +| 28 = @leexpr +| 29 = @gtexpr +| 30 = @geexpr +| 31 = @lshiftexpr +| 32 = @rshiftexpr +| 33 = @urshiftexpr +| 34 = @addexpr +| 35 = @subexpr +| 36 = @mulexpr +| 37 = @divexpr +| 38 = @modexpr +| 39 = @bitorexpr +| 40 = @xorexpr +| 41 = @bitandexpr +| 42 = @inexpr +| 43 = @instanceofexpr +| 44 = @logandexpr +| 45 = @logorexpr +| 47 = @assignexpr +| 48 = @assignaddexpr +| 49 = @assignsubexpr +| 50 = @assignmulexpr +| 51 = @assigndivexpr +| 52 = @assignmodexpr +| 53 = @assignlshiftexpr +| 54 = @assignrshiftexpr +| 55 = @assignurshiftexpr +| 56 = @assignorexpr +| 57 = @assignxorexpr +| 58 = @assignandexpr +| 59 = @preincexpr +| 60 = @postincexpr +| 61 = @predecexpr +| 62 = @postdecexpr +| 63 = @parexpr +| 64 = @vardeclarator +| 65 = @arrowfunctionexpr +| 66 = @spreadelement +| 67 = @arraypattern +| 68 = @objectpattern +| 69 = @yieldexpr +| 70 = @taggedtemplateexpr +| 71 = @templateliteral +| 72 = @templateelement +| 73 = @arraycomprehensionexpr +| 74 = @generatorexpr +| 75 = @forincomprehensionblock +| 76 = @forofcomprehensionblock +| 77 = @legacy_letexpr +| 78 = @vardecl +| 79 = @proper_varaccess +| 80 = @classexpr +| 81 = @superexpr +| 82 = @newtargetexpr +| 83 = @namedimportspecifier +| 84 = @importdefaultspecifier +| 85 = @importnamespacespecifier +| 86 = @namedexportspecifier +| 87 = @expexpr +| 88 = @assignexpexpr +| 89 = @jsxelement +| 90 = @jsxqualifiedname +| 91 = @jsxemptyexpr +| 92 = @awaitexpr +| 93 = @functionsentexpr +| 94 = @decorator +| 95 = @exportdefaultspecifier +| 96 = @exportnamespacespecifier +| 97 = @bindexpr +| 98 = @externalmodulereference +| 99 = @dynamicimport +| 100 = @expressionwithtypearguments +| 101 = @prefixtypeassertion +| 102 = @astypeassertion +| 103 = @export_varaccess +| 104 = @decorator_list +| 105 = @non_null_assertion +| 106 = @bigintliteral +| 107 = @nullishcoalescingexpr +; + +@varaccess = @proper_varaccess | @export_varaccess; +@varref = @vardecl | @varaccess; + +@identifier = @label | @varref | @typeidentifier; + +@literal = @nullliteral | @booleanliteral | @numberliteral | @stringliteral | @regexpliteral | @bigintliteral; + +@propaccess = @dotexpr | @indexexpr; + +@invokeexpr = @newexpr | @callexpr; + +@unaryexpr = @negexpr | @plusexpr | @lognotexpr | @bitnotexpr | @typeofexpr | @voidexpr | @deleteexpr | @spreadelement; + +@equalitytest = @eqexpr | @neqexpr | @eqqexpr | @neqqexpr; + +@comparison = @equalitytest | @ltexpr | @leexpr | @gtexpr | @geexpr; + +@binaryexpr = @comparison | @lshiftexpr | @rshiftexpr | @urshiftexpr | @addexpr | @subexpr | @mulexpr | @divexpr | @modexpr | @expexpr | @bitorexpr | @xorexpr | @bitandexpr | @inexpr | @instanceofexpr | @logandexpr | @logorexpr | @nullishcoalescingexpr; + +@assignment = @assignexpr | @assignaddexpr | @assignsubexpr | @assignmulexpr | @assigndivexpr | @assignmodexpr | @assignexpexpr | @assignlshiftexpr | @assignrshiftexpr | @assignurshiftexpr | @assignorexpr | @assignxorexpr | @assignandexpr; + +@updateexpr = @preincexpr | @postincexpr | @predecexpr | @postdecexpr; + +@pattern = @varref | @arraypattern | @objectpattern; + +@comprehensionexpr = @arraycomprehensionexpr | @generatorexpr; + +@comprehensionblock = @forincomprehensionblock | @forofcomprehensionblock; + +@importspecifier = @namedimportspecifier | @importdefaultspecifier | @importnamespacespecifier; + +@exportspecifier = @namedexportspecifier | @exportdefaultspecifier | @exportnamespacespecifier; + +@typeassertion = @astypeassertion | @prefixtypeassertion; + +@classdefinition = @classdeclstmt | @classexpr; +@interfacedefinition = @interfacedeclaration | @interfacetypeexpr; +@classorinterface = @classdefinition | @interfacedefinition; + +@lexical_decl = @vardecl | @typedecl; +@lexical_access = @varaccess | @localtypeaccess | @localvartypeaccess | @localnamespaceaccess; +@lexical_ref = @lexical_decl | @lexical_access; + +// scopes +scopes (unique int id: @scope, + int kind: int ref); + +case @scope.kind of + 0 = @globalscope +| 1 = @functionscope +| 2 = @catchscope +| 3 = @modulescope +| 4 = @blockscope +| 5 = @forscope +| 6 = @forinscope // for-of scopes work the same as for-in scopes +| 7 = @comprehensionblockscope +| 8 = @classexprscope +| 9 = @namespacescope +| 10 = @classdeclscope +| 11 = @interfacescope +| 12 = @typealiasscope +| 13 = @mappedtypescope +| 14 = @enumscope +| 15 = @externalmodulescope +| 16 = @conditionaltypescope; + +scopenodes (unique int node: @ast_node ref, + int scope: @scope ref); + +scopenesting (unique int inner: @scope ref, + int outer: @scope ref); + +// functions +@function = @functiondeclstmt | @functionexpr | @arrowfunctionexpr; + +@parameterized = @function | @catchclause; +@type_parameterized = @function | @classorinterface | @typealiasdeclaration | @mappedtypeexpr | @infertypeexpr; + +isGenerator (int fun: @function ref); +hasRestParameter (int fun: @function ref); +isAsync (int fun: @function ref); + +// variables and lexically scoped type names +#keyset[scope, name] +variables (unique int id: @variable, + varchar(900) name: string ref, + int scope: @scope ref); + +#keyset[scope, name] +local_type_names (unique int id: @local_type_name, + varchar(900) name: string ref, + int scope: @scope ref); + +#keyset[scope, name] +local_namespace_names (unique int id: @local_namespace_name, + varchar(900) name: string ref, + int scope: @scope ref); + +isArgumentsObject (int id: @variable ref); + +@lexical_name = @variable | @local_type_name | @local_namespace_name; + +@bind_id = @varaccess | @localvartypeaccess; +bind (unique int id: @bind_id ref, + int decl: @variable ref); + +decl (unique int id: @vardecl ref, + int decl: @variable ref); + +@typebind_id = @localtypeaccess | @export_varaccess; +typebind (unique int id: @typebind_id ref, + int decl: @local_type_name ref); + +@typedecl_id = @typedecl | @vardecl; +typedecl (unique int id: @typedecl_id ref, + int decl: @local_type_name ref); + +namespacedecl (unique int id: @vardecl ref, + int decl: @local_namespace_name ref); + +@namespacebind_id = @localnamespaceaccess | @export_varaccess; +namespacebind (unique int id: @namespacebind_id ref, + int decl: @local_namespace_name ref); + + +// properties in object literals, property patterns in object patterns, and method declarations in classes +#keyset[parent, index] +properties (unique int id: @property, + int parent: @property_parent ref, + int index: int ref, + int kind: int ref, + varchar(900) tostring: string ref); + +case @property.kind of + 0 = @value_property +| 1 = @property_getter +| 2 = @property_setter +| 3 = @jsx_attribute +| 4 = @function_call_signature +| 5 = @constructor_call_signature +| 6 = @index_signature +| 7 = @enum_member +| 8 = @proper_field +| 9 = @parameter_field +; + +@property_parent = @objexpr | @objectpattern | @classdefinition | @jsxelement | @interfacedefinition | @enumdeclaration; +@property_accessor = @property_getter | @property_setter; +@call_signature = @function_call_signature | @constructor_call_signature; +@field = @proper_field | @parameter_field; +@field_or_vardeclarator = @field | @vardeclarator; + +isComputed (int id: @property ref); +isMethod (int id: @property ref); +isStatic (int id: @property ref); +isAbstractMember (int id: @property ref); +isConstEnum (int id: @enumdeclaration ref); +isAbstractClass (int id: @classdeclstmt ref); + +hasPublicKeyword (int id: @property ref); +hasPrivateKeyword (int id: @property ref); +hasProtectedKeyword (int id: @property ref); +hasReadonlyKeyword (int id: @property ref); +isOptionalMember (int id: @property ref); +hasDefiniteAssignmentAssertion (int id: @field_or_vardeclarator ref); + +#keyset[constructor, param_index] +parameter_fields( + unique int field: @parameter_field ref, + int constructor: @functionexpr ref, + int param_index: int ref +); + +// types +#keyset[parent, idx] +typeexprs ( + unique int id: @typeexpr, + int kind: int ref, + int parent: @typeexpr_parent ref, + int idx: int ref, + varchar(900) tostring: string ref +); + +case @typeexpr.kind of + 0 = @localtypeaccess +| 1 = @typedecl +| 2 = @keywordtypeexpr +| 3 = @stringliteraltypeexpr +| 4 = @numberliteraltypeexpr +| 5 = @booleanliteraltypeexpr +| 6 = @arraytypeexpr +| 7 = @uniontypeexpr +| 8 = @indexedaccesstypeexpr +| 9 = @intersectiontypeexpr +| 10 = @parenthesizedtypeexpr +| 11 = @tupletypeexpr +| 12 = @keyoftypeexpr +| 13 = @qualifiedtypeaccess +| 14 = @generictypeexpr +| 15 = @typelabel +| 16 = @typeoftypeexpr +| 17 = @localvartypeaccess +| 18 = @qualifiedvartypeaccess +| 19 = @thisvartypeaccess +| 20 = @istypeexpr +| 21 = @interfacetypeexpr +| 22 = @typeparameter +| 23 = @plainfunctiontypeexpr +| 24 = @constructortypeexpr +| 25 = @localnamespaceaccess +| 26 = @qualifiednamespaceaccess +| 27 = @mappedtypeexpr +| 28 = @conditionaltypeexpr +| 29 = @infertypeexpr +| 30 = @importtypeaccess +| 31 = @importnamespaceaccess +| 32 = @importvartypeaccess +| 33 = @optionaltypeexpr +| 34 = @resttypeexpr +| 35 = @bigintliteraltypeexpr +; + +@typeref = @typeaccess | @typedecl; +@typeidentifier = @typedecl | @localtypeaccess | @typelabel | @localvartypeaccess | @localnamespaceaccess; +@typeexpr_parent = @expr | @stmt | @property | @typeexpr; +@literaltypeexpr = @stringliteraltypeexpr | @numberliteraltypeexpr | @booleanliteraltypeexpr | @bigintliteraltypeexpr; +@typeaccess = @localtypeaccess | @qualifiedtypeaccess | @importtypeaccess; +@vartypeaccess = @localvartypeaccess | @qualifiedvartypeaccess | @thisvartypeaccess | @importvartypeaccess; +@namespaceaccess = @localnamespaceaccess | @qualifiednamespaceaccess | @importnamespaceaccess; +@importtypeexpr = @importtypeaccess | @importnamespaceaccess | @importvartypeaccess; + +@functiontypeexpr = @plainfunctiontypeexpr | @constructortypeexpr; + +// types +types ( + unique int id: @type, + int kind: int ref, + varchar(900) tostring: string ref +); + +#keyset[parent, idx] +type_child ( + int child: @type ref, + int parent: @type ref, + int idx: int ref +); + +case @type.kind of + 0 = @anytype +| 1 = @stringtype +| 2 = @numbertype +| 3 = @uniontype +| 4 = @truetype +| 5 = @falsetype +| 6 = @typereference +| 7 = @objecttype +| 8 = @canonicaltypevariabletype +| 9 = @typeoftype +| 10 = @voidtype +| 11 = @undefinedtype +| 12 = @nulltype +| 13 = @nevertype +| 14 = @plainsymboltype +| 15 = @uniquesymboltype +| 16 = @objectkeywordtype +| 17 = @intersectiontype +| 18 = @tupletype +| 19 = @lexicaltypevariabletype +| 20 = @thistype +| 21 = @numberliteraltype +| 22 = @stringliteraltype +| 23 = @unknowntype +| 24 = @biginttype +| 25 = @bigintliteraltype +; + +@booleanliteraltype = @truetype | @falsetype; +@symboltype = @plainsymboltype | @uniquesymboltype; +@unionorintersectiontype = @uniontype | @intersectiontype; +@typevariabletype = @canonicaltypevariabletype | @lexicaltypevariabletype; + +@typed_ast_node = @expr | @typeexpr | @function; +ast_node_type( + unique int node: @typed_ast_node ref, + int typ: @type ref); + +invoke_expr_signature( + unique int node: @invokeexpr ref, + int sig: @signature_type ref +); + +invoke_expr_overload_index( + unique int node: @invokeexpr ref, + int index: int ref +); + +symbols ( + unique int id: @symbol, + int kind: int ref, + varchar(900) name: string ref +); + +symbol_parent ( + unique int symbol: @symbol ref, + int parent: @symbol ref +); + +symbol_module ( + int symbol: @symbol ref, + varchar(900) moduleName: string ref +); + +symbol_global ( + int symbol: @symbol ref, + varchar(900) globalName: string ref +); + +case @symbol.kind of + 0 = @root_symbol +| 1 = @member_symbol +| 2 = @other_symbol +; + +@type_with_symbol = @typereference | @typevariabletype | @typeoftype | @uniquesymboltype; +@ast_node_with_symbol = @typedefinition | @namespacedefinition | @toplevel | @typeaccess | @namespaceaccess | @vardecl | @function | @invokeexpr; + +ast_node_symbol( + unique int node: @ast_node_with_symbol ref, + int symbol: @symbol ref); + +type_symbol( + unique int typ: @type_with_symbol ref, + int symbol: @symbol ref); + +#keyset[typ, name] +type_property( + int typ: @type ref, + varchar(900) name: string ref, + int propertyType: @type ref); + +@literaltype = @stringliteraltype | @numberliteraltype | @booleanliteraltype | @bigintliteraltype; +@type_with_literal_value = @stringliteraltype | @numberliteraltype | @bigintliteraltype; +type_literal_value( + unique int typ: @type_with_literal_value ref, + varchar(900) value: string ref); + +signature_types ( + unique int id: @signature_type, + int kind: int ref, + varchar(900) tostring: string ref, + int type_parameters: int ref, + int required_params: int ref +); + +case @signature_type.kind of + 0 = @function_signature_type +| 1 = @constructor_signature_type +; + +#keyset[typ, kind, index] +type_contains_signature ( + int typ: @type ref, + int kind: int ref, // constructor/call/index + int index: int ref, // ordering of overloaded signatures + int sig: @signature_type ref +); + +#keyset[parent, index] +signature_contains_type ( + int child: @type ref, + int parent: @signature_type ref, + int index: int ref +); + +#keyset[sig, index] +signature_parameter_name ( + int sig: @signature_type ref, + int index: int ref, + varchar(900) name: string ref +); + +number_index_type ( + unique int baseType: @type ref, + int propertyType: @type ref +); + +string_index_type ( + unique int baseType: @type ref, + int propertyType: @type ref +); + +base_type_names( + int typeName: @symbol ref, + int baseTypeName: @symbol ref +); + +self_types( + int typeName: @symbol ref, + int selfType: @typereference ref +); + +tuple_type_min_length( + unique int typ: @type ref, + int minLength: int ref +); + +tuple_type_rest( + unique int typ: @type ref +); + +// comments +comments (unique int id: @comment, + int kind: int ref, + int toplevel: @toplevel ref, + varchar(900) text: string ref, + varchar(900) tostring: string ref); + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment +| 2 = @doccomment +| 3 = @htmlcommentstart +| 4 = @htmlcommentend; + +@htmlcomment = @htmlcommentstart | @htmlcommentend; +@linecomment = @slashslashcomment | @htmlcomment; +@blockcomment = @slashstarcomment | @doccomment; + +// source lines +lines (unique int id: @line, + int toplevel: @toplevel ref, + varchar(900) text: string ref, + varchar(2) terminator: string ref); +indentation (int file: @file ref, + int lineno: int ref, + varchar(1) indentChar: string ref, + int indentDepth: int ref); + +// JavaScript parse errors +jsParseErrors (unique int id: @js_parse_error, + int toplevel: @toplevel ref, + varchar(900) message: string ref, + varchar(900) line: string ref); + +// regular expressions +#keyset[parent, idx] +regexpterm (unique int id: @regexpterm, + int kind: int ref, + int parent: @regexpparent ref, + int idx: int ref, + varchar(900) tostring: string ref); + +@regexpparent = @regexpterm | @regexpliteral; + +case @regexpterm.kind of + 0 = @regexp_alt +| 1 = @regexp_seq +| 2 = @regexp_caret +| 3 = @regexp_dollar +| 4 = @regexp_wordboundary +| 5 = @regexp_nonwordboundary +| 6 = @regexp_positive_lookahead +| 7 = @regexp_negative_lookahead +| 8 = @regexp_star +| 9 = @regexp_plus +| 10 = @regexp_opt +| 11 = @regexp_range +| 12 = @regexp_dot +| 13 = @regexp_group +| 14 = @regexp_normal_char +| 15 = @regexp_hex_escape +| 16 = @regexp_unicode_escape +| 17 = @regexp_dec_escape +| 18 = @regexp_oct_escape +| 19 = @regexp_ctrl_escape +| 20 = @regexp_char_class_escape +| 21 = @regexp_id_escape +| 22 = @regexp_backref +| 23 = @regexp_char_class +| 24 = @regexp_char_range +| 25 = @regexp_positive_lookbehind +| 26 = @regexp_negative_lookbehind +| 27 = @regexp_unicode_property_escape; + +regexpParseErrors (unique int id: @regexp_parse_error, + int regexp: @regexpterm ref, + varchar(900) message: string ref); + +@regexp_quantifier = @regexp_star | @regexp_plus | @regexp_opt | @regexp_range; +@regexp_escape = @regexp_char_escape | @regexp_char_class_escape | @regexp_unicode_property_escape; +@regexp_char_escape = @regexp_hex_escape | @regexp_unicode_escape | @regexp_dec_escape | @regexp_oct_escape | @regexp_ctrl_escape | @regexp_id_escape; +@regexp_constant = @regexp_normal_char | @regexp_char_escape; +@regexp_lookahead = @regexp_positive_lookahead | @regexp_negative_lookahead; +@regexp_lookbehind = @regexp_positive_lookbehind | @regexp_negative_lookbehind; +@regexp_subpattern = @regexp_lookahead | @regexp_lookbehind; + +isGreedy (int id: @regexp_quantifier ref); +rangeQuantifierLowerBound (unique int id: @regexp_range ref, int lo: int ref); +rangeQuantifierUpperBound (unique int id: @regexp_range ref, int hi: int ref); +isCapture (unique int id: @regexp_group ref, int number: int ref); +isNamedCapture (unique int id: @regexp_group ref, string name: string ref); +isInverted (int id: @regexp_char_class ref); +regexpConstValue (unique int id: @regexp_constant ref, varchar(1) value: string ref); +charClassEscape (unique int id: @regexp_char_class_escape ref, varchar(1) value: string ref); +backref (unique int id: @regexp_backref ref, int value: int ref); +namedBackref (unique int id: @regexp_backref ref, string name: string ref); +unicodePropertyEscapeName (unique int id: @regexp_unicode_property_escape ref, string name: string ref); +unicodePropertyEscapeValue (unique int id: @regexp_unicode_property_escape ref, string value: string ref); + +// tokens +#keyset[toplevel, idx] +tokeninfo (unique int id: @token, + int kind: int ref, + int toplevel: @toplevel ref, + int idx: int ref, + varchar(900) value: string ref); + +case @token.kind of + 0 = @token_eof +| 1 = @token_null_literal +| 2 = @token_boolean_literal +| 3 = @token_numeric_literal +| 4 = @token_string_literal +| 5 = @token_regular_expression +| 6 = @token_identifier +| 7 = @token_keyword +| 8 = @token_punctuator; + +// associate comments with the token immediately following them (which may be EOF) +next_token (int comment: @comment ref, int token: @token ref); + +// JSON +#keyset[parent, idx] +json (unique int id: @json_value, + int kind: int ref, + int parent: @json_parent ref, + int idx: int ref, + varchar(900) tostring: string ref); + +json_literals (varchar(900) value: string ref, + varchar(900) raw: string ref, + unique int expr: @json_value ref); + +json_properties (int obj: @json_object ref, + varchar(900) property: string ref, + int value: @json_value ref); + +json_errors (unique int id: @json_parse_error, + varchar(900) message: string ref); + +case @json_value.kind of + 0 = @json_null +| 1 = @json_boolean +| 2 = @json_number +| 3 = @json_string +| 4 = @json_array +| 5 = @json_object; + +@json_parent = @json_object | @json_array | @file; + +// locations +@ast_node = @toplevel | @stmt | @expr | @property | @typeexpr; + +@locatable = @file + | @ast_node + | @comment + | @line + | @js_parse_error | @regexp_parse_error | @json_parse_error + | @regexpterm + | @json_value + | @token + | @cfg_node + | @jsdoc | @jsdoc_type_expr | @jsdoc_tag + | @yaml_node | @yaml_error + | @xmllocatable; + +hasLocation (unique int locatable: @locatable ref, + int location: @location ref); + +// CFG +entry_cfg_node (unique int id: @entry_node, int container: @stmt_container ref); +exit_cfg_node (unique int id: @exit_node, int container: @stmt_container ref); +guard_node (unique int id: @guard_node, int kind: int ref, int test: @expr ref); +case @guard_node.kind of + 0 = @falsy_guard +| 1 = @truthy_guard; +@condition_guard = @falsy_guard | @truthy_guard; + +@synthetic_cfg_node = @entry_node | @exit_node | @guard_node; +@cfg_node = @synthetic_cfg_node | @exprparent; + +successor (int pred: @cfg_node ref, int succ: @cfg_node ref); + +// JSDoc comments +jsdoc (unique int id: @jsdoc, varchar(900) description: string ref, int comment: @comment ref); +#keyset[parent, idx] +jsdoc_tags (unique int id: @jsdoc_tag, varchar(900) title: string ref, + int parent: @jsdoc ref, int idx: int ref, varchar(900) tostring: string ref); +jsdoc_tag_descriptions (unique int tag: @jsdoc_tag ref, varchar(900) text: string ref); +jsdoc_tag_names (unique int tag: @jsdoc_tag ref, varchar(900) text: string ref); + +#keyset[parent, idx] +jsdoc_type_exprs (unique int id: @jsdoc_type_expr, + int kind: int ref, + int parent: @jsdoc_type_expr_parent ref, + int idx: int ref, + varchar(900) tostring: string ref); +case @jsdoc_type_expr.kind of + 0 = @jsdoc_any_type_expr +| 1 = @jsdoc_null_type_expr +| 2 = @jsdoc_undefined_type_expr +| 3 = @jsdoc_unknown_type_expr +| 4 = @jsdoc_void_type_expr +| 5 = @jsdoc_named_type_expr +| 6 = @jsdoc_applied_type_expr +| 7 = @jsdoc_nullable_type_expr +| 8 = @jsdoc_non_nullable_type_expr +| 9 = @jsdoc_record_type_expr +| 10 = @jsdoc_array_type_expr +| 11 = @jsdoc_union_type_expr +| 12 = @jsdoc_function_type_expr +| 13 = @jsdoc_optional_type_expr +| 14 = @jsdoc_rest_type_expr +; + +#keyset[id, idx] +jsdoc_record_field_name (int id: @jsdoc_record_type_expr ref, int idx: int ref, varchar(900) name: string ref); +jsdoc_prefix_qualifier (int id: @jsdoc_type_expr ref); +jsdoc_has_new_parameter (int fn: @jsdoc_function_type_expr ref); + +@jsdoc_type_expr_parent = @jsdoc_type_expr | @jsdoc_tag; + +jsdoc_errors (unique int id: @jsdoc_error, int tag: @jsdoc_tag ref, varchar(900) message: string ref, varchar(900) tostring: string ref); + +// YAML +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + varchar(900) tag: string ref, + varchar(900) tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + varchar(900) anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + varchar(900) target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + varchar(900) value: string ref); + +yaml_errors (unique int id: @yaml_error, + varchar(900) message: string ref); + +/* XML Files */ + +xmlEncoding( + unique int id: @file ref, + varchar(900) encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + varchar(900) root: string ref, + varchar(900) publicId: string ref, + varchar(900) systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + varchar(900) name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + varchar(900) name: string ref, + varchar(3600) value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + varchar(900) prefixName: string ref, + varchar(900) URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + varchar(3600) text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + varchar(3600) text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +@dataflownode = @expr | @functiondeclstmt | @classdeclstmt | @namespacedeclaration | @enumdeclaration | @property; + +@optionalchainable = @callexpr | @propaccess; + +isOptionalChaining(int id: @optionalchainable ref); + +/* Last updated 2018/10/23. */ diff --git a/javascript/upgrades/7eead88269b20e9d61f61cd2291affb737dc831e/semmlecode.javascript.dbscheme b/javascript/upgrades/7eead88269b20e9d61f61cd2291affb737dc831e/semmlecode.javascript.dbscheme new file mode 100644 index 00000000000..eee08932d52 --- /dev/null +++ b/javascript/upgrades/7eead88269b20e9d61f61cd2291affb737dc831e/semmlecode.javascript.dbscheme @@ -0,0 +1,1090 @@ +/*** Standard fragments ***/ + +/** Files and folders **/ + +@location = @location_default; + +locations_default(unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref + ); + +@sourceline = @locatable; + +numlines(int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref + ); + + +/* + fromSource(0) = unknown, + fromSource(1) = from source, + fromSource(2) = from library +*/ +files(unique int id: @file, + varchar(900) name: string ref, + varchar(900) simple: string ref, + varchar(900) ext: string ref, + int fromSource: int ref); + +folders(unique int id: @folder, + varchar(900) name: string ref, + varchar(900) simple: string ref); + + +@container = @folder | @file ; + + +containerparent(int parent: @container ref, + unique int child: @container ref); + +/** Duplicate code **/ + +duplicateCode( + unique int id : @duplication, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +similarCode( + unique int id : @similarity, + varchar(900) relativePath : string ref, + int equivClass : int ref); + +@duplication_or_similarity = @duplication | @similarity; + +tokens( + int id : @duplication_or_similarity ref, + int offset : int ref, + int beginLine : int ref, + int beginColumn : int ref, + int endLine : int ref, + int endColumn : int ref); + +/** External data **/ + +externalData( + int id : @externalDataElement, + varchar(900) path : string ref, + int column: int ref, + varchar(900) value : string ref +); + +snapshotDate(unique date snapshotDate : date ref); + +sourceLocationPrefix(varchar(900) prefix : string ref); + +/** Version control data **/ + +svnentries( + int id : @svnentry, + varchar(500) revision : string ref, + varchar(500) author : string ref, + date revisionDate : date ref, + int changeSize : int ref +); + +svnaffectedfiles( + int id : @svnentry ref, + int file : @file ref, + varchar(500) action : string ref +); + +svnentrymsg( + int id : @svnentry ref, + varchar(500) message : string ref +); + +svnchurn( + int commit : @svnentry ref, + int file : @file ref, + int addedLines : int ref, + int deletedLines : int ref +); + + +/*** JavaScript-specific part ***/ + +filetype( + int file: @file ref, + string filetype: string ref +) + +// top-level code fragments +toplevels (unique int id: @toplevel, + int kind: int ref); + +isExterns (int toplevel: @toplevel ref); + +case @toplevel.kind of + 0 = @script +| 1 = @inline_script +| 2 = @event_handler +| 3 = @javascript_url; + +isModule (int tl: @toplevel ref); +isNodejs (int tl: @toplevel ref); +isES2015Module (int tl: @toplevel ref); +isClosureModule (int tl: @toplevel ref); + +// statements +#keyset[parent, idx] +stmts (unique int id: @stmt, + int kind: int ref, + int parent: @stmtparent ref, + int idx: int ref, + varchar(900) tostring: string ref); + +stmtContainers (unique int stmt: @stmt ref, + int container: @stmt_container ref); + +jumpTargets (unique int jump: @stmt ref, + int target: @stmt ref); + +@stmtparent = @stmt | @toplevel | @functionexpr | @arrowfunctionexpr; +@stmt_container = @toplevel | @function | @namespacedeclaration | @externalmoduledeclaration | @globalaugmentationdeclaration; + +case @stmt.kind of + 0 = @emptystmt +| 1 = @blockstmt +| 2 = @exprstmt +| 3 = @ifstmt +| 4 = @labeledstmt +| 5 = @breakstmt +| 6 = @continuestmt +| 7 = @withstmt +| 8 = @switchstmt +| 9 = @returnstmt +| 10 = @throwstmt +| 11 = @trystmt +| 12 = @whilestmt +| 13 = @dowhilestmt +| 14 = @forstmt +| 15 = @forinstmt +| 16 = @debuggerstmt +| 17 = @functiondeclstmt +| 18 = @vardeclstmt +| 19 = @case +| 20 = @catchclause +| 21 = @forofstmt +| 22 = @constdeclstmt +| 23 = @letstmt +| 24 = @legacy_letstmt +| 25 = @foreachstmt +| 26 = @classdeclstmt +| 27 = @importdeclaration +| 28 = @exportalldeclaration +| 29 = @exportdefaultdeclaration +| 30 = @exportnameddeclaration +| 31 = @namespacedeclaration +| 32 = @importequalsdeclaration +| 33 = @exportassigndeclaration +| 34 = @interfacedeclaration +| 35 = @typealiasdeclaration +| 36 = @enumdeclaration +| 37 = @externalmoduledeclaration +| 38 = @exportasnamespacedeclaration +| 39 = @globalaugmentationdeclaration +; + +@declstmt = @vardeclstmt | @constdeclstmt | @letstmt | @legacy_letstmt; + +@exportdeclaration = @exportalldeclaration | @exportdefaultdeclaration | @exportnameddeclaration; + +@namespacedefinition = @namespacedeclaration | @enumdeclaration; +@typedefinition = @classdefinition | @interfacedeclaration | @enumdeclaration | @typealiasdeclaration | @enum_member; + +isInstantiated(unique int decl: @namespacedeclaration ref); + +@declarablestmt = @declstmt | @namespacedeclaration | @classdeclstmt | @functiondeclstmt | @enumdeclaration | @externalmoduledeclaration | @globalaugmentationdeclaration; +hasDeclareKeyword(unique int stmt: @declarablestmt ref); + +isForAwaitOf(unique int forof: @forofstmt ref); + +// expressions +#keyset[parent, idx] +exprs (unique int id: @expr, + int kind: int ref, + int parent: @exprparent ref, + int idx: int ref, + varchar(900) tostring: string ref); + +literals (varchar(900) value: string ref, + varchar(900) raw: string ref, + unique int expr: @exprortype ref); + +enclosingStmt (unique int expr: @exprortype ref, + int stmt: @stmt ref); + +exprContainers (unique int expr: @exprortype ref, + int container: @stmt_container ref); + +arraySize (unique int ae: @arraylike ref, + int sz: int ref); + +isDelegating (int yield: @yieldexpr ref); + +@exprorstmt = @expr | @stmt; +@exprortype = @expr | @typeexpr; +@exprparent = @exprorstmt | @property | @functiontypeexpr; +@arraylike = @arrayexpr | @arraypattern; + +case @expr.kind of + 0 = @label +| 1 = @nullliteral +| 2 = @booleanliteral +| 3 = @numberliteral +| 4 = @stringliteral +| 5 = @regexpliteral +| 6 = @thisexpr +| 7 = @arrayexpr +| 8 = @objexpr +| 9 = @functionexpr +| 10 = @seqexpr +| 11 = @conditionalexpr +| 12 = @newexpr +| 13 = @callexpr +| 14 = @dotexpr +| 15 = @indexexpr +| 16 = @negexpr +| 17 = @plusexpr +| 18 = @lognotexpr +| 19 = @bitnotexpr +| 20 = @typeofexpr +| 21 = @voidexpr +| 22 = @deleteexpr +| 23 = @eqexpr +| 24 = @neqexpr +| 25 = @eqqexpr +| 26 = @neqqexpr +| 27 = @ltexpr +| 28 = @leexpr +| 29 = @gtexpr +| 30 = @geexpr +| 31 = @lshiftexpr +| 32 = @rshiftexpr +| 33 = @urshiftexpr +| 34 = @addexpr +| 35 = @subexpr +| 36 = @mulexpr +| 37 = @divexpr +| 38 = @modexpr +| 39 = @bitorexpr +| 40 = @xorexpr +| 41 = @bitandexpr +| 42 = @inexpr +| 43 = @instanceofexpr +| 44 = @logandexpr +| 45 = @logorexpr +| 47 = @assignexpr +| 48 = @assignaddexpr +| 49 = @assignsubexpr +| 50 = @assignmulexpr +| 51 = @assigndivexpr +| 52 = @assignmodexpr +| 53 = @assignlshiftexpr +| 54 = @assignrshiftexpr +| 55 = @assignurshiftexpr +| 56 = @assignorexpr +| 57 = @assignxorexpr +| 58 = @assignandexpr +| 59 = @preincexpr +| 60 = @postincexpr +| 61 = @predecexpr +| 62 = @postdecexpr +| 63 = @parexpr +| 64 = @vardeclarator +| 65 = @arrowfunctionexpr +| 66 = @spreadelement +| 67 = @arraypattern +| 68 = @objectpattern +| 69 = @yieldexpr +| 70 = @taggedtemplateexpr +| 71 = @templateliteral +| 72 = @templateelement +| 73 = @arraycomprehensionexpr +| 74 = @generatorexpr +| 75 = @forincomprehensionblock +| 76 = @forofcomprehensionblock +| 77 = @legacy_letexpr +| 78 = @vardecl +| 79 = @proper_varaccess +| 80 = @classexpr +| 81 = @superexpr +| 82 = @newtargetexpr +| 83 = @namedimportspecifier +| 84 = @importdefaultspecifier +| 85 = @importnamespacespecifier +| 86 = @namedexportspecifier +| 87 = @expexpr +| 88 = @assignexpexpr +| 89 = @jsxelement +| 90 = @jsxqualifiedname +| 91 = @jsxemptyexpr +| 92 = @awaitexpr +| 93 = @functionsentexpr +| 94 = @decorator +| 95 = @exportdefaultspecifier +| 96 = @exportnamespacespecifier +| 97 = @bindexpr +| 98 = @externalmodulereference +| 99 = @dynamicimport +| 100 = @expressionwithtypearguments +| 101 = @prefixtypeassertion +| 102 = @astypeassertion +| 103 = @export_varaccess +| 104 = @decorator_list +| 105 = @non_null_assertion +| 106 = @bigintliteral +| 107 = @nullishcoalescingexpr +; + +@varaccess = @proper_varaccess | @export_varaccess; +@varref = @vardecl | @varaccess; + +@identifier = @label | @varref | @typeidentifier; + +@literal = @nullliteral | @booleanliteral | @numberliteral | @stringliteral | @regexpliteral | @bigintliteral; + +@propaccess = @dotexpr | @indexexpr; + +@invokeexpr = @newexpr | @callexpr; + +@unaryexpr = @negexpr | @plusexpr | @lognotexpr | @bitnotexpr | @typeofexpr | @voidexpr | @deleteexpr | @spreadelement; + +@equalitytest = @eqexpr | @neqexpr | @eqqexpr | @neqqexpr; + +@comparison = @equalitytest | @ltexpr | @leexpr | @gtexpr | @geexpr; + +@binaryexpr = @comparison | @lshiftexpr | @rshiftexpr | @urshiftexpr | @addexpr | @subexpr | @mulexpr | @divexpr | @modexpr | @expexpr | @bitorexpr | @xorexpr | @bitandexpr | @inexpr | @instanceofexpr | @logandexpr | @logorexpr | @nullishcoalescingexpr; + +@assignment = @assignexpr | @assignaddexpr | @assignsubexpr | @assignmulexpr | @assigndivexpr | @assignmodexpr | @assignexpexpr | @assignlshiftexpr | @assignrshiftexpr | @assignurshiftexpr | @assignorexpr | @assignxorexpr | @assignandexpr; + +@updateexpr = @preincexpr | @postincexpr | @predecexpr | @postdecexpr; + +@pattern = @varref | @arraypattern | @objectpattern; + +@comprehensionexpr = @arraycomprehensionexpr | @generatorexpr; + +@comprehensionblock = @forincomprehensionblock | @forofcomprehensionblock; + +@importspecifier = @namedimportspecifier | @importdefaultspecifier | @importnamespacespecifier; + +@exportspecifier = @namedexportspecifier | @exportdefaultspecifier | @exportnamespacespecifier; + +@typeassertion = @astypeassertion | @prefixtypeassertion; + +@classdefinition = @classdeclstmt | @classexpr; +@interfacedefinition = @interfacedeclaration | @interfacetypeexpr; +@classorinterface = @classdefinition | @interfacedefinition; + +@lexical_decl = @vardecl | @typedecl; +@lexical_access = @varaccess | @localtypeaccess | @localvartypeaccess | @localnamespaceaccess; +@lexical_ref = @lexical_decl | @lexical_access; + +// scopes +scopes (unique int id: @scope, + int kind: int ref); + +case @scope.kind of + 0 = @globalscope +| 1 = @functionscope +| 2 = @catchscope +| 3 = @modulescope +| 4 = @blockscope +| 5 = @forscope +| 6 = @forinscope // for-of scopes work the same as for-in scopes +| 7 = @comprehensionblockscope +| 8 = @classexprscope +| 9 = @namespacescope +| 10 = @classdeclscope +| 11 = @interfacescope +| 12 = @typealiasscope +| 13 = @mappedtypescope +| 14 = @enumscope +| 15 = @externalmodulescope +| 16 = @conditionaltypescope; + +scopenodes (unique int node: @ast_node ref, + int scope: @scope ref); + +scopenesting (unique int inner: @scope ref, + int outer: @scope ref); + +// functions +@function = @functiondeclstmt | @functionexpr | @arrowfunctionexpr; + +@parameterized = @function | @catchclause; +@type_parameterized = @function | @classorinterface | @typealiasdeclaration | @mappedtypeexpr | @infertypeexpr; + +isGenerator (int fun: @function ref); +hasRestParameter (int fun: @function ref); +isAsync (int fun: @function ref); + +// variables and lexically scoped type names +#keyset[scope, name] +variables (unique int id: @variable, + varchar(900) name: string ref, + int scope: @scope ref); + +#keyset[scope, name] +local_type_names (unique int id: @local_type_name, + varchar(900) name: string ref, + int scope: @scope ref); + +#keyset[scope, name] +local_namespace_names (unique int id: @local_namespace_name, + varchar(900) name: string ref, + int scope: @scope ref); + +isArgumentsObject (int id: @variable ref); + +@lexical_name = @variable | @local_type_name | @local_namespace_name; + +@bind_id = @varaccess | @localvartypeaccess; +bind (unique int id: @bind_id ref, + int decl: @variable ref); + +decl (unique int id: @vardecl ref, + int decl: @variable ref); + +@typebind_id = @localtypeaccess | @export_varaccess; +typebind (unique int id: @typebind_id ref, + int decl: @local_type_name ref); + +@typedecl_id = @typedecl | @vardecl; +typedecl (unique int id: @typedecl_id ref, + int decl: @local_type_name ref); + +namespacedecl (unique int id: @vardecl ref, + int decl: @local_namespace_name ref); + +@namespacebind_id = @localnamespaceaccess | @export_varaccess; +namespacebind (unique int id: @namespacebind_id ref, + int decl: @local_namespace_name ref); + + +// properties in object literals, property patterns in object patterns, and method declarations in classes +#keyset[parent, index] +properties (unique int id: @property, + int parent: @property_parent ref, + int index: int ref, + int kind: int ref, + varchar(900) tostring: string ref); + +case @property.kind of + 0 = @value_property +| 1 = @property_getter +| 2 = @property_setter +| 3 = @jsx_attribute +| 4 = @function_call_signature +| 5 = @constructor_call_signature +| 6 = @index_signature +| 7 = @enum_member +| 8 = @proper_field +| 9 = @parameter_field +; + +@property_parent = @objexpr | @objectpattern | @classdefinition | @jsxelement | @interfacedefinition | @enumdeclaration; +@property_accessor = @property_getter | @property_setter; +@call_signature = @function_call_signature | @constructor_call_signature; +@field = @proper_field | @parameter_field; +@field_or_vardeclarator = @field | @vardeclarator; + +isComputed (int id: @property ref); +isMethod (int id: @property ref); +isStatic (int id: @property ref); +isAbstractMember (int id: @property ref); +isConstEnum (int id: @enumdeclaration ref); +isAbstractClass (int id: @classdeclstmt ref); + +hasPublicKeyword (int id: @property ref); +hasPrivateKeyword (int id: @property ref); +hasProtectedKeyword (int id: @property ref); +hasReadonlyKeyword (int id: @property ref); +isOptionalMember (int id: @property ref); +hasDefiniteAssignmentAssertion (int id: @field_or_vardeclarator ref); + +#keyset[constructor, param_index] +parameter_fields( + unique int field: @parameter_field ref, + int constructor: @functionexpr ref, + int param_index: int ref +); + +// types +#keyset[parent, idx] +typeexprs ( + unique int id: @typeexpr, + int kind: int ref, + int parent: @typeexpr_parent ref, + int idx: int ref, + varchar(900) tostring: string ref +); + +case @typeexpr.kind of + 0 = @localtypeaccess +| 1 = @typedecl +| 2 = @keywordtypeexpr +| 3 = @stringliteraltypeexpr +| 4 = @numberliteraltypeexpr +| 5 = @booleanliteraltypeexpr +| 6 = @arraytypeexpr +| 7 = @uniontypeexpr +| 8 = @indexedaccesstypeexpr +| 9 = @intersectiontypeexpr +| 10 = @parenthesizedtypeexpr +| 11 = @tupletypeexpr +| 12 = @keyoftypeexpr +| 13 = @qualifiedtypeaccess +| 14 = @generictypeexpr +| 15 = @typelabel +| 16 = @typeoftypeexpr +| 17 = @localvartypeaccess +| 18 = @qualifiedvartypeaccess +| 19 = @thisvartypeaccess +| 20 = @istypeexpr +| 21 = @interfacetypeexpr +| 22 = @typeparameter +| 23 = @plainfunctiontypeexpr +| 24 = @constructortypeexpr +| 25 = @localnamespaceaccess +| 26 = @qualifiednamespaceaccess +| 27 = @mappedtypeexpr +| 28 = @conditionaltypeexpr +| 29 = @infertypeexpr +| 30 = @importtypeaccess +| 31 = @importnamespaceaccess +| 32 = @importvartypeaccess +| 33 = @optionaltypeexpr +| 34 = @resttypeexpr +| 35 = @bigintliteraltypeexpr +; + +@typeref = @typeaccess | @typedecl; +@typeidentifier = @typedecl | @localtypeaccess | @typelabel | @localvartypeaccess | @localnamespaceaccess; +@typeexpr_parent = @expr | @stmt | @property | @typeexpr; +@literaltypeexpr = @stringliteraltypeexpr | @numberliteraltypeexpr | @booleanliteraltypeexpr | @bigintliteraltypeexpr; +@typeaccess = @localtypeaccess | @qualifiedtypeaccess | @importtypeaccess; +@vartypeaccess = @localvartypeaccess | @qualifiedvartypeaccess | @thisvartypeaccess | @importvartypeaccess; +@namespaceaccess = @localnamespaceaccess | @qualifiednamespaceaccess | @importnamespaceaccess; +@importtypeexpr = @importtypeaccess | @importnamespaceaccess | @importvartypeaccess; + +@functiontypeexpr = @plainfunctiontypeexpr | @constructortypeexpr; + +// types +types ( + unique int id: @type, + int kind: int ref, + varchar(900) tostring: string ref +); + +#keyset[parent, idx] +type_child ( + int child: @type ref, + int parent: @type ref, + int idx: int ref +); + +case @type.kind of + 0 = @anytype +| 1 = @stringtype +| 2 = @numbertype +| 3 = @uniontype +| 4 = @truetype +| 5 = @falsetype +| 6 = @typereference +| 7 = @objecttype +| 8 = @canonicaltypevariabletype +| 9 = @typeoftype +| 10 = @voidtype +| 11 = @undefinedtype +| 12 = @nulltype +| 13 = @nevertype +| 14 = @plainsymboltype +| 15 = @uniquesymboltype +| 16 = @objectkeywordtype +| 17 = @intersectiontype +| 18 = @tupletype +| 19 = @lexicaltypevariabletype +| 20 = @thistype +| 21 = @numberliteraltype +| 22 = @stringliteraltype +| 23 = @unknowntype +| 24 = @biginttype +| 25 = @bigintliteraltype +; + +@booleanliteraltype = @truetype | @falsetype; +@symboltype = @plainsymboltype | @uniquesymboltype; +@unionorintersectiontype = @uniontype | @intersectiontype; +@typevariabletype = @canonicaltypevariabletype | @lexicaltypevariabletype; + +@typed_ast_node = @expr | @typeexpr | @function; +ast_node_type( + unique int node: @typed_ast_node ref, + int typ: @type ref); + +invoke_expr_signature( + unique int node: @invokeexpr ref, + int sig: @signature_type ref +); + +invoke_expr_overload_index( + unique int node: @invokeexpr ref, + int index: int ref +); + +symbols ( + unique int id: @symbol, + int kind: int ref, + varchar(900) name: string ref +); + +symbol_parent ( + unique int symbol: @symbol ref, + int parent: @symbol ref +); + +symbol_module ( + int symbol: @symbol ref, + varchar(900) moduleName: string ref +); + +symbol_global ( + int symbol: @symbol ref, + varchar(900) globalName: string ref +); + +case @symbol.kind of + 0 = @root_symbol +| 1 = @member_symbol +| 2 = @other_symbol +; + +@type_with_symbol = @typereference | @typevariabletype | @typeoftype | @uniquesymboltype; +@ast_node_with_symbol = @typedefinition | @namespacedefinition | @toplevel | @typeaccess | @namespaceaccess | @vardecl | @function | @invokeexpr; + +ast_node_symbol( + unique int node: @ast_node_with_symbol ref, + int symbol: @symbol ref); + +type_symbol( + unique int typ: @type_with_symbol ref, + int symbol: @symbol ref); + +#keyset[typ, name] +type_property( + int typ: @type ref, + varchar(900) name: string ref, + int propertyType: @type ref); + +@literaltype = @stringliteraltype | @numberliteraltype | @booleanliteraltype | @bigintliteraltype; +@type_with_literal_value = @stringliteraltype | @numberliteraltype | @bigintliteraltype; +type_literal_value( + unique int typ: @type_with_literal_value ref, + varchar(900) value: string ref); + +signature_types ( + unique int id: @signature_type, + int kind: int ref, + varchar(900) tostring: string ref, + int type_parameters: int ref, + int required_params: int ref +); + +case @signature_type.kind of + 0 = @function_signature_type +| 1 = @constructor_signature_type +; + +#keyset[typ, kind, index] +type_contains_signature ( + int typ: @type ref, + int kind: int ref, // constructor/call/index + int index: int ref, // ordering of overloaded signatures + int sig: @signature_type ref +); + +#keyset[parent, index] +signature_contains_type ( + int child: @type ref, + int parent: @signature_type ref, + int index: int ref +); + +#keyset[sig, index] +signature_parameter_name ( + int sig: @signature_type ref, + int index: int ref, + varchar(900) name: string ref +); + +number_index_type ( + unique int baseType: @type ref, + int propertyType: @type ref +); + +string_index_type ( + unique int baseType: @type ref, + int propertyType: @type ref +); + +base_type_names( + int typeName: @symbol ref, + int baseTypeName: @symbol ref +); + +self_types( + int typeName: @symbol ref, + int selfType: @typereference ref +); + +tuple_type_min_length( + unique int typ: @type ref, + int minLength: int ref +); + +tuple_type_rest( + unique int typ: @type ref +); + +// comments +comments (unique int id: @comment, + int kind: int ref, + int toplevel: @toplevel ref, + varchar(900) text: string ref, + varchar(900) tostring: string ref); + +case @comment.kind of + 0 = @slashslashcomment +| 1 = @slashstarcomment +| 2 = @doccomment +| 3 = @htmlcommentstart +| 4 = @htmlcommentend; + +@htmlcomment = @htmlcommentstart | @htmlcommentend; +@linecomment = @slashslashcomment | @htmlcomment; +@blockcomment = @slashstarcomment | @doccomment; + +// source lines +lines (unique int id: @line, + int toplevel: @toplevel ref, + varchar(900) text: string ref, + varchar(2) terminator: string ref); +indentation (int file: @file ref, + int lineno: int ref, + varchar(1) indentChar: string ref, + int indentDepth: int ref); + +// JavaScript parse errors +jsParseErrors (unique int id: @js_parse_error, + int toplevel: @toplevel ref, + varchar(900) message: string ref, + varchar(900) line: string ref); + +// regular expressions +#keyset[parent, idx] +regexpterm (unique int id: @regexpterm, + int kind: int ref, + int parent: @regexpparent ref, + int idx: int ref, + varchar(900) tostring: string ref); + +@regexpparent = @regexpterm | @regexpliteral; + +case @regexpterm.kind of + 0 = @regexp_alt +| 1 = @regexp_seq +| 2 = @regexp_caret +| 3 = @regexp_dollar +| 4 = @regexp_wordboundary +| 5 = @regexp_nonwordboundary +| 6 = @regexp_positive_lookahead +| 7 = @regexp_negative_lookahead +| 8 = @regexp_star +| 9 = @regexp_plus +| 10 = @regexp_opt +| 11 = @regexp_range +| 12 = @regexp_dot +| 13 = @regexp_group +| 14 = @regexp_normal_char +| 15 = @regexp_hex_escape +| 16 = @regexp_unicode_escape +| 17 = @regexp_dec_escape +| 18 = @regexp_oct_escape +| 19 = @regexp_ctrl_escape +| 20 = @regexp_char_class_escape +| 21 = @regexp_id_escape +| 22 = @regexp_backref +| 23 = @regexp_char_class +| 24 = @regexp_char_range +| 25 = @regexp_positive_lookbehind +| 26 = @regexp_negative_lookbehind +| 27 = @regexp_unicode_property_escape; + +regexpParseErrors (unique int id: @regexp_parse_error, + int regexp: @regexpterm ref, + varchar(900) message: string ref); + +@regexp_quantifier = @regexp_star | @regexp_plus | @regexp_opt | @regexp_range; +@regexp_escape = @regexp_char_escape | @regexp_char_class_escape | @regexp_unicode_property_escape; +@regexp_char_escape = @regexp_hex_escape | @regexp_unicode_escape | @regexp_dec_escape | @regexp_oct_escape | @regexp_ctrl_escape | @regexp_id_escape; +@regexp_constant = @regexp_normal_char | @regexp_char_escape; +@regexp_lookahead = @regexp_positive_lookahead | @regexp_negative_lookahead; +@regexp_lookbehind = @regexp_positive_lookbehind | @regexp_negative_lookbehind; +@regexp_subpattern = @regexp_lookahead | @regexp_lookbehind; + +isGreedy (int id: @regexp_quantifier ref); +rangeQuantifierLowerBound (unique int id: @regexp_range ref, int lo: int ref); +rangeQuantifierUpperBound (unique int id: @regexp_range ref, int hi: int ref); +isCapture (unique int id: @regexp_group ref, int number: int ref); +isNamedCapture (unique int id: @regexp_group ref, string name: string ref); +isInverted (int id: @regexp_char_class ref); +regexpConstValue (unique int id: @regexp_constant ref, varchar(1) value: string ref); +charClassEscape (unique int id: @regexp_char_class_escape ref, varchar(1) value: string ref); +backref (unique int id: @regexp_backref ref, int value: int ref); +namedBackref (unique int id: @regexp_backref ref, string name: string ref); +unicodePropertyEscapeName (unique int id: @regexp_unicode_property_escape ref, string name: string ref); +unicodePropertyEscapeValue (unique int id: @regexp_unicode_property_escape ref, string value: string ref); + +// tokens +#keyset[toplevel, idx] +tokeninfo (unique int id: @token, + int kind: int ref, + int toplevel: @toplevel ref, + int idx: int ref, + varchar(900) value: string ref); + +case @token.kind of + 0 = @token_eof +| 1 = @token_null_literal +| 2 = @token_boolean_literal +| 3 = @token_numeric_literal +| 4 = @token_string_literal +| 5 = @token_regular_expression +| 6 = @token_identifier +| 7 = @token_keyword +| 8 = @token_punctuator; + +// associate comments with the token immediately following them (which may be EOF) +next_token (int comment: @comment ref, int token: @token ref); + +// JSON +#keyset[parent, idx] +json (unique int id: @json_value, + int kind: int ref, + int parent: @json_parent ref, + int idx: int ref, + varchar(900) tostring: string ref); + +json_literals (varchar(900) value: string ref, + varchar(900) raw: string ref, + unique int expr: @json_value ref); + +json_properties (int obj: @json_object ref, + varchar(900) property: string ref, + int value: @json_value ref); + +json_errors (unique int id: @json_parse_error, + varchar(900) message: string ref); + +case @json_value.kind of + 0 = @json_null +| 1 = @json_boolean +| 2 = @json_number +| 3 = @json_string +| 4 = @json_array +| 5 = @json_object; + +@json_parent = @json_object | @json_array | @file; + +// locations +@ast_node = @toplevel | @stmt | @expr | @property | @typeexpr; + +@locatable = @file + | @ast_node + | @comment + | @line + | @js_parse_error | @regexp_parse_error | @json_parse_error + | @regexpterm + | @json_value + | @token + | @cfg_node + | @jsdoc | @jsdoc_type_expr | @jsdoc_tag + | @yaml_node | @yaml_error + | @xmllocatable; + +hasLocation (unique int locatable: @locatable ref, + int location: @location ref); + +// CFG +entry_cfg_node (unique int id: @entry_node, int container: @stmt_container ref); +exit_cfg_node (unique int id: @exit_node, int container: @stmt_container ref); +guard_node (unique int id: @guard_node, int kind: int ref, int test: @expr ref); +case @guard_node.kind of + 0 = @falsy_guard +| 1 = @truthy_guard; +@condition_guard = @falsy_guard | @truthy_guard; + +@synthetic_cfg_node = @entry_node | @exit_node | @guard_node; +@cfg_node = @synthetic_cfg_node | @exprparent; + +successor (int pred: @cfg_node ref, int succ: @cfg_node ref); + +// JSDoc comments +jsdoc (unique int id: @jsdoc, varchar(900) description: string ref, int comment: @comment ref); +#keyset[parent, idx] +jsdoc_tags (unique int id: @jsdoc_tag, varchar(900) title: string ref, + int parent: @jsdoc ref, int idx: int ref, varchar(900) tostring: string ref); +jsdoc_tag_descriptions (unique int tag: @jsdoc_tag ref, varchar(900) text: string ref); +jsdoc_tag_names (unique int tag: @jsdoc_tag ref, varchar(900) text: string ref); + +#keyset[parent, idx] +jsdoc_type_exprs (unique int id: @jsdoc_type_expr, + int kind: int ref, + int parent: @jsdoc_type_expr_parent ref, + int idx: int ref, + varchar(900) tostring: string ref); +case @jsdoc_type_expr.kind of + 0 = @jsdoc_any_type_expr +| 1 = @jsdoc_null_type_expr +| 2 = @jsdoc_undefined_type_expr +| 3 = @jsdoc_unknown_type_expr +| 4 = @jsdoc_void_type_expr +| 5 = @jsdoc_named_type_expr +| 6 = @jsdoc_applied_type_expr +| 7 = @jsdoc_nullable_type_expr +| 8 = @jsdoc_non_nullable_type_expr +| 9 = @jsdoc_record_type_expr +| 10 = @jsdoc_array_type_expr +| 11 = @jsdoc_union_type_expr +| 12 = @jsdoc_function_type_expr +| 13 = @jsdoc_optional_type_expr +| 14 = @jsdoc_rest_type_expr +; + +#keyset[id, idx] +jsdoc_record_field_name (int id: @jsdoc_record_type_expr ref, int idx: int ref, varchar(900) name: string ref); +jsdoc_prefix_qualifier (int id: @jsdoc_type_expr ref); +jsdoc_has_new_parameter (int fn: @jsdoc_function_type_expr ref); + +@jsdoc_type_expr_parent = @jsdoc_type_expr | @jsdoc_tag; + +jsdoc_errors (unique int id: @jsdoc_error, int tag: @jsdoc_tag ref, varchar(900) message: string ref, varchar(900) tostring: string ref); + +// YAML +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + varchar(900) tag: string ref, + varchar(900) tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + varchar(900) anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + varchar(900) target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + varchar(900) value: string ref); + +yaml_errors (unique int id: @yaml_error, + varchar(900) message: string ref); + +/* XML Files */ + +xmlEncoding( + unique int id: @file ref, + varchar(900) encoding: string ref +); + +xmlDTDs( + unique int id: @xmldtd, + varchar(900) root: string ref, + varchar(900) publicId: string ref, + varchar(900) systemId: string ref, + int fileid: @file ref +); + +xmlElements( + unique int id: @xmlelement, + varchar(900) name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref +); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + varchar(900) name: string ref, + varchar(3600) value: string ref, + int idx: int ref, + int fileid: @file ref +); + +xmlNs( + int id: @xmlnamespace, + varchar(900) prefixName: string ref, + varchar(900) URI: string ref, + int fileid: @file ref +); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref +); + +xmlComments( + unique int id: @xmlcomment, + varchar(3600) text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref +); + +xmlChars( + unique int id: @xmlcharacters, + varchar(3600) text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref +); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref +); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +@dataflownode = @expr | @functiondeclstmt | @classdeclstmt | @namespacedeclaration | @enumdeclaration | @property; + +@optionalchainable = @callexpr | @propaccess; + +isOptionalChaining(int id: @optionalchainable ref); + +/* Last updated 2018/10/23. */ diff --git a/javascript/upgrades/7eead88269b20e9d61f61cd2291affb737dc831e/upgrade.properties b/javascript/upgrades/7eead88269b20e9d61f61cd2291affb737dc831e/upgrade.properties new file mode 100644 index 00000000000..22cc684935f --- /dev/null +++ b/javascript/upgrades/7eead88269b20e9d61f61cd2291affb737dc831e/upgrade.properties @@ -0,0 +1,4 @@ +description: add support for Closure modules +compatibility: backwards + +isES2015Module.rel: run isES2015Module.qlo diff --git a/python/ql/src/analysis/AlertSuppression.ql b/python/ql/src/analysis/AlertSuppression.ql index 56622f005ca..9a8338e8f3d 100644 --- a/python/ql/src/analysis/AlertSuppression.ql +++ b/python/ql/src/analysis/AlertSuppression.ql @@ -106,7 +106,7 @@ class SuppressionScope extends @py_comment { * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo(string filepath, int startline, int startcolumn, int endline, int endcolumn) { this.(SuppressionComment).covers(filepath, startline, startcolumn, endline, endcolumn) diff --git a/python/ql/src/external/CodeDuplication.qll b/python/ql/src/external/CodeDuplication.qll index 7db04663ae0..907286ea9c8 100644 --- a/python/ql/src/external/CodeDuplication.qll +++ b/python/ql/src/external/CodeDuplication.qll @@ -12,7 +12,7 @@ string relativePath(File file) { * Holds if the `index`-th token of block `copy` is in file `file`, spanning * column `sc` of line `sl` to column `ec` of line `el`. * - * For more information, see [LGTM locations](https://lgtm.com/help/ql/locations). + * For more information, see [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ pragma[noinline, nomagic] private predicate tokenLocation(File file, int sl, int sc, int ec, int el, Copy copy, int index) { @@ -82,7 +82,7 @@ class Copy extends @duplication_or_similarity * The location spans column `startcolumn` of line `startline` to * column `endcolumn` of line `endline` in file `filepath`. * For more information, see - * [LGTM locations](https://lgtm.com/help/ql/locations). + * [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ predicate hasLocationInfo(string filepath, int startline, int startcolumn, int endline, int endcolumn) { sourceFile().getName() = filepath and diff --git a/python/ql/src/external/DefectFilter.qll b/python/ql/src/external/DefectFilter.qll index 9504cd08554..e34385acfb8 100644 --- a/python/ql/src/external/DefectFilter.qll +++ b/python/ql/src/external/DefectFilter.qll @@ -8,7 +8,7 @@ import semmle.python.Files * column `startcol` of line `startline` to column `endcol` of line `endline` * in file `filepath`. * - * For more information, see [LGTM locations](https://lgtm.com/help/ql/locations). + * For more information, see [Locations](https://help.semmle.com/QL/learn-ql/ql/locations.html). */ external predicate defectResults(int id, string queryPath, string filepath, int startline, int startcol, int endline, int endcol, string message); diff --git a/python/ql/src/semmle/python/Files.qll b/python/ql/src/semmle/python/Files.qll index b52809db7a7..3c493c05d71 100644 --- a/python/ql/src/semmle/python/Files.qll +++ b/python/ql/src/semmle/python/Files.qll @@ -321,7 +321,7 @@ abstract class Container extends @container { /** * Gets a URL representing the location of this container. * - * For more information see https://lgtm.com/help/ql/locations#providing-urls. + * For more information see [Providing URLs](https://help.semmle.com/QL/learn-ql/ql/locations.html#providing-urls). */ abstract string getURL(); diff --git a/python/ql/src/semmle/python/pointsto/PointsTo.qll b/python/ql/src/semmle/python/pointsto/PointsTo.qll index 339de512084..bc3da9ddaa3 100644 --- a/python/ql/src/semmle/python/pointsto/PointsTo.qll +++ b/python/ql/src/semmle/python/pointsto/PointsTo.qll @@ -610,7 +610,6 @@ module PointsTo { points_to(obj_node, context, x, icls, _) and (not x instanceof ModuleObject and not x instanceof ClassObject) and not icls.isBuiltin() and - Types::class_has_attribute_bool(icls, name) = false and value = unknownValue() and cls = theUnknownType() and origin = f ) ) @@ -2117,10 +2116,15 @@ module PointsTo { private boolean truth_test_evaluates_boolean(ControlFlowNode expr, ControlFlowNode use, PointsToContext context, Object val, ClassObject cls, ControlFlowNode origin) { contains_interesting_expression_within_test(expr, use) and points_to(use, context, val, cls, origin) and + expr = use and ( - expr = use and val.booleanValue() = result + val.booleanValue() = result or - expr = use and Types::instances_always_true(cls) and result = true + Types::instances_always_true(cls) and result = true + or + val.maybe() and result = true + or + val.maybe() and result = false ) } diff --git a/python/ql/test/library-tests/PointsTo/guarded/PointsTo.expected b/python/ql/test/library-tests/PointsTo/guarded/PointsTo.expected index 780529a795d..69d04f16124 100644 --- a/python/ql/test/library-tests/PointsTo/guarded/PointsTo.expected +++ b/python/ql/test/library-tests/PointsTo/guarded/PointsTo.expected @@ -61,6 +61,7 @@ | test.py | 408 | ControlFlowNode for x | int 1 | 404 | | test.py | 420 | ControlFlowNode for Attribute | NoneType None | 418 | | test.py | 427 | ControlFlowNode for Attribute | NoneType None | 418 | +| test.py | 435 | ControlFlowNode for y | int 1 | 433 | | type_test.py | 5 | ControlFlowNode for d | Dict | 2 | | type_test.py | 14 | ControlFlowNode for x | int 0 | 11 | | type_test.py | 16 | ControlFlowNode for x | float 1.0 | 11 | diff --git a/python/ql/test/library-tests/PointsTo/guarded/PointsToWithType.expected b/python/ql/test/library-tests/PointsTo/guarded/PointsToWithType.expected index bd9e52a7664..542f7ca864c 100644 --- a/python/ql/test/library-tests/PointsTo/guarded/PointsToWithType.expected +++ b/python/ql/test/library-tests/PointsTo/guarded/PointsToWithType.expected @@ -61,6 +61,7 @@ | test.py | 408 | ControlFlowNode for x | int 1 | builtin-class int | 404 | | test.py | 420 | ControlFlowNode for Attribute | NoneType None | builtin-class NoneType | 418 | | test.py | 427 | ControlFlowNode for Attribute | NoneType None | builtin-class NoneType | 418 | +| test.py | 435 | ControlFlowNode for y | int 1 | builtin-class int | 433 | | type_test.py | 5 | ControlFlowNode for d | Dict | builtin-class dict | 2 | | type_test.py | 14 | ControlFlowNode for x | int 0 | builtin-class int | 11 | | type_test.py | 16 | ControlFlowNode for x | float 1.0 | builtin-class float | 11 | diff --git a/python/ql/test/library-tests/PointsTo/guarded/test.py b/python/ql/test/library-tests/PointsTo/guarded/test.py index ced4edc0b6c..cf5dae58eee 100644 --- a/python/ql/test/library-tests/PointsTo/guarded/test.py +++ b/python/ql/test/library-tests/PointsTo/guarded/test.py @@ -426,3 +426,10 @@ class C(object): else: use(self.x) return lambda : use(self.x) + + +def test_on_unknown_attr(): + e = E() + y = 1 + if e.attr: + use(y) diff --git a/python/ql/test/library-tests/PointsTo/new/PointsToUnknown.expected b/python/ql/test/library-tests/PointsTo/new/PointsToUnknown.expected index 0529792ac07..90c17665977 100644 --- a/python/ql/test/library-tests/PointsTo/new/PointsToUnknown.expected +++ b/python/ql/test/library-tests/PointsTo/new/PointsToUnknown.expected @@ -106,6 +106,7 @@ | b_condition.py:88 | ControlFlowNode for y | 87 | | b_condition.py:90 | ControlFlowNode for x | 87 | | b_condition.py:90 | ControlFlowNode for y | 87 | +| b_condition.py:92 | ControlFlowNode for x | 87 | | b_condition.py:93 | ControlFlowNode for use | 93 | | b_condition.py:93 | ControlFlowNode for use() | 93 | | b_condition.py:93 | ControlFlowNode for y | 87 | @@ -115,6 +116,7 @@ | b_condition.py:96 | ControlFlowNode for y | 87 | | b_condition.py:97 | ControlFlowNode for use | 97 | | b_condition.py:97 | ControlFlowNode for use() | 97 | +| b_condition.py:97 | ControlFlowNode for x | 87 | | b_condition.py:99 | ControlFlowNode for use | 99 | | b_condition.py:99 | ControlFlowNode for use() | 99 | | b_condition.py:102 | ControlFlowNode for a | 101 | @@ -225,3 +227,5 @@ | r_regressions.py:52 | ControlFlowNode for msg | 51 | | r_regressions.py:64 | ControlFlowNode for do_validation | 64 | | r_regressions.py:64 | ControlFlowNode for do_validation() | 64 | +| r_regressions.py:90 | ControlFlowNode for Attribute | 90 | +| r_regressions.py:90 | ControlFlowNode for Attribute() | 90 | diff --git a/python/ql/test/query-tests/analysis/pointsto/CallGraphEfficiency.expected b/python/ql/test/query-tests/analysis/pointsto/CallGraphEfficiency.expected index a3d7def63d2..c558a04665f 100644 --- a/python/ql/test/query-tests/analysis/pointsto/CallGraphEfficiency.expected +++ b/python/ql/test/query-tests/analysis/pointsto/CallGraphEfficiency.expected @@ -1,2 +1,2 @@ -| 0 | 29 | 29 | 100.0 | +| 0 | 31 | 31 | 100.0 | | 1 | 4 | 40 | 10.0 | diff --git a/python/ql/test/query-tests/analysis/pointsto/CallGraphMarginalEfficiency.expected b/python/ql/test/query-tests/analysis/pointsto/CallGraphMarginalEfficiency.expected index 0d3950e7a1e..d22bc9bb481 100644 --- a/python/ql/test/query-tests/analysis/pointsto/CallGraphMarginalEfficiency.expected +++ b/python/ql/test/query-tests/analysis/pointsto/CallGraphMarginalEfficiency.expected @@ -1,2 +1,2 @@ -| 0 | 29 | 29 | 100.0 | +| 0 | 31 | 31 | 100.0 | | 1 | 3 | 40 | 7.5 |