From 4c4920c3a97a08b4d969fb813a0cc08dd8abe100 Mon Sep 17 00:00:00 2001 From: Max Schaefer Date: Tue, 6 Nov 2018 08:25:02 +0000 Subject: [PATCH] JavaScript: Open-source extractor. --- javascript/extractor/.classpath | 20 + javascript/extractor/.gitignore | 2 + javascript/extractor/.project | 17 + .../org.eclipse.core.resources.prefs | 3 + javascript/extractor/README.md | 9 + javascript/extractor/lib/esregex/.gitignore | 1 + javascript/extractor/lib/esregex/README.md | 4 + javascript/extractor/lib/esregex/package.json | 13 + .../extractor/lib/esregex/regexparser.js | 477 + .../extractor/lib/esregex/tests/runtests.js | 638 + .../lib/external/doctrine/.gitignore | 3 + .../extractor/lib/external/doctrine/.scripted | 6 + .../lib/external/doctrine/.travis.yml | 4 + .../lib/external/doctrine/CONTRIBUTING.md | 5 + .../lib/external/doctrine/LICENSE.BSD | 19 + .../doctrine/LICENSE.closure-compiler | 202 + .../lib/external/doctrine/LICENSE.esprima | 19 + .../extractor/lib/external/doctrine/README.md | 173 + .../lib/external/doctrine/doctrine.js | 2146 ++++ .../lib/external/doctrine/eslint.json | 22 + .../lib/external/doctrine/package.json | 34 + .../lib/external/doctrine/test/parse.js | 1888 +++ .../lib/external/doctrine/test/strict.js | 165 + .../lib/external/doctrine/test/stringify.js | 410 + .../lib/external/doctrine/test/test.html | 31 + .../lib/external/doctrine/test/unwrap.js | 57 + .../extractor/lib/typescript/.gitignore | 2 + javascript/extractor/lib/typescript/.yarnrc | 1 + .../extractor/lib/typescript/package.json | 20 + .../extractor/lib/typescript/rollup.config.js | 51 + .../lib/typescript/src/ast_extractor.ts | 329 + .../extractor/lib/typescript/src/common.ts | 28 + .../extractor/lib/typescript/src/main.ts | 443 + .../lib/typescript/src/type_table.ts | 1178 ++ .../lib/typescript/src/typescript.d.ts | 2 + .../lib/typescript/src/typescript.js | 8 + .../extractor/lib/typescript/tsconfig.json | 16 + .../extractor/lib/typescript/tslint.json | 64 + javascript/extractor/lib/typescript/yarn.lock | 518 + .../extractor/lib/typescript/yarnrc-build | 1 + .../extractor/parser-tests/babylon/README.md | 3 + .../asi-failure-computed/actual.js | 4 + .../asi-failure-computed/expected.error | 1 + .../asi-failure-generator/actual.js | 4 + .../asi-failure-generator/expected.error | 1 + .../class-properties/asi-success/actual.js | 9 + .../class-properties/asi-success/expected.ast | 275 + .../function-sent/inside-function/actual.js | 3 + .../inside-function/expected.error | 1 + .../function-sent/inside-generator/actual.js | 3 + .../inside-generator/expected.ast | 131 + .../function-sent/invalid-property/actual.js | 3 + .../invalid-property/expected.error | 1 + .../experimental/uncategorised/10/actual.js | 1 + .../uncategorised/10/expected.ast | 169 + .../experimental/uncategorised/11/actual.js | 1 + .../uncategorised/11/expected.ast | 171 + .../experimental/uncategorised/12/actual.js | 1 + .../uncategorised/12/expected.ast | 119 + .../experimental/uncategorised/13/actual.js | 1 + .../uncategorised/13/expected.ast | 167 + .../experimental/uncategorised/14/actual.js | 1 + .../experimental/uncategorised/33/actual.js | 1 + .../uncategorised/33/expected.ast | 99 + .../experimental/uncategorised/34/actual.js | 1 + .../uncategorised/34/expected.ast | 148 + .../experimental/uncategorised/35/actual.js | 1 + .../uncategorised/35/expected.ast | 157 + .../experimental/uncategorised/36/actual.js | 1 + .../uncategorised/36/expected.ast | 174 + .../experimental/uncategorised/37/actual.js | 1 + .../uncategorised/37/expected.ast | 157 + .../experimental/uncategorised/38/actual.js | 1 + .../uncategorised/38/expected.ast | 188 + .../experimental/uncategorised/39/actual.js | 1 + .../uncategorised/39/expected.ast | 247 + .../experimental/uncategorised/40/actual.js | 1 + .../uncategorised/40/expected.ast | 179 + .../experimental/uncategorised/41/actual.js | 1 + .../uncategorised/41/expected.error | 1 + .../experimental/uncategorised/42/actual.js | 1 + .../uncategorised/42/expected.error | 2 + .../experimental/uncategorised/43/actual.js | 1 + .../uncategorised/43/expected.ast | 116 + .../experimental/uncategorised/44/actual.js | 1 + .../uncategorised/44/expected.ast | 101 + .../experimental/uncategorised/45/actual.js | 1 + .../uncategorised/45/expected.ast | 101 + .../experimental/uncategorised/46/actual.js | 1 + .../uncategorised/46/expected.ast | 116 + .../experimental/uncategorised/49/actual.js | 1 + .../uncategorised/49/expected.ast | 167 + .../experimental/uncategorised/50/actual.js | 1 + .../uncategorised/50/expected.ast | 129 + .../experimental/uncategorised/51/actual.js | 1 + .../uncategorised/51/expected.ast | 129 + .../experimental/uncategorised/52/actual.js | 1 + .../uncategorised/52/expected.ast | 82 + .../experimental/uncategorised/53/actual.js | 1 + .../uncategorised/53/expected.ast | 82 + .../experimental/uncategorised/54/actual.js | 1 + .../uncategorised/54/expected.ast | 82 + .../experimental/uncategorised/62/actual.js | 3 + .../uncategorised/62/expected.ast | 167 + .../experimental/uncategorised/9/actual.js | 1 + .../experimental/uncategorised/9/expected.ast | 119 + .../parser-tests/babylon/generate-tests.patch | 110 + .../object-rest-spread/actual.js | 3 + .../object-rest-spread/expected.ast | 205 + .../parser-tests/jcorn-jsx/README.md | 3 + .../jcorn-jsx/generate-tests.patch | 61 + .../parser-tests/jcorn-jsx/test0.fail | 1 + .../extractor/parser-tests/jcorn-jsx/test0.js | 1 + .../parser-tests/jcorn-jsx/test1.fail | 1 + .../extractor/parser-tests/jcorn-jsx/test1.js | 1 + .../parser-tests/jcorn-jsx/test10.ast | 70 + .../parser-tests/jcorn-jsx/test10.js | 2 + .../parser-tests/jcorn-jsx/test11.ast | 100 + .../parser-tests/jcorn-jsx/test11.js | 1 + .../parser-tests/jcorn-jsx/test12.ast | 167 + .../parser-tests/jcorn-jsx/test12.js | 5 + .../parser-tests/jcorn-jsx/test13.ast | 248 + .../parser-tests/jcorn-jsx/test13.js | 1 + .../parser-tests/jcorn-jsx/test14.ast | 131 + .../parser-tests/jcorn-jsx/test14.js | 1 + .../parser-tests/jcorn-jsx/test15.ast | 131 + .../parser-tests/jcorn-jsx/test15.js | 1 + .../parser-tests/jcorn-jsx/test16.ast | 118 + .../parser-tests/jcorn-jsx/test16.js | 1 + .../parser-tests/jcorn-jsx/test17.ast | 168 + .../parser-tests/jcorn-jsx/test17.js | 1 + .../parser-tests/jcorn-jsx/test18.ast | 281 + .../parser-tests/jcorn-jsx/test18.js | 1 + .../parser-tests/jcorn-jsx/test19.ast | 162 + .../parser-tests/jcorn-jsx/test19.js | 1 + .../parser-tests/jcorn-jsx/test2.ast | 108 + .../extractor/parser-tests/jcorn-jsx/test2.js | 1 + .../parser-tests/jcorn-jsx/test2.options.json | 3 + .../parser-tests/jcorn-jsx/test20.ast | 224 + .../parser-tests/jcorn-jsx/test20.js | 1 + .../parser-tests/jcorn-jsx/test21.ast | 102 + .../parser-tests/jcorn-jsx/test21.js | 1 + .../parser-tests/jcorn-jsx/test22.ast | 102 + .../parser-tests/jcorn-jsx/test22.js | 1 + .../parser-tests/jcorn-jsx/test23.ast | 150 + .../parser-tests/jcorn-jsx/test23.js | 1 + .../parser-tests/jcorn-jsx/test24.ast | 228 + .../parser-tests/jcorn-jsx/test24.js | 1 + .../parser-tests/jcorn-jsx/test25.ast | 498 + .../parser-tests/jcorn-jsx/test25.js | 1 + .../parser-tests/jcorn-jsx/test26.ast | 214 + .../parser-tests/jcorn-jsx/test26.js | 1 + .../parser-tests/jcorn-jsx/test27.ast | 150 + .../parser-tests/jcorn-jsx/test27.js | 1 + .../parser-tests/jcorn-jsx/test28.ast | 140 + .../parser-tests/jcorn-jsx/test28.js | 1 + .../parser-tests/jcorn-jsx/test29.ast | 90 + .../parser-tests/jcorn-jsx/test29.js | 1 + .../parser-tests/jcorn-jsx/test3.fail | 1 + .../extractor/parser-tests/jcorn-jsx/test3.js | 1 + .../parser-tests/jcorn-jsx/test3.options.json | 3 + .../parser-tests/jcorn-jsx/test30.ast | 139 + .../parser-tests/jcorn-jsx/test30.js | 1 + .../parser-tests/jcorn-jsx/test31.ast | 113 + .../parser-tests/jcorn-jsx/test31.js | 1 + .../parser-tests/jcorn-jsx/test32.ast | 87 + .../parser-tests/jcorn-jsx/test32.js | 3 + .../parser-tests/jcorn-jsx/test4.fail | 1 + .../extractor/parser-tests/jcorn-jsx/test4.js | 1 + .../parser-tests/jcorn-jsx/test4.options.json | 3 + .../parser-tests/jcorn-jsx/test5.ast | 1 + .../extractor/parser-tests/jcorn-jsx/test5.js | 1 + .../parser-tests/jcorn-jsx/test6.ast | 70 + .../extractor/parser-tests/jcorn-jsx/test6.js | 1 + .../parser-tests/jcorn-jsx/test7.ast | 165 + .../extractor/parser-tests/jcorn-jsx/test7.js | 1 + .../parser-tests/jcorn-jsx/test8.ast | 377 + .../extractor/parser-tests/jcorn-jsx/test8.js | 1 + .../parser-tests/jcorn-jsx/test9.ast | 210 + .../extractor/parser-tests/jcorn-jsx/test9.js | 1 + .../parser-tests/robustness/letLookahead.js | 505 + .../src/com/semmle/jcorn/CustomParser.java | 323 + .../src/com/semmle/jcorn/ESNextParser.java | 485 + .../src/com/semmle/jcorn/Identifiers.java | 117 + .../src/com/semmle/jcorn/Locutil.java | 27 + .../src/com/semmle/jcorn/Options.java | 238 + .../src/com/semmle/jcorn/Parser.java | 3547 ++++++ .../extractor/src/com/semmle/jcorn/README.md | 1 + .../src/com/semmle/jcorn/SyntaxError.java | 18 + .../src/com/semmle/jcorn/TokenType.java | 279 + .../src/com/semmle/jcorn/Whitespace.java | 18 + .../src/com/semmle/jcorn/flow/FlowParser.java | 1161 ++ .../src/com/semmle/jcorn/jsx/JSXOptions.java | 24 + .../src/com/semmle/jcorn/jsx/JSXParser.java | 457 + .../com/semmle/jcorn/jsx/XHTMLEntities.java | 263 + .../com/semmle/js/ast/ABinaryExpression.java | 29 + .../src/com/semmle/js/ast/AClass.java | 81 + .../src/com/semmle/js/ast/AFunction.java | 144 + .../semmle/js/ast/AFunctionExpression.java | 65 + .../src/com/semmle/js/ast/AST2JSON.java | 853 ++ .../com/semmle/js/ast/ArrayExpression.java | 27 + .../src/com/semmle/js/ast/ArrayPattern.java | 78 + .../js/ast/ArrowFunctionExpression.java | 30 + .../semmle/js/ast/AssignmentExpression.java | 15 + .../com/semmle/js/ast/AssignmentPattern.java | 21 + .../com/semmle/js/ast/AwaitExpression.java | 20 + .../com/semmle/js/ast/BinaryExpression.java | 15 + .../src/com/semmle/js/ast/BindExpression.java | 28 + .../src/com/semmle/js/ast/BlockStatement.java | 27 + .../src/com/semmle/js/ast/BreakStatement.java | 15 + .../src/com/semmle/js/ast/CallExpression.java | 19 + .../src/com/semmle/js/ast/CatchClause.java | 50 + .../src/com/semmle/js/ast/ClassBody.java | 36 + .../com/semmle/js/ast/ClassDeclaration.java | 66 + .../com/semmle/js/ast/ClassExpression.java | 54 + .../src/com/semmle/js/ast/Comment.java | 78 + .../com/semmle/js/ast/ComprehensionBlock.java | 43 + .../js/ast/ComprehensionExpression.java | 61 + .../semmle/js/ast/ConditionalExpression.java | 42 + .../com/semmle/js/ast/ContinueStatement.java | 15 + .../com/semmle/js/ast/DebuggerStatement.java | 15 + .../com/semmle/js/ast/DeclarationFlags.java | 128 + .../src/com/semmle/js/ast/Decorator.java | 19 + .../src/com/semmle/js/ast/DefaultVisitor.java | 737 ++ .../semmle/js/ast/DestructuringPattern.java | 7 + .../com/semmle/js/ast/DoWhileStatement.java | 30 + .../src/com/semmle/js/ast/DynamicImport.java | 19 + .../src/com/semmle/js/ast/EmptyStatement.java | 15 + .../semmle/js/ast/EnhancedForStatement.java | 58 + .../semmle/js/ast/ExportAllDeclaration.java | 26 + .../com/semmle/js/ast/ExportDeclaration.java | 9 + .../js/ast/ExportDefaultDeclaration.java | 36 + .../semmle/js/ast/ExportDefaultSpecifier.java | 16 + .../semmle/js/ast/ExportNamedDeclaration.java | 50 + .../js/ast/ExportNamespaceSpecifier.java | 16 + .../com/semmle/js/ast/ExportSpecifier.java | 32 + .../src/com/semmle/js/ast/Expression.java | 31 + .../semmle/js/ast/ExpressionStatement.java | 25 + .../com/semmle/js/ast/FieldDefinition.java | 53 + .../src/com/semmle/js/ast/ForInStatement.java | 29 + .../src/com/semmle/js/ast/ForOfStatement.java | 30 + .../src/com/semmle/js/ast/ForStatement.java | 79 + .../semmle/js/ast/FunctionDeclaration.java | 87 + .../com/semmle/js/ast/FunctionExpression.java | 36 + .../src/com/semmle/js/ast/IFunction.java | 94 + .../src/com/semmle/js/ast/INode.java | 16 + .../src/com/semmle/js/ast/IPattern.java | 8 + .../src/com/semmle/js/ast/ISourceElement.java | 11 + .../semmle/js/ast/IStatementContainer.java | 7 + .../src/com/semmle/js/ast/Identifier.java | 45 + .../src/com/semmle/js/ast/IfStatement.java | 49 + .../com/semmle/js/ast/ImportDeclaration.java | 42 + .../semmle/js/ast/ImportDefaultSpecifier.java | 19 + .../js/ast/ImportNamespaceSpecifier.java | 18 + .../com/semmle/js/ast/ImportSpecifier.java | 36 + .../com/semmle/js/ast/InvokeExpression.java | 73 + .../src/com/semmle/js/ast/JumpStatement.java | 27 + .../com/semmle/js/ast/LabeledStatement.java | 34 + .../src/com/semmle/js/ast/LetExpression.java | 30 + .../src/com/semmle/js/ast/LetStatement.java | 30 + .../src/com/semmle/js/ast/Literal.java | 96 + .../com/semmle/js/ast/LogicalExpression.java | 15 + .../extractor/src/com/semmle/js/ast/Loop.java | 26 + .../com/semmle/js/ast/MemberDefinition.java | 131 + .../com/semmle/js/ast/MemberExpression.java | 57 + .../src/com/semmle/js/ast/MetaProperty.java | 32 + .../com/semmle/js/ast/MethodDefinition.java | 65 + .../src/com/semmle/js/ast/NewExpression.java | 19 + .../extractor/src/com/semmle/js/ast/Node.java | 17 + .../src/com/semmle/js/ast/NodeCopier.java | 707 ++ .../com/semmle/js/ast/ObjectExpression.java | 27 + .../src/com/semmle/js/ast/ObjectPattern.java | 62 + .../js/ast/ParenthesizedExpression.java | 30 + .../src/com/semmle/js/ast/Position.java | 81 + .../src/com/semmle/js/ast/Program.java | 44 + .../src/com/semmle/js/ast/Property.java | 137 + .../src/com/semmle/js/ast/RestElement.java | 29 + .../com/semmle/js/ast/ReturnStatement.java | 32 + .../com/semmle/js/ast/SequenceExpression.java | 27 + .../src/com/semmle/js/ast/SourceElement.java | 21 + .../src/com/semmle/js/ast/SourceLocation.java | 96 + .../src/com/semmle/js/ast/SpreadElement.java | 25 + .../src/com/semmle/js/ast/Statement.java | 10 + .../src/com/semmle/js/ast/Super.java | 16 + .../src/com/semmle/js/ast/SwitchCase.java | 50 + .../com/semmle/js/ast/SwitchStatement.java | 36 + .../js/ast/TaggedTemplateExpression.java | 34 + .../com/semmle/js/ast/TemplateElement.java | 43 + .../com/semmle/js/ast/TemplateLiteral.java | 82 + .../src/com/semmle/js/ast/ThisExpression.java | 15 + .../src/com/semmle/js/ast/ThrowStatement.java | 25 + .../src/com/semmle/js/ast/Token.java | 75 + .../src/com/semmle/js/ast/TryStatement.java | 83 + .../com/semmle/js/ast/UnaryExpression.java | 46 + .../com/semmle/js/ast/UpdateExpression.java | 44 + .../semmle/js/ast/VariableDeclaration.java | 54 + .../com/semmle/js/ast/VariableDeclarator.java | 69 + .../src/com/semmle/js/ast/Visitor.java | 177 + .../src/com/semmle/js/ast/WhileStatement.java | 30 + .../src/com/semmle/js/ast/WithStatement.java | 34 + .../com/semmle/js/ast/YieldExpression.java | 34 + .../com/semmle/js/ast/jsdoc/AllLiteral.java | 22 + .../com/semmle/js/ast/jsdoc/ArrayType.java | 24 + .../com/semmle/js/ast/jsdoc/CompoundType.java | 34 + .../com/semmle/js/ast/jsdoc/FieldType.java | 51 + .../com/semmle/js/ast/jsdoc/FunctionType.java | 102 + .../com/semmle/js/ast/jsdoc/JSDocComment.java | 47 + .../com/semmle/js/ast/jsdoc/JSDocElement.java | 18 + .../src/com/semmle/js/ast/jsdoc/JSDocTag.java | 86 + .../js/ast/jsdoc/JSDocTypeExpression.java | 27 + .../semmle/js/ast/jsdoc/NameExpression.java | 32 + .../semmle/js/ast/jsdoc/NonNullableType.java | 17 + .../com/semmle/js/ast/jsdoc/NullLiteral.java | 22 + .../semmle/js/ast/jsdoc/NullableLiteral.java | 22 + .../com/semmle/js/ast/jsdoc/NullableType.java | 17 + .../com/semmle/js/ast/jsdoc/OptionalType.java | 17 + .../semmle/js/ast/jsdoc/ParameterType.java | 41 + .../com/semmle/js/ast/jsdoc/RecordType.java | 42 + .../src/com/semmle/js/ast/jsdoc/RestType.java | 17 + .../semmle/js/ast/jsdoc/TypeApplication.java | 57 + .../js/ast/jsdoc/UnaryTypeConstructor.java | 45 + .../semmle/js/ast/jsdoc/UndefinedLiteral.java | 22 + .../com/semmle/js/ast/jsdoc/UnionType.java | 24 + .../src/com/semmle/js/ast/jsdoc/Visitor.java | 26 + .../com/semmle/js/ast/jsdoc/VoidLiteral.java | 22 + .../com/semmle/js/ast/jsdoc/package-info.java | 14 + .../src/com/semmle/js/ast/json/JSONArray.java | 42 + .../com/semmle/js/ast/json/JSONLiteral.java | 48 + .../com/semmle/js/ast/json/JSONObject.java | 45 + .../src/com/semmle/js/ast/json/JSONValue.java | 28 + .../src/com/semmle/js/ast/json/Visitor.java | 12 + .../com/semmle/js/ast/json/package-info.java | 13 + .../com/semmle/js/ast/jsx/IJSXAttribute.java | 6 + .../com/semmle/js/ast/jsx/IJSXExpression.java | 5 + .../src/com/semmle/js/ast/jsx/IJSXName.java | 7 + .../com/semmle/js/ast/jsx/JSXAttribute.java | 30 + .../semmle/js/ast/jsx/JSXBoundaryElement.java | 7 + .../semmle/js/ast/jsx/JSXClosingElement.java | 25 + .../src/com/semmle/js/ast/jsx/JSXElement.java | 38 + .../semmle/js/ast/jsx/JSXEmptyExpression.java | 16 + .../js/ast/jsx/JSXExpressionContainer.java | 24 + .../com/semmle/js/ast/jsx/JSXIdentifier.java | 21 + .../js/ast/jsx/JSXMemberExpression.java | 34 + .../semmle/js/ast/jsx/JSXNamespacedName.java | 33 + .../semmle/js/ast/jsx/JSXOpeningElement.java | 38 + .../semmle/js/ast/jsx/JSXSpreadAttribute.java | 24 + .../src/com/semmle/js/ast/package-info.java | 30 + .../semmle/js/ast/regexp/BackReference.java | 36 + .../src/com/semmle/js/ast/regexp/Caret.java | 17 + .../semmle/js/ast/regexp/CharacterClass.java | 38 + .../js/ast/regexp/CharacterClassEscape.java | 35 + .../js/ast/regexp/CharacterClassRange.java | 35 + .../com/semmle/js/ast/regexp/Constant.java | 17 + .../semmle/js/ast/regexp/ControlEscape.java | 18 + .../semmle/js/ast/regexp/ControlLetter.java | 18 + .../semmle/js/ast/regexp/DecimalEscape.java | 17 + .../com/semmle/js/ast/regexp/Disjunction.java | 29 + .../src/com/semmle/js/ast/regexp/Dollar.java | 17 + .../src/com/semmle/js/ast/regexp/Dot.java | 17 + .../src/com/semmle/js/ast/regexp/Error.java | 23 + .../semmle/js/ast/regexp/EscapeSequence.java | 31 + .../src/com/semmle/js/ast/regexp/Group.java | 61 + .../js/ast/regexp/HexEscapeSequence.java | 17 + .../semmle/js/ast/regexp/IdentityEscape.java | 18 + .../src/com/semmle/js/ast/regexp/Literal.java | 22 + .../js/ast/regexp/NamedBackReference.java | 36 + .../semmle/js/ast/regexp/NonWordBoundary.java | 17 + .../com/semmle/js/ast/regexp/OctalEscape.java | 17 + .../src/com/semmle/js/ast/regexp/Opt.java | 17 + .../src/com/semmle/js/ast/regexp/Plus.java | 17 + .../com/semmle/js/ast/regexp/Quantifier.java | 31 + .../src/com/semmle/js/ast/regexp/Range.java | 42 + .../com/semmle/js/ast/regexp/RegExpTerm.java | 28 + .../com/semmle/js/ast/regexp/Sequence.java | 29 + .../src/com/semmle/js/ast/regexp/Star.java | 17 + .../js/ast/regexp/UnicodeEscapeSequence.java | 17 + .../js/ast/regexp/UnicodePropertyEscape.java | 50 + .../src/com/semmle/js/ast/regexp/Visitor.java | 37 + .../semmle/js/ast/regexp/WordBoundary.java | 17 + .../regexp/ZeroWidthNegativeLookahead.java | 27 + .../regexp/ZeroWidthNegativeLookbehind.java | 27 + .../regexp/ZeroWidthPositiveLookahead.java | 27 + .../regexp/ZeroWidthPositiveLookbehind.java | 27 + .../semmle/js/ast/regexp/package-info.java | 14 + .../com/semmle/js/extractor/ASTExtractor.java | 1878 +++ .../com/semmle/js/extractor/AutoBuild.java | 572 + .../com/semmle/js/extractor/CFGExtractor.java | 1918 +++ .../semmle/js/extractor/DeclaredNames.java | 41 + .../com/semmle/js/extractor/ExprKinds.java | 273 + .../semmle/js/extractor/ExtractorConfig.java | 376 + .../semmle/js/extractor/ExtractorState.java | 33 + .../semmle/js/extractor/FileExtractor.java | 470 + .../semmle/js/extractor/HTMLExtractor.java | 317 + .../com/semmle/js/extractor/IExtractor.java | 15 + .../semmle/js/extractor/JSDocExtractor.java | 251 + .../com/semmle/js/extractor/JSExtractor.java | 139 + .../semmle/js/extractor/JSONExtractor.java | 112 + .../src/com/semmle/js/extractor/JumpType.java | 8 + .../semmle/js/extractor/LexicalExtractor.java | 176 + .../src/com/semmle/js/extractor/LoCInfo.java | 27 + .../semmle/js/extractor/LocationManager.java | 125 + .../src/com/semmle/js/extractor/Main.java | 450 + .../semmle/js/extractor/NodeJSDetector.java | 185 + .../semmle/js/extractor/RegExpExtractor.java | 372 + .../com/semmle/js/extractor/ScopeManager.java | 744 ++ .../semmle/js/extractor/ScriptExtractor.java | 75 + .../com/semmle/js/extractor/StmtKinds.java | 85 + .../js/extractor/SyntacticContextManager.java | 144 + .../semmle/js/extractor/TextualExtractor.java | 141 + .../semmle/js/extractor/TypeExprKinds.java | 234 + .../js/extractor/TypeScriptExtractor.java | 35 + .../semmle/js/extractor/TypeScriptMode.java | 24 + .../semmle/js/extractor/YAMLExtractor.java | 246 + .../js/extractor/test/ASTMatchingTests.java | 93 + .../semmle/js/extractor/test/AllTests.java | 23 + .../js/extractor/test/AutoBuildTests.java | 428 + .../extractor/test/ClassPropertiesTests.java | 46 + .../js/extractor/test/DecoratorTests.java | 71 + .../extractor/test/ExportExtensionsTests.java | 43 + .../js/extractor/test/FunctionSentTests.java | 26 + .../semmle/js/extractor/test/JSXTests.java | 95 + .../extractor/test/NodeJSDetectorTests.java | 198 + .../extractor/test/NumericSeparatorTests.java | 46 + .../extractor/test/ObjectRestSpreadTests.java | 60 + .../js/extractor/test/RobustnessTests.java | 21 + .../semmle/js/extractor/test/TrapTests.java | 168 + .../trapcache/CachingTrapWriter.java | 80 + .../extractor/trapcache/DefaultTrapCache.java | 159 + .../extractor/trapcache/DummyTrapCache.java | 16 + .../js/extractor/trapcache/ITrapCache.java | 23 + .../src/com/semmle/js/parser/JSDocParser.java | 126 + .../src/com/semmle/js/parser/JSONParser.java | 402 + .../com/semmle/js/parser/JSObjectDecoder.java | 196 + .../src/com/semmle/js/parser/JSParser.java | 79 + .../com/semmle/js/parser/JcornWrapper.java | 57 + .../src/com/semmle/js/parser/ParseError.java | 52 + .../com/semmle/js/parser/ParsedProject.java | 30 + .../com/semmle/js/parser/RegExpParser.java | 150 + .../com/semmle/js/parser/ScriptLoader.java | 152 + .../js/parser/TypeScriptASTConverter.java | 2355 ++++ .../semmle/js/parser/TypeScriptParser.java | 413 + .../src/com/semmle/ts/ast/ArrayTypeExpr.java | 26 + .../semmle/ts/ast/ConditionalTypeExpr.java | 44 + .../src/com/semmle/ts/ast/DecoratorList.java | 26 + .../com/semmle/ts/ast/EnumDeclaration.java | 63 + .../src/com/semmle/ts/ast/EnumMember.java | 46 + .../ts/ast/ExportAsNamespaceDeclaration.java | 28 + .../semmle/ts/ast/ExportWholeDeclaration.java | 24 + .../ts/ast/ExpressionWithTypeArguments.java | 42 + .../ts/ast/ExternalModuleDeclaration.java | 35 + .../ts/ast/ExternalModuleReference.java | 24 + .../com/semmle/ts/ast/FunctionTypeExpr.java | 29 + .../com/semmle/ts/ast/GenericTypeExpr.java | 33 + .../ts/ast/GlobalAugmentationDeclaration.java | 28 + .../com/semmle/ts/ast/INodeWithSymbol.java | 17 + .../com/semmle/ts/ast/ITypeExpression.java | 15 + .../src/com/semmle/ts/ast/ITypedAstNode.java | 17 + .../src/com/semmle/ts/ast/ImportTypeExpr.java | 26 + .../semmle/ts/ast/ImportWholeDeclaration.java | 34 + .../semmle/ts/ast/IndexedAccessTypeExpr.java | 31 + .../src/com/semmle/ts/ast/InferTypeExpr.java | 25 + .../semmle/ts/ast/InterfaceDeclaration.java | 65 + .../com/semmle/ts/ast/InterfaceTypeExpr.java | 28 + .../semmle/ts/ast/IntersectionTypeExpr.java | 29 + .../src/com/semmle/ts/ast/IsTypeExpr.java | 32 + .../src/com/semmle/ts/ast/KeyofTypeExpr.java | 25 + .../com/semmle/ts/ast/KeywordTypeExpr.java | 32 + .../src/com/semmle/ts/ast/MappedTypeExpr.java | 35 + .../semmle/ts/ast/NamespaceDeclaration.java | 62 + .../com/semmle/ts/ast/NonNullAssertion.java | 26 + .../com/semmle/ts/ast/OptionalTypeExpr.java | 26 + .../semmle/ts/ast/ParenthesizedTypeExpr.java | 25 + .../src/com/semmle/ts/ast/RestTypeExpr.java | 26 + .../src/com/semmle/ts/ast/TupleTypeExpr.java | 27 + .../semmle/ts/ast/TypeAliasDeclaration.java | 53 + .../src/com/semmle/ts/ast/TypeAssertion.java | 42 + .../src/com/semmle/ts/ast/TypeExpression.java | 26 + .../src/com/semmle/ts/ast/TypeParameter.java | 53 + .../src/com/semmle/ts/ast/TypeofTypeExpr.java | 26 + .../src/com/semmle/ts/ast/UnionTypeExpr.java | 26 + .../semmle/ts/extractor/TypeExtractor.java | 247 + .../com/semmle/ts/extractor/TypeTable.java | 113 + .../extractor/tests/cfg/input/classexpr1.js | 1 + .../extractor/tests/cfg/input/classexpr2.js | 1 + .../extractor/tests/cfg/input/classexpr3.js | 1 + .../extractor/tests/cfg/input/classexpr4.js | 1 + .../extractor/tests/cfg/input/fields.js | 18 + javascript/extractor/tests/cfg/input/seq.js | 1 + .../tests/cfg/input/short-circuit.js | 2 + .../extractor/tests/cfg/input/ternary.js | 1 + javascript/extractor/tests/cfg/input/tst.js | 36 + javascript/extractor/tests/cfg/options.json | 3 + .../tests/cfg/output/trap/classexpr1.js.trap | 121 + .../tests/cfg/output/trap/classexpr2.js.trap | 143 + .../tests/cfg/output/trap/classexpr3.js.trap | 182 + .../tests/cfg/output/trap/classexpr4.js.trap | 204 + .../tests/cfg/output/trap/fields.js.trap | 750 ++ .../tests/cfg/output/trap/seq.js.trap | 196 + .../cfg/output/trap/short-circuit.js.trap | 241 + .../tests/cfg/output/trap/ternary.js.trap | 218 + .../tests/cfg/output/trap/tst.js.trap | 1549 +++ .../tests/comments/input/comments.js | 5 + .../tests/comments/input/empty_comment.js | 1 + .../extractor/tests/comments/input/jsdoc.js | 17 + .../comments/output/trap/comments.js.trap | 83 + .../output/trap/empty_comment.js.trap | 42 + .../tests/comments/output/trap/jsdoc.js.trap | 303 + .../tests/default-encoding/input/latin1.js | 1 + .../tests/default-encoding/options.json | 3 + .../output/trap/latin1.js.trap | 139 + .../tests/encoding/input/surrogates.js | 13 + .../extractor/tests/encoding/input/unicode.js | 1 + .../encoding/output/trap/surrogates.js.trap | 453 + .../encoding/output/trap/unicode.js.trap | 50 + .../extractor/tests/errors/input/empty.js | 0 .../extractor/tests/errors/input/errors.js | 1 + .../tests/errors/input/incomplete.js | 1 + .../extractor/tests/errors/input/json.js | 3 + .../tests/errors/input/weirdassign.js | 1 + .../tests/errors/output/trap/empty.js.trap | 28 + .../tests/errors/output/trap/errors.js.trap | 28 + .../errors/output/trap/incomplete.js.trap | 27 + .../tests/errors/output/trap/json.js.trap | 24 + .../errors/output/trap/weirdassign.js.trap | 28 + .../input/array_pattern_with_default.js | 1 + .../es2015/input/array_pattern_with_rest.js | 4 + .../extractor/tests/es2015/input/arrowfn.js | 3 + .../tests/es2015/input/class_accessors.js | 8 + .../tests/es2015/input/class_ctor.js | 5 + .../tests/es2015/input/class_extends.js | 1 + .../tests/es2015/input/class_extends2.js | 1 + .../tests/es2015/input/class_method.js | 5 + .../tests/es2015/input/class_static.js | 5 + .../extractor/tests/es2015/input/classdecl.js | 1 + .../extractor/tests/es2015/input/classexpr.js | 1 + .../tests/es2015/input/classexpr2.js | 1 + .../es2015/input/complex_array_pattern.js | 1 + .../es2015/input/complex_object_pattern.js | 1 + .../extractor/tests/es2015/input/const.js | 1 + .../tests/es2015/input/defaultargs.js | 1 + .../tests/es2015/input/delegating_yield.js | 3 + .../tests/es2015/input/destructuring.js | 13 + .../extractor/tests/es2015/input/export1.js | 1 + .../extractor/tests/es2015/input/export10.js | 1 + .../extractor/tests/es2015/input/export11.js | 1 + .../extractor/tests/es2015/input/export2.js | 1 + .../extractor/tests/es2015/input/export3.js | 1 + .../extractor/tests/es2015/input/export4.js | 1 + .../extractor/tests/es2015/input/export5.js | 2 + .../extractor/tests/es2015/input/export6.js | 1 + .../extractor/tests/es2015/input/export7.js | 1 + .../extractor/tests/es2015/input/export8.js | 2 + .../extractor/tests/es2015/input/export9.js | 1 + .../extractor/tests/es2015/input/forof.js | 7 + .../extractor/tests/es2015/input/import1.js | 1 + .../extractor/tests/es2015/input/import2.js | 1 + .../extractor/tests/es2015/input/import3.js | 1 + .../extractor/tests/es2015/input/import4.js | 1 + .../extractor/tests/es2015/input/import5.js | 1 + .../extractor/tests/es2015/input/import6.js | 1 + .../extractor/tests/es2015/input/import7.js | 3 + .../extractor/tests/es2015/input/let.js | 12 + .../extractor/tests/es2015/input/let2.js | 1 + .../tests/es2015/input/nested_import.js | 5 + .../tests/es2015/input/new_target.js | 3 + .../tests/es2015/input/no-substitution.js | 1 + .../tests/es2015/input/nullMethodName.js | 3 + .../tests/es2015/input/odasa-2593.js | 4 + .../tests/es2015/input/properties.js | 6 + .../input/property_pattern_with_default.js | 1 + .../extractor/tests/es2015/input/restparms.js | 2 + .../tests/es2015/input/restparms2.js | 2 + .../tests/es2015/input/spreadelement.js | 2 + .../tests/es2015/input/super_call.js | 5 + .../tests/es2015/input/super_ctor.js | 5 + .../extractor/tests/es2015/input/templates.js | 8 + .../es2015/input/unknown_meta_property.js | 3 + .../extractor/tests/es2015/input/yield.js | 5 + .../extractor/tests/es2015/input/yield2.js | 3 + .../trap/array_pattern_with_default.js.trap | 128 + .../trap/array_pattern_with_rest.js.trap | 252 + .../tests/es2015/output/trap/arrowfn.js.trap | 543 + .../output/trap/class_accessors.js.trap | 475 + .../es2015/output/trap/class_ctor.js.trap | 265 + .../es2015/output/trap/class_extends.js.trap | 178 + .../es2015/output/trap/class_extends2.js.trap | 296 + .../es2015/output/trap/class_method.js.trap | 270 + .../es2015/output/trap/class_static.js.trap | 252 + .../es2015/output/trap/classdecl.js.trap | 117 + .../es2015/output/trap/classexpr.js.trap | 141 + .../es2015/output/trap/classexpr2.js.trap | 119 + .../output/trap/complex_array_pattern.js.trap | 148 + .../trap/complex_object_pattern.js.trap | 172 + .../tests/es2015/output/trap/const.js.trap | 93 + .../es2015/output/trap/defaultargs.js.trap | 174 + .../output/trap/delegating_yield.js.trap | 184 + .../es2015/output/trap/destructuring.js.trap | 885 ++ .../tests/es2015/output/trap/export1.js.trap | 107 + .../tests/es2015/output/trap/export10.js.trap | 161 + .../tests/es2015/output/trap/export11.js.trap | 121 + .../tests/es2015/output/trap/export2.js.trap | 134 + .../tests/es2015/output/trap/export3.js.trap | 139 + .../tests/es2015/output/trap/export4.js.trap | 126 + .../tests/es2015/output/trap/export5.js.trap | 242 + .../tests/es2015/output/trap/export6.js.trap | 77 + .../tests/es2015/output/trap/export7.js.trap | 149 + .../tests/es2015/output/trap/export8.js.trap | 131 + .../tests/es2015/output/trap/export9.js.trap | 173 + .../tests/es2015/output/trap/forof.js.trap | 468 + .../tests/es2015/output/trap/import1.js.trap | 100 + .../tests/es2015/output/trap/import2.js.trap | 116 + .../tests/es2015/output/trap/import3.js.trap | 128 + .../tests/es2015/output/trap/import4.js.trap | 162 + .../tests/es2015/output/trap/import5.js.trap | 108 + .../tests/es2015/output/trap/import6.js.trap | 66 + .../tests/es2015/output/trap/import7.js.trap | 228 + .../tests/es2015/output/trap/let.js.trap | 729 ++ .../tests/es2015/output/trap/let2.js.trap | 99 + .../es2015/output/trap/nested_import.js.trap | 353 + .../es2015/output/trap/new_target.js.trap | 180 + .../output/trap/no-substitution.js.trap | 64 + .../es2015/output/trap/nullMethodName.js.trap | 236 + .../es2015/output/trap/odasa-2593.js.trap | 204 + .../es2015/output/trap/properties.js.trap | 431 + .../property_pattern_with_default.js.trap | 153 + .../es2015/output/trap/restparms.js.trap | 146 + .../es2015/output/trap/restparms2.js.trap | 35 + .../es2015/output/trap/spreadelement.js.trap | 196 + .../es2015/output/trap/super_call.js.trap | 374 + .../es2015/output/trap/super_ctor.js.trap | 250 + .../es2015/output/trap/templates.js.trap | 742 ++ .../output/trap/unknown_meta_property.js.trap | 168 + .../tests/es2015/output/trap/yield.js.trap | 317 + .../tests/es2015/output/trap/yield2.js.trap | 148 + .../extractor/tests/es2016/input/exp.js | 2 + .../extractor/tests/es2016/input/usestrict.js | 1 + .../tests/es2016/output/trap/exp.js.trap | 126 + .../es2016/output/trap/usestrict.js.trap | 164 + .../tests/es2017/input/async-await.js | 7 + .../tests/es2017/input/export-async-1.js | 1 + .../tests/es2017/input/export-async-2.js | 1 + .../tests/es2017/input/invalid-async-fn.js | 1 + .../es2017/input/shorthand-prop-async.js | 1 + .../extractor/tests/es2017/options.json | 3 + .../es2017/output/trap/async-await.js.trap | 353 + .../es2017/output/trap/export-async-1.js.trap | 148 + .../es2017/output/trap/export-async-2.js.trap | 135 + .../output/trap/invalid-async-fn.js.trap | 145 + .../output/trap/shorthand-prop-async.js.trap | 110 + .../extractor/tests/es2018/input/templates.js | 12 + .../extractor/tests/es2018/options.json | 3 + .../es2018/output/trap/templates.js.trap | 804 ++ .../tests/esnext/input/async-generators.js | 6 + .../esnext/input/catchGuardAndNoBinding.js | 10 + .../tests/esnext/input/catchNoBinding.js | 5 + .../tests/esnext/input/dynamic-import.js | 3 + .../extractor/tests/esnext/input/fields.js | 11 + .../extractor/tests/esnext/options.json | 3 + .../output/trap/async-generators.js.trap | 333 + .../trap/catchGuardAndNoBinding.js.trap | 642 + .../esnext/output/trap/catchNoBinding.js.trap | 270 + .../esnext/output/trap/dynamic-import.js.trap | 363 + .../tests/esnext/output/trap/fields.js.trap | 540 + .../tests/excludes/input/.jshintignore | 2 + .../extractor/tests/excludes/input/a.js | 1 + .../extractor/tests/excludes/input/baz/a.js | 1 + .../extractor/tests/excludes/input/f/bar.js | 1 + .../tests/excludes/input/f/empty.json | 1 + .../extractor/tests/excludes/input/f/foo.js | 1 + .../extractor/tests/excludes/options.json | 5 + .../tests/excludes/output/trap/a.js.trap | 50 + .../excludes/output/trap/empty.json.trap | 18 + .../extractor/tests/exprs/input/assignment.js | 12 + .../extractor/tests/exprs/input/binary.js | 15 + .../extractor/tests/exprs/input/comparison.js | 8 + .../extractor/tests/exprs/input/fnnesting.js | 1 + .../extractor/tests/exprs/input/others.js | 3 + .../extractor/tests/exprs/input/parens.js | 1 + .../extractor/tests/exprs/input/primaries.js | 30 + .../extractor/tests/exprs/input/regexp.js | 44 + .../extractor/tests/exprs/input/unary.js | 7 + .../extractor/tests/exprs/input/update.js | 4 + .../exprs/output/trap/assignment.js.trap | 684 ++ .../tests/exprs/output/trap/binary.js.trap | 840 ++ .../exprs/output/trap/comparison.js.trap | 456 + .../tests/exprs/output/trap/fnnesting.js.trap | 154 + .../tests/exprs/output/trap/others.js.trap | 225 + .../tests/exprs/output/trap/parens.js.trap | 91 + .../tests/exprs/output/trap/primaries.js.trap | 1646 +++ .../tests/exprs/output/trap/regexp.js.trap | 2250 ++++ .../tests/exprs/output/trap/unary.js.trap | 365 + .../tests/exprs/output/trap/update.js.trap | 204 + .../extractor/tests/extensions/input/tst.es6 | 1 + .../extractor/tests/extensions/input/tst2.es | 1 + .../tests/extensions/output/trap/tst.es6.trap | 123 + .../tests/extensions/output/trap/tst2.es.trap | 123 + .../extractor/tests/externs/input/Point.js | 17 + .../extractor/tests/externs/options.json | 3 + .../tests/externs/output/trap/Point.js.trap | 944 ++ .../flow/input/anonFunctionOptionalParm.js | 1 + .../flow/input/anonFunctionReturnType.js | 1 + .../flow/input/anonFunctionWithoutParens.js | 1 + .../extractor/tests/flow/input/anonIndexer.js | 1 + .../extractor/tests/flow/input/async.js | 1 + .../tests/flow/input/atAtIteratorProp.js | 3 + .../tests/flow/input/complexParamTypes.js | 1 + .../tests/flow/input/complexParamTypes2.js | 3 + .../tests/flow/input/declareExport.js | 4 + .../tests/flow/input/declareModuleExports.js | 4 + .../tests/flow/input/exportOpaqueType.js | 1 + .../extractor/tests/flow/input/importType.js | 2 + .../tests/flow/input/methodTypeParams.js | 5 + .../tests/flow/input/objectTypeSpread.js | 2 + .../extractor/tests/flow/input/optParms.js | 2 + .../tests/flow/input/parmAnonFunctionType.js | 3 + .../tests/flow/input/qualifiedInterface.js | 1 + javascript/extractor/tests/flow/input/tst.js | 22 + .../extractor/tests/flow/input/variance.js | 7 + javascript/extractor/tests/flow/options.json | 3 + .../trap/anonFunctionOptionalParm.js.trap | 166 + .../trap/anonFunctionReturnType.js.trap | 173 + .../trap/anonFunctionWithoutParens.js.trap | 90 + .../flow/output/trap/anonIndexer.js.trap | 103 + .../tests/flow/output/trap/async.js.trap | 194 + .../flow/output/trap/atAtIteratorProp.js.trap | 108 + .../output/trap/complexParamTypes.js.trap | 195 + .../output/trap/complexParamTypes2.js.trap | 148 + .../flow/output/trap/declareExport.js.trap | 186 + .../output/trap/declareModuleExports.js.trap | 115 + .../flow/output/trap/exportOpaqueType.js.trap | 88 + .../tests/flow/output/trap/importType.js.trap | 195 + .../flow/output/trap/methodTypeParams.js.trap | 262 + .../flow/output/trap/objectTypeSpread.js.trap | 148 + .../tests/flow/output/trap/optParms.js.trap | 299 + .../output/trap/parmAnonFunctionType.js.trap | 240 + .../output/trap/qualifiedInterface.js.trap | 78 + .../tests/flow/output/trap/tst.js.trap | 731 ++ .../tests/flow/output/trap/variance.js.trap | 255 + .../extractor/tests/functionbind/input/tst.js | 5 + .../extractor/tests/functionbind/options.json | 3 + .../functionbind/output/trap/tst.js.trap | 490 + .../extractor/tests/helloworld/input/hello.js | 1 + .../helloworld/output/trap/hello.js.trap | 90 + .../input/text-examples.html | 25 + .../tests/html-text-extraction/options.json | 3 + .../output/trap/text-examples.html.trap | 242 + .../extractor/tests/html/input/doctype.html | 1 + .../tests/html/input/empty_script.html | 6 + .../extractor/tests/html/input/entities.html | 8 + .../extractor/tests/html/input/module.html | 11 + javascript/extractor/tests/html/input/q.html | 8 + .../extractor/tests/html/input/tst.html | 18 + .../extractor/tests/html/input/tst.xhtml | 12 + .../extractor/tests/html/input/tst2.html | 10 + .../extractor/tests/html/input/tst2.xhtml | 8 + .../tests/html/output/trap/doctype.html.trap | 12 + .../html/output/trap/empty_script.html.trap | 37 + .../tests/html/output/trap/entities.html.trap | 144 + .../tests/html/output/trap/module.html.trap | 220 + .../tests/html/output/trap/q.html.trap | 47 + .../tests/html/output/trap/tst.html.trap | 455 + .../tests/html/output/trap/tst.xhtml.trap | 118 + .../tests/html/output/trap/tst2.html.trap | 362 + .../tests/html/output/trap/tst2.xhtml.trap | 37 + .../extractor/tests/jscript/input/tst.js | 1 + .../extractor/tests/jscript/options.json | 3 + .../tests/jscript/output/trap/tst.js.trap | 181 + .../extractor/tests/json/input/array.json | 1 + .../extractor/tests/json/input/comments.json | 5 + .../tests/json/input/duplicate-keys.json | 4 + .../extractor/tests/json/input/empty.json | 0 .../extractor/tests/json/input/error.json | 1 + .../extractor/tests/json/input/f/ignored.json | 1 + .../extractor/tests/json/input/invalid.json | 3 + .../extractor/tests/json/input/neg.json | 1 + .../extractor/tests/json/input/neg2.json | 1 + .../extractor/tests/json/input/null.json | 1 + .../extractor/tests/json/input/omitted.json | 3 + .../extractor/tests/json/input/tst.json | 7 + .../tests/json/output/trap/array.json.trap | 15 + .../tests/json/output/trap/comments.json.trap | 32 + .../json/output/trap/duplicate-keys.json.trap | 29 + .../tests/json/output/trap/empty.json.trap | 15 + .../tests/json/output/trap/error.json.trap | 15 + .../tests/json/output/trap/invalid.json.trap | 15 + .../tests/json/output/trap/neg.json.trap | 16 + .../tests/json/output/trap/neg2.json.trap | 27 + .../tests/json/output/trap/null.json.trap | 16 + .../tests/json/output/trap/omitted.json.trap | 15 + .../tests/json/output/trap/tst.json.trap | 42 + javascript/extractor/tests/jsx/input/err1.jsx | 1 + javascript/extractor/tests/jsx/input/err2.jsx | 1 + javascript/extractor/tests/jsx/input/err3.jsx | 1 + javascript/extractor/tests/jsx/input/err4.jsx | 1 + javascript/extractor/tests/jsx/input/tst.js | 5 + javascript/extractor/tests/jsx/input/tst.jsx | 0 javascript/extractor/tests/jsx/input/tst2.js | 1 + .../tests/jsx/output/trap/err1.jsx.trap | 30 + .../tests/jsx/output/trap/err2.jsx.trap | 30 + .../tests/jsx/output/trap/err3.jsx.trap | 30 + .../tests/jsx/output/trap/err4.jsx.trap | 30 + .../tests/jsx/output/trap/tst.js.trap | 752 ++ .../tests/jsx/output/trap/tst.jsx.trap | 28 + .../tests/jsx/output/trap/tst2.js.trap | 100 + .../mozilla/input/array_comprehensions.js | 4 + .../extractor/tests/mozilla/input/foreach.js | 8 + .../mozilla/input/generator_expressions.js | 4 + .../tests/mozilla/input/guardedCatch.js | 9 + .../extractor/tests/mozilla/input/letExpr.js | 5 + .../extractor/tests/mozilla/input/letStmt.js | 7 + .../extractor/tests/mozilla/input/letStmt2.js | 1 + .../mozilla/input/new-with-trailing-arg.js | 6 + .../tests/mozilla/input/odasa-2593.js | 4 + .../extractor/tests/mozilla/options.json | 3 + .../output/trap/array_comprehensions.js.trap | 701 ++ .../tests/mozilla/output/trap/foreach.js.trap | 546 + .../output/trap/generator_expressions.js.trap | 701 ++ .../mozilla/output/trap/guardedCatch.js.trap | 568 + .../tests/mozilla/output/trap/letExpr.js.trap | 485 + .../tests/mozilla/output/trap/letStmt.js.trap | 516 + .../mozilla/output/trap/letStmt2.js.trap | 121 + .../output/trap/new-with-trailing-arg.js.trap | 223 + .../mozilla/output/trap/odasa-2593.js.trap | 209 + .../extractor/tests/node/input/constlet.js | 2 + javascript/extractor/tests/node/input/empty | 0 .../extractor/tests/node/input/f/ignored.json | 1 + .../extractor/tests/node/input/f/package.json | 1 + javascript/extractor/tests/node/input/g/hello | 2 + .../extractor/tests/node/input/tst.html | 8 + javascript/extractor/tests/node/input/tst.js | 4 + javascript/extractor/tests/node/input/tst.mjs | 1 + javascript/extractor/tests/node/options.json | 3 + .../tests/node/output/trap/constlet.js.trap | 179 + .../tests/node/output/trap/hello.trap | 148 + .../tests/node/output/trap/package.json.trap | 19 + .../tests/node/output/trap/tst.html.trap | 120 + .../tests/node/output/trap/tst.js.trap | 354 + .../tests/node/output/trap/tst.mjs.trap | 84 + javascript/extractor/tests/project-layout | 1 + .../extractor/tests/rcfiles/input/.babelrc | 3 + .../extractor/tests/rcfiles/input/.eslintrc | 3 + .../extractor/tests/rcfiles/input/.npmrc | 1 + .../tests/rcfiles/output/trap/.babelrc.trap | 22 + .../tests/rcfiles/output/trap/.eslintrc.trap | 22 + .../extractor/tests/regexp/input/es2018.js | 5 + .../tests/regexp/input/nonstandard.js | 1 + .../tests/regexp/input/odasa-1934.js | 7 + .../tests/regexp/output/trap/es2018.js.trap | 257 + .../regexp/output/trap/nonstandard.js.trap | 86 + .../regexp/output/trap/odasa-1934.js.trap | Bin 0 -> 11003 bytes .../extractor/tests/restprops/input/tst.js | 1 + .../extractor/tests/restprops/options.json | 3 + .../tests/restprops/output/trap/tst.js.trap | 173 + .../extractor/tests/shebang/input/tst.html | 10 + .../extractor/tests/shebang/input/tst.js | 2 + .../tests/shebang/output/trap/tst.html.trap | 67 + .../tests/shebang/output/trap/tst.js.trap | 122 + .../tests/stmts/input/conditionals.js | 12 + .../tests/stmts/input/forvardefault.js | 3 + .../extractor/tests/stmts/input/functions.js | 13 + .../extractor/tests/stmts/input/loops.js | 21 + .../extractor/tests/stmts/input/others.js | 4 + .../extractor/tests/stmts/input/switch.js | 17 + .../extractor/tests/stmts/input/switch2.js | 9 + .../tests/stmts/input/trivial-switch.js | 1 + javascript/extractor/tests/stmts/input/try.js | 5 + .../stmts/output/trap/conditionals.js.trap | 356 + .../stmts/output/trap/forvardefault.js.trap | 285 + .../tests/stmts/output/trap/functions.js.trap | 671 + .../tests/stmts/output/trap/loops.js.trap | 1070 ++ .../tests/stmts/output/trap/others.js.trap | 203 + .../tests/stmts/output/trap/switch.js.trap | 583 + .../tests/stmts/output/trap/switch2.js.trap | 343 + .../stmts/output/trap/trivial-switch.js.trap | 83 + .../tests/stmts/output/trap/try.js.trap | 354 + .../tests/strictmode/input/assignargs.js | 4 + .../extractor/tests/strictmode/input/tst.js | 2 + .../strictmode/output/trap/assignargs.js.trap | 219 + .../tests/strictmode/output/trap/tst.js.trap | 73 + .../tests/ts-full/input/tsconfig.json | 1 + .../extractor/tests/ts-full/input/tst.ts | 15 + .../ts-full/output/trap/tsconfig.json.trap | 3086 +++++ .../tests/ts-full/output/trap/tst.ts.trap | 917 ++ .../tests/ts/input/arrayBindingPattern.ts | 1 + .../extractor/tests/ts/input/badimport.ts | 1 + .../tests/ts/input/bindingpattern.ts | 1 + javascript/extractor/tests/ts/input/bom.ts | 1 + .../extractor/tests/ts/input/classes.ts | 2 + .../extractor/tests/ts/input/comments.ts | 4 + .../tests/ts/input/conditionalTypes.ts | 102 + .../extractor/tests/ts/input/ctordecl.ts | 5 + .../extractor/tests/ts/input/declareClass.ts | 1 + .../extractor/tests/ts/input/decorators.ts | 14 + .../extractor/tests/ts/input/emptydecls.ts | 1 + javascript/extractor/tests/ts/input/enum.ts | 18 + javascript/extractor/tests/ts/input/export.ts | 5 + .../extractor/tests/ts/input/export2.ts | 1 + .../tests/ts/input/exportasnamespace.d.ts | 2 + .../extractor/tests/ts/input/exportassign.ts | 1 + javascript/extractor/tests/ts/input/exprs.ts | 5 + .../tests/ts/input/externalmodule.ts | 9 + .../tests/ts/input/functiondecorators.ts | 15 + javascript/extractor/tests/ts/input/hello.ts | 5 + .../extractor/tests/ts/input/importExport.ts | 3 + .../extractor/tests/ts/input/importassign.ts | 1 + .../extractor/tests/ts/input/interfaces.ts | 11 + .../tests/ts/input/invalidModuleSpecifier.ts | 1 + .../tests/ts/input/klee-binary-file.ts | Bin 0 -> 1412 bytes javascript/extractor/tests/ts/input/let.ts | 3 + .../tests/ts/input/mappedTypeModifiers.ts | 11 + .../tests/ts/input/mpeg-stream-fragment.ts | Bin 0 -> 376 bytes .../extractor/tests/ts/input/namespaces.ts | 7 + .../tests/ts/input/nestedNamespace.ts | 8 + javascript/extractor/tests/ts/input/nobody.ts | 29 + .../tests/ts/input/objectLiteralAccessor.ts | 4 + .../extractor/tests/ts/input/omitted.ts | 1 + javascript/extractor/tests/ts/input/regexp.ts | 1 + .../extractor/tests/ts/input/templates.ts | 1 + .../extractor/tests/ts/input/thisparameter.ts | 14 + .../tests/ts/input/trust-store-file.ts | Bin 0 -> 1589 bytes .../extractor/tests/ts/input/tryfinally.ts | 7 + javascript/extractor/tests/ts/input/tsx.tsx | 4 + .../tests/ts/input/typeannotations.ts | 65 + .../extractor/tests/ts/input/unicode.ts | 3 + .../extractor/tests/ts/input/unicodeId.ts | 1 + .../tests/ts/input/uninstantiatedNamespace.ts | 25 + .../tests/ts/input/xmlfile-utf16be.ts | Bin 0 -> 62 bytes .../tests/ts/input/xmlfile-utf16le.ts | Bin 0 -> 62 bytes .../extractor/tests/ts/input/xmlfile.ts | 2 + javascript/extractor/tests/ts/options.json | 3 + .../output/trap/arrayBindingPattern.ts.trap | 163 + .../tests/ts/output/trap/badimport.ts.trap | 30 + .../ts/output/trap/bindingpattern.ts.trap | 176 + .../tests/ts/output/trap/bom.ts.trap | 53 + .../tests/ts/output/trap/classes.ts.trap | 245 + .../tests/ts/output/trap/comments.ts.trap | 126 + .../ts/output/trap/conditionalTypes.ts.trap | 10205 ++++++++++++++++ .../tests/ts/output/trap/ctordecl.ts.trap | 317 + .../tests/ts/output/trap/declareClass.ts.trap | 111 + .../tests/ts/output/trap/decorators.ts.trap | 664 + .../tests/ts/output/trap/emptydecls.ts.trap | 30 + .../tests/ts/output/trap/enum.ts.trap | 1112 ++ .../tests/ts/output/trap/export.ts.trap | 327 + .../tests/ts/output/trap/export2.ts.trap | 75 + .../output/trap/exportasnamespace.d.ts.trap | 149 + .../tests/ts/output/trap/exportassign.ts.trap | 75 + .../tests/ts/output/trap/exprs.ts.trap | 349 + .../ts/output/trap/externalmodule.ts.trap | 371 + .../ts/output/trap/functiondecorators.ts.trap | 1364 +++ .../tests/ts/output/trap/hello.ts.trap | 326 + .../tests/ts/output/trap/importExport.ts.trap | 218 + .../tests/ts/output/trap/importassign.ts.trap | 122 + .../tests/ts/output/trap/interfaces.ts.trap | 444 + .../trap/invalidModuleSpecifier.ts.trap | 28 + .../tests/ts/output/trap/let.ts.trap | 215 + .../output/trap/mappedTypeModifiers.ts.trap | 1186 ++ .../tests/ts/output/trap/namespaces.ts.trap | 353 + .../ts/output/trap/nestedNamespace.ts.trap | 471 + .../tests/ts/output/trap/nobody.ts.trap | 1212 ++ .../output/trap/objectLiteralAccessor.ts.trap | 309 + .../tests/ts/output/trap/omitted.ts.trap | 86 + .../tests/ts/output/trap/regexp.ts.trap | 56 + .../tests/ts/output/trap/templates.ts.trap | 142 + .../ts/output/trap/thisparameter.ts.trap | 759 ++ .../tests/ts/output/trap/tryfinally.ts.trap | 285 + .../tests/ts/output/trap/tsx.tsx.trap | 376 + .../ts/output/trap/typeannotations.ts.trap | 4820 ++++++++ .../tests/ts/output/trap/unicode.ts.trap | 58 + .../tests/ts/output/trap/unicodeId.ts.trap | 93 + .../trap/uninstantiatedNamespace.ts.trap | 998 ++ javascript/extractor/tests/v8/input/tst.js | 2 + javascript/extractor/tests/v8/options.json | 3 + .../tests/v8/output/trap/tst.js.trap | 196 + .../extractor/tests/variables/input/const.js | 1 + .../tests/variables/input/finally.js | 8 + .../extractor/tests/variables/input/switch.js | 6 + .../extractor/tests/variables/input/try.js | 5 + .../tests/variables/input/variables.js | 19 + .../tests/variables/output/trap/const.js.trap | 90 + .../variables/output/trap/finally.js.trap | 329 + .../variables/output/trap/switch.js.trap | 239 + .../tests/variables/output/trap/try.js.trap | 217 + .../variables/output/trap/variables.js.trap | 781 ++ javascript/extractor/tests/vue/input/test.vue | 1 + .../tests/vue/output/trap/test.vue.trap | 17 + .../extractor/tests/yaml/input/cyclic.yaml | 3 + .../extractor/tests/yaml/input/merge.yaml | 3 + javascript/extractor/tests/yaml/input/tst.yml | 33 + .../tests/yaml/output/trap/cyclic.yaml.trap | 39 + .../tests/yaml/output/trap/merge.yaml.trap | 74 + .../tests/yaml/output/trap/tst.yml.trap | 277 + javascript/extractor/util/dotify-cfg.sh | 22 + 992 files changed, 134506 insertions(+) create mode 100644 javascript/extractor/.classpath create mode 100644 javascript/extractor/.gitignore create mode 100644 javascript/extractor/.project create mode 100644 javascript/extractor/.settings/org.eclipse.core.resources.prefs create mode 100644 javascript/extractor/README.md create mode 100644 javascript/extractor/lib/esregex/.gitignore create mode 100644 javascript/extractor/lib/esregex/README.md create mode 100644 javascript/extractor/lib/esregex/package.json create mode 100644 javascript/extractor/lib/esregex/regexparser.js create mode 100644 javascript/extractor/lib/esregex/tests/runtests.js create mode 100644 javascript/extractor/lib/external/doctrine/.gitignore create mode 100644 javascript/extractor/lib/external/doctrine/.scripted create mode 100644 javascript/extractor/lib/external/doctrine/.travis.yml create mode 100644 javascript/extractor/lib/external/doctrine/CONTRIBUTING.md create mode 100644 javascript/extractor/lib/external/doctrine/LICENSE.BSD create mode 100644 javascript/extractor/lib/external/doctrine/LICENSE.closure-compiler create mode 100644 javascript/extractor/lib/external/doctrine/LICENSE.esprima create mode 100644 javascript/extractor/lib/external/doctrine/README.md create mode 100644 javascript/extractor/lib/external/doctrine/doctrine.js create mode 100644 javascript/extractor/lib/external/doctrine/eslint.json create mode 100644 javascript/extractor/lib/external/doctrine/package.json create mode 100644 javascript/extractor/lib/external/doctrine/test/parse.js create mode 100644 javascript/extractor/lib/external/doctrine/test/strict.js create mode 100644 javascript/extractor/lib/external/doctrine/test/stringify.js create mode 100644 javascript/extractor/lib/external/doctrine/test/test.html create mode 100644 javascript/extractor/lib/external/doctrine/test/unwrap.js create mode 100644 javascript/extractor/lib/typescript/.gitignore create mode 100644 javascript/extractor/lib/typescript/.yarnrc create mode 100644 javascript/extractor/lib/typescript/package.json create mode 100644 javascript/extractor/lib/typescript/rollup.config.js create mode 100644 javascript/extractor/lib/typescript/src/ast_extractor.ts create mode 100644 javascript/extractor/lib/typescript/src/common.ts create mode 100644 javascript/extractor/lib/typescript/src/main.ts create mode 100644 javascript/extractor/lib/typescript/src/type_table.ts create mode 100644 javascript/extractor/lib/typescript/src/typescript.d.ts create mode 100644 javascript/extractor/lib/typescript/src/typescript.js create mode 100644 javascript/extractor/lib/typescript/tsconfig.json create mode 100644 javascript/extractor/lib/typescript/tslint.json create mode 100644 javascript/extractor/lib/typescript/yarn.lock create mode 100644 javascript/extractor/lib/typescript/yarnrc-build create mode 100644 javascript/extractor/parser-tests/babylon/README.md create mode 100644 javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-failure-computed/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-failure-computed/expected.error create mode 100644 javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-failure-generator/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-failure-generator/expected.error create mode 100644 javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-success/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-success/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/function-sent/inside-function/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/function-sent/inside-function/expected.error create mode 100644 javascript/extractor/parser-tests/babylon/experimental/function-sent/inside-generator/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/function-sent/inside-generator/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/function-sent/invalid-property/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/function-sent/invalid-property/expected.error create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/10/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/10/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/11/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/11/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/12/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/12/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/13/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/13/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/14/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/33/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/33/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/34/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/34/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/35/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/35/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/36/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/36/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/37/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/37/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/38/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/38/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/39/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/39/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/40/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/40/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/41/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/41/expected.error create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/42/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/42/expected.error create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/43/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/43/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/44/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/44/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/45/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/45/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/46/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/46/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/49/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/49/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/50/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/50/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/51/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/51/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/52/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/52/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/53/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/53/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/54/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/54/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/62/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/62/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/9/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/experimental/uncategorised/9/expected.ast create mode 100644 javascript/extractor/parser-tests/babylon/generate-tests.patch create mode 100644 javascript/extractor/parser-tests/babylon/harmony/arrow-functions/object-rest-spread/actual.js create mode 100644 javascript/extractor/parser-tests/babylon/harmony/arrow-functions/object-rest-spread/expected.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/README.md create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/generate-tests.patch create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test0.fail create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test0.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test1.fail create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test1.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test10.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test10.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test11.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test11.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test12.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test12.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test13.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test13.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test14.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test14.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test15.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test15.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test16.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test16.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test17.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test17.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test18.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test18.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test19.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test19.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test2.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test2.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test2.options.json create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test20.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test20.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test21.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test21.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test22.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test22.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test23.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test23.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test24.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test24.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test25.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test25.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test26.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test26.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test27.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test27.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test28.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test28.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test29.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test29.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test3.fail create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test3.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test3.options.json create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test30.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test30.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test31.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test31.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test32.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test32.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test4.fail create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test4.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test4.options.json create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test5.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test5.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test6.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test6.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test7.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test7.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test8.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test8.js create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test9.ast create mode 100644 javascript/extractor/parser-tests/jcorn-jsx/test9.js create mode 100644 javascript/extractor/parser-tests/robustness/letLookahead.js create mode 100644 javascript/extractor/src/com/semmle/jcorn/CustomParser.java create mode 100644 javascript/extractor/src/com/semmle/jcorn/ESNextParser.java create mode 100644 javascript/extractor/src/com/semmle/jcorn/Identifiers.java create mode 100644 javascript/extractor/src/com/semmle/jcorn/Locutil.java create mode 100644 javascript/extractor/src/com/semmle/jcorn/Options.java create mode 100644 javascript/extractor/src/com/semmle/jcorn/Parser.java create mode 100644 javascript/extractor/src/com/semmle/jcorn/README.md create mode 100644 javascript/extractor/src/com/semmle/jcorn/SyntaxError.java create mode 100644 javascript/extractor/src/com/semmle/jcorn/TokenType.java create mode 100644 javascript/extractor/src/com/semmle/jcorn/Whitespace.java create mode 100644 javascript/extractor/src/com/semmle/jcorn/flow/FlowParser.java create mode 100644 javascript/extractor/src/com/semmle/jcorn/jsx/JSXOptions.java create mode 100644 javascript/extractor/src/com/semmle/jcorn/jsx/JSXParser.java create mode 100644 javascript/extractor/src/com/semmle/jcorn/jsx/XHTMLEntities.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ABinaryExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/AClass.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/AFunction.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/AFunctionExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/AST2JSON.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ArrayExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ArrayPattern.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ArrowFunctionExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/AssignmentExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/AssignmentPattern.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/AwaitExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/BinaryExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/BindExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/BlockStatement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/BreakStatement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/CallExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/CatchClause.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ClassBody.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ClassDeclaration.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ClassExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/Comment.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ComprehensionBlock.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ComprehensionExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ConditionalExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ContinueStatement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/DebuggerStatement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/DeclarationFlags.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/Decorator.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/DefaultVisitor.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/DestructuringPattern.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/DoWhileStatement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/DynamicImport.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/EmptyStatement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/EnhancedForStatement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ExportAllDeclaration.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ExportDeclaration.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ExportDefaultDeclaration.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ExportDefaultSpecifier.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ExportNamedDeclaration.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ExportNamespaceSpecifier.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ExportSpecifier.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/Expression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ExpressionStatement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/FieldDefinition.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ForInStatement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ForOfStatement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ForStatement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/FunctionDeclaration.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/FunctionExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/IFunction.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/INode.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/IPattern.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ISourceElement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/IStatementContainer.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/Identifier.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/IfStatement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ImportDeclaration.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ImportDefaultSpecifier.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ImportNamespaceSpecifier.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ImportSpecifier.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/InvokeExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/JumpStatement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/LabeledStatement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/LetExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/LetStatement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/Literal.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/LogicalExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/Loop.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/MemberDefinition.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/MemberExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/MetaProperty.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/MethodDefinition.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/NewExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/Node.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/NodeCopier.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ObjectExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ObjectPattern.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ParenthesizedExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/Position.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/Program.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/Property.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/RestElement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ReturnStatement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/SequenceExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/SourceElement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/SourceLocation.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/SpreadElement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/Statement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/Super.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/SwitchCase.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/SwitchStatement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/TaggedTemplateExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/TemplateElement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/TemplateLiteral.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ThisExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/ThrowStatement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/Token.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/TryStatement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/UnaryExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/UpdateExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/VariableDeclaration.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/VariableDeclarator.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/Visitor.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/WhileStatement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/WithStatement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/YieldExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/AllLiteral.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/ArrayType.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/CompoundType.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/FieldType.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/FunctionType.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/JSDocComment.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/JSDocElement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/JSDocTag.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/JSDocTypeExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/NameExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/NonNullableType.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/NullLiteral.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/NullableLiteral.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/NullableType.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/OptionalType.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/ParameterType.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/RecordType.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/RestType.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/TypeApplication.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/UnaryTypeConstructor.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/UndefinedLiteral.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/UnionType.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/Visitor.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/VoidLiteral.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsdoc/package-info.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/json/JSONArray.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/json/JSONLiteral.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/json/JSONObject.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/json/JSONValue.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/json/Visitor.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/json/package-info.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsx/IJSXAttribute.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsx/IJSXExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsx/IJSXName.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsx/JSXAttribute.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsx/JSXBoundaryElement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsx/JSXClosingElement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsx/JSXElement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsx/JSXEmptyExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsx/JSXExpressionContainer.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsx/JSXIdentifier.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsx/JSXMemberExpression.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsx/JSXNamespacedName.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsx/JSXOpeningElement.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/jsx/JSXSpreadAttribute.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/package-info.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/BackReference.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/Caret.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/CharacterClass.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/CharacterClassEscape.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/CharacterClassRange.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/Constant.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/ControlEscape.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/ControlLetter.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/DecimalEscape.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/Disjunction.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/Dollar.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/Dot.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/Error.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/EscapeSequence.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/Group.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/HexEscapeSequence.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/IdentityEscape.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/Literal.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/NamedBackReference.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/NonWordBoundary.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/OctalEscape.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/Opt.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/Plus.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/Quantifier.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/Range.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/RegExpTerm.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/Sequence.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/Star.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/UnicodeEscapeSequence.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/UnicodePropertyEscape.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/Visitor.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/WordBoundary.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/ZeroWidthNegativeLookahead.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/ZeroWidthNegativeLookbehind.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/ZeroWidthPositiveLookahead.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/ZeroWidthPositiveLookbehind.java create mode 100644 javascript/extractor/src/com/semmle/js/ast/regexp/package-info.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/ASTExtractor.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/CFGExtractor.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/DeclaredNames.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/ExprKinds.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/ExtractorConfig.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/ExtractorState.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/FileExtractor.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/HTMLExtractor.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/IExtractor.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/JSDocExtractor.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/JSExtractor.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/JSONExtractor.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/JumpType.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/LexicalExtractor.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/LoCInfo.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/LocationManager.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/Main.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/NodeJSDetector.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/RegExpExtractor.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/ScopeManager.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/ScriptExtractor.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/StmtKinds.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/SyntacticContextManager.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/TextualExtractor.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/TypeExprKinds.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/TypeScriptExtractor.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/TypeScriptMode.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/YAMLExtractor.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/test/ASTMatchingTests.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/test/AllTests.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/test/AutoBuildTests.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/test/ClassPropertiesTests.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/test/DecoratorTests.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/test/ExportExtensionsTests.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/test/FunctionSentTests.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/test/JSXTests.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/test/NodeJSDetectorTests.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/test/NumericSeparatorTests.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/test/ObjectRestSpreadTests.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/test/RobustnessTests.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/test/TrapTests.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/trapcache/CachingTrapWriter.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/trapcache/DefaultTrapCache.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/trapcache/DummyTrapCache.java create mode 100644 javascript/extractor/src/com/semmle/js/extractor/trapcache/ITrapCache.java create mode 100644 javascript/extractor/src/com/semmle/js/parser/JSDocParser.java create mode 100644 javascript/extractor/src/com/semmle/js/parser/JSONParser.java create mode 100644 javascript/extractor/src/com/semmle/js/parser/JSObjectDecoder.java create mode 100644 javascript/extractor/src/com/semmle/js/parser/JSParser.java create mode 100644 javascript/extractor/src/com/semmle/js/parser/JcornWrapper.java create mode 100644 javascript/extractor/src/com/semmle/js/parser/ParseError.java create mode 100644 javascript/extractor/src/com/semmle/js/parser/ParsedProject.java create mode 100644 javascript/extractor/src/com/semmle/js/parser/RegExpParser.java create mode 100644 javascript/extractor/src/com/semmle/js/parser/ScriptLoader.java create mode 100644 javascript/extractor/src/com/semmle/js/parser/TypeScriptASTConverter.java create mode 100644 javascript/extractor/src/com/semmle/js/parser/TypeScriptParser.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/ArrayTypeExpr.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/ConditionalTypeExpr.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/DecoratorList.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/EnumDeclaration.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/EnumMember.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/ExportAsNamespaceDeclaration.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/ExportWholeDeclaration.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/ExpressionWithTypeArguments.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/ExternalModuleDeclaration.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/ExternalModuleReference.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/FunctionTypeExpr.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/GenericTypeExpr.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/GlobalAugmentationDeclaration.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/INodeWithSymbol.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/ITypeExpression.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/ITypedAstNode.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/ImportTypeExpr.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/ImportWholeDeclaration.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/IndexedAccessTypeExpr.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/InferTypeExpr.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/InterfaceDeclaration.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/InterfaceTypeExpr.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/IntersectionTypeExpr.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/IsTypeExpr.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/KeyofTypeExpr.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/KeywordTypeExpr.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/MappedTypeExpr.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/NamespaceDeclaration.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/NonNullAssertion.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/OptionalTypeExpr.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/ParenthesizedTypeExpr.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/RestTypeExpr.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/TupleTypeExpr.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/TypeAliasDeclaration.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/TypeAssertion.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/TypeExpression.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/TypeParameter.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/TypeofTypeExpr.java create mode 100644 javascript/extractor/src/com/semmle/ts/ast/UnionTypeExpr.java create mode 100644 javascript/extractor/src/com/semmle/ts/extractor/TypeExtractor.java create mode 100644 javascript/extractor/src/com/semmle/ts/extractor/TypeTable.java create mode 100644 javascript/extractor/tests/cfg/input/classexpr1.js create mode 100644 javascript/extractor/tests/cfg/input/classexpr2.js create mode 100644 javascript/extractor/tests/cfg/input/classexpr3.js create mode 100644 javascript/extractor/tests/cfg/input/classexpr4.js create mode 100644 javascript/extractor/tests/cfg/input/fields.js create mode 100644 javascript/extractor/tests/cfg/input/seq.js create mode 100644 javascript/extractor/tests/cfg/input/short-circuit.js create mode 100644 javascript/extractor/tests/cfg/input/ternary.js create mode 100644 javascript/extractor/tests/cfg/input/tst.js create mode 100644 javascript/extractor/tests/cfg/options.json create mode 100644 javascript/extractor/tests/cfg/output/trap/classexpr1.js.trap create mode 100644 javascript/extractor/tests/cfg/output/trap/classexpr2.js.trap create mode 100644 javascript/extractor/tests/cfg/output/trap/classexpr3.js.trap create mode 100644 javascript/extractor/tests/cfg/output/trap/classexpr4.js.trap create mode 100644 javascript/extractor/tests/cfg/output/trap/fields.js.trap create mode 100644 javascript/extractor/tests/cfg/output/trap/seq.js.trap create mode 100644 javascript/extractor/tests/cfg/output/trap/short-circuit.js.trap create mode 100644 javascript/extractor/tests/cfg/output/trap/ternary.js.trap create mode 100644 javascript/extractor/tests/cfg/output/trap/tst.js.trap create mode 100644 javascript/extractor/tests/comments/input/comments.js create mode 100644 javascript/extractor/tests/comments/input/empty_comment.js create mode 100644 javascript/extractor/tests/comments/input/jsdoc.js create mode 100644 javascript/extractor/tests/comments/output/trap/comments.js.trap create mode 100644 javascript/extractor/tests/comments/output/trap/empty_comment.js.trap create mode 100644 javascript/extractor/tests/comments/output/trap/jsdoc.js.trap create mode 100644 javascript/extractor/tests/default-encoding/input/latin1.js create mode 100644 javascript/extractor/tests/default-encoding/options.json create mode 100644 javascript/extractor/tests/default-encoding/output/trap/latin1.js.trap create mode 100644 javascript/extractor/tests/encoding/input/surrogates.js create mode 100644 javascript/extractor/tests/encoding/input/unicode.js create mode 100644 javascript/extractor/tests/encoding/output/trap/surrogates.js.trap create mode 100644 javascript/extractor/tests/encoding/output/trap/unicode.js.trap create mode 100644 javascript/extractor/tests/errors/input/empty.js create mode 100644 javascript/extractor/tests/errors/input/errors.js create mode 100644 javascript/extractor/tests/errors/input/incomplete.js create mode 100644 javascript/extractor/tests/errors/input/json.js create mode 100644 javascript/extractor/tests/errors/input/weirdassign.js create mode 100644 javascript/extractor/tests/errors/output/trap/empty.js.trap create mode 100644 javascript/extractor/tests/errors/output/trap/errors.js.trap create mode 100644 javascript/extractor/tests/errors/output/trap/incomplete.js.trap create mode 100644 javascript/extractor/tests/errors/output/trap/json.js.trap create mode 100644 javascript/extractor/tests/errors/output/trap/weirdassign.js.trap create mode 100644 javascript/extractor/tests/es2015/input/array_pattern_with_default.js create mode 100644 javascript/extractor/tests/es2015/input/array_pattern_with_rest.js create mode 100644 javascript/extractor/tests/es2015/input/arrowfn.js create mode 100644 javascript/extractor/tests/es2015/input/class_accessors.js create mode 100644 javascript/extractor/tests/es2015/input/class_ctor.js create mode 100644 javascript/extractor/tests/es2015/input/class_extends.js create mode 100644 javascript/extractor/tests/es2015/input/class_extends2.js create mode 100644 javascript/extractor/tests/es2015/input/class_method.js create mode 100644 javascript/extractor/tests/es2015/input/class_static.js create mode 100644 javascript/extractor/tests/es2015/input/classdecl.js create mode 100644 javascript/extractor/tests/es2015/input/classexpr.js create mode 100644 javascript/extractor/tests/es2015/input/classexpr2.js create mode 100644 javascript/extractor/tests/es2015/input/complex_array_pattern.js create mode 100644 javascript/extractor/tests/es2015/input/complex_object_pattern.js create mode 100644 javascript/extractor/tests/es2015/input/const.js create mode 100644 javascript/extractor/tests/es2015/input/defaultargs.js create mode 100644 javascript/extractor/tests/es2015/input/delegating_yield.js create mode 100644 javascript/extractor/tests/es2015/input/destructuring.js create mode 100644 javascript/extractor/tests/es2015/input/export1.js create mode 100644 javascript/extractor/tests/es2015/input/export10.js create mode 100644 javascript/extractor/tests/es2015/input/export11.js create mode 100644 javascript/extractor/tests/es2015/input/export2.js create mode 100644 javascript/extractor/tests/es2015/input/export3.js create mode 100644 javascript/extractor/tests/es2015/input/export4.js create mode 100644 javascript/extractor/tests/es2015/input/export5.js create mode 100644 javascript/extractor/tests/es2015/input/export6.js create mode 100644 javascript/extractor/tests/es2015/input/export7.js create mode 100644 javascript/extractor/tests/es2015/input/export8.js create mode 100644 javascript/extractor/tests/es2015/input/export9.js create mode 100644 javascript/extractor/tests/es2015/input/forof.js create mode 100644 javascript/extractor/tests/es2015/input/import1.js create mode 100644 javascript/extractor/tests/es2015/input/import2.js create mode 100644 javascript/extractor/tests/es2015/input/import3.js create mode 100644 javascript/extractor/tests/es2015/input/import4.js create mode 100644 javascript/extractor/tests/es2015/input/import5.js create mode 100644 javascript/extractor/tests/es2015/input/import6.js create mode 100644 javascript/extractor/tests/es2015/input/import7.js create mode 100644 javascript/extractor/tests/es2015/input/let.js create mode 100644 javascript/extractor/tests/es2015/input/let2.js create mode 100644 javascript/extractor/tests/es2015/input/nested_import.js create mode 100644 javascript/extractor/tests/es2015/input/new_target.js create mode 100644 javascript/extractor/tests/es2015/input/no-substitution.js create mode 100644 javascript/extractor/tests/es2015/input/nullMethodName.js create mode 100644 javascript/extractor/tests/es2015/input/odasa-2593.js create mode 100644 javascript/extractor/tests/es2015/input/properties.js create mode 100644 javascript/extractor/tests/es2015/input/property_pattern_with_default.js create mode 100644 javascript/extractor/tests/es2015/input/restparms.js create mode 100644 javascript/extractor/tests/es2015/input/restparms2.js create mode 100644 javascript/extractor/tests/es2015/input/spreadelement.js create mode 100644 javascript/extractor/tests/es2015/input/super_call.js create mode 100644 javascript/extractor/tests/es2015/input/super_ctor.js create mode 100644 javascript/extractor/tests/es2015/input/templates.js create mode 100644 javascript/extractor/tests/es2015/input/unknown_meta_property.js create mode 100644 javascript/extractor/tests/es2015/input/yield.js create mode 100644 javascript/extractor/tests/es2015/input/yield2.js create mode 100644 javascript/extractor/tests/es2015/output/trap/array_pattern_with_default.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/array_pattern_with_rest.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/arrowfn.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/class_accessors.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/class_ctor.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/class_extends.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/class_extends2.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/class_method.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/class_static.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/classdecl.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/classexpr.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/classexpr2.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/complex_array_pattern.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/complex_object_pattern.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/const.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/defaultargs.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/delegating_yield.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/destructuring.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/export1.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/export10.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/export11.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/export2.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/export3.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/export4.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/export5.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/export6.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/export7.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/export8.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/export9.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/forof.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/import1.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/import2.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/import3.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/import4.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/import5.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/import6.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/import7.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/let.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/let2.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/nested_import.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/new_target.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/no-substitution.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/nullMethodName.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/odasa-2593.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/properties.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/property_pattern_with_default.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/restparms.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/restparms2.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/spreadelement.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/super_call.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/super_ctor.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/templates.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/unknown_meta_property.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/yield.js.trap create mode 100644 javascript/extractor/tests/es2015/output/trap/yield2.js.trap create mode 100644 javascript/extractor/tests/es2016/input/exp.js create mode 100644 javascript/extractor/tests/es2016/input/usestrict.js create mode 100644 javascript/extractor/tests/es2016/output/trap/exp.js.trap create mode 100644 javascript/extractor/tests/es2016/output/trap/usestrict.js.trap create mode 100644 javascript/extractor/tests/es2017/input/async-await.js create mode 100644 javascript/extractor/tests/es2017/input/export-async-1.js create mode 100644 javascript/extractor/tests/es2017/input/export-async-2.js create mode 100644 javascript/extractor/tests/es2017/input/invalid-async-fn.js create mode 100644 javascript/extractor/tests/es2017/input/shorthand-prop-async.js create mode 100644 javascript/extractor/tests/es2017/options.json create mode 100644 javascript/extractor/tests/es2017/output/trap/async-await.js.trap create mode 100644 javascript/extractor/tests/es2017/output/trap/export-async-1.js.trap create mode 100644 javascript/extractor/tests/es2017/output/trap/export-async-2.js.trap create mode 100644 javascript/extractor/tests/es2017/output/trap/invalid-async-fn.js.trap create mode 100644 javascript/extractor/tests/es2017/output/trap/shorthand-prop-async.js.trap create mode 100644 javascript/extractor/tests/es2018/input/templates.js create mode 100644 javascript/extractor/tests/es2018/options.json create mode 100644 javascript/extractor/tests/es2018/output/trap/templates.js.trap create mode 100644 javascript/extractor/tests/esnext/input/async-generators.js create mode 100644 javascript/extractor/tests/esnext/input/catchGuardAndNoBinding.js create mode 100644 javascript/extractor/tests/esnext/input/catchNoBinding.js create mode 100644 javascript/extractor/tests/esnext/input/dynamic-import.js create mode 100644 javascript/extractor/tests/esnext/input/fields.js create mode 100644 javascript/extractor/tests/esnext/options.json create mode 100644 javascript/extractor/tests/esnext/output/trap/async-generators.js.trap create mode 100644 javascript/extractor/tests/esnext/output/trap/catchGuardAndNoBinding.js.trap create mode 100644 javascript/extractor/tests/esnext/output/trap/catchNoBinding.js.trap create mode 100644 javascript/extractor/tests/esnext/output/trap/dynamic-import.js.trap create mode 100644 javascript/extractor/tests/esnext/output/trap/fields.js.trap create mode 100644 javascript/extractor/tests/excludes/input/.jshintignore create mode 100644 javascript/extractor/tests/excludes/input/a.js create mode 100644 javascript/extractor/tests/excludes/input/baz/a.js create mode 100644 javascript/extractor/tests/excludes/input/f/bar.js create mode 100644 javascript/extractor/tests/excludes/input/f/empty.json create mode 100644 javascript/extractor/tests/excludes/input/f/foo.js create mode 100644 javascript/extractor/tests/excludes/options.json create mode 100644 javascript/extractor/tests/excludes/output/trap/a.js.trap create mode 100644 javascript/extractor/tests/excludes/output/trap/empty.json.trap create mode 100644 javascript/extractor/tests/exprs/input/assignment.js create mode 100644 javascript/extractor/tests/exprs/input/binary.js create mode 100644 javascript/extractor/tests/exprs/input/comparison.js create mode 100644 javascript/extractor/tests/exprs/input/fnnesting.js create mode 100644 javascript/extractor/tests/exprs/input/others.js create mode 100644 javascript/extractor/tests/exprs/input/parens.js create mode 100644 javascript/extractor/tests/exprs/input/primaries.js create mode 100644 javascript/extractor/tests/exprs/input/regexp.js create mode 100644 javascript/extractor/tests/exprs/input/unary.js create mode 100644 javascript/extractor/tests/exprs/input/update.js create mode 100644 javascript/extractor/tests/exprs/output/trap/assignment.js.trap create mode 100644 javascript/extractor/tests/exprs/output/trap/binary.js.trap create mode 100644 javascript/extractor/tests/exprs/output/trap/comparison.js.trap create mode 100644 javascript/extractor/tests/exprs/output/trap/fnnesting.js.trap create mode 100644 javascript/extractor/tests/exprs/output/trap/others.js.trap create mode 100644 javascript/extractor/tests/exprs/output/trap/parens.js.trap create mode 100644 javascript/extractor/tests/exprs/output/trap/primaries.js.trap create mode 100644 javascript/extractor/tests/exprs/output/trap/regexp.js.trap create mode 100644 javascript/extractor/tests/exprs/output/trap/unary.js.trap create mode 100644 javascript/extractor/tests/exprs/output/trap/update.js.trap create mode 100644 javascript/extractor/tests/extensions/input/tst.es6 create mode 100644 javascript/extractor/tests/extensions/input/tst2.es create mode 100644 javascript/extractor/tests/extensions/output/trap/tst.es6.trap create mode 100644 javascript/extractor/tests/extensions/output/trap/tst2.es.trap create mode 100644 javascript/extractor/tests/externs/input/Point.js create mode 100644 javascript/extractor/tests/externs/options.json create mode 100644 javascript/extractor/tests/externs/output/trap/Point.js.trap create mode 100644 javascript/extractor/tests/flow/input/anonFunctionOptionalParm.js create mode 100644 javascript/extractor/tests/flow/input/anonFunctionReturnType.js create mode 100644 javascript/extractor/tests/flow/input/anonFunctionWithoutParens.js create mode 100644 javascript/extractor/tests/flow/input/anonIndexer.js create mode 100644 javascript/extractor/tests/flow/input/async.js create mode 100644 javascript/extractor/tests/flow/input/atAtIteratorProp.js create mode 100644 javascript/extractor/tests/flow/input/complexParamTypes.js create mode 100644 javascript/extractor/tests/flow/input/complexParamTypes2.js create mode 100644 javascript/extractor/tests/flow/input/declareExport.js create mode 100644 javascript/extractor/tests/flow/input/declareModuleExports.js create mode 100644 javascript/extractor/tests/flow/input/exportOpaqueType.js create mode 100644 javascript/extractor/tests/flow/input/importType.js create mode 100644 javascript/extractor/tests/flow/input/methodTypeParams.js create mode 100644 javascript/extractor/tests/flow/input/objectTypeSpread.js create mode 100644 javascript/extractor/tests/flow/input/optParms.js create mode 100644 javascript/extractor/tests/flow/input/parmAnonFunctionType.js create mode 100644 javascript/extractor/tests/flow/input/qualifiedInterface.js create mode 100644 javascript/extractor/tests/flow/input/tst.js create mode 100644 javascript/extractor/tests/flow/input/variance.js create mode 100644 javascript/extractor/tests/flow/options.json create mode 100644 javascript/extractor/tests/flow/output/trap/anonFunctionOptionalParm.js.trap create mode 100644 javascript/extractor/tests/flow/output/trap/anonFunctionReturnType.js.trap create mode 100644 javascript/extractor/tests/flow/output/trap/anonFunctionWithoutParens.js.trap create mode 100644 javascript/extractor/tests/flow/output/trap/anonIndexer.js.trap create mode 100644 javascript/extractor/tests/flow/output/trap/async.js.trap create mode 100644 javascript/extractor/tests/flow/output/trap/atAtIteratorProp.js.trap create mode 100644 javascript/extractor/tests/flow/output/trap/complexParamTypes.js.trap create mode 100644 javascript/extractor/tests/flow/output/trap/complexParamTypes2.js.trap create mode 100644 javascript/extractor/tests/flow/output/trap/declareExport.js.trap create mode 100644 javascript/extractor/tests/flow/output/trap/declareModuleExports.js.trap create mode 100644 javascript/extractor/tests/flow/output/trap/exportOpaqueType.js.trap create mode 100644 javascript/extractor/tests/flow/output/trap/importType.js.trap create mode 100644 javascript/extractor/tests/flow/output/trap/methodTypeParams.js.trap create mode 100644 javascript/extractor/tests/flow/output/trap/objectTypeSpread.js.trap create mode 100644 javascript/extractor/tests/flow/output/trap/optParms.js.trap create mode 100644 javascript/extractor/tests/flow/output/trap/parmAnonFunctionType.js.trap create mode 100644 javascript/extractor/tests/flow/output/trap/qualifiedInterface.js.trap create mode 100644 javascript/extractor/tests/flow/output/trap/tst.js.trap create mode 100644 javascript/extractor/tests/flow/output/trap/variance.js.trap create mode 100644 javascript/extractor/tests/functionbind/input/tst.js create mode 100644 javascript/extractor/tests/functionbind/options.json create mode 100644 javascript/extractor/tests/functionbind/output/trap/tst.js.trap create mode 100644 javascript/extractor/tests/helloworld/input/hello.js create mode 100644 javascript/extractor/tests/helloworld/output/trap/hello.js.trap create mode 100644 javascript/extractor/tests/html-text-extraction/input/text-examples.html create mode 100644 javascript/extractor/tests/html-text-extraction/options.json create mode 100644 javascript/extractor/tests/html-text-extraction/output/trap/text-examples.html.trap create mode 100644 javascript/extractor/tests/html/input/doctype.html create mode 100644 javascript/extractor/tests/html/input/empty_script.html create mode 100644 javascript/extractor/tests/html/input/entities.html create mode 100644 javascript/extractor/tests/html/input/module.html create mode 100644 javascript/extractor/tests/html/input/q.html create mode 100644 javascript/extractor/tests/html/input/tst.html create mode 100644 javascript/extractor/tests/html/input/tst.xhtml create mode 100644 javascript/extractor/tests/html/input/tst2.html create mode 100644 javascript/extractor/tests/html/input/tst2.xhtml create mode 100644 javascript/extractor/tests/html/output/trap/doctype.html.trap create mode 100644 javascript/extractor/tests/html/output/trap/empty_script.html.trap create mode 100644 javascript/extractor/tests/html/output/trap/entities.html.trap create mode 100644 javascript/extractor/tests/html/output/trap/module.html.trap create mode 100644 javascript/extractor/tests/html/output/trap/q.html.trap create mode 100644 javascript/extractor/tests/html/output/trap/tst.html.trap create mode 100644 javascript/extractor/tests/html/output/trap/tst.xhtml.trap create mode 100644 javascript/extractor/tests/html/output/trap/tst2.html.trap create mode 100644 javascript/extractor/tests/html/output/trap/tst2.xhtml.trap create mode 100644 javascript/extractor/tests/jscript/input/tst.js create mode 100644 javascript/extractor/tests/jscript/options.json create mode 100644 javascript/extractor/tests/jscript/output/trap/tst.js.trap create mode 100644 javascript/extractor/tests/json/input/array.json create mode 100644 javascript/extractor/tests/json/input/comments.json create mode 100644 javascript/extractor/tests/json/input/duplicate-keys.json create mode 100644 javascript/extractor/tests/json/input/empty.json create mode 100644 javascript/extractor/tests/json/input/error.json create mode 100644 javascript/extractor/tests/json/input/f/ignored.json create mode 100644 javascript/extractor/tests/json/input/invalid.json create mode 100644 javascript/extractor/tests/json/input/neg.json create mode 100644 javascript/extractor/tests/json/input/neg2.json create mode 100644 javascript/extractor/tests/json/input/null.json create mode 100644 javascript/extractor/tests/json/input/omitted.json create mode 100644 javascript/extractor/tests/json/input/tst.json create mode 100644 javascript/extractor/tests/json/output/trap/array.json.trap create mode 100644 javascript/extractor/tests/json/output/trap/comments.json.trap create mode 100644 javascript/extractor/tests/json/output/trap/duplicate-keys.json.trap create mode 100644 javascript/extractor/tests/json/output/trap/empty.json.trap create mode 100644 javascript/extractor/tests/json/output/trap/error.json.trap create mode 100644 javascript/extractor/tests/json/output/trap/invalid.json.trap create mode 100644 javascript/extractor/tests/json/output/trap/neg.json.trap create mode 100644 javascript/extractor/tests/json/output/trap/neg2.json.trap create mode 100644 javascript/extractor/tests/json/output/trap/null.json.trap create mode 100644 javascript/extractor/tests/json/output/trap/omitted.json.trap create mode 100644 javascript/extractor/tests/json/output/trap/tst.json.trap create mode 100644 javascript/extractor/tests/jsx/input/err1.jsx create mode 100644 javascript/extractor/tests/jsx/input/err2.jsx create mode 100644 javascript/extractor/tests/jsx/input/err3.jsx create mode 100644 javascript/extractor/tests/jsx/input/err4.jsx create mode 100644 javascript/extractor/tests/jsx/input/tst.js create mode 100644 javascript/extractor/tests/jsx/input/tst.jsx create mode 100644 javascript/extractor/tests/jsx/input/tst2.js create mode 100644 javascript/extractor/tests/jsx/output/trap/err1.jsx.trap create mode 100644 javascript/extractor/tests/jsx/output/trap/err2.jsx.trap create mode 100644 javascript/extractor/tests/jsx/output/trap/err3.jsx.trap create mode 100644 javascript/extractor/tests/jsx/output/trap/err4.jsx.trap create mode 100644 javascript/extractor/tests/jsx/output/trap/tst.js.trap create mode 100644 javascript/extractor/tests/jsx/output/trap/tst.jsx.trap create mode 100644 javascript/extractor/tests/jsx/output/trap/tst2.js.trap create mode 100644 javascript/extractor/tests/mozilla/input/array_comprehensions.js create mode 100644 javascript/extractor/tests/mozilla/input/foreach.js create mode 100644 javascript/extractor/tests/mozilla/input/generator_expressions.js create mode 100644 javascript/extractor/tests/mozilla/input/guardedCatch.js create mode 100644 javascript/extractor/tests/mozilla/input/letExpr.js create mode 100644 javascript/extractor/tests/mozilla/input/letStmt.js create mode 100644 javascript/extractor/tests/mozilla/input/letStmt2.js create mode 100644 javascript/extractor/tests/mozilla/input/new-with-trailing-arg.js create mode 100644 javascript/extractor/tests/mozilla/input/odasa-2593.js create mode 100644 javascript/extractor/tests/mozilla/options.json create mode 100644 javascript/extractor/tests/mozilla/output/trap/array_comprehensions.js.trap create mode 100644 javascript/extractor/tests/mozilla/output/trap/foreach.js.trap create mode 100644 javascript/extractor/tests/mozilla/output/trap/generator_expressions.js.trap create mode 100644 javascript/extractor/tests/mozilla/output/trap/guardedCatch.js.trap create mode 100644 javascript/extractor/tests/mozilla/output/trap/letExpr.js.trap create mode 100644 javascript/extractor/tests/mozilla/output/trap/letStmt.js.trap create mode 100644 javascript/extractor/tests/mozilla/output/trap/letStmt2.js.trap create mode 100644 javascript/extractor/tests/mozilla/output/trap/new-with-trailing-arg.js.trap create mode 100644 javascript/extractor/tests/mozilla/output/trap/odasa-2593.js.trap create mode 100644 javascript/extractor/tests/node/input/constlet.js create mode 100644 javascript/extractor/tests/node/input/empty create mode 100644 javascript/extractor/tests/node/input/f/ignored.json create mode 100644 javascript/extractor/tests/node/input/f/package.json create mode 100644 javascript/extractor/tests/node/input/g/hello create mode 100644 javascript/extractor/tests/node/input/tst.html create mode 100644 javascript/extractor/tests/node/input/tst.js create mode 100644 javascript/extractor/tests/node/input/tst.mjs create mode 100644 javascript/extractor/tests/node/options.json create mode 100644 javascript/extractor/tests/node/output/trap/constlet.js.trap create mode 100644 javascript/extractor/tests/node/output/trap/hello.trap create mode 100644 javascript/extractor/tests/node/output/trap/package.json.trap create mode 100644 javascript/extractor/tests/node/output/trap/tst.html.trap create mode 100644 javascript/extractor/tests/node/output/trap/tst.js.trap create mode 100644 javascript/extractor/tests/node/output/trap/tst.mjs.trap create mode 100644 javascript/extractor/tests/project-layout create mode 100644 javascript/extractor/tests/rcfiles/input/.babelrc create mode 100644 javascript/extractor/tests/rcfiles/input/.eslintrc create mode 100644 javascript/extractor/tests/rcfiles/input/.npmrc create mode 100644 javascript/extractor/tests/rcfiles/output/trap/.babelrc.trap create mode 100644 javascript/extractor/tests/rcfiles/output/trap/.eslintrc.trap create mode 100644 javascript/extractor/tests/regexp/input/es2018.js create mode 100644 javascript/extractor/tests/regexp/input/nonstandard.js create mode 100644 javascript/extractor/tests/regexp/input/odasa-1934.js create mode 100644 javascript/extractor/tests/regexp/output/trap/es2018.js.trap create mode 100644 javascript/extractor/tests/regexp/output/trap/nonstandard.js.trap create mode 100644 javascript/extractor/tests/regexp/output/trap/odasa-1934.js.trap create mode 100644 javascript/extractor/tests/restprops/input/tst.js create mode 100644 javascript/extractor/tests/restprops/options.json create mode 100644 javascript/extractor/tests/restprops/output/trap/tst.js.trap create mode 100644 javascript/extractor/tests/shebang/input/tst.html create mode 100644 javascript/extractor/tests/shebang/input/tst.js create mode 100644 javascript/extractor/tests/shebang/output/trap/tst.html.trap create mode 100644 javascript/extractor/tests/shebang/output/trap/tst.js.trap create mode 100644 javascript/extractor/tests/stmts/input/conditionals.js create mode 100644 javascript/extractor/tests/stmts/input/forvardefault.js create mode 100644 javascript/extractor/tests/stmts/input/functions.js create mode 100644 javascript/extractor/tests/stmts/input/loops.js create mode 100644 javascript/extractor/tests/stmts/input/others.js create mode 100644 javascript/extractor/tests/stmts/input/switch.js create mode 100644 javascript/extractor/tests/stmts/input/switch2.js create mode 100644 javascript/extractor/tests/stmts/input/trivial-switch.js create mode 100644 javascript/extractor/tests/stmts/input/try.js create mode 100644 javascript/extractor/tests/stmts/output/trap/conditionals.js.trap create mode 100644 javascript/extractor/tests/stmts/output/trap/forvardefault.js.trap create mode 100644 javascript/extractor/tests/stmts/output/trap/functions.js.trap create mode 100644 javascript/extractor/tests/stmts/output/trap/loops.js.trap create mode 100644 javascript/extractor/tests/stmts/output/trap/others.js.trap create mode 100644 javascript/extractor/tests/stmts/output/trap/switch.js.trap create mode 100644 javascript/extractor/tests/stmts/output/trap/switch2.js.trap create mode 100644 javascript/extractor/tests/stmts/output/trap/trivial-switch.js.trap create mode 100644 javascript/extractor/tests/stmts/output/trap/try.js.trap create mode 100644 javascript/extractor/tests/strictmode/input/assignargs.js create mode 100644 javascript/extractor/tests/strictmode/input/tst.js create mode 100644 javascript/extractor/tests/strictmode/output/trap/assignargs.js.trap create mode 100644 javascript/extractor/tests/strictmode/output/trap/tst.js.trap create mode 100644 javascript/extractor/tests/ts-full/input/tsconfig.json create mode 100644 javascript/extractor/tests/ts-full/input/tst.ts create mode 100644 javascript/extractor/tests/ts-full/output/trap/tsconfig.json.trap create mode 100644 javascript/extractor/tests/ts-full/output/trap/tst.ts.trap create mode 100644 javascript/extractor/tests/ts/input/arrayBindingPattern.ts create mode 100644 javascript/extractor/tests/ts/input/badimport.ts create mode 100644 javascript/extractor/tests/ts/input/bindingpattern.ts create mode 100644 javascript/extractor/tests/ts/input/bom.ts create mode 100644 javascript/extractor/tests/ts/input/classes.ts create mode 100644 javascript/extractor/tests/ts/input/comments.ts create mode 100644 javascript/extractor/tests/ts/input/conditionalTypes.ts create mode 100644 javascript/extractor/tests/ts/input/ctordecl.ts create mode 100644 javascript/extractor/tests/ts/input/declareClass.ts create mode 100644 javascript/extractor/tests/ts/input/decorators.ts create mode 100644 javascript/extractor/tests/ts/input/emptydecls.ts create mode 100644 javascript/extractor/tests/ts/input/enum.ts create mode 100644 javascript/extractor/tests/ts/input/export.ts create mode 100644 javascript/extractor/tests/ts/input/export2.ts create mode 100644 javascript/extractor/tests/ts/input/exportasnamespace.d.ts create mode 100644 javascript/extractor/tests/ts/input/exportassign.ts create mode 100644 javascript/extractor/tests/ts/input/exprs.ts create mode 100644 javascript/extractor/tests/ts/input/externalmodule.ts create mode 100644 javascript/extractor/tests/ts/input/functiondecorators.ts create mode 100644 javascript/extractor/tests/ts/input/hello.ts create mode 100644 javascript/extractor/tests/ts/input/importExport.ts create mode 100644 javascript/extractor/tests/ts/input/importassign.ts create mode 100644 javascript/extractor/tests/ts/input/interfaces.ts create mode 100644 javascript/extractor/tests/ts/input/invalidModuleSpecifier.ts create mode 100644 javascript/extractor/tests/ts/input/klee-binary-file.ts create mode 100644 javascript/extractor/tests/ts/input/let.ts create mode 100644 javascript/extractor/tests/ts/input/mappedTypeModifiers.ts create mode 100644 javascript/extractor/tests/ts/input/mpeg-stream-fragment.ts create mode 100644 javascript/extractor/tests/ts/input/namespaces.ts create mode 100644 javascript/extractor/tests/ts/input/nestedNamespace.ts create mode 100644 javascript/extractor/tests/ts/input/nobody.ts create mode 100644 javascript/extractor/tests/ts/input/objectLiteralAccessor.ts create mode 100644 javascript/extractor/tests/ts/input/omitted.ts create mode 100644 javascript/extractor/tests/ts/input/regexp.ts create mode 100644 javascript/extractor/tests/ts/input/templates.ts create mode 100644 javascript/extractor/tests/ts/input/thisparameter.ts create mode 100644 javascript/extractor/tests/ts/input/trust-store-file.ts create mode 100644 javascript/extractor/tests/ts/input/tryfinally.ts create mode 100644 javascript/extractor/tests/ts/input/tsx.tsx create mode 100644 javascript/extractor/tests/ts/input/typeannotations.ts create mode 100644 javascript/extractor/tests/ts/input/unicode.ts create mode 100644 javascript/extractor/tests/ts/input/unicodeId.ts create mode 100644 javascript/extractor/tests/ts/input/uninstantiatedNamespace.ts create mode 100644 javascript/extractor/tests/ts/input/xmlfile-utf16be.ts create mode 100644 javascript/extractor/tests/ts/input/xmlfile-utf16le.ts create mode 100644 javascript/extractor/tests/ts/input/xmlfile.ts create mode 100644 javascript/extractor/tests/ts/options.json create mode 100644 javascript/extractor/tests/ts/output/trap/arrayBindingPattern.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/badimport.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/bindingpattern.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/bom.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/classes.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/comments.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/ctordecl.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/declareClass.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/decorators.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/emptydecls.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/enum.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/export.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/export2.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/exportasnamespace.d.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/exportassign.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/exprs.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/externalmodule.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/functiondecorators.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/hello.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/importExport.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/importassign.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/interfaces.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/invalidModuleSpecifier.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/let.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/mappedTypeModifiers.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/namespaces.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/nestedNamespace.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/nobody.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/objectLiteralAccessor.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/omitted.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/regexp.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/templates.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/thisparameter.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/tryfinally.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/tsx.tsx.trap create mode 100644 javascript/extractor/tests/ts/output/trap/typeannotations.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/unicode.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/unicodeId.ts.trap create mode 100644 javascript/extractor/tests/ts/output/trap/uninstantiatedNamespace.ts.trap create mode 100644 javascript/extractor/tests/v8/input/tst.js create mode 100644 javascript/extractor/tests/v8/options.json create mode 100644 javascript/extractor/tests/v8/output/trap/tst.js.trap create mode 100644 javascript/extractor/tests/variables/input/const.js create mode 100644 javascript/extractor/tests/variables/input/finally.js create mode 100644 javascript/extractor/tests/variables/input/switch.js create mode 100644 javascript/extractor/tests/variables/input/try.js create mode 100644 javascript/extractor/tests/variables/input/variables.js create mode 100644 javascript/extractor/tests/variables/output/trap/const.js.trap create mode 100644 javascript/extractor/tests/variables/output/trap/finally.js.trap create mode 100644 javascript/extractor/tests/variables/output/trap/switch.js.trap create mode 100644 javascript/extractor/tests/variables/output/trap/try.js.trap create mode 100644 javascript/extractor/tests/variables/output/trap/variables.js.trap create mode 100644 javascript/extractor/tests/vue/input/test.vue create mode 100644 javascript/extractor/tests/vue/output/trap/test.vue.trap create mode 100644 javascript/extractor/tests/yaml/input/cyclic.yaml create mode 100644 javascript/extractor/tests/yaml/input/merge.yaml create mode 100644 javascript/extractor/tests/yaml/input/tst.yml create mode 100644 javascript/extractor/tests/yaml/output/trap/cyclic.yaml.trap create mode 100644 javascript/extractor/tests/yaml/output/trap/merge.yaml.trap create mode 100644 javascript/extractor/tests/yaml/output/trap/tst.yml.trap create mode 100755 javascript/extractor/util/dotify-cfg.sh diff --git a/javascript/extractor/.classpath b/javascript/extractor/.classpath new file mode 100644 index 00000000000..73c9db8bc49 --- /dev/null +++ b/javascript/extractor/.classpath @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/javascript/extractor/.gitignore b/javascript/extractor/.gitignore new file mode 100644 index 00000000000..7167a4acbb5 --- /dev/null +++ b/javascript/extractor/.gitignore @@ -0,0 +1,2 @@ +node_modules +/bin diff --git a/javascript/extractor/.project b/javascript/extractor/.project new file mode 100644 index 00000000000..b653bbd47da --- /dev/null +++ b/javascript/extractor/.project @@ -0,0 +1,17 @@ + + + extractor-javascript + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/javascript/extractor/.settings/org.eclipse.core.resources.prefs b/javascript/extractor/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000000..c24fa5440e5 --- /dev/null +++ b/javascript/extractor/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +encoding//tests/ts/input/xmlfile-utf16be.ts=UTF-16BE +encoding//tests/ts/input/xmlfile-utf16le.ts=UTF-16LE diff --git a/javascript/extractor/README.md b/javascript/extractor/README.md new file mode 100644 index 00000000000..9f6d4190a33 --- /dev/null +++ b/javascript/extractor/README.md @@ -0,0 +1,9 @@ +# JavaScript extractor + +This directory contains the source code of the JavaScript extractor. The extractor depends on various libraries that are not currently bundled with the source code, so at present it cannot be built in isolation. + +The extractor consists of a parser for the latest version of ECMAScript, including a few proposed and historic extensions (see `src/com/semmle/jcorn`), classes for representing JavaScript and TypeScript ASTs (`src/com/semmle/js/ast` and `src/com/semmle/ts/ast`), and various other bits of functionality. Historically, the main entry point of the JavaScript extractor has been `com.semmle.js.extractor.Main`. However, this class is slowly being phased out in favour of `com.semmle.js.extractor.AutoBuild`, which is the entry point used by LGTM. + +## License + +Like the LGTM queries, the JavaScript extractor is licensed under [Apache License 2.0](LICENSE) by [Semmle](https://semmle.com). diff --git a/javascript/extractor/lib/esregex/.gitignore b/javascript/extractor/lib/esregex/.gitignore new file mode 100644 index 00000000000..b512c09d476 --- /dev/null +++ b/javascript/extractor/lib/esregex/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/javascript/extractor/lib/esregex/README.md b/javascript/extractor/lib/esregex/README.md new file mode 100644 index 00000000000..c0d5763ad7d --- /dev/null +++ b/javascript/extractor/lib/esregex/README.md @@ -0,0 +1,4 @@ +esregex +======= + +Parser for ECMAScript 2018 regular expressions. diff --git a/javascript/extractor/lib/esregex/package.json b/javascript/extractor/lib/esregex/package.json new file mode 100644 index 00000000000..da9170e6f91 --- /dev/null +++ b/javascript/extractor/lib/esregex/package.json @@ -0,0 +1,13 @@ +{ + "name": "esregex", + "version": "1.0.0", + "author": "Semmle", + "description": "Parser for ECMAScript 2018 regular expressions", + "devDependencies": { + "nodeunit": "*" + }, + "scripts": { + "test": "node tests/runtests.js" + }, + "license": "Apache 2.0" +} diff --git a/javascript/extractor/lib/esregex/regexparser.js b/javascript/extractor/lib/esregex/regexparser.js new file mode 100644 index 00000000000..0afd4a19460 --- /dev/null +++ b/javascript/extractor/lib/esregex/regexparser.js @@ -0,0 +1,477 @@ +function RegExpParser(src) { + this.src = src; + this.pos = 0; + this.errors = []; + this.backrefs = []; + this.maxbackref = 0; +} + +RegExpParser.prototype.parse = function() { + var res = this.Pattern(); + this.backrefs.forEach(function(backref) { + if (backref.value > this.maxbackref) + this.error(RegExpParser.INVALID_BACKREF, backref.range[0], backref.range[1]); + }, this); + return res; +}; + +RegExpParser.prototype.setRange = function(start, node) { + node.range = [start, this.pos]; + return node; +}; + +RegExpParser.UNEXPECTED_EOS = 0; +RegExpParser.UNEXPECTED_CHARACTER = 1; +RegExpParser.EXPECTED_DIGIT = 2; +RegExpParser.EXPECTED_HEX_DIGIT = 3; +RegExpParser.EXPECTED_CONTROL_LETTER = 4; +RegExpParser.EXPECTED_CLOSING_PAREN = 5; +RegExpParser.EXPECTED_CLOSING_BRACE = 6; +RegExpParser.EXPECTED_EOS = 7; +RegExpParser.OCTAL_ESCAPE = 8; +RegExpParser.INVALID_BACKREF = 9; +RegExpParser.EXPECTED_RBRACKET = 10; +RegExpParser.EXPECTED_IDENTIFIER = 11; +RegExpParser.EXPECTED_CLOSING_ANGLE = 12; + +RegExpParser.prototype.error = function(code, start, end) { + if (typeof start !== 'number') + start = this.pos; + if (typeof end !== 'number') + end = start+1; + this.errors.push({ + type: 'Error', + code: code, + range: [start, end || start+1] + }); +}; + +RegExpParser.prototype.atEOS = function() { + return this.pos >= this.src.length; +}; + +RegExpParser.prototype.nextChar = function() { + if (this.atEOS()) { + this.error(RegExpParser.UNEXPECTED_EOS); + return '\0'; + } else { + return this.src.substring(this.pos, ++this.pos); + } +}; + +RegExpParser.prototype.readHexDigit = function() { + if (/[0-9a-fA-F]/.test(this.src[this.pos])) + return this.nextChar(); + this.error(RegExpParser.EXPECTED_HEX_DIGIT, this.pos); + return ''; +}; + +RegExpParser.prototype.readHexDigits = function(n) { + var res = ''; + while (n-->0) + res += this.readHexDigit(); + return res || '0'; +}; + +RegExpParser.prototype.readDigits = function(opt) { + var res = ""; + for (var c=this.src[this.pos]; /\d/.test(c); this.nextChar(), c=this.src[this.pos]) + res += c; + if (!res.length && !opt) + this.error(RegExpParser.EXPECTED_DIGIT); + return res; +}; + +RegExpParser.prototype.readIdentifier = function() { + var res = ''; + for (var c=this.src[this.pos]; c && /\w/.test(c); this.nextChar(), c=this.src[this.pos]) + res += c; + if (!res.length) + this.error(RegExpParser.EXPECTED_IDENTIFIER); + return res; +}; + +RegExpParser.prototype.expectRParen = function() { + if (!this.match(")")) + this.error(RegExpParser.EXPECTED_CLOSING_PAREN, this.pos-1); +}; + +RegExpParser.prototype.expectRBrace = function() { + if (!this.match("}")) + this.error(RegExpParser.EXPECTED_CLOSING_BRACE, this.pos-1); +}; + +RegExpParser.prototype.expectRAngle = function() { + if (!this.match(">")) + this.error(RegExpParser.EXPECTED_CLOSING_ANGLE, this.pos-1); +} + +RegExpParser.prototype.lookahead = function() { + for (var i=0,n=arguments.length; i" + }; + } + + if (this.match("p{", "P{")) { + var name = this.readIdentifier(), value = null; + if (this.match("=")) + value = this.readIdentifier(); + this.expectRBrace(); + return { + type: 'UnicodePropertyEscape', + name: name, + value: value, + raw: '\\p{' + name + (value ? '=' + value : '') + '}' + }; + } + + var startpos = this.pos-1, + c = this.nextChar(); + + if (/[0-9]/.test(c)) { + raw = c + this.readDigits(true); + if (c === '0' || inCharClass) { + var base = c === '0' && raw.length > 1 ? 8 : 10; + codepoint = parseInt(raw, base); + value = String.fromCharCode(codepoint); + var type; + if (base === 8) { + type = 'OctalEscape'; + this.error(RegExpParser.OCTAL_ESCAPE, startpos, this.pos); + } else { + type = 'DecimalEscape'; + } + + return { + type: type, + value: value, + codepoint: codepoint, + raw: '\\' + raw + }; + } else { + var br = { + type: 'BackReference', + value: parseInt(raw, 10), + raw: '\\' + raw + }; + this.backrefs.push(br); + return br; + } + } + + var ctrltab = "f\fn\nr\rt\tv\v", idx; + if ((idx=ctrltab.indexOf(c)) % 2 == 0) { + value = ctrltab.charAt(idx+1); + return { + type: 'ControlEscape', + value: value, + codepoint: value.charCodeAt(0), + raw: '\\' + c + }; + } + + if (c === 'c') { + c = this.nextChar(); + if (!/[a-zA-Z]/.test(c)) + this.error(RegExpParser.EXPECTED_CONTROL_LETTER, this.pos-1); + codepoint = c.charCodeAt(0) % 32; + return { + type: 'ControlLetter', + value: String.fromCharCode(codepoint), + codepoint: codepoint, + raw: '\\c' + c + }; + } + + if (/[dsw]/i.test(c)) { + return { + type: 'CharacterClassEscape', + class: c, + raw: '\\' + c + }; + } + + return { + type: 'IdentityEscape', + value: c, + codepoint: c.charCodeAt(0), + raw: '\\' + c + }; +}; + +RegExpParser.prototype.CharacterClass = function() { + var start = this.pos, + elements = []; + + this.match("["); + var inverted = this.match("^"); + while (!this.match("]")) { + if (this.atEOS()) { + this.error(RegExpParser.EXPECTED_RBRACKET); + break; + } + elements.push(this.CharacterClassElement()); + } + return this.setRange(start, { + type: 'CharacterClass', + elements: elements, + inverted: inverted + }); +}; + +RegExpParser.prototype.CharacterClassElement = function() { + var start = this.pos, + atom = this.CharacterClassAtom(); + if (!this.lookahead("-]") && this.match("-")) + return this.setRange(start, { + type: 'CharacterClassRange', + left: atom, + right: this.CharacterClassAtom() + }); + return atom; +}; + +RegExpParser.prototype.CharacterClassAtom = function() { + var start = this.pos, + c = this.nextChar(); + if (c === "\\") { + if (this.match("b")) + return this.setRange(start, { + type: 'ControlEscape', + value: '\b', + codepoint: 8, + raw: '\\b' + }); + return this.setRange(start, this.AtomEscape(true)); + } + return this.setRange(start, { type: 'Constant', value: c }); +}; + +if (typeof exports !== 'undefined') + exports.RegExpParser = RegExpParser; diff --git a/javascript/extractor/lib/esregex/tests/runtests.js b/javascript/extractor/lib/esregex/tests/runtests.js new file mode 100644 index 00000000000..bbe6945302d --- /dev/null +++ b/javascript/extractor/lib/esregex/tests/runtests.js @@ -0,0 +1,638 @@ +var reporter = require('nodeunit').reporters['default'], + RegExpParser = require('../regexparser').RegExpParser; + +function runtest(test, input, expected_output, expected_errors) { + var parser = new RegExpParser(input), + actual_output; + + try { + actual_output = parser.parse(); + } catch(e) { + test.fail(e.message); + test.done(); + return; + } + + expected_errors = expected_errors || []; + + test.deepEqual(actual_output, expected_output); + test.equal(parser.errors.length, expected_errors.length); + for (var i=0,n=parser.errors.length; i\\w+)", + { type: 'Group', + capture: true, + number: 1, + name: 'ws', + operand: + { type: 'Plus', + operand: + { type: 'CharacterClassEscape', + class: 'w', + raw: '\\w', + range: [ 6, 8 ] }, + greedy: true, + range: [ 6, 9 ] }, + range: [ 0, 10 ] }, + []); + }, + named_capture_group_empty_name: function(test) { + runtest(test, + "(?<>\\w+)", + { type: 'Group', + capture: true, + number: 1, + name: '', + operand: + { type: 'Plus', + operand: + { type: 'CharacterClassEscape', + class: 'w', + raw: '\\w', + range: [ 4, 6 ] }, + greedy: true, + range: [ 4, 7 ] }, + range: [ 0, 8 ] }, + [ { type: 'Error', code: 11, range: [ 3, 4 ] } ]); + }, + named_capture_group_missing_rangle: function(test) { + runtest(test, + "(?\\w+", + { type: 'Group', + capture: true, + number: 1, + name: 'ws', + operand: + { type: 'Plus', + operand: + { type: 'CharacterClassEscape', + class: 'w', + raw: '\\w', + range: [ 6, 8 ] }, + greedy: true, + range: [ 6, 9 ] }, + range: [ 0, 9 ] }, + [ { type: 'Error', code: 5, range: [ 8, 9 ] } ]); + }, + named_backref: function(test) { + runtest(test, + "\\k", + { type: 'NamedBackReference', + name: 'ws', + raw: '\\k', + range: [ 0, 6 ] }, + []); + }, + named_backref_empty_name: function(test) { + runtest(test, + "\\k<>", + { type: 'NamedBackReference', + name: '', + raw: '\\k<>', + range: [ 0, 4 ] }, + [ { type: 'Error', code: 11, range: [ 3, 4 ] } ]); + }, + named_backref_missing_rangle: function(test) { + runtest(test, + "\\k', + range: [ 0, 5 ] }, + [ { type: 'Error', code: 12, range: [ 4, 5 ] } ]); + }, + positive_lookbehind: function(test) { + runtest(test, + "(?<=\$)0", + { type: 'Sequence', + elements: + [ { type: 'ZeroWidthPositiveLookbehind', + operand: { type: 'Dollar', range: [ 4, 5 ] }, + range: [ 0, 6 ] }, + { type: 'Constant', value: '0', range: [ 6, 7 ] } ], + range: [ 0, 7 ] }, + []); + }, + negative_lookbehind: function(test) { + runtest(test, + "(? BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/javascript/extractor/lib/external/doctrine/LICENSE.closure-compiler b/javascript/extractor/lib/external/doctrine/LICENSE.closure-compiler new file mode 100644 index 00000000000..d6456956733 --- /dev/null +++ b/javascript/extractor/lib/external/doctrine/LICENSE.closure-compiler @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/javascript/extractor/lib/external/doctrine/LICENSE.esprima b/javascript/extractor/lib/external/doctrine/LICENSE.esprima new file mode 100644 index 00000000000..3e580c355a9 --- /dev/null +++ b/javascript/extractor/lib/external/doctrine/LICENSE.esprima @@ -0,0 +1,19 @@ +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/javascript/extractor/lib/external/doctrine/README.md b/javascript/extractor/lib/external/doctrine/README.md new file mode 100644 index 00000000000..5be6fa93299 --- /dev/null +++ b/javascript/extractor/lib/external/doctrine/README.md @@ -0,0 +1,173 @@ +doctrine ([doctrine](http://github.com/Constellation/doctrine)) is JSDoc parser. [![Build Status](https://secure.travis-ci.org/Constellation/doctrine.png)](http://travis-ci.org/Constellation/doctrine) + +It is now used by content assist system of [Eclipse Orion](http://www.eclipse.org/orion/) ([detail](http://planetorion.org/news/2012/10/orion-1-0-release/)) + +Doctrine can be used in a web browser: + + + +or in a Node.js application via the package manager: + + npm install doctrine + +simple example: + + doctrine.parse( + [ + "/**", + " * This function comment is parsed by doctrine", + " * @param {{ok:String}} userName", + "*/" + ].join('\n'), { unwrap: true }); + +and gets following information + + { + "description": "This function comment is parsed by doctrine", + "tags": [ + { + "title": "param", + "description": null, + "type": { + "type": "RecordType", + "fields": [ + { + "type": "FieldType", + "key": "ok", + "value": { + "type": "NameExpression", + "name": "String" + } + } + ] + }, + "name": "userName" + } + ] + } + +see [demo page](http://constellation.github.com/doctrine/demo/index.html) more detail. + +### Options + +#### doctrine.parse +We can pass options to `doctrine.parse(comment, options)`. +```js +{ + unwrap: boolean, // default: false + tags: [ string ] | null, // default: null + recoverable: boolean, // default: false + sloppy: boolean, // default: false + lineNumbers: boolean // default: false +} +``` + +##### unwrap + +When `unwrap` is `true`, doctrine attempt to unwrap comment specific string from a provided comment text. (removes `/**`, `*/` and `*`) +For example, `unwrap` transforms +``` +/** + * @param use + */ +``` +to +``` +@param use +``` +If a provided comment has these comment specific strings, you need to specify this `unwrap` option to `true`. + +##### tags + +When `tags` array is specified, doctrine only produce tags that is specified in this array. +For example, if you specify `[ 'param' ]`, doctrine only produces `param` tags. +If null is specified, doctrine produces all tags that doctrine can recognize. + +##### recoverable + +When `recoverable` is `true`, doctrine becomes `recoverable` - When failing to parse jsdoc comment, doctrine recovers its state and attempt to continue parsing. + +##### sloppy + +When `sloppy` is `true`, +``` +@param String [foo] +``` +'s `[foo]` is interpreted as a optional parameter, not interpreted as a name of this `@param`. + +##### lineNumbers + +When `lineNumbers` is `true`, parsed tags will include a `lineNumber` property indicating the line (relative to the start of the comment block) where each tag is located in the source. So, given the following comment: +``` +/** + * @param {String} foo + * @return {number} + */ +``` +The `@param` tag will have `lineNumber: 1`, and the `@return` tag will have `lineNumber: 2`. + + +### License + +#### doctrine + +Copyright (C) 2012 [Yusuke Suzuki](http://github.com/Constellation) + (twitter: [@Constellation](http://twitter.com/Constellation)) and other contributors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#### esprima + +some of functions is derived from esprima + +Copyright (C) 2012, 2011 [Ariya Hidayat](http://ariya.ofilabs.com/about) + (twitter: [@ariyahidayat](http://twitter.com/ariyahidayat)) and other contributors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +#### closure-compiler + +some of extensions is derived from closure-compiler + +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ diff --git a/javascript/extractor/lib/external/doctrine/doctrine.js b/javascript/extractor/lib/external/doctrine/doctrine.js new file mode 100644 index 00000000000..1c1dd1e62f2 --- /dev/null +++ b/javascript/extractor/lib/external/doctrine/doctrine.js @@ -0,0 +1,2146 @@ +/* + Copyright (C) 2012-2014 Yusuke Suzuki + Copyright (C) 2014 Dan Tao + Copyright (C) 2013 Andrew Eisenberg + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/*jslint bitwise:true plusplus:true eqeq:true nomen:true*/ +/*global doctrine:true, exports:true, parseTypeExpression:true, parseTop:true*/ + +(function (exports) { + 'use strict'; + + var VERSION, + Regex, + CanAccessStringByIndex, + typed, + jsdoc, + isArray, + hasOwnProperty; + + // Sync with package.json. + VERSION = '0.5.2-dev'; + + // See also tools/generate-unicode-regex.py. + Regex = { + NonAsciiIdentifierStart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]'), + NonAsciiIdentifierPart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0\u08a2-\u08ac\u08e4-\u08fe\u0900-\u0963\u0966-\u096f\u0971-\u0977\u0979-\u097f\u0981-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09e6-\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1\u0cf2\u0d02\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191c\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19d9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1d00-\u1de6\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u200c\u200d\u203f\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua697\ua69f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua827\ua840-\ua873\ua880-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua900-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a\uaa7b\uaa80-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabea\uabec\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]') + }; + + CanAccessStringByIndex = typeof 'doctrine'[0] !== undefined; + + function sliceSource(source, index, last) { + var output; + if (!CanAccessStringByIndex) { + output = source.slice(index, last).join(''); + } else { + output = source.slice(index, last); + } + return output; + } + + isArray = Array.isArray; + if (!isArray) { + isArray = function isArray(ary) { + return Object.prototype.toString.call(ary) === '[object Array]'; + }; + } + + hasOwnProperty = (function () { + var func = Object.prototype.hasOwnProperty; + return function hasOwnProperty(obj, name) { + return func.call(obj, name); + }; + }()); + + function shallowCopy(obj) { + var ret = {}, key; + for (key in obj) { + if (obj.hasOwnProperty(key)) { + ret[key] = obj[key]; + } + } + return ret; + } + + function isLineTerminator(ch) { + return ch === '\n' || ch === '\r' || ch === '\u2028' || ch === '\u2029'; + } + + function isWhiteSpace(ch) { + return (ch === ' ') || (ch === '\u0009') || (ch === '\u000B') || + (ch === '\u000C') || (ch === '\u00A0') || + (ch.charCodeAt(0) >= 0x1680 && + '\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\uFEFF'.indexOf(ch) >= 0); + } + + function isDecimalDigit(ch) { + return '0123456789'.indexOf(ch) >= 0; + } + + function isHexDigit(ch) { + return '0123456789abcdefABCDEF'.indexOf(ch) >= 0; + } + + function isOctalDigit(ch) { + return '01234567'.indexOf(ch) >= 0; + } + + function isASCIIAlphanumeric(ch) { + return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9'); + } + + function isIdentifierStart(ch) { + return (ch === '$') || (ch === '_') || (ch === '\\') || + (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || + ((ch.charCodeAt(0) >= 0x80) && Regex.NonAsciiIdentifierStart.test(ch)); + } + + function isIdentifierPart(ch) { + return (ch === '$') || (ch === '_') || (ch === '\\') || + (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || + ((ch >= '0') && (ch <= '9')) || + ((ch.charCodeAt(0) >= 0x80) && Regex.NonAsciiIdentifierPart.test(ch)); + } + + function isTypeName(ch) { + return '><(){}[],:*|?!='.indexOf(ch) === -1 && !isWhiteSpace(ch) && !isLineTerminator(ch); + } + + function isParamTitle(title) { + return title === 'param' || title === 'argument' || title === 'arg'; + } + + function isProperty(title) { + return title === 'property' || title === 'prop'; + } + + function isNameParameterRequired(title) { + return isParamTitle(title) || isProperty(title) || + title === 'alias' || title === 'this' || title === 'mixes' || title === 'requires'; + } + + function isAllowedName(title) { + return isNameParameterRequired(title) || title === 'const' || title === 'constant'; + } + + function isAllowedNested(title) { + return isProperty(title) || isParamTitle(title); + } + + function isTypeParameterRequired(title) { + return isParamTitle(title) || title === 'define' || title === 'enum' || + title === 'implements' || title === 'return' || + title === 'this' || title === 'type' || title === 'typedef' || + title === 'returns' || isProperty(title); + } + + // Consider deprecation instead using 'isTypeParameterRequired' and 'Rules' declaration to pick when a type is optional/required + // This would require changes to 'parseType' + function isAllowedType(title) { + return isTypeParameterRequired(title) || title === 'throws' || title === 'const' || title === 'constant' || + title === 'namespace' || title === 'member' || title === 'var' || title === 'module' || + title === 'constructor' || title === 'class' || title === 'extends' || title === 'augments' || + title === 'public' || title === 'private' || title === 'protected'; + } + + function DoctrineError(message) { + this.name = 'DoctrineError'; + this.message = message; + } + DoctrineError.prototype = new Error(); + DoctrineError.prototype.constructor = DoctrineError; + + function throwError(message) { + throw new DoctrineError(message); + } + + function assert(cond, text) { + if (VERSION.slice(-3) === 'dev') { + if (!cond) { + throwError(text); + } + } + } + + function trim(str) { + return str.replace(/^\s+/, '').replace(/\s+$/, ''); + } + + function unwrapComment(doc) { + // JSDoc comment is following form + // /** + // * ....... + // */ + // remove /**, */ and * + var BEFORE_STAR = 0, + STAR = 1, + AFTER_STAR = 2, + index, + len, + mode, + result, + ch; + + doc = doc.replace(/^\/\*\*?/, '').replace(/\*\/$/, ''); + index = 0; + len = doc.length; + mode = BEFORE_STAR; + result = ''; + + while (index < len) { + ch = doc[index]; + switch (mode) { + case BEFORE_STAR: + if (isLineTerminator(ch)) { + result += ch; + } else if (ch === '*') { + mode = STAR; + } else if (!isWhiteSpace(ch)) { + result += ch; + mode = AFTER_STAR; + } + break; + + case STAR: + if (!isWhiteSpace(ch)) { + result += ch; + } + mode = isLineTerminator(ch) ? BEFORE_STAR : AFTER_STAR; + break; + + case AFTER_STAR: + result += ch; + if (isLineTerminator(ch)) { + mode = BEFORE_STAR; + } + break; + } + index += 1; + } + + return result; + } + + // Type Expression Parser + + (function (exports) { + var Syntax, + Token, + source, + length, + index, + previous, + token, + value; + + Syntax = { + NullableLiteral: 'NullableLiteral', + AllLiteral: 'AllLiteral', + NullLiteral: 'NullLiteral', + UndefinedLiteral: 'UndefinedLiteral', + VoidLiteral: 'VoidLiteral', + UnionType: 'UnionType', + ArrayType: 'ArrayType', + RecordType: 'RecordType', + FieldType: 'FieldType', + FunctionType: 'FunctionType', + ParameterType: 'ParameterType', + RestType: 'RestType', + NonNullableType: 'NonNullableType', + OptionalType: 'OptionalType', + NullableType: 'NullableType', + NameExpression: 'NameExpression', + TypeApplication: 'TypeApplication' + }; + + Token = { + ILLEGAL: 0, // ILLEGAL + DOT: 1, // . + DOT_LT: 2, // .< + REST: 3, // ... + LT: 4, // < + GT: 5, // > + LPAREN: 6, // ( + RPAREN: 7, // ) + LBRACE: 8, // { + RBRACE: 9, // } + LBRACK: 10, // [ + RBRACK: 11, // ] + COMMA: 12, // , + COLON: 13, // : + STAR: 14, // * + PIPE: 15, // | + QUESTION: 16, // ? + BANG: 17, // ! + EQUAL: 18, // = + NAME: 19, // name token + STRING: 20, // string + NUMBER: 21, // number + EOF: 22 + }; + + function Context(previous, index, token, value) { + this._previous = previous; + this._index = index; + this._token = token; + this._value = value; + } + + Context.prototype.restore = function () { + previous = this._previous; + index = this._index; + token = this._token; + value = this._value; + }; + + Context.save = function () { + return new Context(previous, index, token, value); + }; + + function advance() { + var ch = source[index]; + index += 1; + return ch; + } + + function scanHexEscape(prefix) { + var i, len, ch, code = 0; + + len = (prefix === 'u') ? 4 : 2; + for (i = 0; i < len; ++i) { + if (index < length && isHexDigit(source[index])) { + ch = advance(); + code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase()); + } else { + return ''; + } + } + return String.fromCharCode(code); + } + + function scanString() { + var str = '', quote, ch, code, unescaped, restore; //TODO review removal octal = false + quote = source[index]; + ++index; + + while (index < length) { + ch = advance(); + + if (ch === quote) { + quote = ''; + break; + } else if (ch === '\\') { + ch = advance(); + if (!isLineTerminator(ch)) { + switch (ch) { + case 'n': + str += '\n'; + break; + case 'r': + str += '\r'; + break; + case 't': + str += '\t'; + break; + case 'u': + case 'x': + restore = index; + unescaped = scanHexEscape(ch); + if (unescaped) { + str += unescaped; + } else { + index = restore; + str += ch; + } + break; + case 'b': + str += '\b'; + break; + case 'f': + str += '\f'; + break; + case 'v': + str += '\v'; + break; + + default: + if (isOctalDigit(ch)) { + code = '01234567'.indexOf(ch); + + // \0 is not octal escape sequence + // Deprecating unused code. TODO review removal + //if (code !== 0) { + // octal = true; + //} + + if (index < length && isOctalDigit(source[index])) { + //TODO Review Removal octal = true; + code = code * 8 + '01234567'.indexOf(advance()); + + // 3 digits are only allowed when string starts + // with 0, 1, 2, 3 + if ('0123'.indexOf(ch) >= 0 && + index < length && + isOctalDigit(source[index])) { + code = code * 8 + '01234567'.indexOf(advance()); + } + } + str += String.fromCharCode(code); + } else { + str += ch; + } + break; + } + } else { + if (ch === '\r' && source[index] === '\n') { + ++index; + } + } + } else if (isLineTerminator(ch)) { + break; + } else { + str += ch; + } + } + + if (quote !== '') { + throwError('unexpected quote'); + } + + value = str; + return Token.STRING; + } + + function scanNumber() { + var number, ch; + + number = ''; + if (ch !== '.') { + number = advance(); + ch = source[index]; + + if (number === '0') { + if (ch === 'x' || ch === 'X') { + number += advance(); + while (index < length) { + ch = source[index]; + if (!isHexDigit(ch)) { + break; + } + number += advance(); + } + + if (number.length <= 2) { + // only 0x + throwError('unexpected token'); + } + + if (index < length) { + ch = source[index]; + if (isIdentifierStart(ch)) { + throwError('unexpected token'); + } + } + value = parseInt(number, 16); + return Token.NUMBER; + } + + if (isOctalDigit(ch)) { + number += advance(); + while (index < length) { + ch = source[index]; + if (!isOctalDigit(ch)) { + break; + } + number += advance(); + } + + if (index < length) { + ch = source[index]; + if (isIdentifierStart(ch) || isDecimalDigit(ch)) { + throwError('unexpected token'); + } + } + value = parseInt(number, 8); + return Token.NUMBER; + } + + if (isDecimalDigit(ch)) { + throwError('unexpected token'); + } + } + + while (index < length) { + ch = source[index]; + if (!isDecimalDigit(ch)) { + break; + } + number += advance(); + } + } + + if (ch === '.') { + number += advance(); + while (index < length) { + ch = source[index]; + if (!isDecimalDigit(ch)) { + break; + } + number += advance(); + } + } + + if (ch === 'e' || ch === 'E') { + number += advance(); + + ch = source[index]; + if (ch === '+' || ch === '-') { + number += advance(); + } + + ch = source[index]; + if (isDecimalDigit(ch)) { + number += advance(); + while (index < length) { + ch = source[index]; + if (!isDecimalDigit(ch)) { + break; + } + number += advance(); + } + } else { + throwError('unexpected token'); + } + } + + if (index < length) { + ch = source[index]; + if (isIdentifierStart(ch)) { + throwError('unexpected token'); + } + } + + value = parseFloat(number); + return Token.NUMBER; + } + + + function scanTypeName() { + var ch, ch2; + + value = advance(); + while (index < length && isTypeName(source[index])) { + ch = source[index]; + if (ch === '.') { + if ((index + 1) < length) { + ch2 = source[index + 1]; + if (ch2 === '<') { + break; + } + } + } + value += advance(); + } + return Token.NAME; + } + + function next() { + var ch; + + previous = index; + + while (index < length && isWhiteSpace(source[index])) { + advance(); + } + if (index >= length) { + token = Token.EOF; + return token; + } + + ch = source[index]; + switch (ch) { + case '"': + token = scanString(); + return token; + + case ':': + advance(); + token = Token.COLON; + return token; + + case ',': + advance(); + token = Token.COMMA; + return token; + + case '(': + advance(); + token = Token.LPAREN; + return token; + + case ')': + advance(); + token = Token.RPAREN; + return token; + + case '[': + advance(); + token = Token.LBRACK; + return token; + + case ']': + advance(); + token = Token.RBRACK; + return token; + + case '{': + advance(); + token = Token.LBRACE; + return token; + + case '}': + advance(); + token = Token.RBRACE; + return token; + + case '.': + advance(); + if (index < length) { + ch = source[index]; + if (ch === '<') { + advance(); + token = Token.DOT_LT; + return token; + } + + if (ch === '.' && index + 1 < length && source[index + 1] === '.') { + advance(); + advance(); + token = Token.REST; + return token; + } + + if (isDecimalDigit(ch)) { + token = scanNumber(); + return token; + } + } + token = Token.DOT; + return token; + + case '<': + advance(); + token = Token.LT; + return token; + + case '>': + advance(); + token = Token.GT; + return token; + + case '*': + advance(); + token = Token.STAR; + return token; + + case '|': + advance(); + token = Token.PIPE; + return token; + + case '?': + advance(); + token = Token.QUESTION; + return token; + + case '!': + advance(); + token = Token.BANG; + return token; + + case '=': + advance(); + token = Token.EQUAL; + return token; + + default: + if (isDecimalDigit(ch)) { + token = scanNumber(); + return token; + } + + // type string permits following case, + // + // namespace.module.MyClass + // + // this reduced 1 token TK_NAME + if (isTypeName(ch)) { + token = scanTypeName(); + return token; + } + + token = Token.ILLEGAL; + return token; + } + } + + function consume(target, text) { + assert(token === target, text || 'consumed token not matched'); + next(); + } + + function expect(target) { + if (token !== target) { + throwError('unexpected token'); + } + next(); + } + + // UnionType := '(' TypeUnionList ')' + // + // TypeUnionList := + // <> + // | NonemptyTypeUnionList + // + // NonemptyTypeUnionList := + // TypeExpression + // | TypeExpression '|' NonemptyTypeUnionList + function parseUnionType() { + var elements; + consume(Token.LPAREN, 'UnionType should start with ('); + elements = []; + if (token !== Token.RPAREN) { + while (true) { + elements.push(parseTypeExpression()); + if (token === Token.RPAREN) { + break; + } + expect(Token.PIPE); + } + } + consume(Token.RPAREN, 'UnionType should end with )'); + return { + type: Syntax.UnionType, + elements: elements + }; + } + + // ArrayType := '[' ElementTypeList ']' + // + // ElementTypeList := + // <> + // | TypeExpression + // | '...' TypeExpression + // | TypeExpression ',' ElementTypeList + function parseArrayType() { + var elements; + consume(Token.LBRACK, 'ArrayType should start with ['); + elements = []; + while (token !== Token.RBRACK) { + if (token === Token.REST) { + consume(Token.REST); + elements.push({ + type: Syntax.RestType, + expression: parseTypeExpression() + }); + break; + } else { + elements.push(parseTypeExpression()); + } + if (token !== Token.RBRACK) { + expect(Token.COMMA); + } + } + expect(Token.RBRACK); + return { + type: Syntax.ArrayType, + elements: elements + }; + } + + function parseFieldName() { + var v = value; + if (token === Token.NAME || token === Token.STRING) { + next(); + return v; + } + + if (token === Token.NUMBER) { + consume(Token.NUMBER); + return String(v); + } + + throwError('unexpected token'); + } + + // FieldType := + // FieldName + // | FieldName ':' TypeExpression + // + // FieldName := + // NameExpression + // | StringLiteral + // | NumberLiteral + // | ReservedIdentifier + function parseFieldType() { + var key; + + key = parseFieldName(); + if (token === Token.COLON) { + consume(Token.COLON); + return { + type: Syntax.FieldType, + key: key, + value: parseTypeExpression() + }; + } + return { + type: Syntax.FieldType, + key: key, + value: null + }; + } + + // RecordType := '{' FieldTypeList '}' + // + // FieldTypeList := + // <> + // | FieldType + // | FieldType ',' FieldTypeList + function parseRecordType() { + var fields; + + consume(Token.LBRACE, 'RecordType should start with {'); + fields = []; + if (token === Token.COMMA) { + consume(Token.COMMA); + } else { + while (token !== Token.RBRACE) { + fields.push(parseFieldType()); + if (token !== Token.RBRACE) { + expect(Token.COMMA); + } + } + } + expect(Token.RBRACE); + return { + type: Syntax.RecordType, + fields: fields + }; + } + + function parseNameExpression() { + var name = value; + expect(Token.NAME); + return { + type: Syntax.NameExpression, + name: name + }; + } + + // TypeExpressionList := + // TopLevelTypeExpression + // | TopLevelTypeExpression ',' TypeExpressionList + function parseTypeExpressionList() { + var elements = []; + + elements.push(parseTop()); + while (token === Token.COMMA) { + consume(Token.COMMA); + elements.push(parseTop()); + } + return elements; + } + + // TypeName := + // NameExpression + // | NameExpression TypeApplication + // + // TypeApplication := + // '.<' TypeExpressionList '>' + // | '<' TypeExpressionList '>' // this is extension of doctrine + function parseTypeName() { + var expr, applications; + + expr = parseNameExpression(); + if (token === Token.DOT_LT || token === Token.LT) { + next(); + applications = parseTypeExpressionList(); + expect(Token.GT); + return { + type: Syntax.TypeApplication, + expression: expr, + applications: applications + }; + } + return expr; + } + + // ResultType := + // <> + // | ':' void + // | ':' TypeExpression + // + // BNF is above + // but, we remove <> pattern, so token is always TypeToken::COLON + function parseResultType() { + consume(Token.COLON, 'ResultType should start with :'); + if (token === Token.NAME && value === 'void') { + consume(Token.NAME); + return { + type: Syntax.VoidLiteral + }; + } + return parseTypeExpression(); + } + + // ParametersType := + // RestParameterType + // | NonRestParametersType + // | NonRestParametersType ',' RestParameterType + // + // RestParameterType := + // '...' + // '...' Identifier + // + // NonRestParametersType := + // ParameterType ',' NonRestParametersType + // | ParameterType + // | OptionalParametersType + // + // OptionalParametersType := + // OptionalParameterType + // | OptionalParameterType, OptionalParametersType + // + // OptionalParameterType := ParameterType= + // + // ParameterType := TypeExpression | Identifier ':' TypeExpression + // + // Identifier is "new" or "this" + function parseParametersType() { + var params = [], normal = true, expr, rest = false; + + while (token !== Token.RPAREN) { + if (token === Token.REST) { + // RestParameterType + consume(Token.REST); + rest = true; + } + + expr = parseTypeExpression(); + if (expr.type === Syntax.NameExpression && token === Token.COLON) { + // Identifier ':' TypeExpression + consume(Token.COLON); + expr = { + type: Syntax.ParameterType, + name: expr.name, + expression: parseTypeExpression() + }; + } + if (token === Token.EQUAL) { + consume(Token.EQUAL); + expr = { + type: Syntax.OptionalType, + expression: expr + }; + normal = false; + } else { + if (!normal) { + throwError('unexpected token'); + } + } + if (rest) { + expr = { + type: Syntax.RestType, + expression: expr + }; + } + params.push(expr); + if (token !== Token.RPAREN) { + expect(Token.COMMA); + } + } + return params; + } + + // FunctionType := 'function' FunctionSignatureType + // + // FunctionSignatureType := + // | TypeParameters '(' ')' ResultType + // | TypeParameters '(' ParametersType ')' ResultType + // | TypeParameters '(' 'this' ':' TypeName ')' ResultType + // | TypeParameters '(' 'this' ':' TypeName ',' ParametersType ')' ResultType + function parseFunctionType() { + var isNew, thisBinding, params, result, fnType; + assert(token === Token.NAME && value === 'function', 'FunctionType should start with \'function\''); + consume(Token.NAME); + + // Google Closure Compiler is not implementing TypeParameters. + // So we do not. if we don't get '(', we see it as error. + expect(Token.LPAREN); + + isNew = false; + params = []; + thisBinding = null; + if (token !== Token.RPAREN) { + // ParametersType or 'this' + if (token === Token.NAME && + (value === 'this' || value === 'new')) { + // 'this' or 'new' + // 'new' is Closure Compiler extension + isNew = value === 'new'; + consume(Token.NAME); + expect(Token.COLON); + thisBinding = parseTypeName(); + if (token === Token.COMMA) { + consume(Token.COMMA); + params = parseParametersType(); + } + } else { + params = parseParametersType(); + } + } + + expect(Token.RPAREN); + + result = null; + if (token === Token.COLON) { + result = parseResultType(); + } + + fnType = { + type: Syntax.FunctionType, + params: params, + result: result + }; + if (thisBinding) { + // avoid adding null 'new' and 'this' properties + fnType['this'] = thisBinding; + if (isNew) { + fnType['new'] = true; + } + } + return fnType; + } + + // BasicTypeExpression := + // '*' + // | 'null' + // | 'undefined' + // | TypeName + // | FunctionType + // | UnionType + // | RecordType + // | ArrayType + function parseBasicTypeExpression() { + var context; + switch (token) { + case Token.STAR: + consume(Token.STAR); + return { + type: Syntax.AllLiteral + }; + + case Token.LPAREN: + return parseUnionType(); + + case Token.LBRACK: + return parseArrayType(); + + case Token.LBRACE: + return parseRecordType(); + + case Token.NAME: + if (value === 'null') { + consume(Token.NAME); + return { + type: Syntax.NullLiteral + }; + } + + if (value === 'undefined') { + consume(Token.NAME); + return { + type: Syntax.UndefinedLiteral + }; + } + + context = Context.save(); + if (value === 'function') { + try { + return parseFunctionType(); + } catch (e) { + context.restore(); + } + } + + return parseTypeName(); + + default: + throwError('unexpected token'); + } + } + + // TypeExpression := + // BasicTypeExpression + // | '?' BasicTypeExpression + // | '!' BasicTypeExpression + // | BasicTypeExpression '?' + // | BasicTypeExpression '!' + // | '?' + // | BasicTypeExpression '[]' + function parseTypeExpression() { + var expr; + + if (token === Token.QUESTION) { + consume(Token.QUESTION); + if (token === Token.COMMA || token === Token.EQUAL || token === Token.RBRACE || + token === Token.RPAREN || token === Token.PIPE || token === Token.EOF || + token === Token.RBRACK) { + return { + type: Syntax.NullableLiteral + }; + } + return { + type: Syntax.NullableType, + expression: parseBasicTypeExpression(), + prefix: true + }; + } + + if (token === Token.BANG) { + consume(Token.BANG); + return { + type: Syntax.NonNullableType, + expression: parseBasicTypeExpression(), + prefix: true + }; + } + + expr = parseBasicTypeExpression(); + if (token === Token.BANG) { + consume(Token.BANG); + return { + type: Syntax.NonNullableType, + expression: expr, + prefix: false + }; + } + + if (token === Token.QUESTION) { + consume(Token.QUESTION); + return { + type: Syntax.NullableType, + expression: expr, + prefix: false + }; + } + + if (token === Token.LBRACK) { + consume(Token.LBRACK); + consume(Token.RBRACK, 'expected an array-style type declaration (' + value + '[])'); + return { + type: Syntax.TypeApplication, + expression: { + type: Syntax.NameExpression, + name: 'Array' + }, + applications: [expr] + }; + } + + return expr; + } + + // TopLevelTypeExpression := + // TypeExpression + // | TypeUnionList + // + // This rule is Google Closure Compiler extension, not ES4 + // like, + // { number | string } + // If strict to ES4, we should write it as + // { (number|string) } + function parseTop() { + var expr, elements; + + expr = parseTypeExpression(); + if (token !== Token.PIPE) { + return expr; + } + + elements = [ expr ]; + consume(Token.PIPE); + while (true) { + elements.push(parseTypeExpression()); + if (token !== Token.PIPE) { + break; + } + consume(Token.PIPE); + } + + return { + type: Syntax.UnionType, + elements: elements + }; + } + + function parseTopParamType() { + var expr; + + if (token === Token.REST) { + consume(Token.REST); + return { + type: Syntax.RestType, + expression: parseTop() + }; + } + + expr = parseTop(); + if (token === Token.EQUAL) { + consume(Token.EQUAL); + return { + type: Syntax.OptionalType, + expression: expr + }; + } + + return expr; + } + + function parseType(src, opt) { + var expr; + + source = src; + length = source.length; + index = 0; + previous = 0; + + if (!CanAccessStringByIndex) { + source = source.split(''); + } + + next(); + expr = parseTop(); + + if (opt && opt.midstream) { + return { + expression: expr, + index: previous + }; + } + + if (token !== Token.EOF) { + throwError('not reach to EOF'); + } + + return expr; + } + + function parseParamType(src, opt) { + var expr; + + source = src; + length = source.length; + index = 0; + previous = 0; + + if (!CanAccessStringByIndex) { + source = source.split(''); + } + + next(); + expr = parseTopParamType(); + + if (opt && opt.midstream) { + return { + expression: expr, + index: previous + }; + } + + if (token !== Token.EOF) { + throwError('not reach to EOF'); + } + + return expr; + } + + function stringifyImpl(node, compact, topLevel) { + var result, i, iz; + + switch (node.type) { + case Syntax.NullableLiteral: + result = '?'; + break; + + case Syntax.AllLiteral: + result = '*'; + break; + + case Syntax.NullLiteral: + result = 'null'; + break; + + case Syntax.UndefinedLiteral: + result = 'undefined'; + break; + + case Syntax.VoidLiteral: + result = 'void'; + break; + + case Syntax.UnionType: + if (!topLevel) { + result = '('; + } else { + result = ''; + } + + for (i = 0, iz = node.elements.length; i < iz; ++i) { + result += stringifyImpl(node.elements[i], compact); + if ((i + 1) !== iz) { + result += '|'; + } + } + + if (!topLevel) { + result += ')'; + } + break; + + case Syntax.ArrayType: + result = '['; + for (i = 0, iz = node.elements.length; i < iz; ++i) { + result += stringifyImpl(node.elements[i], compact); + if ((i + 1) !== iz) { + result += compact ? ',' : ', '; + } + } + result += ']'; + break; + + case Syntax.RecordType: + result = '{'; + for (i = 0, iz = node.fields.length; i < iz; ++i) { + result += stringifyImpl(node.fields[i], compact); + if ((i + 1) !== iz) { + result += compact ? ',' : ', '; + } + } + result += '}'; + break; + + case Syntax.FieldType: + if (node.value) { + result = node.key + (compact ? ':' : ': ') + stringifyImpl(node.value, compact); + } else { + result = node.key; + } + break; + + case Syntax.FunctionType: + result = compact ? 'function(' : 'function ('; + + if (node['this']) { + if (node['new']) { + result += (compact ? 'new:' : 'new: '); + } else { + result += (compact ? 'this:' : 'this: '); + } + + result += stringifyImpl(node['this'], compact); + + if (node.params.length !== 0) { + result += compact ? ',' : ', '; + } + } + + for (i = 0, iz = node.params.length; i < iz; ++i) { + result += stringifyImpl(node.params[i], compact); + if ((i + 1) !== iz) { + result += compact ? ',' : ', '; + } + } + + result += ')'; + + if (node.result) { + result += (compact ? ':' : ': ') + stringifyImpl(node.result, compact); + } + break; + + case Syntax.ParameterType: + result = node.name + (compact ? ':' : ': ') + stringifyImpl(node.expression, compact); + break; + + case Syntax.RestType: + result = '...'; + if (node.expression) { + result += stringifyImpl(node.expression, compact); + } + break; + + case Syntax.NonNullableType: + if (node.prefix) { + result = '!' + stringifyImpl(node.expression, compact); + } else { + result = stringifyImpl(node.expression, compact) + '!'; + } + break; + + case Syntax.OptionalType: + result = stringifyImpl(node.expression, compact) + '='; + break; + + case Syntax.NullableType: + if (node.prefix) { + result = '?' + stringifyImpl(node.expression, compact); + } else { + result = stringifyImpl(node.expression, compact) + '?'; + } + break; + + case Syntax.NameExpression: + result = node.name; + break; + + case Syntax.TypeApplication: + result = stringifyImpl(node.expression, compact) + '.<'; + for (i = 0, iz = node.applications.length; i < iz; ++i) { + result += stringifyImpl(node.applications[i], compact); + if ((i + 1) !== iz) { + result += compact ? ',' : ', '; + } + } + result += '>'; + break; + + default: + throwError('Unknown type ' + node.type); + } + + return result; + } + + function stringify(node, options) { + if (options == null) { + options = {}; + } + return stringifyImpl(node, options.compact, options.topLevel); + } + + exports.parseType = parseType; + exports.parseParamType = parseParamType; + exports.stringify = stringify; + exports.Syntax = Syntax; + }(typed = {})); + + // JSDoc Tag Parser + + (function (exports) { + var Rules, + index, + lineNumber, + lineStart, + length, + source, + recoverable, + sloppy, + strict; + + function skipStars(index) { + while (index < length && isWhiteSpace(source[index]) && !isLineTerminator(source[index])) { + index += 1; + } + while (source[index] === '*') { + index += 1; + } + while (index < length && isWhiteSpace(source[index]) && !isLineTerminator(source[index])) { + index += 1; + } + return index; + } + + function advance() { + var ch = source[index]; + index += 1; + if (isLineTerminator(ch) && !(ch === '\r' && source[index] === '\n')) { + lineNumber += 1; + lineStart = index; + index = skipStars(index); + } + return ch; + } + + function scanTitle() { + var title = ''; + // waste '@' + advance(); + + while (index < length && isASCIIAlphanumeric(source[index])) { + title += advance(); + } + + return title; + } + + function seekContent() { + var ch, waiting, last = index; + + waiting = false; + while (last < length) { + ch = source[last]; + if (isLineTerminator(ch) && !(ch === '\r' && source[last + 1] === '\n')) { + lineNumber += 1; + lineStart = last + 1; + last = skipStars(last + 1) - 1; + waiting = true; + } else if (waiting) { + if (ch === '@') { + break; + } + if (!isWhiteSpace(ch)) { + waiting = false; + } + } + last += 1; + } + return last; + } + + // type expression may have nest brace, such as, + // { { ok: string } } + // + // therefore, scanning type expression with balancing braces. + function parseType(title, last) { + var ch, brace, type, direct = false; + + // search '{' + while (index < last) { + ch = source[index]; + if (isWhiteSpace(ch)) { + advance(); + } else if (ch === '{') { + advance(); + break; + } else { + // this is direct pattern + direct = true; + break; + } + } + + if (!direct) { + // type expression { is found + brace = 1; + type = ''; + while (index < last) { + ch = source[index]; + if (isLineTerminator(ch)) { + advance(); + } else { + if (ch === '}') { + brace -= 1; + if (brace === 0) { + advance(); + break; + } + } else if (ch === '{') { + brace += 1; + } + type += advance(); + } + } + + if (brace !== 0) { + // braces is not balanced + return throwError('Braces are not balanced'); + } + + try { + if (isParamTitle(title)) { + return typed.parseParamType(type); + } + return typed.parseType(type); + } catch (e1) { + // parse failed + return null; + } + } else { + return null; + } + } + + function scanIdentifier(last) { + var identifier; + if (!isIdentifierStart(source[index])) { + return null; + } + identifier = advance(); + while (index < last && isIdentifierPart(source[index])) { + identifier += advance(); + } + return identifier; + } + + function skipWhiteSpace(last) { + while (index < last && (isWhiteSpace(source[index]) || isLineTerminator(source[index]))) { + advance(); + } + } + + function parseName(last, allowBrackets, allowNestedParams) { + var name = '', useBrackets; + + skipWhiteSpace(last); + + if (index >= last) { + return null; + } + + if (allowBrackets && source[index] === '[') { + useBrackets = true; + name = advance(); + } + + if (!isIdentifierStart(source[index])) { + return null; + } + + name += scanIdentifier(last); + + if (allowNestedParams) { + while (source[index] === '.' || source[index] === '#' || source[index] === '~') { + name += source[index]; + index += 1; + name += scanIdentifier(last); + } + } + + if (useBrackets) { + // do we have a default value for this? + if (source[index] === '=') { + + // consume the '='' symbol + name += advance(); + // scan in the default value + while (index < last && source[index] !== ']') { + name += advance(); + } + } + + if (index >= last || source[index] !== ']') { + // we never found a closing ']' + return null; + } + + // collect the last ']' + name += advance(); + } + + return name; + } + + function skipToTag() { + while (index < length && source[index] !== '@') { + advance(); + } + if (index >= length) { + return false; + } + assert(source[index] === '@'); + return true; + } + + function TagParser(options, title) { + this._options = options; + this._title = title; + this._tag = { + title: title, + description: null + }; + if (this._options.lineNumbers) { + this._tag.lineNumber = lineNumber; + } + this._last = 0; + // space to save special information for title parsers. + this._extra = { }; + } + + // addError(err, ...) + TagParser.prototype.addError = function addError(errorText) { + var args = Array.prototype.slice.call(arguments, 1), + msg = errorText.replace( + /%(\d)/g, + function (whole, index) { + assert(index < args.length, 'Message reference must be in range'); + return args[index]; + } + ); + + if (!this._tag.errors) { + this._tag.errors = []; + } + if (strict) { + throwError(msg); + } + this._tag.errors.push(msg); + return recoverable; + }; + + TagParser.prototype.parseType = function () { + // type required titles + if (isTypeParameterRequired(this._title)) { + try { + this._tag.type = parseType(this._title, this._last); + if (!this._tag.type) { + if (!isParamTitle(this._title)) { + if (!this.addError('Missing or invalid tag type')) { + return false; + } + } + } + } catch (error) { + this._tag.type = null; + if (!this.addError(error.message)) { + return false; + } + } + } else if (isAllowedType(this._title)) { + // optional types + try { + this._tag.type = parseType(this._title, this._last); + } catch (e) { + //For optional types, lets drop the thrown error when we hit the end of the file + } + } + return true; + }; + + TagParser.prototype._parseNamePath = function (optional) { + var name; + name = parseName(this._last, sloppy && isParamTitle(this._title), true); + if (!name) { + if (!optional) { + if (!this.addError('Missing or invalid tag name')) { + return false; + } + } + } + this._tag.name = name; + return true; + }; + + TagParser.prototype.parseNamePath = function () { + return this._parseNamePath(false); + }; + + TagParser.prototype.parseNamePathOptional = function () { + return this._parseNamePath(true); + }; + + + TagParser.prototype.parseName = function () { + var assign, name; + + // param, property requires name + if (isAllowedName(this._title)) { + this._tag.name = parseName(this._last, sloppy && isParamTitle(this._title), isAllowedNested(this._title)); + if (!this._tag.name) { + if (!isNameParameterRequired(this._title)) { + return true; + } + + // it's possible the name has already been parsed but interpreted as a type + // it's also possible this is a sloppy declaration, in which case it will be + // fixed at the end + if (isParamTitle(this._title) && this._tag.type && this._tag.type.name) { + this._extra.name = this._tag.type; + this._tag.name = this._tag.type.name; + this._tag.type = null; + } else { + if (!this.addError('Missing or invalid tag name')) { + return false; + } + } + } else { + name = this._tag.name; + if (name.charAt(0) === '[' && name.charAt(name.length - 1) === ']') { + // extract the default value if there is one + // example: @param {string} [somebody=John Doe] description + assign = name.substring(1, name.length - 1).split('='); + if (assign[1]) { + this._tag['default'] = assign[1]; + } + this._tag.name = assign[0]; + + // convert to an optional type + if (this._tag.type && this._tag.type.type !== 'OptionalType') { + this._tag.type = { + type: 'OptionalType', + expression: this._tag.type + }; + } + } + } + } + + return true; + }; + + TagParser.prototype.parseDescription = function parseDescription() { + var description = trim(sliceSource(source, index, this._last)); + if (description) { + if ((/^-\s+/).test(description)) { + description = description.substring(2); + } + if (this._options.unwrap) { + description = description.replace(/^\s*\*+\s*/gm, ''); + } + this._tag.description = description; + } + return true; + }; + + TagParser.prototype.parseKind = function parseKind() { + var kind, kinds; + kinds = { + 'class': true, + 'constant': true, + 'event': true, + 'external': true, + 'file': true, + 'function': true, + 'member': true, + 'mixin': true, + 'module': true, + 'namespace': true, + 'typedef': true + }; + kind = trim(sliceSource(source, index, this._last)); + this._tag.kind = kind; + if (!hasOwnProperty(kinds, kind)) { + if (!this.addError('Invalid kind name \'%0\'', kind)) { + return false; + } + } + return true; + }; + + TagParser.prototype.parseAccess = function parseAccess() { + var access; + access = trim(sliceSource(source, index, this._last)); + this._tag.access = access; + if (access !== 'private' && access !== 'protected' && access !== 'public') { + if (!this.addError('Invalid access name \'%0\'', access)) { + return false; + } + } + return true; + }; + + TagParser.prototype.parseVariation = function parseVariation() { + var variation, text; + text = trim(sliceSource(source, index, this._last)); + variation = parseFloat(text, 10); + this._tag.variation = variation; + if (isNaN(variation)) { + if (!this.addError('Invalid variation \'%0\'', text)) { + return false; + } + } + return true; + }; + + TagParser.prototype.ensureEnd = function () { + var shouldBeEmpty = trim(sliceSource(source, index, this._last)); + if (!shouldBeEmpty.match(/^[\s*]*$/)) { + if (!this.addError('Unknown content \'%0\'', shouldBeEmpty)) { + return false; + } + } + return true; + }; + + TagParser.prototype.epilogue = function epilogue() { + var description; + + description = this._tag.description; + // un-fix potentially sloppy declaration + if (isParamTitle(this._title) && !this._tag.type && description && description.charAt(0) === '[') { + this._tag.type = this._extra.name; + this._tag.name = undefined; + + if (!sloppy) { + if (!this.addError('Missing or invalid tag name')) { + return false; + } + } + } + + return true; + }; + + Rules = { + // http://usejsdoc.org/tags-access.html + 'access': ['parseAccess'], + // http://usejsdoc.org/tags-alias.html + 'alias': ['parseNamePath', 'ensureEnd'], + // http://usejsdoc.org/tags-augments.html + 'augments': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // http://usejsdoc.org/tags-constructor.html + 'constructor': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // Synonym: http://usejsdoc.org/tags-constructor.html + 'class': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // Synonym: http://usejsdoc.org/tags-extends.html + 'extends': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // http://usejsdoc.org/tags-deprecated.html + 'deprecated': ['parseDescription'], + // http://usejsdoc.org/tags-global.html + 'global': ['ensureEnd'], + // http://usejsdoc.org/tags-inner.html + 'inner': ['ensureEnd'], + // http://usejsdoc.org/tags-instance.html + 'instance': ['ensureEnd'], + // http://usejsdoc.org/tags-kind.html + 'kind': ['parseKind'], + // http://usejsdoc.org/tags-mixes.html + 'mixes': ['parseNamePath', 'ensureEnd'], + // http://usejsdoc.org/tags-mixin.html + 'mixin': ['parseNamePathOptional', 'ensureEnd'], + // http://usejsdoc.org/tags-member.html + 'member': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // http://usejsdoc.org/tags-method.html + 'method': ['parseNamePathOptional', 'ensureEnd'], + // http://usejsdoc.org/tags-module.html + 'module': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // Synonym: http://usejsdoc.org/tags-method.html + 'func': ['parseNamePathOptional', 'ensureEnd'], + // Synonym: http://usejsdoc.org/tags-method.html + 'function': ['parseNamePathOptional', 'ensureEnd'], + // Synonym: http://usejsdoc.org/tags-member.html + 'var': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // http://usejsdoc.org/tags-name.html + 'name': ['parseNamePath', 'ensureEnd'], + // http://usejsdoc.org/tags-namespace.html + 'namespace': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // http://usejsdoc.org/tags-private.html + 'private': ['parseType', 'parseDescription'], + // http://usejsdoc.org/tags-protected.html + 'protected': ['parseType', 'parseDescription'], + // http://usejsdoc.org/tags-public.html + 'public': ['parseType', 'parseDescription'], + // http://usejsdoc.org/tags-readonly.html + 'readonly': ['ensureEnd'], + // http://usejsdoc.org/tags-requires.html + 'requires': ['parseNamePath', 'ensureEnd'], + // http://usejsdoc.org/tags-since.html + 'since': ['parseDescription'], + // http://usejsdoc.org/tags-static.html + 'static': ['ensureEnd'], + // http://usejsdoc.org/tags-summary.html + 'summary': ['parseDescription'], + // http://usejsdoc.org/tags-this.html + 'this': ['parseNamePath', 'ensureEnd'], + // http://usejsdoc.org/tags-todo.html + 'todo': ['parseDescription'], + // http://usejsdoc.org/tags-variation.html + 'variation': ['parseVariation'], + // http://usejsdoc.org/tags-version.html + 'version': ['parseDescription'] + }; + + TagParser.prototype.parse = function parse() { + var i, iz, sequences, method, + oldLineNumber, oldLineStart, + newLineNumber, newLineStart; + + // empty title + if (!this._title) { + if (!this.addError('Missing or invalid title')) { + return null; + } + } + + // Seek to content last index. + oldLineNumber = lineNumber; + oldLineStart = lineStart; + this._last = seekContent(this._title); + newLineNumber = lineNumber; + newLineStart = lineStart; + lineNumber = oldLineNumber; + lineStart = oldLineStart; + + if (hasOwnProperty(Rules, this._title)) { + sequences = Rules[this._title]; + } else { + // default sequences + sequences = ['parseType', 'parseName', 'parseDescription', 'epilogue']; + } + + for (i = 0, iz = sequences.length; i < iz; ++i) { + method = sequences[i]; + if (!this[method]()) { + return null; + } + } + + // Seek global index to end of this tag. + index = this._last; + lineNumber = newLineNumber; + lineStart = newLineStart; + return this._tag; + }; + + function parseTag(options) { + var title, parser, startLine, startColumn, res; + + // skip to tag + if (!skipToTag()) { + return null; + } + + if (options.lineNumbers) { + startLine = lineNumber; + startColumn = index - lineStart; + } + + // scan title + title = scanTitle(); + + // construct tag parser + parser = new TagParser(options, title); + res = parser.parse(); + + if (options.lineNumbers) { + res.startLine = startLine; + res.startColumn = startColumn; + } + + return res; + } + + // + // Parse JSDoc + // + + function scanJSDocDescription() { + var description = '', ch, atAllowed; + + atAllowed = true; + while (index < length) { + ch = source[index]; + + if (atAllowed && ch === '@') { + break; + } + + if (isLineTerminator(ch)) { + atAllowed = true; + } else if (atAllowed && !isWhiteSpace(ch)) { + atAllowed = false; + } + + description += advance(); + } + return trim(description); + } + + function parse(comment, options) { + var tags = [], tag, description, interestingTags, i, iz; + + if (options === undefined) { + options = {}; + } + + if (typeof options.unwrap === 'boolean' && options.unwrap) { + source = comment.replace(/^\/?\*+/, '').replace(/\*+\/?$/, ''); + } else { + source = comment; + } + + // array of relevant tags + if (options.tags) { + if (isArray(options.tags)) { + interestingTags = { }; + for (i = 0, iz = options.tags.length; i < iz; i++) { + if (typeof options.tags[i] === 'string') { + interestingTags[options.tags[i]] = true; + } else { + throwError('Invalid "tags" parameter: ' + options.tags); + } + } + } else { + throwError('Invalid "tags" parameter: ' + options.tags); + } + } + + if (!CanAccessStringByIndex) { + source = source.split(''); + } + + length = source.length; + index = 0; + lineNumber = 0; + lineStart = 0; + recoverable = options.recoverable; + sloppy = options.sloppy; + strict = options.strict; + + description = scanJSDocDescription(); + + while (true) { + tag = parseTag(options); + if (!tag) { + break; + } + if (!interestingTags || interestingTags.hasOwnProperty(tag.title)) { + tags.push(tag); + } + } + + return { + description: description, + tags: tags + }; + } + exports.parse = parse; + }(jsdoc = {})); + + exports.version = VERSION; + exports.parse = jsdoc.parse; + exports.parseType = typed.parseType; + exports.parseParamType = typed.parseParamType; + exports.unwrapComment = unwrapComment; + exports.Syntax = shallowCopy(typed.Syntax); + exports.Error = DoctrineError; + exports.type = { + Syntax: exports.Syntax, + parseType: typed.parseType, + parseParamType: typed.parseParamType, + stringify: typed.stringify + }; +}(typeof exports === 'undefined' ? (doctrine = {}) : exports)); +/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/javascript/extractor/lib/external/doctrine/eslint.json b/javascript/extractor/lib/external/doctrine/eslint.json new file mode 100644 index 00000000000..330835b9bf7 --- /dev/null +++ b/javascript/extractor/lib/external/doctrine/eslint.json @@ -0,0 +1,22 @@ +{ + "env": { + "node": true + }, + "rules": { + "quotes": [2, "single"], + "valid-jsdoc": [2, true], + "brace-style": [2, true], + "semi": [2, true], + "no-bitwise": [2, true], + "camelcase": [2, true], + "curly": [2, true], + "eqeqeq": [2, "allow-null"], + "wrap-iife": [2, true], + "eqeqeq": [2, true], + "strict": [2, true], + "no-unused-vars": [2, true], + "no-underscore-dangle": [0, false], + "no-use-before-define": [0, false], + "no-constant-condition": [0, false] + } +} diff --git a/javascript/extractor/lib/external/doctrine/package.json b/javascript/extractor/lib/external/doctrine/package.json new file mode 100644 index 00000000000..a2e633f2322 --- /dev/null +++ b/javascript/extractor/lib/external/doctrine/package.json @@ -0,0 +1,34 @@ +{ + "name": "doctrine", + "description": "JSDoc parser", + "homepage": "http://github.com/Constellation/doctrine.html", + "main": "doctrine.js", + "version": "0.5.3-dev", + "engines": { + "node": ">=0.10.0" + }, + "maintainers": [{ + "name": "Yusuke Suzuki", + "email": "utatane.tea@gmail.com", + "web": "http://github.com/Constellation" + }], + "repository": { + "type": "git", + "url": "http://github.com/Constellation/doctrine.git" + }, + "devDependencies": { + "jslint": "~0.1.9", + "eslint": "~0.6.2", + "mocha": "*", + "should": "*" + }, + "licenses": [{ + "type": "BSD", + "url": "http://github.com/Constellation/doctrine/raw/master/LICENSE.BSD" + }], + "scripts": { + "test": "npm run-script lint && npm run-script eslint && ./node_modules/.bin/mocha", + "lint": "node_modules/jslint/bin/jslint.js doctrine.js", + "eslint": "node_modules/eslint/bin/eslint.js -c eslint.json doctrine.js" + } +} diff --git a/javascript/extractor/lib/external/doctrine/test/parse.js b/javascript/extractor/lib/external/doctrine/test/parse.js new file mode 100644 index 00000000000..f5e43823a71 --- /dev/null +++ b/javascript/extractor/lib/external/doctrine/test/parse.js @@ -0,0 +1,1888 @@ +/* + Copyright (C) 2013 Yusuke Suzuki + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/*global require describe it*/ +/*jslint node:true */ +'use strict'; + +var doctrine = require('../doctrine'); +require('should'); + +describe('parse', function () { + it('alias', function () { + var res = doctrine.parse('/** @alias */', { unwrap: true }); + res.tags.should.have.length(0); + }); + + it('alias with name', function () { + var res = doctrine.parse('/** @alias aliasName */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'alias'); + res.tags[0].should.have.property('name', 'aliasName'); + }); + + it('alias with namepath', function () { + var res = doctrine.parse('/** @alias aliasName.OK */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'alias'); + res.tags[0].should.have.property('name', 'aliasName.OK'); + }); + + it('const', function () { + var res = doctrine.parse('/** @const */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'const'); + }); + + it('const with name', function () { + var res = doctrine.parse('/** @const constname */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'const'); + res.tags[0].should.have.property('name', 'constname'); + }); + + it('constant with name', function () { + var res = doctrine.parse('/** @constant constname */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'constant'); + res.tags[0].should.have.property('name', 'constname'); + }); + + it('const with type and name', function () { + var res = doctrine.parse('/** @const {String} constname */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'const'); + res.tags[0].should.have.property('name', 'constname'); + res.tags[0].should.have.property('type'); + res.tags[0].type.should.eql({ + type: 'NameExpression', + name: 'String' + }); + }); + + it('constant with type and name', function () { + var res = doctrine.parse('/** @constant {String} constname */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'constant'); + res.tags[0].should.have.property('name', 'constname'); + res.tags[0].should.have.property('type'); + res.tags[0].type.should.eql({ + type: 'NameExpression', + name: 'String' + }); + }); + + it('const multiple', function () { + var res = doctrine.parse("/**@const\n @const*/", { unwrap: true }); + res.tags.should.have.length(2); + res.tags[0].should.have.property('title', 'const'); + res.tags[1].should.have.property('title', 'const'); + }); + + it('const double', function () { + var res = doctrine.parse("/**@const\n @const*/", { unwrap: true }); + res.tags.should.have.length(2); + res.tags[0].should.have.property('title', 'const'); + res.tags[1].should.have.property('title', 'const'); + }); + + it('const triple', function () { + var res = doctrine.parse( + [ + "/**", + " * @const @const", + " * @const @const", + " * @const @const", + " */" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(3); + res.tags[0].should.have.property('title', 'const'); + res.tags[1].should.have.property('title', 'const'); + res.tags[2].should.have.property('title', 'const'); + }); + + it('constructor', function () { + var res = doctrine.parse('/** @constructor */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'constructor'); + }); + + it('constructor with type', function () { + var res = doctrine.parse('/** @constructor {Object} */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'constructor'); + res.tags[0].type.should.eql({ + type: 'NameExpression', + name: 'Object' + }); + }); + + it('constructor with type and name', function () { + var res = doctrine.parse('/** @constructor {Object} objName */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'constructor'); + res.tags[0].should.have.property('name', 'objName'); + res.tags[0].type.should.eql({ + type: 'NameExpression', + name: 'Object' + }); + }); + + it('class', function () { + var res = doctrine.parse('/** @class */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'class'); + }); + + it('class with type', function () { + var res = doctrine.parse('/** @class {Object} */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'class'); + res.tags[0].type.should.eql({ + type: 'NameExpression', + name: 'Object' + }); + }); + + it('class with type and name', function () { + var res = doctrine.parse('/** @class {Object} objName */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'class'); + res.tags[0].should.have.property('name', 'objName'); + res.tags[0].type.should.eql({ + type: 'NameExpression', + name: 'Object' + }); + }); + + it('deprecated', function () { + var res = doctrine.parse('/** @deprecated */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'deprecated'); + }); + + it('deprecated', function () { + var res = doctrine.parse('/** @deprecated some text here describing why it is deprecated */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'deprecated'); + res.tags[0].should.have.property('description', 'some text here describing why it is deprecated'); + }); + + it('func', function () { + var res = doctrine.parse('/** @func */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'func'); + }); + + it('func with name', function () { + var res = doctrine.parse('/** @func thingName.func */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'func'); + res.tags[0].should.have.property('name', 'thingName.func'); + }); + + it('func with type', function () { + var res = doctrine.parse('/** @func {Object} thingName.func */', { unwrap: true }); + res.tags.should.have.length(0); + // func does not accept type + }); + + it('function', function () { + var res = doctrine.parse('/** @function */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'function'); + }); + + it('function with name', function () { + var res = doctrine.parse('/** @function thingName.function */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'function'); + res.tags[0].should.have.property('name', 'thingName.function'); + }); + + it('function with type', function () { + var res = doctrine.parse('/** @function {Object} thingName.function */', { unwrap: true }); + res.tags.should.have.length(0); + // function does not accept type + }); + + it('member', function () { + var res = doctrine.parse('/** @member */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'member'); + }); + + it('member with name', function () { + var res = doctrine.parse('/** @member thingName.name */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'member'); + res.tags[0].should.have.property('name', 'thingName.name'); + }); + + it('member with type', function () { + var res = doctrine.parse('/** @member {Object} thingName.name */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'member'); + res.tags[0].should.have.property('name', 'thingName.name'); + res.tags[0].should.have.property('type'); + res.tags[0].type.should.eql({ + type: 'NameExpression', + name: 'Object' + }); + }); + + it('method', function () { + var res = doctrine.parse('/** @method */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'method'); + }); + + it('method with name', function () { + var res = doctrine.parse('/** @method thingName.function */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'method'); + res.tags[0].should.have.property('name', 'thingName.function'); + }); + + it('method with type', function () { + var res = doctrine.parse('/** @method {Object} thingName.function */', { unwrap: true }); + res.tags.should.have.length(0); + // method does not accept type + }); + + it('mixes', function () { + var res = doctrine.parse('/** @mixes */', { unwrap: true }); + res.tags.should.have.length(0); + }); + + it('mixes with name', function () { + var res = doctrine.parse('/** @mixes thingName */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'mixes'); + res.tags[0].should.have.property('name', 'thingName'); + }); + + it('mixes with namepath', function () { + var res = doctrine.parse('/** @mixes thingName.name */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'mixes'); + res.tags[0].should.have.property('name', 'thingName.name'); + }); + + it('mixin', function () { + var res = doctrine.parse('/** @mixin */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'mixin'); + }); + + it('mixin with name', function () { + var res = doctrine.parse('/** @mixin thingName */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'mixin'); + res.tags[0].should.have.property('name', 'thingName'); + }); + + it('mixin with namepath', function () { + var res = doctrine.parse('/** @mixin thingName.name */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'mixin'); + res.tags[0].should.have.property('name', 'thingName.name'); + }); + + it('module', function () { + var res = doctrine.parse('/** @module */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'module'); + }); + + it('module with name', function () { + var res = doctrine.parse('/** @module thingName.name */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'module'); + res.tags[0].should.have.property('name', 'thingName.name'); + }); + + it('module with type', function () { + var res = doctrine.parse('/** @module {Object} thingName.name */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'module'); + res.tags[0].should.have.property('name', 'thingName.name'); + res.tags[0].should.have.property('type'); + res.tags[0].type.should.eql({ + type: 'NameExpression', + name: 'Object' + }); + }); + + it('name', function () { + var res = doctrine.parse('/** @name thingName.name */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'name'); + res.tags[0].should.have.property('name', 'thingName.name'); + }); + + it('name', function () { + var res = doctrine.parse('/** @name thingName#name */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'name'); + res.tags[0].should.have.property('name', 'thingName#name'); + }); + + it('name', function () { + var res = doctrine.parse('/** @name thingName~name */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'name'); + res.tags[0].should.have.property('name', 'thingName~name'); + }); + + it('name', function () { + var res = doctrine.parse('/** @name {thing} thingName.name */', { unwrap: true }); + // name does not accept type + res.tags.should.have.length(0); + }); + + it('namespace', function () { + var res = doctrine.parse('/** @namespace */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'namespace'); + }); + + it('namespace with name', function () { + var res = doctrine.parse('/** @namespace thingName.name */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'namespace'); + res.tags[0].should.have.property('name', 'thingName.name'); + }); + + it('namespace with type', function () { + var res = doctrine.parse('/** @namespace {Object} thingName.name */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'namespace'); + res.tags[0].should.have.property('name', 'thingName.name'); + res.tags[0].should.have.property('type'); + res.tags[0].type.should.eql({ + type: 'NameExpression', + name: 'Object' + }); + }); + + it('param', function () { + var res = doctrine.parse( + [ + "/**", + " * @param {String} userName", + "*/" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'param'); + res.tags[0].should.have.property('name', 'userName'); + res.tags[0].should.have.property('type'); + res.tags[0].type.should.eql({ + type: 'NameExpression', + name: 'String' + }); + }); + + it('param with properties', function () { + var res = doctrine.parse( + [ + "/**", + " * @param {String} user.name", + "*/" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'param'); + res.tags[0].should.have.property('name', 'user.name'); + res.tags[0].should.have.property('type'); + res.tags[0].type.should.eql({ + type: 'NameExpression', + name: 'String' + }); + }); + + it('arg with properties', function () { + var res = doctrine.parse( + [ + "/**", + " * @arg {String} user.name", + "*/" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'arg'); + res.tags[0].should.have.property('name', 'user.name'); + res.tags[0].should.have.property('type'); + res.tags[0].type.should.eql({ + type: 'NameExpression', + name: 'String' + }); + }); + + it('argument with properties', function () { + var res = doctrine.parse( + [ + "/**", + " * @argument {String} user.name", + "*/" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'argument'); + res.tags[0].should.have.property('name', 'user.name'); + res.tags[0].should.have.property('type'); + res.tags[0].type.should.eql({ + type: 'NameExpression', + name: 'String' + }); + }); + + it('param typeless', function () { + var res = doctrine.parse( + [ + "/**", + " * @param userName", + "*/" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.eql({ + title: 'param', + type: null, + name: 'userName', + description: null + }); + + var res = doctrine.parse( + [ + "/**", + " * @param userName Something descriptive", + "*/" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.eql({ + title: 'param', + type: null, + name: 'userName', + description: 'Something descriptive' + }); + + var res = doctrine.parse( + [ + "/**", + " * @param user.name Something descriptive", + "*/" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.eql({ + title: 'param', + type: null, + name: 'user.name', + description: 'Something descriptive' + }); + }); + + it('param broken', function () { + var res = doctrine.parse( + [ + "/**", + " * @param {String} userName", + " * @param {String userName", + "*/" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'param'); + res.tags[0].should.have.property('name', 'userName'); + res.tags[0].should.have.property('type'); + res.tags[0].type.should.eql({ + type: 'NameExpression', + name: 'String' + }); + }); + + it('param record', function () { + var res = doctrine.parse( + [ + "/**", + " * @param {{ok:String}} userName", + "*/" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'param'); + res.tags[0].should.have.property('name', 'userName'); + res.tags[0].should.have.property('type'); + res.tags[0].type.should.eql({ + type: 'RecordType', + fields: [{ + type: 'FieldType', + key: 'ok', + value: { + type: 'NameExpression', + name: 'String' + } + }] + }); + }); + + it('param record broken', function () { + var res = doctrine.parse( + [ + "/**", + " * @param {{ok:String} userName", + "*/" + ].join('\n'), { unwrap: true }); + res.tags.should.be.empty; + }); + + it('param multiple lines', function () { + var res = doctrine.parse( + [ + "/**", + " * @param {string|", + " * number} userName", + " * }}", + "*/" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'param'); + res.tags[0].should.have.property('name', 'userName'); + res.tags[0].should.have.property('type'); + res.tags[0].type.should.eql({ + type: 'UnionType', + elements: [{ + type: 'NameExpression', + name: 'string' + }, { + type: 'NameExpression', + name: 'number' + }] + }); + }); + + it('param without braces', function () { + var res = doctrine.parse( + [ + "/**", + " * @param string name description", + "*/" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'param'); + res.tags[0].should.have.property('name', 'string'); + res.tags[0].should.have.property('type', null); + res.tags[0].should.have.property('description', 'name description'); + }); + + it('param w/ hyphen before description', function () { + var res = doctrine.parse( + [ + "/**", + " * @param {string} name - description", + "*/" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.eql({ + title: 'param', + type: { + type: 'NameExpression', + name: 'string' + }, + name: 'name', + description: 'description' + }); + }); + + it('param w/ hyphen + leading space before description', function () { + var res = doctrine.parse( + [ + "/**", + " * @param {string} name - description", + "*/" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.eql({ + title: 'param', + type: { + type: 'NameExpression', + name: 'string' + }, + name: 'name', + description: ' description' + }); + }); + + it('description and param separated by blank line', function () { + var res = doctrine.parse( + [ + "/**", + " * Description", + " * blah blah blah", + " *", + " * @param {string} name description", + "*/" + ].join('\n'), { unwrap: true }); + res.description.should.eql('Description\nblah blah blah'); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'param'); + res.tags[0].should.have.property('name', 'name'); + res.tags[0].should.have.property('type'); + res.tags[0].type.should.eql({ + type: 'NameExpression', + name: 'string' + }); + res.tags[0].should.have.property('description', 'description'); + }); + + it('regular block comment instead of jsdoc-style block comment', function () { + var res = doctrine.parse( + [ + "/*", + " * Description", + " * blah blah blah", + "*/" + ].join('\n'), { unwrap: true }); + res.description.should.eql("Description\nblah blah blah"); + }); + + it('augments', function () { + var res = doctrine.parse('/** @augments */', { unwrap: true }); + res.tags.should.have.length(1); + }); + + it('augments with name', function () { + var res = doctrine.parse('/** @augments ClassName */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'augments'); + res.tags[0].should.have.property('name', 'ClassName'); + }); + + it('augments with type', function () { + var res = doctrine.parse('/** @augments {ClassName} */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'augments'); + res.tags[0].should.have.property('type', { + type: 'NameExpression', + name: 'ClassName' + }); + }); + + it('augments with name', function () { + var res = doctrine.parse('/** @augments ClassName.OK */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'augments'); + res.tags[0].should.have.property('name', 'ClassName.OK'); + }); + + it('extends', function () { + var res = doctrine.parse('/** @extends */', { unwrap: true }); + res.tags.should.have.length(1); + }); + + it('extends with name', function () { + var res = doctrine.parse('/** @extends ClassName */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'extends'); + res.tags[0].should.have.property('name', 'ClassName'); + }); + + it('extends with type', function () { + var res = doctrine.parse('/** @extends {ClassName} */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'extends'); + res.tags[0].should.have.property('type', { + type: 'NameExpression', + name: 'ClassName' + }); + }); + + it('extends with namepath', function () { + var res = doctrine.parse('/** @extends ClassName.OK */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'extends'); + res.tags[0].should.have.property('name', 'ClassName.OK'); + }); + + it('prop', function () { + var res = doctrine.parse( + [ + "/**", + " * @prop {string} thingName - does some stuff", + "*/" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'prop'); + res.tags[0].should.have.property('description', 'does some stuff'); + res.tags[0].type.should.have.property('name', 'string'); + res.tags[0].should.have.property('name', 'thingName'); + }); + + it('prop without type', function () { + var res = doctrine.parse( + [ + "/**", + " * @prop thingName - does some stuff", + "*/" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(0); + }); + + + it('property', function () { + var res = doctrine.parse( + [ + "/**", + " * @property {string} thingName - does some stuff", + "*/" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'property'); + res.tags[0].should.have.property('description', 'does some stuff'); + res.tags[0].type.should.have.property('name', 'string'); + res.tags[0].should.have.property('name', 'thingName'); + }); + + it('property without type', function () { + var res = doctrine.parse( + [ + "/**", + " * @property thingName - does some stuff", + "*/" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(0); + }); + + it('property with nested name', function () { + var res = doctrine.parse( + [ + "/**", + " * @property {string} thingName.name - does some stuff", + "*/" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'property'); + res.tags[0].should.have.property('description', 'does some stuff'); + res.tags[0].type.should.have.property('name', 'string'); + res.tags[0].should.have.property('name', 'thingName.name'); + }); + + it('throws', function () { + var res = doctrine.parse( + [ + "/**", + " * @throws {Error} if something goes wrong", + " */" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'throws'); + res.tags[0].should.have.property('description', 'if something goes wrong'); + res.tags[0].type.should.have.property('name', 'Error'); + }); + + it('throws without type', function () { + var res = doctrine.parse( + [ + "/**", + " * @throws if something goes wrong", + " */" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'throws'); + res.tags[0].should.have.property('description', 'if something goes wrong'); + }); + + it('kind', function () { + var res = doctrine.parse('/** @kind class */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'kind'); + res.tags[0].should.have.property('kind', 'class'); + }); + + it('kind error', function () { + var res = doctrine.parse('/** @kind ng */', { unwrap: true, recoverable: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('errors'); + res.tags[0].errors.should.have.length(1); + res.tags[0].errors[0].should.equal('Invalid kind name \'ng\''); + }); + + it('todo', function () { + var res = doctrine.parse('/** @todo Write the documentation */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'todo'); + res.tags[0].should.have.property('description', 'Write the documentation'); + }); + + it('summary', function () { + // japanese lang + var res = doctrine.parse('/** @summary ゆるゆり3期ãŠã‚ã§ã¨ãƒ¼ */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'summary'); + res.tags[0].should.have.property('description', 'ゆるゆり3期ãŠã‚ã§ã¨ãƒ¼'); + }); + + it('variation', function () { + // japanese lang + var res = doctrine.parse('/** @variation 42 */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'variation'); + res.tags[0].should.have.property('variation', 42); + }); + + it('variation error', function () { + // japanese lang + var res = doctrine.parse('/** @variation Animation */', { unwrap: true, recoverable: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('errors'); + res.tags[0].errors.should.have.length(1); + res.tags[0].errors[0].should.equal('Invalid variation \'Animation\''); + }); + + it('access', function () { + var res = doctrine.parse('/** @access public */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'access'); + res.tags[0].should.have.property('access', 'public'); + }); + + it('access error', function () { + var res = doctrine.parse('/** @access ng */', { unwrap: true, recoverable: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('errors'); + res.tags[0].errors.should.have.length(1); + res.tags[0].errors[0].should.equal('Invalid access name \'ng\''); + }); + + it('public', function () { + var res = doctrine.parse('/** @public */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'public'); + }); + + it('public type and description', function () { + var res = doctrine.parse('/** @public {number} ok */', { unwrap: true, recoverable: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'public'); + res.tags[0].should.have.property('description', 'ok'); + res.tags[0].should.have.property('type'); + res.tags[0].type.should.eql({ + type: 'NameExpression', + name: 'number' + }); + }); + + it('protected', function () { + var res = doctrine.parse('/** @protected */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'protected'); + }); + + it('protected type and description', function () { + var res = doctrine.parse('/** @protected {number} ok */', { unwrap: true, recoverable: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'protected'); + res.tags[0].should.have.property('description', 'ok'); + res.tags[0].should.have.property('type'); + res.tags[0].type.should.eql({ + type: 'NameExpression', + name: 'number' + }); + }); + + it('private', function () { + var res = doctrine.parse('/** @private */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'private'); + }); + + it('private type and description', function () { + var res = doctrine.parse('/** @private {number} ok */', { unwrap: true, recoverable: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'private'); + res.tags[0].should.have.property('description', 'ok'); + res.tags[0].should.have.property('type'); + res.tags[0].type.should.eql({ + type: 'NameExpression', + name: 'number' + }); + }); + + it('readonly', function () { + var res = doctrine.parse('/** @readonly */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'readonly'); + }); + + it('readonly error', function () { + var res = doctrine.parse('/** @readonly ng */', { unwrap: true, recoverable: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('errors'); + res.tags[0].errors.should.have.length(1); + res.tags[0].errors[0].should.equal('Unknown content \'ng\''); + }); + + it('requires', function () { + var res = doctrine.parse('/** @requires */', { unwrap: true }); + res.tags.should.have.length(0); + }); + + it('requires with module name', function () { + var res = doctrine.parse('/** @requires name.path */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'requires'); + res.tags[0].should.have.property('name', 'name.path'); + }); + + it('global', function () { + var res = doctrine.parse('/** @global */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'global'); + }); + + it('global error', function () { + var res = doctrine.parse('/** @global ng */', { unwrap: true, recoverable: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('errors'); + res.tags[0].errors.should.have.length(1); + res.tags[0].errors[0].should.equal('Unknown content \'ng\''); + }); + + it('inner', function () { + var res = doctrine.parse('/** @inner */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'inner'); + }); + + it('inner error', function () { + var res = doctrine.parse('/** @inner ng */', { unwrap: true, recoverable: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('errors'); + res.tags[0].errors.should.have.length(1); + res.tags[0].errors[0].should.equal('Unknown content \'ng\''); + }); + + it('instance', function () { + var res = doctrine.parse('/** @instance */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'instance'); + }); + + it('instance error', function () { + var res = doctrine.parse('/** @instance ng */', { unwrap: true, recoverable: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('errors'); + res.tags[0].errors.should.have.length(1); + res.tags[0].errors[0].should.equal('Unknown content \'ng\''); + }); + + it('since', function () { + var res = doctrine.parse('/** @since 1.2.1 */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'since'); + res.tags[0].should.have.property('description', '1.2.1'); + }); + + it('static', function () { + var res = doctrine.parse('/** @static */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'static'); + }); + + it('static error', function () { + var res = doctrine.parse('/** @static ng */', { unwrap: true, recoverable: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('errors'); + res.tags[0].errors.should.have.length(1); + res.tags[0].errors[0].should.equal('Unknown content \'ng\''); + }); + + it('this', function () { + var res = doctrine.parse( + [ + "/**", + " * @this thingName", + "*/" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'this'); + res.tags[0].should.have.property('name', 'thingName'); + }); + + it('this with namepath', function () { + var res = doctrine.parse( + [ + "/**", + " * @this thingName.name", + "*/" + ].join('\n'), { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'this'); + res.tags[0].should.have.property('name', 'thingName.name'); + }); + + it('this error', function () { + var res = doctrine.parse( + [ + "/**", + " * @this", + "*/" + ].join('\n'), { unwrap: true, recoverable: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'this'); + res.tags[0].should.have.property('errors'); + res.tags[0].errors.should.have.length(1); + res.tags[0].errors[0].should.equal('Missing or invalid tag name'); + }); + + it('var', function () { + var res = doctrine.parse('/** @var */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'var'); + }); + + it('var with name', function () { + var res = doctrine.parse('/** @var thingName.name */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'var'); + res.tags[0].should.have.property('name', 'thingName.name'); + }); + + it('var with type', function () { + var res = doctrine.parse('/** @var {Object} thingName.name */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'var'); + res.tags[0].should.have.property('name', 'thingName.name'); + res.tags[0].should.have.property('type'); + res.tags[0].type.should.eql({ + type: 'NameExpression', + name: 'Object' + }); + }); + + it('version', function () { + var res = doctrine.parse('/** @version 1.2.1 */', { unwrap: true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'version'); + res.tags[0].should.have.property('description', '1.2.1'); + }); + +}); + +describe('parseType', function () { + it('union type closure-compiler extended', function () { + var type = doctrine.parseType("string|number"); + type.should.eql({ + type: 'UnionType', + elements: [{ + type: 'NameExpression', + name: 'string' + }, { + type: 'NameExpression', + name: 'number' + }] + }); + }); + + it('empty union type', function () { + var type = doctrine.parseType("()"); + type.should.eql({ + type: 'UnionType', + elements: [] + }); + }); + + it('comma last array type', function () { + var type = doctrine.parseType("[string,]"); + type.should.eql({ + type: 'ArrayType', + elements: [{ + type: 'NameExpression', + name: 'string' + }] + }); + }); + + it('array type of all literal', function () { + var type = doctrine.parseType("[*]"); + type.should.eql({ + type: 'ArrayType', + elements: [{ + type: 'AllLiteral' + }] + }); + }); + + it('array type of nullable literal', function () { + var type = doctrine.parseType("[?]"); + type.should.eql({ + type: 'ArrayType', + elements: [{ + type: 'NullableLiteral' + }] + }); + }); + + it('comma last record type', function () { + var type = doctrine.parseType("{,}"); + type.should.eql({ + type: 'RecordType', + fields: [] + }); + }); + + it('type application', function () { + var type = doctrine.parseType("Array."); + type.should.eql({ + type: 'TypeApplication', + expression: { + type: 'NameExpression', + name: 'Array' + }, + applications: [{ + type: 'NameExpression', + name: 'String' + }] + }); + }); + + it('type application with multiple patterns', function () { + var type = doctrine.parseType("Array."); + type.should.eql({ + type: 'TypeApplication', + expression: { + type: 'NameExpression', + name: 'Array' + }, + applications: [{ + type: 'NameExpression', + name: 'String' + }, { + type: 'NameExpression', + name: 'Number' + }] + }); + }); + + it('type application without dot', function () { + var type = doctrine.parseType("Array"); + type.should.eql({ + type: 'TypeApplication', + expression: { + type: 'NameExpression', + name: 'Array' + }, + applications: [{ + type: 'NameExpression', + name: 'String' + }] + }); + }); + + it('array-style type application', function () { + var type = doctrine.parseType("String[]"); + type.should.eql({ + type: 'TypeApplication', + expression: { + type: 'NameExpression', + name: 'Array' + }, + applications: [{ + type: 'NameExpression', + name: 'String' + }] + }); + }); + + it('function type simple', function () { + var type = doctrine.parseType("function()"); + type.should.eql({ + "type": "FunctionType", + "params": [], + "result": null + }); + }); + + it('function type with name', function () { + var type = doctrine.parseType("function(a)"); + type.should.eql({ + "type": "FunctionType", + "params": [ + { + "type": "NameExpression", + "name": "a" + } + ], + "result": null + }); + }); + it('function type with name and type', function () { + var type = doctrine.parseType("function(a:b)"); + type.should.eql({ + "type": "FunctionType", + "params": [ + { + "type": "ParameterType", + "name": "a", + "expression": { + "type": "NameExpression", + "name": "b" + } + } + ], + "result": null + }); + }); + it('function type with optional param', function () { + var type = doctrine.parseType("function(a=)"); + type.should.eql({ + "type": "FunctionType", + "params": [ + { + "type": "OptionalType", + "expression": { + "type": "NameExpression", + "name": "a" + } + } + ], + "result": null + }); + }); + it('function type with optional param name and type', function () { + var type = doctrine.parseType("function(a:b=)"); + type.should.eql({ + "type": "FunctionType", + "params": [ + { + "type": "OptionalType", + "expression": { + "type": "ParameterType", + "name": "a", + "expression": { + "type": "NameExpression", + "name": "b" + } + } + } + ], + "result": null + }); + }); + it('function type with rest param', function () { + var type = doctrine.parseType("function(...a)"); + type.should.eql({ + "type": "FunctionType", + "params": [ + { + "type": "RestType", + "expression": { + "type": "NameExpression", + "name": "a" + } + } + ], + "result": null + }); + }); + it('function type with rest param name and type', function () { + var type = doctrine.parseType("function(...a:b)"); + type.should.eql({ + "type": "FunctionType", + "params": [ + { + "type": "RestType", + "expression": { + "type": "ParameterType", + "name": "a", + "expression": { + "type": "NameExpression", + "name": "b" + } + } + } + ], + "result": null + }); + }); + + it('function type with optional rest param', function () { + var type = doctrine.parseType("function(...a=)"); + type.should.eql({ + "type": "FunctionType", + "params": [ + { + "type": "RestType", + "expression": { + "type": "OptionalType", + "expression": { + "type": "NameExpression", + "name": "a" + } + } + } + ], + "result": null + }); + }); + it('function type with optional rest param name and type', function () { + var type = doctrine.parseType("function(...a:b=)"); + type.should.eql({ + "type": "FunctionType", + "params": [ + { + "type": "RestType", + "expression": { + "type": "OptionalType", + "expression": { + "type": "ParameterType", + "name": "a", + "expression": { + "type": "NameExpression", + "name": "b" + } + } + } + }], + "result": null + }); + }); +}); + +describe('parseParamType', function () { + it('question', function () { + var type = doctrine.parseParamType("?"); + type.should.eql({ + type: 'NullableLiteral' + }); + }); + + it('question option', function () { + var type = doctrine.parseParamType("?="); + type.should.eql({ + type: 'OptionalType', + expression: { + type: 'NullableLiteral' + } + }); + }); + + it('function option parameters former', function () { + var type = doctrine.parseParamType("function(?, number)"); + type.should.eql({ + type: 'FunctionType', + params: [{ + type: 'NullableLiteral' + }, { + type: 'NameExpression', + name: 'number' + }], + result: null + }); + }); + + it('function option parameters latter', function () { + var type = doctrine.parseParamType("function(number, ?)"); + type.should.eql({ + type: 'FunctionType', + params: [{ + type: 'NameExpression', + name: 'number' + }, { + type: 'NullableLiteral' + }], + result: null + }); + }); + + it('function type union', function () { + var type = doctrine.parseParamType("function(): ?|number"); + type.should.eql({ + type: 'UnionType', + elements: [{ + type: 'FunctionType', + params: [], + result: { + type: 'NullableLiteral' + } + }, { + type: 'NameExpression', + name: 'number' + }] + }); + }); +}); + +describe('invalid', function () { + it('empty union pipe', function () { + doctrine.parseType.bind(doctrine, "(|)").should.throw(); + doctrine.parseType.bind(doctrine, "(string|)").should.throw(); + doctrine.parseType.bind(doctrine, "(string||)").should.throw(); + }); + + it('comma only array type', function () { + doctrine.parseType.bind(doctrine, "[,]").should.throw(); + }); + + it('comma only record type', function () { + doctrine.parseType.bind(doctrine, "{,,}").should.throw(); + }); +}); + +describe('tags option', function() { + it ('only param', function() { + var res = doctrine.parse( + [ + "/**", + " * @const @const", + " * @param {String} y", + " */" + ].join('\n'), { tags: ['param'], unwrap:true }); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'param'); + res.tags[0].should.have.property('name', 'y'); + }); + + it ('param and type', function() { + var res = doctrine.parse( + [ + "/**", + " * @const x", + " * @param {String} y", + " * @type {String} ", + " */" + ].join('\n'), { tags: ['param', 'type'], unwrap:true }); + res.tags.should.have.length(2); + res.tags[0].should.have.property('title', 'param'); + res.tags[0].should.have.property('name', 'y'); + res.tags[1].should.have.property('title', 'type'); + res.tags[1].should.have.property('type'); + res.tags[1].type.should.have.property('name', 'String'); + }); + +}); + +describe('invalid tags', function() { + it ('bad tag 1', function() { + doctrine.parse.bind(doctrine, + [ + "/**", + " * @param {String} hucairz", + " */" + ].join('\n'), { tags: 1, unwrap:true }).should.throw(); + }); + + it ('bad tag 2', function() { + doctrine.parse.bind(doctrine, + [ + "/**", + " * @param {String} hucairz", + " */" + ].join('\n'), { tags: ['a', 1], unwrap:true }).should.throw(); + }); +}); + +describe('optional params', function() { + + // should fail since sloppy option not set + it('failure 0', function() { + doctrine.parse( + ["/**", " * @param {String} [val]", " */"].join('\n'), { + unwrap: true + }).should.eql({ + "description": "", + "tags": [] + }); + }); + it('success 1', function() { + doctrine.parse( + ["/**", " * @param {String} [val]", " */"].join('\n'), { + unwrap: true, sloppy: true + }).should.eql({ + "description": "", + "tags": [{ + "title": "param", + "description": null, + "type": { + "type": "OptionalType", + "expression": { + "type": "NameExpression", + "name": "String" + } + }, + "name": "val" + }] + }); + }); + it('success 2', function() { + doctrine.parse( + ["/**", " * @param {String=} val", " */"].join('\n'), { + unwrap: true, sloppy: true + }).should.eql({ + "description": "", + "tags": [{ + "title": "param", + "description": null, + "type": { + "type": "OptionalType", + "expression": { + "type": "NameExpression", + "name": "String" + } + }, + "name": "val" + }] + }); + }); + + it('success 3', function() { + doctrine.parse( + ["/**", " * @param {String=} [val=abc] some description", " */"].join('\n'), + { unwrap: true, sloppy: true} + ).should.eql({ + "description": "", + "tags": [{ + "title": "param", + "description": "some description", + "type": { + "type": "OptionalType", + "expression": { + "type": "NameExpression", + "name": "String" + } + }, + "name": "val", + "default": "abc" + }] + }); + }); + + it('line numbers', function() { + var res = doctrine.parse( + [ + "/**", + " * @param {string} foo", + " * @returns {string}", + " *", + " * @example", + " * f('blah'); // => undefined", + " */" + ].join('\n'), + { unwrap: true, lineNumbers: true } + ); + + res.tags[0].should.have.property('lineNumber', 1); + res.tags[1].should.have.property('lineNumber', 2); + res.tags[2].should.have.property('lineNumber', 4); + }); + + it('should handle \\r\\n line endings correctly', function() { + var res = doctrine.parse( + [ + "/**", + " * @param {string} foo", + " * @returns {string}", + " *", + " * @example", + " * f('blah'); // => undefined", + " */" + ].join('\r\n'), + { unwrap: true, lineNumbers: true } + ); + + res.tags[0].should.have.property('lineNumber', 1); + res.tags[1].should.have.property('lineNumber', 2); + res.tags[2].should.have.property('lineNumber', 4); + }); +}); + +describe('recovery tests', function() { + it ('params 2', function () { + var res = doctrine.parse( + [ + "@param f", + "@param {string} f2" + ].join('\n'), { recoverable: true }); + + // ensure both parameters are OK + res.tags.should.have.length(2); + res.tags[0].should.have.property('title', 'param'); + res.tags[0].should.have.property('type', null); + res.tags[0].should.have.property('name', 'f'); + + res.tags[1].should.have.property('title', 'param'); + res.tags[1].should.have.property('type'); + res.tags[1].type.should.have.property('name', 'string'); + res.tags[1].type.should.have.property('type', 'NameExpression'); + res.tags[1].should.have.property('name', 'f2'); + }); + + it ('params 2', function () { + var res = doctrine.parse( + [ + "@param string f", + "@param {string} f2" + ].join('\n'), { recoverable: true }); + + // ensure first parameter is OK even with invalid type name + res.tags.should.have.length(2); + res.tags[0].should.have.property('title', 'param'); + res.tags[0].should.have.property('type', null); + res.tags[0].should.have.property('name', 'string'); + res.tags[0].should.have.property('description', 'f'); + + res.tags[1].should.have.property('title', 'param'); + res.tags[1].should.have.property('type'); + res.tags[1].type.should.have.property('name', 'string'); + res.tags[1].type.should.have.property('type', 'NameExpression'); + res.tags[1].should.have.property('name', 'f2'); + }); + + it ('return 1', function() { + var res = doctrine.parse( + [ + "@returns" + ].join('\n'), { recoverable: true }); + + // return tag should exist + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'returns'); + // Since @returns requires type parameter, its type value becomes + // undefined. But property exists. + res.tags[0].should.have.property('type', undefined); + }); + it ('return 2', function() { + var res = doctrine.parse( + [ + "@returns", + "@param {string} f2" + ].join('\n'), { recoverable: true }); + + // return tag should exist as well as next tag + res.tags.should.have.length(2); + res.tags[0].should.have.property('title', 'returns'); + // Since @returns requires type parameter, its type value becomes + // undefined. But property exists. + res.tags[0].should.have.property('type', undefined); + + res.tags[1].should.have.property('title', 'param'); + res.tags[1].should.have.property('type'); + res.tags[1].type.should.have.property('name', 'string'); + res.tags[1].type.should.have.property('type', 'NameExpression'); + res.tags[1].should.have.property('name', 'f2'); + }); + + it ('extra @ 1', function() { + var res = doctrine.parse( + [ + "@", + "@returns", + "@param {string} f2" + ].join('\n'), { recoverable: true }); + + // empty tag name shouldn't affect subsequent tags + res.tags.should.have.length(3); + res.tags[0].should.have.property('title', ''); + res.tags[0].should.not.have.property('type'); + + res.tags[1].should.have.property('title', 'returns'); + // Since @returns requires type parameter, its type value becomes + // undefined. But property exists. + res.tags[1].should.have.property('type', undefined); + + res.tags[2].should.have.property('title', 'param'); + res.tags[2].should.have.property('type'); + res.tags[2].type.should.have.property('name', 'string'); + res.tags[2].type.should.have.property('type', 'NameExpression'); + res.tags[2].should.have.property('name', 'f2'); + }); + + it ('extra @ 2', function() { + var res = doctrine.parse( + [ + "@ invalid name", + "@param {string} f2" + ].join('\n'), { recoverable: true }); + + // empty tag name shouldn't affect subsequent tags + res.tags.should.have.length(2); + res.tags[0].should.have.property('title', ''); + res.tags[0].should.not.have.property('type'); + res.tags[0].should.not.have.property('name'); + res.tags[0].should.have.property('description', 'invalid name'); + + res.tags[1].should.have.property('title', 'param'); + res.tags[1].should.have.property('type'); + res.tags[1].type.should.have.property('name', 'string'); + res.tags[1].type.should.have.property('type', 'NameExpression'); + res.tags[1].should.have.property('name', 'f2'); + }); + + it ('invalid tag 1', function() { + var res = doctrine.parse( + [ + "@111 invalid name", + "@param {string} f2" + ].join('\n'), { recoverable: true }); + + // invalid tag name shouldn't affect subsequent tags + res.tags.should.have.length(2); + res.tags[0].should.have.property('title', '111'); + res.tags[0].should.not.have.property('type'); + res.tags[0].should.not.have.property('name'); + res.tags[0].should.have.property('description', 'invalid name'); + + res.tags[1].should.have.property('title', 'param'); + res.tags[1].should.have.property('type'); + res.tags[1].type.should.have.property('name', 'string'); + res.tags[1].type.should.have.property('type', 'NameExpression'); + res.tags[1].should.have.property('name', 'f2'); + }); + + it ('invalid tag 1', function() { + var res = doctrine.parse( + [ + "@111", + "@param {string} f2" + ].join('\n'), { recoverable: true }); + + // invalid tag name shouldn't affect subsequent tags + res.tags.should.have.length(2); + res.tags[0].should.have.property('title', '111'); + res.tags[0].should.not.have.property('type'); + res.tags[0].should.not.have.property('name'); + res.tags[0].should.have.property('description', null); + + res.tags[1].should.have.property('title', 'param'); + res.tags[1].should.have.property('type'); + res.tags[1].type.should.have.property('name', 'string'); + res.tags[1].type.should.have.property('type', 'NameExpression'); + res.tags[1].should.have.property('name', 'f2'); + }); + + it ('should not crash on bad type in @param without name', function() { + var res = doctrine.parse("@param {Function(DOMNode)}", + { recoverable: true }); + }); + + it ('should not crash on bad type in @param in sloppy mode', function() { + var res = doctrine.parse("@param {int[} [x]", + { sloppy: true }); + }); +}); + +describe('exported Syntax', function() { + it ('members', function () { + doctrine.Syntax.should.eql({ + NullableLiteral: 'NullableLiteral', + AllLiteral: 'AllLiteral', + NullLiteral: 'NullLiteral', + UndefinedLiteral: 'UndefinedLiteral', + VoidLiteral: 'VoidLiteral', + UnionType: 'UnionType', + ArrayType: 'ArrayType', + RecordType: 'RecordType', + FieldType: 'FieldType', + FunctionType: 'FunctionType', + ParameterType: 'ParameterType', + RestType: 'RestType', + NonNullableType: 'NonNullableType', + OptionalType: 'OptionalType', + NullableType: 'NullableType', + NameExpression: 'NameExpression', + TypeApplication: 'TypeApplication' + }); + }); +}); + +describe('@ mark contained descriptions', function () { + it ('comment description #10', function () { + doctrine.parse( + [ + '/**', + ' * Prevents the default action. It is equivalent to', + ' * {@code e.preventDefault()}, but can be used as the callback argument of', + ' * {@link goog.events.listen} without declaring another function.', + ' * @param {!goog.events.Event} e An event.', + ' */' + ].join('\n'), + { unwrap: true, sloppy: true }).should.eql({ + 'description': 'Prevents the default action. It is equivalent to\n{@code e.preventDefault()}, but can be used as the callback argument of\n{@link goog.events.listen} without declaring another function.', + 'tags': [{ + 'title': 'param', + 'description': 'An event.', + 'type': { + 'type': 'NonNullableType', + 'expression': { + 'type': 'NameExpression', + 'name': 'goog.events.Event' + }, + 'prefix': true + }, + 'name': 'e' + }] + }); + }); + + it ('tag description', function () { + doctrine.parse( + [ + '/**', + ' * Prevents the default action. It is equivalent to', + ' * @param {!goog.events.Event} e An event.', + ' * {@code e.preventDefault()}, but can be used as the callback argument of', + ' * {@link goog.events.listen} without declaring another function.', + ' */' + ].join('\n'), + { unwrap: true, sloppy: true }).should.eql({ + 'description': 'Prevents the default action. It is equivalent to', + 'tags': [{ + 'title': 'param', + 'description': 'An event.\n{@code e.preventDefault()}, but can be used as the callback argument of\n{@link goog.events.listen} without declaring another function.', + 'type': { + 'type': 'NonNullableType', + 'expression': { + 'type': 'NameExpression', + 'name': 'goog.events.Event' + }, + 'prefix': true + }, + 'name': 'e' + }] + }); + }); +}); + +describe('function', function () { + it ('recognize "function" type', function () { + var res = doctrine.parse( + [ + "@param {function} foo description", + ].join('\n'), {}); + res.tags.should.have.length(1); + res.tags[0].should.have.property('title', 'param'); + res.tags[0].should.have.property('type'); + res.tags[0].type.should.eql({ + "name": "function", + "type": "NameExpression" + }); + res.tags[0].should.have.property('name', 'foo'); + res.tags[0].should.have.property('description', 'description'); + }); +}); + +/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/javascript/extractor/lib/external/doctrine/test/strict.js b/javascript/extractor/lib/external/doctrine/test/strict.js new file mode 100644 index 00000000000..b28a6d2025a --- /dev/null +++ b/javascript/extractor/lib/external/doctrine/test/strict.js @@ -0,0 +1,165 @@ +/* + Copyright (C) 2014 Yusuke Suzuki + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/*global require describe it*/ +/*jslint node:true */ +'use strict'; + +var doctrine = require('../doctrine'); +require('should'); + +describe('strict parse', function () { + // https://github.com/Constellation/doctrine/issues/21 + it('unbalanced braces', function () { + (function () { + doctrine.parse( + [ + "/**", + " * @param {const", + " */" + ].join('\n'), { unwrap: true, strict: true }); + }).should.throw('Braces are not balanced'); + + (function () { + doctrine.parse( + [ + "/**", + " * @param {const", + " */" + ].join('\n'), { unwrap: true }); + }).should.not.throw(); + + (function () { + doctrine.parse( + [ + "/**", + " * Description", + " * @param {string name Param description", + " * @param {int} foo Bar", + " */" + ].join('\n'), { unwrap: true, strict: true }); + }).should.throw('Braces are not balanced'); + + (function () { + doctrine.parse( + [ + "/**", + " * Description", + " * @param {string name Param description", + " * @param {int} foo Bar", + " */" + ].join('\n'), { unwrap: true }); + }).should.not.throw(); + + (function () { + doctrine.parse( + [ + "/**", + " * Description", + " * @returns {int", + " */" + ].join('\n'), { unwrap: true, strict: true }); + }).should.throw('Braces are not balanced'); + + (function () { + doctrine.parse( + [ + "/**", + " * Description", + " * @returns {int", + " */" + ].join('\n'), { unwrap: true }); + }).should.not.throw(); + }); + + // https://github.com/Constellation/doctrine/issues/21 + it('incorrect tag starting with @@', function () { + (function () { + doctrine.parse( + [ + "/**", + " * @@version", + " */" + ].join('\n'), { unwrap: true, strict: true }); + }).should.throw('Missing or invalid title'); + + (function () { + doctrine.parse( + [ + "/**", + " * @@version", + " */" + ].join('\n'), { unwrap: true }); + }).should.not.throw(); + + (function () { + doctrine.parse( + [ + "/**", + " * Description", + " * @@param {string} name Param description", + " */" + ].join('\n'), { unwrap: true, strict: true }); + }).should.throw('Missing or invalid title'); + + (function () { + doctrine.parse( + [ + "/**", + " * Description", + " * @@param {string} name Param description", + " */" + ].join('\n'), { unwrap: true }); + }).should.not.throw(); + + (function () { + doctrine.parse( + [ + "/**", + " * Description", + " * @kind ng", + " */" + ].join('\n'), { unwrap: true, strict: true }); + }).should.throw('Invalid kind name \'ng\''); + + (function () { + doctrine.parse( + [ + "/**", + " * Description", + " * @variation Animation", + " */" + ].join('\n'), { unwrap: true, strict: true }); + }).should.throw('Invalid variation \'Animation\''); + + (function () { + doctrine.parse( + [ + "/**", + " * Description", + " * @access ng", + " */" + ].join('\n'), { unwrap: true, strict: true }); + }).should.throw('Invalid access name \'ng\''); + }); +}); diff --git a/javascript/extractor/lib/external/doctrine/test/stringify.js b/javascript/extractor/lib/external/doctrine/test/stringify.js new file mode 100644 index 00000000000..4c37197e1a8 --- /dev/null +++ b/javascript/extractor/lib/external/doctrine/test/stringify.js @@ -0,0 +1,410 @@ +/* + Copyright (C) 2013 Yusuke Suzuki + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/*global require describe it*/ +/*jslint node:true */ +'use strict'; + +var doctrine = require('../doctrine'); +var assert = require('assert'); +require('should'); + +// tests for the stringify function. +// ensure that we can parse and then stringify and the results are identical +describe('stringify', function () { + + function testStringify(text) { + it (text, function() { + var result = doctrine.parse("@param {" + text + "} name"); + // console.log("Parse Tree: " + JSON.stringify(result, null, " ")); + var stringed = doctrine.type.stringify(result.tags[0].type, {compact:true}); + stringed.should.equal(text); + }); + } + + // simple + testStringify("String"); + testStringify("*"); + testStringify("null"); + testStringify("undefined"); + testStringify("void"); + //testStringify("?="); // Failing + + // rest + testStringify("...string"); + testStringify("...[string]"); + testStringify("...[[string]]"); + + // optional, nullable, nonnullable + testStringify("string="); + testStringify("?string"); + testStringify("!string"); + testStringify("!string="); + + // type applications + testStringify("Array."); + testStringify("Array."); + + // union types + testStringify("()"); + testStringify("(String|Number)"); + + // Arrays + testStringify("[String]"); + testStringify("[String,Number]"); + testStringify("[(String|Number)]"); + + // Record types + testStringify("{a}"); + testStringify("{a:String}"); + testStringify("{a:String,b}"); + testStringify("{a:String,b:object}"); + testStringify("{a:String,b:foo.bar.baz}"); + testStringify("{a:(String|Number),b,c:Array.}"); + testStringify("...{a:(String|Number),b,c:Array.}"); + testStringify("{a:(String|Number),b,c:Array.}="); + + // fn types + testStringify("function(a)"); + testStringify("function(a):String"); + testStringify("function(a:number):String"); + testStringify("function(a:number,b:Array.<(String|Number|Object)>):String"); + testStringify("function(a:number,callback:function(a:Array.<(String|Number|Object)>):boolean):String"); + testStringify("function(a:(string|number),this:string,new:true):function():number"); + testStringify("function(a:(string|number),this:string,new:true):function(a:function(val):result):number"); +}); + +describe('literals', function() { + it('NullableLiteral', function () { + doctrine.type.stringify({ + type: doctrine.Syntax.NullableLiteral + }).should.equal('?'); + }); + + it('AllLiteral', function () { + doctrine.type.stringify({ + type: doctrine.Syntax.AllLiteral + }).should.equal('*'); + }); + + it('NullLiteral', function () { + doctrine.type.stringify({ + type: doctrine.Syntax.NullLiteral + }).should.equal('null'); + }); + + it('UndefinedLiteral', function () { + doctrine.type.stringify({ + type: doctrine.Syntax.UndefinedLiteral + }).should.equal('undefined'); + }); +}); + +describe('Expression', function () { + it('NameExpression', function () { + doctrine.type.stringify({ + type: doctrine.Syntax.NameExpression, + name: 'this.is.valid' + }).should.equal('this.is.valid'); + + doctrine.type.stringify({ + type: doctrine.Syntax.NameExpression, + name: 'String' + }).should.equal('String'); + }); + + it('ArrayType', function () { + doctrine.type.stringify({ + type: doctrine.Syntax.ArrayType, + elements: [{ + type: doctrine.Syntax.NameExpression, + name: 'String' + }] + }).should.equal('[String]'); + + doctrine.type.stringify({ + type: doctrine.Syntax.ArrayType, + elements: [{ + type: doctrine.Syntax.NameExpression, + name: 'String' + }, { + type: doctrine.Syntax.NameExpression, + name: 'Number' + }] + }).should.equal('[String, Number]'); + + doctrine.type.stringify({ + type: doctrine.Syntax.ArrayType, + elements: [] + }).should.equal('[]'); + }); + + it('RecordType', function () { + doctrine.type.stringify({ + type: doctrine.Syntax.RecordType, + fields: [{ + type: doctrine.Syntax.FieldType, + key: 'name', + value: null + }] + }).should.equal('{name}'); + + doctrine.type.stringify({ + type: doctrine.Syntax.RecordType, + fields: [{ + type: doctrine.Syntax.FieldType, + key: 'name', + value: { + type: doctrine.Syntax.NameExpression, + name: 'String' + } + }] + }).should.equal('{name: String}'); + + doctrine.type.stringify({ + type: doctrine.Syntax.RecordType, + fields: [{ + type: doctrine.Syntax.FieldType, + key: 'string', + value: { + type: doctrine.Syntax.NameExpression, + name: 'String' + } + }, { + type: doctrine.Syntax.FieldType, + key: 'number', + value: { + type: doctrine.Syntax.NameExpression, + name: 'Number' + } + }] + }).should.equal('{string: String, number: Number}'); + + doctrine.type.stringify({ + type: doctrine.Syntax.RecordType, + fields: [] + }).should.equal('{}'); + }); + + it('UnionType', function () { + doctrine.type.stringify({ + type: doctrine.Syntax.UnionType, + elements: [{ + type: doctrine.Syntax.NameExpression, + name: 'String' + }] + }).should.equal('(String)'); + + doctrine.type.stringify({ + type: doctrine.Syntax.UnionType, + elements: [{ + type: doctrine.Syntax.NameExpression, + name: 'String' + }, { + type: doctrine.Syntax.NameExpression, + name: 'Number' + }] + }).should.equal('(String|Number)'); + + doctrine.type.stringify({ + type: doctrine.Syntax.UnionType, + elements: [{ + type: doctrine.Syntax.NameExpression, + name: 'String' + }, { + type: doctrine.Syntax.NameExpression, + name: 'Number' + }] + }, { topLevel: true }).should.equal('String|Number'); + }); + + it('RestType', function () { + doctrine.type.stringify({ + type: doctrine.Syntax.RestType, + expression: { + type: doctrine.Syntax.NameExpression, + name: 'String' + } + }).should.equal('...String'); + }); + + it('NonNullableType', function () { + doctrine.type.stringify({ + type: doctrine.Syntax.NonNullableType, + expression: { + type: doctrine.Syntax.NameExpression, + name: 'String' + }, + prefix: true + }).should.equal('!String'); + + doctrine.type.stringify({ + type: doctrine.Syntax.NonNullableType, + expression: { + type: doctrine.Syntax.NameExpression, + name: 'String' + }, + prefix: false + }).should.equal('String!'); + }); + + it('OptionalType', function () { + doctrine.type.stringify({ + type: doctrine.Syntax.OptionalType, + expression: { + type: doctrine.Syntax.NameExpression, + name: 'String' + } + }).should.equal('String='); + }); + + it('NullableType', function () { + doctrine.type.stringify({ + type: doctrine.Syntax.NullableType, + expression: { + type: doctrine.Syntax.NameExpression, + name: 'String' + }, + prefix: true + }).should.equal('?String'); + + doctrine.type.stringify({ + type: doctrine.Syntax.NullableType, + expression: { + type: doctrine.Syntax.NameExpression, + name: 'String' + }, + prefix: false + }).should.equal('String?'); + }); + + it('TypeApplication', function () { + doctrine.type.stringify({ + type: doctrine.Syntax.TypeApplication, + expression: { + type: doctrine.Syntax.NameExpression, + name: 'Array' + }, + applications: [ + { + type: doctrine.Syntax.NameExpression, + name: 'String' + } + ] + }).should.equal('Array.'); + + doctrine.type.stringify({ + type: doctrine.Syntax.TypeApplication, + expression: { + type: doctrine.Syntax.NameExpression, + name: 'Array' + }, + applications: [ + { + type: doctrine.Syntax.NameExpression, + name: 'String' + }, + { + type: doctrine.Syntax.AllLiteral + } + ] + }).should.equal('Array.'); + }); +}); + +describe('Complex identity', function () { + it('Functions', function () { + var data01 = 'function (): void'; + doctrine.type.stringify( + doctrine.type.parseType(data01) + ).should.equal(data01); + + var data02 = 'function (): String'; + doctrine.type.stringify( + doctrine.type.parseType(data02) + ).should.equal(data02); + + var data03 = 'function (test: string): String'; + doctrine.type.stringify( + doctrine.type.parseType(data03) + ).should.equal(data03); + + var data04 = 'function (this: Date, test: String): String'; + doctrine.type.stringify( + doctrine.type.parseType(data04) + ).should.equal(data04); + + var data05 = 'function (this: Date, a: String, b: Number): String'; + doctrine.type.stringify( + doctrine.type.parseType(data05) + ).should.equal(data05); + + var data06 = 'function (this: Date, a: Array., b: Number): String'; + doctrine.type.stringify( + doctrine.type.parseType(data06) + ).should.equal(data06); + + var data07 = 'function (new: Date, a: Array., b: Number): HashMap.'; + doctrine.type.stringify( + doctrine.type.parseType(data07) + ).should.equal(data07); + + var data08 = 'function (new: Date, a: Array., b: (Number|String|Date)): HashMap.'; + doctrine.type.stringify( + doctrine.type.parseType(data08) + ).should.equal(data08); + + var data09 = 'function (new: Date)'; + doctrine.type.stringify( + doctrine.type.parseType(data09) + ).should.equal(data09); + + var data10 = 'function (this: Date)'; + doctrine.type.stringify( + doctrine.type.parseType(data10) + ).should.equal(data10); + + var data11 = 'function (this: Date, ...list)'; + doctrine.type.stringify( + doctrine.type.parseType(data11) + ).should.equal(data11); + + var data11a = 'function (this: Date, test: String=)'; + doctrine.type.stringify( + doctrine.type.parseType(data11a) + ).should.equal(data11a); + + // raw ... are not supported +// var data12 = 'function (this: Date, ...)'; +// doctrine.type.stringify( +// doctrine.type.parseType(data12) +// ).should.equal(data12); + + var data12a = 'function (this: Date, ?=)'; + doctrine.type.stringify( + doctrine.type.parseType(data12a) + ).should.equal(data12a); + }); +}); + +/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/javascript/extractor/lib/external/doctrine/test/test.html b/javascript/extractor/lib/external/doctrine/test/test.html new file mode 100644 index 00000000000..3784c2e5e4e --- /dev/null +++ b/javascript/extractor/lib/external/doctrine/test/test.html @@ -0,0 +1,31 @@ + + + + +Doctrine trying + + + + + +
+
+ +
+
+

Parse Tree

+

+	

Stringified

+

+
+
\ No newline at end of file
diff --git a/javascript/extractor/lib/external/doctrine/test/unwrap.js b/javascript/extractor/lib/external/doctrine/test/unwrap.js
new file mode 100644
index 00000000000..649577fef12
--- /dev/null
+++ b/javascript/extractor/lib/external/doctrine/test/unwrap.js
@@ -0,0 +1,57 @@
+/*
+  Copyright (C) 2012 Yusuke Suzuki 
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL  BE LIABLE FOR ANY
+  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*jslint node:true */
+'use strict';
+
+var doctrine = require('../doctrine');
+require('should');
+
+describe('unwrapComment', function () {
+  it('normal', function () {
+    doctrine.unwrapComment('/**\n * @const\n * @const\n */').should.equal('\n@const\n@const\n');
+  });
+
+  it('single', function () {
+    doctrine.unwrapComment('/**x*/').should.equal('x');
+  });
+
+  it('more stars', function () {
+    doctrine.unwrapComment('/***x*/').should.equal('x');
+    doctrine.unwrapComment('/****x*/').should.equal('*x');
+  });
+
+  it('2 lines', function () {
+    doctrine.unwrapComment('/**x\n * y\n*/').should.equal('x\ny\n');
+  });
+
+  it('2 lines with space', function () {
+    doctrine.unwrapComment('/**x\n *    y\n*/').should.equal('x\n   y\n');
+  });
+
+  it('3 lines with blank line', function () {
+    doctrine.unwrapComment('/**x\n *\n \* y\n*/').should.equal('x\n\ny\n');
+  });
+});
+/* vim: set sw=4 ts=4 et tw=80 : */
diff --git a/javascript/extractor/lib/typescript/.gitignore b/javascript/extractor/lib/typescript/.gitignore
new file mode 100644
index 00000000000..9d0b71a3c79
--- /dev/null
+++ b/javascript/extractor/lib/typescript/.gitignore
@@ -0,0 +1,2 @@
+build
+dist
diff --git a/javascript/extractor/lib/typescript/.yarnrc b/javascript/extractor/lib/typescript/.yarnrc
new file mode 100644
index 00000000000..7d45dca7290
--- /dev/null
+++ b/javascript/extractor/lib/typescript/.yarnrc
@@ -0,0 +1 @@
+yarn-offline-mirror "../../../../../resources/lib/yarn-mirrors/typescript-parser-wrapper/"
diff --git a/javascript/extractor/lib/typescript/package.json b/javascript/extractor/lib/typescript/package.json
new file mode 100644
index 00000000000..42431318aa7
--- /dev/null
+++ b/javascript/extractor/lib/typescript/package.json
@@ -0,0 +1,20 @@
+{
+    "name": "typescript-parser-wrapper",
+    "private": true,
+    "dependencies": {
+        "typescript": "3.0.1"
+    },
+    "scripts": {
+        "build": "tsc --project tsconfig.json && rollup -c",
+        "check": "tsc --noEmit --project . && tslint --project .",
+        "lint": "tslint --project .",
+        "lint-fix": "tslint --project . --fix"
+    },
+    "devDependencies": {
+        "@types/node": "^9.3.0",
+        "rollup": "^0.66.6",
+        "rollup-plugin-commonjs": "^9.2.0",
+        "rollup-plugin-node-resolve": "^3.4.0",
+        "tslint": "^5.9.1"
+    }
+}
diff --git a/javascript/extractor/lib/typescript/rollup.config.js b/javascript/extractor/lib/typescript/rollup.config.js
new file mode 100644
index 00000000000..e293414c70a
--- /dev/null
+++ b/javascript/extractor/lib/typescript/rollup.config.js
@@ -0,0 +1,51 @@
+import resolve from "rollup-plugin-node-resolve";
+import commonjs from "rollup-plugin-commonjs";
+import * as fs from "fs";
+import * as pathlib from "path";
+
+const copyTypeScriptFiles = (options) => ({
+  generateBundle() {
+    if (!fs.existsSync('dist')) {
+      fs.mkdirSync('dist');
+    }
+    let typescriptDir = pathlib.dirname(require.resolve("typescript"));
+    for (let file of fs.readdirSync(typescriptDir)) {
+      // Don't include bundles like `tsc.js`.
+      if (file.endsWith(".js")) continue;
+
+      // Only include library typings, not `typescript.d.ts` and friends
+      if (file.endsWith(".d.ts") && !file.startsWith("lib")) continue;
+
+      let filePath = `${typescriptDir}/${file}`;
+
+      // Skip directories. They contain locale translations and are not needed.
+      if (fs.statSync(filePath).isDirectory()) continue;
+
+      fs.copyFileSync(filePath, `dist/${file}`);
+    }
+  }
+});
+
+export default {
+  input: 'build/main.js',
+  output: {
+    file: 'dist/main.js',
+    format: 'cjs'
+  },
+  plugins: [
+    resolve(), // Resolve paths using Node.js rules
+    commonjs({ // Make rollup understand `require`
+      ignore: [ 'source-map-support' ] // Optional required - do not hoist to top-level.
+    }),
+    copyTypeScriptFiles(), // Copy files needed by TypeScript compiler
+  ],
+  // List Node.js modules to avoid warnings about unresolved modules.
+  external: [
+    'buffer',
+    'crypto',
+    'fs',
+    'os',
+    'path',
+    'readline',
+  ],
+}
diff --git a/javascript/extractor/lib/typescript/src/ast_extractor.ts b/javascript/extractor/lib/typescript/src/ast_extractor.ts
new file mode 100644
index 00000000000..e69714dd580
--- /dev/null
+++ b/javascript/extractor/lib/typescript/src/ast_extractor.ts
@@ -0,0 +1,329 @@
+import * as ts from "./typescript";
+import { Project } from "./common";
+
+/**
+ * Interface that exposes some internal properties we rely on, as well as
+ * some properties we add ourselves.
+ */
+export interface AugmentedSourceFile extends ts.SourceFile {
+    parseDiagnostics?: any[];
+    $tokens?: Token[];
+    $symbol?: number;
+}
+
+export interface AugmentedNode extends ts.Node {
+    $pos?: any;
+    $end?: any;
+    $declarationKind?: string;
+    $type?: number;
+    $symbol?: number;
+    $resolvedSignature?: number;
+    $overloadIndex?: number;
+}
+
+export interface AugmentedPos extends ts.LineAndCharacter {
+    $offset?: number;
+}
+
+export interface Token {
+    kind: ts.SyntaxKind;
+    tokenPos: AugmentedPos;
+    text: string;
+}
+
+function hasOwnProperty(o: object, p: string) {
+    return o && Object.prototype.hasOwnProperty.call(o, p);
+}
+
+// build our own copy of `ts.SyntaxKind` without `First*`/`Last*` markers
+let SyntaxKind: { [id: number]: string } = [];
+for (let p in ts.SyntaxKind) {
+    if (!hasOwnProperty(ts.SyntaxKind, p)) {
+        continue;
+    }
+    // skip numeric indices
+    if (+p === +p) {
+        continue;
+    }
+    // skip `First*`/`Last*`
+    if (p.substring(0, 5) === "First" || p.substring(0, 4) === "Last") {
+        continue;
+    }
+    SyntaxKind[ts.SyntaxKind[p] as any] = p;
+}
+
+let skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g;
+
+/**
+ * Invokes the given callback for every AST node in the given tree.
+ */
+function forEachNode(ast: ts.Node, callback: (node: ts.Node) => void) {
+    function visit(node: ts.Node) {
+        ts.forEachChild(node, visit);
+        callback(node);
+    }
+    visit(ast);
+}
+
+export function augmentAst(ast: AugmentedSourceFile, code: string, project: Project | null) {
+    /**
+     * Converts a numeric offset to a position object with line and column information.
+     */
+    function augmentPos(pos: number, shouldSkipWhitespace?: boolean): AugmentedPos {
+        // skip over leading spaces/comments
+        if (shouldSkipWhitespace) {
+            skipWhiteSpace.lastIndex = pos;
+            pos += skipWhiteSpace.exec(code)[0].length;
+        }
+        let posObject: AugmentedPos = ast.getLineAndCharacterOfPosition(pos);
+        posObject.$offset = pos;
+        return posObject;
+    }
+
+    // Find the position of all tokens where the scanner requires parse-tree information.
+    // At these offsets, a call to `scanner.reScanX` is required.
+    type RescanEvent = () => void;
+    let reScanEvents: RescanEvent[] = [];
+    let reScanEventPos: number[] = [];
+    let scanner = ts.createScanner(ts.ScriptTarget.ES2015, false, 1, code);
+    let reScanSlashToken = scanner.reScanSlashToken.bind(scanner);
+    let reScanTemplateToken = scanner.reScanTemplateToken.bind(scanner);
+    let reScanGreaterToken = scanner.reScanGreaterToken.bind(scanner);
+    if (!ast.parseDiagnostics || ast.parseDiagnostics.length === 0) {
+        forEachNode(ast, node => {
+            if (ts.isRegularExpressionLiteral(node)) {
+                reScanEventPos.push(node.getStart(ast, false));
+                reScanEvents.push(reScanSlashToken);
+            }
+            if (ts.isTemplateMiddle(node) || ts.isTemplateTail(node)) {
+                reScanEventPos.push(node.getStart(ast, false));
+                reScanEvents.push(reScanTemplateToken);
+            }
+            if (ts.isBinaryExpression(node)) {
+                let operator = node.operatorToken;
+                switch (operator.kind) {
+                    case ts.SyntaxKind.GreaterThanEqualsToken:
+                    case ts.SyntaxKind.GreaterThanGreaterThanEqualsToken:
+                    case ts.SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken:
+                    case ts.SyntaxKind.GreaterThanGreaterThanGreaterThanToken:
+                    case ts.SyntaxKind.GreaterThanGreaterThanToken:
+                        reScanEventPos.push(operator.getStart(ast, false));
+                        reScanEvents.push(reScanGreaterToken);
+                        break;
+                }
+            }
+        });
+    }
+
+    reScanEventPos.push(Infinity);
+
+    // add tokens and comments to the AST
+    ast.$tokens = [];
+    let rescanEventIndex = 0;
+    let nextRescanPosition = reScanEventPos[0];
+    let tk;
+    do {
+        tk = scanner.scan();
+        if (scanner.getTokenPos() === nextRescanPosition) {
+            let callback = reScanEvents[rescanEventIndex];
+            callback();
+            ++rescanEventIndex;
+            nextRescanPosition = reScanEventPos[rescanEventIndex];
+        }
+        ast.$tokens.push({
+            kind: tk,
+            tokenPos: augmentPos(scanner.getTokenPos()),
+            text: scanner.getTokenText(),
+        });
+    } while (tk !== ts.SyntaxKind.EndOfFileToken);
+
+    if (ast.parseDiagnostics) {
+        ast.parseDiagnostics.forEach(d => {
+            delete d.file;
+            d.$pos = augmentPos(d.start);
+        });
+    }
+
+    let typeChecker = project && project.program.getTypeChecker();
+    let typeTable = project && project.typeTable;
+
+    // Associate a symbol with the AST node root, in case it is a module.
+    if (typeTable != null) {
+        let symbol = typeChecker.getSymbolAtLocation(ast);
+        if (symbol != null) {
+            ast.$symbol = typeTable.getSymbolId(symbol);
+        }
+    }
+
+    forEachNode(ast, (node: AugmentedNode) => {
+        // fill in line/column info
+        if ("pos" in node) {
+            node.$pos = augmentPos(node.pos, true);
+        }
+        if ("end" in node) {
+            node.$end = augmentPos(node.end);
+        }
+
+        if (ts.isVariableDeclarationList(node as any)) {
+            let tz = ts as any;
+            if (typeof tz.isLet === "function" && tz.isLet(node) || (node.flags & ts.NodeFlags.Let)) {
+                node.$declarationKind = "let";
+            } else if (typeof tz.isConst === "function" && tz.isConst(node) || (node.flags & ts.NodeFlags.Const)) {
+                node.$declarationKind = "const";
+            } else {
+                node.$declarationKind = "var";
+            }
+        }
+
+        if (typeChecker != null) {
+            if (isTypedNode(node)) {
+                let type = typeChecker.getTypeAtLocation(node);
+                if (type != null) {
+                    let id = typeTable.buildType(type);
+                    if (id != null) {
+                        node.$type = id;
+                    }
+                }
+                // Extract the target call signature of a function call.
+                // In case the callee is overloaded or generic, this is not something we can
+                // derive from the callee type in QL.
+                if (ts.isCallOrNewExpression(node)) {
+                    let kind = ts.isCallExpression(node) ? ts.SignatureKind.Call : ts.SignatureKind.Construct;
+                    let resolvedSignature = typeChecker.getResolvedSignature(node);
+                    if (resolvedSignature != null) {
+                        let resolvedId = typeTable.getSignatureId(kind, resolvedSignature);
+                        if (resolvedId != null) {
+                            (node as AugmentedNode).$resolvedSignature = resolvedId;
+                        }
+                        let declaration = resolvedSignature.declaration;
+                        if (declaration != null) {
+                            // Find the generic signature, i.e. without call-site type arguments substituted,
+                            // but with overloading resolved.
+                            let calleeType = typeChecker.getTypeAtLocation(node.expression);
+                            if (calleeType != null && declaration != null) {
+                                let calleeSignatures = typeChecker.getSignaturesOfType(calleeType, kind);
+                                for (let i = 0; i < calleeSignatures.length; ++i) {
+                                    if (calleeSignatures[i].declaration === declaration) {
+                                        (node as AugmentedNode).$overloadIndex = i;
+                                        break;
+                                    }
+                                }
+                            }
+                            // Extract the symbol so the declaration can be found from QL.
+                            let name = (declaration as any).name;
+                            let symbol = name && typeChecker.getSymbolAtLocation(name);
+                            if (symbol != null) {
+                                (node as AugmentedNode).$symbol = typeTable.getSymbolId(symbol);
+                            }
+                        }
+                    }
+                }
+            }
+            if (isNamedNodeWithSymbol(node)) {
+                let symbol = typeChecker.getSymbolAtLocation(node.name);
+                if (symbol != null) {
+                    node.$symbol = typeTable.getSymbolId(symbol);
+                }
+            }
+            if (ts.isTypeReferenceNode(node)) {
+                // For type references we inject a symbol on each part of the name.
+                // We traverse each node in the name here since we know these are part of
+                // a type annotation.  This means we don't have to do it for all identifiers
+                // and qualified names, which would extract more information than we need.
+                let namePart: (ts.EntityName & AugmentedNode) = node.typeName;
+                while (ts.isQualifiedName(namePart)) {
+                    let symbol = typeChecker.getSymbolAtLocation(namePart.right);
+                    if (symbol != null) {
+                        namePart.$symbol = typeTable.getSymbolId(symbol);
+                    }
+
+                    // Traverse into the prefix.
+                    namePart = namePart.left;
+                }
+                let symbol = typeChecker.getSymbolAtLocation(namePart);
+                if (symbol != null) {
+                    namePart.$symbol = typeTable.getSymbolId(symbol);
+                }
+            }
+        }
+    });
+}
+
+type NamedNodeWithSymbol = AugmentedNode & (ts.ClassDeclaration | ts.InterfaceDeclaration
+    | ts.TypeAliasDeclaration | ts.EnumDeclaration | ts.EnumMember | ts.ModuleDeclaration | ts.FunctionDeclaration
+    | ts.MethodDeclaration | ts.MethodSignature);
+
+/**
+ * True if the given AST node has a name, and should be associated with a symbol.
+ */
+function isNamedNodeWithSymbol(node: ts.Node): node is NamedNodeWithSymbol {
+    switch (node.kind) {
+        case ts.SyntaxKind.ClassDeclaration:
+        case ts.SyntaxKind.InterfaceDeclaration:
+        case ts.SyntaxKind.TypeAliasDeclaration:
+        case ts.SyntaxKind.EnumDeclaration:
+        case ts.SyntaxKind.EnumMember:
+        case ts.SyntaxKind.ModuleDeclaration:
+        case ts.SyntaxKind.FunctionDeclaration:
+        case ts.SyntaxKind.MethodDeclaration:
+        case ts.SyntaxKind.MethodSignature:
+            return true;
+    }
+    return false;
+}
+
+/**
+ * True if the given AST node has a type.
+ */
+function isTypedNode(node: ts.Node): boolean {
+    switch (node.kind) {
+      case ts.SyntaxKind.ArrayLiteralExpression:
+      case ts.SyntaxKind.ArrowFunction:
+      case ts.SyntaxKind.AsExpression:
+      case ts.SyntaxKind.AwaitExpression:
+      case ts.SyntaxKind.BinaryExpression:
+      case ts.SyntaxKind.CallExpression:
+      case ts.SyntaxKind.ClassExpression:
+      case ts.SyntaxKind.CommaListExpression:
+      case ts.SyntaxKind.ConditionalExpression:
+      case ts.SyntaxKind.DeleteExpression:
+      case ts.SyntaxKind.ElementAccessExpression:
+      case ts.SyntaxKind.ExpressionStatement:
+      case ts.SyntaxKind.ExpressionWithTypeArguments:
+      case ts.SyntaxKind.FalseKeyword:
+      case ts.SyntaxKind.FunctionDeclaration:
+      case ts.SyntaxKind.FunctionExpression:
+      case ts.SyntaxKind.Identifier:
+      case ts.SyntaxKind.JsxExpression:
+      case ts.SyntaxKind.LiteralType:
+      case ts.SyntaxKind.NewExpression:
+      case ts.SyntaxKind.NonNullExpression:
+      case ts.SyntaxKind.NoSubstitutionTemplateLiteral:
+      case ts.SyntaxKind.NumericLiteral:
+      case ts.SyntaxKind.ObjectKeyword:
+      case ts.SyntaxKind.ObjectLiteralExpression:
+      case ts.SyntaxKind.OmittedExpression:
+      case ts.SyntaxKind.ParenthesizedExpression:
+      case ts.SyntaxKind.PartiallyEmittedExpression:
+      case ts.SyntaxKind.PostfixUnaryExpression:
+      case ts.SyntaxKind.PrefixUnaryExpression:
+      case ts.SyntaxKind.PropertyAccessExpression:
+      case ts.SyntaxKind.RegularExpressionLiteral:
+      case ts.SyntaxKind.StringLiteral:
+      case ts.SyntaxKind.TaggedTemplateExpression:
+      case ts.SyntaxKind.TemplateExpression:
+      case ts.SyntaxKind.TemplateHead:
+      case ts.SyntaxKind.TemplateMiddle:
+      case ts.SyntaxKind.TemplateSpan:
+      case ts.SyntaxKind.TemplateTail:
+      case ts.SyntaxKind.TrueKeyword:
+      case ts.SyntaxKind.TypeAssertionExpression:
+      case ts.SyntaxKind.TypeLiteral:
+      case ts.SyntaxKind.TypeOfExpression:
+      case ts.SyntaxKind.VoidExpression:
+      case ts.SyntaxKind.YieldExpression:
+        return true;
+      default:
+        return ts.isTypeNode(node);
+    }
+}
diff --git a/javascript/extractor/lib/typescript/src/common.ts b/javascript/extractor/lib/typescript/src/common.ts
new file mode 100644
index 00000000000..bffe3f7e08a
--- /dev/null
+++ b/javascript/extractor/lib/typescript/src/common.ts
@@ -0,0 +1,28 @@
+import * as ts from "./typescript";
+import { TypeTable } from "./type_table";
+
+export class Project {
+  public program: ts.Program = null;
+
+  constructor(public tsConfig: string, public config: ts.ParsedCommandLine, public typeTable: TypeTable) {}
+
+  public unload(): void {
+    this.typeTable.releaseProgram();
+    this.program = null;
+  }
+
+  public load(): void {
+    this.program = ts.createProgram(this.config.fileNames, this.config.options);
+    this.typeTable.setProgram(this.program);
+  }
+
+  /**
+   * Discards the old compiler instance and starts a new one.
+   */
+  public reload(): void {
+    // Ensure all references to the old compiler instance
+    // are cleared before calling `createProgram`.
+    this.unload();
+    this.load();
+  }
+}
diff --git a/javascript/extractor/lib/typescript/src/main.ts b/javascript/extractor/lib/typescript/src/main.ts
new file mode 100644
index 00000000000..c9eaf632635
--- /dev/null
+++ b/javascript/extractor/lib/typescript/src/main.ts
@@ -0,0 +1,443 @@
+/**
+ * @fileoverview Wrapper for TypeScript parser, inspired by
+ *               [typescript-eslint-parser](https://github.com/eslint/typescript-eslint-parser).
+ *
+ * The wrapper can be invoked with a single argument, which is interpreted as a file name.
+ * The file is parsed and the AST dumped to stdout as described below.
+ *
+ * When run without arguments, the wrapper enters server mode, expecting JSON-encoded requests
+ * on `stdin`, one per line.
+ *
+ * Each request should have a `command` property, which should either be `parse` or `quit`.
+ *
+ * A `quit` request causes the wrapper to terminate.
+ *
+ * A `parse` request should have a `filename` property, which should be the path of a
+ * TypeScript file.
+ *
+ * In response to a `parse` request, the wrapper invokes the TypeScript parser to parse
+ * the given file, and dumps a JSON representation of the resulting AST to stdout,
+ * with the following adjustments:
+ *
+ *   - the `kind` and `operator` properties have symbolic string values instead of numeric
+ *     values (the latter change between versions of the TypeScript compiler, the former
+ *     don't);
+ *   - position information is given in terms of line/column pairs instead of offsets;
+ *   - declarations have a `declarationKind` property indicating whether they are `var`,
+ *     `let` or `const` declarations;
+ *   - `parent` pointers are omitted (since they cannot be serialised to JSON);
+ *   - tokens and comments are added to the AST root node in a `tokens` property.
+ */
+
+"use strict";
+
+import * as fs from "fs";
+import * as pathlib from "path";
+import * as readline from "readline";
+import * as ts from "./typescript";
+import * as ast_extractor from "./ast_extractor";
+
+import { Project } from "./common";
+import { TypeTable } from "./type_table";
+
+// Modify the TypeScript `System` object to ensure BOMs are being
+// stripped off.
+ts.sys.readFile = (path: string, encoding?: string) => {
+    return getSourceCode(path);
+};
+
+interface ParseCommand {
+    command: "parse";
+    filename: string;
+}
+interface OpenProjectCommand {
+    command: "open-project";
+    tsConfig: string;
+}
+interface CloseProjectCommand {
+    command: "close-project";
+    tsConfig: string;
+}
+interface GetTypeTableCommand {
+    command: "get-type-table";
+}
+interface ResetCommand {
+    command: "reset";
+}
+interface QuitCommand {
+    command: "quit";
+}
+type Command = ParseCommand | OpenProjectCommand | CloseProjectCommand
+    | GetTypeTableCommand | ResetCommand | QuitCommand;
+
+/** The state to be shared between commands. */
+class State {
+    public project: Project = null;
+    public typeTable = new TypeTable();
+}
+let state = new State();
+
+/**
+ * Debugging method for finding cycles in the TypeScript AST. Should not be used in production.
+ *
+ * If cycles are found, additional properties should be added to `isBlacklistedProperty`.
+ */
+// tslint:disable-next-line:no-unused-variable
+function checkCycle(root: any) {
+    let path: string[] = [];
+    function visit(obj: any): boolean {
+        if (obj == null || typeof obj !== "object") return false;
+        if (obj.$cycle_visiting) {
+            return true;
+        }
+        obj.$cycle_visiting = true;
+        for (let k in obj) {
+            if (!obj.hasOwnProperty(k)) continue;
+            if (isBlacklistedProperty(k)) continue;
+            if (k === "$cycle_visiting") continue;
+            let cycle = visit(obj[k]);
+            if (cycle) {
+                path.push(k);
+                return true;
+            }
+        }
+        obj.$cycle_visiting = undefined;
+        return false;
+    }
+    visit(root);
+    if (path.length > 0) {
+        path.reverse();
+        console.log(JSON.stringify({type: "error", message: "Cycle = " + path.join(".")}));
+    }
+}
+
+/**
+ * A property that should not be serialized as part of the AST, because they
+ * lead to cycles or are just not needed.
+ *
+ * Because of restrictions on `JSON.stringify`, these properties may also not
+ * be used as part of a command response.
+ */
+function isBlacklistedProperty(k: string) {
+    return k === "parent" || k === "pos" || k === "end"
+        || k === "symbol" || k === "localSymbol"
+        || k === "flowNode" || k === "returnFlowNode"
+        || k === "nextContainer" || k === "locals"
+        || k === "bindDiagnostics" || k === "bindSuggestionDiagnostics";
+}
+
+/**
+ * Converts (part of) an AST to a JSON string, ignoring parent pointers.
+ */
+function stringifyAST(obj: any) {
+    return JSON.stringify(obj, (k, v) => {
+        if (isBlacklistedProperty(k)) {
+            return undefined;
+        }
+        return v;
+    });
+}
+
+/**
+ * Reads the contents of a file as UTF8 and strips off a leading BOM.
+ *
+ * This must match how the source is read in the Java part of the extractor,
+ * as source offsets will not otherwise match.
+ */
+function getSourceCode(filename: string): string {
+    let code = fs.readFileSync(filename, "utf-8");
+
+    if (code.charCodeAt(0) === 0xfeff) {
+        code = code.substring(1);
+    }
+
+    return code;
+}
+
+function handleParseCommand(command: ParseCommand) {
+    let filename = String(command.filename);
+    let {ast, code} = getAstForFile(filename);
+
+    // Get the AST and augment it.
+    ast_extractor.augmentAst(ast, code, state.project);
+
+    console.log(stringifyAST(
+        { type: "ast", ast, nodeFlags: ts.NodeFlags, syntaxKinds: ts.SyntaxKind },
+    ));
+}
+
+/**
+ * Gets the AST and source code for the given file, either from
+ * an already-open project, or by parsing the file.
+ */
+function getAstForFile(filename: string): {ast: ts.SourceFile, code: string} {
+    if (state.project != null) {
+        let ast = state.project.program.getSourceFile(filename);
+        if (ast != null) {
+            return {ast, code: ast.text};
+        }
+    }
+    return parseSingleFile(filename);
+}
+
+function parseSingleFile(filename: string): {ast: ts.SourceFile, code: string} {
+    let code = getSourceCode(filename);
+
+    // create a compiler host that only allows access to `filename`
+    let compilerHost: ts.CompilerHost = {
+        fileExists() { return true; },
+        getCanonicalFileName() { return filename; },
+        getCurrentDirectory() { return ""; },
+        getDefaultLibFileName() { return "lib.d.ts"; },
+        getNewLine() { return "\n"; },
+        getSourceFile() {
+            return ts.createSourceFile(filename, code, ts.ScriptTarget.Latest, true);
+        },
+        readFile() { return null; },
+        useCaseSensitiveFileNames() { return true; },
+        writeFile() { return null; },
+        getDirectories() { return []; },
+    };
+
+    // parse `filename` with minimial checking
+    let compilerOptions: ts.CompilerOptions = {
+        experimentalDecorators: true,
+        experimentalAsyncFunctions: true,
+        jsx: ts.JsxEmit.Preserve,
+        noResolve: true,
+    };
+
+    let program = ts.createProgram([filename], compilerOptions, compilerHost);
+
+    let ast = program.getSourceFile(filename);
+
+    return {ast, code};
+}
+
+function handleOpenProjectCommand(command: OpenProjectCommand) {
+    let tsConfigFilename = String(command.tsConfig);
+    let tsConfigText = fs.readFileSync(tsConfigFilename, "utf8");
+    let tsConfig = ts.parseConfigFileTextToJson(tsConfigFilename, tsConfigText);
+    let basePath = pathlib.dirname(tsConfigFilename);
+
+    let parseConfigHost: ts.ParseConfigHost = {
+        useCaseSensitiveFileNames: true,
+        readDirectory: ts.sys.readDirectory,
+        fileExists: (path: string) => fs.existsSync(path),
+        readFile: getSourceCode,
+    };
+    let config = ts.parseJsonConfigFileContent(tsConfig, parseConfigHost, basePath);
+    let project = new Project(tsConfigFilename, config, state.typeTable);
+    project.load();
+
+    state.project = project;
+    let program = project.program;
+    let typeChecker = program.getTypeChecker();
+
+    // Associate external module names with the corresponding file symbols.
+    // We need these mappings to identify which module a given external type comes from.
+    // The TypeScript API lets us resolve a module name to a source file, but there is no
+    // inverse mapping, nor a way to enumerate all known module names. So we discover all
+    // modules on the type roots (usually "node_modules/@types" but this is configurable).
+    let typeRoots = ts.getEffectiveTypeRoots(config.options, {
+        directoryExists: (path) => fs.existsSync(path),
+        getCurrentDirectory: () => basePath,
+    });
+
+    /** Concatenates two imports paths. These always use `/` as path separator. */
+    function joinModulePath(prefix: string, suffix: string) {
+        if (prefix.length === 0) return suffix;
+        if (suffix.length === 0) return prefix;
+        return prefix + "/" + suffix;
+    }
+
+    /**
+     * Traverses a directory that is a type root or contained in a type root, and associates
+     * module names (i.e. import strings) with files in this directory.
+     *
+     * `importPrefix` denotes an import string that resolves to this directory,
+     * or an empty string if the file itself is a type root.
+     *
+     * The `filePath` is a system file path, possibly absolute, whereas `importPrefix`
+     * is generally short and system-independent, typically just the name of a module.
+     */
+    function traverseTypeRoot(filePath: string, importPrefix: string) {
+        for (let child of fs.readdirSync(filePath)) {
+            if (child[0] === ".") continue;
+            let childPath = pathlib.join(filePath, child);
+            if (fs.statSync(childPath).isDirectory()) {
+                traverseTypeRoot(childPath, joinModulePath(importPrefix, child));
+                continue;
+            }
+            let sourceFile = program.getSourceFile(childPath);
+            if (sourceFile == null) {
+                continue;
+            }
+            let symbol = typeChecker.getSymbolAtLocation(sourceFile);
+            if (symbol == null) continue; // Happens if the source file is not a module.
+
+            let canonicalSymbol = getEffectiveExportTarget(symbol); // Follow `export = X` declarations.
+            let symbolId = state.typeTable.getSymbolId(canonicalSymbol);
+
+            let importPath = (child === "index.d.ts")
+                ? importPrefix
+                : joinModulePath(importPrefix, pathlib.basename(child, ".d.ts"));
+
+            // Associate the module name with this symbol.
+            state.typeTable.addModuleMapping(symbolId, importPath);
+
+            // Associate global variable names with this module.
+            // For each `export as X` declaration, the global X refers to this module.
+            // Note: the `globalExports` map is stored on the original symbol, not the target of `export=`.
+            if (symbol.globalExports != null) {
+                symbol.globalExports.forEach((global: ts.Symbol) => {
+                  state.typeTable.addGlobalMapping(symbolId, global.name);
+                });
+            }
+        }
+    }
+    for (let typeRoot of typeRoots || []) {
+        traverseTypeRoot(typeRoot, "");
+    }
+
+    // Emit module name bindings for external module declarations, i.e: `declare module 'X' {..}`
+    // These can generally occur anywhere; they may or may not be on the type root path.
+    for (let sourceFile of program.getSourceFiles()) {
+        for (let stmt of sourceFile.statements) {
+            if (ts.isModuleDeclaration(stmt) && ts.isStringLiteral(stmt.name)) {
+                let symbol = (stmt as any).symbol;
+                if (symbol == null) continue;
+                symbol = getEffectiveExportTarget(symbol);
+                let symbolId = state.typeTable.getSymbolId(symbol);
+                let moduleName = stmt.name.text;
+                state.typeTable.addModuleMapping(symbolId, moduleName);
+            }
+        }
+    }
+
+    /**
+     * If `symbol` refers to a container with an `export = X` declaration, returns
+     * the target of `X`, otherwise returns `symbol`.
+     */
+    function getEffectiveExportTarget(symbol: ts.Symbol) {
+        if (symbol.exports != null && symbol.exports.has(ts.InternalSymbolName.ExportEquals)) {
+            let exportAlias = symbol.exports.get(ts.InternalSymbolName.ExportEquals);
+            return typeChecker.getAliasedSymbol(exportAlias);
+        }
+        return symbol;
+    }
+
+    console.log(JSON.stringify({
+        type: "project-opened",
+        files: program.getSourceFiles().map(sf => pathlib.resolve(sf.fileName)),
+    }));
+}
+
+function handleCloseProjectCommand(command: CloseProjectCommand) {
+    if (state.project == null) {
+        console.log(JSON.stringify({
+            type: "error",
+            message: "No project is open",
+        }));
+        return;
+    }
+    state.project.unload();
+    state.project = null;
+    console.log(JSON.stringify({type: "project-closed"}));
+}
+
+function handleGetTypeTableCommand(command: GetTypeTableCommand) {
+    console.log(JSON.stringify({
+        type: "type-table",
+        typeTable: state.typeTable.getTypeTableJson(),
+    }));
+}
+
+function handleResetCommand(command: ResetCommand) {
+    reset();
+    console.log(JSON.stringify({
+        type: "reset-done",
+    }));
+}
+
+function reset() {
+    state = new State();
+    state.typeTable.restrictedExpansion = getEnvironmentVariable("SEMMLE_TYPESCRIPT_NO_EXPANSION", Boolean, false);
+}
+
+function getEnvironmentVariable(name: string, parse: (x: string) => T, defaultValue: T) {
+    let value = process.env[name];
+    return value != null ? parse(value) : defaultValue;
+}
+
+function runReadLineInterface() {
+    reset();
+    let reloadMemoryThresholdMb = getEnvironmentVariable("SEMMLE_TYPESCRIPT_MEMORY_THRESHOLD", Number, 1000);
+    let isAboveReloadThreshold = false;
+    let rl = readline.createInterface({ input: process.stdin, output: process.stdout });
+    rl.on("line", (line: string) => {
+        let req: Command = JSON.parse(line);
+        switch (req.command) {
+        case "parse":
+            handleParseCommand(req);
+            // If memory usage has moved above the threshold, reboot the TypeScript compiler instance.
+            let bytesUsed = process.memoryUsage().heapUsed;
+            let megabytesUsed = bytesUsed / 1000000;
+            if (!isAboveReloadThreshold && megabytesUsed > reloadMemoryThresholdMb && state.project != null) {
+                console.warn('Restarting TypeScript compiler due to memory usage');
+                state.project.reload();
+                isAboveReloadThreshold = true;
+            } else if (isAboveReloadThreshold && megabytesUsed < reloadMemoryThresholdMb) {
+                isAboveReloadThreshold = false;
+            }
+            break;
+        case "open-project":
+            handleOpenProjectCommand(req);
+            break;
+        case "close-project":
+            handleCloseProjectCommand(req);
+            break;
+        case "get-type-table":
+            handleGetTypeTableCommand(req);
+            break;
+        case "reset":
+            handleResetCommand(req);
+            break;
+        case "quit":
+            rl.close();
+            break;
+        default:
+            throw new Error("Unknown command " + (req as any).command + ".");
+        }
+    });
+}
+
+// Parse command-line arguments.
+if (process.argv.length > 2) {
+    let argument = process.argv[2];
+    if (argument === "--version") {
+        console.log("parser-wrapper with TypeScript " + ts.version);
+    } else if (pathlib.basename(argument) === "tsconfig.json") {
+        handleOpenProjectCommand({
+            command: "open-project",
+            tsConfig: argument,
+        });
+        for (let sf of state.project.program.getSourceFiles()) {
+            if (pathlib.basename(sf.fileName) === "lib.d.ts") continue;
+            handleParseCommand({
+                command: "parse",
+                filename: sf.fileName,
+            });
+        }
+    } else if (pathlib.extname(argument) === ".ts" || pathlib.extname(argument) === ".tsx") {
+        handleParseCommand({
+            command: "parse",
+            filename: argument,
+        });
+    } else {
+        console.error("Unrecognized file or flag: " + argument);
+    }
+    process.exit(0);
+} else {
+    runReadLineInterface();
+}
diff --git a/javascript/extractor/lib/typescript/src/type_table.ts b/javascript/extractor/lib/typescript/src/type_table.ts
new file mode 100644
index 00000000000..ed0418e41ad
--- /dev/null
+++ b/javascript/extractor/lib/typescript/src/type_table.ts
@@ -0,0 +1,1178 @@
+import * as ts from "./typescript";
+
+interface AugmentedSymbol extends ts.Symbol {
+  parent?: AugmentedSymbol;
+
+  /** Cache of our own symbol ID. */
+  $id?: number;
+}
+
+interface AugmentedType extends ts.Type {
+  /**
+   * An internal property for predefined types, such as "true", "false", and "object".
+   */
+  intrinsicName?: string;
+}
+
+function isTypeReference(type: ts.Type): type is ts.TypeReference {
+  return (type.flags & ts.TypeFlags.Object) !== 0 &&
+      ((type as ts.ObjectType).objectFlags & ts.ObjectFlags.Reference) !== 0;
+}
+
+function isTypeVariable(type: ts.Type): type is ts.TypeVariable {
+  return (type.flags & ts.TypeFlags.TypeVariable) !== 0;
+}
+
+/**
+ * If `type` is a `this` type, returns the enclosing type.
+ * Otherwise returns `null`.
+ */
+function getEnclosingTypeOfThisType(type: ts.TypeVariable): ts.TypeReference {
+  // A 'this' type is an implicit type parameter to a class or interface.
+  // The type parameter itself doesn't have any good indicator of being a 'this' type,
+  // but we can get it like this:
+  // - the upper bound of the 'this' type parameter is always the enclosing type
+  // - the enclosing type knows its own 'this' type.
+  let bound = type.getConstraint();
+  if (bound == null) return null;
+  let target = (bound as ts.TypeReference).target; // undefined if not a TypeReference
+  if (target == null) return null;
+  return (target.thisType === type) ? target : null;
+}
+
+const typeDefinitionSymbols = ts.SymbolFlags.Class | ts.SymbolFlags.Interface |
+      ts.SymbolFlags.TypeAlias | ts.SymbolFlags.EnumMember | ts.SymbolFlags.Enum;
+
+/** Returns true if the given symbol refers to a type definition. */
+function isTypeDefinitionSymbol(symbol: ts.Symbol) {
+  return (symbol.flags & typeDefinitionSymbols) !== 0;
+}
+
+/** Gets the nearest enclosing block statement, function body, module body, or top-level. */
+function getEnclosingBlock(node: ts.Node) {
+  while (true) {
+    if (node == null) return null;
+    if (ts.isSourceFile(node) || ts.isFunctionLike(node) || ts.isBlock(node) || ts.isModuleBlock(node)) return node;
+    node = node.parent;
+  }
+}
+
+const typeofSymbols = ts.SymbolFlags.Class | ts.SymbolFlags.Namespace |
+  ts.SymbolFlags.Module | ts.SymbolFlags.Enum | ts.SymbolFlags.EnumMember;
+
+/**
+ * Returns true if the given symbol refers to a value that we consider
+ * a valid target for a `typeof` type.
+ */
+function isTypeofCandidateSymbol(symbol: ts.Symbol) {
+  return (symbol.flags & typeofSymbols) !== 0;
+}
+
+const signatureKinds = [ts.SignatureKind.Call, ts.SignatureKind.Construct];
+
+/**
+ * Encodes property lookup tuples `(baseType, name, property)` as three
+ * staggered arrays.
+ */
+interface PropertyLookupTable {
+  baseTypes: number[];
+  names: string[];
+  propertyTypes: number[];
+}
+
+/**
+ * Encodes type signature tuples `(baseType, kind, index, signature)` as four
+ * staggered arrays.
+ */
+interface SignatureTable {
+  baseTypes: number[];
+  kinds: ts.SignatureKind[];
+  indices: number[];
+  signatures: number[];
+}
+
+/**
+ * Enodes `(baseType, propertyType)` tuples as two staggered arrays.
+ *
+ * The index key type is not stored in the table - there are separate tables
+ * for number and string index signatures.
+ *
+ * For example, the `(Foo, T)` tuple would be extracted from this sample:
+ * ```
+ * interface Foo {
+ *   [x: string]: T;
+ * }
+ * ```
+ */
+interface IndexerTable {
+  baseTypes: number[];
+  propertyTypes: number[];
+}
+
+/**
+ * Encodes `(symbol, name)` pairs as two staggered arrays.
+ *
+ * In general, a table may associate multiple names with a given symbol.
+ */
+interface SymbolNameTable {
+  symbols: number[];
+  names: string[];
+}
+
+/**
+ * Encodes `(symbol, baseTypeSymbol)` pairs as two staggered arrays.
+ *
+ * Such a pair associates the canonical name of a type with the canonical name
+ * of one of its base types.
+ */
+interface BaseTypeTable {
+  symbols: number[];
+  baseTypeSymbols: number[];
+}
+
+/**
+ * Encodes `(symbol, selfType)` pairs as two staggered arrays.
+ *
+ * Such a pair associates the canonical name of a type with the self-type of
+ * that type definition. (e.g `Array` with `Array`).
+ */
+interface SelfTypeTable {
+  symbols: number[];
+  selfTypes: number[];
+}
+
+/**
+ * Denotes whether a type is currently in the worklist ("pending") and whether
+ * it was discovered in shallow or full context.
+ *
+ * Types can be discovered in one of two different contexts:
+ * - Full context:
+ *   Any type that is the type of an AST node, or is reachable through members of
+ *   such a type, without going through an expansive type.
+ * - Shallow context:
+ *   Any type that is reachable through the members of an expansive type,
+ *   without following any type references after that.
+ *
+ * For example:
+ * ```
+ * interface Expansive {
+ *   expand: Expansive<{x: T}>;
+ *   foo: { bar: T };
+ * }
+ * let instance: Expansive;
+ * ```
+ * The type `Expansive` is discovered in full context, but as it is expansive,
+ * its members are only discovered in shallow context.
+ *
+ * This means `Expansive<{x: number}>` becomes a stub type, a type that has an entity in
+ * the database, but appears to have no members.
+ *
+ * The type `{ bar: number }` is also discovered in shallow context, but because it is
+ * an "inline type" (not a reference) its members are extracted anyway (in shallow context),
+ * and will thus appear to have the `bar` property of type `number`.
+ */
+const enum TypeExtractionState {
+  /**
+   * The type is in the worklist and was discovered in shallow context.
+   */
+  PendingShallow,
+
+  /**
+   * The type has been extracted as a shallow type.
+   *
+   * It may later transition to `PendingFull` if it is found that full extraction is warranted.
+   */
+  DoneShallow,
+
+  /**
+   * The type is in the worklist and is pending full extraction.
+   */
+  PendingFull,
+
+  /**
+   * The type has been fully extracted.
+   */
+  DoneFull,
+}
+
+/**
+ * Generates canonical IDs and serialized representations of types.
+ */
+export class TypeTable {
+  /**
+   * Maps type strings to type IDs. The types must be inserted in order,
+   * so the `n`th type has ID `n`.
+   *
+   * A type string is a `;`-separated string consisting of:
+   * - a tag string such as `union` or `reference`,
+   * - optionally a symbol ID or kind-specific data (depends on the tag),
+   * - IDs of child types.
+   *
+   * Type strings serve a dual purpose:
+   * - Canonicalizing types. Two type objects with the same type string are considered identical.
+   * - Extracting types. The Java-part of the extractor parses type strings to extract data about the type.
+   */
+  private typeIds: Map = new Map();
+  private typeToStringValues: string[] = [];
+  private typeChecker: ts.TypeChecker = null;
+
+  /**
+   * Needed for TypeChecker.getTypeOfSymbolAtLocation when we don't care about the location.
+   * There is no way to get the type of a symbol without providing a location, though.
+   */
+  private arbitraryAstNode: ts.Node = null;
+
+  /**
+   * Maps symbol strings to to symbol IDs. The symbols must be inserted in order,
+   * so the `n`th symbol has ID `n`.
+   *
+   * A symbol string is a `;`-separated string consisting of:
+   * - a tag string, `root`, `member`, or `other`,
+   * - an empty string or a `file:pos` string to distinguish this from symbols with other lexical roots,
+   * - the unqualified name of the symbol,
+   * - for non-root symbols, the ID of the parent symbol.
+   *
+   * Symbol strings serve the same dual purpose as type strings (see `typeIds`).
+   */
+  private symbolIds: Map = new Map();
+
+  /**
+   * Maps file names to IDs unique for that file name.
+   *
+   * Used to generate short `file:pos` strings in symbol strings.
+   */
+  private fileIds: Map = new Map();
+
+  /**
+   * Maps signature strings to signature IDs. The signatures must be inserted in order,
+   * so the `n`th signature has ID `n`.
+   *
+   * A signature string is a `;`-separated string consisting of:
+   * - a `ts.SignatureKind` value (i.e. the value 0 or 1)
+   * - number of type parameters
+   * - number of required parameters
+   * - ID of the return type
+   * - interleaved names and bounds (type IDs) of type parameters
+   * - interleaved names and type IDs of parameters
+   */
+  private signatureIds: Map = new Map();
+
+  private signatureToStringValues: string[] = [];
+
+  private propertyLookups: PropertyLookupTable = {
+    baseTypes: [],
+    names: [],
+    propertyTypes: [],
+  };
+
+  private signatureMappings: SignatureTable = {
+    baseTypes: [],
+    kinds: [],
+    indices: [],
+    signatures: []
+  };
+
+  private numberIndexTypes: IndexerTable = {
+    baseTypes: [],
+    propertyTypes: [],
+  };
+
+  private stringIndexTypes: IndexerTable = {
+    baseTypes: [],
+    propertyTypes: [],
+  };
+
+  private buildTypeWorklist: [ts.Type, number][] = [];
+
+  private expansiveTypes: Map = new Map();
+
+  private moduleMappings: SymbolNameTable = {
+    symbols: [],
+    names: [],
+  };
+  private globalMappings: SymbolNameTable = {
+    symbols: [],
+    names: [],
+  };
+
+  private baseTypes: BaseTypeTable = {
+    symbols: [],
+    baseTypeSymbols: [],
+  };
+
+  private selfTypes: SelfTypeTable = {
+    symbols: [],
+    selfTypes: [],
+  };
+
+  /**
+   * When true, newly discovered types should be extracted as "shallow" types in order
+   * to prevent expansive types from unfolding into infinitely many types.
+   *
+   * @see TypeExtractionState
+   */
+  private isInShallowTypeContext = false;
+
+  /**
+   * Maps a type ID to the extraction state of that type.
+   */
+  private typeExtractionState: TypeExtractionState[] = [];
+
+  /**
+   * Number of types we are currently in the process of flattening to a type string.
+   */
+  private typeRecursionDepth = 0;
+
+  /**
+   * If set to true, all types are considered expansive.
+   */
+  public restrictedExpansion = false;
+
+  /**
+   * Called when a new compiler instance has started.
+   */
+  public setProgram(program: ts.Program) {
+    this.typeChecker = program.getTypeChecker();
+    this.arbitraryAstNode = program.getSourceFiles()[0];
+  }
+
+  /**
+   * Called when the compiler instance should be relased from memory.
+   *
+   * This can happen because we are done with a project, or because the
+   * compiler instance needs to be rebooted.
+   */
+  public releaseProgram() {
+    this.typeChecker = null;
+    this.arbitraryAstNode = null;
+  }
+
+  /**
+   * Gets the canonical ID for the given type, generating a fresh ID if necessary.
+   */
+  public buildType(type: ts.Type): number | null {
+    this.isInShallowTypeContext = false;
+    let id = this.getId(type);
+    this.iterateBuildTypeWorklist();
+    if (id == null) return null;
+    return id;
+  }
+
+  /**
+   * Gets the canonical ID for the given type, generating a fresh ID if necessary.
+   *
+   * Returns `null` if we do not support extraction of this type.
+   */
+  public getId(type: ts.Type): number | null {
+    if (this.typeRecursionDepth > 100) {
+      // Ignore infinitely nested anonymous types, such as `{x: {x: {x: ... }}}`.
+      // Such a type can't be written directly with TypeScript syntax (as it would need to be named),
+      // but it can occur rarely as a result of type inference.
+      return null;
+    }
+    // Replace very long string literal types with `string`.
+    if ((type.flags & ts.TypeFlags.StringLiteral) && ((type as ts.LiteralType).value as string).length > 30) {
+      type = this.typeChecker.getBaseTypeOfLiteralType(type);
+    }
+    ++this.typeRecursionDepth;
+    let content = this.getTypeString(type);
+    --this.typeRecursionDepth;
+    if (content == null) return null; // Type not supported.
+    let id = this.typeIds.get(content);
+    if (id == null) {
+      let stringValue = this.stringifyType(type);
+      if (stringValue == null) {
+        return null; // Type not supported.
+      }
+      id = this.typeIds.size;
+      this.typeIds.set(content, id);
+      this.typeToStringValues.push(stringValue);
+      this.buildTypeWorklist.push([type, id]);
+      this.typeExtractionState.push(
+        this.isInShallowTypeContext ? TypeExtractionState.PendingShallow : TypeExtractionState.PendingFull);
+      // If the type is the self-type for a named type (not a generic instantiation of it),
+      // emit the self-type binding for that type.
+      if (content.startsWith("reference;") && !(isTypeReference(type) && type.target !== type)) {
+        this.selfTypes.symbols.push(this.getSymbolId(type.aliasSymbol || type.symbol));
+        this.selfTypes.selfTypes.push(id);
+      }
+    } else if (!this.isInShallowTypeContext) {
+      // If the type was previously marked as shallow, promote it to full,
+      // and put it back in the worklist if necessary.
+      let state = this.typeExtractionState[id];
+      if (state === TypeExtractionState.PendingShallow) {
+        this.typeExtractionState[id] = TypeExtractionState.PendingFull;
+      } else if (state === TypeExtractionState.DoneShallow) {
+        this.typeExtractionState[id] = TypeExtractionState.PendingFull;
+        this.buildTypeWorklist.push([type, id]);
+      }
+    }
+    return id;
+  }
+
+  private stringifyType(type: ts.Type): string {
+    let toStringValue: string;
+    // Some types can't be stringified. Just discard the type if we can't stringify it.
+    try {
+      toStringValue = this.typeChecker.typeToString(type);
+    } catch (e) {
+      console.warn("Recovered from a compiler crash while stringifying a type. Discarding the type.");
+      console.warn(e.stack);
+      return null;
+    }
+    if (toStringValue.length > 50) {
+      return toStringValue.substring(0, 47) + "...";
+    } else {
+      return toStringValue;
+    }
+  }
+
+  private stringifySignature(signature: ts.Signature, kind: ts.SignatureKind) {
+    let toStringValue: string;
+    // Some types can't be stringified. Just discard the type if we can't stringify it.
+    try {
+      toStringValue =
+          this.typeChecker.signatureToString(signature, signature.declaration, ts.TypeFormatFlags.None, kind);
+    } catch (e) {
+      console.warn("Recovered from a compiler crash while stringifying a signature. Discarding the signature.");
+      console.warn(e.stack);
+      return null;
+    }
+    if (toStringValue.length > 70) {
+      return toStringValue.substring(0, 69) + "...";
+    } else {
+      return toStringValue;
+    }
+  }
+
+  /**
+   * Gets a string representing the kind and contents of the given type.
+   */
+  private getTypeString(type: AugmentedType): string | null {
+    // Reference to a type alias.
+    if (type.aliasSymbol != null) {
+      let tag = "reference;" + this.getSymbolId(type.aliasSymbol);
+      return type.aliasTypeArguments == null
+          ? tag
+          : this.makeTypeStringVector(tag, type.aliasTypeArguments);
+    }
+    let flags = type.flags;
+    let objectFlags = (flags & ts.TypeFlags.Object) && (type as ts.ObjectType).objectFlags;
+    let symbol: AugmentedSymbol = type.symbol;
+    // Type that contains a reference to something.
+    if (symbol != null) {
+      // Possibly parameterized type.
+      if (isTypeReference(type)) {
+        let tag = "reference;" + this.getSymbolId(symbol);
+        return this.makeTypeStringVectorFromTypeReferenceArguments(tag, type);
+      }
+      // Reference to a type variable.
+      if (flags & ts.TypeFlags.TypeVariable) {
+        let enclosingType = getEnclosingTypeOfThisType(type);
+        if (enclosingType != null) {
+          return "this;" + this.getId(enclosingType);
+        } else if (symbol.parent == null) {
+          // The type variable is bound on a call signature. Only extract it by name.
+          return "lextypevar;" + symbol.name;
+        } else {
+          return "typevar;" + this.getSymbolId(symbol);
+        }
+      }
+      // Recognize types of form `typeof X` where `X` is a class, namespace, module, or enum.
+      // The TypeScript API has no explicit tag for `typeof` types. They can be recognized
+      // as anonymous object types that have a symbol (i.e. a "named anonymous type").
+      if ((objectFlags & ts.ObjectFlags.Anonymous) && isTypeofCandidateSymbol(symbol)) {
+        return "typeof;" + this.getSymbolId(symbol);
+      }
+      // Reference to a named type.
+      // Must occur after the `typeof` case to avoid matching `typeof C` as the type `C`.
+      if (isTypeDefinitionSymbol(symbol)) {
+        return "reference;" + this.getSymbolId(type.symbol);
+      }
+    }
+    if (flags === ts.TypeFlags.Any) {
+      return "any";
+    }
+    if (flags === ts.TypeFlags.String) {
+      return "string";
+    }
+    if (flags === ts.TypeFlags.Number) {
+      return "number";
+    }
+    if (flags === ts.TypeFlags.Void) {
+      return "void";
+    }
+    if (flags === ts.TypeFlags.Never) {
+      return "never";
+    }
+    if (flags & ts.TypeFlags.Null) {
+      return "null";
+    }
+    if (flags & ts.TypeFlags.Undefined) {
+      return "undefined";
+    }
+    if (flags === ts.TypeFlags.ESSymbol) {
+      return "plainsymbol";
+    }
+    if (flags & ts.TypeFlags.Unknown) {
+      return "unknown";
+    }
+    if (flags === ts.TypeFlags.UniqueESSymbol) {
+      return "uniquesymbol;" + this.getSymbolId((type as ts.UniqueESSymbolType).symbol);
+    }
+    if (flags === ts.TypeFlags.NonPrimitive && type.intrinsicName === "object") {
+      return "objectkeyword";
+    }
+    // Note that TypeScript represents the `boolean` type as `true|false`.
+    if (flags === ts.TypeFlags.BooleanLiteral) {
+      // There is no public API to distinguish true and false.
+      // We rely on the internal property `intrinsicName`, which
+      // should be either "true" or "false" here.
+      return type.intrinsicName;
+    }
+    if (flags & ts.TypeFlags.NumberLiteral) {
+      return "numlit;" + (type as ts.LiteralType).value;
+    }
+    if (flags & ts.TypeFlags.StringLiteral) {
+      return "strlit;" + (type as ts.LiteralType).value;
+    }
+    if (flags & ts.TypeFlags.Union) {
+      let unionType = type as ts.UnionType;
+      if (unionType.types.length === 0) {
+        // We ignore malformed types like unions and intersections without any operands.
+        // These trigger an assertion failure in `typeToString` - presumably because they
+        // cannot be written using TypeScript syntax - so we ignore them entirely.
+        return null;
+      }
+      return this.makeTypeStringVector("union", unionType.types);
+    }
+    if (flags & ts.TypeFlags.Intersection) {
+      let intersectionType = type as ts.IntersectionType;
+      if (intersectionType.types.length === 0) {
+        return null; // Ignore malformed type.
+      }
+      return this.makeTypeStringVector("intersection", intersectionType.types);
+    }
+    if (isTypeReference(type) && (type.target.objectFlags & ts.ObjectFlags.Tuple)) {
+      // Encode the minimum length and presence of rest element in the first two parts of the type string.
+      // Handle the absence of `minLength` and `hasRestElement` to be compatible with pre-3.0 compiler versions.
+      let tupleReference = type as ts.TupleTypeReference;
+      let tupleType = tupleReference.target;
+      let minLength = tupleType.minLength != null
+          ? tupleType.minLength
+          : tupleReference.typeArguments.length;
+      let hasRestElement = tupleType.hasRestElement ? 't' : 'f';
+      let prefix = `tuple;${minLength};${hasRestElement}`;
+      return this.makeTypeStringVectorFromTypeReferenceArguments(prefix, type);
+    }
+    if (objectFlags & ts.ObjectFlags.Anonymous) {
+      return this.makeStructuralTypeVector("object;", type as ts.ObjectType);
+    }
+    return null;
+  }
+
+  /**
+   * Gets the canonical ID for the given symbol.
+   *
+   * Note that this may be called with symbols from different compiler instantiations,
+   * and it should return the same ID for symbols that logically refer to the same thing.
+   */
+  public getSymbolId(symbol: AugmentedSymbol): number {
+    if (symbol.flags & ts.SymbolFlags.Alias) {
+      symbol = this.typeChecker.getAliasedSymbol(symbol);
+    }
+    // We cache the symbol ID to avoid rebuilding long symbol strings.
+    let id = symbol.$id;
+    if (id != null) return id;
+    let content = this.getSymbolString(symbol);
+    id = this.symbolIds.get(content);
+    if (id != null) {
+      // The ID was determined in a previous compiler instantiation.
+      return symbol.$id = id;
+    }
+    if (id == null) {
+      id = this.symbolIds.size;
+      this.symbolIds.set(content, id);
+      symbol.$id = id;
+
+      // Associate names with global symbols.
+      if (this.isGlobalSymbol(symbol)) {
+        this.addGlobalMapping(id, symbol.name);
+      }
+
+      // Associate type names with their base type names.
+      this.extractSymbolBaseTypes(symbol, id);
+    }
+    return id;
+  }
+
+  /** Returns true if the given symbol represents a name in the global scope. */
+  private isGlobalSymbol(symbol: AugmentedSymbol): boolean {
+    let parent = symbol.parent;
+    if (parent != null) {
+      if (parent.escapedName === ts.InternalSymbolName.Global) {
+        return true; // Symbol declared in a global augmentation block.
+      }
+      return false; // Symbol is not a root.
+    }
+    if (symbol.declarations == null || symbol.declarations.length === 0) return false;
+    let declaration = symbol.declarations[0];
+    let block = getEnclosingBlock(declaration);
+    if (ts.isSourceFile(block) && !this.isModuleSourceFile(block)) {
+      return true; // Symbol is declared at the top-level of a non-module file.
+    }
+    return false;
+  }
+
+  /** Returns true if the given source file defines a module. */
+  private isModuleSourceFile(file: ts.SourceFile) {
+    // This is not directly exposed, but a reliable indicator seems to be whether
+    // the file has a symbol.
+    return this.typeChecker.getSymbolAtLocation(file) != null;
+  }
+
+  /**
+   * Gets a unique string for the given symbol.
+   */
+  private getSymbolString(symbol: AugmentedSymbol): string {
+    let parent = symbol.parent;
+    if (parent == null || parent.escapedName === ts.InternalSymbolName.Global) {
+      return "root;" + this.getSymbolDeclarationString(symbol) + ";" + symbol.name;
+    } else if (parent.exports != null && parent.exports.get(symbol.escapedName) === symbol) {
+      return "member;;" + symbol.name + ";" + this.getSymbolId(parent);
+    } else {
+      return "other;" + this.getSymbolDeclarationString(symbol) + ";" + symbol.name + ";" + this.getSymbolId(parent);
+    }
+  }
+
+  /**
+   * Gets a string that distinguishes the given symbol from symbols with different
+   * lexical roots, or an empty string if the symbol is not a lexical root.
+   */
+  private getSymbolDeclarationString(symbol: AugmentedSymbol): string {
+    if (symbol.declarations == null || symbol.declarations.length === 0) {
+      return "";
+    }
+    let decl = symbol.declarations[0];
+    if (ts.isSourceFile(decl)) return "";
+    return this.getFileId(decl.getSourceFile().fileName) + ":" + decl.pos;
+  }
+
+  /**
+   * Gets a number unique for the given filename.
+   */
+  private getFileId(fileName: string): number {
+    let id = this.fileIds.get(fileName);
+    if (id == null) {
+      id = this.fileIds.size;
+      this.fileIds.set(fileName, id);
+    }
+    return id;
+  }
+
+  /**
+   * Like `makeTypeStringVector` using the type arguments in the given type reference.
+   */
+  private makeTypeStringVectorFromTypeReferenceArguments(tag: string, type: ts.TypeReference) {
+    // There can be an extra type argument at the end, denoting an explicit 'this' type argument.
+    // We discard the extra argument in our model.
+    let target = type.target;
+    if (type.typeArguments == null) return tag;
+    if (target.typeParameters != null) {
+      return this.makeTypeStringVector(tag, type.typeArguments, target.typeParameters.length);
+    } else {
+      return this.makeTypeStringVector(tag, type.typeArguments);
+    }
+  }
+
+  /**
+   * Returns the given string with the IDs of the given types appended,
+   * each separated by `;`.
+   */
+  private makeTypeStringVector(tag: string, types: ReadonlyArray, length = types.length): string | null {
+    let hash = tag;
+    for (let i = 0; i < length; ++i) {
+      let id = this.getId(types[i]);
+      if (id == null) return null;
+      hash += ";" + id;
+    }
+    return hash;
+  }
+
+  /**
+   * Returns a type string consisting of all the members of the given type.
+   *
+   * This must only be called for anonymous object types, as the type string for this
+   * type could otherwise depend on itself recursively.
+   */
+  private makeStructuralTypeVector(tag: string, type: ts.ObjectType): string | null {
+    let hash = tag;
+    for (let property of type.getProperties()) {
+      let propertyType = this.typeChecker.getTypeOfSymbolAtLocation(property, this.arbitraryAstNode);
+      if (propertyType == null) return null;
+      let propertyTypeId = this.getId(propertyType);
+      if (propertyTypeId == null) return null;
+      hash += ";p" + this.getSymbolId(property) + ';' + propertyTypeId;
+    }
+    for (let kind of signatureKinds) {
+      for (let signature of this.typeChecker.getSignaturesOfType(type, kind)) {
+        let id = this.getSignatureId(kind, signature);
+        if (id == null) return null;
+        hash += ";c" + id;
+      }
+    }
+    let indexType = type.getStringIndexType();
+    if (indexType != null) {
+      let indexTypeId = this.getId(indexType);
+      if (indexTypeId == null) return null;
+      hash += ";s" + indexTypeId;
+    }
+    indexType = type.getNumberIndexType();
+    if (indexType != null) {
+      let indexTypeId = this.getId(indexType);
+      if (indexTypeId == null) return null;
+      hash += ";i" + indexTypeId;
+    }
+    return hash;
+  }
+
+  public addModuleMapping(symbolId: number, moduleName: string) {
+    this.moduleMappings.symbols.push(symbolId);
+    this.moduleMappings.names.push(moduleName);
+  }
+
+  public addGlobalMapping(symbolId: number, globalName: string) {
+    this.globalMappings.symbols.push(symbolId);
+    this.globalMappings.names.push(globalName);
+  }
+
+  public getTypeTableJson(): object {
+    return {
+      typeStrings: Array.from(this.typeIds.keys()),
+      typeToStringValues: this.typeToStringValues,
+      propertyLookups: this.propertyLookups,
+      symbolStrings: Array.from(this.symbolIds.keys()),
+      moduleMappings: this.moduleMappings,
+      globalMappings: this.globalMappings,
+      signatureStrings: Array.from(this.signatureIds.keys()),
+      signatureMappings: this.signatureMappings,
+      signatureToStringValues: this.signatureToStringValues,
+      numberIndexTypes: this.numberIndexTypes,
+      stringIndexTypes: this.stringIndexTypes,
+      baseTypes: this.baseTypes,
+      selfTypes: this.selfTypes,
+    };
+  }
+
+  /**
+   * Extracts the deep property and signature graph of recently discovered types.
+   *
+   * Types are added to the worklist when they are first assigned an ID,
+   * which happen transparently during property extraction and expansiveness checks.
+   */
+  private iterateBuildTypeWorklist() {
+    let worklist = this.buildTypeWorklist;
+    let typeExtractionState = this.typeExtractionState;
+    while (worklist.length > 0) {
+      let [type, id] = worklist.pop();
+      let isShallowContext = typeExtractionState[id] === TypeExtractionState.PendingShallow;
+      if (isShallowContext && isTypeReference(type)) {
+        typeExtractionState[id] = TypeExtractionState.DoneShallow;
+      } else {
+        typeExtractionState[id] = TypeExtractionState.DoneFull;
+        this.isInShallowTypeContext = isShallowContext || this.isExpansiveTypeReference(type);
+        this.extractProperties(type, id);
+        this.extractSignatures(type, id);
+        this.extractIndexers(type, id);
+      }
+    }
+    this.isInShallowTypeContext = false;
+  }
+
+  private extractProperties(type: ts.Type, id: number) {
+    for (let symbol of type.getProperties()) {
+      let propertyType = this.typeChecker.getTypeOfSymbolAtLocation(symbol, this.arbitraryAstNode);
+      if (propertyType == null) continue;
+      let propertyTypeId = this.getId(propertyType);
+      if (propertyTypeId == null) continue;
+      this.propertyLookups.baseTypes.push(id);
+      this.propertyLookups.names.push(symbol.name);
+      this.propertyLookups.propertyTypes.push(propertyTypeId);
+    }
+  }
+
+  /**
+   * Returns a unique ID for the given call/construct signature.
+   */
+  public getSignatureId(kind: ts.SignatureKind, signature: ts.Signature): number {
+    let content = this.getSignatureString(kind, signature);
+    if (content == null) {
+      return null;
+    }
+    let id = this.signatureIds.get(content);
+    if (id == null) {
+      let stringValue = this.stringifySignature(signature, kind);
+      if (stringValue == null) {
+        return null; // Not supported.
+      }
+      id = this.signatureIds.size;
+      this.signatureIds.set(content, id);
+      this.signatureToStringValues.push(stringValue);
+    }
+    return id;
+  }
+
+  /**
+   * Returns a unique string for the given call/constructor signature.
+   */
+  private getSignatureString(kind: ts.SignatureKind, signature: ts.Signature): string {
+    let parameters = signature.getParameters();
+    let numberOfTypeParameters = signature.typeParameters == null
+        ? 0
+        : signature.typeParameters.length;
+    // Count the number of required parameters.
+    let requiredParameters = parameters.length;
+    for (let i = 0; i < parameters.length; ++i) {
+      if (parameters[i].flags & ts.SymbolFlags.Optional) {
+        requiredParameters = i;
+        break;
+      }
+    }
+    let returnTypeId = this.getId(signature.getReturnType());
+    if (returnTypeId == null) {
+      return null;
+    }
+    let tag = `${kind};${numberOfTypeParameters};${requiredParameters};${returnTypeId}`;
+    for (let typeParameter of signature.typeParameters || []) {
+      tag += ";" + typeParameter.symbol.name;
+      let constraint = typeParameter.getConstraint();
+      let constraintId: number;
+      if (constraint == null || (constraintId = this.getId(constraint)) == null) {
+        tag += ";";
+      } else {
+        tag += ";" + constraintId;
+      }
+    }
+    for (let parameter of parameters) {
+      let parameterType = this.typeChecker.getTypeOfSymbolAtLocation(parameter, this.arbitraryAstNode);
+      if (parameterType == null) {
+        return null;
+      }
+      let parameterTypeId = this.getId(parameterType);
+      if (parameterTypeId == null) {
+        return null;
+      }
+      tag += ';' + parameter.name + ';' + parameterTypeId;
+    }
+    return tag;
+  }
+
+  private extractSignatures(type: ts.Type, id: number) {
+    this.extractSignatureList(type, id, ts.SignatureKind.Call, type.getCallSignatures());
+    this.extractSignatureList(type, id, ts.SignatureKind.Construct, type.getConstructSignatures());
+  }
+
+  private extractSignatureList(type: ts.Type, id: number, kind: ts.SignatureKind, list: ReadonlyArray) {
+    let index = -1;
+    for (let signature of list) {
+      ++index;
+      let signatureId = this.getSignatureId(kind, signature);
+      if (signatureId == null) continue;
+      this.signatureMappings.baseTypes.push(id);
+      this.signatureMappings.kinds.push(kind);
+      this.signatureMappings.indices.push(index);
+      this.signatureMappings.signatures.push(signatureId);
+    }
+  }
+
+  private extractIndexers(type: ts.Type, id: number) {
+    this.extractIndexer(id, type.getStringIndexType(), this.stringIndexTypes);
+    this.extractIndexer(id, type.getNumberIndexType(), this.numberIndexTypes);
+  }
+
+  private extractIndexer(baseType: number, indexType: ts.Type, table: IndexerTable) {
+    if (indexType == null) return;
+    let indexTypeId = this.getId(indexType);
+    if (indexTypeId == null) return;
+    table.baseTypes.push(baseType);
+    table.propertyTypes.push(indexTypeId);
+  }
+
+  /**
+   * If the given symbol represents a type name, extracts its base type names.
+   *
+   * Base types are only extracted at the level of names, since the type arguments
+   * of a base type are not generally made available by the TypeScript API.
+   *
+   * For example, given these interfaces:
+   * ```
+   * interface Base { x: T }
+   * interface Sub extends Base {}
+   * ```
+   * a true base type of `Sub` would be `Base`, but all we can
+   * get from the compiler is just `Base` with no indication of what `S` should be.
+   */
+  private extractSymbolBaseTypes(symbol: ts.Symbol, symbolId: number) {
+    for (let decl of symbol.declarations || []) {
+      if (ts.isClassLike(decl) || ts.isInterfaceDeclaration(decl)) {
+        for (let heritage of decl.heritageClauses || []) {
+          for (let typeExpr of heritage.types) {
+            let superType = this.typeChecker.getTypeFromTypeNode(typeExpr);
+            if (superType == null) continue;
+            let baseTypeSymbol = superType.symbol;
+            if (baseTypeSymbol == null) continue;
+            this.baseTypes.symbols.push(symbolId);
+            this.baseTypes.baseTypeSymbols.push(this.getSymbolId(baseTypeSymbol));
+          }
+        }
+      }
+    }
+  }
+
+  /**
+   * If `type` is a generic instantiation of a type, returns the
+   * generic self-type for that type, otherwise `null`.
+   *
+   * For example, `Promise` maps to `Promise`, where
+   * `T` is the type parameter declared on the `Promise` interface.
+   */
+  private getSelfType(type: ts.Type): ts.TypeReference {
+    if (isTypeReference(type) && type.typeArguments != null && type.typeArguments.length > 0) {
+      return type.target;
+    }
+    return null;
+  }
+
+  /**
+   * True if the given type is a reference to a type that is part of an expansive cycle, which
+   * we simply call "expansive types".
+   *
+   * Non-expansive types may still lead into an expansive type, as long as it's not part of
+   * the cycle.
+   *
+   * It is guaranteed that any sequence of property reads on a type will loop back to a previously
+   * seen type or a reach a type that is marked as expansive.  That is, this is sufficient to
+   * guarantee termination of recursive property traversal.
+   */
+  private isExpansiveTypeReference(type: ts.Type): boolean {
+    if (this.restrictedExpansion) {
+      return true;
+    }
+    let selfType = this.getSelfType(type);
+    if (selfType != null) {
+      this.checkExpansiveness(selfType);
+      let id = this.getId(selfType);
+      return this.expansiveTypes.get(id);
+    }
+    return false;
+  }
+
+  /**
+   * Checks if the given self-type is an expansive type. The result is stored in `expansiveTypes`.
+   *
+   * This follows a variant of Tarjan's SCC algorithm on a graph derived from the properties of types.
+   *
+   * The vertices of the graph are generic "self types", that is, types like `Foo` but not `Foo`.
+   * Types without type arguments are not vertices either, as such types can't be part of an expansive cycle.
+   *
+   * A property S.x with type T implies an edge from S to the self-type of every type referenced in T, whose
+   * type arguments contain a type parameter of S.  Moreover, if such a reference contains a deeply nested
+   * occurence of a type parameter, e.g. `Foo>` it is classified as an "expanding" edge
+   *
+   * For example, this interface:
+   *
+   *     interface Foo {
+   *       x: Bar>
+   *     }
+   *
+   * implies the following edges:
+   *
+   *   Foo ==> Bar    (expanding edge)
+   *   Foo --> Baz    (neutral edge)
+   *
+   * If an SCC contains an expanding edge, all its members are classified as expansive types.
+   *
+   * Suppose we extend the example with the interfaces:
+   *
+   *     interface Bar {
+   *       x: T;
+   *     }
+   *
+   *     interface Baz {
+   *       x: Foo
+   *     }
+   *
+   * The `Bar` interface implies no edges and the `Baz` interface implies the edge:
+   *
+   *   Baz ==> Foo    (expanding edge)
+   *
+   * This creates an expanding cycle, Foo --> Baz ==> Foo, so Foo and Baz are considered
+   * expansive, whereas Bar is not.
+   */
+  private checkExpansiveness(type: ts.TypeReference) {
+    // `index`, `lowlink` and `stack` are from Tarjan's algorithm.
+    // Note that the type ID cannot be used as `index` because the index must be
+    // increasing with the order in which nodes are discovered in the traversal.
+    let indexTable = new Map();
+    let lowlinkTable = new Map();
+    let indexCounter = 0;
+    let stack: number[] = []; // IDs of types on the stack.
+
+    // The expansion depth is the number of expanding edges that were used to
+    // reach the given node when it was first discovered.  It is used to detect
+    // if the SCC contains an expanding edge.
+    // We also abuse this to track whether a node is currently on the stack;
+    // as long as the value is non-null, the node is on the stack.
+    let expansionDepthTable = new Map();
+
+    let typeTable = this;
+
+    search(type, 0);
+
+    function search(type: ts.TypeReference, expansionDepth: number): number | null {
+      let id = typeTable.getId(type);
+      if (id == null) return null;
+
+      let index = indexTable.get(id);
+      if (index != null) { // Seen this node before?
+        let initialExpansionDepth = expansionDepthTable.get(id);
+        if (initialExpansionDepth == null) {
+          return null; // Not on the stack anymore.  Its SCC is already complete.
+        }
+        if (expansionDepth > initialExpansionDepth) {
+          // The type has reached itself using an expansive edge.
+          // Mark is at expansive.  The rest of the SCC will be marked when the SCC is complete.
+          typeTable.expansiveTypes.set(id, true);
+        }
+        return index;
+      }
+
+      let previousResult = typeTable.expansiveTypes.get(id);
+      if (previousResult != null) {
+        // This node was classified by a previous call to checkExpansiveness.
+        return null;
+      }
+
+      index = ++indexCounter;
+      indexTable.set(id, index);
+      lowlinkTable.set(id, index);
+      expansionDepthTable.set(id, expansionDepth);
+      let indexOnStack = stack.length;
+      stack.push(id);
+
+      for (let symbol of type.getProperties()) {
+        let propertyType: ts.Type = typeTable.typeChecker.getTypeOfSymbolAtLocation(symbol, typeTable.arbitraryAstNode);
+        if (propertyType == null) continue;
+        traverseType(propertyType);
+      }
+
+      if (lowlinkTable.get(id) === index) {
+        // We have finished an SCC.
+        // If any type was marked as expansive, propagate this to the entire SCC.
+        let isExpansive = false;
+        for (let i = indexOnStack; i < stack.length; ++i) {
+          let memberId = stack[i];
+          if (typeTable.expansiveTypes.get(memberId) === true) {
+            isExpansive = true;
+            break;
+          }
+        }
+        for (let i = indexOnStack; i < stack.length; ++i) {
+          let memberId = stack[i];
+          typeTable.expansiveTypes.set(memberId, isExpansive);
+          expansionDepthTable.set(memberId, null); // Mark as not on stack anymore.
+        }
+        stack.length = indexOnStack; // Pop all SCC nodes from stack.
+      }
+
+      return lowlinkTable.get(id);
+
+      /** Indicates if a type contains no type variables, is a type variable, or strictly contains type variables. */
+      const enum TypeVarDepth {
+        noTypeVar = 0,
+        isTypeVar = 1,
+        containsTypeVar = 2,
+      }
+
+      function traverseType(type: ts.Type): TypeVarDepth {
+        if (isTypeVariable(type)) return TypeVarDepth.isTypeVar;
+        let depth = TypeVarDepth.noTypeVar;
+        typeTable.forEachChildType(type, child => {
+          depth = Math.max(depth, traverseType(child));
+        });
+        if (depth === TypeVarDepth.noTypeVar) {
+          // No need to recurse into types that do not reference a type variable.
+          return TypeVarDepth.noTypeVar;
+        }
+        let selfType = typeTable.getSelfType(type);
+        if (selfType != null) {
+          // A non-expanding reference such as `Foo` should preserve expansion depth,
+          // whereas an expanding reference `Foo` should increment it.
+          visitEdge(selfType, (depth === TypeVarDepth.isTypeVar) ? 0 : 1);
+        }
+        return TypeVarDepth.containsTypeVar;
+      }
+
+      function visitEdge(successor: ts.TypeReference, weight: number) {
+        let result = search(successor, expansionDepth + weight);
+        if (result == null) return;
+        lowlinkTable.set(id, Math.min(lowlinkTable.get(id), result));
+      }
+    }
+  }
+
+  private forEachChildType(type: ts.Type, callback: (type: ts.Type) => void): void {
+    // Note: we deliberately do not traverse type aliases here, but the underlying type.
+    if (isTypeReference(type)) {
+      // Note that this case also handles tuple types, since a tuple type is represented as
+      // a reference to a synthetic generic interface.
+      if (type.typeArguments != null) {
+        type.typeArguments.forEach(callback);
+      }
+    } else if (type.flags & ts.TypeFlags.UnionOrIntersection) {
+      (type as ts.UnionOrIntersectionType).types.forEach(callback);
+    } else if (type.flags & ts.TypeFlags.Object) {
+      let objectType = type as ts.ObjectType;
+      let objectFlags = objectType.objectFlags;
+      if (objectFlags & ts.ObjectFlags.Anonymous) {
+        // Anonymous interface type like `{ x: number }`.
+        for (let symbol of type.getProperties()) {
+          let propertyType = this.typeChecker.getTypeOfSymbolAtLocation(symbol, this.arbitraryAstNode);
+          if (propertyType == null) continue;
+          callback(propertyType);
+        }
+        for (let signature of type.getCallSignatures()) {
+          this.forEachChildTypeOfSignature(signature, callback);
+        }
+        for (let signature of type.getConstructSignatures()) {
+          this.forEachChildTypeOfSignature(signature, callback);
+        }
+        let stringIndexType = type.getStringIndexType();
+        if (stringIndexType != null) {
+          callback(stringIndexType);
+        }
+        let numberIndexType = type.getNumberIndexType();
+        if (numberIndexType != null) {
+          callback(numberIndexType);
+        }
+      }
+    }
+  }
+
+  private forEachChildTypeOfSignature(signature: ts.Signature, callback: (type: ts.Type) => void): void {
+    callback(signature.getReturnType());
+    for (let parameter of signature.getParameters()) {
+      let paramType = this.typeChecker.getTypeOfSymbolAtLocation(parameter, this.arbitraryAstNode);
+      if (paramType == null) continue;
+      callback(paramType);
+    }
+    let typeParameters = signature.getTypeParameters();
+    if (typeParameters != null) {
+      for (let typeParameter of typeParameters) {
+        let constraint = typeParameter.getConstraint();
+        if (constraint == null) continue;
+        callback(constraint);
+      }
+    }
+  }
+}
diff --git a/javascript/extractor/lib/typescript/src/typescript.d.ts b/javascript/extractor/lib/typescript/src/typescript.d.ts
new file mode 100644
index 00000000000..769a318e724
--- /dev/null
+++ b/javascript/extractor/lib/typescript/src/typescript.d.ts
@@ -0,0 +1,2 @@
+import * as ts from "typescript";
+export = ts;
diff --git a/javascript/extractor/lib/typescript/src/typescript.js b/javascript/extractor/lib/typescript/src/typescript.js
new file mode 100644
index 00000000000..3c0bdc93b6a
--- /dev/null
+++ b/javascript/extractor/lib/typescript/src/typescript.js
@@ -0,0 +1,8 @@
+let overridePath = process.env['SEMMLE_TYPESCRIPT_HOME'];
+
+if (overridePath != null) {
+  module.exports = require(overridePath);
+} else {
+  // Unlike the above, this require() call will be rewritten by rollup.
+  module.exports = require('typescript');
+}
diff --git a/javascript/extractor/lib/typescript/tsconfig.json b/javascript/extractor/lib/typescript/tsconfig.json
new file mode 100644
index 00000000000..81038684f40
--- /dev/null
+++ b/javascript/extractor/lib/typescript/tsconfig.json
@@ -0,0 +1,16 @@
+{
+  "compilerOptions": {
+      "module": "commonjs",
+      "noImplicitAny": true,
+      "removeComments": true,
+      "sourceMap": false,
+      "baseUrl": "./",
+      "lib": ["es2016"],
+      "target": "es5",
+      "outDir": "build",
+      "allowJs": true,
+  },
+  "include": [
+    "src"
+  ]
+}
diff --git a/javascript/extractor/lib/typescript/tslint.json b/javascript/extractor/lib/typescript/tslint.json
new file mode 100644
index 00000000000..38e95b016bf
--- /dev/null
+++ b/javascript/extractor/lib/typescript/tslint.json
@@ -0,0 +1,64 @@
+{
+  "rules": {
+    "align": [true, "parameters", "arguments", "statements"],
+    "class-name": true,
+    "comment-format": [true, "check-space"],
+    "curly": false,
+    "eofline": true,
+    "forin": true,
+    "indent": [true, "spaces"],
+    "jsdoc-format": true,
+    "label-position": true,
+    "max-line-length": [true, 120],
+    "member-access": true,
+    "no-arg": true,
+    "no-construct": true,
+    "no-debugger": true,
+    "no-duplicate-variable": true,
+    "no-empty": true,
+    "no-eval": true,
+    "no-inferrable-types": true,
+    "no-internal-module": true,
+    "no-require-imports": false,
+    "no-shadowed-variable": false,
+    "no-string-literal": true,
+    "no-switch-case-fall-through": true,
+    "no-trailing-whitespace": true,
+    "no-unused-expression": true,
+    "no-unused-variable": [true,
+      "react"
+    ],
+    "no-use-before-declare": true,
+    "no-var-keyword": true,
+    "object-literal-sort-keys": false,
+    "one-line": [true,
+      "check-open-brace",
+      "check-catch",
+      "check-else",
+      "check-finally",
+      "check-whitespace"
+    ],
+    "quotemark": [false],
+    "radix": true,
+    "semicolon": [true, "always"],
+    "trailing-comma": [true, {
+      "singleline": "never"
+    }],
+    "triple-equals": [true, "allow-null-check"],
+    "typedef-whitespace": [true, {
+      "call-signature": "nospace",
+      "index-signature": "nospace",
+      "parameter": "nospace",
+      "property-declaration": "nospace",
+      "variable-declaration": "nospace"
+    }],
+    "variable-name": false,
+    "whitespace": [true,
+      "check-branch",
+      "check-decl",
+      "check-operator",
+      "check-separator",
+      "check-type"
+    ]
+  }
+}
diff --git a/javascript/extractor/lib/typescript/yarn.lock b/javascript/extractor/lib/typescript/yarn.lock
new file mode 100644
index 00000000000..53b3ab40ff3
--- /dev/null
+++ b/javascript/extractor/lib/typescript/yarn.lock
@@ -0,0 +1,518 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@types/estree@0.0.39":
+  version "0.0.39"
+  resolved "estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
+
+"@types/node@*":
+  version "10.12.0"
+  resolved "node-10.12.0.tgz#ea6dcbddbc5b584c83f06c60e82736d8fbb0c235"
+
+"@types/node@^9.3.0":
+  version "9.3.0"
+  resolved "@types-node-9.3.0.tgz#3a129cda7c4e5df2409702626892cb4b96546dd5"
+
+ansi-regex@^2.0.0:
+  version "2.1.1"
+  resolved "ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+
+ansi-styles@^2.2.1:
+  version "2.2.1"
+  resolved "ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+
+ansi-styles@^3.1.0:
+  version "3.2.0"
+  resolved "ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88"
+  dependencies:
+    color-convert "^1.9.0"
+
+argparse@^1.0.7:
+  version "1.0.9"
+  resolved "argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
+  dependencies:
+    sprintf-js "~1.0.2"
+
+arr-diff@^2.0.0:
+  version "2.0.0"
+  resolved "arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
+  dependencies:
+    arr-flatten "^1.0.1"
+
+arr-flatten@^1.0.1:
+  version "1.1.0"
+  resolved "arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+
+array-unique@^0.2.1:
+  version "0.2.1"
+  resolved "array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+
+babel-code-frame@^6.22.0:
+  version "6.26.0"
+  resolved "babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
+  dependencies:
+    chalk "^1.1.3"
+    esutils "^2.0.2"
+    js-tokens "^3.0.2"
+
+balanced-match@^1.0.0:
+  version "1.0.0"
+  resolved "balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+
+brace-expansion@^1.1.7:
+  version "1.1.8"
+  resolved "brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
+  dependencies:
+    balanced-match "^1.0.0"
+    concat-map "0.0.1"
+
+braces@^1.8.2:
+  version "1.8.5"
+  resolved "ces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
+  dependencies:
+    expand-range "^1.8.1"
+    preserve "^0.2.0"
+    repeat-element "^1.1.2"
+
+builtin-modules@^1.1.1:
+  version "1.1.1"
+  resolved "builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
+
+builtin-modules@^2.0.0:
+  version "2.0.0"
+  resolved "builtin-modules-2.0.0.tgz#60b7ef5ae6546bd7deefa74b08b62a43a232648e"
+
+chalk@^1.1.3:
+  version "1.1.3"
+  resolved "chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+  dependencies:
+    ansi-styles "^2.2.1"
+    escape-string-regexp "^1.0.2"
+    has-ansi "^2.0.0"
+    strip-ansi "^3.0.0"
+    supports-color "^2.0.0"
+
+chalk@^2.3.0:
+  version "2.3.0"
+  resolved "chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba"
+  dependencies:
+    ansi-styles "^3.1.0"
+    escape-string-regexp "^1.0.5"
+    supports-color "^4.0.0"
+
+color-convert@^1.9.0:
+  version "1.9.1"
+  resolved "color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
+  dependencies:
+    color-name "^1.1.1"
+
+color-name@^1.1.1:
+  version "1.1.3"
+  resolved "color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+
+commander@^2.12.1:
+  version "2.13.0"
+  resolved "commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c"
+
+concat-map@0.0.1:
+  version "0.0.1"
+  resolved "concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+
+diff@^3.2.0:
+  version "3.4.0"
+  resolved "diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c"
+
+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
+  version "1.0.5"
+  resolved "escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+
+esprima@^4.0.0:
+  version "4.0.0"
+  resolved "esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804"
+
+estree-walker@^0.5.2:
+  version "0.5.2"
+  resolved "estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39"
+
+esutils@^2.0.2:
+  version "2.0.2"
+  resolved "esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
+
+expand-brackets@^0.1.4:
+  version "0.1.5"
+  resolved "expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
+  dependencies:
+    is-posix-bracket "^0.1.0"
+
+expand-range@^1.8.1:
+  version "1.8.2"
+  resolved "expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
+  dependencies:
+    fill-range "^2.1.0"
+
+extglob@^0.3.1:
+  version "0.3.2"
+  resolved "glob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
+  dependencies:
+    is-extglob "^1.0.0"
+
+filename-regex@^2.0.0:
+  version "2.0.1"
+  resolved "filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
+
+fill-range@^2.1.0:
+  version "2.2.4"
+  resolved "fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565"
+  dependencies:
+    is-number "^2.1.0"
+    isobject "^2.0.0"
+    randomatic "^3.0.0"
+    repeat-element "^1.1.2"
+    repeat-string "^1.5.2"
+
+for-in@^1.0.1:
+  version "1.0.2"
+  resolved "for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+
+for-own@^0.1.4:
+  version "0.1.5"
+  resolved "for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
+  dependencies:
+    for-in "^1.0.1"
+
+fs.realpath@^1.0.0:
+  version "1.0.0"
+  resolved "fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+
+glob-base@^0.3.0:
+  version "0.3.0"
+  resolved "glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
+  dependencies:
+    glob-parent "^2.0.0"
+    is-glob "^2.0.0"
+
+glob-parent@^2.0.0:
+  version "2.0.0"
+  resolved "glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
+  dependencies:
+    is-glob "^2.0.0"
+
+glob@^7.1.1:
+  version "7.1.2"
+  resolved "glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
+  dependencies:
+    fs.realpath "^1.0.0"
+    inflight "^1.0.4"
+    inherits "2"
+    minimatch "^3.0.4"
+    once "^1.3.0"
+    path-is-absolute "^1.0.0"
+
+has-ansi@^2.0.0:
+  version "2.0.0"
+  resolved "has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+  dependencies:
+    ansi-regex "^2.0.0"
+
+has-flag@^2.0.0:
+  version "2.0.0"
+  resolved "has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
+
+inflight@^1.0.4:
+  version "1.0.6"
+  resolved "inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+  dependencies:
+    once "^1.3.0"
+    wrappy "1"
+
+inherits@2:
+  version "2.0.3"
+  resolved "inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+
+is-buffer@^1.1.5:
+  version "1.1.6"
+  resolved "is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+
+is-dotfile@^1.0.0:
+  version "1.0.3"
+  resolved "is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
+
+is-equal-shallow@^0.1.3:
+  version "0.1.3"
+  resolved "allow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
+  dependencies:
+    is-primitive "^2.0.0"
+
+is-extendable@^0.1.1:
+  version "0.1.1"
+  resolved "is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+
+is-extglob@^1.0.0:
+  version "1.0.0"
+  resolved "is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
+
+is-glob@^2.0.0, is-glob@^2.0.1:
+  version "2.0.1"
+  resolved "is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
+  dependencies:
+    is-extglob "^1.0.0"
+
+is-module@^1.0.0:
+  version "1.0.0"
+  resolved "is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
+
+is-number@^2.1.0:
+  version "2.1.0"
+  resolved "is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
+  dependencies:
+    kind-of "^3.0.2"
+
+is-number@^4.0.0:
+  version "4.0.0"
+  resolved "is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
+
+is-posix-bracket@^0.1.0:
+  version "0.1.1"
+  resolved "acket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
+
+is-primitive@^2.0.0:
+  version "2.0.0"
+  resolved "is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
+
+isarray@1.0.0:
+  version "1.0.0"
+  resolved "rray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+
+isobject@^2.0.0:
+  version "2.1.0"
+  resolved "bject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+  dependencies:
+    isarray "1.0.0"
+
+js-tokens@^3.0.2:
+  version "3.0.2"
+  resolved "js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
+
+js-yaml@^3.7.0:
+  version "3.10.0"
+  resolved "js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"
+  dependencies:
+    argparse "^1.0.7"
+    esprima "^4.0.0"
+
+kind-of@^3.0.2:
+  version "3.2.2"
+  resolved "kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
+  dependencies:
+    is-buffer "^1.1.5"
+
+kind-of@^6.0.0:
+  version "6.0.2"
+  resolved "kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
+
+magic-string@^0.25.1:
+  version "0.25.1"
+  resolved "magic-string-0.25.1.tgz#b1c248b399cd7485da0fe7385c2fc7011843266e"
+  dependencies:
+    sourcemap-codec "^1.4.1"
+
+math-random@^1.0.1:
+  version "1.0.1"
+  resolved "math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac"
+
+micromatch@^2.3.11:
+  version "2.3.11"
+  resolved "romatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
+  dependencies:
+    arr-diff "^2.0.0"
+    array-unique "^0.2.1"
+    braces "^1.8.2"
+    expand-brackets "^0.1.4"
+    extglob "^0.3.1"
+    filename-regex "^2.0.0"
+    is-extglob "^1.0.0"
+    is-glob "^2.0.1"
+    kind-of "^3.0.2"
+    normalize-path "^2.0.1"
+    object.omit "^2.0.0"
+    parse-glob "^3.0.4"
+    regex-cache "^0.4.2"
+
+minimatch@^3.0.4:
+  version "3.0.4"
+  resolved "minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+  dependencies:
+    brace-expansion "^1.1.7"
+
+normalize-path@^2.0.1:
+  version "2.1.1"
+  resolved "normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
+  dependencies:
+    remove-trailing-separator "^1.0.1"
+
+object.omit@^2.0.0:
+  version "2.0.1"
+  resolved "object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
+  dependencies:
+    for-own "^0.1.4"
+    is-extendable "^0.1.1"
+
+once@^1.3.0:
+  version "1.4.0"
+  resolved "once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+  dependencies:
+    wrappy "1"
+
+parse-glob@^3.0.4:
+  version "3.0.4"
+  resolved "parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
+  dependencies:
+    glob-base "^0.3.0"
+    is-dotfile "^1.0.0"
+    is-extglob "^1.0.0"
+    is-glob "^2.0.0"
+
+path-is-absolute@^1.0.0:
+  version "1.0.1"
+  resolved "path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+
+path-parse@^1.0.5:
+  version "1.0.5"
+  resolved "path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
+
+preserve@^0.2.0:
+  version "0.2.0"
+  resolved "serve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
+
+randomatic@^3.0.0:
+  version "3.1.1"
+  resolved "domatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed"
+  dependencies:
+    is-number "^4.0.0"
+    kind-of "^6.0.0"
+    math-random "^1.0.1"
+
+regex-cache@^0.4.2:
+  version "0.4.4"
+  resolved "regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
+  dependencies:
+    is-equal-shallow "^0.1.3"
+
+remove-trailing-separator@^1.0.1:
+  version "1.1.0"
+  resolved "parator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
+
+repeat-element@^1.1.2:
+  version "1.1.3"
+  resolved "repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
+
+repeat-string@^1.5.2:
+  version "1.6.1"
+  resolved "repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+
+resolve@^1.1.6, resolve@^1.8.1:
+  version "1.8.1"
+  resolved "olve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26"
+  dependencies:
+    path-parse "^1.0.5"
+
+resolve@^1.3.2:
+  version "1.5.0"
+  resolved "resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36"
+  dependencies:
+    path-parse "^1.0.5"
+
+rollup-plugin-commonjs@^9.2.0:
+  version "9.2.0"
+  resolved "mmonjs/-/rollup-plugin-commonjs-9.2.0.tgz#4604e25069e0c78a09e08faa95dc32dec27f7c89"
+  dependencies:
+    estree-walker "^0.5.2"
+    magic-string "^0.25.1"
+    resolve "^1.8.1"
+    rollup-pluginutils "^2.3.3"
+
+rollup-plugin-node-resolve@^3.4.0:
+  version "3.4.0"
+  resolved "de-resolve/-/rollup-plugin-node-resolve-3.4.0.tgz#908585eda12e393caac7498715a01e08606abc89"
+  dependencies:
+    builtin-modules "^2.0.0"
+    is-module "^1.0.0"
+    resolve "^1.1.6"
+
+rollup-pluginutils@^2.3.3:
+  version "2.3.3"
+  resolved "rollup-pluginutils-2.3.3.tgz#3aad9b1eb3e7fe8262820818840bf091e5ae6794"
+  dependencies:
+    estree-walker "^0.5.2"
+    micromatch "^2.3.11"
+
+rollup@^0.66.6:
+  version "0.66.6"
+  resolved "lup-0.66.6.tgz#ce7d6185beb7acea644ce220c25e71ae03275482"
+  dependencies:
+    "@types/estree" "0.0.39"
+    "@types/node" "*"
+
+semver@^5.3.0:
+  version "5.5.0"
+  resolved "semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
+
+sourcemap-codec@^1.4.1:
+  version "1.4.3"
+  resolved "sourcemap-codec-1.4.3.tgz#0ba615b73ec35112f63c2f2d9e7c3f87282b0e33"
+
+sprintf-js@~1.0.2:
+  version "1.0.3"
+  resolved "sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+
+strip-ansi@^3.0.0:
+  version "3.0.1"
+  resolved "strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+  dependencies:
+    ansi-regex "^2.0.0"
+
+supports-color@^2.0.0:
+  version "2.0.0"
+  resolved "supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+
+supports-color@^4.0.0:
+  version "4.5.0"
+  resolved "supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
+  dependencies:
+    has-flag "^2.0.0"
+
+tslib@^1.8.0, tslib@^1.8.1:
+  version "1.9.0"
+  resolved "tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8"
+
+tslint@^5.9.1:
+  version "5.9.1"
+  resolved "tslint-5.9.1.tgz#1255f87a3ff57eb0b0e1f0e610a8b4748046c9ae"
+  dependencies:
+    babel-code-frame "^6.22.0"
+    builtin-modules "^1.1.1"
+    chalk "^2.3.0"
+    commander "^2.12.1"
+    diff "^3.2.0"
+    glob "^7.1.1"
+    js-yaml "^3.7.0"
+    minimatch "^3.0.4"
+    resolve "^1.3.2"
+    semver "^5.3.0"
+    tslib "^1.8.0"
+    tsutils "^2.12.1"
+
+tsutils@^2.12.1:
+  version "2.19.1"
+  resolved "tsutils-2.19.1.tgz#76d7ebdea9d7a7bf4a05f50ead3701b0168708d7"
+  dependencies:
+    tslib "^1.8.1"
+
+typescript@3.0.1:
+  version "3.0.1"
+  resolved "typescript-3.0.1.tgz#43738f29585d3a87575520a4b93ab6026ef11fdb"
+
+wrappy@1:
+  version "1.0.2"
+  resolved "wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
diff --git a/javascript/extractor/lib/typescript/yarnrc-build b/javascript/extractor/lib/typescript/yarnrc-build
new file mode 100644
index 00000000000..e9b20e22b8a
--- /dev/null
+++ b/javascript/extractor/lib/typescript/yarnrc-build
@@ -0,0 +1 @@
+yarn-offline-mirror "./yarn-mirror"
diff --git a/javascript/extractor/parser-tests/babylon/README.md b/javascript/extractor/parser-tests/babylon/README.md
new file mode 100644
index 00000000000..05d086ba1c7
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/README.md
@@ -0,0 +1,3 @@
+These tests are semi-automatically generated from the [Babel](https://github.com/babel/babel) test suite.
+
+For each test, `actual.js` is the input and `expected.ast` is the expected output pattern.
diff --git a/javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-failure-computed/actual.js b/javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-failure-computed/actual.js
new file mode 100644
index 00000000000..f2b5d0c2d1c
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-failure-computed/actual.js
@@ -0,0 +1,4 @@
+class Foo {
+  p = x
+  [m] () {}
+}
diff --git a/javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-failure-computed/expected.error b/javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-failure-computed/expected.error
new file mode 100644
index 00000000000..191231ec9da
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-failure-computed/expected.error
@@ -0,0 +1 @@
+Unexpected token (3:9)
diff --git a/javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-failure-generator/actual.js b/javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-failure-generator/actual.js
new file mode 100644
index 00000000000..73d810b1278
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-failure-generator/actual.js
@@ -0,0 +1,4 @@
+class Foo {
+  p = x
+  *m () {}
+}
diff --git a/javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-failure-generator/expected.error b/javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-failure-generator/expected.error
new file mode 100644
index 00000000000..69b84c48b2c
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-failure-generator/expected.error
@@ -0,0 +1 @@
+Unexpected token (3:8)
diff --git a/javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-success/actual.js b/javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-success/actual.js
new file mode 100644
index 00000000000..2e57778bbb2
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-success/actual.js
@@ -0,0 +1,9 @@
+class Foo {
+  x
+  y
+}
+
+class Foo {
+  p
+  [m] () {}
+}
diff --git a/javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-success/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-success/expected.ast
new file mode 100644
index 00000000000..2040bb70db8
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/class-properties/asi-success/expected.ast
@@ -0,0 +1,275 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 10,
+      "column": 0,
+      "offset": 53
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "ClassDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 4,
+          "column": 1,
+          "offset": 21
+        }
+      },
+      "id": {
+        "type": "Identifier",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 6,
+            "offset": 6
+          },
+          "end": {
+            "line": 1,
+            "column": 9,
+            "offset": 9
+          }
+        },
+        "name": "Foo"
+      },
+      "superClass": null,
+      "body": {
+        "type": "ClassBody",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 10,
+            "offset": 10
+          },
+          "end": {
+            "line": 4,
+            "column": 1,
+            "offset": 21
+          }
+        },
+        "body": [
+          {
+            "type": "FieldDefinition",
+            "loc": {
+              "start": {
+                "line": 2,
+                "column": 2,
+                "offset": 14
+              },
+              "end": {
+                "line": 2,
+                "column": 3,
+                "offset": 15
+              }
+            },
+            "computed": false,
+            "key": {
+              "type": "Identifier",
+              "loc": {
+                "start": {
+                  "line": 2,
+                  "column": 2,
+                  "offset": 14
+                },
+                "end": {
+                  "line": 2,
+                  "column": 3,
+                  "offset": 15
+                }
+              },
+              "name": "x"
+            },
+            "static": false,
+            "value": null
+          },
+          {
+            "type": "FieldDefinition",
+            "loc": {
+              "start": {
+                "line": 3,
+                "column": 2,
+                "offset": 18
+              },
+              "end": {
+                "line": 3,
+                "column": 3,
+                "offset": 19
+              }
+            },
+            "computed": false,
+            "key": {
+              "type": "Identifier",
+              "loc": {
+                "start": {
+                  "line": 3,
+                  "column": 2,
+                  "offset": 18
+                },
+                "end": {
+                  "line": 3,
+                  "column": 3,
+                  "offset": 19
+                }
+              },
+              "name": "y"
+            },
+            "static": false,
+            "value": null
+          }
+        ]
+      }
+    },
+    {
+      "type": "ClassDeclaration",
+      "loc": {
+        "start": {
+          "line": 6,
+          "column": 0,
+          "offset": 23
+        },
+        "end": {
+          "line": 9,
+          "column": 1,
+          "offset": 52
+        }
+      },
+      "id": {
+        "type": "Identifier",
+        "loc": {
+          "start": {
+            "line": 6,
+            "column": 6,
+            "offset": 29
+          },
+          "end": {
+            "line": 6,
+            "column": 9,
+            "offset": 32
+          }
+        },
+        "name": "Foo"
+      },
+      "superClass": null,
+      "body": {
+        "type": "ClassBody",
+        "loc": {
+          "start": {
+            "line": 6,
+            "column": 10,
+            "offset": 33
+          },
+          "end": {
+            "line": 9,
+            "column": 1,
+            "offset": 52
+          }
+        },
+        "body": [
+          {
+            "type": "FieldDefinition",
+            "loc": {
+              "start": {
+                "line": 7,
+                "column": 2,
+                "offset": 37
+              },
+              "end": {
+                "line": 7,
+                "column": 3,
+                "offset": 38
+              }
+            },
+            "computed": false,
+            "key": {
+              "type": "Identifier",
+              "loc": {
+                "start": {
+                  "line": 7,
+                  "column": 2,
+                  "offset": 37
+                },
+                "end": {
+                  "line": 7,
+                  "column": 3,
+                  "offset": 38
+                }
+              },
+              "name": "p"
+            },
+            "static": false,
+            "value": null
+          },
+          {
+            "type": "MethodDefinition",
+            "loc": {
+              "start": {
+                "line": 8,
+                "column": 2,
+                "offset": 41
+              },
+              "end": {
+                "line": 8,
+                "column": 11,
+                "offset": 50
+              }
+            },
+            "computed": true,
+            "key": {
+              "type": "Identifier",
+              "loc": {
+                "start": {
+                  "line": 8,
+                  "column": 3,
+                  "offset": 42
+                },
+                "end": {
+                  "line": 8,
+                  "column": 4,
+                  "offset": 43
+                }
+              },
+              "name": "m"
+            },
+            "static": false,
+            "kind": "method",
+            "value": {
+              "type": "FunctionExpression",
+              "id": null,
+              "generator": false,
+              "expression": false,
+              "params": [],
+              "body": {
+                "type": "BlockStatement",
+                "loc": {
+                  "start": {
+                    "line": 8,
+                    "column": 9,
+                    "offset": 48
+                  },
+                  "end": {
+                    "line": 8,
+                    "column": 11,
+                    "offset": 50
+                  }
+                },
+                "body": []
+              }
+            }
+          }
+        ]
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/function-sent/inside-function/actual.js b/javascript/extractor/parser-tests/babylon/experimental/function-sent/inside-function/actual.js
new file mode 100644
index 00000000000..203379b698e
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/function-sent/inside-function/actual.js
@@ -0,0 +1,3 @@
+function foo() {
+  return function.sent;
+}
diff --git a/javascript/extractor/parser-tests/babylon/experimental/function-sent/inside-function/expected.error b/javascript/extractor/parser-tests/babylon/experimental/function-sent/inside-function/expected.error
new file mode 100644
index 00000000000..752c1812243
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/function-sent/inside-function/expected.error
@@ -0,0 +1 @@
+Unexpected token (2:17)
diff --git a/javascript/extractor/parser-tests/babylon/experimental/function-sent/inside-generator/actual.js b/javascript/extractor/parser-tests/babylon/experimental/function-sent/inside-generator/actual.js
new file mode 100644
index 00000000000..28760b261bd
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/function-sent/inside-generator/actual.js
@@ -0,0 +1,3 @@
+function* foo() {
+  return function.sent;
+}
diff --git a/javascript/extractor/parser-tests/babylon/experimental/function-sent/inside-generator/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/function-sent/inside-generator/expected.ast
new file mode 100644
index 00000000000..00b505b9142
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/function-sent/inside-generator/expected.ast
@@ -0,0 +1,131 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 4,
+      "column": 0,
+      "offset": 44
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "FunctionDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 3,
+          "column": 1,
+          "offset": 43
+        }
+      },
+      "id": {
+        "type": "Identifier",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 10,
+            "offset": 10
+          },
+          "end": {
+            "line": 1,
+            "column": 13,
+            "offset": 13
+          }
+        },
+        "name": "foo"
+      },
+      "generator": true,
+      "expression": false,
+      "params": [],
+      "body": {
+        "type": "BlockStatement",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 16,
+            "offset": 16
+          },
+          "end": {
+            "line": 3,
+            "column": 1,
+            "offset": 43
+          }
+        },
+        "body": [
+          {
+            "type": "ReturnStatement",
+            "loc": {
+              "start": {
+                "line": 2,
+                "column": 2,
+                "offset": 20
+              },
+              "end": {
+                "line": 2,
+                "column": 23,
+                "offset": 41
+              }
+            },
+            "argument": {
+              "type": "MetaProperty",
+              "loc": {
+                "start": {
+                  "line": 2,
+                  "column": 9,
+                  "offset": 27
+                },
+                "end": {
+                  "line": 2,
+                  "column": 22,
+                  "offset": 40
+                }
+              },
+              "meta": {
+                "type": "Identifier",
+                "loc": {
+                  "start": {
+                    "line": 2,
+                    "column": 9,
+                    "offset": 27
+                  },
+                  "end": {
+                    "line": 2,
+                    "column": 17,
+                    "offset": 35
+                  }
+                },
+                "name": "function"
+              },
+              "property": {
+                "type": "Identifier",
+                "loc": {
+                  "start": {
+                    "line": 2,
+                    "column": 18,
+                    "offset": 36
+                  },
+                  "end": {
+                    "line": 2,
+                    "column": 22,
+                    "offset": 40
+                  }
+                },
+                "name": "sent"
+              }
+            }
+          }
+        ]
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/function-sent/invalid-property/actual.js b/javascript/extractor/parser-tests/babylon/experimental/function-sent/invalid-property/actual.js
new file mode 100644
index 00000000000..871b7794bbe
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/function-sent/invalid-property/actual.js
@@ -0,0 +1,3 @@
+function* foo() {
+  return function.next;
+}
diff --git a/javascript/extractor/parser-tests/babylon/experimental/function-sent/invalid-property/expected.error b/javascript/extractor/parser-tests/babylon/experimental/function-sent/invalid-property/expected.error
new file mode 100644
index 00000000000..3d5c42e1d50
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/function-sent/invalid-property/expected.error
@@ -0,0 +1 @@
+The only valid meta property for function is function.sent (2:18)
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/10/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/10/actual.js
new file mode 100644
index 00000000000..8565fdd2077
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/10/actual.js
@@ -0,0 +1 @@
+let {x, ...y} = z
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/10/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/10/expected.ast
new file mode 100644
index 00000000000..4a83d54a02c
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/10/expected.ast
@@ -0,0 +1,169 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 17,
+      "offset": 17
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "VariableDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 1,
+          "column": 17,
+          "offset": 17
+        }
+      },
+      "declarations": [
+        {
+          "type": "VariableDeclarator",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 4,
+              "offset": 4
+            },
+            "end": {
+              "line": 1,
+              "column": 17,
+              "offset": 17
+            }
+          },
+          "id": {
+            "type": "ObjectPattern",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 4,
+                "offset": 4
+              },
+              "end": {
+                "line": 1,
+                "column": 13,
+                "offset": 13
+              }
+            },
+            "properties": [
+              {
+                "type": "Property",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 5,
+                    "offset": 5
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 6,
+                    "offset": 6
+                  }
+                },
+                "method": false,
+                "shorthand": true,
+                "computed": false,
+                "key": {
+                  "type": "Identifier",
+                  "loc": {
+                    "start": {
+                      "line": 1,
+                      "column": 5,
+                      "offset": 5
+                    },
+                    "end": {
+                      "line": 1,
+                      "column": 6,
+                      "offset": 6
+                    }
+                  },
+                  "name": "x"
+                },
+                "value": {
+                  "type": "Identifier",
+                  "loc": {
+                    "start": {
+                      "line": 1,
+                      "column": 5,
+                      "offset": 5
+                    },
+                    "end": {
+                      "line": 1,
+                      "column": 6,
+                      "offset": 6
+                    }
+                  },
+                  "name": "x"
+                }
+              },
+              {
+                "type": "Property",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 8,
+                    "offset": 8
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 12,
+                    "offset": 12
+                  }
+                },
+                "key": null,
+                "value": {
+                  "type": "RestElement",
+                  "argument": {
+                    "type": "Identifier",
+                    "loc": {
+                      "start": {
+                        "line": 1,
+                        "column": 11,
+                        "offset": 11
+                      },
+                      "end": {
+                        "line": 1,
+                        "column": 12,
+                        "offset": 12
+                      }
+                    },
+                    "name": "y"
+                  }
+                }
+              }
+            ]
+          },
+          "init": {
+            "type": "Identifier",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 16,
+                "offset": 16
+              },
+              "end": {
+                "line": 1,
+                "column": 17,
+                "offset": 17
+              }
+            },
+            "name": "z"
+          }
+        }
+      ],
+      "kind": "let"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/11/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/11/actual.js
new file mode 100644
index 00000000000..7ced2f10721
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/11/actual.js
@@ -0,0 +1 @@
+(function({x, ...y}) { })
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/11/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/11/expected.ast
new file mode 100644
index 00000000000..fef52f80a08
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/11/expected.ast
@@ -0,0 +1,171 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 25,
+      "offset": 25
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "ExpressionStatement",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 1,
+          "column": 25,
+          "offset": 25
+        }
+      },
+      "expression": {
+        "type": "FunctionExpression",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 1,
+            "offset": 1
+          },
+          "end": {
+            "line": 1,
+            "column": 24,
+            "offset": 24
+          }
+        },
+        "id": null,
+        "generator": false,
+        "expression": false,
+        "params": [
+          {
+            "type": "ObjectPattern",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 10,
+                "offset": 10
+              },
+              "end": {
+                "line": 1,
+                "column": 19,
+                "offset": 19
+              }
+            },
+            "properties": [
+              {
+                "type": "Property",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 11,
+                    "offset": 11
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 12,
+                    "offset": 12
+                  }
+                },
+                "method": false,
+                "shorthand": true,
+                "computed": false,
+                "key": {
+                  "type": "Identifier",
+                  "loc": {
+                    "start": {
+                      "line": 1,
+                      "column": 11,
+                      "offset": 11
+                    },
+                    "end": {
+                      "line": 1,
+                      "column": 12,
+                      "offset": 12
+                    }
+                  },
+                  "name": "x"
+                },
+                "value": {
+                  "type": "Identifier",
+                  "loc": {
+                    "start": {
+                      "line": 1,
+                      "column": 11,
+                      "offset": 11
+                    },
+                    "end": {
+                      "line": 1,
+                      "column": 12,
+                      "offset": 12
+                    }
+                  },
+                  "name": "x"
+                }
+              },
+              {
+                "type": "Property",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 14,
+                    "offset": 14
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 18,
+                    "offset": 18
+                  }
+                },
+                "key": null,
+                "value": {
+                  "type": "RestElement",
+                  "argument": {
+                    "type": "Identifier",
+                    "loc": {
+                      "start": {
+                        "line": 1,
+                        "column": 17,
+                        "offset": 17
+                      },
+                      "end": {
+                        "line": 1,
+                        "column": 18,
+                        "offset": 18
+                      }
+                    },
+                    "name": "y"
+                  }
+                }
+              }
+            ]
+          }
+        ],
+        "body": {
+          "type": "BlockStatement",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 21,
+              "offset": 21
+            },
+            "end": {
+              "line": 1,
+              "column": 24,
+              "offset": 24
+            }
+          },
+          "body": []
+        }
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/12/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/12/actual.js
new file mode 100644
index 00000000000..000fbd58f4d
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/12/actual.js
@@ -0,0 +1 @@
+let z = {...x}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/12/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/12/expected.ast
new file mode 100644
index 00000000000..e7334f30b09
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/12/expected.ast
@@ -0,0 +1,119 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 14,
+      "offset": 14
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "VariableDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 1,
+          "column": 14,
+          "offset": 14
+        }
+      },
+      "declarations": [
+        {
+          "type": "VariableDeclarator",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 4,
+              "offset": 4
+            },
+            "end": {
+              "line": 1,
+              "column": 14,
+              "offset": 14
+            }
+          },
+          "id": {
+            "type": "Identifier",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 4,
+                "offset": 4
+              },
+              "end": {
+                "line": 1,
+                "column": 5,
+                "offset": 5
+              }
+            },
+            "name": "z"
+          },
+          "init": {
+            "type": "ObjectExpression",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 8,
+                "offset": 8
+              },
+              "end": {
+                "line": 1,
+                "column": 14,
+                "offset": 14
+              }
+            },
+            "properties": [
+              {
+                "type": "Property",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 9,
+                    "offset": 9
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 13,
+                    "offset": 13
+                  }
+                },
+                "key": null,
+                "value": {
+                  "type": "SpreadElement",
+                  "argument": {
+                    "type": "Identifier",
+                    "loc": {
+                      "start": {
+                        "line": 1,
+                        "column": 12,
+                        "offset": 12
+                      },
+                      "end": {
+                        "line": 1,
+                        "column": 13,
+                        "offset": 13
+                      }
+                    },
+                    "name": "x"
+                  }
+                }
+              }
+            ]
+          }
+        }
+      ],
+      "kind": "let"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/13/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/13/actual.js
new file mode 100644
index 00000000000..72dfb8692ad
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/13/actual.js
@@ -0,0 +1 @@
+z = {x, ...y}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/13/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/13/expected.ast
new file mode 100644
index 00000000000..15fc6aa2cdf
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/13/expected.ast
@@ -0,0 +1,167 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 13,
+      "offset": 13
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "ExpressionStatement",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 1,
+          "column": 13,
+          "offset": 13
+        }
+      },
+      "expression": {
+        "type": "AssignmentExpression",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 0,
+            "offset": 0
+          },
+          "end": {
+            "line": 1,
+            "column": 13,
+            "offset": 13
+          }
+        },
+        "operator": "=",
+        "left": {
+          "type": "Identifier",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 0,
+              "offset": 0
+            },
+            "end": {
+              "line": 1,
+              "column": 1,
+              "offset": 1
+            }
+          },
+          "name": "z"
+        },
+        "right": {
+          "type": "ObjectExpression",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 4,
+              "offset": 4
+            },
+            "end": {
+              "line": 1,
+              "column": 13,
+              "offset": 13
+            }
+          },
+          "properties": [
+            {
+              "type": "Property",
+              "loc": {
+                "start": {
+                  "line": 1,
+                  "column": 5,
+                  "offset": 5
+                },
+                "end": {
+                  "line": 1,
+                  "column": 6,
+                  "offset": 6
+                }
+              },
+              "method": false,
+              "shorthand": true,
+              "computed": false,
+              "key": {
+                "type": "Identifier",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 5,
+                    "offset": 5
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 6,
+                    "offset": 6
+                  }
+                },
+                "name": "x"
+              },
+              "value": {
+                "type": "Identifier",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 5,
+                    "offset": 5
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 6,
+                    "offset": 6
+                  }
+                },
+                "name": "x"
+              }
+            },
+            {
+              "type": "Property",
+              "loc": {
+                "start": {
+                  "line": 1,
+                  "column": 8,
+                  "offset": 8
+                },
+                "end": {
+                  "line": 1,
+                  "column": 12,
+                  "offset": 12
+                }
+              },
+              "key": null,
+              "value": {
+                "type": "SpreadElement",
+                "argument": {
+                  "type": "Identifier",
+                  "loc": {
+                    "start": {
+                      "line": 1,
+                      "column": 11,
+                      "offset": 11
+                    },
+                    "end": {
+                      "line": 1,
+                      "column": 12,
+                      "offset": 12
+                    }
+                  },
+                  "name": "y"
+                }
+              }
+            }
+          ]
+        }
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/14/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/14/actual.js
new file mode 100644
index 00000000000..3a17541c454
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/14/actual.js
@@ -0,0 +1 @@
+({x, ...y, a, ...b, c})
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/33/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/33/actual.js
new file mode 100644
index 00000000000..c6d5f10ef69
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/33/actual.js
@@ -0,0 +1 @@
+@foo class Foo {}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/33/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/33/expected.ast
new file mode 100644
index 00000000000..6f9d36941ea
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/33/expected.ast
@@ -0,0 +1,99 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 17,
+      "offset": 17
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "ClassDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 5,
+          "offset": 5
+        },
+        "end": {
+          "line": 1,
+          "column": 17,
+          "offset": 17
+        }
+      },
+      "decorators": [
+        {
+          "type": "Decorator",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 0,
+              "offset": 0
+            },
+            "end": {
+              "line": 1,
+              "column": 4,
+              "offset": 4
+            }
+          },
+          "expression": {
+            "type": "Identifier",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 1,
+                "offset": 1
+              },
+              "end": {
+                "line": 1,
+                "column": 4,
+                "offset": 4
+              }
+            },
+            "name": "foo"
+          }
+        }
+      ],
+      "id": {
+        "type": "Identifier",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 11,
+            "offset": 11
+          },
+          "end": {
+            "line": 1,
+            "column": 14,
+            "offset": 14
+          }
+        },
+        "name": "Foo"
+      },
+      "superClass": null,
+      "body": {
+        "type": "ClassBody",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 15,
+            "offset": 15
+          },
+          "end": {
+            "line": 1,
+            "column": 17,
+            "offset": 17
+          }
+        },
+        "body": []
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/34/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/34/actual.js
new file mode 100644
index 00000000000..a0f242f8ee6
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/34/actual.js
@@ -0,0 +1 @@
+var Foo = @foo class Foo {}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/34/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/34/expected.ast
new file mode 100644
index 00000000000..3fc711a2fb6
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/34/expected.ast
@@ -0,0 +1,148 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 27,
+      "offset": 27
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "VariableDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 1,
+          "column": 27,
+          "offset": 27
+        }
+      },
+      "declarations": [
+        {
+          "type": "VariableDeclarator",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 4,
+              "offset": 4
+            },
+            "end": {
+              "line": 1,
+              "column": 27,
+              "offset": 27
+            }
+          },
+          "id": {
+            "type": "Identifier",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 4,
+                "offset": 4
+              },
+              "end": {
+                "line": 1,
+                "column": 7,
+                "offset": 7
+              }
+            },
+            "name": "Foo"
+          },
+          "init": {
+            "type": "ClassExpression",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 15,
+                "offset": 15
+              },
+              "end": {
+                "line": 1,
+                "column": 27,
+                "offset": 27
+              }
+            },
+            "decorators": [
+              {
+                "type": "Decorator",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 10,
+                    "offset": 10
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 14,
+                    "offset": 14
+                  }
+                },
+                "expression": {
+                  "type": "Identifier",
+                  "loc": {
+                    "start": {
+                      "line": 1,
+                      "column": 11,
+                      "offset": 11
+                    },
+                    "end": {
+                      "line": 1,
+                      "column": 14,
+                      "offset": 14
+                    }
+                  },
+                  "name": "foo"
+                }
+              }
+            ],
+            "id": {
+              "type": "Identifier",
+              "loc": {
+                "start": {
+                  "line": 1,
+                  "column": 21,
+                  "offset": 21
+                },
+                "end": {
+                  "line": 1,
+                  "column": 24,
+                  "offset": 24
+                }
+              },
+              "name": "Foo"
+            },
+            "superClass": null,
+            "body": {
+              "type": "ClassBody",
+              "loc": {
+                "start": {
+                  "line": 1,
+                  "column": 25,
+                  "offset": 25
+                },
+                "end": {
+                  "line": 1,
+                  "column": 27,
+                  "offset": 27
+                }
+              },
+              "body": []
+            }
+          }
+        }
+      ],
+      "kind": "var"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/35/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/35/actual.js
new file mode 100644
index 00000000000..c65a987c325
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/35/actual.js
@@ -0,0 +1 @@
+class Foo { @foo bar() {} }
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/35/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/35/expected.ast
new file mode 100644
index 00000000000..d88b15740c9
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/35/expected.ast
@@ -0,0 +1,157 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 27,
+      "offset": 27
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "ClassDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 1,
+          "column": 27,
+          "offset": 27
+        }
+      },
+      "id": {
+        "type": "Identifier",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 6,
+            "offset": 6
+          },
+          "end": {
+            "line": 1,
+            "column": 9,
+            "offset": 9
+          }
+        },
+        "name": "Foo"
+      },
+      "superClass": null,
+      "body": {
+        "type": "ClassBody",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 10,
+            "offset": 10
+          },
+          "end": {
+            "line": 1,
+            "column": 27,
+            "offset": 27
+          }
+        },
+        "body": [
+          {
+            "type": "MethodDefinition",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 17,
+                "offset": 17
+              },
+              "end": {
+                "line": 1,
+                "column": 25,
+                "offset": 25
+              }
+            },
+            "decorators": [
+              {
+                "type": "Decorator",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 12,
+                    "offset": 12
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 16,
+                    "offset": 16
+                  }
+                },
+                "expression": {
+                  "type": "Identifier",
+                  "loc": {
+                    "start": {
+                      "line": 1,
+                      "column": 13,
+                      "offset": 13
+                    },
+                    "end": {
+                      "line": 1,
+                      "column": 16,
+                      "offset": 16
+                    }
+                  },
+                  "name": "foo"
+                }
+              }
+            ],
+            "computed": false,
+            "key": {
+              "type": "Identifier",
+              "loc": {
+                "start": {
+                  "line": 1,
+                  "column": 17,
+                  "offset": 17
+                },
+                "end": {
+                  "line": 1,
+                  "column": 20,
+                  "offset": 20
+                }
+              },
+              "name": "bar"
+            },
+            "static": false,
+            "kind": "method",
+            "value": {
+              "type": "FunctionExpression",
+              "id": null,
+              "generator": false,
+              "expression": false,
+              "params": [],
+              "body": {
+                "type": "BlockStatement",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 23,
+                    "offset": 23
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 25,
+                    "offset": 25
+                  }
+                },
+                "body": []
+              }
+            }
+          }
+        ]
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/36/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/36/actual.js
new file mode 100644
index 00000000000..a36562fb4f5
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/36/actual.js
@@ -0,0 +1 @@
+class Foo { @foo set bar(f) {} }
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/36/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/36/expected.ast
new file mode 100644
index 00000000000..83094c3befc
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/36/expected.ast
@@ -0,0 +1,174 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 32,
+      "offset": 32
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "ClassDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 1,
+          "column": 32,
+          "offset": 32
+        }
+      },
+      "id": {
+        "type": "Identifier",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 6,
+            "offset": 6
+          },
+          "end": {
+            "line": 1,
+            "column": 9,
+            "offset": 9
+          }
+        },
+        "name": "Foo"
+      },
+      "superClass": null,
+      "body": {
+        "type": "ClassBody",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 10,
+            "offset": 10
+          },
+          "end": {
+            "line": 1,
+            "column": 32,
+            "offset": 32
+          }
+        },
+        "body": [
+          {
+            "type": "MethodDefinition",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 17,
+                "offset": 17
+              },
+              "end": {
+                "line": 1,
+                "column": 30,
+                "offset": 30
+              }
+            },
+            "decorators": [
+              {
+                "type": "Decorator",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 12,
+                    "offset": 12
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 16,
+                    "offset": 16
+                  }
+                },
+                "expression": {
+                  "type": "Identifier",
+                  "loc": {
+                    "start": {
+                      "line": 1,
+                      "column": 13,
+                      "offset": 13
+                    },
+                    "end": {
+                      "line": 1,
+                      "column": 16,
+                      "offset": 16
+                    }
+                  },
+                  "name": "foo"
+                }
+              }
+            ],
+            "computed": false,
+            "key": {
+              "type": "Identifier",
+              "loc": {
+                "start": {
+                  "line": 1,
+                  "column": 21,
+                  "offset": 21
+                },
+                "end": {
+                  "line": 1,
+                  "column": 24,
+                  "offset": 24
+                }
+              },
+              "name": "bar"
+            },
+            "static": false,
+            "kind": "set",
+            "value": {
+              "type": "FunctionExpression",
+              "id": null,
+              "generator": false,
+              "expression": false,
+              "params": [
+                {
+                  "type": "Identifier",
+                  "loc": {
+                    "start": {
+                      "line": 1,
+                      "column": 25,
+                      "offset": 25
+                    },
+                    "end": {
+                      "line": 1,
+                      "column": 26,
+                      "offset": 26
+                    }
+                  },
+                  "name": "f"
+                }
+              ],
+              "body": {
+                "type": "BlockStatement",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 28,
+                    "offset": 28
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 30,
+                    "offset": 30
+                  }
+                },
+                "body": []
+              }
+            }
+          }
+        ]
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/37/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/37/actual.js
new file mode 100644
index 00000000000..6c4ad753dcc
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/37/actual.js
@@ -0,0 +1 @@
+class Foo { @foo get bar() {} }
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/37/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/37/expected.ast
new file mode 100644
index 00000000000..c7ffc25c057
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/37/expected.ast
@@ -0,0 +1,157 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 31,
+      "offset": 31
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "ClassDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 1,
+          "column": 31,
+          "offset": 31
+        }
+      },
+      "id": {
+        "type": "Identifier",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 6,
+            "offset": 6
+          },
+          "end": {
+            "line": 1,
+            "column": 9,
+            "offset": 9
+          }
+        },
+        "name": "Foo"
+      },
+      "superClass": null,
+      "body": {
+        "type": "ClassBody",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 10,
+            "offset": 10
+          },
+          "end": {
+            "line": 1,
+            "column": 31,
+            "offset": 31
+          }
+        },
+        "body": [
+          {
+            "type": "MethodDefinition",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 17,
+                "offset": 17
+              },
+              "end": {
+                "line": 1,
+                "column": 29,
+                "offset": 29
+              }
+            },
+            "decorators": [
+              {
+                "type": "Decorator",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 12,
+                    "offset": 12
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 16,
+                    "offset": 16
+                  }
+                },
+                "expression": {
+                  "type": "Identifier",
+                  "loc": {
+                    "start": {
+                      "line": 1,
+                      "column": 13,
+                      "offset": 13
+                    },
+                    "end": {
+                      "line": 1,
+                      "column": 16,
+                      "offset": 16
+                    }
+                  },
+                  "name": "foo"
+                }
+              }
+            ],
+            "computed": false,
+            "key": {
+              "type": "Identifier",
+              "loc": {
+                "start": {
+                  "line": 1,
+                  "column": 21,
+                  "offset": 21
+                },
+                "end": {
+                  "line": 1,
+                  "column": 24,
+                  "offset": 24
+                }
+              },
+              "name": "bar"
+            },
+            "static": false,
+            "kind": "get",
+            "value": {
+              "type": "FunctionExpression",
+              "id": null,
+              "generator": false,
+              "expression": false,
+              "params": [],
+              "body": {
+                "type": "BlockStatement",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 27,
+                    "offset": 27
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 29,
+                    "offset": 29
+                  }
+                },
+                "body": []
+              }
+            }
+          }
+        ]
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/38/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/38/actual.js
new file mode 100644
index 00000000000..4539abd91de
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/38/actual.js
@@ -0,0 +1 @@
+class Foo { @foo @bar bar() {} }
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/38/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/38/expected.ast
new file mode 100644
index 00000000000..7e7e8d0cc4b
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/38/expected.ast
@@ -0,0 +1,188 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 32,
+      "offset": 32
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "ClassDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 1,
+          "column": 32,
+          "offset": 32
+        }
+      },
+      "id": {
+        "type": "Identifier",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 6,
+            "offset": 6
+          },
+          "end": {
+            "line": 1,
+            "column": 9,
+            "offset": 9
+          }
+        },
+        "name": "Foo"
+      },
+      "superClass": null,
+      "body": {
+        "type": "ClassBody",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 10,
+            "offset": 10
+          },
+          "end": {
+            "line": 1,
+            "column": 32,
+            "offset": 32
+          }
+        },
+        "body": [
+          {
+            "type": "MethodDefinition",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 22,
+                "offset": 22
+              },
+              "end": {
+                "line": 1,
+                "column": 30,
+                "offset": 30
+              }
+            },
+            "decorators": [
+              {
+                "type": "Decorator",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 12,
+                    "offset": 12
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 16,
+                    "offset": 16
+                  }
+                },
+                "expression": {
+                  "type": "Identifier",
+                  "loc": {
+                    "start": {
+                      "line": 1,
+                      "column": 13,
+                      "offset": 13
+                    },
+                    "end": {
+                      "line": 1,
+                      "column": 16,
+                      "offset": 16
+                    }
+                  },
+                  "name": "foo"
+                }
+              },
+              {
+                "type": "Decorator",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 17,
+                    "offset": 17
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 21,
+                    "offset": 21
+                  }
+                },
+                "expression": {
+                  "type": "Identifier",
+                  "loc": {
+                    "start": {
+                      "line": 1,
+                      "column": 18,
+                      "offset": 18
+                    },
+                    "end": {
+                      "line": 1,
+                      "column": 21,
+                      "offset": 21
+                    }
+                  },
+                  "name": "bar"
+                }
+              }
+            ],
+            "computed": false,
+            "key": {
+              "type": "Identifier",
+              "loc": {
+                "start": {
+                  "line": 1,
+                  "column": 22,
+                  "offset": 22
+                },
+                "end": {
+                  "line": 1,
+                  "column": 25,
+                  "offset": 25
+                }
+              },
+              "name": "bar"
+            },
+            "static": false,
+            "kind": "method",
+            "value": {
+              "type": "FunctionExpression",
+              "id": null,
+              "generator": false,
+              "expression": false,
+              "params": [],
+              "body": {
+                "type": "BlockStatement",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 28,
+                    "offset": 28
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 30,
+                    "offset": 30
+                  }
+                },
+                "body": []
+              }
+            }
+          }
+        ]
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/39/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/39/actual.js
new file mode 100644
index 00000000000..d3fd2c6a4bd
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/39/actual.js
@@ -0,0 +1 @@
+@foo({ @bar foo: "bar" }) @bar class Foo {}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/39/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/39/expected.ast
new file mode 100644
index 00000000000..069b4de389b
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/39/expected.ast
@@ -0,0 +1,247 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 43,
+      "offset": 43
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "ClassDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 31,
+          "offset": 31
+        },
+        "end": {
+          "line": 1,
+          "column": 43,
+          "offset": 43
+        }
+      },
+      "decorators": [
+        {
+          "type": "Decorator",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 0,
+              "offset": 0
+            },
+            "end": {
+              "line": 1,
+              "column": 25,
+              "offset": 25
+            }
+          },
+          "expression": {
+            "type": "CallExpression",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 1,
+                "offset": 1
+              },
+              "end": {
+                "line": 1,
+                "column": 25,
+                "offset": 25
+              }
+            },
+            "callee": {
+              "type": "Identifier",
+              "loc": {
+                "start": {
+                  "line": 1,
+                  "column": 1,
+                  "offset": 1
+                },
+                "end": {
+                  "line": 1,
+                  "column": 4,
+                  "offset": 4
+                }
+              },
+              "name": "foo"
+            },
+            "arguments": [
+              {
+                "type": "ObjectExpression",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 5,
+                    "offset": 5
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 24,
+                    "offset": 24
+                  }
+                },
+                "properties": [
+                  {
+                    "type": "Property",
+                    "loc": {
+                      "start": {
+                        "line": 1,
+                        "column": 12,
+                        "offset": 12
+                      },
+                      "end": {
+                        "line": 1,
+                        "column": 22,
+                        "offset": 22
+                      }
+                    },
+                    "decorators": [
+                      {
+                        "type": "Decorator",
+                        "loc": {
+                          "start": {
+                            "line": 1,
+                            "column": 7,
+                            "offset": 7
+                          },
+                          "end": {
+                            "line": 1,
+                            "column": 11,
+                            "offset": 11
+                          }
+                        },
+                        "expression": {
+                          "type": "Identifier",
+                          "loc": {
+                            "start": {
+                              "line": 1,
+                              "column": 8,
+                              "offset": 8
+                            },
+                            "end": {
+                              "line": 1,
+                              "column": 11,
+                              "offset": 11
+                            }
+                          },
+                          "name": "bar"
+                        }
+                      }
+                    ],
+                    "method": false,
+                    "shorthand": false,
+                    "computed": false,
+                    "key": {
+                      "type": "Identifier",
+                      "loc": {
+                        "start": {
+                          "line": 1,
+                          "column": 12,
+                          "offset": 12
+                        },
+                        "end": {
+                          "line": 1,
+                          "column": 15,
+                          "offset": 15
+                        }
+                      },
+                      "name": "foo"
+                    },
+                    "value": {
+                      "type": "Literal",
+                      "loc": {
+                        "start": {
+                          "line": 1,
+                          "column": 17,
+                          "offset": 17
+                        },
+                        "end": {
+                          "line": 1,
+                          "column": 22,
+                          "offset": 22
+                        }
+                      },
+                      "value": "bar"
+                    }
+                  }
+                ]
+              }
+            ]
+          }
+        },
+        {
+          "type": "Decorator",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 26,
+              "offset": 26
+            },
+            "end": {
+              "line": 1,
+              "column": 30,
+              "offset": 30
+            }
+          },
+          "expression": {
+            "type": "Identifier",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 27,
+                "offset": 27
+              },
+              "end": {
+                "line": 1,
+                "column": 30,
+                "offset": 30
+              }
+            },
+            "name": "bar"
+          }
+        }
+      ],
+      "id": {
+        "type": "Identifier",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 37,
+            "offset": 37
+          },
+          "end": {
+            "line": 1,
+            "column": 40,
+            "offset": 40
+          }
+        },
+        "name": "Foo"
+      },
+      "superClass": null,
+      "body": {
+        "type": "ClassBody",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 41,
+            "offset": 41
+          },
+          "end": {
+            "line": 1,
+            "column": 43,
+            "offset": 43
+          }
+        },
+        "body": []
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/40/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/40/actual.js
new file mode 100644
index 00000000000..87afe5bfdd0
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/40/actual.js
@@ -0,0 +1 @@
+@bar class Foo extends @foo class Bar {} {}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/40/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/40/expected.ast
new file mode 100644
index 00000000000..99aa541ea57
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/40/expected.ast
@@ -0,0 +1,179 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 43,
+      "offset": 43
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "ClassDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 5,
+          "offset": 5
+        },
+        "end": {
+          "line": 1,
+          "column": 43,
+          "offset": 43
+        }
+      },
+      "decorators": [
+        {
+          "type": "Decorator",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 0,
+              "offset": 0
+            },
+            "end": {
+              "line": 1,
+              "column": 4,
+              "offset": 4
+            }
+          },
+          "expression": {
+            "type": "Identifier",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 1,
+                "offset": 1
+              },
+              "end": {
+                "line": 1,
+                "column": 4,
+                "offset": 4
+              }
+            },
+            "name": "bar"
+          }
+        }
+      ],
+      "id": {
+        "type": "Identifier",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 11,
+            "offset": 11
+          },
+          "end": {
+            "line": 1,
+            "column": 14,
+            "offset": 14
+          }
+        },
+        "name": "Foo"
+      },
+      "superClass": {
+        "type": "ClassExpression",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 28,
+            "offset": 28
+          },
+          "end": {
+            "line": 1,
+            "column": 40,
+            "offset": 40
+          }
+        },
+        "decorators": [
+          {
+            "type": "Decorator",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 23,
+                "offset": 23
+              },
+              "end": {
+                "line": 1,
+                "column": 27,
+                "offset": 27
+              }
+            },
+            "expression": {
+              "type": "Identifier",
+              "loc": {
+                "start": {
+                  "line": 1,
+                  "column": 24,
+                  "offset": 24
+                },
+                "end": {
+                  "line": 1,
+                  "column": 27,
+                  "offset": 27
+                }
+              },
+              "name": "foo"
+            }
+          }
+        ],
+        "id": {
+          "type": "Identifier",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 34,
+              "offset": 34
+            },
+            "end": {
+              "line": 1,
+              "column": 37,
+              "offset": 37
+            }
+          },
+          "name": "Bar"
+        },
+        "superClass": null,
+        "body": {
+          "type": "ClassBody",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 38,
+              "offset": 38
+            },
+            "end": {
+              "line": 1,
+              "column": 40,
+              "offset": 40
+            }
+          },
+          "body": []
+        }
+      },
+      "body": {
+        "type": "ClassBody",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 41,
+            "offset": 41
+          },
+          "end": {
+            "line": 1,
+            "column": 43,
+            "offset": 43
+          }
+        },
+        "body": []
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/41/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/41/actual.js
new file mode 100644
index 00000000000..71183011897
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/41/actual.js
@@ -0,0 +1 @@
+@foo function bar() {}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/41/expected.error b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/41/expected.error
new file mode 100644
index 00000000000..9eeb1eb11d0
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/41/expected.error
@@ -0,0 +1 @@
+Leading decorators must be attached to a class declaration (1:5)
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/42/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/42/actual.js
new file mode 100644
index 00000000000..3be9192a9aa
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/42/actual.js
@@ -0,0 +1 @@
+class Foo { @foo }
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/42/expected.error b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/42/expected.error
new file mode 100644
index 00000000000..5ebbd6aceae
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/42/expected.error
@@ -0,0 +1,2 @@
+Unexpected token (1:17)
+
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/43/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/43/actual.js
new file mode 100644
index 00000000000..5a63df69ae7
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/43/actual.js
@@ -0,0 +1 @@
+class Foo { foo = "bar"; }
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/43/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/43/expected.ast
new file mode 100644
index 00000000000..55af48d027d
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/43/expected.ast
@@ -0,0 +1,116 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 26,
+      "offset": 26
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "ClassDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 1,
+          "column": 26,
+          "offset": 26
+        }
+      },
+      "id": {
+        "type": "Identifier",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 6,
+            "offset": 6
+          },
+          "end": {
+            "line": 1,
+            "column": 9,
+            "offset": 9
+          }
+        },
+        "name": "Foo"
+      },
+      "superClass": null,
+      "body": {
+        "type": "ClassBody",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 10,
+            "offset": 10
+          },
+          "end": {
+            "line": 1,
+            "column": 26,
+            "offset": 26
+          }
+        },
+        "body": [
+          {
+            "type": "FieldDefinition",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 12,
+                "offset": 12
+              },
+              "end": {
+                "line": 1,
+                "column": 24,
+                "offset": 24
+              }
+            },
+            "computed": false,
+            "key": {
+              "type": "Identifier",
+              "loc": {
+                "start": {
+                  "line": 1,
+                  "column": 12,
+                  "offset": 12
+                },
+                "end": {
+                  "line": 1,
+                  "column": 15,
+                  "offset": 15
+                }
+              },
+              "name": "foo"
+            },
+            "static": false,
+            "value": {
+              "type": "Literal",
+              "loc": {
+                "start": {
+                  "line": 1,
+                  "column": 18,
+                  "offset": 18
+                },
+                "end": {
+                  "line": 1,
+                  "column": 23,
+                  "offset": 23
+                }
+              },
+              "value": "bar"
+            }
+          }
+        ]
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/44/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/44/actual.js
new file mode 100644
index 00000000000..221c093aace
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/44/actual.js
@@ -0,0 +1 @@
+class Foo { foo; }
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/44/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/44/expected.ast
new file mode 100644
index 00000000000..727f6f92727
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/44/expected.ast
@@ -0,0 +1,101 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 18,
+      "offset": 18
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "ClassDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 1,
+          "column": 18,
+          "offset": 18
+        }
+      },
+      "id": {
+        "type": "Identifier",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 6,
+            "offset": 6
+          },
+          "end": {
+            "line": 1,
+            "column": 9,
+            "offset": 9
+          }
+        },
+        "name": "Foo"
+      },
+      "superClass": null,
+      "body": {
+        "type": "ClassBody",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 10,
+            "offset": 10
+          },
+          "end": {
+            "line": 1,
+            "column": 18,
+            "offset": 18
+          }
+        },
+        "body": [
+          {
+            "type": "FieldDefinition",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 12,
+                "offset": 12
+              },
+              "end": {
+                "line": 1,
+                "column": 16,
+                "offset": 16
+              }
+            },
+            "computed": false,
+            "key": {
+              "type": "Identifier",
+              "loc": {
+                "start": {
+                  "line": 1,
+                  "column": 12,
+                  "offset": 12
+                },
+                "end": {
+                  "line": 1,
+                  "column": 15,
+                  "offset": 15
+                }
+              },
+              "name": "foo"
+            },
+            "static": false,
+            "value": null
+          }
+        ]
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/45/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/45/actual.js
new file mode 100644
index 00000000000..1ae36615822
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/45/actual.js
@@ -0,0 +1 @@
+class Foo { static foo; }
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/45/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/45/expected.ast
new file mode 100644
index 00000000000..f63bf906f76
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/45/expected.ast
@@ -0,0 +1,101 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 25,
+      "offset": 25
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "ClassDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 1,
+          "column": 25,
+          "offset": 25
+        }
+      },
+      "id": {
+        "type": "Identifier",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 6,
+            "offset": 6
+          },
+          "end": {
+            "line": 1,
+            "column": 9,
+            "offset": 9
+          }
+        },
+        "name": "Foo"
+      },
+      "superClass": null,
+      "body": {
+        "type": "ClassBody",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 10,
+            "offset": 10
+          },
+          "end": {
+            "line": 1,
+            "column": 25,
+            "offset": 25
+          }
+        },
+        "body": [
+          {
+            "type": "FieldDefinition",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 12,
+                "offset": 12
+              },
+              "end": {
+                "line": 1,
+                "column": 23,
+                "offset": 23
+              }
+            },
+            "computed": false,
+            "key": {
+              "type": "Identifier",
+              "loc": {
+                "start": {
+                  "line": 1,
+                  "column": 19,
+                  "offset": 19
+                },
+                "end": {
+                  "line": 1,
+                  "column": 22,
+                  "offset": 22
+                }
+              },
+              "name": "foo"
+            },
+            "static": true,
+            "value": null
+          }
+        ]
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/46/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/46/actual.js
new file mode 100644
index 00000000000..25cc418eb66
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/46/actual.js
@@ -0,0 +1 @@
+class Foo { static foo = "bar"; }
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/46/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/46/expected.ast
new file mode 100644
index 00000000000..c6933f156d8
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/46/expected.ast
@@ -0,0 +1,116 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 33,
+      "offset": 33
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "ClassDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 1,
+          "column": 33,
+          "offset": 33
+        }
+      },
+      "id": {
+        "type": "Identifier",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 6,
+            "offset": 6
+          },
+          "end": {
+            "line": 1,
+            "column": 9,
+            "offset": 9
+          }
+        },
+        "name": "Foo"
+      },
+      "superClass": null,
+      "body": {
+        "type": "ClassBody",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 10,
+            "offset": 10
+          },
+          "end": {
+            "line": 1,
+            "column": 33,
+            "offset": 33
+          }
+        },
+        "body": [
+          {
+            "type": "FieldDefinition",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 12,
+                "offset": 12
+              },
+              "end": {
+                "line": 1,
+                "column": 31,
+                "offset": 31
+              }
+            },
+            "computed": false,
+            "key": {
+              "type": "Identifier",
+              "loc": {
+                "start": {
+                  "line": 1,
+                  "column": 19,
+                  "offset": 19
+                },
+                "end": {
+                  "line": 1,
+                  "column": 22,
+                  "offset": 22
+                }
+              },
+              "name": "foo"
+            },
+            "static": true,
+            "value": {
+              "type": "Literal",
+              "loc": {
+                "start": {
+                  "line": 1,
+                  "column": 25,
+                  "offset": 25
+                },
+                "end": {
+                  "line": 1,
+                  "column": 30,
+                  "offset": 30
+                }
+              },
+              "value": "bar"
+            }
+          }
+        ]
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/49/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/49/actual.js
new file mode 100644
index 00000000000..b62802cfd5a
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/49/actual.js
@@ -0,0 +1 @@
+var obj = { @foo bar: 'wow' };
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/49/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/49/expected.ast
new file mode 100644
index 00000000000..e004246301d
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/49/expected.ast
@@ -0,0 +1,167 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 30,
+      "offset": 30
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "VariableDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 1,
+          "column": 30,
+          "offset": 30
+        }
+      },
+      "declarations": [
+        {
+          "type": "VariableDeclarator",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 4,
+              "offset": 4
+            },
+            "end": {
+              "line": 1,
+              "column": 29,
+              "offset": 29
+            }
+          },
+          "id": {
+            "type": "Identifier",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 4,
+                "offset": 4
+              },
+              "end": {
+                "line": 1,
+                "column": 7,
+                "offset": 7
+              }
+            },
+            "name": "obj"
+          },
+          "init": {
+            "type": "ObjectExpression",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 10,
+                "offset": 10
+              },
+              "end": {
+                "line": 1,
+                "column": 29,
+                "offset": 29
+              }
+            },
+            "properties": [
+              {
+                "type": "Property",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 17,
+                    "offset": 17
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 27,
+                    "offset": 27
+                  }
+                },
+                "decorators": [
+                  {
+                    "type": "Decorator",
+                    "loc": {
+                      "start": {
+                        "line": 1,
+                        "column": 12,
+                        "offset": 12
+                      },
+                      "end": {
+                        "line": 1,
+                        "column": 16,
+                        "offset": 16
+                      }
+                    },
+                    "expression": {
+                      "type": "Identifier",
+                      "loc": {
+                        "start": {
+                          "line": 1,
+                          "column": 13,
+                          "offset": 13
+                        },
+                        "end": {
+                          "line": 1,
+                          "column": 16,
+                          "offset": 16
+                        }
+                      },
+                      "name": "foo"
+                    }
+                  }
+                ],
+                "method": false,
+                "shorthand": false,
+                "computed": false,
+                "key": {
+                  "type": "Identifier",
+                  "loc": {
+                    "start": {
+                      "line": 1,
+                      "column": 17,
+                      "offset": 17
+                    },
+                    "end": {
+                      "line": 1,
+                      "column": 20,
+                      "offset": 20
+                    }
+                  },
+                  "name": "bar"
+                },
+                "value": {
+                  "type": "Literal",
+                  "loc": {
+                    "start": {
+                      "line": 1,
+                      "column": 22,
+                      "offset": 22
+                    },
+                    "end": {
+                      "line": 1,
+                      "column": 27,
+                      "offset": 27
+                    }
+                  },
+                  "value": "wow"
+                }
+              }
+            ]
+          }
+        }
+      ],
+      "kind": "var"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/50/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/50/actual.js
new file mode 100644
index 00000000000..13079d9393a
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/50/actual.js
@@ -0,0 +1 @@
+export foo, { bar } from "bar";
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/50/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/50/expected.ast
new file mode 100644
index 00000000000..544a0e5386a
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/50/expected.ast
@@ -0,0 +1,129 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 31,
+      "offset": 31
+    }
+  },
+  "sourceType": "module",
+  "body": [
+    {
+      "type": "ExportNamedDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 1,
+          "column": 31,
+          "offset": 31
+        }
+      },
+      "specifiers": [
+        {
+          "type": "ExportDefaultSpecifier",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 7,
+              "offset": 7
+            },
+            "end": {
+              "line": 1,
+              "column": 10,
+              "offset": 10
+            }
+          },
+          "exported": {
+            "type": "Identifier",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 7,
+                "offset": 7
+              },
+              "end": {
+                "line": 1,
+                "column": 10,
+                "offset": 10
+              }
+            },
+            "name": "foo"
+          }
+        },
+        {
+          "type": "ExportSpecifier",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 14,
+              "offset": 14
+            },
+            "end": {
+              "line": 1,
+              "column": 17,
+              "offset": 17
+            }
+          },
+          "local": {
+            "type": "Identifier",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 14,
+                "offset": 14
+              },
+              "end": {
+                "line": 1,
+                "column": 17,
+                "offset": 17
+              }
+            },
+            "name": "bar"
+          },
+          "exported": {
+            "type": "Identifier",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 14,
+                "offset": 14
+              },
+              "end": {
+                "line": 1,
+                "column": 17,
+                "offset": 17
+              }
+            },
+            "name": "bar"
+          }
+        }
+      ],
+      "source": {
+        "type": "Literal",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 25,
+            "offset": 25
+          },
+          "end": {
+            "line": 1,
+            "column": 30,
+            "offset": 30
+          }
+        },
+        "value": "bar"
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/51/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/51/actual.js
new file mode 100644
index 00000000000..162e41ffadf
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/51/actual.js
@@ -0,0 +1 @@
+export * as foo, { bar } from "bar";
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/51/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/51/expected.ast
new file mode 100644
index 00000000000..e023b0931a0
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/51/expected.ast
@@ -0,0 +1,129 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 36,
+      "offset": 36
+    }
+  },
+  "sourceType": "module",
+  "body": [
+    {
+      "type": "ExportNamedDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 1,
+          "column": 36,
+          "offset": 36
+        }
+      },
+      "specifiers": [
+        {
+          "type": "ExportNamespaceSpecifier",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 7,
+              "offset": 7
+            },
+            "end": {
+              "line": 1,
+              "column": 15,
+              "offset": 15
+            }
+          },
+          "exported": {
+            "type": "Identifier",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 12,
+                "offset": 12
+              },
+              "end": {
+                "line": 1,
+                "column": 15,
+                "offset": 15
+              }
+            },
+            "name": "foo"
+          }
+        },
+        {
+          "type": "ExportSpecifier",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 19,
+              "offset": 19
+            },
+            "end": {
+              "line": 1,
+              "column": 22,
+              "offset": 22
+            }
+          },
+          "local": {
+            "type": "Identifier",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 19,
+                "offset": 19
+              },
+              "end": {
+                "line": 1,
+                "column": 22,
+                "offset": 22
+              }
+            },
+            "name": "bar"
+          },
+          "exported": {
+            "type": "Identifier",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 19,
+                "offset": 19
+              },
+              "end": {
+                "line": 1,
+                "column": 22,
+                "offset": 22
+              }
+            },
+            "name": "bar"
+          }
+        }
+      ],
+      "source": {
+        "type": "Literal",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 30,
+            "offset": 30
+          },
+          "end": {
+            "line": 1,
+            "column": 35,
+            "offset": 35
+          }
+        },
+        "value": "bar"
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/52/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/52/actual.js
new file mode 100644
index 00000000000..82e06ef4fe2
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/52/actual.js
@@ -0,0 +1 @@
+export foo from "bar";
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/52/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/52/expected.ast
new file mode 100644
index 00000000000..52efe1d7554
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/52/expected.ast
@@ -0,0 +1,82 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 22,
+      "offset": 22
+    }
+  },
+  "sourceType": "module",
+  "body": [
+    {
+      "type": "ExportNamedDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 1,
+          "column": 22,
+          "offset": 22
+        }
+      },
+      "specifiers": [
+        {
+          "type": "ExportDefaultSpecifier",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 7,
+              "offset": 7
+            },
+            "end": {
+              "line": 1,
+              "column": 10,
+              "offset": 10
+            }
+          },
+          "exported": {
+            "type": "Identifier",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 7,
+                "offset": 7
+              },
+              "end": {
+                "line": 1,
+                "column": 10,
+                "offset": 10
+              }
+            },
+            "name": "foo"
+          }
+        }
+      ],
+      "source": {
+        "type": "Literal",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 16,
+            "offset": 16
+          },
+          "end": {
+            "line": 1,
+            "column": 21,
+            "offset": 21
+          }
+        },
+        "value": "bar"
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/53/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/53/actual.js
new file mode 100644
index 00000000000..0456afbad45
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/53/actual.js
@@ -0,0 +1 @@
+export default from "bar";
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/53/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/53/expected.ast
new file mode 100644
index 00000000000..2eca244d969
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/53/expected.ast
@@ -0,0 +1,82 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 26,
+      "offset": 26
+    }
+  },
+  "sourceType": "module",
+  "body": [
+    {
+      "type": "ExportNamedDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 1,
+          "column": 26,
+          "offset": 26
+        }
+      },
+      "specifiers": [
+        {
+          "type": "ExportDefaultSpecifier",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 7,
+              "offset": 7
+            },
+            "end": {
+              "line": 1,
+              "column": 14,
+              "offset": 14
+            }
+          },
+          "exported": {
+            "type": "Identifier",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 7,
+                "offset": 7
+              },
+              "end": {
+                "line": 1,
+                "column": 14,
+                "offset": 14
+              }
+            },
+            "name": "default"
+          }
+        }
+      ],
+      "source": {
+        "type": "Literal",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 20,
+            "offset": 20
+          },
+          "end": {
+            "line": 1,
+            "column": 25,
+            "offset": 25
+          }
+        },
+        "value": "bar"
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/54/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/54/actual.js
new file mode 100644
index 00000000000..0a52fa7a3e0
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/54/actual.js
@@ -0,0 +1 @@
+export * as foo from "bar";
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/54/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/54/expected.ast
new file mode 100644
index 00000000000..753b3189aa6
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/54/expected.ast
@@ -0,0 +1,82 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 27,
+      "offset": 27
+    }
+  },
+  "sourceType": "module",
+  "body": [
+    {
+      "type": "ExportNamedDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 1,
+          "column": 27,
+          "offset": 27
+        }
+      },
+      "specifiers": [
+        {
+          "type": "ExportNamespaceSpecifier",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 7,
+              "offset": 7
+            },
+            "end": {
+              "line": 1,
+              "column": 15,
+              "offset": 15
+            }
+          },
+          "exported": {
+            "type": "Identifier",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 12,
+                "offset": 12
+              },
+              "end": {
+                "line": 1,
+                "column": 15,
+                "offset": 15
+              }
+            },
+            "name": "foo"
+          }
+        }
+      ],
+      "source": {
+        "type": "Literal",
+        "loc": {
+          "start": {
+            "line": 1,
+            "column": 21,
+            "offset": 21
+          },
+          "end": {
+            "line": 1,
+            "column": 26,
+            "offset": 26
+          }
+        },
+        "value": "bar"
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/62/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/62/actual.js
new file mode 100644
index 00000000000..693af539bf9
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/62/actual.js
@@ -0,0 +1,3 @@
+@decorate((arg) => null)
+class Ex {
+}
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/62/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/62/expected.ast
new file mode 100644
index 00000000000..06b6558b772
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/62/expected.ast
@@ -0,0 +1,167 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 4,
+      "column": 0,
+      "offset": 38
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "ClassDeclaration",
+      "loc": {
+        "start": {
+          "line": 2,
+          "column": 0,
+          "offset": 25
+        },
+        "end": {
+          "line": 3,
+          "column": 1,
+          "offset": 37
+        }
+      },
+      "decorators": [
+        {
+          "type": "Decorator",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 0,
+              "offset": 0
+            },
+            "end": {
+              "line": 1,
+              "column": 24,
+              "offset": 24
+            }
+          },
+          "expression": {
+            "type": "CallExpression",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 1,
+                "offset": 1
+              },
+              "end": {
+                "line": 1,
+                "column": 24,
+                "offset": 24
+              }
+            },
+            "callee": {
+              "type": "Identifier",
+              "loc": {
+                "start": {
+                  "line": 1,
+                  "column": 1,
+                  "offset": 1
+                },
+                "end": {
+                  "line": 1,
+                  "column": 9,
+                  "offset": 9
+                }
+              },
+              "name": "decorate"
+            },
+            "arguments": [
+              {
+                "type": "ArrowFunctionExpression",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 10,
+                    "offset": 10
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 23,
+                    "offset": 23
+                  }
+                },
+                "id": null,
+                "generator": false,
+                "expression": true,
+                "params": [
+                  {
+                    "type": "Identifier",
+                    "loc": {
+                      "start": {
+                        "line": 1,
+                        "column": 11,
+                        "offset": 11
+                      },
+                      "end": {
+                        "line": 1,
+                        "column": 14,
+                        "offset": 14
+                      }
+                    },
+                    "name": "arg"
+                  }
+                ],
+                "body": {
+                  "type": "Literal",
+                  "loc": {
+                    "start": {
+                      "line": 1,
+                      "column": 19,
+                      "offset": 19
+                    },
+                    "end": {
+                      "line": 1,
+                      "column": 23,
+                      "offset": 23
+                    }
+                  }
+                }
+              }
+            ]
+          }
+        }
+      ],
+      "id": {
+        "type": "Identifier",
+        "loc": {
+          "start": {
+            "line": 2,
+            "column": 6,
+            "offset": 31
+          },
+          "end": {
+            "line": 2,
+            "column": 8,
+            "offset": 33
+          }
+        },
+        "name": "Ex"
+      },
+      "superClass": null,
+      "body": {
+        "type": "ClassBody",
+        "loc": {
+          "start": {
+            "line": 2,
+            "column": 9,
+            "offset": 34
+          },
+          "end": {
+            "line": 3,
+            "column": 1,
+            "offset": 37
+          }
+        },
+        "body": []
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/9/actual.js b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/9/actual.js
new file mode 100644
index 00000000000..44f43b4c072
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/9/actual.js
@@ -0,0 +1 @@
+let {...x} = z
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/experimental/uncategorised/9/expected.ast b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/9/expected.ast
new file mode 100644
index 00000000000..a47b30d80ca
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/experimental/uncategorised/9/expected.ast
@@ -0,0 +1,119 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 1,
+      "column": 14,
+      "offset": 14
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "VariableDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 1,
+          "column": 14,
+          "offset": 14
+        }
+      },
+      "declarations": [
+        {
+          "type": "VariableDeclarator",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 4,
+              "offset": 4
+            },
+            "end": {
+              "line": 1,
+              "column": 14,
+              "offset": 14
+            }
+          },
+          "id": {
+            "type": "ObjectPattern",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 4,
+                "offset": 4
+              },
+              "end": {
+                "line": 1,
+                "column": 10,
+                "offset": 10
+              }
+            },
+            "properties": [
+              {
+                "type": "Property",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 5,
+                    "offset": 5
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 9,
+                    "offset": 9
+                  }
+                },
+                "key": null,
+                "value": {
+                  "type": "RestElement",
+                  "argument": {
+                    "type": "Identifier",
+                    "loc": {
+                      "start": {
+                        "line": 1,
+                        "column": 8,
+                        "offset": 8
+                      },
+                      "end": {
+                        "line": 1,
+                        "column": 9,
+                        "offset": 9
+                      }
+                    },
+                    "name": "x"
+                  }
+                }
+              }
+            ]
+          },
+          "init": {
+            "type": "Identifier",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 13,
+                "offset": 13
+              },
+              "end": {
+                "line": 1,
+                "column": 14,
+                "offset": 14
+              }
+            },
+            "name": "z"
+          }
+        }
+      ],
+      "kind": "let"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/generate-tests.patch b/javascript/extractor/parser-tests/babylon/generate-tests.patch
new file mode 100644
index 00000000000..463ba3226da
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/generate-tests.patch
@@ -0,0 +1,110 @@
+diff --git a/test/index.js b/test/index.js
+index efc6fe5..64d3ddf 100644
+--- a/test/index.js
++++ b/test/index.js
+@@ -60,6 +60,105 @@ function runTest(test) {
+       throw new Error(mis);
+     }
+   }
++
++  require("fs").writeFileSync(test.expect.loc.replace(/\.js(on)?$/, ".ast"),
++    JSON.stringify(ast, massage, 2));
++}
++
++function massage(k, v) {
++  if (v && typeof v === 'object') {
++    if (v.type === "File")
++      return massage(k, v.program);
++
++
++    if (v.type === "ObjectProperty")
++      v.type = "Property";
++
++    if (v.type === "NumericLiteral" || v.type === "StringLiteral" || v.type === "NullLiteral")
++      v.type = "Literal";
++
++    if (v.type === "RestProperty") {
++      v.type = "Property";
++      v.key = null;
++      v.value = {
++        type: "RestElement",
++        argument: v.argument
++      };
++      delete v.argument;
++    }
++
++    if (v.type === "SpreadProperty") {
++      v.type = "Property";
++      v.key = null;
++      v.value = {
++        type: "SpreadElement",
++        argument: v.argument
++      };
++      delete v.argument;
++    }
++
++    if (v.type === "ClassMethod") {
++      v.type = "MethodDefinition";
++      v.value = {
++        type: "FunctionExpression",
++        id: v.id,
++        generator: v.generator,
++        expression: v.expression,
++        async: v.async,
++        params: v.params,
++        body: v.body
++      };
++      delete v.id; delete v.generator; delete v.expression;
++      delete v.async; delete v.params; delete v.body;
++    }
++
++    if (v.type === "ObjectMethod") {
++      v.type = "Property";
++      v.kind = "init";
++      v.value = {
++        type: "FunctionExpression",
++        id: v.id,
++        generator: v.generator,
++        expression: v.expression,
++        async: v.async,
++        params: v.params,
++        body: v.body
++      };
++      delete v.id; delete v.generator; delete v.expression;
++      delete v.async; delete v.params; delete v.body;
++    }
++
++    if (v.type === "ClassProperty")
++      v.type = "FieldDefinition";
++
++    if (v.range) {
++      v.start = v.range[0];
++      v.end = v.range[1];
++      delete v.range;
++    }
++
++    if (typeof v.start === 'number') {
++      v.loc = v.loc || {};
++      v.loc.start = v.loc.start || {};
++      v.loc.start.offset = v.start;
++      delete v.start;
++    }
++
++    if (typeof v.end === 'number') {
++      v.loc = v.loc || {};
++      v.loc.end = v.loc.end || {};
++      v.loc.end.offset = v.end;
++      delete v.end;
++    }
++
++    delete v.directives;
++    delete v.extra;
++  }
++
++  if (v instanceof RegExp)
++    return v.toString();
++
++  return v;
+ }
+ 
+ function ppJSON(v) {
diff --git a/javascript/extractor/parser-tests/babylon/harmony/arrow-functions/object-rest-spread/actual.js b/javascript/extractor/parser-tests/babylon/harmony/arrow-functions/object-rest-spread/actual.js
new file mode 100644
index 00000000000..ebfe2a28165
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/harmony/arrow-functions/object-rest-spread/actual.js
@@ -0,0 +1,3 @@
+var foo = ( { title, ...other } ) => {
+  
+};
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/babylon/harmony/arrow-functions/object-rest-spread/expected.ast b/javascript/extractor/parser-tests/babylon/harmony/arrow-functions/object-rest-spread/expected.ast
new file mode 100644
index 00000000000..13e014579c7
--- /dev/null
+++ b/javascript/extractor/parser-tests/babylon/harmony/arrow-functions/object-rest-spread/expected.ast
@@ -0,0 +1,205 @@
+{
+  "type": "Program",
+  "loc": {
+    "start": {
+      "line": 1,
+      "column": 0,
+      "offset": 0
+    },
+    "end": {
+      "line": 3,
+      "column": 2,
+      "offset": 44
+    }
+  },
+  "sourceType": "script",
+  "body": [
+    {
+      "type": "VariableDeclaration",
+      "loc": {
+        "start": {
+          "line": 1,
+          "column": 0,
+          "offset": 0
+        },
+        "end": {
+          "line": 3,
+          "column": 2,
+          "offset": 44
+        }
+      },
+      "declarations": [
+        {
+          "type": "VariableDeclarator",
+          "loc": {
+            "start": {
+              "line": 1,
+              "column": 4,
+              "offset": 4
+            },
+            "end": {
+              "line": 3,
+              "column": 1,
+              "offset": 43
+            }
+          },
+          "id": {
+            "type": "Identifier",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 4,
+                "offset": 4
+              },
+              "end": {
+                "line": 1,
+                "column": 7,
+                "offset": 7
+              }
+            },
+            "name": "foo"
+          },
+          "init": {
+            "type": "ArrowFunctionExpression",
+            "loc": {
+              "start": {
+                "line": 1,
+                "column": 10,
+                "offset": 10
+              },
+              "end": {
+                "line": 3,
+                "column": 1,
+                "offset": 43
+              }
+            },
+            "id": null,
+            "generator": false,
+            "expression": false,
+            "params": [
+              {
+                "type": "ObjectPattern",
+                "loc": {
+                  "start": {
+                    "line": 1,
+                    "column": 12,
+                    "offset": 12
+                  },
+                  "end": {
+                    "line": 1,
+                    "column": 31,
+                    "offset": 31
+                  }
+                },
+                "properties": [
+                  {
+                    "type": "Property",
+                    "loc": {
+                      "start": {
+                        "line": 1,
+                        "column": 14,
+                        "offset": 14
+                      },
+                      "end": {
+                        "line": 1,
+                        "column": 19,
+                        "offset": 19
+                      }
+                    },
+                    "method": false,
+                    "shorthand": true,
+                    "computed": false,
+                    "key": {
+                      "type": "Identifier",
+                      "loc": {
+                        "start": {
+                          "line": 1,
+                          "column": 14,
+                          "offset": 14
+                        },
+                        "end": {
+                          "line": 1,
+                          "column": 19,
+                          "offset": 19
+                        }
+                      },
+                      "name": "title"
+                    },
+                    "value": {
+                      "type": "Identifier",
+                      "loc": {
+                        "start": {
+                          "line": 1,
+                          "column": 14,
+                          "offset": 14
+                        },
+                        "end": {
+                          "line": 1,
+                          "column": 19,
+                          "offset": 19
+                        }
+                      },
+                      "name": "title"
+                    }
+                  },
+                  {
+                    "type": "Property",
+                    "loc": {
+                      "start": {
+                        "line": 1,
+                        "column": 21,
+                        "offset": 21
+                      },
+                      "end": {
+                        "line": 1,
+                        "column": 29,
+                        "offset": 29
+                      }
+                    },
+                    "key": null,
+                    "value": {
+                      "type": "RestElement",
+                      "argument": {
+                        "type": "Identifier",
+                        "loc": {
+                          "start": {
+                            "line": 1,
+                            "column": 24,
+                            "offset": 24
+                          },
+                          "end": {
+                            "line": 1,
+                            "column": 29,
+                            "offset": 29
+                          }
+                        },
+                        "name": "other"
+                      }
+                    }
+                  }
+                ]
+              }
+            ],
+            "body": {
+              "type": "BlockStatement",
+              "loc": {
+                "start": {
+                  "line": 1,
+                  "column": 37,
+                  "offset": 37
+                },
+                "end": {
+                  "line": 3,
+                  "column": 1,
+                  "offset": 43
+                }
+              },
+              "body": []
+            }
+          }
+        }
+      ],
+      "kind": "var"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/jcorn-jsx/README.md b/javascript/extractor/parser-tests/jcorn-jsx/README.md
new file mode 100644
index 00000000000..549ee2f1ad6
--- /dev/null
+++ b/javascript/extractor/parser-tests/jcorn-jsx/README.md
@@ -0,0 +1,3 @@
+These tests were semi-automatically generated from the [acorn-jsx test suite](https://github.com/RReverser/acorn-jsx/tree/master/test).
+
+For each test, `test.js` is the input, `test.options.json` are the parser options (if they are non-standard), `test.ast` is the expected output pattern (if the test is meant to succeed), and `test.fail` is the expected error message (if the test is meant to fail).
diff --git a/javascript/extractor/parser-tests/jcorn-jsx/generate-tests.patch b/javascript/extractor/parser-tests/jcorn-jsx/generate-tests.patch
new file mode 100644
index 00000000000..960e490d825
--- /dev/null
+++ b/javascript/extractor/parser-tests/jcorn-jsx/generate-tests.patch
@@ -0,0 +1,61 @@
+diff --git a/test/driver.js b/test/driver.js
+index 06d5644..012184a 100644
+--- a/test/driver.js
++++ b/test/driver.js
+@@ -1,13 +1,53 @@
+ var tests = [];
++var ntests = 0;
++var fs = require("fs");
+ 
+ exports.test = function(code, ast, options) {
+-  tests.push({code: code, ast: ast, options: options});
++  var testName = "test" + (ntests++);
++  fs.writeFileSync(testName + ".js", code);
++  if (options && options.plugins && options.plugins.jsx)
++    fs.writeFileSync(testName + ".options.json", JSON.stringify(options.plugins.jsx, null, 2));
++  fs.writeFileSync(testName + ".ast", JSON.stringify(ast, function(k, v) {
++    if (v && typeof v === 'object') {
++      if (v.range) {
++        v.start = v.range[0];
++        v.end = v.range[1];
++        delete v.range;
++      }
++
++      if (typeof v.start === 'number') {
++        v.loc = v.loc || {};
++        v.loc.start = v.loc.start || {};
++        v.loc.start.offset = v.start;
++        delete v.start;
++      }
++
++      if (typeof v.end === 'number') {
++        v.loc = v.loc || {};
++        v.loc.end = v.loc.end || {};
++        v.loc.end.offset = v.end;
++        delete v.end;
++      }
++    }
++
++    if (v instanceof RegExp)
++      return v.toString();
++
++    return v;
++  }, 2));
++  //tests.push({code: code, ast: ast, options: options});
+ };
+ exports.testFail = function(code, message, options) {
+-  tests.push({code: code, error: message, options: options});
++  var testName = "test" + (ntests++);
++  fs.writeFileSync(testName + ".js", code);
++  if (options && options.plugins && options.plugins.jsx)
++    fs.writeFileSync(testName + ".options.json", JSON.stringify(options.plugins.jsx, null, 2));
++  fs.writeFileSync(testName + ".fail", message);
++//  tests.push({code: code, error: message, options: options});
+ };
+ exports.testAssert = function(code, assert, options) {
+-  tests.push({code: code, assert: assert, options: options});
++  throw new Error("Cannot handle tests with explicit assertions.");
++//  tests.push({code: code, assert: assert, options: options});
+ };
+ 
+ exports.runTests = function(config, callback) {
diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test0.fail b/javascript/extractor/parser-tests/jcorn-jsx/test0.fail
new file mode 100644
index 00000000000..f5758a77b61
--- /dev/null
+++ b/javascript/extractor/parser-tests/jcorn-jsx/test0.fail
@@ -0,0 +1 @@
+Adjacent JSX elements must be wrapped in an enclosing tag (1:22)
\ No newline at end of file
diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test0.js b/javascript/extractor/parser-tests/jcorn-jsx/test0.js
new file mode 100644
index 00000000000..7f8c0f612b3
--- /dev/null
+++ b/javascript/extractor/parser-tests/jcorn-jsx/test0.js
@@ -0,0 +1 @@
+var x = 
one
two
; \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test1.fail b/javascript/extractor/parser-tests/jcorn-jsx/test1.fail new file mode 100644 index 00000000000..20442f55e49 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test1.fail @@ -0,0 +1 @@ +Unexpected token (1:4) \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test1.js b/javascript/extractor/parser-tests/jcorn-jsx/test1.js new file mode 100644 index 00000000000..c4c33b266ec --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test1.js @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test10.ast b/javascript/extractor/parser-tests/jcorn-jsx/test10.ast new file mode 100644 index 00000000000..62d0b3ea5ae --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test10.ast @@ -0,0 +1,70 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "a", + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 2, + "offset": 2 + } + } + }, + "selfClosing": true, + "attributes": [], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 2, + "column": 2, + "offset": 5 + } + } + }, + "closingElement": null, + "children": [], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 2, + "column": 2, + "offset": 5 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 2, + "column": 2, + "offset": 5 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test10.js b/javascript/extractor/parser-tests/jcorn-jsx/test10.js new file mode 100644 index 00000000000..860471c4a4d --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test10.js @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test11.ast b/javascript/extractor/parser-tests/jcorn-jsx/test11.ast new file mode 100644 index 00000000000..5c4f134b3f4 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test11.ast @@ -0,0 +1,100 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "日本語", + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 4, + "offset": 4 + } + } + }, + "selfClosing": false, + "attributes": [], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 5, + "offset": 5 + } + } + }, + "closingElement": { + "type": "JSXClosingElement", + "name": { + "type": "JSXIdentifier", + "name": "日本語", + "loc": { + "start": { + "line": 1, + "column": 7, + "offset": 7 + }, + "end": { + "line": 1, + "column": 10, + "offset": 10 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 5, + "offset": 5 + }, + "end": { + "line": 1, + "column": 11, + "offset": 11 + } + } + }, + "children": [], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 11, + "offset": 11 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 11, + "offset": 11 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test11.js b/javascript/extractor/parser-tests/jcorn-jsx/test11.js new file mode 100644 index 00000000000..91bb63a3586 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test11.js @@ -0,0 +1 @@ +<日本語> \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test12.ast b/javascript/extractor/parser-tests/jcorn-jsx/test12.ast new file mode 100644 index 00000000000..e60fa8f3947 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test12.ast @@ -0,0 +1,167 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "AbC-def", + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 8, + "offset": 8 + } + } + }, + "selfClosing": false, + "attributes": [ + { + "type": "JSXAttribute", + "name": { + "type": "JSXIdentifier", + "name": "test", + "loc": { + "start": { + "line": 2, + "column": 2, + "offset": 11 + }, + "end": { + "line": 2, + "column": 6, + "offset": 15 + } + } + }, + "value": { + "type": "Literal", + "value": "&&", + "raw": "\"&&\"", + "loc": { + "start": { + "line": 2, + "column": 7, + "offset": 16 + }, + "end": { + "line": 2, + "column": 22, + "offset": 31 + } + } + }, + "loc": { + "start": { + "line": 2, + "column": 2, + "offset": 11 + }, + "end": { + "line": 2, + "column": 22, + "offset": 31 + } + } + } + ], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 2, + "column": 23, + "offset": 32 + } + } + }, + "closingElement": { + "type": "JSXClosingElement", + "name": { + "type": "JSXIdentifier", + "name": "AbC-def", + "loc": { + "start": { + "line": 5, + "column": 2, + "offset": 43 + }, + "end": { + "line": 5, + "column": 9, + "offset": 50 + } + } + }, + "loc": { + "start": { + "line": 5, + "column": 0, + "offset": 41 + }, + "end": { + "line": 5, + "column": 10, + "offset": 51 + } + } + }, + "children": [ + { + "type": "Literal", + "value": "\nbar\nbaz\n", + "raw": "\nbar\nbaz\n", + "loc": { + "start": { + "line": 2, + "column": 23, + "offset": 32 + }, + "end": { + "line": 5, + "column": 0, + "offset": 41 + } + } + } + ], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 5, + "column": 10, + "offset": 51 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 5, + "column": 10, + "offset": 51 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test12.js b/javascript/extractor/parser-tests/jcorn-jsx/test12.js new file mode 100644 index 00000000000..edd14923135 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test12.js @@ -0,0 +1,5 @@ + +bar +baz + \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test13.ast b/javascript/extractor/parser-tests/jcorn-jsx/test13.ast new file mode 100644 index 00000000000..97689d596c5 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test13.ast @@ -0,0 +1,248 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "a", + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 2, + "offset": 2 + } + } + }, + "selfClosing": true, + "attributes": [ + { + "type": "JSXAttribute", + "name": { + "type": "JSXIdentifier", + "name": "b", + "loc": { + "start": { + "line": 1, + "column": 3, + "offset": 3 + }, + "end": { + "line": 1, + "column": 4, + "offset": 4 + } + } + }, + "value": { + "type": "JSXExpressionContainer", + "expression": { + "type": "ConditionalExpression", + "test": { + "type": "Identifier", + "name": "x", + "loc": { + "start": { + "line": 1, + "column": 6, + "offset": 6 + }, + "end": { + "line": 1, + "column": 7, + "offset": 7 + } + } + }, + "consequent": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "c", + "loc": { + "start": { + "line": 1, + "column": 11, + "offset": 11 + }, + "end": { + "line": 1, + "column": 12, + "offset": 12 + } + } + }, + "selfClosing": true, + "attributes": [], + "loc": { + "start": { + "line": 1, + "column": 10, + "offset": 10 + }, + "end": { + "line": 1, + "column": 15, + "offset": 15 + } + } + }, + "closingElement": null, + "children": [], + "loc": { + "start": { + "line": 1, + "column": 10, + "offset": 10 + }, + "end": { + "line": 1, + "column": 15, + "offset": 15 + } + } + }, + "alternate": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "d", + "loc": { + "start": { + "line": 1, + "column": 19, + "offset": 19 + }, + "end": { + "line": 1, + "column": 20, + "offset": 20 + } + } + }, + "selfClosing": true, + "attributes": [], + "loc": { + "start": { + "line": 1, + "column": 18, + "offset": 18 + }, + "end": { + "line": 1, + "column": 23, + "offset": 23 + } + } + }, + "closingElement": null, + "children": [], + "loc": { + "start": { + "line": 1, + "column": 18, + "offset": 18 + }, + "end": { + "line": 1, + "column": 23, + "offset": 23 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 6, + "offset": 6 + }, + "end": { + "line": 1, + "column": 23, + "offset": 23 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 5, + "offset": 5 + }, + "end": { + "line": 1, + "column": 24, + "offset": 24 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 3, + "offset": 3 + }, + "end": { + "line": 1, + "column": 24, + "offset": 24 + } + } + } + ], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 27, + "offset": 27 + } + } + }, + "closingElement": null, + "children": [], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 27, + "offset": 27 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 27, + "offset": 27 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test13.js b/javascript/extractor/parser-tests/jcorn-jsx/test13.js new file mode 100644 index 00000000000..946985a64c3 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test13.js @@ -0,0 +1 @@ + : } /> \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test14.ast b/javascript/extractor/parser-tests/jcorn-jsx/test14.ast new file mode 100644 index 00000000000..8b95f9427ea --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test14.ast @@ -0,0 +1,131 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "a", + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 2, + "offset": 2 + } + } + }, + "selfClosing": false, + "attributes": [], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 3, + "offset": 3 + } + } + }, + "closingElement": { + "type": "JSXClosingElement", + "name": { + "type": "JSXIdentifier", + "name": "a", + "loc": { + "start": { + "line": 1, + "column": 7, + "offset": 7 + }, + "end": { + "line": 1, + "column": 8, + "offset": 8 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 5, + "offset": 5 + }, + "end": { + "line": 1, + "column": 9, + "offset": 9 + } + } + }, + "children": [ + { + "type": "JSXExpressionContainer", + "expression": { + "type": "JSXEmptyExpression", + "loc": { + "start": { + "line": 1, + "column": 4, + "offset": 4 + }, + "end": { + "line": 1, + "column": 4, + "offset": 4 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 3, + "offset": 3 + }, + "end": { + "line": 1, + "column": 5, + "offset": 5 + } + } + } + ], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 9, + "offset": 9 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 9, + "offset": 9 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test14.js b/javascript/extractor/parser-tests/jcorn-jsx/test14.js new file mode 100644 index 00000000000..b5791d7653e --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test14.js @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test15.ast b/javascript/extractor/parser-tests/jcorn-jsx/test15.ast new file mode 100644 index 00000000000..0d0c40d8ea1 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test15.ast @@ -0,0 +1,131 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "a", + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 2, + "offset": 2 + } + } + }, + "selfClosing": false, + "attributes": [], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 3, + "offset": 3 + } + } + }, + "closingElement": { + "type": "JSXClosingElement", + "name": { + "type": "JSXIdentifier", + "name": "a", + "loc": { + "start": { + "line": 1, + "column": 30, + "offset": 30 + }, + "end": { + "line": 1, + "column": 31, + "offset": 31 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 28, + "offset": 28 + }, + "end": { + "line": 1, + "column": 32, + "offset": 32 + } + } + }, + "children": [ + { + "type": "JSXExpressionContainer", + "expression": { + "type": "JSXEmptyExpression", + "loc": { + "start": { + "line": 1, + "column": 4, + "offset": 4 + }, + "end": { + "line": 1, + "column": 27, + "offset": 27 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 3, + "offset": 3 + }, + "end": { + "line": 1, + "column": 28, + "offset": 28 + } + } + } + ], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 32, + "offset": 32 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 32, + "offset": 32 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test15.js b/javascript/extractor/parser-tests/jcorn-jsx/test15.js new file mode 100644 index 00000000000..10755e1d9d8 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test15.js @@ -0,0 +1 @@ +{/* this is a comment */} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test16.ast b/javascript/extractor/parser-tests/jcorn-jsx/test16.ast new file mode 100644 index 00000000000..549696e3e40 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test16.ast @@ -0,0 +1,118 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "div", + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 4, + "offset": 4 + } + } + }, + "selfClosing": false, + "attributes": [], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 5, + "offset": 5 + } + } + }, + "closingElement": { + "type": "JSXClosingElement", + "name": { + "type": "JSXIdentifier", + "name": "div", + "loc": { + "start": { + "line": 1, + "column": 20, + "offset": 20 + }, + "end": { + "line": 1, + "column": 23, + "offset": 23 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 18, + "offset": 18 + }, + "end": { + "line": 1, + "column": 24, + "offset": 24 + } + } + }, + "children": [ + { + "type": "Literal", + "value": "@test content", + "raw": "@test content", + "loc": { + "start": { + "line": 1, + "column": 5, + "offset": 5 + }, + "end": { + "line": 1, + "column": 18, + "offset": 18 + } + } + } + ], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 24, + "offset": 24 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 24, + "offset": 24 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test16.js b/javascript/extractor/parser-tests/jcorn-jsx/test16.js new file mode 100644 index 00000000000..ee309a93d2c --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test16.js @@ -0,0 +1 @@ +
@test content
\ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test17.ast b/javascript/extractor/parser-tests/jcorn-jsx/test17.ast new file mode 100644 index 00000000000..46a77702862 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test17.ast @@ -0,0 +1,168 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "div", + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 4, + "offset": 4 + } + } + }, + "selfClosing": false, + "attributes": [], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 5, + "offset": 5 + } + } + }, + "closingElement": { + "type": "JSXClosingElement", + "name": { + "type": "JSXIdentifier", + "name": "div", + "loc": { + "start": { + "line": 1, + "column": 37, + "offset": 37 + }, + "end": { + "line": 1, + "column": 40, + "offset": 40 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 35, + "offset": 35 + }, + "end": { + "line": 1, + "column": 41, + "offset": 41 + } + } + }, + "children": [ + { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "br", + "loc": { + "start": { + "line": 1, + "column": 6, + "offset": 6 + }, + "end": { + "line": 1, + "column": 8, + "offset": 8 + } + } + }, + "selfClosing": true, + "attributes": [], + "loc": { + "start": { + "line": 1, + "column": 5, + "offset": 5 + }, + "end": { + "line": 1, + "column": 11, + "offset": 11 + } + } + }, + "closingElement": null, + "children": [], + "loc": { + "start": { + "line": 1, + "column": 5, + "offset": 5 + }, + "end": { + "line": 1, + "column": 11, + "offset": 11 + } + } + }, + { + "type": "Literal", + "value": "7x invalid-js-identifier", + "raw": "7x invalid-js-identifier", + "loc": { + "start": { + "line": 1, + "column": 11, + "offset": 11 + }, + "end": { + "line": 1, + "column": 35, + "offset": 35 + } + } + } + ], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 41, + "offset": 41 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 41, + "offset": 41 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test17.js b/javascript/extractor/parser-tests/jcorn-jsx/test17.js new file mode 100644 index 00000000000..f14dfe6f8b6 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test17.js @@ -0,0 +1 @@ +

7x invalid-js-identifier
\ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test18.ast b/javascript/extractor/parser-tests/jcorn-jsx/test18.ast new file mode 100644 index 00000000000..04c888bda4f --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test18.ast @@ -0,0 +1,281 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "LeftRight", + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 10, + "offset": 10 + } + } + }, + "selfClosing": true, + "attributes": [ + { + "type": "JSXAttribute", + "name": { + "type": "JSXIdentifier", + "name": "left", + "loc": { + "start": { + "line": 1, + "column": 11, + "offset": 11 + }, + "end": { + "line": 1, + "column": 15, + "offset": 15 + } + } + }, + "value": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "a", + "loc": { + "start": { + "line": 1, + "column": 17, + "offset": 17 + }, + "end": { + "line": 1, + "column": 18, + "offset": 18 + } + } + }, + "selfClosing": true, + "attributes": [], + "loc": { + "start": { + "line": 1, + "column": 16, + "offset": 16 + }, + "end": { + "line": 1, + "column": 21, + "offset": 21 + } + } + }, + "closingElement": null, + "children": [], + "loc": { + "start": { + "line": 1, + "column": 16, + "offset": 16 + }, + "end": { + "line": 1, + "column": 21, + "offset": 21 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 11, + "offset": 11 + }, + "end": { + "line": 1, + "column": 21, + "offset": 21 + } + } + }, + { + "type": "JSXAttribute", + "name": { + "type": "JSXIdentifier", + "name": "right", + "loc": { + "start": { + "line": 1, + "column": 22, + "offset": 22 + }, + "end": { + "line": 1, + "column": 27, + "offset": 27 + } + } + }, + "value": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "b", + "loc": { + "start": { + "line": 1, + "column": 29, + "offset": 29 + }, + "end": { + "line": 1, + "column": 30, + "offset": 30 + } + } + }, + "selfClosing": false, + "attributes": [], + "loc": { + "start": { + "line": 1, + "column": 28, + "offset": 28 + }, + "end": { + "line": 1, + "column": 31, + "offset": 31 + } + } + }, + "closingElement": { + "type": "JSXClosingElement", + "name": { + "type": "JSXIdentifier", + "name": "b", + "loc": { + "start": { + "line": 1, + "column": 52, + "offset": 52 + }, + "end": { + "line": 1, + "column": 53, + "offset": 53 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 50, + "offset": 50 + }, + "end": { + "line": 1, + "column": 54, + "offset": 54 + } + } + }, + "children": [ + { + "type": "Literal", + "value": "monkeys /> gorillas", + "raw": "monkeys /> gorillas", + "loc": { + "start": { + "line": 1, + "column": 31, + "offset": 31 + }, + "end": { + "line": 1, + "column": 50, + "offset": 50 + } + } + } + ], + "loc": { + "start": { + "line": 1, + "column": 28, + "offset": 28 + }, + "end": { + "line": 1, + "column": 54, + "offset": 54 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 22, + "offset": 22 + }, + "end": { + "line": 1, + "column": 54, + "offset": 54 + } + } + } + ], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 57, + "offset": 57 + } + } + }, + "closingElement": null, + "children": [], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 57, + "offset": 57 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 57, + "offset": 57 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test18.js b/javascript/extractor/parser-tests/jcorn-jsx/test18.js new file mode 100644 index 00000000000..f7525a0e00c --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test18.js @@ -0,0 +1 @@ + right=monkeys /> gorillas /> \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test19.ast b/javascript/extractor/parser-tests/jcorn-jsx/test19.ast new file mode 100644 index 00000000000..3bb04ef916c --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test19.ast @@ -0,0 +1,162 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXMemberExpression", + "object": { + "type": "JSXIdentifier", + "name": "a", + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 2, + "offset": 2 + } + } + }, + "property": { + "type": "JSXIdentifier", + "name": "b", + "loc": { + "start": { + "line": 1, + "column": 3, + "offset": 3 + }, + "end": { + "line": 1, + "column": 4, + "offset": 4 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 4, + "offset": 4 + } + } + }, + "selfClosing": false, + "attributes": [], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 5, + "offset": 5 + } + } + }, + "closingElement": { + "type": "JSXClosingElement", + "name": { + "type": "JSXMemberExpression", + "object": { + "type": "JSXIdentifier", + "name": "a", + "loc": { + "start": { + "line": 1, + "column": 7, + "offset": 7 + }, + "end": { + "line": 1, + "column": 8, + "offset": 8 + } + } + }, + "property": { + "type": "JSXIdentifier", + "name": "b", + "loc": { + "start": { + "line": 1, + "column": 9, + "offset": 9 + }, + "end": { + "line": 1, + "column": 10, + "offset": 10 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 7, + "offset": 7 + }, + "end": { + "line": 1, + "column": 10, + "offset": 10 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 5, + "offset": 5 + }, + "end": { + "line": 1, + "column": 11, + "offset": 11 + } + } + }, + "children": [], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 11, + "offset": 11 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 11, + "offset": 11 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test19.js b/javascript/extractor/parser-tests/jcorn-jsx/test19.js new file mode 100644 index 00000000000..6869b9b3701 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test19.js @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test2.ast b/javascript/extractor/parser-tests/jcorn-jsx/test2.ast new file mode 100644 index 00000000000..7ccb8266cce --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test2.ast @@ -0,0 +1,108 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "attributes": [], + "name": { + "type": "JSXMemberExpression", + "object": { + "type": "JSXNamespacedName", + "namespace": { + "type": "JSXIdentifier", + "name": "a", + "loc": { + "start": { + "offset": 1 + }, + "end": { + "offset": 2 + } + } + }, + "name": { + "type": "JSXIdentifier", + "name": "b", + "loc": { + "start": { + "offset": 3 + }, + "end": { + "offset": 4 + } + } + }, + "loc": { + "start": { + "offset": 1 + }, + "end": { + "offset": 4 + } + } + }, + "property": { + "type": "JSXIdentifier", + "name": "c", + "loc": { + "start": { + "offset": 5 + }, + "end": { + "offset": 6 + } + } + }, + "loc": { + "start": { + "offset": 1 + }, + "end": { + "offset": 6 + } + } + }, + "selfClosing": true, + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 9 + } + } + }, + "closingElement": null, + "children": [], + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 9 + } + } + }, + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 9 + } + } + } + ], + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 9 + } + } +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test2.js b/javascript/extractor/parser-tests/jcorn-jsx/test2.js new file mode 100644 index 00000000000..c4c33b266ec --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test2.js @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test2.options.json b/javascript/extractor/parser-tests/jcorn-jsx/test2.options.json new file mode 100644 index 00000000000..06a716ad2dd --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test2.options.json @@ -0,0 +1,3 @@ +{ + "allowNamespacedObjects": true +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test20.ast b/javascript/extractor/parser-tests/jcorn-jsx/test20.ast new file mode 100644 index 00000000000..f96d197033d --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test20.ast @@ -0,0 +1,224 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXMemberExpression", + "object": { + "type": "JSXMemberExpression", + "object": { + "type": "JSXIdentifier", + "name": "a", + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 2, + "offset": 2 + } + } + }, + "property": { + "type": "JSXIdentifier", + "name": "b", + "loc": { + "start": { + "line": 1, + "column": 3, + "offset": 3 + }, + "end": { + "line": 1, + "column": 4, + "offset": 4 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 4, + "offset": 4 + } + } + }, + "property": { + "type": "JSXIdentifier", + "name": "c", + "loc": { + "start": { + "line": 1, + "column": 5, + "offset": 5 + }, + "end": { + "line": 1, + "column": 6, + "offset": 6 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 6, + "offset": 6 + } + } + }, + "selfClosing": false, + "attributes": [], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 7, + "offset": 7 + } + } + }, + "closingElement": { + "type": "JSXClosingElement", + "name": { + "type": "JSXMemberExpression", + "object": { + "type": "JSXMemberExpression", + "object": { + "type": "JSXIdentifier", + "name": "a", + "loc": { + "start": { + "line": 1, + "column": 9, + "offset": 9 + }, + "end": { + "line": 1, + "column": 10, + "offset": 10 + } + } + }, + "property": { + "type": "JSXIdentifier", + "name": "b", + "loc": { + "start": { + "line": 1, + "column": 11, + "offset": 11 + }, + "end": { + "line": 1, + "column": 12, + "offset": 12 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 9, + "offset": 9 + }, + "end": { + "line": 1, + "column": 12, + "offset": 12 + } + } + }, + "property": { + "type": "JSXIdentifier", + "name": "c", + "loc": { + "start": { + "line": 1, + "column": 13, + "offset": 13 + }, + "end": { + "line": 1, + "column": 14, + "offset": 14 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 9, + "offset": 9 + }, + "end": { + "line": 1, + "column": 14, + "offset": 14 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 7, + "offset": 7 + }, + "end": { + "line": 1, + "column": 15, + "offset": 15 + } + } + }, + "children": [], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 15, + "offset": 15 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 15, + "offset": 15 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test20.js b/javascript/extractor/parser-tests/jcorn-jsx/test20.js new file mode 100644 index 00000000000..7a7ec287120 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test20.js @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test21.ast b/javascript/extractor/parser-tests/jcorn-jsx/test21.ast new file mode 100644 index 00000000000..877c3d1fe73 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test21.ast @@ -0,0 +1,102 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "BinaryExpression", + "operator": "<", + "left": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "div", + "loc": { + "start": { + "line": 1, + "column": 2, + "offset": 2 + }, + "end": { + "line": 1, + "column": 5, + "offset": 5 + } + } + }, + "selfClosing": true, + "attributes": [], + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 8, + "offset": 8 + } + } + }, + "closingElement": null, + "children": [], + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 8, + "offset": 8 + } + } + }, + "right": { + "type": "Identifier", + "name": "x", + "loc": { + "start": { + "line": 1, + "column": 12, + "offset": 12 + }, + "end": { + "line": 1, + "column": 13, + "offset": 13 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 13, + "offset": 13 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 14, + "offset": 14 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test21.js b/javascript/extractor/parser-tests/jcorn-jsx/test21.js new file mode 100644 index 00000000000..d2b62355252 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test21.js @@ -0,0 +1 @@ +(
) < x; \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test22.ast b/javascript/extractor/parser-tests/jcorn-jsx/test22.ast new file mode 100644 index 00000000000..3415e997820 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test22.ast @@ -0,0 +1,102 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "div", + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 4, + "offset": 4 + } + } + }, + "selfClosing": true, + "attributes": [ + { + "type": "JSXSpreadAttribute", + "argument": { + "type": "Identifier", + "name": "props", + "loc": { + "start": { + "line": 1, + "column": 9, + "offset": 9 + }, + "end": { + "line": 1, + "column": 14, + "offset": 14 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 5, + "offset": 5 + }, + "end": { + "line": 1, + "column": 15, + "offset": 15 + } + } + } + ], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 18, + "offset": 18 + } + } + }, + "closingElement": null, + "children": [], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 18, + "offset": 18 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 18, + "offset": 18 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test22.js b/javascript/extractor/parser-tests/jcorn-jsx/test22.js new file mode 100644 index 00000000000..cf6e594c5ba --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test22.js @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test23.ast b/javascript/extractor/parser-tests/jcorn-jsx/test23.ast new file mode 100644 index 00000000000..af929e21821 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test23.ast @@ -0,0 +1,150 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "div", + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 4, + "offset": 4 + } + } + }, + "selfClosing": true, + "attributes": [ + { + "type": "JSXSpreadAttribute", + "argument": { + "type": "Identifier", + "name": "props", + "loc": { + "start": { + "line": 1, + "column": 9, + "offset": 9 + }, + "end": { + "line": 1, + "column": 14, + "offset": 14 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 5, + "offset": 5 + }, + "end": { + "line": 1, + "column": 15, + "offset": 15 + } + } + }, + { + "type": "JSXAttribute", + "name": { + "type": "JSXIdentifier", + "name": "post", + "loc": { + "start": { + "line": 1, + "column": 16, + "offset": 16 + }, + "end": { + "line": 1, + "column": 20, + "offset": 20 + } + } + }, + "value": { + "type": "Literal", + "value": "attribute", + "raw": "\"attribute\"", + "loc": { + "start": { + "line": 1, + "column": 21, + "offset": 21 + }, + "end": { + "line": 1, + "column": 32, + "offset": 32 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 16, + "offset": 16 + }, + "end": { + "line": 1, + "column": 32, + "offset": 32 + } + } + } + ], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 35, + "offset": 35 + } + } + }, + "closingElement": null, + "children": [], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 35, + "offset": 35 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 35, + "offset": 35 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test23.js b/javascript/extractor/parser-tests/jcorn-jsx/test23.js new file mode 100644 index 00000000000..2433a195ef3 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test23.js @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test24.ast b/javascript/extractor/parser-tests/jcorn-jsx/test24.ast new file mode 100644 index 00000000000..b6673f1ce51 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test24.ast @@ -0,0 +1,228 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "div", + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 4, + "offset": 4 + } + } + }, + "selfClosing": false, + "attributes": [ + { + "type": "JSXAttribute", + "name": { + "type": "JSXIdentifier", + "name": "pre", + "loc": { + "start": { + "line": 1, + "column": 5, + "offset": 5 + }, + "end": { + "line": 1, + "column": 8, + "offset": 8 + } + } + }, + "value": { + "type": "Literal", + "value": "leading", + "raw": "\"leading\"", + "loc": { + "start": { + "line": 1, + "column": 9, + "offset": 9 + }, + "end": { + "line": 1, + "column": 18, + "offset": 18 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 5, + "offset": 5 + }, + "end": { + "line": 1, + "column": 18, + "offset": 18 + } + } + }, + { + "type": "JSXAttribute", + "name": { + "type": "JSXIdentifier", + "name": "pre2", + "loc": { + "start": { + "line": 1, + "column": 19, + "offset": 19 + }, + "end": { + "line": 1, + "column": 23, + "offset": 23 + } + } + }, + "value": { + "type": "Literal", + "value": "attribute", + "raw": "\"attribute\"", + "loc": { + "start": { + "line": 1, + "column": 24, + "offset": 24 + }, + "end": { + "line": 1, + "column": 35, + "offset": 35 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 19, + "offset": 19 + }, + "end": { + "line": 1, + "column": 35, + "offset": 35 + } + } + }, + { + "type": "JSXSpreadAttribute", + "argument": { + "type": "Identifier", + "name": "props", + "loc": { + "start": { + "line": 1, + "column": 40, + "offset": 40 + }, + "end": { + "line": 1, + "column": 45, + "offset": 45 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 36, + "offset": 36 + }, + "end": { + "line": 1, + "column": 46, + "offset": 46 + } + } + } + ], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 47, + "offset": 47 + } + } + }, + "closingElement": { + "type": "JSXClosingElement", + "name": { + "type": "JSXIdentifier", + "name": "div", + "loc": { + "start": { + "line": 1, + "column": 49, + "offset": 49 + }, + "end": { + "line": 1, + "column": 52, + "offset": 52 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 47, + "offset": 47 + }, + "end": { + "line": 1, + "column": 53, + "offset": 53 + } + } + }, + "children": [], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 53, + "offset": 53 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 53, + "offset": 53 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test24.js b/javascript/extractor/parser-tests/jcorn-jsx/test24.js new file mode 100644 index 00000000000..db9fd5598d4 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test24.js @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test25.ast b/javascript/extractor/parser-tests/jcorn-jsx/test25.ast new file mode 100644 index 00000000000..663a51b4c50 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test25.ast @@ -0,0 +1,498 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 52, + "offset": 52 + } + }, + "expression": { + "type": "JSXElement", + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 52, + "offset": 52 + } + }, + "openingElement": { + "type": "JSXOpeningElement", + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 31, + "offset": 31 + } + }, + "attributes": [ + { + "type": "JSXAttribute", + "loc": { + "start": { + "line": 1, + "column": 3, + "offset": 3 + }, + "end": { + "line": 1, + "column": 16, + "offset": 16 + } + }, + "name": { + "type": "JSXIdentifier", + "loc": { + "start": { + "line": 1, + "column": 3, + "offset": 3 + }, + "end": { + "line": 1, + "column": 5, + "offset": 5 + } + }, + "name": "aa" + }, + "value": { + "type": "JSXExpressionContainer", + "loc": { + "start": { + "line": 1, + "column": 6, + "offset": 6 + }, + "end": { + "line": 1, + "column": 16, + "offset": 16 + } + }, + "expression": { + "type": "MemberExpression", + "loc": { + "start": { + "line": 1, + "column": 7, + "offset": 7 + }, + "end": { + "line": 1, + "column": 15, + "offset": 15 + } + }, + "object": { + "type": "MemberExpression", + "loc": { + "start": { + "line": 1, + "column": 7, + "offset": 7 + }, + "end": { + "line": 1, + "column": 12, + "offset": 12 + } + }, + "object": { + "type": "Identifier", + "loc": { + "start": { + "line": 1, + "column": 7, + "offset": 7 + }, + "end": { + "line": 1, + "column": 9, + "offset": 9 + } + }, + "name": "aa" + }, + "property": { + "type": "Identifier", + "loc": { + "start": { + "line": 1, + "column": 10, + "offset": 10 + }, + "end": { + "line": 1, + "column": 12, + "offset": 12 + } + }, + "name": "bb" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "loc": { + "start": { + "line": 1, + "column": 13, + "offset": 13 + }, + "end": { + "line": 1, + "column": 15, + "offset": 15 + } + }, + "name": "cc" + }, + "computed": false + } + } + }, + { + "type": "JSXAttribute", + "loc": { + "start": { + "line": 1, + "column": 17, + "offset": 17 + }, + "end": { + "line": 1, + "column": 30, + "offset": 30 + } + }, + "name": { + "type": "JSXIdentifier", + "loc": { + "start": { + "line": 1, + "column": 17, + "offset": 17 + }, + "end": { + "line": 1, + "column": 19, + "offset": 19 + } + }, + "name": "bb" + }, + "value": { + "type": "JSXExpressionContainer", + "loc": { + "start": { + "line": 1, + "column": 20, + "offset": 20 + }, + "end": { + "line": 1, + "column": 30, + "offset": 30 + } + }, + "expression": { + "type": "MemberExpression", + "loc": { + "start": { + "line": 1, + "column": 21, + "offset": 21 + }, + "end": { + "line": 1, + "column": 29, + "offset": 29 + } + }, + "object": { + "type": "MemberExpression", + "loc": { + "start": { + "line": 1, + "column": 21, + "offset": 21 + }, + "end": { + "line": 1, + "column": 26, + "offset": 26 + } + }, + "object": { + "type": "Identifier", + "loc": { + "start": { + "line": 1, + "column": 21, + "offset": 21 + }, + "end": { + "line": 1, + "column": 23, + "offset": 23 + } + }, + "name": "bb" + }, + "property": { + "type": "Identifier", + "loc": { + "start": { + "line": 1, + "column": 24, + "offset": 24 + }, + "end": { + "line": 1, + "column": 26, + "offset": 26 + } + }, + "name": "cc" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "loc": { + "start": { + "line": 1, + "column": 27, + "offset": 27 + }, + "end": { + "line": 1, + "column": 29, + "offset": 29 + } + }, + "name": "dd" + }, + "computed": false + } + } + } + ], + "name": { + "type": "JSXIdentifier", + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 2, + "offset": 2 + } + }, + "name": "A" + }, + "selfClosing": false + }, + "closingElement": { + "type": "JSXClosingElement", + "loc": { + "start": { + "line": 1, + "column": 48, + "offset": 48 + }, + "end": { + "line": 1, + "column": 52, + "offset": 52 + } + }, + "name": { + "type": "JSXIdentifier", + "loc": { + "start": { + "line": 1, + "column": 50, + "offset": 50 + }, + "end": { + "line": 1, + "column": 51, + "offset": 51 + } + }, + "name": "A" + } + }, + "children": [ + { + "type": "JSXElement", + "loc": { + "start": { + "line": 1, + "column": 31, + "offset": 31 + }, + "end": { + "line": 1, + "column": 48, + "offset": 48 + } + }, + "openingElement": { + "type": "JSXOpeningElement", + "loc": { + "start": { + "line": 1, + "column": 31, + "offset": 31 + }, + "end": { + "line": 1, + "column": 36, + "offset": 36 + } + }, + "attributes": [], + "name": { + "type": "JSXIdentifier", + "loc": { + "start": { + "line": 1, + "column": 32, + "offset": 32 + }, + "end": { + "line": 1, + "column": 35, + "offset": 35 + } + }, + "name": "div" + }, + "selfClosing": false + }, + "closingElement": { + "type": "JSXClosingElement", + "loc": { + "start": { + "line": 1, + "column": 42, + "offset": 42 + }, + "end": { + "line": 1, + "column": 48, + "offset": 48 + } + }, + "name": { + "type": "JSXIdentifier", + "loc": { + "start": { + "line": 1, + "column": 44, + "offset": 44 + }, + "end": { + "line": 1, + "column": 47, + "offset": 47 + } + }, + "name": "div" + } + }, + "children": [ + { + "type": "JSXExpressionContainer", + "loc": { + "start": { + "line": 1, + "column": 36, + "offset": 36 + }, + "end": { + "line": 1, + "column": 42, + "offset": 42 + } + }, + "expression": { + "type": "MemberExpression", + "loc": { + "start": { + "line": 1, + "column": 37, + "offset": 37 + }, + "end": { + "line": 1, + "column": 41, + "offset": 41 + } + }, + "object": { + "type": "Identifier", + "loc": { + "start": { + "line": 1, + "column": 37, + "offset": 37 + }, + "end": { + "line": 1, + "column": 39, + "offset": 39 + } + }, + "name": "aa" + }, + "property": { + "type": "Identifier", + "loc": { + "start": { + "line": 1, + "column": 40, + "offset": 40 + }, + "end": { + "line": 1, + "column": 41, + "offset": 41 + } + }, + "name": "b" + }, + "computed": false + } + } + ] + } + ] + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test25.js b/javascript/extractor/parser-tests/jcorn-jsx/test25.js new file mode 100644 index 00000000000..5ad7edf2bce --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test25.js @@ -0,0 +1 @@ +
{aa.b}
\ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test26.ast b/javascript/extractor/parser-tests/jcorn-jsx/test26.ast new file mode 100644 index 00000000000..ea7b33780e3 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test26.ast @@ -0,0 +1,214 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "attributes": [], + "name": { + "type": "JSXIdentifier", + "name": "p", + "loc": { + "start": { + "offset": 1 + }, + "end": { + "offset": 2 + } + } + }, + "selfClosing": false, + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 3 + } + } + }, + "closingElement": { + "type": "JSXClosingElement", + "name": { + "type": "JSXIdentifier", + "name": "p", + "loc": { + "start": { + "offset": 36 + }, + "end": { + "offset": 37 + } + } + }, + "loc": { + "start": { + "offset": 34 + }, + "end": { + "offset": 38 + } + } + }, + "children": [ + { + "type": "Literal", + "value": "foo ", + "raw": "foo ", + "loc": { + "start": { + "offset": 3 + }, + "end": { + "offset": 7 + } + } + }, + { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "attributes": [ + { + "type": "JSXAttribute", + "name": { + "type": "JSXIdentifier", + "name": "href", + "loc": { + "start": { + "offset": 10 + }, + "end": { + "offset": 14 + } + } + }, + "value": { + "type": "Literal", + "value": "test", + "raw": "\"test\"", + "loc": { + "start": { + "offset": 15 + }, + "end": { + "offset": 21 + } + } + }, + "loc": { + "start": { + "offset": 10 + }, + "end": { + "offset": 21 + } + } + } + ], + "name": { + "type": "JSXIdentifier", + "name": "a", + "loc": { + "start": { + "offset": 8 + }, + "end": { + "offset": 9 + } + } + }, + "selfClosing": false, + "loc": { + "start": { + "offset": 7 + }, + "end": { + "offset": 22 + } + } + }, + "closingElement": { + "type": "JSXClosingElement", + "name": { + "type": "JSXIdentifier", + "name": "a", + "loc": { + "start": { + "offset": 28 + }, + "end": { + "offset": 29 + } + } + }, + "loc": { + "start": { + "offset": 26 + }, + "end": { + "offset": 30 + } + } + }, + "children": [ + { + "type": "Literal", + "value": " bar", + "raw": " bar", + "loc": { + "start": { + "offset": 22 + }, + "end": { + "offset": 26 + } + } + } + ], + "loc": { + "start": { + "offset": 7 + }, + "end": { + "offset": 30 + } + } + }, + { + "type": "Literal", + "value": " baz", + "raw": " baz", + "loc": { + "start": { + "offset": 30 + }, + "end": { + "offset": 34 + } + } + } + ], + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 38 + } + } + }, + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 40 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test26.js b/javascript/extractor/parser-tests/jcorn-jsx/test26.js new file mode 100644 index 00000000000..49bad1a3151 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test26.js @@ -0,0 +1 @@ +

foo bar baz

; \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test27.ast b/javascript/extractor/parser-tests/jcorn-jsx/test27.ast new file mode 100644 index 00000000000..81950d3ed09 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test27.ast @@ -0,0 +1,150 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "attributes": [], + "name": { + "type": "JSXIdentifier", + "name": "div", + "loc": { + "start": { + "offset": 1 + }, + "end": { + "offset": 4 + } + } + }, + "selfClosing": false, + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 5 + } + } + }, + "closingElement": { + "type": "JSXClosingElement", + "name": { + "type": "JSXIdentifier", + "name": "div", + "loc": { + "start": { + "offset": 26 + }, + "end": { + "offset": 29 + } + } + }, + "loc": { + "start": { + "offset": 24 + }, + "end": { + "offset": 30 + } + } + }, + "children": [ + { + "type": "JSXExpressionContainer", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "attributes": [ + { + "type": "JSXSpreadAttribute", + "argument": { + "type": "Identifier", + "name": "test", + "loc": { + "start": { + "offset": 15 + }, + "end": { + "offset": 19 + } + } + }, + "loc": { + "start": { + "offset": 11 + }, + "end": { + "offset": 20 + } + } + } + ], + "name": { + "type": "JSXIdentifier", + "name": "div", + "loc": { + "start": { + "offset": 7 + }, + "end": { + "offset": 10 + } + } + }, + "selfClosing": true, + "loc": { + "start": { + "offset": 6 + }, + "end": { + "offset": 23 + } + } + }, + "closingElement": null, + "children": [], + "loc": { + "start": { + "offset": 6 + }, + "end": { + "offset": 23 + } + } + }, + "loc": { + "start": { + "offset": 5 + }, + "end": { + "offset": 24 + } + } + } + ], + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 30 + } + } + }, + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 30 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test27.js b/javascript/extractor/parser-tests/jcorn-jsx/test27.js new file mode 100644 index 00000000000..7c6ab997542 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test27.js @@ -0,0 +1 @@ +
{
}
\ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test28.ast b/javascript/extractor/parser-tests/jcorn-jsx/test28.ast new file mode 100644 index 00000000000..cb0a8cbfd58 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test28.ast @@ -0,0 +1,140 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "attributes": [], + "name": { + "type": "JSXIdentifier", + "name": "div", + "loc": { + "start": { + "offset": 1 + }, + "end": { + "offset": 4 + } + } + }, + "selfClosing": false, + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 5 + } + } + }, + "closingElement": { + "type": "JSXClosingElement", + "name": { + "type": "JSXIdentifier", + "name": "div", + "loc": { + "start": { + "offset": 14 + }, + "end": { + "offset": 17 + } + } + }, + "loc": { + "start": { + "offset": 12 + }, + "end": { + "offset": 18 + } + } + }, + "children": [ + { + "type": "JSXExpressionContainer", + "expression": { + "type": "ObjectExpression", + "properties": [ + { + "type": "Property", + "method": false, + "shorthand": true, + "computed": false, + "key": { + "type": "Identifier", + "name": "a", + "loc": { + "start": { + "offset": 8 + }, + "end": { + "offset": 9 + } + } + }, + "kind": "init", + "value": { + "type": "Identifier", + "name": "a", + "loc": { + "start": { + "offset": 8 + }, + "end": { + "offset": 9 + } + } + }, + "loc": { + "start": { + "offset": 8 + }, + "end": { + "offset": 9 + } + } + } + ], + "loc": { + "start": { + "offset": 7 + }, + "end": { + "offset": 10 + } + } + }, + "loc": { + "start": { + "offset": 5 + }, + "end": { + "offset": 12 + } + } + } + ], + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 18 + } + } + }, + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 18 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test28.js b/javascript/extractor/parser-tests/jcorn-jsx/test28.js new file mode 100644 index 00000000000..a363c43740e --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test28.js @@ -0,0 +1 @@ +
{ {a} }
\ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test29.ast b/javascript/extractor/parser-tests/jcorn-jsx/test29.ast new file mode 100644 index 00000000000..1ab2f9f175d --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test29.ast @@ -0,0 +1,90 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "attributes": [], + "name": { + "type": "JSXIdentifier", + "name": "div", + "loc": { + "start": { + "offset": 1 + }, + "end": { + "offset": 4 + } + } + }, + "selfClosing": false, + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 5 + } + } + }, + "closingElement": { + "type": "JSXClosingElement", + "name": { + "type": "JSXIdentifier", + "name": "div", + "loc": { + "start": { + "offset": 12 + }, + "end": { + "offset": 15 + } + } + }, + "loc": { + "start": { + "offset": 10 + }, + "end": { + "offset": 16 + } + } + }, + "children": [ + { + "type": "Literal", + "value": "/text", + "raw": "/text", + "loc": { + "start": { + "offset": 5 + }, + "end": { + "offset": 10 + } + } + } + ], + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 16 + } + } + }, + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 16 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test29.js b/javascript/extractor/parser-tests/jcorn-jsx/test29.js new file mode 100644 index 00000000000..c9aae5b876f --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test29.js @@ -0,0 +1 @@ +
/text
\ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test3.fail b/javascript/extractor/parser-tests/jcorn-jsx/test3.fail new file mode 100644 index 00000000000..941a0ccde0e --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test3.fail @@ -0,0 +1 @@ +Unexpected token (1:3) \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test3.js b/javascript/extractor/parser-tests/jcorn-jsx/test3.js new file mode 100644 index 00000000000..625c525413b --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test3.js @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test3.options.json b/javascript/extractor/parser-tests/jcorn-jsx/test3.options.json new file mode 100644 index 00000000000..05026610ef5 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test3.options.json @@ -0,0 +1,3 @@ +{ + "allowNamespaces": false +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test30.ast b/javascript/extractor/parser-tests/jcorn-jsx/test30.ast new file mode 100644 index 00000000000..85170abbc4c --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test30.ast @@ -0,0 +1,139 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "attributes": [], + "name": { + "type": "JSXIdentifier", + "name": "div", + "loc": { + "start": { + "offset": 1 + }, + "end": { + "offset": 4 + } + } + }, + "selfClosing": false, + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 5 + } + } + }, + "closingElement": { + "type": "JSXClosingElement", + "name": { + "type": "JSXIdentifier", + "name": "div", + "loc": { + "start": { + "offset": 13 + }, + "end": { + "offset": 16 + } + } + }, + "loc": { + "start": { + "offset": 11 + }, + "end": { + "offset": 17 + } + } + }, + "children": [ + { + "type": "JSXExpressionContainer", + "expression": { + "type": "Identifier", + "name": "a", + "loc": { + "start": { + "line": 1, + "column": 6, + "offset": 6 + }, + "end": { + "line": 1, + "column": 7, + "offset": 7 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 5, + "offset": 5 + }, + "end": { + "line": 1, + "column": 8, + "offset": 8 + } + } + }, + { + "type": "JSXExpressionContainer", + "expression": { + "type": "Identifier", + "name": "b", + "loc": { + "start": { + "line": 1, + "column": 9, + "offset": 9 + }, + "end": { + "line": 1, + "column": 10, + "offset": 10 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 8, + "offset": 8 + }, + "end": { + "line": 1, + "column": 11, + "offset": 11 + } + } + } + ], + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 17 + } + } + }, + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 17 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test30.js b/javascript/extractor/parser-tests/jcorn-jsx/test30.js new file mode 100644 index 00000000000..8901087ff83 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test30.js @@ -0,0 +1 @@ +
{a}{b}
\ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test31.ast b/javascript/extractor/parser-tests/jcorn-jsx/test31.ast new file mode 100644 index 00000000000..9cb660b580e --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test31.ast @@ -0,0 +1,113 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "attributes": [ + { + "type": "JSXAttribute", + "name": { + "type": "JSXIdentifier", + "name": "pre", + "loc": { + "start": { + "offset": 5 + }, + "end": { + "offset": 8 + } + } + }, + "value": { + "type": "Literal", + "value": "leading", + "loc": { + "start": { + "offset": 9 + }, + "end": { + "offset": 18 + } + } + }, + "loc": { + "start": { + "offset": 5 + }, + "end": { + "offset": 18 + } + } + }, + { + "type": "JSXSpreadAttribute", + "argument": { + "type": "Identifier", + "name": "props", + "loc": { + "start": { + "offset": 23 + }, + "end": { + "offset": 28 + } + } + }, + "loc": { + "start": { + "offset": 19 + }, + "end": { + "offset": 29 + } + } + } + ], + "name": { + "type": "JSXIdentifier", + "name": "div", + "loc": { + "start": { + "offset": 1 + }, + "end": { + "offset": 4 + } + } + }, + "selfClosing": true, + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 32 + } + } + }, + "closingElement": null, + "children": [], + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 32 + } + } + }, + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 32 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test31.js b/javascript/extractor/parser-tests/jcorn-jsx/test31.js new file mode 100644 index 00000000000..2d3ea96f9d7 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test31.js @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test32.ast b/javascript/extractor/parser-tests/jcorn-jsx/test32.ast new file mode 100644 index 00000000000..26636973e04 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test32.ast @@ -0,0 +1,87 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "attributes": [ + { + "type": "JSXAttribute", + "name": { + "type": "JSXIdentifier", + "name": "d", + "loc": { + "start": { + "offset": 6 + }, + "end": { + "offset": 7 + } + } + }, + "value": { + "type": "Literal", + "loc": { + "start": { + "line": 1, + "column": 8, + "offset": 8 + }, + "end": { + "line": 3, + "column": 15, + "offset": 61 + } + }, + "value": "M230 80\n\t\tA 45 45, 0, 1, 0, 275 125 \n L 275 80 Z", + "raw": "\"M230 80\n\t\tA 45 45, 0, 1, 0, 275 125 \n L 275 80 Z\"" + }, + "loc": { + "start": { + "offset": 6 + }, + "end": { + "offset": 61 + } + } + } + ], + "name": { + "type": "JSXIdentifier", + "name": "path", + "loc": { + "start": { + "offset": 1 + }, + "end": { + "offset": 5 + } + } + }, + "selfClosing": true, + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 63 + } + } + }, + "closingElement": null, + "children": [], + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 63 + } + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test32.js b/javascript/extractor/parser-tests/jcorn-jsx/test32.js new file mode 100644 index 00000000000..3d5ffc59b41 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test32.js @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test4.fail b/javascript/extractor/parser-tests/jcorn-jsx/test4.fail new file mode 100644 index 00000000000..a1010e7bbec --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test4.fail @@ -0,0 +1 @@ +Unexpected token (1:7) \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test4.js b/javascript/extractor/parser-tests/jcorn-jsx/test4.js new file mode 100644 index 00000000000..732c2ce2ea5 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test4.js @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test4.options.json b/javascript/extractor/parser-tests/jcorn-jsx/test4.options.json new file mode 100644 index 00000000000..05026610ef5 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test4.options.json @@ -0,0 +1,3 @@ +{ + "allowNamespaces": false +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test5.ast b/javascript/extractor/parser-tests/jcorn-jsx/test5.ast new file mode 100644 index 00000000000..9e26dfeeb6e --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test5.ast @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test5.js b/javascript/extractor/parser-tests/jcorn-jsx/test5.js new file mode 100644 index 00000000000..bf2cee5e8f8 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test5.js @@ -0,0 +1 @@ +{/* foo */} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test6.ast b/javascript/extractor/parser-tests/jcorn-jsx/test6.ast new file mode 100644 index 00000000000..4b3d9f57666 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test6.ast @@ -0,0 +1,70 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "a", + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 2, + "offset": 2 + } + } + }, + "selfClosing": true, + "attributes": [], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 5, + "offset": 5 + } + } + }, + "closingElement": null, + "children": [], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 5, + "offset": 5 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 5, + "offset": 5 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test6.js b/javascript/extractor/parser-tests/jcorn-jsx/test6.js new file mode 100644 index 00000000000..4a122352180 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test6.js @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test7.ast b/javascript/extractor/parser-tests/jcorn-jsx/test7.ast new file mode 100644 index 00000000000..6dfd1856702 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test7.ast @@ -0,0 +1,165 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXNamespacedName", + "namespace": { + "type": "JSXIdentifier", + "name": "n", + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 2, + "offset": 2 + } + } + }, + "name": { + "type": "JSXIdentifier", + "name": "a", + "loc": { + "start": { + "line": 1, + "column": 3, + "offset": 3 + }, + "end": { + "line": 1, + "column": 4, + "offset": 4 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 4, + "offset": 4 + } + } + }, + "selfClosing": true, + "attributes": [ + { + "type": "JSXAttribute", + "name": { + "type": "JSXNamespacedName", + "namespace": { + "type": "JSXIdentifier", + "name": "n", + "loc": { + "start": { + "line": 1, + "column": 5, + "offset": 5 + }, + "end": { + "line": 1, + "column": 6, + "offset": 6 + } + } + }, + "name": { + "type": "JSXIdentifier", + "name": "v", + "loc": { + "start": { + "line": 1, + "column": 7, + "offset": 7 + }, + "end": { + "line": 1, + "column": 8, + "offset": 8 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 5, + "offset": 5 + }, + "end": { + "line": 1, + "column": 8, + "offset": 8 + } + } + }, + "value": null, + "loc": { + "start": { + "line": 1, + "column": 5, + "offset": 5 + }, + "end": { + "line": 1, + "column": 8, + "offset": 8 + } + } + } + ], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 11, + "offset": 11 + } + } + }, + "closingElement": null, + "children": [], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 11, + "offset": 11 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 11, + "offset": 11 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test7.js b/javascript/extractor/parser-tests/jcorn-jsx/test7.js new file mode 100644 index 00000000000..24fde5faa42 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test7.js @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test8.ast b/javascript/extractor/parser-tests/jcorn-jsx/test8.ast new file mode 100644 index 00000000000..e74892f8083 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test8.ast @@ -0,0 +1,377 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "a", + "loc": { + "start": { + "line": 1, + "column": 1, + "offset": 1 + }, + "end": { + "line": 1, + "column": 2, + "offset": 2 + } + } + }, + "selfClosing": false, + "attributes": [ + { + "type": "JSXAttribute", + "name": { + "type": "JSXNamespacedName", + "namespace": { + "type": "JSXIdentifier", + "name": "n", + "loc": { + "start": { + "line": 1, + "column": 3, + "offset": 3 + }, + "end": { + "line": 1, + "column": 4, + "offset": 4 + } + } + }, + "name": { + "type": "JSXIdentifier", + "name": "foo", + "loc": { + "start": { + "line": 1, + "column": 5, + "offset": 5 + }, + "end": { + "line": 1, + "column": 8, + "offset": 8 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 3, + "offset": 3 + }, + "end": { + "line": 1, + "column": 8, + "offset": 8 + } + } + }, + "value": { + "type": "Literal", + "value": "bar", + "raw": "\"bar\"", + "loc": { + "start": { + "line": 1, + "column": 9, + "offset": 9 + }, + "end": { + "line": 1, + "column": 14, + "offset": 14 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 3, + "offset": 3 + }, + "end": { + "line": 1, + "column": 14, + "offset": 14 + } + } + } + ], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 15, + "offset": 15 + } + } + }, + "closingElement": { + "type": "JSXClosingElement", + "name": { + "type": "JSXIdentifier", + "name": "a", + "loc": { + "start": { + "line": 1, + "column": 38, + "offset": 38 + }, + "end": { + "line": 1, + "column": 39, + "offset": 39 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 36, + "offset": 36 + }, + "end": { + "line": 1, + "column": 40, + "offset": 40 + } + } + }, + "children": [ + { + "type": "Literal", + "value": " ", + "raw": " ", + "loc": { + "start": { + "line": 1, + "column": 15, + "offset": 15 + }, + "end": { + "line": 1, + "column": 16, + "offset": 16 + } + } + }, + { + "type": "JSXExpressionContainer", + "expression": { + "type": "Identifier", + "name": "value", + "loc": { + "start": { + "line": 1, + "column": 17, + "offset": 17 + }, + "end": { + "line": 1, + "column": 22, + "offset": 22 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 16, + "offset": 16 + }, + "end": { + "line": 1, + "column": 23, + "offset": 23 + } + } + }, + { + "type": "Literal", + "value": " ", + "raw": " ", + "loc": { + "start": { + "line": 1, + "column": 23, + "offset": 23 + }, + "end": { + "line": 1, + "column": 24, + "offset": 24 + } + } + }, + { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "b", + "loc": { + "start": { + "line": 1, + "column": 25, + "offset": 25 + }, + "end": { + "line": 1, + "column": 26, + "offset": 26 + } + } + }, + "selfClosing": false, + "attributes": [], + "loc": { + "start": { + "line": 1, + "column": 24, + "offset": 24 + }, + "end": { + "line": 1, + "column": 27, + "offset": 27 + } + } + }, + "closingElement": { + "type": "JSXClosingElement", + "name": { + "type": "JSXIdentifier", + "name": "b", + "loc": { + "start": { + "line": 1, + "column": 34, + "offset": 34 + }, + "end": { + "line": 1, + "column": 35, + "offset": 35 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 32, + "offset": 32 + }, + "end": { + "line": 1, + "column": 36, + "offset": 36 + } + } + }, + "children": [ + { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "c", + "loc": { + "start": { + "line": 1, + "column": 28, + "offset": 28 + }, + "end": { + "line": 1, + "column": 29, + "offset": 29 + } + } + }, + "selfClosing": true, + "attributes": [], + "loc": { + "start": { + "line": 1, + "column": 27, + "offset": 27 + }, + "end": { + "line": 1, + "column": 32, + "offset": 32 + } + } + }, + "closingElement": null, + "children": [], + "loc": { + "start": { + "line": 1, + "column": 27, + "offset": 27 + }, + "end": { + "line": 1, + "column": 32, + "offset": 32 + } + } + } + ], + "loc": { + "start": { + "line": 1, + "column": 24, + "offset": 24 + }, + "end": { + "line": 1, + "column": 36, + "offset": 36 + } + } + } + ], + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 40, + "offset": 40 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 0, + "offset": 0 + }, + "end": { + "line": 1, + "column": 40, + "offset": 40 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test8.js b/javascript/extractor/parser-tests/jcorn-jsx/test8.js new file mode 100644 index 00000000000..7f5a835341c --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test8.js @@ -0,0 +1 @@ + {value} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test9.ast b/javascript/extractor/parser-tests/jcorn-jsx/test9.ast new file mode 100644 index 00000000000..a76c9aef660 --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test9.ast @@ -0,0 +1,210 @@ +{ + "type": "Program", + "body": [ + { + "type": "ExpressionStatement", + "expression": { + "type": "JSXElement", + "openingElement": { + "type": "JSXOpeningElement", + "name": { + "type": "JSXIdentifier", + "name": "a", + "loc": { + "start": { + "offset": 1 + }, + "end": { + "offset": 2 + } + } + }, + "selfClosing": true, + "attributes": [ + { + "type": "JSXAttribute", + "name": { + "type": "JSXIdentifier", + "name": "b", + "loc": { + "start": { + "offset": 3 + }, + "end": { + "offset": 4 + } + } + }, + "value": { + "type": "JSXExpressionContainer", + "expression": { + "type": "Literal", + "value": " ", + "raw": "\" \"", + "loc": { + "start": { + "offset": 6 + }, + "end": { + "offset": 9 + } + } + }, + "loc": { + "start": { + "offset": 5 + }, + "end": { + "offset": 10 + } + } + }, + "loc": { + "start": { + "offset": 3 + }, + "end": { + "offset": 10 + } + } + }, + { + "type": "JSXAttribute", + "name": { + "type": "JSXIdentifier", + "name": "c", + "loc": { + "start": { + "offset": 11 + }, + "end": { + "offset": 12 + } + } + }, + "value": { + "type": "Literal", + "value": " ", + "raw": "\" \"", + "loc": { + "start": { + "offset": 13 + }, + "end": { + "offset": 16 + } + } + }, + "loc": { + "start": { + "offset": 11 + }, + "end": { + "offset": 16 + } + } + }, + { + "type": "JSXAttribute", + "name": { + "type": "JSXIdentifier", + "name": "d", + "loc": { + "start": { + "offset": 17 + }, + "end": { + "offset": 18 + } + } + }, + "value": { + "type": "Literal", + "value": "&", + "raw": "\"&\"", + "loc": { + "start": { + "offset": 19 + }, + "end": { + "offset": 26 + } + } + }, + "loc": { + "start": { + "offset": 17 + }, + "end": { + "offset": 26 + } + } + }, + { + "type": "JSXAttribute", + "name": { + "type": "JSXIdentifier", + "name": "e", + "loc": { + "start": { + "offset": 27 + }, + "end": { + "offset": 28 + } + } + }, + "value": { + "type": "Literal", + "value": "&r;", + "raw": "\"&r;\"", + "loc": { + "start": { + "offset": 29 + }, + "end": { + "offset": 37 + } + } + }, + "loc": { + "start": { + "offset": 27 + }, + "end": { + "offset": 37 + } + } + } + ], + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 40 + } + } + }, + "closingElement": null, + "children": [], + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 40 + } + } + }, + "loc": { + "start": { + "offset": 0 + }, + "end": { + "offset": 40 + } + } + } + ] +} \ No newline at end of file diff --git a/javascript/extractor/parser-tests/jcorn-jsx/test9.js b/javascript/extractor/parser-tests/jcorn-jsx/test9.js new file mode 100644 index 00000000000..c15044cc5ad --- /dev/null +++ b/javascript/extractor/parser-tests/jcorn-jsx/test9.js @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/javascript/extractor/parser-tests/robustness/letLookahead.js b/javascript/extractor/parser-tests/robustness/letLookahead.js new file mode 100644 index 00000000000..4c9354f0e6c --- /dev/null +++ b/javascript/extractor/parser-tests/robustness/letLookahead.js @@ -0,0 +1,505 @@ +let /* **/ x; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; +'0123456789'; diff --git a/javascript/extractor/src/com/semmle/jcorn/CustomParser.java b/javascript/extractor/src/com/semmle/jcorn/CustomParser.java new file mode 100644 index 00000000000..73aa3bad0b4 --- /dev/null +++ b/javascript/extractor/src/com/semmle/jcorn/CustomParser.java @@ -0,0 +1,323 @@ +package com.semmle.jcorn; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; + +import com.semmle.jcorn.flow.FlowParser; +import com.semmle.js.ast.ArrayExpression; +import com.semmle.js.ast.AssignmentExpression; +import com.semmle.js.ast.BlockStatement; +import com.semmle.js.ast.CallExpression; +import com.semmle.js.ast.CatchClause; +import com.semmle.js.ast.ComprehensionBlock; +import com.semmle.js.ast.ComprehensionExpression; +import com.semmle.js.ast.Expression; +import com.semmle.js.ast.ExpressionStatement; +import com.semmle.js.ast.ForInStatement; +import com.semmle.js.ast.FunctionDeclaration; +import com.semmle.js.ast.IFunction; +import com.semmle.js.ast.INode; +import com.semmle.js.ast.IPattern; +import com.semmle.js.ast.Identifier; +import com.semmle.js.ast.LetExpression; +import com.semmle.js.ast.LetStatement; +import com.semmle.js.ast.MemberExpression; +import com.semmle.js.ast.NewExpression; +import com.semmle.js.ast.Node; +import com.semmle.js.ast.Position; +import com.semmle.js.ast.SourceLocation; +import com.semmle.js.ast.Statement; +import com.semmle.js.ast.TryStatement; +import com.semmle.js.ast.VariableDeclaration; +import com.semmle.util.data.Pair; + +/** + * An extension of the standard jcorn parser with support for Mozilla-specific + * language extension (most of JavaScript 1.8.5) and JScript language extensions. + */ +public class CustomParser extends FlowParser { + public CustomParser(Options options, String input, int startPos) { + super(options, input, startPos); + + // recognise `const` as a keyword, irrespective of options.ecmaVersion + this.keywords.add("const"); + } + + // add parsing of guarded `catch` clauses + @Override + protected TryStatement parseTryStatement(Position startLoc) { + if (!options.mozExtensions()) + return super.parseTryStatement(startLoc); + + this.next(); + BlockStatement block = this.parseBlock(false); + CatchClause handler = null; + List guardedHandlers = new ArrayList(); + while (this.type == TokenType._catch) { + Position catchStartLoc = this.startLoc; + CatchClause katch = this.parseCatchClause(catchStartLoc); + if (handler != null) + this.raise(catchStartLoc, "Catch after unconditional catch"); + if (katch.getGuard() != null) + guardedHandlers.add(katch); + else + handler = katch; + } + BlockStatement finalizer = this.eat(TokenType._finally) ? this.parseBlock(false) : null; + if (handler == null && finalizer == null && guardedHandlers.isEmpty()) + this.raise(startLoc, "Missing catch or finally clause"); + return this.finishNode(new TryStatement(new SourceLocation(startLoc), block, handler, guardedHandlers, finalizer)); + } + + /* + * Support for guarded `catch` clauses and omitted catch bindings. + */ + @Override + protected CatchClause parseCatchClause(Position startLoc) { + if (!options.mozExtensions()) + return super.parseCatchClause(startLoc); + + this.next(); + Expression param = null; + Expression guard = null; + if (this.eat(TokenType.parenL)) { + param = this.parseBindingAtom(); + this.checkLVal(param, true, null); + if (this.eat(TokenType._if)) + guard = this.parseExpression(false, null); + this.expect(TokenType.parenR); + } else if (!options.esnext()) { + this.unexpected(); + } + BlockStatement catchBody = this.parseBlock(false); + return this.finishNode(new CatchClause(new SourceLocation(startLoc), (IPattern)param, guard, catchBody)); + } + + // add parsing of `let` statements and expressions + @Override + protected boolean mayFollowLet(int c) { + return options.mozExtensions() && c == '(' || super.mayFollowLet(c); + } + + @Override + protected Statement parseVarStatement(Position startLoc, String kind) { + if (!options.mozExtensions()) + return super.parseVarStatement(startLoc, kind); + + this.next(); + + if ("let".equals(kind) && this.eat(TokenType.parenL)) { + // this is a `let` statement or expression + return (LetStatement) this.parseLetExpression(startLoc, true); + } + + VariableDeclaration node = this.parseVar(startLoc, false, kind); + this.semicolon(); + return this.finishNode(node); + } + + @Override + protected Expression parseExprAtom(DestructuringErrors refDestructuringErrors) { + Position startLoc = this.startLoc; + if (options.mozExtensions() && this.isContextual("let")) { + this.next(); + this.expect(TokenType.parenL); + return (Expression) this.parseLetExpression(startLoc, false); + } else if (options.mozExtensions() && this.type == TokenType.bracketL) { + this.next(); + // check whether this is array comprehension or regular array + if (this.type == TokenType._for) { + return (Expression) this.parseComprehension(startLoc, false, null); + } + List elements; + if (this.type == TokenType.comma || this.type == TokenType.bracketR || + this.type == TokenType.ellipsis) { + elements = this.parseExprList(TokenType.bracketR, true, true, refDestructuringErrors); + } else { + Expression firstExpr = this.parseMaybeAssign(true, refDestructuringErrors, null); + // check whether this is a postfix array comprehension + if (this.type == TokenType._for || this.type == TokenType._if) { + return (Expression) this.parseComprehension(startLoc, false, firstExpr); + } else { + this.eat(TokenType.comma); + elements = new ArrayList(); + elements.add(firstExpr); + elements.addAll(this.parseExprList(TokenType.bracketR, true, true, refDestructuringErrors)); + } + } + return this.finishNode(new ArrayExpression(new SourceLocation(startLoc), elements)); + } else if (options.v8Extensions() && this.type == TokenType.modulo) { + // parse V8 native + this.next(); + Identifier name = this.parseIdent(true); + this.expect(TokenType.parenL); + List args = this.parseExprList(TokenType.parenR, false, false, null); + CallExpression node = new CallExpression(new SourceLocation(startLoc), name, new ArrayList<>(), args); + return this.finishNode(node); + } else { + return super.parseExprAtom(refDestructuringErrors); + } + } + + protected Node parseLetExpression(Position startLoc, boolean maybeStatement) { + // this method assumes that the keyword `let` and the opening parenthesis have already been + // consumed + VariableDeclaration decl = this.parseVar(startLoc, false, "let"); + this.expect(TokenType.parenR); + + if (this.type == TokenType.braceL) { + if (!maybeStatement) + this.unexpected(); + BlockStatement body = this.parseBlock(false); + return this.finishNode(new LetStatement(new SourceLocation(startLoc), decl.getDeclarations(), body)); + } else if (maybeStatement) { + Position pos = startLoc; + Statement body = this.parseStatement(true, false); + if (body == null) + this.unexpected(pos); + return this.finishNode(new LetStatement(new SourceLocation(startLoc), decl.getDeclarations(), body)); + } else { + Expression body = this.parseExpression(false, null); + return this.finishNode(new LetExpression(new SourceLocation(startLoc), decl.getDeclarations(), body)); + } + } + + // add parsing of expression closures and JScript methods + @Override + protected INode parseFunction(Position startLoc, boolean isStatement, boolean allowExpressionBody, boolean isAsync) { + if (isFunctionSent(isStatement)) + return super.parseFunction(startLoc, isStatement, allowExpressionBody, isAsync); + allowExpressionBody = allowExpressionBody || options.mozExtensions() && !isStatement; + boolean oldInGen = this.inGenerator, oldInAsync = this.inAsync; + int oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos; + Pair p = parseFunctionName(isStatement, isAsync); + boolean generator = p.fst(); + Identifier id = p.snd(), iface = null; + if (options.jscript()) { + if (isStatement && this.eatDoubleColon()) { + iface = p.snd(); + id = this.parseIdent(false); + } + } + IFunction result = parseFunctionRest(startLoc, isStatement, allowExpressionBody, oldInGen, oldInAsync, + oldYieldPos, oldAwaitPos, generator, id); + if (iface != null) { + /* Translate JScript double colon method declarations into normal method definitions: + * + * function A::f(...) { ... } + * + * becomes + * + * A.f = function f(...) { ... }; + */ + SourceLocation memloc = new SourceLocation(iface.getName() + "::" + id.getName(), iface.getLoc().getStart(), id.getLoc().getEnd()); + MemberExpression mem = new MemberExpression(memloc, iface, new Identifier(id.getLoc(), id.getName()), false); + AssignmentExpression assgn = new AssignmentExpression(result.getLoc(), "=", mem, ((FunctionDeclaration)result).asFunctionExpression()); + return new ExpressionStatement(result.getLoc(), assgn); + } + return result; + } + + private boolean eatDoubleColon() { + if (this.eat(TokenType.colon)) { + this.expect(TokenType.colon); + return true; + } else { + return this.eat(doubleColon); + } + } + + // accept `yield` in non-generator functions + @Override + protected Expression parseMaybeAssign(boolean noIn, + DestructuringErrors refDestructuringErrors, + AfterLeftParse afterLeftParse) { + if (options.mozExtensions() && isContextual("yield")) { + if (!this.inFunction) + this.raise(this.startLoc, "Yield not in function"); + return this.parseYield(); + } + return super.parseMaybeAssign(noIn, refDestructuringErrors, afterLeftParse); + } + + // add parsing of comprehensions + protected Node parseComprehension(Position startLoc, boolean isGenerator, Expression body) { + List blocks = new ArrayList(); + while (this.type == TokenType._for) { + SourceLocation blockStart = new SourceLocation(this.startLoc); + this.next(); + this.expect(TokenType.parenL); + Expression left = this.parseBindingAtom(); + this.checkLVal(left, true, null); + boolean of; + if (this.eatContextual("of")) { + of = true; + } else { + this.expect(TokenType._in); + of = false; + } + Expression right = this.parseExpression(false, null); + this.expect(TokenType.parenR); + blocks.add(this.finishNode(new ComprehensionBlock(blockStart, (IPattern)left, right, of))); + } + Expression filter = this.eat(TokenType._if) ? this.parseParenExpression() : null; + if (body == null) + body = this.parseExpression(false, null); + this.expect(isGenerator ? TokenType.parenR : TokenType.bracketR); + + return this.finishNode(new ComprehensionExpression(new SourceLocation(startLoc), body, blocks, filter, isGenerator)); + } + + @Override + protected Expression parseParenAndDistinguishExpression(boolean canBeArrow) { + if (options.mozExtensions()) { + // check whether next token is `for`, suggesting a generator comprehension + Position startLoc = this.startLoc; + Matcher m = Whitespace.skipWhiteSpace.matcher(this.input); + if (m.find(this.pos)) { + if (m.end()+3 < input.length() && + "for".equals(input.substring(m.end(), m.end()+3)) && + !Identifiers.isIdentifierChar(input.charAt(m.end()+3), true)) { + next(); + return (Expression) parseComprehension(startLoc, true, null); + } + } + } + + return super.parseParenAndDistinguishExpression(canBeArrow); + } + + // add parsing of for-each loops + @Override + protected Statement parseForStatement(Position startLoc) { + boolean each = false; + if (options.mozExtensions() && this.isContextual("each")) { + this.next(); + each = true; + } + Position afterEach = this.startLoc; + Statement result = super.parseForStatement(startLoc); + if (each) { + if (result instanceof ForInStatement) { + ForInStatement fis = (ForInStatement) result; + result = new ForInStatement(fis.getLoc(), fis.getLeft(), fis.getRight(), fis.getBody(), true); + } else { + raise(afterEach, "Bad for-each statement."); + } + } + return result; + } + + // add parsing of Rhino/Nashorn-style `new` expressions with last argument after `)` + @Override + protected Expression parseNew() { + Expression res = super.parseNew(); + if (res instanceof NewExpression && + options.mozExtensions() && !canInsertSemicolon() && this.type == TokenType.braceL) { + ((NewExpression) res).getArguments().add(this.parseObj(false, null)); + res = this.finishNode(res); + } + return res; + } +} diff --git a/javascript/extractor/src/com/semmle/jcorn/ESNextParser.java b/javascript/extractor/src/com/semmle/jcorn/ESNextParser.java new file mode 100644 index 00000000000..a11293ca05f --- /dev/null +++ b/javascript/extractor/src/com/semmle/jcorn/ESNextParser.java @@ -0,0 +1,485 @@ +package com.semmle.jcorn; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import com.semmle.jcorn.TokenType.Properties; +import com.semmle.jcorn.jsx.JSXParser; +import com.semmle.js.ast.BindExpression; +import com.semmle.js.ast.BlockStatement; +import com.semmle.js.ast.CatchClause; +import com.semmle.js.ast.ClassDeclaration; +import com.semmle.js.ast.ClassExpression; +import com.semmle.js.ast.DeclarationFlags; +import com.semmle.js.ast.Decorator; +import com.semmle.js.ast.DynamicImport; +import com.semmle.js.ast.ExportDeclaration; +import com.semmle.js.ast.ExportDefaultDeclaration; +import com.semmle.js.ast.ExportDefaultSpecifier; +import com.semmle.js.ast.ExportNamedDeclaration; +import com.semmle.js.ast.ExportNamespaceSpecifier; +import com.semmle.js.ast.ExportSpecifier; +import com.semmle.js.ast.Expression; +import com.semmle.js.ast.FieldDefinition; +import com.semmle.js.ast.ForOfStatement; +import com.semmle.js.ast.INode; +import com.semmle.js.ast.IPattern; +import com.semmle.js.ast.Identifier; +import com.semmle.js.ast.Literal; +import com.semmle.js.ast.MemberDefinition; +import com.semmle.js.ast.MemberExpression; +import com.semmle.js.ast.MetaProperty; +import com.semmle.js.ast.Node; +import com.semmle.js.ast.ObjectPattern; +import com.semmle.js.ast.Position; +import com.semmle.js.ast.Property; +import com.semmle.js.ast.RestElement; +import com.semmle.js.ast.SourceLocation; +import com.semmle.js.ast.SpreadElement; +import com.semmle.js.ast.Statement; +import com.semmle.js.ast.Token; +import com.semmle.util.collections.CollectionUtil; +import com.semmle.util.data.Pair; + +/** + * An extension of the {@link JSXParser} with support for various + * unfinished ECMAScript proposals that are not supported by + * Acorn/jcorn yet. + * + * Once support becomes available, they should be removed from + * this class. + */ +public class ESNextParser extends JSXParser { + public ESNextParser(Options options, String input, int startPos) { + super(options.allowImportExportEverywhere(true), input, startPos); + } + + /* + * Support for proposed language feature "Object Rest/Spread Properties" + * (http://sebmarkbage.github.io/ecmascript-rest-spread/). + */ + + @Override + protected Property parseProperty(boolean isPattern, DestructuringErrors refDestructuringErrors, + Map propHash) { + Position start = this.startLoc; + + List decorators = parseDecorators(); + + Property prop = null; + if (this.type == TokenType.ellipsis) { + SpreadElement spread = this.parseSpread(null); + Expression val; + if (isPattern) + val = new RestElement(spread.getLoc(), spread.getArgument()); + else + val = spread; + prop = this.finishNode(new Property(new SourceLocation(start), null, val, Property.Kind.INIT.name(), false, false)); + } + + if (prop == null) + prop = super.parseProperty(isPattern, refDestructuringErrors, propHash); + + prop.addDecorators(decorators); + + return prop; + } + + @Override + protected INode toAssignable(INode node, boolean isBinding) { + if (node instanceof SpreadElement) + return new RestElement(node.getLoc(), ((SpreadElement) node).getArgument()); + return super.toAssignable(node, isBinding); + } + + @Override + protected void checkLVal(INode expr, boolean isBinding, Set checkClashes) { + super.checkLVal(expr, isBinding, checkClashes); + if (expr instanceof ObjectPattern) { + ObjectPattern op = (ObjectPattern) expr; + if (op.hasRest()) + checkLVal(op.getRest(), isBinding, checkClashes); + } + } + + /* + * Support for proposed language feature "Public Class Fields" + * (http://jeffmo.github.io/es-class-public-fields/). + */ + + private boolean classProperties() { + return options.esnext(); + } + + @Override + protected MemberDefinition parseClassPropertyBody(PropertyInfo pi, + boolean hadConstructor, boolean isStatic) { + if (classProperties() && !pi.isGenerator && this.isClassProperty()) + return this.parseFieldDefinition(pi, isStatic); + return super.parseClassPropertyBody(pi, hadConstructor, isStatic); + } + + protected boolean isClassProperty() { + return this.type == TokenType.eq || this.type == TokenType.semi || this.canInsertSemicolon(); + } + + protected FieldDefinition parseFieldDefinition(PropertyInfo pi, boolean isStatic) { + Expression value = null; + if (this.type == TokenType.eq) { + this.next(); + boolean oldInFunc = this.inFunction; + this.inFunction = true; + value = parseMaybeAssign(false, null, null); + this.inFunction = oldInFunc; + } + this.semicolon(); + int flags = DeclarationFlags.getStatic(isStatic) | DeclarationFlags.getComputed(pi.computed); + return this.finishNode(new FieldDefinition(new SourceLocation(pi.startLoc), flags, pi.key, value)); + } + + /* + * Support for proposed language feature "Generator function.sent Meta Property" + * (https://github.com/allenwb/ESideas/blob/master/Generator%20metaproperty.md) + */ + private boolean functionSent() { + return options.esnext(); + } + + @Override + protected INode parseFunction(Position startLoc, boolean isStatement, + boolean allowExpressionBody, boolean isAsync) { + if (isFunctionSent(isStatement)) { + Identifier meta = this.finishNode(new Identifier(new SourceLocation(startLoc), "function")); + this.next(); + Identifier property = parseIdent(true); + if (!property.getName().equals("sent")) + this.raiseRecoverable(property, "The only valid meta property for function is function.sent"); + return this.finishNode(new MetaProperty(new SourceLocation(startLoc), meta, property)); + } + + return super.parseFunction(startLoc, isStatement, allowExpressionBody, isAsync); + } + + protected boolean isFunctionSent(boolean isStatement) { + return functionSent() && !isStatement && inGenerator && !inAsync && this.type == TokenType.dot; + } + + /* + * Support for proposed language feature "Class and Property Decorators" + * (https://github.com/wycats/javascript-decorators) + */ + private boolean decorators() { + return options.esnext(); + } + + protected TokenType at = new TokenType(new Properties("@").beforeExpr()); + + @Override + protected Token getTokenFromCode(int code) { + if (decorators() && code == 64) { + ++this.pos; + return this.finishToken(at); + } + if (functionBind() && code == 58 && charAt(this.pos+1) == 58) { + this.pos += 2; + return this.finishToken(doubleColon); + } + return super.getTokenFromCode(code); + } + + @Override + protected Statement parseStatement(boolean declaration, boolean topLevel, + Set exports) { + List decorators = this.parseDecorators(); + Statement stmt = super.parseStatement(declaration, topLevel, exports); + + if (!decorators.isEmpty()) { + if (stmt instanceof ExportDeclaration) { + Node exported = null; + if (stmt instanceof ExportDefaultDeclaration) { + exported = ((ExportDefaultDeclaration) stmt).getDeclaration(); + } else if (stmt instanceof ExportNamedDeclaration) { + exported = ((ExportNamedDeclaration) stmt).getDeclaration(); + } + if (exported instanceof ClassDeclaration) { + ((ClassDeclaration) exported).addDecorators(decorators); + } else if (exported instanceof ClassExpression) { + ((ClassExpression) exported).addDecorators(decorators); + } else { + this.raise(stmt, "Decorators can only be attached to class exports"); + } + } else if (stmt instanceof ClassDeclaration) { + ((ClassDeclaration) stmt).addDecorators(decorators); + } else if (stmt != null) { + this.raise(stmt, "Leading decorators must be attached to a class declaration"); + } + } + + return stmt; + } + + @Override + protected Expression parseExprAtom(DestructuringErrors refDestructuringErrors) { + if (this.type == at) { + List decorators = parseDecorators(); + ClassExpression ce = (ClassExpression) this.parseClass(startLoc, false); + ce.addDecorators(decorators); + return ce; + } + if (this.type == doubleColon) { + SourceLocation startLoc = new SourceLocation(this.startLoc); + this.next(); + int innerStart = this.start; + Position innerStartLoc = this.startLoc; + Expression callee = parseSubscripts(parseExprAtom(null), innerStart, innerStartLoc, true); + if (!(callee instanceof MemberExpression)) + this.raiseRecoverable(callee, "Binding should be performed on a member expression."); + return this.finishNode(new BindExpression(startLoc, null, callee)); + } + if (this.type == TokenType._import) { + Position startLoc = this.startLoc; + this.next(); + this.expect(TokenType.parenL); + return parseDynamicImport(startLoc); + } + return super.parseExprAtom(refDestructuringErrors); + } + + @Override + protected MemberDefinition parseClassMember(boolean hadConstructor) { + List decorators = parseDecorators(); + MemberDefinition member = super.parseClassMember(hadConstructor); + if (!decorators.isEmpty() && member.isConstructor()) + this.raiseRecoverable(member, "Decorators cannot be attached to class constructors."); + member.addDecorators(decorators); + return member; + } + + private List parseDecorators() { + List result = new ArrayList(); + while (this.type == at) + result.add(this.parseDecorator()); + return result; + } + + private Decorator parseDecorator() { + Position start = startLoc; + this.next(); + Decorator decorator = new Decorator(new SourceLocation(start), this.parseMaybeAssign(false, null, null)); + return this.finishNode(decorator); + } + + /* + * Support for proposed extensions to `export` + * (http://leebyron.com/ecmascript-export-ns-from and http://leebyron.com/ecmascript-export-default-from) + */ + private boolean exportExtensions() { + return options.esnext(); + } + + @Override + protected ExportDeclaration parseExportRest(SourceLocation exportStart, Set exports) { + if (exportExtensions() && this.isExportDefaultSpecifier()) { + Position specStart = this.startLoc; + Identifier exported = this.parseIdent(true); + ExportDefaultSpecifier defaultSpec = this.finishNode(new ExportDefaultSpecifier(new SourceLocation(specStart), exported)); + List specifiers = CollectionUtil.makeList(defaultSpec); + if (this.type == TokenType.comma && this.lookahead(1, true).equals("*")) { + this.next(); + specStart = this.startLoc; + this.expect(TokenType.star); + this.expectContextual("as"); + exported = this.parseIdent(false); + ExportNamespaceSpecifier nsSpec = this.finishNode(new ExportNamespaceSpecifier(new SourceLocation(specStart), exported)); + specifiers.add(nsSpec); + } else { + this.parseExportSpecifiersMaybe(specifiers, exports); + } + Literal source = (Literal) this.parseExportFrom(specifiers, null, true); + return this.finishNode(new ExportNamedDeclaration(exportStart, null, specifiers, source)); + } + + return super.parseExportRest(exportStart, exports); + } + + @Override + protected ExportDeclaration parseExportAll(SourceLocation exportStart, Position starLoc, Set exports) { + if (exportExtensions() && this.eatContextual("as")) { + Identifier exported = this.parseIdent(false); + ExportNamespaceSpecifier nsSpec = this.finishNode(new ExportNamespaceSpecifier(new SourceLocation(starLoc), exported)); + List specifiers = CollectionUtil.makeList(nsSpec); + this.parseExportSpecifiersMaybe(specifiers, exports); + Literal source = (Literal) this.parseExportFrom(specifiers, null, true); + return this.finishNode(new ExportNamedDeclaration(exportStart, null, specifiers, source)); + } + + return super.parseExportAll(exportStart, starLoc, exports); + } + + private boolean isExportDefaultSpecifier() { + if (this.type == TokenType.name) { + return !this.value.equals("type") && + !this.value.equals("async") && + !this.value.equals("interface") && + !this.value.equals("let"); + } + + if (this.type != TokenType._default) + return false; + + return this.lookahead(1, true).equals(",") || this.lookaheadIsIdent("from", true); + } + + private void parseExportSpecifiersMaybe(List specifiers, Set exports) { + if (this.eat(TokenType.comma)) { + specifiers.addAll(this.parseExportSpecifiers(exports)); + } + } + + /* + * Support for proposed language feature "Function Bind Syntax" + * (https://github.com/tc39/proposal-bind-operator) + */ + private boolean functionBind() { + return options.esnext(); + } + + protected TokenType doubleColon = new TokenType(new Properties("::").beforeExpr()); + + @Override + protected Pair parseSubscript(Expression base, Position startLoc, boolean noCalls) { + if (!noCalls && this.eat(doubleColon)) { + Expression callee = parseSubscripts(parseExprAtom(null), this.start, this.startLoc, true); + BindExpression bind = new BindExpression(new SourceLocation(startLoc), base, callee); + return Pair.make(this.finishNode(bind), true); + } + return super.parseSubscript(base, startLoc, noCalls); + } + + /* + * Support for proposed language feature "Optional Catch Binding" + * (https://github.com/tc39/proposal-optional-catch-binding) + */ + @Override + protected CatchClause parseCatchClause(Position startLoc) { + this.next(); + Expression param = null; + if (this.eat(TokenType.parenL)) { + param = this.parseBindingAtom(); + this.checkLVal(param, true, null); + this.expect(TokenType.parenR); + } else if (!options.esnext()) { + this.unexpected(); + } + BlockStatement catchBody = this.parseBlock(false); + return this.finishNode(new CatchClause(new SourceLocation(startLoc), (IPattern)param, null, catchBody)); + } + + /* + * Support for proposed language feature "Dynamic import" + * (https://github.com/tc39/proposal-dynamic-import). + */ + @Override + protected Statement parseImport(Position startLoc) { + if (!options.esnext()) + return super.parseImport(startLoc); + + int startPos = this.start; + SourceLocation loc = new SourceLocation(startLoc); + this.next(); + if (this.eat(TokenType.parenL)) { + DynamicImport di = parseDynamicImport(startLoc); + Expression expr = parseSubscripts(di, startPos, startLoc, false); + return parseExpressionStatement(false, startLoc, expr); + } else { + return super.parseImportRest(loc); + } + } + + /** + * Parses a dynamic import, assuming that the keyword `import` and the + * opening parenthesis have already been consumed. + */ + private DynamicImport parseDynamicImport(Position startLoc) { + Expression source = parseMaybeAssign(false, null, null); + this.expect(TokenType.parenR); + DynamicImport di = this.finishNode(new DynamicImport(new SourceLocation(startLoc), source)); + return di; + } + + /* + * Support for proposed language feature "Asynchronous iteration" + * (https://github.com/tc39/proposal-async-iteration) + */ + @Override + protected Statement parseForStatement(Position startLoc) { + int startPos = this.start; + boolean isAwait = false; + if (this.inAsync && this.eatContextual("await")) + isAwait = true; + Statement forStmt = super.parseForStatement(startLoc); + if (isAwait) { + if (forStmt instanceof ForOfStatement) + ((ForOfStatement) forStmt).setAwait(true); + else + this.raiseRecoverable(startPos, "Only for-of statements can be annotated with 'await'."); + } + return forStmt; + } + + @Override + protected boolean parseGeneratorMarker(boolean isAsync) { + // always allow `*`, even if `isAsync` is true + return this.eat(TokenType.star); + } + + /* + * Support for proposed language feature "Numeric separators" + * (https://github.com/tc39/proposal-numeric-separator) + */ + + @Override + protected Number readInt(int radix, Integer len) { + // implementation mostly copied from super class + int start = this.pos, code = -1; + double total = 0; + // no leading underscore + boolean underscoreAllowed = false; + + for (int i = 0, e = len == null ? Integer.MAX_VALUE : len; i < e; ++i) { + if (this.pos >= this.input.length()) + break; + code = this.input.charAt(this.pos); + + if (code == '_') { + if (underscoreAllowed) { + // no adjacent underscores + underscoreAllowed = false; + ++this.pos; + continue; + } + } else { + underscoreAllowed = true; + } + + int val; + if (code >= 97) val = code - 97 + 10; // a + else if (code >= 65) val = code - 65 + 10; // A + else if (code >= 48 && code <= 57) val = code - 48; // 0-9 + else val = Integer.MAX_VALUE; + if (val >= radix) break; + + ++this.pos; + total = total * radix + val; + } + if (this.pos == start || len != null && this.pos - start != len) return null; + + if (code == '_') + // no trailing underscore + return null; + + return total; + } +} diff --git a/javascript/extractor/src/com/semmle/jcorn/Identifiers.java b/javascript/extractor/src/com/semmle/jcorn/Identifiers.java new file mode 100644 index 00000000000..363ab88eb42 --- /dev/null +++ b/javascript/extractor/src/com/semmle/jcorn/Identifiers.java @@ -0,0 +1,117 @@ +package com.semmle.jcorn; + +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.Map; +import java.util.Set; +import java.util.regex.Pattern; + +/// identifier.js +public class Identifiers { + public static enum Dialect { + ECMA_3, ECMA_5, ECMA_6, ECMA_7, ECMA_8, STRICT, STRICT_BIND + } + + // Reserved word lists for various dialects of the language + public static final Map> reservedWords = new LinkedHashMap<>(); + static { + reservedWords.put(Dialect.ECMA_3, stringSet("abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile")); + reservedWords.put(Dialect.ECMA_5, stringSet("class enum extends super const export import")); + reservedWords.put(Dialect.ECMA_6, stringSet("enum")); + reservedWords.put(Dialect.ECMA_7, stringSet("enum")); + reservedWords.put(Dialect.ECMA_8, stringSet("enum")); + reservedWords.put(Dialect.STRICT, stringSet("implements interface let package private protected public static yield")); + reservedWords.put(Dialect.STRICT_BIND, stringSet("eval arguments")); + } + + // And the keywords + private static final String ecma5AndLessKeywords = "break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this"; + private static final String ecma6Keywords = ecma5AndLessKeywords + " const class extends export import super"; + + public static final Map> keywords = new LinkedHashMap<>(); + static { + keywords.put(Dialect.ECMA_5, stringSet(ecma5AndLessKeywords)); + keywords.put(Dialect.ECMA_6, stringSet(ecma6Keywords)); + } + + private static Set stringSet(String words) { + Set result = new LinkedHashSet(); + for (String word : words.split(" ")) + result.add(word); + return result; + } + + // ## Character categories + + private static final String nonASCIIidentifierStartChars = + "\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u08a0-\\u08b4\\u08b6-\\u08bd\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e87\\u0e88\\u0e8a\\u0e8d\\u0e94-\\u0e97\\u0e99-\\u0e9f\\u0ea1-\\u0ea3\\u0ea5\\u0ea7\\u0eaa\\u0eab\\u0ead-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c88\\u1ce9-\\u1cec\\u1cee-\\u1cf1\\u1cf5\\u1cf6\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fd5\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7ae\\ua7b0-\\ua7b7\\ua7f7-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab65\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc"; + private static final String nonASCIIidentifierChars = + "\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08d4-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c03\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0d01-\\u0d03\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf2-\\u1cf4\\u1cf8\\u1cf9\\u1dc0-\\u1df5\\u1dfb-\\u1dff\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua900-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f"; + + private static Pattern nonASCIIidentifierStartPattern; + private static Pattern nonASCIIidentifierPattern; + + private static Pattern nonASCIIidentifierStart() { + if (nonASCIIidentifierStartPattern == null) + nonASCIIidentifierStartPattern = Pattern.compile("[" + nonASCIIidentifierStartChars + "]"); + return nonASCIIidentifierStartPattern; + } + + private static Pattern nonASCIIidentifier() { + if (nonASCIIidentifierPattern == null) + nonASCIIidentifierPattern = Pattern.compile("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); + return nonASCIIidentifierPattern; + } + + // These are a run-length and offset encoded representation of the + // >0xffff code points that are a valid part of identifiers. The + // offset starts at 0x10000, and each pair of numbers represents an + // offset to the next range, and then a size of the range. They were + // generated by bin/generate-identifier-regex.js + private static final int[] astralIdentifierStartCodes = {0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,449,56,264,8,2,36,18,0,50,29,881,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,0,32,6124,20,754,9486,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,10591,541}; + private static final int[] astralIdentifierCodes = {509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,838,7,2,7,17,9,57,21,2,13,19882,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239}; + + // This has a complexity linear to the value of the code. The + // assumption is that looking up astral identifier characters is + // rare. + private static boolean isInAstralSet(int code, int[] set) { + int pos = 0x10000; + for (int i = 0; i < set.length; i += 2) { + pos += set[i]; + if (pos > code) + return false; + pos += set[i + 1]; + if (pos >= code) + return true; + } + return false; + } + + // Test whether a given character code starts an identifier. + + public static boolean isIdentifierStart(int code, boolean astral) { + if (code < 65) return code == 36; + if (code < 91) return true; + if (code < 97) return code == 95; + if (code < 123) return true; + if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifierStart().matcher(str(code)).matches(); + if (!astral) return false; + return isInAstralSet(code, astralIdentifierStartCodes); + } + + public static boolean isIdentifierChar(int code, boolean astral) { + if (code < 48) return code == 36; + if (code < 58) return true; + if (code < 65) return false; + if (code < 91) return true; + if (code < 97) return code == 95; + if (code < 123) return true; + if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifier().matcher(str(code)).matches(); + if (!astral) return false; + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); + } + + private static String str(int i) { + return new String(Character.toChars(i)); + } +} diff --git a/javascript/extractor/src/com/semmle/jcorn/Locutil.java b/javascript/extractor/src/com/semmle/jcorn/Locutil.java new file mode 100644 index 00000000000..3ef911da6e9 --- /dev/null +++ b/javascript/extractor/src/com/semmle/jcorn/Locutil.java @@ -0,0 +1,27 @@ +package com.semmle.jcorn; + +import java.util.regex.Matcher; + +import com.semmle.js.ast.Position; + +/// locutil.js +public class Locutil { + /** + * The `getLineInfo` function is mostly useful when the + * `locations` option is off (for performance reasons) and you + * want to find the line/column position for a given character + * offset. `input` should be the code string that the offset refers + * into. + */ + public static Position getLineInfo(String input, int offset) { + Matcher lineBreakG = Whitespace.lineBreakG.matcher(input); + for (int line = 1, cur = 0;;) { + if (lineBreakG.find(cur) && lineBreakG.start() < offset) { + ++line; + cur = lineBreakG.end(); + } else { + return new Position(line, offset - cur, offset); + } + } + } +} diff --git a/javascript/extractor/src/com/semmle/jcorn/Options.java b/javascript/extractor/src/com/semmle/jcorn/Options.java new file mode 100644 index 00000000000..0b854f20460 --- /dev/null +++ b/javascript/extractor/src/com/semmle/jcorn/Options.java @@ -0,0 +1,238 @@ +package com.semmle.jcorn; + +import java.util.List; +import java.util.function.BiFunction; +import java.util.function.Function; + +import com.semmle.jcorn.Identifiers.Dialect; +import com.semmle.js.ast.Comment; +import com.semmle.js.ast.Position; +import com.semmle.js.ast.Program; +import com.semmle.js.ast.SourceLocation; +import com.semmle.js.ast.Token; + +/// options.js +public class Options { + public enum AllowReserved { + YES(true), NO(false), NEVER(false); + + private final boolean isTrue; + + private AllowReserved(boolean isTrue) { + this.isTrue = isTrue; + } + + public boolean isTrue() { + return isTrue; + } + } + + public interface OnCommentCallback { + public void call(boolean block, String input, String text, int start, int end, Position startLoc, Position endLoc); + } + + private boolean allowHashBang, allowReturnOutsideFunction, allowImportExportEverywhere; + private boolean preserveParens, mozExtensions, jscript, esnext, v8Extensions; + private int ecmaVersion; + private AllowReserved allowReserved; + private String sourceType; + private BiFunction onInsertedSemicolon, onTrailingComma; + private Function onToken; + private OnCommentCallback onComment; + private Program program; + private Function onRecoverableError; + + public Options() { + this.ecmaVersion = 7; + this.sourceType = "script"; + this.onInsertedSemicolon = null; + this.onTrailingComma = null; + this.allowReserved = AllowReserved.YES; + this.allowReturnOutsideFunction = false; + this.allowImportExportEverywhere = false; + this.allowHashBang = false; + this.onToken = null; + this.onComment = null; + this.program = null; + this.preserveParens = false; + this.mozExtensions = false; + this.jscript = false; + this.esnext = false; + this.v8Extensions = false; + this.onRecoverableError = null; + } + + public Options(Options that) { + this.allowHashBang = that.allowHashBang; + this.allowReturnOutsideFunction = that.allowReturnOutsideFunction; + this.allowImportExportEverywhere = that.allowImportExportEverywhere; + this.preserveParens = that.preserveParens; + this.mozExtensions = that.mozExtensions; + this.jscript = that.jscript; + this.esnext = that.esnext; + this.v8Extensions = that.v8Extensions; + this.ecmaVersion = that.ecmaVersion; + this.allowReserved = that.allowReserved; + this.sourceType = that.sourceType; + this.onInsertedSemicolon = that.onInsertedSemicolon; + this.onTrailingComma = that.onTrailingComma; + this.onToken = that.onToken; + this.onComment = that.onComment; + this.program = that.program; + this.onRecoverableError = that.onRecoverableError; + } + + public boolean allowHashBang() { + return allowHashBang; + } + + public boolean allowReturnOutsideFunction() { + return allowReturnOutsideFunction; + } + + public boolean allowImportExportEverywhere() { + return allowImportExportEverywhere; + } + + public boolean preserveParens() { + return preserveParens; + } + + public boolean mozExtensions() { + return mozExtensions; + } + + public boolean jscript() { + return jscript; + } + + public boolean esnext() { + return esnext; + } + + public boolean v8Extensions() { + return v8Extensions; + } + + public Identifiers.Dialect getDialect() { + switch (ecmaVersion) { + case 3: + return Dialect.ECMA_3; + case 5: + return Dialect.ECMA_5; + case 6: + return Dialect.ECMA_6; + case 8: + return Dialect.ECMA_8; + default: + return Dialect.ECMA_7; + } + } + + public int ecmaVersion() { + return ecmaVersion; + } + + public Options ecmaVersion(int ecmaVersion) { + if (ecmaVersion >= 2015) + ecmaVersion -= 2009; + + this.ecmaVersion = ecmaVersion; + if (ecmaVersion >= 5) + this.allowReserved = AllowReserved.NO; + return this; + } + + public AllowReserved allowReserved() { + return allowReserved; + } + + public Options onComment(List comments) { + this.onComment = (block, input, text, start, end, startLoc, endLoc) -> { + String src = input.substring(start, end); + comments.add(new Comment(new SourceLocation(src, startLoc, endLoc), text)); + }; + return this; + } + + public String sourceType() { + return sourceType; + } + + public Options sourceType(String sourceType) { + this.sourceType = sourceType; + return this; + } + + public Options mozExtensions(boolean mozExtensions) { + this.mozExtensions = mozExtensions; + return this; + } + + public Options jscript(boolean jscript) { + this.jscript = jscript; + return this; + } + + public Options esnext(boolean esnext) { + this.esnext = esnext; + return this; + } + + public void v8Extensions(boolean v8Extensions) { + this.v8Extensions = v8Extensions; + } + + public Options preserveParens(boolean preserveParens) { + this.preserveParens = preserveParens; + return this; + } + + public Options allowReturnOutsideFunction(boolean allowReturnOutsideFunction) { + this.allowReturnOutsideFunction = allowReturnOutsideFunction; + return this; + } + + public Options allowImportExportEverywhere(boolean allowImportExportEverywhere) { + this.allowImportExportEverywhere = allowImportExportEverywhere; + return this; + } + + public BiFunction onInsertedSemicolon() { + return onInsertedSemicolon; + } + + public BiFunction onTrailingComma() { + return onTrailingComma; + } + + public Function onToken() { + return onToken; + } + + public Options onToken(List tokens) { + return onToken((tk) -> { tokens.add(tk); return null; }); + } + + public Options onToken(Function tmp) { + this.onToken = tmp; + return this; + } + + public OnCommentCallback onComment() { + return onComment; + } + + public Program program() { + return program; + } + + public Options onRecoverableError(Function onRecoverableError) { + this.onRecoverableError = onRecoverableError; + return this; + } + + public Function onRecoverableError() { + return onRecoverableError; + } +} diff --git a/javascript/extractor/src/com/semmle/jcorn/Parser.java b/javascript/extractor/src/com/semmle/jcorn/Parser.java new file mode 100644 index 00000000000..a8b964e330d --- /dev/null +++ b/javascript/extractor/src/com/semmle/jcorn/Parser.java @@ -0,0 +1,3547 @@ +package com.semmle.jcorn; + +import static com.semmle.jcorn.Whitespace.isNewLine; +import static com.semmle.jcorn.Whitespace.lineBreak; + +import java.io.File; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.Stack; +import java.util.function.Function; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import com.semmle.jcorn.Identifiers.Dialect; +import com.semmle.jcorn.Options.AllowReserved; +import com.semmle.js.ast.ArrayExpression; +import com.semmle.js.ast.ArrayPattern; +import com.semmle.js.ast.ArrowFunctionExpression; +import com.semmle.js.ast.AssignmentExpression; +import com.semmle.js.ast.AssignmentPattern; +import com.semmle.js.ast.AwaitExpression; +import com.semmle.js.ast.BinaryExpression; +import com.semmle.js.ast.BlockStatement; +import com.semmle.js.ast.BreakStatement; +import com.semmle.js.ast.CallExpression; +import com.semmle.js.ast.CatchClause; +import com.semmle.js.ast.ClassBody; +import com.semmle.js.ast.ClassDeclaration; +import com.semmle.js.ast.ClassExpression; +import com.semmle.js.ast.ConditionalExpression; +import com.semmle.js.ast.ContinueStatement; +import com.semmle.js.ast.DebuggerStatement; +import com.semmle.js.ast.DoWhileStatement; +import com.semmle.js.ast.EmptyStatement; +import com.semmle.js.ast.EnhancedForStatement; +import com.semmle.js.ast.ExportAllDeclaration; +import com.semmle.js.ast.ExportDeclaration; +import com.semmle.js.ast.ExportDefaultDeclaration; +import com.semmle.js.ast.ExportNamedDeclaration; +import com.semmle.js.ast.ExportSpecifier; +import com.semmle.js.ast.Expression; +import com.semmle.js.ast.ExpressionStatement; +import com.semmle.js.ast.ForInStatement; +import com.semmle.js.ast.ForOfStatement; +import com.semmle.js.ast.ForStatement; +import com.semmle.js.ast.FunctionDeclaration; +import com.semmle.js.ast.FunctionExpression; +import com.semmle.js.ast.IFunction; +import com.semmle.js.ast.INode; +import com.semmle.js.ast.IPattern; +import com.semmle.js.ast.Identifier; +import com.semmle.js.ast.IfStatement; +import com.semmle.js.ast.ImportDeclaration; +import com.semmle.js.ast.ImportDefaultSpecifier; +import com.semmle.js.ast.ImportNamespaceSpecifier; +import com.semmle.js.ast.ImportSpecifier; +import com.semmle.js.ast.LabeledStatement; +import com.semmle.js.ast.Literal; +import com.semmle.js.ast.LogicalExpression; +import com.semmle.js.ast.MemberDefinition; +import com.semmle.js.ast.MemberExpression; +import com.semmle.js.ast.DeclarationFlags; +import com.semmle.js.ast.MetaProperty; +import com.semmle.js.ast.MethodDefinition; +import com.semmle.js.ast.NewExpression; +import com.semmle.js.ast.Node; +import com.semmle.js.ast.ObjectExpression; +import com.semmle.js.ast.ObjectPattern; +import com.semmle.js.ast.ParenthesizedExpression; +import com.semmle.js.ast.Position; +import com.semmle.js.ast.Program; +import com.semmle.js.ast.Property; +import com.semmle.js.ast.RestElement; +import com.semmle.js.ast.ReturnStatement; +import com.semmle.js.ast.SequenceExpression; +import com.semmle.js.ast.SourceLocation; +import com.semmle.js.ast.SpreadElement; +import com.semmle.js.ast.Statement; +import com.semmle.js.ast.Super; +import com.semmle.js.ast.SwitchCase; +import com.semmle.js.ast.SwitchStatement; +import com.semmle.js.ast.TaggedTemplateExpression; +import com.semmle.js.ast.TemplateElement; +import com.semmle.js.ast.TemplateLiteral; +import com.semmle.js.ast.ThisExpression; +import com.semmle.js.ast.ThrowStatement; +import com.semmle.js.ast.Token; +import com.semmle.js.ast.TryStatement; +import com.semmle.js.ast.UnaryExpression; +import com.semmle.js.ast.UpdateExpression; +import com.semmle.js.ast.VariableDeclaration; +import com.semmle.js.ast.VariableDeclarator; +import com.semmle.js.ast.WhileStatement; +import com.semmle.js.ast.WithStatement; +import com.semmle.js.ast.YieldExpression; +import com.semmle.ts.ast.ITypeExpression; +import com.semmle.util.collections.CollectionUtil; +import com.semmle.util.data.Pair; +import com.semmle.util.data.StringUtil; +import com.semmle.util.exception.Exceptions; +import com.semmle.util.exception.CatastrophicError; +import com.semmle.util.io.WholeIO; + +/** + * Java port of Acorn. + * + * This version corresponds to Acorn 4.0.3, + * but does not support plugins, and always tracks full source locations. + */ +public class Parser { + protected final Options options; + protected final Set keywords; + private final Set reservedWords, reservedWordsStrict, reservedWordsStrictBind; + protected final String input; + private boolean containsEsc; + protected boolean exprAllowed; + protected boolean strict; + private boolean inModule; + protected boolean inFunction; + protected boolean inGenerator; + protected boolean inAsync; + protected boolean inTemplateElement; + protected int pos; + protected int lineStart; + protected int curLine; + protected int start; + protected int end; + protected TokenType type; + protected Object value; + protected Position startLoc; + protected Position endLoc; + protected Position lastTokEndLoc, lastTokStartLoc; + protected int lastTokStart, lastTokEnd; + protected Stack context; + protected int potentialArrowAt; + private Stack labels; + protected int yieldPos, awaitPos; + + /** + * For readability purposes, we pass this instead of false as the argument to + * the hasDeclareKeyword parameter (which only exists in TypeScript). + */ + private static final boolean noDeclareKeyword = false; + + /** + * For readability purposes, we pass this instead of false as the argument to + * the isAbstract parameter (which only exists in TypeScript). + */ + protected static final boolean notAbstract = false; + + /** + * For readability purposes, we pass this instead of null as the argument to the + * type annotation parameters (which only exists in TypeScript). + */ + private static final ITypeExpression noTypeAnnotation = null; + + protected static class LabelInfo { + String name, kind; + int statementStart; + + public LabelInfo(String name, String kind, int statementStart) { + this.name = name; + this.kind = kind; + this.statementStart = statementStart; + } + } + + public static void main(String[] args) { + new Parser(new Options(), new WholeIO().strictread(new File(args[0])), 0).parse(); + } + + /// begin state.js + + public Parser(Options options, String input, int startPos) { + this.options = options; + this.keywords = new LinkedHashSet(Identifiers.keywords.get(options.ecmaVersion() >= 6 ? Identifiers.Dialect.ECMA_6 : Identifiers.Dialect.ECMA_5)); + this.reservedWords = new LinkedHashSet(); + if (!options.allowReserved().isTrue()) { + this.reservedWords.addAll(Identifiers.reservedWords.get(options.getDialect())); + if (options.sourceType().equals("module")) + this.reservedWords.add("await"); + } + this.reservedWordsStrict = new LinkedHashSet(this.reservedWords); + this.reservedWordsStrict.addAll(Identifiers.reservedWords.get(Dialect.STRICT)); + this.reservedWordsStrictBind = new LinkedHashSet(this.reservedWordsStrict); + this.reservedWordsStrictBind.addAll(Identifiers.reservedWords.get(Dialect.STRICT_BIND)); + this.input = input; + + // Used to signal to callers of `readWord1` whether the word + // contained any escape sequences. This is needed because words with + // escape sequences must not be interpreted as keywords. + this.containsEsc = false; + + // Set up token state + + // The current position of the tokenizer in the input. + if (startPos != 0) { + this.pos = startPos; + this.lineStart = this.input.lastIndexOf("\n", startPos - 1) + 1; + this.curLine = inputSubstring(0, this.lineStart).split(Whitespace.lineBreak).length; + } else { + this.pos = this.lineStart = 0; + this.curLine = 1; + } + + // Properties of the current token: + // Its type + this.type = TokenType.eof; + // For tokens that include more information than their type, the value + this.value = null; + // Its start and end offset + this.start = this.end = this.pos; + // And, if locations are used, the {line, column} object + // corresponding to those offsets + this.startLoc = this.endLoc = this.curPosition(); + + // Position information for the previous token + this.lastTokEndLoc = this.lastTokStartLoc = null; + this.lastTokStart = this.lastTokEnd = this.pos; + + // The context stack is used to superficially track syntactic + // context to predict whether a regular expression is allowed in a + // given position. + this.context = this.initialContext(); + this.exprAllowed = true; + + // Figure out if it's a module code. + this.strict = this.inModule = options.sourceType().equals("module"); + + // Used to signify the start of a potential arrow function + this.potentialArrowAt = -1; + + // Flags to track whether we are in a function, a generator, an async function. + this.inFunction = this.inGenerator = this.inAsync = false; + // Positions to delayed-check that yield/await does not exist in default parameters. + this.yieldPos = this.awaitPos = 0; + // Labels in scope. + this.labels = new Stack(); + + // If enabled, skip leading hashbang line. + if (this.pos == 0 && options.allowHashBang() && this.input.startsWith("#!")) + this.skipLineComment(2); + } + + public Program parse() { + Position startLoc = this.startLoc; + this.nextToken(); + return this.parseTopLevel(startLoc, this.options.program()); + } + + /// end state.js + + /// begin location.js + protected void raise(int pos, String msg, boolean recoverable) { + Position loc = Locutil.getLineInfo(input, pos); + raise(loc, msg, recoverable); + } + + protected void raise(int pos, String msg) { + raise(pos, msg, false); + } + + protected void raise(Position loc, String msg, boolean recoverable) { + msg += " (" + loc.getLine() + ":" + loc.getColumn() + ")"; + SyntaxError err = new SyntaxError(msg, loc, this.pos); + if (recoverable && options.onRecoverableError() != null) + options.onRecoverableError().apply(err); + else + throw err; + } + + protected void raise(Position loc, String msg) { + raise(loc, msg, false); + } + + protected void raise(INode nd, String msg) { + raise(nd.getLoc().getStart(), msg, false); + } + + protected void raiseRecoverable(int pos, String msg) { + raise(pos, msg, true); + } + + protected void raiseRecoverable(INode nd, String msg) { + raise(nd.getLoc().getStart(), msg, true); + } + + protected Position curPosition() { + return new Position(curLine, pos - lineStart, pos); + } + + /// end location.js + + /// begin tokenize.js + + // Move to the next token + + protected void next() { + if (this.options.onToken() != null) + this.options.onToken().apply(mkToken()); + + this.lastTokEnd = this.end; + this.lastTokStart = this.start; + this.lastTokEndLoc = this.endLoc; + this.lastTokStartLoc = this.startLoc; + this.nextToken(); + } + + // Toggle strict mode. Re-reads the next number or string to please + // pedantic tests (`"use strict"; 010;` should fail). + + public void setStrict(boolean strict) { + this.strict = strict; + if (this.type != TokenType.num && this.type != TokenType.string) return; + this.pos = this.start; + while (this.pos < this.lineStart) { + this.lineStart = this.input.lastIndexOf("\n", this.lineStart - 2) + 1; + --this.curLine; + } + this.nextToken(); + } + + public TokContext curContext() { + return context.peek(); + } + + // Read a single token, updating the parser object's token-related + // properties. + + public Token nextToken() { + TokContext curContext = this.curContext(); + if (curContext == null || !curContext.preserveSpace) + this.skipSpace(); + + this.start = this.pos; + this.startLoc = this.curPosition(); + if (this.pos >= this.input.length()) + return this.finishToken(TokenType.eof); + + if (curContext != null && curContext.override != null) + return curContext.override.apply(this); + else + return this.readToken(this.fullCharCodeAtPos()); + } + + protected Token readToken(int code) { + // Identifier or keyword. '\\uXXXX' sequences are allowed in + // identifiers, so '\' also dispatches to that. + if (Identifiers.isIdentifierStart(code, this.options.ecmaVersion() >= 6) || code == 92 /* '\' */) + return this.readWord(); + + return this.getTokenFromCode(code); + } + + protected int fullCharCodeAtPos() { + int code = charAt(this.pos); + if (code <= 0xd7ff || code >= 0xe000) + return code; + int next = charAt(this.pos + 1); + return (code << 10) + next - 0x35fdc00; + } + + protected void skipBlockComment() { + Position startLoc = this.options.onComment() != null ? this.curPosition() : null; + int start = this.pos, end = this.input.indexOf("*/", this.pos += 2); + if (end == -1) + this.raise(this.pos - 2, "Unterminated comment"); + this.pos = end + 2; + Matcher m = Whitespace.lineBreakG.matcher(this.input); + int next = start; + while (m.find(next) && m.start() < this.pos) { + ++this.curLine; + lineStart = m.end(); + next = lineStart; + } + if (this.options.onComment() != null) + this.options.onComment().call(true, this.input, inputSubstring(start + 2, end), start, this.pos, + startLoc, this.curPosition()); + } + + protected void skipLineComment(int startSkip) { + int start = this.pos; + Position startLoc = this.options.onComment() != null ? this.curPosition() : null; + this.pos += startSkip; + int ch = charAt(this.pos); + while (this.pos < this.input.length() && ch != 10 && ch != 13 && ch != 8232 && ch != 8233) { + ++this.pos; + ch = charAt(this.pos); + } + if (this.options.onComment() != null) + this.options.onComment().call(false, this.input, inputSubstring(start + startSkip, this.pos), start, this.pos, + startLoc, this.curPosition()); + } + + // Called at the start of the parse and after every token. Skips + // whitespace and comments, and. + + protected void skipSpace() { + loop: while (this.pos < this.input.length()) { + int ch = this.input.charAt(this.pos); + switch (ch) { + case 32: case 160: // ' ' + ++this.pos; + break; + case 13: + if (charAt(this.pos + 1) == 10) { + ++this.pos; + } + case 10: case 8232: case 8233: + ++this.pos; + ++this.curLine; + this.lineStart = this.pos; + break; + case 47: // '/' + switch (charAt(this.pos + 1)) { + case 42: // '*' + this.skipBlockComment(); + break; + case 47: + this.skipLineComment(2); + break; + default: + break loop; + } + break; + default: + if (ch > 8 && ch < 14 || ch >= 5760 && Whitespace.nonASCIIwhitespace.indexOf(ch) > -1) { + ++this.pos; + } else { + break loop; + } + } + } + } + + // Called at the end of every token. Sets `end`, `val`, and + // maintains `context` and `exprAllowed`, and skips the space after + // the token, so that the next one's `start` will point at the + // right position. + + protected Token finishToken(TokenType type, Object val) { + this.end = this.pos; + this.endLoc = this.curPosition(); + TokenType prevType = this.type; + this.type = type; + this.value = val; + this.updateContext(prevType); + return mkToken(); + } + + private Token mkToken() { + String src = inputSubstring(start, end); + SourceLocation loc = new SourceLocation(src, startLoc, endLoc); + String label, keyword; + if (isKeyword(src)) { + label = keyword = src; + } else { + label = type.label; + keyword = type.keyword; + } + return new Token(loc, label, keyword); + } + + protected boolean isKeyword(String src) { + if (type.keyword != null) + return true; + if (type == TokenType.name) { + if (keywords.contains(src)) + return true; + if (options.ecmaVersion() >= 6 && ("let".equals(src) || "yield".equals(src))) + return true; + } + return false; + } + + protected Token finishToken(TokenType type) { + return finishToken(type, null); + } + + // ### Token reading + + // This is the function that is called to fetch the next token. It + // is somewhat obscure, because it works in character codes rather + // than characters, and because operator parsing has been inlined + // into it. + // + // All in the name of speed. + // + private Token readToken_dot() { + int next = charAt(this.pos + 1); + if (next >= 48 && next <= 57) return this.readNumber(true); + int next2 = charAt(this.pos + 2); + if (this.options.ecmaVersion() >= 6 && next == 46 && next2 == 46) { // 46 = dot '.' + this.pos += 3; + return this.finishToken(TokenType.ellipsis); + } else { + ++this.pos; + return this.finishToken(TokenType.dot); + } + } + + private Token readToken_slash() { // '/' + int next = charAt(this.pos + 1); + if (this.exprAllowed) { + ++this.pos; + return this.readRegexp(); + } + if (next == 61) + return this.finishOp(TokenType.assign, 2); + return this.finishOp(TokenType.slash, 1); + } + + private Token readToken_mult_modulo_exp(int code) { // '%*' + int next = charAt(this.pos + 1); + int size = 1; + TokenType tokentype = code == 42 ? TokenType.star : TokenType.modulo; + + // exponentiation operator ** and **= + if (this.options.ecmaVersion() >= 7 && code == 42 && next == 42) { + ++size; + tokentype = TokenType.starstar; + next = charAt(this.pos + 2); + } + + if (next == 61) + return this.finishOp(TokenType.assign, size + 1); + return this.finishOp(tokentype, size); + } + + private Token readToken_pipe_amp(int code) { // '|&' + int next = charAt(this.pos + 1); + if (next == code) + return this.finishOp(code == 124 ? TokenType.logicalOR : TokenType.logicalAND, 2); + if (next == 61) + return this.finishOp(TokenType.assign, 2); + return this.finishOp(code == 124 ? TokenType.bitwiseOR : TokenType.bitwiseAND, 1); + } + + private Token readToken_caret() { // '^' + int next = charAt(this.pos + 1); + if (next == 61) + return this.finishOp(TokenType.assign, 2); + return this.finishOp(TokenType.bitwiseXOR, 1); + } + + private Token readToken_plus_min(int code) { // '+-' + int next = charAt(this.pos + 1); + if (next == code) { + if (next == 45 && charAt(this.pos + 2) == 62 && + inputSubstring(this.lastTokEnd, this.pos).matches("(?s).*(?:" + lineBreak + ").*")) { + // A `-->` line comment + this.skipLineComment(3); + this.skipSpace(); + return this.nextToken(); + } + return this.finishOp(TokenType.incDec, 2); + } + if (next == 61) + return this.finishOp(TokenType.assign, 2); + return this.finishOp(TokenType.plusMin, 1); + } + + private Token readToken_lt_gt(int code) { // '<>' + int next = charAt(this.pos + 1); + int size = 1; + if (next == code) { + size = code == 62 && charAt(this.pos + 2) == 62 ? 3 : 2; + if (charAt(this.pos + size) == 61) + return this.finishOp(TokenType.assign, size + 1); + return this.finishOp(TokenType.bitShift, size); + } + if (next == 33 && code == 60 && charAt(this.pos + 2) == 45 && + charAt(this.pos + 3) == 45) { + if (this.inModule) + this.unexpected(); + // ` another HTML comment \ No newline at end of file diff --git a/javascript/extractor/tests/comments/input/empty_comment.js b/javascript/extractor/tests/comments/input/empty_comment.js new file mode 100644 index 00000000000..9d6f459ad89 --- /dev/null +++ b/javascript/extractor/tests/comments/input/empty_comment.js @@ -0,0 +1 @@ +/**/ diff --git a/javascript/extractor/tests/comments/input/jsdoc.js b/javascript/extractor/tests/comments/input/jsdoc.js new file mode 100644 index 00000000000..e8b4b59c3bf --- /dev/null +++ b/javascript/extractor/tests/comments/input/jsdoc.js @@ -0,0 +1,17 @@ +/** + * This is a constant. + * + * @const x + */ +/** @class {Object} klass */ +/** @deprecated */ +/** @param {(int|bool)} x + * @param {Array.} ys + * @param {String[]} zs + * @param {function(new:goog.ui.Menu, ?string=, number=): void} f + * @param {...number} var_args + */ +/** + * @param {Function(DOMNode)} + * @param {Function(DOMNode)} x + */ diff --git a/javascript/extractor/tests/comments/output/trap/comments.js.trap b/javascript/extractor/tests/comments/output/trap/comments.js.trap new file mode 100644 index 00000000000..46de25e43c9 --- /dev/null +++ b/javascript/extractor/tests/comments/output/trap/comments.js.trap @@ -0,0 +1,83 @@ +#10000=@"/comments.js;sourcefile" +files(#10000,"/comments.js","comments","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,5,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) +#20013=* +lines(#20013,#20001,"// line comment"," +") +hasLocation(#20013,#20004) +#20014=* +lines(#20014,#20001,"/* block comment */"," +") +hasLocation(#20014,#20006) +#20015=* +lines(#20015,#20001,"/** doc comment */"," +") +hasLocation(#20015,#20008) +#20016=* +lines(#20016,#20001," another HTML comment","") +hasLocation(#20017,#20012) +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) +#20023=* +jsdoc(#20023,"doc comment",#20007) +hasLocation(#20023,#20008) +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 new file mode 100644 index 00000000000..7324758d274 --- /dev/null +++ b/javascript/extractor/tests/comments/output/trap/empty_comment.js.trap @@ -0,0 +1,42 @@ +#10000=@"/empty_comment.js;sourcefile" +files(#10000,"/empty_comment.js","empty_comment","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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,"/**/"," +") +hasLocation(#20005,#20004) +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) +#20008=* +entry_cfg_node(#20008,#20001) +#20009=@"loc,{#10000},1,1,1,0" +locations_default(#20009,#10000,1,1,1,0) +hasLocation(#20008,#20009) +#20010=* +exit_cfg_node(#20010,#20001) +hasLocation(#20010,#20007) +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 new file mode 100644 index 00000000000..5c0c6c543b0 --- /dev/null +++ b/javascript/extractor/tests/comments/output/trap/jsdoc.js.trap @@ -0,0 +1,303 @@ +#10000=@"/jsdoc.js;sourcefile" +files(#10000,"/jsdoc.js","jsdoc","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,18,0" +locations_default(#20002,#10000,1,1,18,0) +hasLocation(#20001,#20002) +#20003=* +comments(#20003,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 + * @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," + * @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=* +lines(#20013,#20001,"/**"," +") +#20014=@"loc,{#10000},1,1,1,3" +locations_default(#20014,#10000,1,1,1,3) +hasLocation(#20013,#20014) +#20015=* +lines(#20015,#20001," * This is a constant."," +") +#20016=@"loc,{#10000},2,1,2,22" +locations_default(#20016,#10000,2,1,2,22) +hasLocation(#20015,#20016) +indentation(#10000,2," ",1) +#20017=* +lines(#20017,#20001," * "," +") +#20018=@"loc,{#10000},3,1,3,3" +locations_default(#20018,#10000,3,1,3,3) +hasLocation(#20017,#20018) +indentation(#10000,3," ",1) +#20019=* +lines(#20019,#20001," * @const x"," +") +#20020=@"loc,{#10000},4,1,4,11" +locations_default(#20020,#10000,4,1,4,11) +hasLocation(#20019,#20020) +indentation(#10000,4," ",1) +#20021=* +lines(#20021,#20001," */"," +") +#20022=@"loc,{#10000},5,1,5,3" +locations_default(#20022,#10000,5,1,5,3) +hasLocation(#20021,#20022) +indentation(#10000,5," ",1) +#20023=* +lines(#20023,#20001,"/** @class {Object} klass */"," +") +hasLocation(#20023,#20006) +#20024=* +lines(#20024,#20001,"/** @deprecated */"," +") +hasLocation(#20024,#20008) +#20025=* +lines(#20025,#20001,"/** @param {(int|bool)} x"," +") +#20026=@"loc,{#10000},8,1,8,25" +locations_default(#20026,#10000,8,1,8,25) +hasLocation(#20025,#20026) +#20027=* +lines(#20027,#20001," * @param {Array.} ys"," +") +#20028=@"loc,{#10000},9,1,9,38" +locations_default(#20028,#10000,9,1,9,38) +hasLocation(#20027,#20028) +indentation(#10000,9," ",1) +#20029=* +lines(#20029,#20001," * @param {String[]} zs"," +") +#20030=@"loc,{#10000},10,1,10,24" +locations_default(#20030,#10000,10,1,10,24) +hasLocation(#20029,#20030) +indentation(#10000,10," ",1) +#20031=* +lines(#20031,#20001," * @param {function(new:goog.ui.Menu, ?string=, number=): void} f"," +") +#20032=@"loc,{#10000},11,1,11,66" +locations_default(#20032,#10000,11,1,11,66) +hasLocation(#20031,#20032) +indentation(#10000,11," ",1) +#20033=* +lines(#20033,#20001," * @param {...number} var_args"," +") +#20034=@"loc,{#10000},12,1,12,31" +locations_default(#20034,#10000,12,1,12,31) +hasLocation(#20033,#20034) +indentation(#10000,12," ",1) +#20035=* +lines(#20035,#20001," */"," +") +#20036=@"loc,{#10000},13,1,13,3" +locations_default(#20036,#10000,13,1,13,3) +hasLocation(#20035,#20036) +indentation(#10000,13," ",1) +#20037=* +lines(#20037,#20001,"/**"," +") +#20038=@"loc,{#10000},14,1,14,3" +locations_default(#20038,#10000,14,1,14,3) +hasLocation(#20037,#20038) +#20039=* +lines(#20039,#20001," * @param {Function(DOMNode)}"," +") +#20040=@"loc,{#10000},15,1,15,29" +locations_default(#20040,#10000,15,1,15,29) +hasLocation(#20039,#20040) +indentation(#10000,15," ",1) +#20041=* +lines(#20041,#20001," * @param {Function(DOMNode)} x"," +") +#20042=@"loc,{#10000},16,1,16,31" +locations_default(#20042,#10000,16,1,16,31) +hasLocation(#20041,#20042) +indentation(#10000,16," ",1) +#20043=* +lines(#20043,#20001," */"," +") +#20044=@"loc,{#10000},17,1,17,3" +locations_default(#20044,#10000,17,1,17,3) +hasLocation(#20043,#20044) +indentation(#10000,17," ",1) +numlines(#20001,17,0,17) +#20045=* +tokeninfo(#20045,0,#20001,0,"") +#20046=@"loc,{#10000},18,1,18,0" +locations_default(#20046,#10000,18,1,18,0) +hasLocation(#20045,#20046) +next_token(#20003,#20045) +next_token(#20005,#20045) +next_token(#20007,#20045) +next_token(#20009,#20045) +next_token(#20011,#20045) +#20047=* +entry_cfg_node(#20047,#20001) +#20048=@"loc,{#10000},1,1,1,0" +locations_default(#20048,#10000,1,1,1,0) +hasLocation(#20047,#20048) +#20049=* +exit_cfg_node(#20049,#20001) +hasLocation(#20049,#20046) +successor(#20047,#20049) +#20050=* +jsdoc(#20050,"This is a constant.",#20003) +hasLocation(#20050,#20004) +#20051=* +jsdoc_tags(#20051,"const",#20050,0,"@const") +#20052=@"loc,{#10000},4,4,4,9" +locations_default(#20052,#10000,4,4,4,9) +hasLocation(#20051,#20052) +jsdoc_tag_names(#20051,"x") +#20053=* +jsdoc(#20053,"",#20005) +hasLocation(#20053,#20006) +#20054=* +jsdoc_tags(#20054,"class",#20053,0,"@class") +#20055=@"loc,{#10000},6,5,6,10" +locations_default(#20055,#10000,6,5,6,10) +hasLocation(#20054,#20055) +jsdoc_tag_names(#20054,"klass") +#20056=* +jsdoc_type_exprs(#20056,5,#20054,0,"Object") +#20057=* +jsdoc(#20057,"",#20007) +hasLocation(#20057,#20008) +#20058=* +jsdoc_tags(#20058,"deprecated",#20057,0,"@deprecated") +#20059=@"loc,{#10000},7,5,7,15" +locations_default(#20059,#10000,7,5,7,15) +hasLocation(#20058,#20059) +#20060=* +jsdoc(#20060,"",#20009) +hasLocation(#20060,#20010) +#20061=* +jsdoc_tags(#20061,"param",#20060,0,"@param") +#20062=@"loc,{#10000},8,5,8,10" +locations_default(#20062,#10000,8,5,8,10) +hasLocation(#20061,#20062) +jsdoc_tag_names(#20061,"x") +#20063=* +jsdoc_type_exprs(#20063,11,#20061,0,"(int|bool)") +#20064=* +jsdoc_type_exprs(#20064,5,#20063,0,"int") +#20065=* +jsdoc_type_exprs(#20065,5,#20063,1,"bool") +#20066=* +jsdoc_tags(#20066,"param",#20060,1,"@param") +#20067=@"loc,{#10000},9,5,9,10" +locations_default(#20067,#10000,9,5,9,10) +hasLocation(#20066,#20067) +jsdoc_tag_names(#20066,"ys") +#20068=* +jsdoc_type_exprs(#20068,6,#20066,0,"Array.") +#20069=* +jsdoc_type_exprs(#20069,5,#20068,-1,"Array") +#20070=* +jsdoc_type_exprs(#20070,5,#20068,0,"String") +#20071=* +jsdoc_type_exprs(#20071,5,#20068,1,"Number") +#20072=* +jsdoc_tags(#20072,"param",#20060,2,"@param") +#20073=@"loc,{#10000},10,5,10,10" +locations_default(#20073,#10000,10,5,10,10) +hasLocation(#20072,#20073) +jsdoc_tag_names(#20072,"zs") +#20074=* +jsdoc_type_exprs(#20074,6,#20072,0,"Array.") +#20075=* +jsdoc_type_exprs(#20075,5,#20074,-1,"Array") +#20076=* +jsdoc_type_exprs(#20076,5,#20074,0,"String") +#20077=* +jsdoc_tags(#20077,"param",#20060,3,"@param") +#20078=@"loc,{#10000},11,5,11,10" +locations_default(#20078,#10000,11,5,11,10) +hasLocation(#20077,#20078) +jsdoc_tag_names(#20077,"f") +#20079=* +jsdoc_type_exprs(#20079,12,#20077,0,"function (new: goog.ui.Menu, ?string=, number=): void") +#20080=* +jsdoc_type_exprs(#20080,13,#20079,0,"?string=") +#20081=* +jsdoc_type_exprs(#20081,7,#20080,0,"?string") +#20082=* +jsdoc_type_exprs(#20082,5,#20081,0,"string") +jsdoc_prefix_qualifier(#20081) +#20083=* +jsdoc_type_exprs(#20083,13,#20079,1,"number=") +#20084=* +jsdoc_type_exprs(#20084,5,#20083,0,"number") +#20085=* +jsdoc_type_exprs(#20085,4,#20079,-1,"void") +#20086=* +jsdoc_type_exprs(#20086,5,#20079,-2,"goog.ui.Menu") +jsdoc_has_new_parameter(#20079) +#20087=* +jsdoc_tags(#20087,"param",#20060,4,"@param") +#20088=@"loc,{#10000},12,5,12,10" +locations_default(#20088,#10000,12,5,12,10) +hasLocation(#20087,#20088) +jsdoc_tag_names(#20087,"var_args") +#20089=* +jsdoc_type_exprs(#20089,14,#20087,0,"...number") +#20090=* +jsdoc_type_exprs(#20090,5,#20089,0,"number") +#20091=* +jsdoc(#20091,"",#20011) +hasLocation(#20091,#20012) +#20092=* +jsdoc_tags(#20092,"param",#20091,0,"@param") +#20093=@"loc,{#10000},15,4,15,9" +locations_default(#20093,#10000,15,4,15,9) +hasLocation(#20092,#20093) +#20094=* +jsdoc_errors(#20094,#20092,"Missing or invalid tag name","Missing ... ag name") +#20095=* +jsdoc_tags(#20095,"param",#20091,1,"@param") +#20096=@"loc,{#10000},16,4,16,9" +locations_default(#20096,#10000,16,4,16,9) +hasLocation(#20095,#20096) +jsdoc_tag_names(#20095,"x") +numlines(#10000,17,0,17) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/default-encoding/input/latin1.js b/javascript/extractor/tests/default-encoding/input/latin1.js new file mode 100644 index 00000000000..8e72c87ff25 --- /dev/null +++ b/javascript/extractor/tests/default-encoding/input/latin1.js @@ -0,0 +1 @@ +function f(ä, ö) {} diff --git a/javascript/extractor/tests/default-encoding/options.json b/javascript/extractor/tests/default-encoding/options.json new file mode 100644 index 00000000000..a4c301a8d29 --- /dev/null +++ b/javascript/extractor/tests/default-encoding/options.json @@ -0,0 +1,3 @@ +{ + "default-encoding": "latin1" +} diff --git a/javascript/extractor/tests/default-encoding/output/trap/latin1.js.trap b/javascript/extractor/tests/default-encoding/output/trap/latin1.js.trap new file mode 100644 index 00000000000..3a8205e2292 --- /dev/null +++ b/javascript/extractor/tests/default-encoding/output/trap/latin1.js.trap @@ -0,0 +1,139 @@ +#10000=@"/latin1.js;sourcefile" +files(#10000,"/latin1.js","latin1","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,2,0" +locations_default(#20002,#10000,1,1,2,0) +hasLocation(#20001,#20002) +#20003=@"var;{f};{#20000}" +variables(#20003,"f",#20000) +#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) +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;{ä};{#20008}" +variables(#20009,"ä",#20008) +#20010=* +exprs(#20010,78,#20004,0,"\u00e4") +#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) +#20016=* +stmts(#20016,1,#20004,-2,"{}") +#20017=@"loc,{#10000},1,18,1,19" +locations_default(#20017,#10000,1,18,1,19) +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) +#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,"ä") +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) +#20027=* +tokeninfo(#20027,6,#20001,5,"ö") +hasLocation(#20027,#20014) +#20028=* +tokeninfo(#20028,8,#20001,6,")") +#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,18,1,18" +locations_default(#20031,#10000,1,18,1,18) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,8,"}") +#20033=@"loc,{#10000},1,19,1,19" +locations_default(#20033,#10000,1,19,1,19) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,0,#20001,9,"") +#20035=@"loc,{#10000},2,1,2,0" +locations_default(#20035,#10000,2,1,2,0) +hasLocation(#20034,#20035) +#20036=* +entry_cfg_node(#20036,#20001) +#20037=@"loc,{#10000},1,1,1,0" +locations_default(#20037,#10000,1,1,1,0) +hasLocation(#20036,#20037) +#20038=* +exit_cfg_node(#20038,#20001) +hasLocation(#20038,#20035) +successor(#20004,#20038) +#20039=* +entry_cfg_node(#20039,#20004) +hasLocation(#20039,#20037) +#20040=* +exit_cfg_node(#20040,#20004) +#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) +numlines(#10000,1,1,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/encoding/input/surrogates.js b/javascript/extractor/tests/encoding/input/surrogates.js new file mode 100644 index 00000000000..12ff8b4993a --- /dev/null +++ b/javascript/extractor/tests/encoding/input/surrogates.js @@ -0,0 +1,13 @@ +// lone surrogate halves +'\ud800'; +'foo\ud800'; +'\ud800bar'; +'foo\ud800bar'; +/\uD800/; +/foo\ud800/; +/\ud800bar/; +/foo\ud800bar/; +// wrong order +'\udc00\ud800'; +// OK +'\uD834\uDF06'; diff --git a/javascript/extractor/tests/encoding/input/unicode.js b/javascript/extractor/tests/encoding/input/unicode.js new file mode 100644 index 00000000000..2e943d98387 --- /dev/null +++ b/javascript/extractor/tests/encoding/input/unicode.js @@ -0,0 +1 @@ +"Semmlé" \ No newline at end of file diff --git a/javascript/extractor/tests/encoding/output/trap/surrogates.js.trap b/javascript/extractor/tests/encoding/output/trap/surrogates.js.trap new file mode 100644 index 00000000000..a277e749213 --- /dev/null +++ b/javascript/extractor/tests/encoding/output/trap/surrogates.js.trap @@ -0,0 +1,453 @@ +#10000=@"/surrogates.js;sourcefile" +files(#10000,"/surrogates.js","surrogates","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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) +#20009=* +exprs(#20009,4,#20007,0,"'foo\ud800'") +#20010=@"loc,{#10000},3,1,3,11" +locations_default(#20010,#10000,3,1,3,11) +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) +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) +hasLocation(#20013,#20014) +enclosingStmt(#20013,#20011) +exprContainers(#20013,#20001) +literals("?bar","'\ud800bar'",#20013) +#20015=* +stmts(#20015,2,#20001,3,"'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) +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) +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) +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) +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) +#20029=* +regexpterm(#20029,1,#20027,0,"foo\ud800") +#20030=@"loc,{#10000},7,2,7,10" +locations_default(#20030,#10000,7,2,7,10) +hasLocation(#20029,#20030) +#20031=* +regexpterm(#20031,14,#20029,0,"f") +#20032=@"loc,{#10000},7,2,7,2" +locations_default(#20032,#10000,7,2,7,2) +hasLocation(#20031,#20032) +regexpConstValue(#20031,"f") +#20033=* +regexpterm(#20033,14,#20029,1,"o") +#20034=@"loc,{#10000},7,3,7,3" +locations_default(#20034,#10000,7,3,7,3) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +hasLocation(#20063,#20064) +regexpConstValue(#20063,"o") +#20065=* +regexpterm(#20065,16,#20057,3,"\ud800") +#20066=@"loc,{#10000},9,5,9,10" +locations_default(#20066,#10000,9,5,9,10) +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) +hasLocation(#20067,#20068) +regexpConstValue(#20067,"b") +#20069=* +regexpterm(#20069,14,#20057,5,"a") +#20070=@"loc,{#10000},9,12,9,12" +locations_default(#20070,#10000,9,12,9,12) +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) +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) +#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) +exprContainers(#20075,#20001) +literals("??","'\udc00\ud800'",#20075) +#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) +#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) +exprContainers(#20079,#20001) +literals("ðŒ†","'\uD834\uDF06'",#20079) +#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) +#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) +#20087=* +lines(#20087,#20001,"// lone surrogate halves"," +") +hasLocation(#20087,#20082) +#20088=* +lines(#20088,#20001,"'\ud800';"," +") +hasLocation(#20088,#20004) +#20089=* +lines(#20089,#20001,"'foo\ud800';"," +") +hasLocation(#20089,#20008) +#20090=* +lines(#20090,#20001,"'\ud800bar';"," +") +hasLocation(#20090,#20012) +#20091=* +lines(#20091,#20001,"'foo\ud800bar';"," +") +hasLocation(#20091,#20016) +#20092=* +lines(#20092,#20001,"/\uD800/;"," +") +hasLocation(#20092,#20020) +#20093=* +lines(#20093,#20001,"/foo\ud800/;"," +") +hasLocation(#20093,#20026) +#20094=* +lines(#20094,#20001,"/\ud800bar/;"," +") +hasLocation(#20094,#20040) +#20095=* +lines(#20095,#20001,"/foo\ud800bar/;"," +") +hasLocation(#20095,#20054) +#20096=* +lines(#20096,#20001,"// wrong order"," +") +hasLocation(#20096,#20084) +#20097=* +lines(#20097,#20001,"'\udc00\ud800';"," +") +hasLocation(#20097,#20074) +#20098=* +lines(#20098,#20001,"// OK"," +") +hasLocation(#20098,#20086) +#20099=* +lines(#20099,#20001,"'\uD834\uDF06';"," +") +hasLocation(#20099,#20078) +numlines(#20001,13,10,3) +#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) +#20104=* +tokeninfo(#20104,8,#20001,3,";") +#20105=@"loc,{#10000},3,12,3,12" +locations_default(#20105,#10000,3,12,3,12) +hasLocation(#20104,#20105) +#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) +#20110=* +tokeninfo(#20110,8,#20001,7,";") +#20111=@"loc,{#10000},5,15,5,15" +locations_default(#20111,#10000,5,15,5,15) +hasLocation(#20110,#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) +#20116=* +tokeninfo(#20116,8,#20001,11,";") +#20117=@"loc,{#10000},7,12,7,12" +locations_default(#20117,#10000,7,12,7,12) +hasLocation(#20116,#20117) +#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) +#20122=* +tokeninfo(#20122,8,#20001,15,";") +#20123=@"loc,{#10000},9,15,9,15" +locations_default(#20123,#10000,9,15,9,15) +hasLocation(#20122,#20123) +#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) +#20128=* +tokeninfo(#20128,8,#20001,19,";") +#20129=@"loc,{#10000},13,15,13,15" +locations_default(#20129,#10000,13,15,13,15) +hasLocation(#20128,#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) +#20132=* +entry_cfg_node(#20132,#20001) +#20133=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..a264d715a00 --- /dev/null +++ b/javascript/extractor/tests/encoding/output/trap/unicode.js.trap @@ -0,0 +1,50 @@ +#10000=@"/unicode.js;sourcefile" +files(#10000,"/unicode.js","unicode","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,8" +locations_default(#20002,#10000,1,1,1,8) +hasLocation(#20001,#20002) +#20003=* +stmts(#20003,2,#20001,0,"""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) +numlines(#20001,1,1,0) +#20006=* +tokeninfo(#20006,4,#20001,0,"""Semmlé""") +hasLocation(#20006,#20002) +#20007=* +tokeninfo(#20007,0,#20001,1,"") +#20008=@"loc,{#10000},1,9,1,8" +locations_default(#20008,#10000,1,9,1,8) +hasLocation(#20007,#20008) +#20009=* +entry_cfg_node(#20009,#20001) +#20010=@"loc,{#10000},1,1,1,0" +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) +numlines(#10000,1,1,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/errors/input/empty.js b/javascript/extractor/tests/errors/input/empty.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/javascript/extractor/tests/errors/input/errors.js b/javascript/extractor/tests/errors/input/errors.js new file mode 100644 index 00000000000..d4b710ab0bc --- /dev/null +++ b/javascript/extractor/tests/errors/input/errors.js @@ -0,0 +1 @@ +hi~~ \ No newline at end of file diff --git a/javascript/extractor/tests/errors/input/incomplete.js b/javascript/extractor/tests/errors/input/incomplete.js new file mode 100644 index 00000000000..e45ee6a0a2e --- /dev/null +++ b/javascript/extractor/tests/errors/input/incomplete.js @@ -0,0 +1 @@ +if (b) { diff --git a/javascript/extractor/tests/errors/input/json.js b/javascript/extractor/tests/errors/input/json.js new file mode 100644 index 00000000000..8a6a12ea4e2 --- /dev/null +++ b/javascript/extractor/tests/errors/input/json.js @@ -0,0 +1,3 @@ +{ + "a": 42 +} \ No newline at end of file diff --git a/javascript/extractor/tests/errors/input/weirdassign.js b/javascript/extractor/tests/errors/input/weirdassign.js new file mode 100644 index 00000000000..65f256265af --- /dev/null +++ b/javascript/extractor/tests/errors/input/weirdassign.js @@ -0,0 +1 @@ +a %*= 1 \ No newline at end of file diff --git a/javascript/extractor/tests/errors/output/trap/empty.js.trap b/javascript/extractor/tests/errors/output/trap/empty.js.trap new file mode 100644 index 00000000000..356a53c1f80 --- /dev/null +++ b/javascript/extractor/tests/errors/output/trap/empty.js.trap @@ -0,0 +1,28 @@ +#10000=@"/empty.js;sourcefile" +files(#10000,"/empty.js","empty","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +#20004=* +entry_cfg_node(#20004,#20001) +hasLocation(#20004,#20002) +#20005=* +exit_cfg_node(#20005,#20001) +hasLocation(#20005,#20002) +successor(#20004,#20005) +numlines(#10000,0,0,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/errors/output/trap/errors.js.trap b/javascript/extractor/tests/errors/output/trap/errors.js.trap new file mode 100644 index 00000000000..e5afaf5044a --- /dev/null +++ b/javascript/extractor/tests/errors/output/trap/errors.js.trap @@ -0,0 +1,28 @@ +#10000=@"/errors.js;sourcefile" +files(#10000,"/errors.js","errors","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,1" +locations_default(#20002,#10000,1,1,1,1) +hasLocation(#20001,#20002) +#20003=* +jsParseErrors(#20003,#20001,"Error: Unexpected token","hi~~") +#20004=@"loc,{#10000},1,3,1,3" +locations_default(#20004,#10000,1,3,1,3) +hasLocation(#20003,#20004) +#20005=* +lines(#20005,#20001,"hi~~","") +#20006=@"loc,{#10000},1,1,1,4" +locations_default(#20006,#10000,1,1,1,4) +hasLocation(#20005,#20006) +numlines(#20001,1,0,0) +numlines(#10000,1,0,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/errors/output/trap/incomplete.js.trap b/javascript/extractor/tests/errors/output/trap/incomplete.js.trap new file mode 100644 index 00000000000..84bd91ea037 --- /dev/null +++ b/javascript/extractor/tests/errors/output/trap/incomplete.js.trap @@ -0,0 +1,27 @@ +#10000=@"/incomplete.js;sourcefile" +files(#10000,"/incomplete.js","incomplete","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,1" +locations_default(#20002,#10000,1,1,1,1) +hasLocation(#20001,#20002) +#20003=* +jsParseErrors(#20003,#20001,"Error: Unexpected token","") +hasLocation(#20003,#20002) +#20004=* +lines(#20004,#20001,"if (b) {"," +") +#20005=@"loc,{#10000},1,1,1,8" +locations_default(#20005,#10000,1,1,1,8) +hasLocation(#20004,#20005) +numlines(#20001,1,0,0) +numlines(#10000,1,0,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/errors/output/trap/json.js.trap b/javascript/extractor/tests/errors/output/trap/json.js.trap new file mode 100644 index 00000000000..b8381dd7925 --- /dev/null +++ b/javascript/extractor/tests/errors/output/trap/json.js.trap @@ -0,0 +1,24 @@ +#10000=@"/json.js;sourcefile" +files(#10000,"/json.js","json","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=* +json(#20001,5,#10000,0,"{\n ""a"": 42\n}") +#20002=@"loc,{#10000},1,1,3,1" +locations_default(#20002,#10000,1,1,3,1) +hasLocation(#20001,#20002) +#20003=* +json(#20003,2,#20001,0,"42") +#20004=@"loc,{#10000},2,8,2,9" +locations_default(#20004,#10000,2,8,2,9) +hasLocation(#20003,#20004) +json_literals("42","42",#20003) +json_properties(#20001,"a",#20003) +numlines(#10000,3,0,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/errors/output/trap/weirdassign.js.trap b/javascript/extractor/tests/errors/output/trap/weirdassign.js.trap new file mode 100644 index 00000000000..c768fdecdbf --- /dev/null +++ b/javascript/extractor/tests/errors/output/trap/weirdassign.js.trap @@ -0,0 +1,28 @@ +#10000=@"/weirdassign.js;sourcefile" +files(#10000,"/weirdassign.js","weirdassign","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,1" +locations_default(#20002,#10000,1,1,1,1) +hasLocation(#20001,#20002) +#20003=* +jsParseErrors(#20003,#20001,"Error: Unexpected token","a %*= 1") +#20004=@"loc,{#10000},1,4,1,4" +locations_default(#20004,#10000,1,4,1,4) +hasLocation(#20003,#20004) +#20005=* +lines(#20005,#20001,"a %*= 1","") +#20006=@"loc,{#10000},1,1,1,7" +locations_default(#20006,#10000,1,1,1,7) +hasLocation(#20005,#20006) +numlines(#20001,1,0,0) +numlines(#10000,1,0,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2015/input/array_pattern_with_default.js b/javascript/extractor/tests/es2015/input/array_pattern_with_default.js new file mode 100644 index 00000000000..f994e073f58 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/array_pattern_with_default.js @@ -0,0 +1 @@ +[x=42] = []; \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/array_pattern_with_rest.js b/javascript/extractor/tests/es2015/input/array_pattern_with_rest.js new file mode 100644 index 00000000000..2d029f541f1 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/array_pattern_with_rest.js @@ -0,0 +1,4 @@ +function cdr(o) { + var [, ...ys] = o; + return ys; +} \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/arrowfn.js b/javascript/extractor/tests/es2015/input/arrowfn.js new file mode 100644 index 00000000000..34dbd816331 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/arrowfn.js @@ -0,0 +1,3 @@ +["a", "ab", "abc"].map(s => s.length); +setInterval(() => ++cnt, 1000); +setTimeout(() => { alert("Wake up!"); }, 60000); \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/class_accessors.js b/javascript/extractor/tests/es2015/input/class_accessors.js new file mode 100644 index 00000000000..a9f030fdadf --- /dev/null +++ b/javascript/extractor/tests/es2015/input/class_accessors.js @@ -0,0 +1,8 @@ +class A { + get x() { + return this._x; + } + set x(v) { + this._x = +v; + } +} \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/class_ctor.js b/javascript/extractor/tests/es2015/input/class_ctor.js new file mode 100644 index 00000000000..5caff3b5cc8 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/class_ctor.js @@ -0,0 +1,5 @@ +class A { + constructor(x) { + this.x = x; + } +} \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/class_extends.js b/javascript/extractor/tests/es2015/input/class_extends.js new file mode 100644 index 00000000000..690e5e58cbc --- /dev/null +++ b/javascript/extractor/tests/es2015/input/class_extends.js @@ -0,0 +1 @@ +class Point extends Object {} \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/class_extends2.js b/javascript/extractor/tests/es2015/input/class_extends2.js new file mode 100644 index 00000000000..6581dc62c19 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/class_extends2.js @@ -0,0 +1 @@ +class Point extends (Math.random() ? Object : Array) {} \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/class_method.js b/javascript/extractor/tests/es2015/input/class_method.js new file mode 100644 index 00000000000..3fc2edf9bb8 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/class_method.js @@ -0,0 +1,5 @@ +class A { + getX() { + return this.x; + } +} \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/class_static.js b/javascript/extractor/tests/es2015/input/class_static.js new file mode 100644 index 00000000000..0b38ac7512e --- /dev/null +++ b/javascript/extractor/tests/es2015/input/class_static.js @@ -0,0 +1,5 @@ +class A { + static className() { + return "A"; + } +} \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/classdecl.js b/javascript/extractor/tests/es2015/input/classdecl.js new file mode 100644 index 00000000000..bbdacc85cea --- /dev/null +++ b/javascript/extractor/tests/es2015/input/classdecl.js @@ -0,0 +1 @@ +class Point {} \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/classexpr.js b/javascript/extractor/tests/es2015/input/classexpr.js new file mode 100644 index 00000000000..82793bca968 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/classexpr.js @@ -0,0 +1 @@ +(class Point {}) \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/classexpr2.js b/javascript/extractor/tests/es2015/input/classexpr2.js new file mode 100644 index 00000000000..9c4da410651 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/classexpr2.js @@ -0,0 +1 @@ +(class {}) \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/complex_array_pattern.js b/javascript/extractor/tests/es2015/input/complex_array_pattern.js new file mode 100644 index 00000000000..ab2cfa77cbe --- /dev/null +++ b/javascript/extractor/tests/es2015/input/complex_array_pattern.js @@ -0,0 +1 @@ +[o.x] = [42]; \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/complex_object_pattern.js b/javascript/extractor/tests/es2015/input/complex_object_pattern.js new file mode 100644 index 00000000000..1463e6aa17f --- /dev/null +++ b/javascript/extractor/tests/es2015/input/complex_object_pattern.js @@ -0,0 +1 @@ +({ x: o.x } = q); \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/const.js b/javascript/extractor/tests/es2015/input/const.js new file mode 100644 index 00000000000..3f6a49b23d5 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/const.js @@ -0,0 +1 @@ +const x = 23; diff --git a/javascript/extractor/tests/es2015/input/defaultargs.js b/javascript/extractor/tests/es2015/input/defaultargs.js new file mode 100644 index 00000000000..a9568a2dfbb --- /dev/null +++ b/javascript/extractor/tests/es2015/input/defaultargs.js @@ -0,0 +1 @@ +function f(x, y=x+19) {} \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/delegating_yield.js b/javascript/extractor/tests/es2015/input/delegating_yield.js new file mode 100644 index 00000000000..a2c997956d0 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/delegating_yield.js @@ -0,0 +1,3 @@ +function* f() { + yield* g(); +} \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/destructuring.js b/javascript/extractor/tests/es2015/input/destructuring.js new file mode 100644 index 00000000000..a9550055563 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/destructuring.js @@ -0,0 +1,13 @@ +function f([x, y]) { + var [a, [, c]] = x; + try { + throw [a, c]; + } catch (d) { + console.log(d); + } +} + +function g({ x, y: z }) { + var { [x]: w } = z; + return w; +} \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/export1.js b/javascript/extractor/tests/es2015/input/export1.js new file mode 100644 index 00000000000..7d1c0b20ba2 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/export1.js @@ -0,0 +1 @@ +export var x = 23; \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/export10.js b/javascript/extractor/tests/es2015/input/export10.js new file mode 100644 index 00000000000..81d540ae9be --- /dev/null +++ b/javascript/extractor/tests/es2015/input/export10.js @@ -0,0 +1 @@ +export default function f () {} [,] diff --git a/javascript/extractor/tests/es2015/input/export11.js b/javascript/extractor/tests/es2015/input/export11.js new file mode 100644 index 00000000000..a6e68e98389 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/export11.js @@ -0,0 +1 @@ +export default class {} diff --git a/javascript/extractor/tests/es2015/input/export2.js b/javascript/extractor/tests/es2015/input/export2.js new file mode 100644 index 00000000000..3ed5869c845 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/export2.js @@ -0,0 +1 @@ +export function f() {}; \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/export3.js b/javascript/extractor/tests/es2015/input/export3.js new file mode 100644 index 00000000000..a2e9fed4086 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/export3.js @@ -0,0 +1 @@ +export default function f() {}; \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/export4.js b/javascript/extractor/tests/es2015/input/export4.js new file mode 100644 index 00000000000..0cb726be328 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/export4.js @@ -0,0 +1 @@ +export default function () {}; \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/export5.js b/javascript/extractor/tests/es2015/input/export5.js new file mode 100644 index 00000000000..1c5d16dc319 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/export5.js @@ -0,0 +1,2 @@ +var x = 23, y = 42; +export { x, y as z }; \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/export6.js b/javascript/extractor/tests/es2015/input/export6.js new file mode 100644 index 00000000000..4fc6cbc015f --- /dev/null +++ b/javascript/extractor/tests/es2015/input/export6.js @@ -0,0 +1 @@ +export * from 'foo'; \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/export7.js b/javascript/extractor/tests/es2015/input/export7.js new file mode 100644 index 00000000000..4f4676a7f78 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/export7.js @@ -0,0 +1 @@ +export { x, y as z } from 'foo'; \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/export8.js b/javascript/extractor/tests/es2015/input/export8.js new file mode 100644 index 00000000000..5795b714b3e --- /dev/null +++ b/javascript/extractor/tests/es2015/input/export8.js @@ -0,0 +1,2 @@ +foo = 42; +export default foo; \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/export9.js b/javascript/extractor/tests/es2015/input/export9.js new file mode 100644 index 00000000000..cb38bd82cd6 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/export9.js @@ -0,0 +1 @@ +export default class C {} [,] diff --git a/javascript/extractor/tests/es2015/input/forof.js b/javascript/extractor/tests/es2015/input/forof.js new file mode 100644 index 00000000000..748a617c97c --- /dev/null +++ b/javascript/extractor/tests/es2015/input/forof.js @@ -0,0 +1,7 @@ +for (let x of [1,2,3]) { + let y = x+1; +} + +function f() { + for (var x of []); +} diff --git a/javascript/extractor/tests/es2015/input/import1.js b/javascript/extractor/tests/es2015/input/import1.js new file mode 100644 index 00000000000..4205bd1742e --- /dev/null +++ b/javascript/extractor/tests/es2015/input/import1.js @@ -0,0 +1 @@ +import x from 'foo'; \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/import2.js b/javascript/extractor/tests/es2015/input/import2.js new file mode 100644 index 00000000000..125ddd489d6 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/import2.js @@ -0,0 +1 @@ +import { y } from 'foo'; \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/import3.js b/javascript/extractor/tests/es2015/input/import3.js new file mode 100644 index 00000000000..4a8f61ce809 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/import3.js @@ -0,0 +1 @@ +import { y as z } from 'foo'; \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/import4.js b/javascript/extractor/tests/es2015/input/import4.js new file mode 100644 index 00000000000..8c5a33aba7a --- /dev/null +++ b/javascript/extractor/tests/es2015/input/import4.js @@ -0,0 +1 @@ +import x, { y as z } from 'foo'; \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/import5.js b/javascript/extractor/tests/es2015/input/import5.js new file mode 100644 index 00000000000..f86b4bb81e4 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/import5.js @@ -0,0 +1 @@ +import * as foo from 'foo'; \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/import6.js b/javascript/extractor/tests/es2015/input/import6.js new file mode 100644 index 00000000000..02155a9c1fd --- /dev/null +++ b/javascript/extractor/tests/es2015/input/import6.js @@ -0,0 +1 @@ +import 'foo'; \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/import7.js b/javascript/extractor/tests/es2015/input/import7.js new file mode 100644 index 00000000000..fbabae2ab93 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/import7.js @@ -0,0 +1,3 @@ +import x from 'foo'; +import 'bar'; +import { y as z } from 'baz'; \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/let.js b/javascript/extractor/tests/es2015/input/let.js new file mode 100644 index 00000000000..de994a4c635 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/let.js @@ -0,0 +1,12 @@ +{ + let x = 23; + { + let x = 42; + for (let x = x-19; x<42;) { + let x = 56; + console.log(x); + } + for (let x in { x: x }) + x; + } +} \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/let2.js b/javascript/extractor/tests/es2015/input/let2.js new file mode 100644 index 00000000000..6cfa07b7b4a --- /dev/null +++ b/javascript/extractor/tests/es2015/input/let2.js @@ -0,0 +1 @@ +let /* **/ x = 42; diff --git a/javascript/extractor/tests/es2015/input/nested_import.js b/javascript/extractor/tests/es2015/input/nested_import.js new file mode 100644 index 00000000000..8726289cd31 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/nested_import.js @@ -0,0 +1,5 @@ +import { x } from 'm'; +if (!x) { + import { y } from 'm'; + x = y; +} diff --git a/javascript/extractor/tests/es2015/input/new_target.js b/javascript/extractor/tests/es2015/input/new_target.js new file mode 100644 index 00000000000..e8b7da37e37 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/new_target.js @@ -0,0 +1,3 @@ +function f() { + return !!new.target; +} \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/no-substitution.js b/javascript/extractor/tests/es2015/input/no-substitution.js new file mode 100644 index 00000000000..cf637de5885 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/no-substitution.js @@ -0,0 +1 @@ +`` diff --git a/javascript/extractor/tests/es2015/input/nullMethodName.js b/javascript/extractor/tests/es2015/input/nullMethodName.js new file mode 100644 index 00000000000..d4f11ac3388 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/nullMethodName.js @@ -0,0 +1,3 @@ +class C { + set [null](v) { } +} diff --git a/javascript/extractor/tests/es2015/input/odasa-2593.js b/javascript/extractor/tests/es2015/input/odasa-2593.js new file mode 100644 index 00000000000..88bbe024907 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/odasa-2593.js @@ -0,0 +1,4 @@ +function test() { + arguments; + let (arguments); +} \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/properties.js b/javascript/extractor/tests/es2015/input/properties.js new file mode 100644 index 00000000000..ffc5e7deb99 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/properties.js @@ -0,0 +1,6 @@ +var x = 42, + o = { + ["prop" + Math.random()]: 23, + x, + m() { return 56; } + }; \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/property_pattern_with_default.js b/javascript/extractor/tests/es2015/input/property_pattern_with_default.js new file mode 100644 index 00000000000..44586cea06f --- /dev/null +++ b/javascript/extractor/tests/es2015/input/property_pattern_with_default.js @@ -0,0 +1 @@ +({x = 1}) => x; \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/restparms.js b/javascript/extractor/tests/es2015/input/restparms.js new file mode 100644 index 00000000000..9a17224da97 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/restparms.js @@ -0,0 +1,2 @@ +function f(x, ...ys) { +} \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/restparms2.js b/javascript/extractor/tests/es2015/input/restparms2.js new file mode 100644 index 00000000000..068e9f8b712 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/restparms2.js @@ -0,0 +1,2 @@ +function f(x, ...[y, z]) { +} \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/spreadelement.js b/javascript/extractor/tests/es2015/input/spreadelement.js new file mode 100644 index 00000000000..78426a00d6c --- /dev/null +++ b/javascript/extractor/tests/es2015/input/spreadelement.js @@ -0,0 +1,2 @@ +[a, ...as]; +new Array(...elts); \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/super_call.js b/javascript/extractor/tests/es2015/input/super_call.js new file mode 100644 index 00000000000..455b7da65af --- /dev/null +++ b/javascript/extractor/tests/es2015/input/super_call.js @@ -0,0 +1,5 @@ +class A extends B { + m() { + return super.m() + 19; + } +} \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/super_ctor.js b/javascript/extractor/tests/es2015/input/super_ctor.js new file mode 100644 index 00000000000..7a3a3240983 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/super_ctor.js @@ -0,0 +1,5 @@ +class A extends B { + constructor() { + super(42); + } +} \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/templates.js b/javascript/extractor/tests/es2015/input/templates.js new file mode 100644 index 00000000000..bc818f707a7 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/templates.js @@ -0,0 +1,8 @@ +function tag(strings, ...values) { + return "values: " + values.join(', '); +} + +var x = 23; +var y = 19; +`${x} + ${y} = ${x + y}`; +tag `${x} + ${y} = ${x + y}`; \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/unknown_meta_property.js b/javascript/extractor/tests/es2015/input/unknown_meta_property.js new file mode 100644 index 00000000000..5fbb480b0b0 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/unknown_meta_property.js @@ -0,0 +1,3 @@ +function g() { + new.source; +} \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/yield.js b/javascript/extractor/tests/es2015/input/yield.js new file mode 100644 index 00000000000..a8ef8a45e1f --- /dev/null +++ b/javascript/extractor/tests/es2015/input/yield.js @@ -0,0 +1,5 @@ +function* foo(){ + var index = 0; + while(index <= 2) // when index reaches 2, yield's done will be true and its value will be undefined; + yield index++; +} \ No newline at end of file diff --git a/javascript/extractor/tests/es2015/input/yield2.js b/javascript/extractor/tests/es2015/input/yield2.js new file mode 100644 index 00000000000..56feae25084 --- /dev/null +++ b/javascript/extractor/tests/es2015/input/yield2.js @@ -0,0 +1,3 @@ +function* f() { + yield; +} 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 new file mode 100644 index 00000000000..797f4e5d80b --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/array_pattern_with_default.js.trap @@ -0,0 +1,128 @@ +#10000=@"/array_pattern_with_default.js;sourcefile" +files(#10000,"/array_pattern_with_default.js","array_pattern_with_default","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,12" +locations_default(#20002,#10000,1,1,1,12) +hasLocation(#20001,#20002) +#20003=* +stmts(#20003,2,#20001,0,"[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) +numlines(#20001,1,1,0) +#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,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) +#20022=* +tokeninfo(#20022,8,#20001,4,"]") +#20023=@"loc,{#10000},1,6,1,6" +locations_default(#20023,#10000,1,6,1,6) +hasLocation(#20022,#20023) +#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) +#20032=* +tokeninfo(#20032,0,#20001,9,"") +#20033=@"loc,{#10000},1,13,1,12" +locations_default(#20033,#10000,1,13,1,12) +hasLocation(#20032,#20033) +#20034=* +entry_cfg_node(#20034,#20001) +#20035=@"loc,{#10000},1,1,1,0" +locations_default(#20035,#10000,1,1,1,0) +hasLocation(#20034,#20035) +#20036=* +exit_cfg_node(#20036,#20001) +hasLocation(#20036,#20033) +successor(#20003,#20013) +successor(#20006,#20011) +successor(#20008,#20004) +successor(#20011,#20008) +successor(#20013,#20006) +successor(#20004,#20036) +successor(#20034,#20003) +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 new file mode 100644 index 00000000000..b1951e4ee50 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/array_pattern_with_rest.js.trap @@ -0,0 +1,252 @@ +#10000=@"/array_pattern_with_rest.js;sourcefile" +files(#10000,"/array_pattern_with_rest.js","array_pattern_with_rest","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,4,1" +locations_default(#20002,#10000,1,1,4,1) +hasLocation(#20001,#20002) +#20003=@"var;{cdr};{#20000}" +variables(#20003,"cdr",#20000) +#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) {"," +") +#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) +indentation(#10000,2," ",2) +#20033=* +lines(#20033,#20001," return ys;"," +") +#20034=@"loc,{#10000},3,1,3,12" +locations_default(#20034,#10000,3,1,3,12) +hasLocation(#20033,#20034) +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) +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) +#20040=* +tokeninfo(#20040,8,#20001,2,"(") +#20041=@"loc,{#10000},1,13,1,13" +locations_default(#20041,#10000,1,13,1,13) +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) +#20047=* +tokeninfo(#20047,7,#20001,6,"var") +#20048=@"loc,{#10000},2,3,2,5" +locations_default(#20048,#10000,2,3,2,5) +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) +#20051=* +tokeninfo(#20051,8,#20001,8,",") +#20052=@"loc,{#10000},2,8,2,8" +locations_default(#20052,#10000,2,8,2,8) +hasLocation(#20051,#20052) +#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) +#20056=* +tokeninfo(#20056,8,#20001,11,"]") +#20057=@"loc,{#10000},2,15,2,15" +locations_default(#20057,#10000,2,15,2,15) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,8,#20001,12,"=") +#20059=@"loc,{#10000},2,17,2,17" +locations_default(#20059,#10000,2,17,2,17) +hasLocation(#20058,#20059) +#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) +#20066=* +tokeninfo(#20066,8,#20001,17,";") +#20067=@"loc,{#10000},3,12,3,12" +locations_default(#20067,#10000,3,12,3,12) +hasLocation(#20066,#20067) +#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) +#20071=* +entry_cfg_node(#20071,#20001) +#20072=@"loc,{#10000},1,1,1,0" +locations_default(#20072,#10000,1,1,1,0) +hasLocation(#20071,#20072) +#20073=* +exit_cfg_node(#20073,#20001) +hasLocation(#20073,#20070) +successor(#20004,#20073) +#20074=* +entry_cfg_node(#20074,#20004) +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) +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 new file mode 100644 index 00000000000..7ae4740d76c --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/arrowfn.js.trap @@ -0,0 +1,543 @@ +#10000=@"/arrowfn.js;sourcefile" +files(#10000,"/arrowfn.js","arrowfn","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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);"," +") +hasLocation(#20071,#20004) +#20072=* +lines(#20072,#20001,"setInterval(() => ++cnt, 1000);"," +") +hasLocation(#20072,#20032) +#20073=* +lines(#20073,#20001,"setTimeout(() => { alert(""Wake up!""); }, 60000);","") +hasLocation(#20073,#20049) +numlines(#20001,3,3,0) +#20074=* +tokeninfo(#20074,8,#20001,0,"[") +#20075=@"loc,{#10000},1,1,1,1" +locations_default(#20075,#10000,1,1,1,1) +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) +#20080=* +tokeninfo(#20080,8,#20001,4,",") +#20081=@"loc,{#10000},1,11,1,11" +locations_default(#20081,#10000,1,11,1,11) +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) +#20088=* +tokeninfo(#20088,8,#20001,9,"(") +#20089=@"loc,{#10000},1,23,1,23" +locations_default(#20089,#10000,1,23,1,23) +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) +#20094=* +tokeninfo(#20094,8,#20001,13,".") +#20095=@"loc,{#10000},1,30,1,30" +locations_default(#20095,#10000,1,30,1,30) +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) +#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) +#20102=* +tokeninfo(#20102,8,#20001,18,"(") +#20103=@"loc,{#10000},2,12,2,12" +locations_default(#20103,#10000,2,12,2,12) +hasLocation(#20102,#20103) +#20104=* +tokeninfo(#20104,8,#20001,19,"(") +#20105=@"loc,{#10000},2,13,2,13" +locations_default(#20105,#10000,2,13,2,13) +hasLocation(#20104,#20105) +#20106=* +tokeninfo(#20106,8,#20001,20,")") +#20107=@"loc,{#10000},2,14,2,14" +locations_default(#20107,#10000,2,14,2,14) +hasLocation(#20106,#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) +#20110=* +tokeninfo(#20110,8,#20001,22,"++") +#20111=@"loc,{#10000},2,19,2,20" +locations_default(#20111,#10000,2,19,2,20) +hasLocation(#20110,#20111) +#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) +#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) +#20118=* +tokeninfo(#20118,8,#20001,27,";") +#20119=@"loc,{#10000},2,31,2,31" +locations_default(#20119,#10000,2,31,2,31) +hasLocation(#20118,#20119) +#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) +#20127=* +tokeninfo(#20127,8,#20001,32,"=>") +#20128=@"loc,{#10000},3,15,3,16" +locations_default(#20128,#10000,3,15,3,16) +hasLocation(#20127,#20128) +#20129=* +tokeninfo(#20129,8,#20001,33,"{") +#20130=@"loc,{#10000},3,18,3,18" +locations_default(#20130,#10000,3,18,3,18) +hasLocation(#20129,#20130) +#20131=* +tokeninfo(#20131,6,#20001,34,"alert") +hasLocation(#20131,#20065) +#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) +#20135=* +tokeninfo(#20135,8,#20001,37,")") +#20136=@"loc,{#10000},3,36,3,36" +locations_default(#20136,#10000,3,36,3,36) +hasLocation(#20135,#20136) +#20137=* +tokeninfo(#20137,8,#20001,38,";") +#20138=@"loc,{#10000},3,37,3,37" +locations_default(#20138,#10000,3,37,3,37) +hasLocation(#20137,#20138) +#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) +#20144=* +tokeninfo(#20144,8,#20001,42,")") +#20145=@"loc,{#10000},3,47,3,47" +locations_default(#20145,#10000,3,47,3,47) +hasLocation(#20144,#20145) +#20146=* +tokeninfo(#20146,8,#20001,43,";") +#20147=@"loc,{#10000},3,48,3,48" +locations_default(#20147,#10000,3,48,3,48) +hasLocation(#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) +#20150=* +entry_cfg_node(#20150,#20001) +#20151=@"loc,{#10000},1,1,1,0" +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) +#20153=* +entry_cfg_node(#20153,#20055) +#20154=@"loc,{#10000},3,12,3,11" +locations_default(#20154,#10000,3,12,3,11) +hasLocation(#20153,#20154) +#20155=* +exit_cfg_node(#20155,#20055) +#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) +#20157=* +entry_cfg_node(#20157,#20038) +#20158=@"loc,{#10000},2,13,2,12" +locations_default(#20158,#10000,2,13,2,12) +hasLocation(#20157,#20158) +#20159=* +exit_cfg_node(#20159,#20038) +#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) +#20161=* +entry_cfg_node(#20161,#20019) +#20162=@"loc,{#10000},1,24,1,23" +locations_default(#20162,#10000,1,24,1,23) +hasLocation(#20161,#20162) +#20163=* +exit_cfg_node(#20163,#20019) +#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) +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 new file mode 100644 index 00000000000..3fc1fbdf9c0 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/class_accessors.js.trap @@ -0,0 +1,475 @@ +#10000=@"/class_accessors.js;sourcefile" +files(#10000,"/class_accessors.js","class_accessors","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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) +#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,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) +#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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +#20058=* +scopes(#20058,1) +scopenodes(#20057,#20058) +scopenesting(#20058,#20008) +#20059=@"var;{arguments};{#20058}" +variables(#20059,"arguments",#20058) +isArgumentsObject(#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) +#20075=* +lines(#20075,#20001,"}","") +#20076=@"loc,{#10000},8,1,8,1" +locations_default(#20076,#10000,8,1,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) +#20080=* +tokeninfo(#20080,8,#20001,2,"{") +#20081=@"loc,{#10000},1,9,1,9" +locations_default(#20081,#10000,1,9,1,9) +hasLocation(#20080,#20081) +#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) +#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) +#20094=* +tokeninfo(#20094,8,#20001,10,".") +#20095=@"loc,{#10000},3,16,3,16" +locations_default(#20095,#10000,3,16,3,16) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,6,#20001,11,"_x") +hasLocation(#20096,#20026) +#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) +#20101=* +tokeninfo(#20101,6,#20001,14,"set") +#20102=@"loc,{#10000},5,3,5,5" +locations_default(#20102,#10000,5,3,5,5) +hasLocation(#20101,#20102) +#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) +#20107=* +tokeninfo(#20107,8,#20001,18,")") +#20108=@"loc,{#10000},5,10,5,10" +locations_default(#20108,#10000,5,10,5,10) +hasLocation(#20107,#20108) +#20109=* +tokeninfo(#20109,8,#20001,19,"{") +#20110=@"loc,{#10000},5,12,5,12" +locations_default(#20110,#10000,5,12,5,12) +hasLocation(#20109,#20110) +#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) +#20115=* +tokeninfo(#20115,8,#20001,23,"=") +#20116=@"loc,{#10000},6,13,6,13" +locations_default(#20116,#10000,6,13,6,13) +hasLocation(#20115,#20116) +#20117=* +tokeninfo(#20117,8,#20001,24,"+") +#20118=@"loc,{#10000},6,15,6,15" +locations_default(#20118,#10000,6,15,6,15) +hasLocation(#20117,#20118) +#20119=* +tokeninfo(#20119,6,#20001,25,"v") +hasLocation(#20119,#20053) +#20120=* +tokeninfo(#20120,8,#20001,26,";") +#20121=@"loc,{#10000},6,17,6,17" +locations_default(#20121,#10000,6,17,6,17) +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) +#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) +#20127=* +entry_cfg_node(#20127,#20001) +#20128=@"loc,{#10000},1,1,1,0" +locations_default(#20128,#10000,1,1,1,0) +hasLocation(#20127,#20128) +#20129=* +exit_cfg_node(#20129,#20001) +hasLocation(#20129,#20126) +successor(#20057,#20054) +#20130=* +entry_cfg_node(#20130,#20057) +hasLocation(#20130,#20055) +#20131=* +exit_cfg_node(#20131,#20057) +hasLocation(#20131,#20055) +successor(#20060,#20131) +successor(#20130,#20060) +successor(#20056,#20057) +successor(#20054,#20005) +successor(#20031,#20027) +#20132=* +entry_cfg_node(#20132,#20031) +#20133=@"loc,{#10000},5,8,5,7" +locations_default(#20133,#10000,5,8,5,7) +hasLocation(#20132,#20133) +#20134=* +exit_cfg_node(#20134,#20031) +#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) +#20136=* +entry_cfg_node(#20136,#20013) +#20137=@"loc,{#10000},2,8,2,7" +locations_default(#20137,#10000,2,8,2,7) +hasLocation(#20136,#20137) +#20138=* +exit_cfg_node(#20138,#20013) +#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) +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 new file mode 100644 index 00000000000..ce3d279f662 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/class_ctor.js.trap @@ -0,0 +1,265 @@ +#10000=@"/class_ctor.js;sourcefile" +files(#10000,"/class_ctor.js","class_ctor","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,5,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,"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) +#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) +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) +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) +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) +hasLocation(#20026,#20027) +enclosingStmt(#20026,#20022) +exprContainers(#20026,#20013) +#20028=* +exprs(#20028,6,#20026,0,"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) +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) +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) +hasLocation(#20034,#20035) +#20036=* +lines(#20036,#20001," constructor(x) {"," +") +#20037=@"loc,{#10000},2,1,2,18" +locations_default(#20037,#10000,2,1,2,18) +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) +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) +#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) +#20049=* +tokeninfo(#20049,6,#20001,3,"constructor") +hasLocation(#20049,#20012) +#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) +#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) +#20058=* +tokeninfo(#20058,8,#20001,9,".") +#20059=@"loc,{#10000},3,9,3,9" +locations_default(#20059,#10000,3,9,3,9) +hasLocation(#20058,#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) +#20064=* +tokeninfo(#20064,8,#20001,13,";") +#20065=@"loc,{#10000},3,15,3,15" +locations_default(#20065,#10000,3,15,3,15) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,8,#20001,14,"}") +#20067=@"loc,{#10000},4,3,4,3" +locations_default(#20067,#10000,4,3,4,3) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,8,#20001,15,"}") +hasLocation(#20068,#20043) +#20069=* +tokeninfo(#20069,0,#20001,16,"") +#20070=@"loc,{#10000},5,2,5,1" +locations_default(#20070,#10000,5,2,5,1) +hasLocation(#20069,#20070) +#20071=* +entry_cfg_node(#20071,#20001) +#20072=@"loc,{#10000},1,1,1,0" +locations_default(#20072,#10000,1,1,1,0) +hasLocation(#20071,#20072) +#20073=* +exit_cfg_node(#20073,#20001) +hasLocation(#20073,#20070) +successor(#20013,#20009) +#20074=* +entry_cfg_node(#20074,#20013) +#20075=@"loc,{#10000},2,14,2,13" +locations_default(#20075,#10000,2,14,2,13) +hasLocation(#20074,#20075) +#20076=* +exit_cfg_node(#20076,#20013) +#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) +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 new file mode 100644 index 00000000000..dc41f5a8f77 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/class_extends.js.trap @@ -0,0 +1,178 @@ +#10000=@"/class_extends.js;sourcefile" +files(#10000,"/class_extends.js","class_extends","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +#20006=* +exprs(#20006,78,#20005,0,"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) +#20012=* +properties(#20012,#20005,2,0,"constru ... rgs); }") +#20013=@"loc,{#10000},1,28,1,27" +locations_default(#20013,#10000,1,28,1,27) +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) +#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) +#20020=* +stmts(#20020,1,#20015,-2,"{ super(...args); }") +hasLocation(#20020,#20013) +stmtContainers(#20020,#20015) +#20021=* +stmts(#20021,2,#20020,0,"super(...args);") +hasLocation(#20021,#20013) +stmtContainers(#20021,#20015) +#20022=* +exprs(#20022,13,#20021,0,"super(...args)") +hasLocation(#20022,#20013) +enclosingStmt(#20022,#20021) +exprContainers(#20022,#20015) +#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) +#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) +#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) +#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) +#20033=* +tokeninfo(#20033,8,#20001,4,"{") +#20034=@"loc,{#10000},1,28,1,28" +locations_default(#20034,#10000,1,28,1,28) +hasLocation(#20033,#20034) +#20035=* +tokeninfo(#20035,8,#20001,5,"}") +#20036=@"loc,{#10000},1,29,1,29" +locations_default(#20036,#10000,1,29,1,29) +hasLocation(#20035,#20036) +#20037=* +tokeninfo(#20037,0,#20001,6,"") +#20038=@"loc,{#10000},1,30,1,29" +locations_default(#20038,#10000,1,30,1,29) +hasLocation(#20037,#20038) +#20039=* +entry_cfg_node(#20039,#20001) +#20040=@"loc,{#10000},1,1,1,0" +locations_default(#20040,#10000,1,1,1,0) +hasLocation(#20039,#20040) +#20041=* +exit_cfg_node(#20041,#20001) +hasLocation(#20041,#20038) +successor(#20015,#20012) +#20042=* +entry_cfg_node(#20042,#20015) +hasLocation(#20042,#20013) +#20043=* +exit_cfg_node(#20043,#20015) +hasLocation(#20043,#20013) +successor(#20020,#20021) +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) +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 new file mode 100644 index 00000000000..ae3385a216c --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/class_extends2.js.trap @@ -0,0 +1,296 @@ +#10000=@"/class_extends2.js;sourcefile" +files(#10000,"/class_extends2.js","class_extends2","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +#20006=* +exprs(#20006,78,#20005,0,"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) +#20020=* +exprs(#20020,0,#20015,1,"random") +#20021=@"loc,{#10000},1,27,1,32" +locations_default(#20021,#10000,1,27,1,32) +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) +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) +#20028=* +properties(#20028,#20005,2,0,"constru ... rgs); }") +#20029=@"loc,{#10000},1,54,1,53" +locations_default(#20029,#10000,1,54,1,53) +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) +#20032=* +scopes(#20032,1) +scopenodes(#20031,#20032) +scopenesting(#20032,#20008) +#20033=@"var;{args};{#20032}" +variables(#20033,"args",#20032) +#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) +#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) +#20040=* +exprs(#20040,66,#20038,0,"...args") +hasLocation(#20040,#20029) +enclosingStmt(#20040,#20037) +exprContainers(#20040,#20031) +#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) +#20042=* +lines(#20042,#20001,"class Point extends (Math.random() ? Object : Array) {}","") +hasLocation(#20042,#20002) +numlines(#20001,1,1,0) +#20043=* +tokeninfo(#20043,7,#20001,0,"class") +#20044=@"loc,{#10000},1,1,1,5" +locations_default(#20044,#10000,1,1,1,5) +hasLocation(#20043,#20044) +#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) +#20051=* +tokeninfo(#20051,8,#20001,5,".") +#20052=@"loc,{#10000},1,26,1,26" +locations_default(#20052,#10000,1,26,1,26) +hasLocation(#20051,#20052) +#20053=* +tokeninfo(#20053,6,#20001,6,"random") +hasLocation(#20053,#20021) +#20054=* +tokeninfo(#20054,8,#20001,7,"(") +#20055=@"loc,{#10000},1,33,1,33" +locations_default(#20055,#10000,1,33,1,33) +hasLocation(#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) +#20058=* +tokeninfo(#20058,8,#20001,9,"?") +#20059=@"loc,{#10000},1,36,1,36" +locations_default(#20059,#10000,1,36,1,36) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,6,#20001,10,"Object") +hasLocation(#20060,#20023) +#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) +#20064=* +tokeninfo(#20064,8,#20001,13,")") +#20065=@"loc,{#10000},1,52,1,52" +locations_default(#20065,#10000,1,52,1,52) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,8,#20001,14,"{") +#20067=@"loc,{#10000},1,54,1,54" +locations_default(#20067,#10000,1,54,1,54) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,8,#20001,15,"}") +#20069=@"loc,{#10000},1,55,1,55" +locations_default(#20069,#10000,1,55,1,55) +hasLocation(#20068,#20069) +#20070=* +tokeninfo(#20070,0,#20001,16,"") +#20071=@"loc,{#10000},1,56,1,55" +locations_default(#20071,#10000,1,56,1,55) +hasLocation(#20070,#20071) +#20072=* +entry_cfg_node(#20072,#20001) +#20073=@"loc,{#10000},1,1,1,0" +locations_default(#20073,#10000,1,1,1,0) +hasLocation(#20072,#20073) +#20074=* +exit_cfg_node(#20074,#20001) +hasLocation(#20074,#20071) +successor(#20031,#20028) +#20075=* +entry_cfg_node(#20075,#20031) +hasLocation(#20075,#20029) +#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) +#20077=* +guard_node(#20077,1,#20013) +hasLocation(#20077,#20014) +successor(#20077,#20022) +#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) +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 new file mode 100644 index 00000000000..7f9806a2244 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/class_method.js.trap @@ -0,0 +1,270 @@ +#10000=@"/class_method.js;sourcefile" +files(#10000,"/class_method.js","class_method","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,5,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 {"," +") +#20035=@"loc,{#10000},1,1,1,9" +locations_default(#20035,#10000,1,1,1,9) +hasLocation(#20034,#20035) +#20036=* +lines(#20036,#20001," getX() {"," +") +#20037=@"loc,{#10000},2,1,2,10" +locations_default(#20037,#10000,2,1,2,10) +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) +#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) +#20049=* +tokeninfo(#20049,6,#20001,3,"getX") +hasLocation(#20049,#20012) +#20050=* +tokeninfo(#20050,8,#20001,4,"(") +#20051=@"loc,{#10000},2,7,2,7" +locations_default(#20051,#10000,2,7,2,7) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,8,#20001,5,")") +#20053=@"loc,{#10000},2,8,2,8" +locations_default(#20053,#10000,2,8,2,8) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,8,#20001,6,"{") +#20055=@"loc,{#10000},2,10,2,10" +locations_default(#20055,#10000,2,10,2,10) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,7,#20001,7,"return") +#20057=@"loc,{#10000},3,5,3,10" +locations_default(#20057,#10000,3,5,3,10) +hasLocation(#20056,#20057) +#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) +#20061=* +tokeninfo(#20061,6,#20001,10,"x") +hasLocation(#20061,#20026) +#20062=* +tokeninfo(#20062,8,#20001,11,";") +#20063=@"loc,{#10000},3,18,3,18" +locations_default(#20063,#10000,3,18,3,18) +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) +#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) +#20069=* +entry_cfg_node(#20069,#20001) +#20070=@"loc,{#10000},1,1,1,0" +locations_default(#20070,#10000,1,1,1,0) +hasLocation(#20069,#20070) +#20071=* +exit_cfg_node(#20071,#20001) +hasLocation(#20071,#20068) +successor(#20030,#20027) +#20072=* +entry_cfg_node(#20072,#20030) +hasLocation(#20072,#20028) +#20073=* +exit_cfg_node(#20073,#20030) +hasLocation(#20073,#20028) +successor(#20033,#20073) +successor(#20072,#20033) +successor(#20029,#20030) +successor(#20027,#20005) +successor(#20013,#20009) +#20074=* +entry_cfg_node(#20074,#20013) +#20075=@"loc,{#10000},2,7,2,6" +locations_default(#20075,#10000,2,7,2,6) +hasLocation(#20074,#20075) +#20076=* +exit_cfg_node(#20076,#20013) +#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) +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 new file mode 100644 index 00000000000..a7bebd56ebf --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/class_static.js.trap @@ -0,0 +1,252 @@ +#10000=@"/class_static.js;sourcefile" +files(#10000,"/class_static.js","class_static","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,5,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 {"," +") +#20031=@"loc,{#10000},1,1,1,9" +locations_default(#20031,#10000,1,1,1,9) +hasLocation(#20030,#20031) +#20032=* +lines(#20032,#20001," static className() {"," +") +#20033=@"loc,{#10000},2,1,2,22" +locations_default(#20033,#10000,2,1,2,22) +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) +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) +#20042=* +tokeninfo(#20042,6,#20001,1,"A") +hasLocation(#20042,#20007) +#20043=* +tokeninfo(#20043,8,#20001,2,"{") +#20044=@"loc,{#10000},1,9,1,9" +locations_default(#20044,#10000,1,9,1,9) +hasLocation(#20043,#20044) +#20045=* +tokeninfo(#20045,6,#20001,3,"static") +#20046=@"loc,{#10000},2,3,2,8" +locations_default(#20046,#10000,2,3,2,8) +hasLocation(#20045,#20046) +#20047=* +tokeninfo(#20047,6,#20001,4,"className") +hasLocation(#20047,#20012) +#20048=* +tokeninfo(#20048,8,#20001,5,"(") +#20049=@"loc,{#10000},2,19,2,19" +locations_default(#20049,#10000,2,19,2,19) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,6,")") +#20051=@"loc,{#10000},2,20,2,20" +locations_default(#20051,#10000,2,20,2,20) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,8,#20001,7,"{") +#20053=@"loc,{#10000},2,22,2,22" +locations_default(#20053,#10000,2,22,2,22) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,7,#20001,8,"return") +#20055=@"loc,{#10000},3,5,3,10" +locations_default(#20055,#10000,3,5,3,10) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,4,#20001,9,"""A""") +hasLocation(#20056,#20022) +#20057=* +tokeninfo(#20057,8,#20001,10,";") +#20058=@"loc,{#10000},3,15,3,15" +locations_default(#20058,#10000,3,15,3,15) +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) +#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) +#20064=* +entry_cfg_node(#20064,#20001) +#20065=@"loc,{#10000},1,1,1,0" +locations_default(#20065,#10000,1,1,1,0) +hasLocation(#20064,#20065) +#20066=* +exit_cfg_node(#20066,#20001) +hasLocation(#20066,#20063) +successor(#20026,#20023) +#20067=* +entry_cfg_node(#20067,#20026) +hasLocation(#20067,#20024) +#20068=* +exit_cfg_node(#20068,#20026) +hasLocation(#20068,#20024) +successor(#20029,#20068) +successor(#20067,#20029) +successor(#20025,#20026) +successor(#20023,#20005) +successor(#20013,#20009) +#20069=* +entry_cfg_node(#20069,#20013) +#20070=@"loc,{#10000},2,19,2,18" +locations_default(#20070,#10000,2,19,2,18) +hasLocation(#20069,#20070) +#20071=* +exit_cfg_node(#20071,#20013) +#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) +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 new file mode 100644 index 00000000000..ec9230e22e1 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/classdecl.js.trap @@ -0,0 +1,117 @@ +#10000=@"/classdecl.js;sourcefile" +files(#10000,"/classdecl.js","classdecl","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +#20006=* +exprs(#20006,78,#20005,0,"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) +#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) +#20016=* +lines(#20016,#20001,"class Point {}","") +hasLocation(#20016,#20002) +numlines(#20001,1,1,0) +#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) +#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) +#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) +#20026=* +entry_cfg_node(#20026,#20001) +#20027=@"loc,{#10000},1,1,1,0" +locations_default(#20027,#10000,1,1,1,0) +hasLocation(#20026,#20027) +#20028=* +exit_cfg_node(#20028,#20001) +hasLocation(#20028,#20025) +successor(#20012,#20009) +#20029=* +entry_cfg_node(#20029,#20012) +hasLocation(#20029,#20010) +#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) +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 new file mode 100644 index 00000000000..fe0b32e3e54 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/classexpr.js.trap @@ -0,0 +1,141 @@ +#10000=@"/classexpr.js;sourcefile" +files(#10000,"/classexpr.js","classexpr","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +#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) +#20010=* +exprs(#20010,78,#20005,0,"Point") +#20011=@"loc,{#10000},1,8,1,12" +locations_default(#20011,#10000,1,8,1,12) +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) +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) +#20016=* +scopes(#20016,1) +scopenodes(#20015,#20016) +scopenesting(#20016,#20007) +#20017=@"var;{arguments};{#20016}" +variables(#20017,"arguments",#20016) +isArgumentsObject(#20017) +#20018=* +stmts(#20018,1,#20015,-2,"{}") +hasLocation(#20018,#20013) +stmtContainers(#20018,#20015) +numlines(#20015,1,0,0) +isMethod(#20012) +#20019=* +lines(#20019,#20001,"(class Point {})","") +hasLocation(#20019,#20002) +numlines(#20001,1,1,0) +#20020=* +tokeninfo(#20020,8,#20001,0,"(") +#20021=@"loc,{#10000},1,1,1,1" +locations_default(#20021,#10000,1,1,1,1) +hasLocation(#20020,#20021) +#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) +#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) +#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) +#20033=* +entry_cfg_node(#20033,#20001) +#20034=@"loc,{#10000},1,1,1,0" +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) +#20036=* +entry_cfg_node(#20036,#20015) +hasLocation(#20036,#20013) +#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) +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 new file mode 100644 index 00000000000..7a51af8a622 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/classexpr2.js.trap @@ -0,0 +1,119 @@ +#10000=@"/classexpr2.js;sourcefile" +files(#10000,"/classexpr2.js","classexpr2","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +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,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) +#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) +#20027=* +entry_cfg_node(#20027,#20001) +#20028=@"loc,{#10000},1,1,1,0" +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) +#20030=* +entry_cfg_node(#20030,#20010) +hasLocation(#20030,#20008) +#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) +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 new file mode 100644 index 00000000000..7734f8d2a5b --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/complex_array_pattern.js.trap @@ -0,0 +1,148 @@ +#10000=@"/complex_array_pattern.js;sourcefile" +files(#10000,"/complex_array_pattern.js","complex_array_pattern","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +numlines(#20001,1,1,0) +#20020=* +tokeninfo(#20020,8,#20001,0,"[") +#20021=@"loc,{#10000},1,1,1,1" +locations_default(#20021,#10000,1,1,1,1) +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) +#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) +#20033=* +tokeninfo(#20033,8,#20001,8,"]") +#20034=@"loc,{#10000},1,12,1,12" +locations_default(#20034,#10000,1,12,1,12) +hasLocation(#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) +#20039=* +entry_cfg_node(#20039,#20001) +#20040=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..3c75a04f2b7 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/complex_object_pattern.js.trap @@ -0,0 +1,172 @@ +#10000=@"/complex_object_pattern.js;sourcefile" +files(#10000,"/complex_object_pattern.js","complex_object_pattern","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +#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) +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) +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) +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) +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) +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) +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) +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) +#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) +#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) +#20033=* +tokeninfo(#20033,8,#20001,5,".") +#20034=@"loc,{#10000},1,8,1,8" +locations_default(#20034,#10000,1,8,1,8) +hasLocation(#20033,#20034) +#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) +#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) +#20045=* +tokeninfo(#20045,0,#20001,12,"") +#20046=@"loc,{#10000},1,18,1,17" +locations_default(#20046,#10000,1,18,1,17) +hasLocation(#20045,#20046) +#20047=* +entry_cfg_node(#20047,#20001) +#20048=@"loc,{#10000},1,1,1,0" +locations_default(#20048,#10000,1,1,1,0) +hasLocation(#20047,#20048) +#20049=* +exit_cfg_node(#20049,#20001) +hasLocation(#20049,#20046) +successor(#20003,#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) +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 new file mode 100644 index 00000000000..a82225cad49 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/const.js.trap @@ -0,0 +1,93 @@ +#10000=@"/const.js;sourcefile" +files(#10000,"/const.js","const","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,2,0" +locations_default(#20002,#10000,1,1,2,0) +hasLocation(#20001,#20002) +#20003=@"var;{x};{#20000}" +variables(#20003,"x",#20000) +#20004=* +stmts(#20004,22,#20001,0,"const x = 23;") +#20005=@"loc,{#10000},1,1,1,13" +locations_default(#20005,#10000,1,1,1,13) +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) +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) +hasLocation(#20008,#20009) +enclosingStmt(#20008,#20004) +exprContainers(#20008,#20001) +literals("x","x",#20008) +decl(#20008,#20003) +#20010=* +exprs(#20010,3,#20006,1,"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) +#20018=* +tokeninfo(#20018,3,#20001,3,"23") +hasLocation(#20018,#20011) +#20019=* +tokeninfo(#20019,8,#20001,4,";") +#20020=@"loc,{#10000},1,13,1,13" +locations_default(#20020,#10000,1,13,1,13) +hasLocation(#20019,#20020) +#20021=* +tokeninfo(#20021,0,#20001,5,"") +#20022=@"loc,{#10000},2,1,2,0" +locations_default(#20022,#10000,2,1,2,0) +hasLocation(#20021,#20022) +#20023=* +entry_cfg_node(#20023,#20001) +#20024=@"loc,{#10000},1,1,1,0" +locations_default(#20024,#10000,1,1,1,0) +hasLocation(#20023,#20024) +#20025=* +exit_cfg_node(#20025,#20001) +hasLocation(#20025,#20022) +successor(#20004,#20008) +successor(#20010,#20006) +successor(#20008,#20010) +successor(#20006,#20025) +successor(#20023,#20004) +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 new file mode 100644 index 00000000000..69e9be8a3be --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/defaultargs.js.trap @@ -0,0 +1,174 @@ +#10000=@"/defaultargs.js;sourcefile" +files(#10000,"/defaultargs.js","defaultargs","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +numlines(#20001,1,1,0) +#20024=* +tokeninfo(#20024,7,#20001,0,"function") +#20025=@"loc,{#10000},1,1,1,8" +locations_default(#20025,#10000,1,1,1,8) +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) +#20030=* +tokeninfo(#20030,8,#20001,4,",") +#20031=@"loc,{#10000},1,13,1,13" +locations_default(#20031,#10000,1,13,1,13) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,6,#20001,5,"y") +hasLocation(#20032,#20013) +#20033=* +tokeninfo(#20033,8,#20001,6,"=") +#20034=@"loc,{#10000},1,16,1,16" +locations_default(#20034,#10000,1,16,1,16) +hasLocation(#20033,#20034) +#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) +#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,23,1,23" +locations_default(#20042,#10000,1,23,1,23) +hasLocation(#20041,#20042) +#20043=* +tokeninfo(#20043,8,#20001,12,"}") +#20044=@"loc,{#10000},1,24,1,24" +locations_default(#20044,#10000,1,24,1,24) +hasLocation(#20043,#20044) +#20045=* +tokeninfo(#20045,0,#20001,13,"") +#20046=@"loc,{#10000},1,25,1,24" +locations_default(#20046,#10000,1,25,1,24) +hasLocation(#20045,#20046) +#20047=* +entry_cfg_node(#20047,#20001) +#20048=@"loc,{#10000},1,1,1,0" +locations_default(#20048,#10000,1,1,1,0) +hasLocation(#20047,#20048) +#20049=* +exit_cfg_node(#20049,#20001) +hasLocation(#20049,#20046) +successor(#20004,#20049) +#20050=* +entry_cfg_node(#20050,#20004) +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) +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 new file mode 100644 index 00000000000..dd530cbc701 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/delegating_yield.js.trap @@ -0,0 +1,184 @@ +#10000=@"/delegating_yield.js;sourcefile" +files(#10000,"/delegating_yield.js","delegating_yield","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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() {"," +") +#20021=@"loc,{#10000},1,1,1,15" +locations_default(#20021,#10000,1,1,1,15) +hasLocation(#20020,#20021) +#20022=* +lines(#20022,#20001," yield* g();"," +") +#20023=@"loc,{#10000},2,1,2,15" +locations_default(#20023,#10000,2,1,2,15) +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) +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) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,1,"*") +#20029=@"loc,{#10000},1,9,1,9" +locations_default(#20029,#10000,1,9,1,9) +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) +#20033=* +tokeninfo(#20033,8,#20001,4,")") +#20034=@"loc,{#10000},1,13,1,13" +locations_default(#20034,#10000,1,13,1,13) +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) +#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) +#20039=* +tokeninfo(#20039,8,#20001,7,"*") +#20040=@"loc,{#10000},2,10,2,10" +locations_default(#20040,#10000,2,10,2,10) +hasLocation(#20039,#20040) +#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) +#20049=* +tokeninfo(#20049,0,#20001,13,"") +#20050=@"loc,{#10000},3,2,3,1" +locations_default(#20050,#10000,3,2,3,1) +hasLocation(#20049,#20050) +#20051=* +entry_cfg_node(#20051,#20001) +#20052=@"loc,{#10000},1,1,1,0" +locations_default(#20052,#10000,1,1,1,0) +hasLocation(#20051,#20052) +#20053=* +exit_cfg_node(#20053,#20001) +hasLocation(#20053,#20050) +successor(#20004,#20053) +#20054=* +entry_cfg_node(#20054,#20004) +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) +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 new file mode 100644 index 00000000000..6cb3f6a28e1 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/destructuring.js.trap @@ -0,0 +1,885 @@ +#10000=@"/destructuring.js;sourcefile" +files(#10000,"/destructuring.js","destructuring","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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) +#20014=* +exprs(#20014,67,#20005,0,"[x, y]") +#20015=@"loc,{#10000},1,12,1,17" +locations_default(#20015,#10000,1,12,1,17) +hasLocation(#20014,#20015) +exprContainers(#20014,#20005) +#20016=* +exprs(#20016,78,#20014,0,"x") +#20017=@"loc,{#10000},1,13,1,13" +locations_default(#20017,#10000,1,13,1,13) +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) +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) +#20066=* +exprs(#20066,0,#20061,1,"log") +#20067=@"loc,{#10000},6,11,6,13" +locations_default(#20067,#10000,6,11,6,13) +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) +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) +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) +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) +#20078=* +exprs(#20078,68,#20070,0,"{ x, y: z }") +#20079=@"loc,{#10000},10,12,10,22" +locations_default(#20079,#10000,10,12,10,22) +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) +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) +#20084=* +properties(#20084,#20078,1,0,"y: z") +#20085=@"loc,{#10000},10,17,10,20" +locations_default(#20085,#10000,10,17,10,20) +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) +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) +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) +#20119=* +lines(#20119,#20001," } catch (d) {"," +") +#20120=@"loc,{#10000},5,1,5,14" +locations_default(#20120,#10000,5,1,5,14) +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) +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) +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) +hasLocation(#20125,#20126) +#20127=* +lines(#20127,#20001,""," +") +#20128=@"loc,{#10000},9,1,9,0" +locations_default(#20128,#10000,9,1,9,0) +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) +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) +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) +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) +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) +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) +#20145=* +tokeninfo(#20145,8,#20001,5,",") +#20146=@"loc,{#10000},1,14,1,14" +locations_default(#20146,#10000,1,14,1,14) +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) +#20159=* +tokeninfo(#20159,8,#20001,13,",") +#20160=@"loc,{#10000},2,8,2,8" +locations_default(#20160,#10000,2,8,2,8) +hasLocation(#20159,#20160) +#20161=* +tokeninfo(#20161,8,#20001,14,"[") +#20162=@"loc,{#10000},2,10,2,10" +locations_default(#20162,#10000,2,10,2,10) +hasLocation(#20161,#20162) +#20163=* +tokeninfo(#20163,8,#20001,15,",") +#20164=@"loc,{#10000},2,11,2,11" +locations_default(#20164,#10000,2,11,2,11) +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) +#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) +#20177=* +tokeninfo(#20177,8,#20001,23,"{") +#20178=@"loc,{#10000},3,6,3,6" +locations_default(#20178,#10000,3,6,3,6) +hasLocation(#20177,#20178) +#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) +#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) +#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) +#20202=* +tokeninfo(#20202,6,#20001,37,"console") +hasLocation(#20202,#20064) +#20203=* +tokeninfo(#20203,8,#20001,38,".") +#20204=@"loc,{#10000},6,10,6,10" +locations_default(#20204,#10000,6,10,6,10) +hasLocation(#20203,#20204) +#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) +#20209=* +tokeninfo(#20209,8,#20001,42,")") +#20210=@"loc,{#10000},6,16,6,16" +locations_default(#20210,#10000,6,16,6,16) +hasLocation(#20209,#20210) +#20211=* +tokeninfo(#20211,8,#20001,43,";") +#20212=@"loc,{#10000},6,17,6,17" +locations_default(#20212,#10000,6,17,6,17) +hasLocation(#20211,#20212) +#20213=* +tokeninfo(#20213,8,#20001,44,"}") +#20214=@"loc,{#10000},7,2,7,2" +locations_default(#20214,#10000,7,2,7,2) +hasLocation(#20213,#20214) +#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) +#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) +#20224=* +tokeninfo(#20224,8,#20001,51,",") +#20225=@"loc,{#10000},10,15,10,15" +locations_default(#20225,#10000,10,15,10,15) +hasLocation(#20224,#20225) +#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) +#20229=* +tokeninfo(#20229,6,#20001,54,"z") +hasLocation(#20229,#20089) +#20230=* +tokeninfo(#20230,8,#20001,55,"}") +#20231=@"loc,{#10000},10,22,10,22" +locations_default(#20231,#10000,10,22,10,22) +hasLocation(#20230,#20231) +#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) +#20240=* +tokeninfo(#20240,8,#20001,60,"[") +#20241=@"loc,{#10000},11,8,11,8" +locations_default(#20241,#10000,11,8,11,8) +hasLocation(#20240,#20241) +#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) +#20245=* +tokeninfo(#20245,8,#20001,63,":") +#20246=@"loc,{#10000},11,11,11,11" +locations_default(#20246,#10000,11,11,11,11) +hasLocation(#20245,#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) +#20253=* +tokeninfo(#20253,8,#20001,68,";") +#20254=@"loc,{#10000},11,20,11,20" +locations_default(#20254,#10000,11,20,11,20) +hasLocation(#20253,#20254) +#20255=* +tokeninfo(#20255,7,#20001,69,"return") +#20256=@"loc,{#10000},12,2,12,7" +locations_default(#20256,#10000,12,2,12,7) +hasLocation(#20255,#20256) +#20257=* +tokeninfo(#20257,6,#20001,70,"w") +hasLocation(#20257,#20110) +#20258=* +tokeninfo(#20258,8,#20001,71,";") +#20259=@"loc,{#10000},12,10,12,10" +locations_default(#20259,#10000,12,10,12,10) +hasLocation(#20258,#20259) +#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) +#20263=* +entry_cfg_node(#20263,#20001) +#20264=@"loc,{#10000},1,1,1,0" +locations_default(#20264,#10000,1,1,1,0) +hasLocation(#20263,#20264) +#20265=* +exit_cfg_node(#20265,#20001) +hasLocation(#20265,#20262) +successor(#20070,#20265) +#20266=* +entry_cfg_node(#20266,#20070) +#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) +#20269=* +entry_cfg_node(#20269,#20005) +hasLocation(#20269,#20264) +#20270=* +exit_cfg_node(#20270,#20005) +#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) +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 new file mode 100644 index 00000000000..ab9ade05f8d --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/export1.js.trap @@ -0,0 +1,107 @@ +#10000=@"/export1.js;sourcefile" +files(#10000,"/export1.js","export1","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +#20006=* +stmts(#20006,18,#20005,-1,"var x = 23;") +#20007=@"loc,{#10000},1,8,1,18" +locations_default(#20007,#10000,1,8,1,18) +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) +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) +hasLocation(#20010,#20011) +enclosingStmt(#20010,#20006) +exprContainers(#20010,#20001) +literals("x","x",#20010) +decl(#20010,#20004) +#20012=* +exprs(#20012,3,#20008,1,"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) +#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) +#20023=* +tokeninfo(#20023,8,#20001,5,";") +#20024=@"loc,{#10000},1,18,1,18" +locations_default(#20024,#10000,1,18,1,18) +hasLocation(#20023,#20024) +#20025=* +tokeninfo(#20025,0,#20001,6,"") +#20026=@"loc,{#10000},1,19,1,18" +locations_default(#20026,#10000,1,19,1,18) +hasLocation(#20025,#20026) +#20027=* +entry_cfg_node(#20027,#20001) +#20028=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..065c269c934 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/export10.js.trap @@ -0,0 +1,161 @@ +#10000=@"/export10.js;sourcefile" +files(#10000,"/export10.js","export10","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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 () {} [,]"," +") +#20019=@"loc,{#10000},1,1,1,35" +locations_default(#20019,#10000,1,1,1,35) +hasLocation(#20018,#20019) +numlines(#20001,1,1,0) +#20020=* +tokeninfo(#20020,7,#20001,0,"export") +#20021=@"loc,{#10000},1,1,1,6" +locations_default(#20021,#10000,1,1,1,6) +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) +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) +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) +#20031=* +tokeninfo(#20031,8,#20001,6,"{") +#20032=@"loc,{#10000},1,30,1,30" +locations_default(#20032,#10000,1,30,1,30) +hasLocation(#20031,#20032) +#20033=* +tokeninfo(#20033,8,#20001,7,"}") +#20034=@"loc,{#10000},1,31,1,31" +locations_default(#20034,#10000,1,31,1,31) +hasLocation(#20033,#20034) +#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) +#20043=* +entry_cfg_node(#20043,#20001) +#20044=@"loc,{#10000},1,1,1,0" +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) +#20046=* +entry_cfg_node(#20046,#20007) +#20047=@"loc,{#10000},1,16,1,15" +locations_default(#20047,#10000,1,16,1,15) +hasLocation(#20046,#20047) +#20048=* +exit_cfg_node(#20048,#20007) +#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) +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 new file mode 100644 index 00000000000..29cda6f7a06 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/export11.js.trap @@ -0,0 +1,121 @@ +#10000=@"/export11.js;sourcefile" +files(#10000,"/export11.js","export11","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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 ... lass {}") +#20005=@"loc,{#10000},1,1,1,23" +locations_default(#20005,#10000,1,1,1,23) +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) +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) +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) +#20012=* +scopes(#20012,1) +scopenodes(#20011,#20012) +scopenesting(#20012,#20003) +#20013=@"var;{arguments};{#20012}" +variables(#20013,"arguments",#20012) +isArgumentsObject(#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) +#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) +#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) +#20028=* +entry_cfg_node(#20028,#20001) +#20029=@"loc,{#10000},1,1,1,0" +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) +#20031=* +entry_cfg_node(#20031,#20011) +hasLocation(#20031,#20009) +#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) +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 new file mode 100644 index 00000000000..87b7bc5c223 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/export2.js.trap @@ -0,0 +1,134 @@ +#10000=@"/export2.js;sourcefile" +files(#10000,"/export2.js","export2","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +numlines(#20001,1,1,0) +#20018=* +tokeninfo(#20018,7,#20001,0,"export") +#20019=@"loc,{#10000},1,1,1,6" +locations_default(#20019,#10000,1,1,1,6) +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) +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) +#20029=* +tokeninfo(#20029,8,#20001,6,"}") +#20030=@"loc,{#10000},1,22,1,22" +locations_default(#20030,#10000,1,22,1,22) +hasLocation(#20029,#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) +#20034=* +entry_cfg_node(#20034,#20001) +#20035=@"loc,{#10000},1,1,1,0" +locations_default(#20035,#10000,1,1,1,0) +hasLocation(#20034,#20035) +#20036=* +exit_cfg_node(#20036,#20001) +hasLocation(#20036,#20033) +successor(#20015,#20036) +successor(#20005,#20007) +successor(#20007,#20015) +#20037=* +entry_cfg_node(#20037,#20007) +#20038=@"loc,{#10000},1,8,1,7" +locations_default(#20038,#10000,1,8,1,7) +hasLocation(#20037,#20038) +#20039=* +exit_cfg_node(#20039,#20007) +#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) +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 new file mode 100644 index 00000000000..1f8592dae57 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/export3.js.trap @@ -0,0 +1,139 @@ +#10000=@"/export3.js;sourcefile" +files(#10000,"/export3.js","export3","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +numlines(#20001,1,1,0) +#20018=* +tokeninfo(#20018,7,#20001,0,"export") +#20019=@"loc,{#10000},1,1,1,6" +locations_default(#20019,#10000,1,1,1,6) +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) +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) +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) +#20031=* +tokeninfo(#20031,8,#20001,7,"}") +#20032=@"loc,{#10000},1,30,1,30" +locations_default(#20032,#10000,1,30,1,30) +hasLocation(#20031,#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) +#20036=* +entry_cfg_node(#20036,#20001) +#20037=@"loc,{#10000},1,1,1,0" +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) +#20039=* +entry_cfg_node(#20039,#20007) +#20040=@"loc,{#10000},1,16,1,15" +locations_default(#20040,#10000,1,16,1,15) +hasLocation(#20039,#20040) +#20041=* +exit_cfg_node(#20041,#20007) +#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) +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 new file mode 100644 index 00000000000..d9565ac80cc --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/export4.js.trap @@ -0,0 +1,126 @@ +#10000=@"/export4.js;sourcefile" +files(#10000,"/export4.js","export4","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +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) +#20023=* +tokeninfo(#20023,8,#20001,4,")") +#20024=@"loc,{#10000},1,26,1,26" +locations_default(#20024,#10000,1,26,1,26) +hasLocation(#20023,#20024) +#20025=* +tokeninfo(#20025,8,#20001,5,"{") +#20026=@"loc,{#10000},1,28,1,28" +locations_default(#20026,#10000,1,28,1,28) +hasLocation(#20025,#20026) +#20027=* +tokeninfo(#20027,8,#20001,6,"}") +#20028=@"loc,{#10000},1,29,1,29" +locations_default(#20028,#10000,1,29,1,29) +hasLocation(#20027,#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) +#20032=* +entry_cfg_node(#20032,#20001) +#20033=@"loc,{#10000},1,1,1,0" +locations_default(#20033,#10000,1,1,1,0) +hasLocation(#20032,#20033) +#20034=* +exit_cfg_node(#20034,#20001) +hasLocation(#20034,#20031) +successor(#20012,#20034) +successor(#20004,#20006) +successor(#20006,#20012) +#20035=* +entry_cfg_node(#20035,#20006) +#20036=@"loc,{#10000},1,16,1,15" +locations_default(#20036,#10000,1,16,1,15) +hasLocation(#20035,#20036) +#20037=* +exit_cfg_node(#20037,#20006) +#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) +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 new file mode 100644 index 00000000000..320b00886a8 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/export5.js.trap @@ -0,0 +1,242 @@ +#10000=@"/export5.js;sourcefile" +files(#10000,"/export5.js","export5","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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) +#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) +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) +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) +hasLocation(#20010,#20011) +enclosingStmt(#20010,#20006) +exprContainers(#20010,#20001) +literals("x","x",#20010) +decl(#20010,#20004) +#20012=* +exprs(#20012,3,#20008,1,"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) +hasLocation(#20014,#20015) +enclosingStmt(#20014,#20006) +exprContainers(#20014,#20001) +#20016=* +exprs(#20016,78,#20014,0,"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) +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) +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) +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) +#20026=* +exprs(#20026,86,#20020,1,"y as z") +#20027=@"loc,{#10000},2,13,2,18" +locations_default(#20027,#10000,2,13,2,18) +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) +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) +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) +#20034=* +tokeninfo(#20034,7,#20001,0,"var") +#20035=@"loc,{#10000},1,1,1,3" +locations_default(#20035,#10000,1,1,1,3) +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) +#20040=* +tokeninfo(#20040,8,#20001,4,",") +#20041=@"loc,{#10000},1,11,1,11" +locations_default(#20041,#10000,1,11,1,11) +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) +#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) +#20052=* +tokeninfo(#20052,6,#20001,11,"x") +hasLocation(#20052,#20023) +#20053=* +tokeninfo(#20053,8,#20001,12,",") +#20054=@"loc,{#10000},2,11,2,11" +locations_default(#20054,#10000,2,11,2,11) +hasLocation(#20053,#20054) +#20055=* +tokeninfo(#20055,6,#20001,13,"y") +hasLocation(#20055,#20029) +#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) +#20058=* +tokeninfo(#20058,6,#20001,15,"z") +hasLocation(#20058,#20031) +#20059=* +tokeninfo(#20059,8,#20001,16,"}") +#20060=@"loc,{#10000},2,20,2,20" +locations_default(#20060,#10000,2,20,2,20) +hasLocation(#20059,#20060) +#20061=* +tokeninfo(#20061,8,#20001,17,";") +#20062=@"loc,{#10000},2,21,2,21" +locations_default(#20062,#10000,2,21,2,21) +hasLocation(#20061,#20062) +#20063=* +tokeninfo(#20063,0,#20001,18,"") +#20064=@"loc,{#10000},2,22,2,21" +locations_default(#20064,#10000,2,22,2,21) +hasLocation(#20063,#20064) +#20065=* +entry_cfg_node(#20065,#20001) +#20066=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..08c3d379b81 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/export6.js.trap @@ -0,0 +1,77 @@ +#10000=@"/export6.js;sourcefile" +files(#10000,"/export6.js","export6","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +numlines(#20001,1,1,0) +#20008=* +tokeninfo(#20008,7,#20001,0,"export") +#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,"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'") +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) +#20017=* +tokeninfo(#20017,0,#20001,5,"") +#20018=@"loc,{#10000},1,21,1,20" +locations_default(#20018,#10000,1,21,1,20) +hasLocation(#20017,#20018) +#20019=* +entry_cfg_node(#20019,#20001) +#20020=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..f7a1c406d13 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/export7.js.trap @@ -0,0 +1,149 @@ +#10000=@"/export7.js;sourcefile" +files(#10000,"/export7.js","export7","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +numlines(#20001,1,1,0) +#20018=* +tokeninfo(#20018,7,#20001,0,"export") +#20019=@"loc,{#10000},1,1,1,6" +locations_default(#20019,#10000,1,1,1,6) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,1,"{") +#20021=@"loc,{#10000},1,8,1,8" +locations_default(#20021,#10000,1,8,1,8) +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) +#20026=* +tokeninfo(#20026,6,#20001,5,"as") +#20027=@"loc,{#10000},1,15,1,16" +locations_default(#20027,#10000,1,15,1,16) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,6,#20001,6,"z") +hasLocation(#20028,#20016) +#20029=* +tokeninfo(#20029,8,#20001,7,"}") +#20030=@"loc,{#10000},1,20,1,20" +locations_default(#20030,#10000,1,20,1,20) +hasLocation(#20029,#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) +#20033=* +tokeninfo(#20033,4,#20001,9,"'foo'") +hasLocation(#20033,#20006) +#20034=* +tokeninfo(#20034,8,#20001,10,";") +#20035=@"loc,{#10000},1,32,1,32" +locations_default(#20035,#10000,1,32,1,32) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,0,#20001,11,"") +#20037=@"loc,{#10000},1,33,1,32" +locations_default(#20037,#10000,1,33,1,32) +hasLocation(#20036,#20037) +#20038=* +entry_cfg_node(#20038,#20001) +#20039=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..458f5c098a9 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/export8.js.trap @@ -0,0 +1,131 @@ +#10000=@"/export8.js;sourcefile" +files(#10000,"/export8.js","export8","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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;"," +") +hasLocation(#20017,#20005) +#20018=* +lines(#20018,#20001,"export default foo;","") +hasLocation(#20018,#20014) +numlines(#20001,2,2,0) +#20019=* +tokeninfo(#20019,6,#20001,0,"foo") +hasLocation(#20019,#20009) +#20020=* +tokeninfo(#20020,8,#20001,1,"=") +#20021=@"loc,{#10000},1,5,1,5" +locations_default(#20021,#10000,1,5,1,5) +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) +#20027=* +tokeninfo(#20027,7,#20001,5,"default") +#20028=@"loc,{#10000},2,8,2,14" +locations_default(#20028,#10000,2,8,2,14) +hasLocation(#20027,#20028) +#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) +#20032=* +tokeninfo(#20032,0,#20001,8,"") +#20033=@"loc,{#10000},2,20,2,19" +locations_default(#20033,#10000,2,20,2,19) +hasLocation(#20032,#20033) +#20034=* +entry_cfg_node(#20034,#20001) +#20035=@"loc,{#10000},1,1,1,0" +locations_default(#20035,#10000,1,1,1,0) +hasLocation(#20034,#20035) +#20036=* +exit_cfg_node(#20036,#20001) +hasLocation(#20036,#20033) +successor(#20013,#20015) +successor(#20015,#20036) +successor(#20004,#20008) +successor(#20011,#20006) +successor(#20008,#20011) +successor(#20006,#20013) +successor(#20034,#20004) +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 new file mode 100644 index 00000000000..99be90b75cd --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/export9.js.trap @@ -0,0 +1,173 @@ +#10000=@"/export9.js;sourcefile" +files(#10000,"/export9.js","export9","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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) +#20006=* +stmts(#20006,29,#20001,0,"export ... ss C {}") +#20007=@"loc,{#10000},1,1,1,25" +locations_default(#20007,#10000,1,1,1,25) +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) +hasLocation(#20008,#20009) +stmtContainers(#20008,#20001) +#20010=* +exprs(#20010,78,#20008,0,"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) +#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) +#20020=* +stmts(#20020,2,#20001,1,"[,]") +#20021=@"loc,{#10000},1,27,1,29" +locations_default(#20021,#10000,1,27,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) +#20032=* +tokeninfo(#20032,8,#20001,4,"{") +#20033=@"loc,{#10000},1,24,1,24" +locations_default(#20033,#10000,1,24,1,24) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,5,"}") +#20035=@"loc,{#10000},1,25,1,25" +locations_default(#20035,#10000,1,25,1,25) +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) +#20038=* +tokeninfo(#20038,8,#20001,7,",") +#20039=@"loc,{#10000},1,28,1,28" +locations_default(#20039,#10000,1,28,1,28) +hasLocation(#20038,#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) +#20044=* +entry_cfg_node(#20044,#20001) +#20045=@"loc,{#10000},1,1,1,0" +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) +#20047=* +entry_cfg_node(#20047,#20016) +hasLocation(#20047,#20014) +#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) +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 new file mode 100644 index 00000000000..40ff88df586 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/forof.js.trap @@ -0,0 +1,468 @@ +#10000=@"/forof.js;sourcefile" +files(#10000,"/forof.js","forof","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,8,0" +locations_default(#20002,#10000,1,1,8,0) +hasLocation(#20001,#20002) +#20003=@"var;{f};{#20000}" +variables(#20003,"f",#20000) +#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) +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,"}"," +") +#20062=@"loc,{#10000},3,1,3,1" +locations_default(#20062,#10000,3,1,3,1) +hasLocation(#20061,#20062) +#20063=* +lines(#20063,#20001,""," +") +#20064=@"loc,{#10000},4,1,4,0" +locations_default(#20064,#10000,4,1,4,0) +hasLocation(#20063,#20064) +#20065=* +lines(#20065,#20001,"function f() {"," +") +#20066=@"loc,{#10000},5,1,5,14" +locations_default(#20066,#10000,5,1,5,14) +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) +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) +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) +hasLocation(#20071,#20072) +#20073=* +tokeninfo(#20073,8,#20001,1,"(") +#20074=@"loc,{#10000},1,5,1,5" +locations_default(#20074,#10000,1,5,1,5) +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) +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) +#20083=* +tokeninfo(#20083,8,#20001,7,",") +#20084=@"loc,{#10000},1,17,1,17" +locations_default(#20084,#10000,1,17,1,17) +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) +#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) +#20097=* +tokeninfo(#20097,6,#20001,15,"y") +hasLocation(#20097,#20030) +#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) +#20101=* +tokeninfo(#20101,8,#20001,18,"+") +#20102=@"loc,{#10000},2,14,2,14" +locations_default(#20102,#10000,2,14,2,14) +hasLocation(#20101,#20102) +#20103=* +tokeninfo(#20103,3,#20001,19,"1") +hasLocation(#20103,#20036) +#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) +#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) +#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) +#20114=* +tokeninfo(#20114,8,#20001,26,"{") +#20115=@"loc,{#10000},5,14,5,14" +locations_default(#20115,#10000,5,14,5,14) +hasLocation(#20114,#20115) +#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) +#20118=* +tokeninfo(#20118,8,#20001,28,"(") +#20119=@"loc,{#10000},6,9,6,9" +locations_default(#20119,#10000,6,9,6,9) +hasLocation(#20118,#20119) +#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) +#20132=* +tokeninfo(#20132,8,#20001,36,"}") +hasLocation(#20132,#20070) +#20133=* +tokeninfo(#20133,0,#20001,37,"") +#20134=@"loc,{#10000},8,1,8,0" +locations_default(#20134,#10000,8,1,8,0) +hasLocation(#20133,#20134) +#20135=* +entry_cfg_node(#20135,#20001) +#20136=@"loc,{#10000},1,1,1,0" +locations_default(#20136,#10000,1,1,1,0) +hasLocation(#20135,#20136) +#20137=* +exit_cfg_node(#20137,#20001) +hasLocation(#20137,#20134) +successor(#20037,#20137) +#20138=* +entry_cfg_node(#20138,#20037) +#20139=@"loc,{#10000},5,1,5,0" +locations_default(#20139,#10000,5,1,5,0) +hasLocation(#20138,#20139) +#20140=* +exit_cfg_node(#20140,#20037) +#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) +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 new file mode 100644 index 00000000000..8466f842d7b --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/import1.js.trap @@ -0,0 +1,100 @@ +#10000=@"/import1.js;sourcefile" +files(#10000,"/import1.js","import1","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +numlines(#20001,1,1,0) +#20014=* +tokeninfo(#20014,7,#20001,0,"import") +#20015=@"loc,{#10000},1,1,1,6" +locations_default(#20015,#10000,1,1,1,6) +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) +#20020=* +tokeninfo(#20020,8,#20001,4,";") +#20021=@"loc,{#10000},1,20,1,20" +locations_default(#20021,#10000,1,20,1,20) +hasLocation(#20020,#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) +#20024=* +entry_cfg_node(#20024,#20001) +#20025=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..3fdc1d70488 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/import2.js.trap @@ -0,0 +1,116 @@ +#10000=@"/import2.js;sourcefile" +files(#10000,"/import2.js","import2","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +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) +#20024=* +tokeninfo(#20024,4,#20001,5,"'foo'") +hasLocation(#20024,#20009) +#20025=* +tokeninfo(#20025,8,#20001,6,";") +#20026=@"loc,{#10000},1,24,1,24" +locations_default(#20026,#10000,1,24,1,24) +hasLocation(#20025,#20026) +#20027=* +tokeninfo(#20027,0,#20001,7,"") +#20028=@"loc,{#10000},1,25,1,24" +locations_default(#20028,#10000,1,25,1,24) +hasLocation(#20027,#20028) +#20029=* +entry_cfg_node(#20029,#20001) +#20030=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..e42af4de913 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/import3.js.trap @@ -0,0 +1,128 @@ +#10000=@"/import3.js;sourcefile" +files(#10000,"/import3.js","import3","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +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) +#20022=* +tokeninfo(#20022,6,#20001,3,"as") +#20023=@"loc,{#10000},1,12,1,13" +locations_default(#20023,#10000,1,12,1,13) +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) +#20029=* +tokeninfo(#20029,4,#20001,7,"'foo'") +hasLocation(#20029,#20009) +#20030=* +tokeninfo(#20030,8,#20001,8,";") +#20031=@"loc,{#10000},1,29,1,29" +locations_default(#20031,#10000,1,29,1,29) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,0,#20001,9,"") +#20033=@"loc,{#10000},1,30,1,29" +locations_default(#20033,#10000,1,30,1,29) +hasLocation(#20032,#20033) +#20034=* +entry_cfg_node(#20034,#20001) +#20035=@"loc,{#10000},1,1,1,0" +locations_default(#20035,#10000,1,1,1,0) +hasLocation(#20034,#20035) +#20036=* +exit_cfg_node(#20036,#20001) +hasLocation(#20036,#20033) +successor(#20007,#20036) +successor(#20010,#20007) +successor(#20034,#20010) +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 new file mode 100644 index 00000000000..d4eb85a489c --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/import4.js.trap @@ -0,0 +1,162 @@ +#10000=@"/import4.js;sourcefile" +files(#10000,"/import4.js","import4","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +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) +#20026=* +tokeninfo(#20026,8,#20001,2,",") +#20027=@"loc,{#10000},1,9,1,9" +locations_default(#20027,#10000,1,9,1,9) +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) +#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) +#20038=* +tokeninfo(#20038,4,#20001,9,"'foo'") +hasLocation(#20038,#20012) +#20039=* +tokeninfo(#20039,8,#20001,10,";") +#20040=@"loc,{#10000},1,32,1,32" +locations_default(#20040,#10000,1,32,1,32) +hasLocation(#20039,#20040) +#20041=* +tokeninfo(#20041,0,#20001,11,"") +#20042=@"loc,{#10000},1,33,1,32" +locations_default(#20042,#10000,1,33,1,32) +hasLocation(#20041,#20042) +#20043=* +entry_cfg_node(#20043,#20001) +#20044=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..18b2128ef58 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/import5.js.trap @@ -0,0 +1,108 @@ +#10000=@"/import5.js;sourcefile" +files(#10000,"/import5.js","import5","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +numlines(#20001,1,1,0) +#20014=* +tokeninfo(#20014,7,#20001,0,"import") +#20015=@"loc,{#10000},1,1,1,6" +locations_default(#20015,#10000,1,1,1,6) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,1,"*") +#20017=@"loc,{#10000},1,8,1,8" +locations_default(#20017,#10000,1,8,1,8) +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) +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) +#20023=* +tokeninfo(#20023,4,#20001,5,"'foo'") +hasLocation(#20023,#20008) +#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) +#20028=* +entry_cfg_node(#20028,#20001) +#20029=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..76399b8698d --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/import6.js.trap @@ -0,0 +1,66 @@ +#10000=@"/import6.js;sourcefile" +files(#10000,"/import6.js","import6","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +numlines(#20001,1,1,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,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) +#20013=* +tokeninfo(#20013,0,#20001,3,"") +#20014=@"loc,{#10000},1,14,1,13" +locations_default(#20014,#10000,1,14,1,13) +hasLocation(#20013,#20014) +#20015=* +entry_cfg_node(#20015,#20001) +#20016=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..44f037a199f --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/import7.js.trap @@ -0,0 +1,228 @@ +#10000=@"/import7.js;sourcefile" +files(#10000,"/import7.js","import7","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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';"," +") +hasLocation(#20031,#20011) +#20032=* +lines(#20032,#20001,"import 'bar';"," +") +hasLocation(#20032,#20018) +#20033=* +lines(#20033,#20001,"import { y as z } from 'baz';","") +hasLocation(#20033,#20022) +numlines(#20001,3,3,0) +#20034=* +tokeninfo(#20034,7,#20001,0,"import") +#20035=@"loc,{#10000},1,1,1,6" +locations_default(#20035,#10000,1,1,1,6) +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) +#20040=* +tokeninfo(#20040,8,#20001,4,";") +#20041=@"loc,{#10000},1,20,1,20" +locations_default(#20041,#10000,1,20,1,20) +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) +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) +#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) +#20054=* +tokeninfo(#20054,6,#20001,12,"z") +hasLocation(#20054,#20030) +#20055=* +tokeninfo(#20055,8,#20001,13,"}") +#20056=@"loc,{#10000},3,17,3,17" +locations_default(#20056,#10000,3,17,3,17) +hasLocation(#20055,#20056) +#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) +#20059=* +tokeninfo(#20059,4,#20001,15,"'baz'") +hasLocation(#20059,#20024) +#20060=* +tokeninfo(#20060,8,#20001,16,";") +#20061=@"loc,{#10000},3,29,3,29" +locations_default(#20061,#10000,3,29,3,29) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,0,#20001,17,"") +#20063=@"loc,{#10000},3,30,3,29" +locations_default(#20063,#10000,3,30,3,29) +hasLocation(#20062,#20063) +#20064=* +entry_cfg_node(#20064,#20001) +#20065=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..c58b10d22e6 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/let.js.trap @@ -0,0 +1,729 @@ +#10000=@"/let.js;sourcefile" +files(#10000,"/let.js","let","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,12,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) +#20004=* +scopes(#20004,4) +scopenodes(#20003,#20004) +scopenesting(#20004,#20000) +#20005=@"var;{x};{#20004}" +variables(#20005,"x",#20004) +#20006=* +stmts(#20006,23,#20003,0,"let x = 23;") +#20007=@"loc,{#10000},2,5,2,15" +locations_default(#20007,#10000,2,5,2,15) +hasLocation(#20006,#20007) +stmtContainers(#20006,#20001) +#20008=* +exprs(#20008,64,#20006,0,"x = 23") +#20009=@"loc,{#10000},2,9,2,14" +locations_default(#20009,#10000,2,9,2,14) +hasLocation(#20008,#20009) +enclosingStmt(#20008,#20006) +exprContainers(#20008,#20001) +#20010=* +exprs(#20010,78,#20008,0,"x") +#20011=@"loc,{#10000},2,9,2,9" +locations_default(#20011,#10000,2,9,2,9) +hasLocation(#20010,#20011) +enclosingStmt(#20010,#20006) +exprContainers(#20010,#20001) +literals("x","x",#20010) +decl(#20010,#20005) +#20012=* +exprs(#20012,3,#20008,1,"23") +#20013=@"loc,{#10000},2,13,2,14" +locations_default(#20013,#10000,2,13,2,14) +hasLocation(#20012,#20013) +enclosingStmt(#20012,#20006) +exprContainers(#20012,#20001) +literals("23","23",#20012) +#20014=* +stmts(#20014,1,#20003,1,"{\n ... ;\n }") +#20015=@"loc,{#10000},3,5,11,5" +locations_default(#20015,#10000,3,5,11,5) +hasLocation(#20014,#20015) +stmtContainers(#20014,#20001) +#20016=* +scopes(#20016,4) +scopenodes(#20014,#20016) +scopenesting(#20016,#20004) +#20017=@"var;{x};{#20016}" +variables(#20017,"x",#20016) +#20018=* +stmts(#20018,23,#20014,0,"let x = 42;") +#20019=@"loc,{#10000},4,9,4,19" +locations_default(#20019,#10000,4,9,4,19) +hasLocation(#20018,#20019) +stmtContainers(#20018,#20001) +#20020=* +exprs(#20020,64,#20018,0,"x = 42") +#20021=@"loc,{#10000},4,13,4,18" +locations_default(#20021,#10000,4,13,4,18) +hasLocation(#20020,#20021) +enclosingStmt(#20020,#20018) +exprContainers(#20020,#20001) +#20022=* +exprs(#20022,78,#20020,0,"x") +#20023=@"loc,{#10000},4,13,4,13" +locations_default(#20023,#10000,4,13,4,13) +hasLocation(#20022,#20023) +enclosingStmt(#20022,#20018) +exprContainers(#20022,#20001) +literals("x","x",#20022) +decl(#20022,#20017) +#20024=* +exprs(#20024,3,#20020,1,"42") +#20025=@"loc,{#10000},4,17,4,18" +locations_default(#20025,#10000,4,17,4,18) +hasLocation(#20024,#20025) +enclosingStmt(#20024,#20018) +exprContainers(#20024,#20001) +literals("42","42",#20024) +#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) +#20069=* +exprs(#20069,0,#20064,1,"log") +#20070=@"loc,{#10000},7,21,7,23" +locations_default(#20070,#10000,7,21,7,23) +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) +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) +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) +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) +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) +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) +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) +#20085=* +stmts(#20085,23,#20073,0,"let x") +#20086=@"loc,{#10000},9,14,9,18" +locations_default(#20086,#10000,9,14,9,18) +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) +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) +#20119=* +tokeninfo(#20119,7,#20001,1,"let") +#20120=@"loc,{#10000},2,5,2,7" +locations_default(#20120,#10000,2,5,2,7) +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) +#20125=* +tokeninfo(#20125,8,#20001,5,";") +#20126=@"loc,{#10000},2,15,2,15" +locations_default(#20126,#10000,2,15,2,15) +hasLocation(#20125,#20126) +#20127=* +tokeninfo(#20127,8,#20001,6,"{") +#20128=@"loc,{#10000},3,5,3,5" +locations_default(#20128,#10000,3,5,3,5) +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) +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) +#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) +#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) +#20144=* +tokeninfo(#20144,8,#20001,16,"=") +#20145=@"loc,{#10000},5,20,5,20" +locations_default(#20145,#10000,5,20,5,20) +hasLocation(#20144,#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) +#20150=* +tokeninfo(#20150,8,#20001,20,";") +#20151=@"loc,{#10000},5,26,5,26" +locations_default(#20151,#10000,5,26,5,26) +hasLocation(#20150,#20151) +#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) +#20155=* +tokeninfo(#20155,3,#20001,23,"42") +hasLocation(#20155,#20035) +#20156=* +tokeninfo(#20156,8,#20001,24,";") +#20157=@"loc,{#10000},5,32,5,32" +locations_default(#20157,#10000,5,32,5,32) +hasLocation(#20156,#20157) +#20158=* +tokeninfo(#20158,8,#20001,25,")") +#20159=@"loc,{#10000},5,33,5,33" +locations_default(#20159,#10000,5,33,5,33) +hasLocation(#20158,#20159) +#20160=* +tokeninfo(#20160,8,#20001,26,"{") +#20161=@"loc,{#10000},5,35,5,35" +locations_default(#20161,#10000,5,35,5,35) +hasLocation(#20160,#20161) +#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) +#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) +#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) +#20171=* +tokeninfo(#20171,8,#20001,33,".") +#20172=@"loc,{#10000},7,20,7,20" +locations_default(#20172,#10000,7,20,7,20) +hasLocation(#20171,#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) +#20177=* +tokeninfo(#20177,8,#20001,37,")") +#20178=@"loc,{#10000},7,26,7,26" +locations_default(#20178,#10000,7,26,7,26) +hasLocation(#20177,#20178) +#20179=* +tokeninfo(#20179,8,#20001,38,";") +#20180=@"loc,{#10000},7,27,7,27" +locations_default(#20180,#10000,7,27,7,27) +hasLocation(#20179,#20180) +#20181=* +tokeninfo(#20181,8,#20001,39,"}") +#20182=@"loc,{#10000},8,9,8,9" +locations_default(#20182,#10000,8,9,8,9) +hasLocation(#20181,#20182) +#20183=* +tokeninfo(#20183,7,#20001,40,"for") +#20184=@"loc,{#10000},9,9,9,11" +locations_default(#20184,#10000,9,9,9,11) +hasLocation(#20183,#20184) +#20185=* +tokeninfo(#20185,8,#20001,41,"(") +#20186=@"loc,{#10000},9,13,9,13" +locations_default(#20186,#10000,9,13,9,13) +hasLocation(#20185,#20186) +#20187=* +tokeninfo(#20187,7,#20001,42,"let") +#20188=@"loc,{#10000},9,14,9,16" +locations_default(#20188,#10000,9,14,9,16) +hasLocation(#20187,#20188) +#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) +#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) +#20195=* +tokeninfo(#20195,8,#20001,47,":") +#20196=@"loc,{#10000},9,26,9,26" +locations_default(#20196,#10000,9,26,9,26) +hasLocation(#20195,#20196) +#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) +#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) +#20203=* +tokeninfo(#20203,8,#20001,52,";") +#20204=@"loc,{#10000},10,14,10,14" +locations_default(#20204,#10000,10,14,10,14) +hasLocation(#20203,#20204) +#20205=* +tokeninfo(#20205,8,#20001,53,"}") +#20206=@"loc,{#10000},11,5,11,5" +locations_default(#20206,#10000,11,5,11,5) +hasLocation(#20205,#20206) +#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) +#20210=* +entry_cfg_node(#20210,#20001) +#20211=@"loc,{#10000},1,1,1,0" +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) +#20213=* +guard_node(#20213,1,#20030) +hasLocation(#20213,#20031) +successor(#20213,#20048) +#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) +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 new file mode 100644 index 00000000000..186e28fc02b --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/let2.js.trap @@ -0,0 +1,99 @@ +#10000=@"/let2.js;sourcefile" +files(#10000,"/let2.js","let2","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,2,0" +locations_default(#20002,#10000,1,1,2,0) +hasLocation(#20001,#20002) +#20003=@"var;{x};{#20000}" +variables(#20003,"x",#20000) +#20004=* +stmts(#20004,23,#20001,0,"let /* **/ x = 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,64,#20004,0,"x = 42") +#20007=@"loc,{#10000},1,12,1,17" +locations_default(#20007,#10000,1,12,1,17) +hasLocation(#20006,#20007) +enclosingStmt(#20006,#20004) +exprContainers(#20006,#20001) +#20008=* +exprs(#20008,78,#20006,0,"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) +#20010=* +exprs(#20010,3,#20006,1,"42") +#20011=@"loc,{#10000},1,16,1,17" +locations_default(#20011,#10000,1,16,1,17) +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) +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) +#20020=* +tokeninfo(#20020,3,#20001,3,"42") +hasLocation(#20020,#20011) +#20021=* +tokeninfo(#20021,8,#20001,4,";") +#20022=@"loc,{#10000},1,18,1,18" +locations_default(#20022,#10000,1,18,1,18) +hasLocation(#20021,#20022) +#20023=* +tokeninfo(#20023,0,#20001,5,"") +#20024=@"loc,{#10000},2,1,2,0" +locations_default(#20024,#10000,2,1,2,0) +hasLocation(#20023,#20024) +#20025=* +entry_cfg_node(#20025,#20001) +#20026=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..2c924daf790 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/nested_import.js.trap @@ -0,0 +1,353 @@ +#10000=@"/nested_import.js;sourcefile" +files(#10000,"/nested_import.js","nested_import","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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';"," +") +hasLocation(#20046,#20011) +#20047=* +lines(#20047,#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';"," +") +#20050=@"loc,{#10000},3,1,3,24" +locations_default(#20050,#10000,3,1,3,24) +hasLocation(#20049,#20050) +indentation(#10000,3," ",2) +#20051=* +lines(#20051,#20001," x = y;"," +") +#20052=@"loc,{#10000},4,1,4,8" +locations_default(#20052,#10000,4,1,4,8) +hasLocation(#20051,#20052) +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) +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) +#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) +#20071=* +tokeninfo(#20071,8,#20001,9,"!") +#20072=@"loc,{#10000},2,5,2,5" +locations_default(#20072,#10000,2,5,2,5) +hasLocation(#20071,#20072) +#20073=* +tokeninfo(#20073,6,#20001,10,"x") +hasLocation(#20073,#20023) +#20074=* +tokeninfo(#20074,8,#20001,11,")") +#20075=@"loc,{#10000},2,7,2,7" +locations_default(#20075,#10000,2,7,2,7) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,8,#20001,12,"{") +#20077=@"loc,{#10000},2,9,2,9" +locations_default(#20077,#10000,2,9,2,9) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,7,#20001,13,"import") +#20079=@"loc,{#10000},3,3,3,8" +locations_default(#20079,#10000,3,3,3,8) +hasLocation(#20078,#20079) +#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) +#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) +#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) +#20090=* +tokeninfo(#20090,6,#20001,20,"x") +hasLocation(#20090,#20043) +#20091=* +tokeninfo(#20091,8,#20001,21,"=") +#20092=@"loc,{#10000},4,5,4,5" +locations_default(#20092,#10000,4,5,4,5) +hasLocation(#20091,#20092) +#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) +#20097=* +tokeninfo(#20097,0,#20001,25,"") +#20098=@"loc,{#10000},6,1,6,0" +locations_default(#20098,#10000,6,1,6,0) +hasLocation(#20097,#20098) +#20099=* +entry_cfg_node(#20099,#20001) +#20100=@"loc,{#10000},1,1,1,0" +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) +#20102=* +guard_node(#20102,0,#20022) +hasLocation(#20102,#20023) +successor(#20102,#20024) +#20103=* +guard_node(#20103,1,#20022) +hasLocation(#20103,#20023) +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) +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 new file mode 100644 index 00000000000..90606dcc709 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/new_target.js.trap @@ -0,0 +1,180 @@ +#10000=@"/new_target.js;sourcefile" +files(#10000,"/new_target.js","new_target","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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 ... 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() {"," +") +#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) +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) +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) +#20028=* +tokeninfo(#20028,8,#20001,2,"(") +#20029=@"loc,{#10000},1,11,1,11" +locations_default(#20029,#10000,1,11,1,11) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,3,")") +#20031=@"loc,{#10000},1,12,1,12" +locations_default(#20031,#10000,1,12,1,12) +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) +#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) +#20049=* +tokeninfo(#20049,0,#20001,13,"") +#20050=@"loc,{#10000},3,2,3,1" +locations_default(#20050,#10000,3,2,3,1) +hasLocation(#20049,#20050) +#20051=* +entry_cfg_node(#20051,#20001) +#20052=@"loc,{#10000},1,1,1,0" +locations_default(#20052,#10000,1,1,1,0) +hasLocation(#20051,#20052) +#20053=* +exit_cfg_node(#20053,#20001) +hasLocation(#20053,#20050) +successor(#20004,#20053) +#20054=* +entry_cfg_node(#20054,#20004) +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) +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 new file mode 100644 index 00000000000..f6b64a7fb1f --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/no-substitution.js.trap @@ -0,0 +1,64 @@ +#10000=@"/no-substitution.js;sourcefile" +files(#10000,"/no-substitution.js","no-substitution","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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,"``"," +") +hasLocation(#20006,#20004) +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) +#20013=* +tokeninfo(#20013,0,#20001,3,"") +#20014=@"loc,{#10000},2,1,2,0" +locations_default(#20014,#10000,2,1,2,0) +hasLocation(#20013,#20014) +#20015=* +entry_cfg_node(#20015,#20001) +#20016=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..4aa441ed680 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/nullMethodName.js.trap @@ -0,0 +1,236 @@ +#10000=@"/nullMethodName.js;sourcefile" +files(#10000,"/nullMethodName.js","nullMethodName","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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) +#20010=* +properties(#20010,#20005,2,2,"set [null](v) { }") +#20011=@"loc,{#10000},2,3,2,19" +locations_default(#20011,#10000,2,3,2,19) +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) +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) +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) +#20018=* +exprs(#20018,78,#20014,0,"v") +#20019=@"loc,{#10000},2,14,2,14" +locations_default(#20019,#10000,2,14,2,14) +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) +#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) +#20030=* +lines(#20030,#20001,"class C {"," +") +#20031=@"loc,{#10000},1,1,1,9" +locations_default(#20031,#10000,1,1,1,9) +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) +#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) +#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) +#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) +#20051=* +tokeninfo(#20051,8,#20001,9,")") +#20052=@"loc,{#10000},2,15,2,15" +locations_default(#20052,#10000,2,15,2,15) +hasLocation(#20051,#20052) +#20053=* +tokeninfo(#20053,8,#20001,10,"{") +#20054=@"loc,{#10000},2,17,2,17" +locations_default(#20054,#10000,2,17,2,17) +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) +#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) +#20060=* +entry_cfg_node(#20060,#20001) +#20061=@"loc,{#10000},1,1,1,0" +locations_default(#20061,#10000,1,1,1,0) +hasLocation(#20060,#20061) +#20062=* +exit_cfg_node(#20062,#20001) +hasLocation(#20062,#20059) +successor(#20026,#20023) +#20063=* +entry_cfg_node(#20063,#20026) +hasLocation(#20063,#20024) +#20064=* +exit_cfg_node(#20064,#20026) +hasLocation(#20064,#20024) +successor(#20029,#20064) +successor(#20063,#20029) +successor(#20025,#20026) +successor(#20023,#20005) +successor(#20014,#20010) +#20065=* +entry_cfg_node(#20065,#20014) +#20066=@"loc,{#10000},2,13,2,12" +locations_default(#20066,#10000,2,13,2,12) +hasLocation(#20065,#20066) +#20067=* +exit_cfg_node(#20067,#20014) +#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) +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 new file mode 100644 index 00000000000..ce24a10e76d --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/odasa-2593.js.trap @@ -0,0 +1,204 @@ +#10000=@"/odasa-2593.js;sourcefile" +files(#10000,"/odasa-2593.js","odasa-2593","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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() {"," +") +#20025=@"loc,{#10000},1,1,1,17" +locations_default(#20025,#10000,1,1,1,17) +hasLocation(#20024,#20025) +#20026=* +lines(#20026,#20001," arguments;"," +") +#20027=@"loc,{#10000},2,1,2,14" +locations_default(#20027,#10000,2,1,2,14) +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) +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) +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) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,6,#20001,1,"test") +hasLocation(#20034,#20006) +#20035=* +tokeninfo(#20035,8,#20001,2,"(") +#20036=@"loc,{#10000},1,14,1,14" +locations_default(#20036,#10000,1,14,1,14) +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) +#20039=* +tokeninfo(#20039,8,#20001,4,"{") +#20040=@"loc,{#10000},1,17,1,17" +locations_default(#20040,#10000,1,17,1,17) +hasLocation(#20039,#20040) +#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) +#20045=* +tokeninfo(#20045,8,#20001,8,"(") +#20046=@"loc,{#10000},3,9,3,9" +locations_default(#20046,#10000,3,9,3,9) +hasLocation(#20045,#20046) +#20047=* +tokeninfo(#20047,6,#20001,9,"arguments") +hasLocation(#20047,#20023) +#20048=* +tokeninfo(#20048,8,#20001,10,")") +#20049=@"loc,{#10000},3,19,3,19" +locations_default(#20049,#10000,3,19,3,19) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,11,";") +#20051=@"loc,{#10000},3,20,3,20" +locations_default(#20051,#10000,3,20,3,20) +hasLocation(#20050,#20051) +#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) +#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,#20054) +successor(#20004,#20057) +#20058=* +entry_cfg_node(#20058,#20004) +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) +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 new file mode 100644 index 00000000000..9be4b97471c --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/properties.js.trap @@ -0,0 +1,431 @@ +#10000=@"/properties.js;sourcefile" +files(#10000,"/properties.js","properties","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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,"," +") +#20054=@"loc,{#10000},1,1,1,11" +locations_default(#20054,#10000,1,1,1,11) +hasLocation(#20053,#20054) +#20055=* +lines(#20055,#20001," o = {"," +") +#20056=@"loc,{#10000},2,1,2,9" +locations_default(#20056,#10000,2,1,2,9) +hasLocation(#20055,#20056) +indentation(#10000,2," ",4) +#20057=* +lines(#20057,#20001," [""prop"" + Math.random()]: 23,"," +") +#20058=@"loc,{#10000},3,1,3,37" +locations_default(#20058,#10000,3,1,3,37) +hasLocation(#20057,#20058) +indentation(#10000,3," ",8) +#20059=* +lines(#20059,#20001," x,"," +") +#20060=@"loc,{#10000},4,1,4,10" +locations_default(#20060,#10000,4,1,4,10) +hasLocation(#20059,#20060) +indentation(#10000,4," ",8) +#20061=* +lines(#20061,#20001," m() { return 56; }"," +") +#20062=@"loc,{#10000},5,1,5,26" +locations_default(#20062,#10000,5,1,5,26) +hasLocation(#20061,#20062) +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) +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) +#20068=* +tokeninfo(#20068,8,#20001,2,"=") +#20069=@"loc,{#10000},1,7,1,7" +locations_default(#20069,#10000,1,7,1,7) +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) +#20074=* +tokeninfo(#20074,8,#20001,6,"=") +#20075=@"loc,{#10000},2,7,2,7" +locations_default(#20075,#10000,2,7,2,7) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,8,#20001,7,"{") +#20077=@"loc,{#10000},2,9,2,9" +locations_default(#20077,#10000,2,9,2,9) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,8,#20001,8,"[") +#20079=@"loc,{#10000},3,9,3,9" +locations_default(#20079,#10000,3,9,3,9) +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) +#20083=* +tokeninfo(#20083,6,#20001,11,"Math") +hasLocation(#20083,#20029) +#20084=* +tokeninfo(#20084,8,#20001,12,".") +#20085=@"loc,{#10000},3,23,3,23" +locations_default(#20085,#10000,3,23,3,23) +hasLocation(#20084,#20085) +#20086=* +tokeninfo(#20086,6,#20001,13,"random") +hasLocation(#20086,#20032) +#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) +#20091=* +tokeninfo(#20091,8,#20001,16,"]") +#20092=@"loc,{#10000},3,32,3,32" +locations_default(#20092,#10000,3,32,3,32) +hasLocation(#20091,#20092) +#20093=* +tokeninfo(#20093,8,#20001,17,":") +#20094=@"loc,{#10000},3,33,3,33" +locations_default(#20094,#10000,3,33,3,33) +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) +#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) +#20102=* +tokeninfo(#20102,8,#20001,23,"(") +#20103=@"loc,{#10000},5,10,5,10" +locations_default(#20103,#10000,5,10,5,10) +hasLocation(#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) +#20106=* +tokeninfo(#20106,8,#20001,25,"{") +#20107=@"loc,{#10000},5,13,5,13" +locations_default(#20107,#10000,5,13,5,13) +hasLocation(#20106,#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) +#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) +#20121=* +entry_cfg_node(#20121,#20001) +#20122=@"loc,{#10000},1,1,1,0" +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) +#20124=* +entry_cfg_node(#20124,#20043) +#20125=@"loc,{#10000},5,10,5,9" +locations_default(#20125,#10000,5,10,5,9) +hasLocation(#20124,#20125) +#20126=* +exit_cfg_node(#20126,#20043) +#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) +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 new file mode 100644 index 00000000000..0c7b76ca778 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/property_pattern_with_default.js.trap @@ -0,0 +1,153 @@ +#10000=@"/property_pattern_with_default.js;sourcefile" +files(#10000,"/property_pattern_with_default.js","property_pattern_with_default","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +#20004=* +exprs(#20004,65,#20003,0,"({x = 1}) => x") +#20005=@"loc,{#10000},1,1,1,14" +locations_default(#20005,#10000,1,1,1,14) +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) +#20008=* +exprs(#20008,68,#20004,0,"{x = 1}") +#20009=@"loc,{#10000},1,2,1,8" +locations_default(#20009,#10000,1,2,1,8) +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) +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) +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) +#20020=* +tokeninfo(#20020,8,#20001,0,"(") +#20021=@"loc,{#10000},1,1,1,1" +locations_default(#20021,#10000,1,1,1,1) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,1,"{") +#20023=@"loc,{#10000},1,2,1,2" +locations_default(#20023,#10000,1,2,1,2) +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) +#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) +#20035=* +tokeninfo(#20035,8,#20001,9,";") +#20036=@"loc,{#10000},1,15,1,15" +locations_default(#20036,#10000,1,15,1,15) +hasLocation(#20035,#20036) +#20037=* +tokeninfo(#20037,0,#20001,10,"") +#20038=@"loc,{#10000},1,16,1,15" +locations_default(#20038,#10000,1,16,1,15) +hasLocation(#20037,#20038) +#20039=* +entry_cfg_node(#20039,#20001) +#20040=@"loc,{#10000},1,1,1,0" +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) +#20042=* +entry_cfg_node(#20042,#20004) +hasLocation(#20042,#20040) +#20043=* +exit_cfg_node(#20043,#20004) +#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) +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 new file mode 100644 index 00000000000..10a16898dcf --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/restparms.js.trap @@ -0,0 +1,146 @@ +#10000=@"/restparms.js;sourcefile" +files(#10000,"/restparms.js","restparms","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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) {"," +") +#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) +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) +#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) +#20029=* +tokeninfo(#20029,8,#20001,5,"...") +#20030=@"loc,{#10000},1,15,1,17" +locations_default(#20030,#10000,1,15,1,17) +hasLocation(#20029,#20030) +#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) +#20037=* +tokeninfo(#20037,0,#20001,10,"") +#20038=@"loc,{#10000},2,2,2,1" +locations_default(#20038,#10000,2,2,2,1) +hasLocation(#20037,#20038) +#20039=* +entry_cfg_node(#20039,#20001) +#20040=@"loc,{#10000},1,1,1,0" +locations_default(#20040,#10000,1,1,1,0) +hasLocation(#20039,#20040) +#20041=* +exit_cfg_node(#20041,#20001) +hasLocation(#20041,#20038) +successor(#20004,#20041) +#20042=* +entry_cfg_node(#20042,#20004) +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) +numlines(#10000,2,2,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2015/output/trap/restparms2.js.trap b/javascript/extractor/tests/es2015/output/trap/restparms2.js.trap new file mode 100644 index 00000000000..a680f8a7a3f --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/restparms2.js.trap @@ -0,0 +1,35 @@ +#10000=@"/restparms2.js;sourcefile" +files(#10000,"/restparms2.js","restparms2","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,1" +locations_default(#20002,#10000,1,1,1,1) +hasLocation(#20001,#20002) +#20003=* +jsParseErrors(#20003,#20001,"Error: Unexpected token","function f(x, ...[y, z]) { +") +#20004=@"loc,{#10000},1,18,1,18" +locations_default(#20004,#10000,1,18,1,18) +hasLocation(#20003,#20004) +#20005=* +lines(#20005,#20001,"function f(x, ...[y, z]) {"," +") +#20006=@"loc,{#10000},1,1,1,26" +locations_default(#20006,#10000,1,1,1,26) +hasLocation(#20005,#20006) +#20007=* +lines(#20007,#20001,"}","") +#20008=@"loc,{#10000},2,1,2,1" +locations_default(#20008,#10000,2,1,2,1) +hasLocation(#20007,#20008) +numlines(#20001,2,0,0) +numlines(#10000,2,0,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 new file mode 100644 index 00000000000..0a498fda418 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/spreadelement.js.trap @@ -0,0 +1,196 @@ +#10000=@"/spreadelement.js;sourcefile" +files(#10000,"/spreadelement.js","spreadelement","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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];"," +") +hasLocation(#20027,#20004) +#20028=* +lines(#20028,#20001,"new Array(...elts);","") +hasLocation(#20028,#20016) +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) +#20032=* +tokeninfo(#20032,8,#20001,2,",") +#20033=@"loc,{#10000},1,3,1,3" +locations_default(#20033,#10000,1,3,1,3) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,3,"...") +#20035=@"loc,{#10000},1,5,1,7" +locations_default(#20035,#10000,1,5,1,7) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,6,#20001,4,"as") +hasLocation(#20036,#20013) +#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) +#20044=* +tokeninfo(#20044,8,#20001,9,"(") +#20045=@"loc,{#10000},2,10,2,10" +locations_default(#20045,#10000,2,10,2,10) +hasLocation(#20044,#20045) +#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) +#20049=* +tokeninfo(#20049,8,#20001,12,")") +#20050=@"loc,{#10000},2,18,2,18" +locations_default(#20050,#10000,2,18,2,18) +hasLocation(#20049,#20050) +#20051=* +tokeninfo(#20051,8,#20001,13,";") +#20052=@"loc,{#10000},2,19,2,19" +locations_default(#20052,#10000,2,19,2,19) +hasLocation(#20051,#20052) +#20053=* +tokeninfo(#20053,0,#20001,14,"") +#20054=@"loc,{#10000},2,20,2,19" +locations_default(#20054,#10000,2,20,2,19) +hasLocation(#20053,#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,#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) +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 new file mode 100644 index 00000000000..a8e679d8242 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/super_call.js.trap @@ -0,0 +1,374 @@ +#10000=@"/super_call.js;sourcefile" +files(#10000,"/super_call.js","super_call","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,5,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=* +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) +#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) +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) +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) +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) +#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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +#20040=* +scopes(#20040,1) +scopenodes(#20039,#20040) +scopenesting(#20040,#20008) +#20041=@"var;{args};{#20040}" +variables(#20041,"args",#20040) +#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) +#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) +#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) +#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) +#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) +#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) +#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) +#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) +#20066=* +tokeninfo(#20066,8,#20001,4,"{") +#20067=@"loc,{#10000},1,19,1,19" +locations_default(#20067,#10000,1,19,1,19) +hasLocation(#20066,#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) +#20078=* +tokeninfo(#20078,8,#20001,11,".") +#20079=@"loc,{#10000},3,17,3,17" +locations_default(#20079,#10000,3,17,3,17) +hasLocation(#20078,#20079) +#20080=* +tokeninfo(#20080,6,#20001,12,"m") +hasLocation(#20080,#20033) +#20081=* +tokeninfo(#20081,8,#20001,13,"(") +#20082=@"loc,{#10000},3,19,3,19" +locations_default(#20082,#10000,3,19,3,19) +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) +#20085=* +tokeninfo(#20085,8,#20001,15,"+") +#20086=@"loc,{#10000},3,22,3,22" +locations_default(#20086,#10000,3,22,3,22) +hasLocation(#20085,#20086) +#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) +#20090=* +tokeninfo(#20090,8,#20001,18,"}") +#20091=@"loc,{#10000},4,3,4,3" +locations_default(#20091,#10000,4,3,4,3) +hasLocation(#20090,#20091) +#20092=* +tokeninfo(#20092,8,#20001,19,"}") +hasLocation(#20092,#20059) +#20093=* +tokeninfo(#20093,0,#20001,20,"") +#20094=@"loc,{#10000},5,2,5,1" +locations_default(#20094,#10000,5,2,5,1) +hasLocation(#20093,#20094) +#20095=* +entry_cfg_node(#20095,#20001) +#20096=@"loc,{#10000},1,1,1,0" +locations_default(#20096,#10000,1,1,1,0) +hasLocation(#20095,#20096) +#20097=* +exit_cfg_node(#20097,#20001) +hasLocation(#20097,#20094) +successor(#20039,#20036) +#20098=* +entry_cfg_node(#20098,#20039) +hasLocation(#20098,#20037) +#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) +#20100=* +entry_cfg_node(#20100,#20016) +#20101=@"loc,{#10000},2,4,2,3" +locations_default(#20101,#10000,2,4,2,3) +hasLocation(#20100,#20101) +#20102=* +exit_cfg_node(#20102,#20016) +#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) +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 new file mode 100644 index 00000000000..bbc99278571 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/super_ctor.js.trap @@ -0,0 +1,250 @@ +#10000=@"/super_ctor.js;sourcefile" +files(#10000,"/super_ctor.js","super_ctor","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,5,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=* +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) +#20012=* +properties(#20012,#20005,2,0,"constru ... 2);\n }") +#20013=@"loc,{#10000},2,3,4,3" +locations_default(#20013,#10000,2,3,4,3) +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) +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) +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) +#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) +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) +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) +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) +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) +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) +hasLocation(#20030,#20031) +#20032=* +lines(#20032,#20001," constructor() {"," +") +#20033=@"loc,{#10000},2,1,2,17" +locations_default(#20033,#10000,2,1,2,17) +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) +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) +#20042=* +tokeninfo(#20042,6,#20001,1,"A") +hasLocation(#20042,#20007) +#20043=* +tokeninfo(#20043,7,#20001,2,"extends") +#20044=@"loc,{#10000},1,9,1,15" +locations_default(#20044,#10000,1,9,1,15) +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) +#20048=* +tokeninfo(#20048,6,#20001,5,"constructor") +hasLocation(#20048,#20015) +#20049=* +tokeninfo(#20049,8,#20001,6,"(") +#20050=@"loc,{#10000},2,14,2,14" +locations_default(#20050,#10000,2,14,2,14) +hasLocation(#20049,#20050) +#20051=* +tokeninfo(#20051,8,#20001,7,")") +#20052=@"loc,{#10000},2,15,2,15" +locations_default(#20052,#10000,2,15,2,15) +hasLocation(#20051,#20052) +#20053=* +tokeninfo(#20053,8,#20001,8,"{") +#20054=@"loc,{#10000},2,17,2,17" +locations_default(#20054,#10000,2,17,2,17) +hasLocation(#20053,#20054) +#20055=* +tokeninfo(#20055,7,#20001,9,"super") +hasLocation(#20055,#20027) +#20056=* +tokeninfo(#20056,8,#20001,10,"(") +#20057=@"loc,{#10000},3,10,3,10" +locations_default(#20057,#10000,3,10,3,10) +hasLocation(#20056,#20057) +#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) +#20066=* +tokeninfo(#20066,0,#20001,16,"") +#20067=@"loc,{#10000},5,2,5,1" +locations_default(#20067,#10000,5,2,5,1) +hasLocation(#20066,#20067) +#20068=* +entry_cfg_node(#20068,#20001) +#20069=@"loc,{#10000},1,1,1,0" +locations_default(#20069,#10000,1,1,1,0) +hasLocation(#20068,#20069) +#20070=* +exit_cfg_node(#20070,#20001) +hasLocation(#20070,#20067) +successor(#20016,#20012) +#20071=* +entry_cfg_node(#20071,#20016) +#20072=@"loc,{#10000},2,14,2,13" +locations_default(#20072,#10000,2,14,2,13) +hasLocation(#20071,#20072) +#20073=* +exit_cfg_node(#20073,#20016) +#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) +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 new file mode 100644 index 00000000000..96431cc6df7 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/templates.js.trap @@ -0,0 +1,742 @@ +#10000=@"/templates.js;sourcefile" +files(#10000,"/templates.js","templates","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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) {"," +") +#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(', ');"," +") +#20095=@"loc,{#10000},2,1,2,40" +locations_default(#20095,#10000,2,1,2,40) +hasLocation(#20094,#20095) +indentation(#10000,2," ",2) +#20096=* +lines(#20096,#20001,"}"," +") +#20097=@"loc,{#10000},3,1,3,1" +locations_default(#20097,#10000,3,1,3,1) +hasLocation(#20096,#20097) +#20098=* +lines(#20098,#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;"," +") +hasLocation(#20100,#20037) +#20101=* +lines(#20101,#20001,"var y = 19;"," +") +hasLocation(#20101,#20045) +#20102=* +lines(#20102,#20001,"`${x} + ${y} = ${x + y}`;"," +") +hasLocation(#20102,#20053) +#20103=* +lines(#20103,#20001,"tag `${x} + ${y} = ${x + y}`;","") +hasLocation(#20103,#20071) +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) +#20107=* +tokeninfo(#20107,8,#20001,2,"(") +#20108=@"loc,{#10000},1,13,1,13" +locations_default(#20108,#10000,1,13,1,13) +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) +#20115=* +tokeninfo(#20115,8,#20001,7,")") +#20116=@"loc,{#10000},1,32,1,32" +locations_default(#20116,#10000,1,32,1,32) +hasLocation(#20115,#20116) +#20117=* +tokeninfo(#20117,8,#20001,8,"{") +#20118=@"loc,{#10000},1,34,1,34" +locations_default(#20118,#10000,1,34,1,34) +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) +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) +#20125=* +tokeninfo(#20125,8,#20001,13,".") +#20126=@"loc,{#10000},2,29,2,29" +locations_default(#20126,#10000,2,29,2,29) +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) +#20131=* +tokeninfo(#20131,8,#20001,17,")") +#20132=@"loc,{#10000},2,39,2,39" +locations_default(#20132,#10000,2,39,2,39) +hasLocation(#20131,#20132) +#20133=* +tokeninfo(#20133,8,#20001,18,";") +#20134=@"loc,{#10000},2,40,2,40" +locations_default(#20134,#10000,2,40,2,40) +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) +#20139=* +tokeninfo(#20139,8,#20001,22,"=") +#20140=@"loc,{#10000},5,7,5,7" +locations_default(#20140,#10000,5,7,5,7) +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) +#20147=* +tokeninfo(#20147,8,#20001,27,"=") +#20148=@"loc,{#10000},6,7,6,7" +locations_default(#20148,#10000,6,7,6,7) +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) +#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) +#20162=* +tokeninfo(#20162,8,#20001,36,"${") +#20163=@"loc,{#10000},7,9,7,10" +locations_default(#20163,#10000,7,9,7,10) +hasLocation(#20162,#20163) +#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) +#20168=* +tokeninfo(#20168,8,#20001,40,"${") +#20169=@"loc,{#10000},7,16,7,17" +locations_default(#20169,#10000,7,16,7,17) +hasLocation(#20168,#20169) +#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) +#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) +#20178=* +tokeninfo(#20178,8,#20001,46,"`") +#20179=@"loc,{#10000},7,24,7,24" +locations_default(#20179,#10000,7,24,7,24) +hasLocation(#20178,#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) +#20183=* +tokeninfo(#20183,8,#20001,49,"`") +#20184=@"loc,{#10000},8,5,8,5" +locations_default(#20184,#10000,8,5,8,5) +hasLocation(#20183,#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) +#20189=* +tokeninfo(#20189,6,#20001,52,"x") +hasLocation(#20189,#20079) +#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) +#20193=* +tokeninfo(#20193,8,#20001,55,"${") +#20194=@"loc,{#10000},8,13,8,14" +locations_default(#20194,#10000,8,13,8,14) +hasLocation(#20193,#20194) +#20195=* +tokeninfo(#20195,6,#20001,56,"y") +hasLocation(#20195,#20083) +#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) +#20199=* +tokeninfo(#20199,8,#20001,59,"${") +#20200=@"loc,{#10000},8,20,8,21" +locations_default(#20200,#10000,8,20,8,21) +hasLocation(#20199,#20200) +#20201=* +tokeninfo(#20201,6,#20001,60,"x") +hasLocation(#20201,#20089) +#20202=* +tokeninfo(#20202,8,#20001,61,"+") +#20203=@"loc,{#10000},8,24,8,24" +locations_default(#20203,#10000,8,24,8,24) +hasLocation(#20202,#20203) +#20204=* +tokeninfo(#20204,6,#20001,62,"y") +hasLocation(#20204,#20091) +#20205=* +tokeninfo(#20205,8,#20001,63,"}") +#20206=@"loc,{#10000},8,27,8,27" +locations_default(#20206,#10000,8,27,8,27) +hasLocation(#20205,#20206) +#20207=* +tokeninfo(#20207,4,#20001,64,"") +#20208=@"loc,{#10000},8,28,8,27" +locations_default(#20208,#10000,8,28,8,27) +hasLocation(#20207,#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) +#20211=* +tokeninfo(#20211,8,#20001,66,";") +#20212=@"loc,{#10000},8,29,8,29" +locations_default(#20212,#10000,8,29,8,29) +hasLocation(#20211,#20212) +#20213=* +tokeninfo(#20213,0,#20001,67,"") +#20214=@"loc,{#10000},8,30,8,29" +locations_default(#20214,#10000,8,30,8,29) +hasLocation(#20213,#20214) +#20215=* +entry_cfg_node(#20215,#20001) +#20216=@"loc,{#10000},1,1,1,0" +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) +#20218=* +entry_cfg_node(#20218,#20006) +hasLocation(#20218,#20216) +#20219=* +exit_cfg_node(#20219,#20006) +#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) +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 new file mode 100644 index 00000000000..15c536cfec4 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/unknown_meta_property.js.trap @@ -0,0 +1,168 @@ +#10000=@"/unknown_meta_property.js;sourcefile" +files(#10000,"/unknown_meta_property.js","unknown_meta_property","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,3,1" +locations_default(#20002,#10000,1,1,3,1) +hasLocation(#20001,#20002) +#20003=@"var;{g};{#20000}" +variables(#20003,"g",#20000) +#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() {"," +") +#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) +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) +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) +#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,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) +#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) +#20039=* +tokeninfo(#20039,0,#20001,10,"") +#20040=@"loc,{#10000},3,2,3,1" +locations_default(#20040,#10000,3,2,3,1) +hasLocation(#20039,#20040) +#20041=* +entry_cfg_node(#20041,#20001) +#20042=@"loc,{#10000},1,1,1,0" +locations_default(#20042,#10000,1,1,1,0) +hasLocation(#20041,#20042) +#20043=* +exit_cfg_node(#20043,#20001) +hasLocation(#20043,#20040) +successor(#20004,#20043) +#20044=* +entry_cfg_node(#20044,#20004) +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) +#20046=* +jsParseErrors(#20046,#20001,"Error: The only valid meta property for new is new.target"," new.source; +") +#20047=@"loc,{#10000},2,7,2,7" +locations_default(#20047,#10000,2,7,2,7) +hasLocation(#20046,#20047) +#20048=* +lines(#20048,#20001,"function g() {"," +") +hasLocation(#20048,#20016) +#20049=* +lines(#20049,#20001," new.source;"," +") +hasLocation(#20049,#20018) +indentation(#10000,2," ",2) +#20050=* +lines(#20050,#20001,"}","") +hasLocation(#20050,#20020) +numlines(#20001,3,3,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 new file mode 100644 index 00000000000..c0ffd539c9e --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/yield.js.trap @@ -0,0 +1,317 @@ +#10000=@"/yield.js;sourcefile" +files(#10000,"/yield.js","yield","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,5,1" +locations_default(#20002,#10000,1,1,5,1) +hasLocation(#20001,#20002) +#20003=@"var;{foo};{#20000}" +variables(#20003,"foo",#20000) +#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) +#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) +hasLocation(#20010,#20011) +stmtContainers(#20010,#20004) +#20012=* +stmts(#20012,18,#20010,0,"var index = 0;") +#20013=@"loc,{#10000},2,3,2,16" +locations_default(#20013,#10000,2,3,2,16) +hasLocation(#20012,#20013) +stmtContainers(#20012,#20004) +#20014=* +exprs(#20014,64,#20012,0,"index = 0") +#20015=@"loc,{#10000},2,7,2,15" +locations_default(#20015,#10000,2,7,2,15) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +hasLocation(#20036,#20037) +#20038=* +lines(#20038,#20001,"function* foo(){"," +") +#20039=@"loc,{#10000},1,1,1,16" +locations_default(#20039,#10000,1,1,1,16) +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) +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) +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) +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) +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) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,1,"*") +#20051=@"loc,{#10000},1,9,1,9" +locations_default(#20051,#10000,1,9,1,9) +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) +#20057=* +tokeninfo(#20057,8,#20001,5,"{") +#20058=@"loc,{#10000},1,16,1,16" +locations_default(#20058,#10000,1,16,1,16) +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) +#20061=* +tokeninfo(#20061,6,#20001,7,"index") +hasLocation(#20061,#20017) +#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) +#20072=* +tokeninfo(#20072,8,#20001,14,"<=") +#20073=@"loc,{#10000},3,15,3,16" +locations_default(#20073,#10000,3,15,3,16) +hasLocation(#20072,#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) +#20079=* +tokeninfo(#20079,6,#20001,18,"index") +hasLocation(#20079,#20035) +#20080=* +tokeninfo(#20080,8,#20001,19,"++") +#20081=@"loc,{#10000},4,16,4,17" +locations_default(#20081,#10000,4,16,4,17) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,8,#20001,20,";") +#20083=@"loc,{#10000},4,18,4,18" +locations_default(#20083,#10000,4,18,4,18) +hasLocation(#20082,#20083) +#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) +#20087=* +entry_cfg_node(#20087,#20001) +#20088=@"loc,{#10000},1,1,1,0" +locations_default(#20088,#10000,1,1,1,0) +hasLocation(#20087,#20088) +#20089=* +exit_cfg_node(#20089,#20001) +hasLocation(#20089,#20086) +successor(#20004,#20089) +#20090=* +entry_cfg_node(#20090,#20004) +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) +#20092=* +guard_node(#20092,1,#20022) +hasLocation(#20092,#20023) +successor(#20092,#20028) +#20093=* +guard_node(#20093,0,#20022) +hasLocation(#20093,#20023) +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) +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 new file mode 100644 index 00000000000..995b9f42327 --- /dev/null +++ b/javascript/extractor/tests/es2015/output/trap/yield2.js.trap @@ -0,0 +1,148 @@ +#10000=@"/yield2.js;sourcefile" +files(#10000,"/yield2.js","yield2","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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() {"," +") +#20017=@"loc,{#10000},1,1,1,15" +locations_default(#20017,#10000,1,1,1,15) +hasLocation(#20016,#20017) +#20018=* +lines(#20018,#20001," yield;"," +") +#20019=@"loc,{#10000},2,1,2,10" +locations_default(#20019,#10000,2,1,2,10) +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) +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) +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) +#20029=* +tokeninfo(#20029,8,#20001,4,")") +#20030=@"loc,{#10000},1,13,1,13" +locations_default(#20030,#10000,1,13,1,13) +hasLocation(#20029,#20030) +#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) +#20034=* +tokeninfo(#20034,8,#20001,7,";") +#20035=@"loc,{#10000},2,10,2,10" +locations_default(#20035,#10000,2,10,2,10) +hasLocation(#20034,#20035) +#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) +#20039=* +entry_cfg_node(#20039,#20001) +#20040=@"loc,{#10000},1,1,1,0" +locations_default(#20040,#10000,1,1,1,0) +hasLocation(#20039,#20040) +#20041=* +exit_cfg_node(#20041,#20001) +hasLocation(#20041,#20038) +successor(#20004,#20041) +#20042=* +entry_cfg_node(#20042,#20004) +hasLocation(#20042,#20040) +#20043=* +exit_cfg_node(#20043,#20004) +#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) +numlines(#10000,3,3,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2016/input/exp.js b/javascript/extractor/tests/es2016/input/exp.js new file mode 100644 index 00000000000..f1ccab63038 --- /dev/null +++ b/javascript/extractor/tests/es2016/input/exp.js @@ -0,0 +1,2 @@ +1**0 +x**=2 \ No newline at end of file diff --git a/javascript/extractor/tests/es2016/input/usestrict.js b/javascript/extractor/tests/es2016/input/usestrict.js new file mode 100644 index 00000000000..7b48dda72f2 --- /dev/null +++ b/javascript/extractor/tests/es2016/input/usestrict.js @@ -0,0 +1 @@ +function f(a=2) { 'use strict'; } \ No newline at end of file diff --git a/javascript/extractor/tests/es2016/output/trap/exp.js.trap b/javascript/extractor/tests/es2016/output/trap/exp.js.trap new file mode 100644 index 00000000000..b767fb455bf --- /dev/null +++ b/javascript/extractor/tests/es2016/output/trap/exp.js.trap @@ -0,0 +1,126 @@ +#10000=@"/exp.js;sourcefile" +files(#10000,"/exp.js","exp","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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) +#20006=* +exprs(#20006,3,#20005,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) +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) +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) +#20016=* +exprs(#20016,3,#20012,1,"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) +#20021=* +tokeninfo(#20021,8,#20001,1,"**") +#20022=@"loc,{#10000},1,2,1,3" +locations_default(#20022,#10000,1,2,1,3) +hasLocation(#20021,#20022) +#20023=* +tokeninfo(#20023,3,#20001,2,"0") +hasLocation(#20023,#20009) +#20024=* +tokeninfo(#20024,6,#20001,3,"x") +hasLocation(#20024,#20014) +#20025=* +tokeninfo(#20025,8,#20001,4,"**=") +#20026=@"loc,{#10000},2,2,2,4" +locations_default(#20026,#10000,2,2,2,4) +hasLocation(#20025,#20026) +#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) +#20030=* +entry_cfg_node(#20030,#20001) +#20031=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..cb0a0d0b4bd --- /dev/null +++ b/javascript/extractor/tests/es2016/output/trap/usestrict.js.trap @@ -0,0 +1,164 @@ +#10000=@"/usestrict.js;sourcefile" +files(#10000,"/usestrict.js","usestrict","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +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) +#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") +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) +#20029=* +tokeninfo(#20029,3,#20001,5,"2") +hasLocation(#20029,#20013) +#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) +#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) +#20041=* +entry_cfg_node(#20041,#20001) +#20042=@"loc,{#10000},1,1,1,0" +locations_default(#20042,#10000,1,1,1,0) +hasLocation(#20041,#20042) +#20043=* +exit_cfg_node(#20043,#20001) +hasLocation(#20043,#20040) +successor(#20004,#20043) +#20044=* +entry_cfg_node(#20044,#20004) +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) +#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" +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) +numlines(#10000,1,1,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2017/input/async-await.js b/javascript/extractor/tests/es2017/input/async-await.js new file mode 100644 index 00000000000..5c0df2d94fb --- /dev/null +++ b/javascript/extractor/tests/es2017/input/async-await.js @@ -0,0 +1,7 @@ +export async function foo(x) { + try { + await x; + } catch (e) { + return null; + } +}; diff --git a/javascript/extractor/tests/es2017/input/export-async-1.js b/javascript/extractor/tests/es2017/input/export-async-1.js new file mode 100644 index 00000000000..be7f6810098 --- /dev/null +++ b/javascript/extractor/tests/es2017/input/export-async-1.js @@ -0,0 +1 @@ +export default async function f() {}; diff --git a/javascript/extractor/tests/es2017/input/export-async-2.js b/javascript/extractor/tests/es2017/input/export-async-2.js new file mode 100644 index 00000000000..afc6f3cb912 --- /dev/null +++ b/javascript/extractor/tests/es2017/input/export-async-2.js @@ -0,0 +1 @@ +export default async function () {}; diff --git a/javascript/extractor/tests/es2017/input/invalid-async-fn.js b/javascript/extractor/tests/es2017/input/invalid-async-fn.js new file mode 100644 index 00000000000..48f537b8784 --- /dev/null +++ b/javascript/extractor/tests/es2017/input/invalid-async-fn.js @@ -0,0 +1 @@ +f = async ((x)) => x \ No newline at end of file diff --git a/javascript/extractor/tests/es2017/input/shorthand-prop-async.js b/javascript/extractor/tests/es2017/input/shorthand-prop-async.js new file mode 100644 index 00000000000..86e72d80866 --- /dev/null +++ b/javascript/extractor/tests/es2017/input/shorthand-prop-async.js @@ -0,0 +1 @@ +({ async }); diff --git a/javascript/extractor/tests/es2017/options.json b/javascript/extractor/tests/es2017/options.json new file mode 100644 index 00000000000..075583ca1f6 --- /dev/null +++ b/javascript/extractor/tests/es2017/options.json @@ -0,0 +1,3 @@ +{ + "experimental": true +} diff --git a/javascript/extractor/tests/es2017/output/trap/async-await.js.trap b/javascript/extractor/tests/es2017/output/trap/async-await.js.trap new file mode 100644 index 00000000000..c33f0af4812 --- /dev/null +++ b/javascript/extractor/tests/es2017/output/trap/async-await.js.trap @@ -0,0 +1,353 @@ +#10000=@"/async-await.js;sourcefile" +files(#10000,"/async-await.js","async-await","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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) {"," +") +#20043=@"loc,{#10000},1,1,1,30" +locations_default(#20043,#10000,1,1,1,30) +hasLocation(#20042,#20043) +#20044=* +lines(#20044,#20001," try {"," +") +#20045=@"loc,{#10000},2,1,2,7" +locations_default(#20045,#10000,2,1,2,7) +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) +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) +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) +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) +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) +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) +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) +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) +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) +#20066=* +tokeninfo(#20066,8,#20001,6,")") +#20067=@"loc,{#10000},1,28,1,28" +locations_default(#20067,#10000,1,28,1,28) +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) +#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) +#20086=* +tokeninfo(#20086,8,#20001,17,")") +#20087=@"loc,{#10000},4,13,4,13" +locations_default(#20087,#10000,4,13,4,13) +hasLocation(#20086,#20087) +#20088=* +tokeninfo(#20088,8,#20001,18,"{") +#20089=@"loc,{#10000},4,15,4,15" +locations_default(#20089,#10000,4,15,4,15) +hasLocation(#20088,#20089) +#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) +#20093=* +tokeninfo(#20093,8,#20001,21,";") +#20094=@"loc,{#10000},5,16,5,16" +locations_default(#20094,#10000,5,16,5,16) +hasLocation(#20093,#20094) +#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) +#20100=* +tokeninfo(#20100,0,#20001,25,"") +#20101=@"loc,{#10000},8,1,8,0" +locations_default(#20101,#10000,8,1,8,0) +hasLocation(#20100,#20101) +#20102=* +entry_cfg_node(#20102,#20001) +#20103=@"loc,{#10000},1,1,1,0" +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) +#20105=* +entry_cfg_node(#20105,#20007) +#20106=@"loc,{#10000},1,8,1,7" +locations_default(#20106,#10000,1,8,1,7) +hasLocation(#20105,#20106) +#20107=* +exit_cfg_node(#20107,#20007) +#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) +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 new file mode 100644 index 00000000000..dd9fae620e2 --- /dev/null +++ b/javascript/extractor/tests/es2017/output/trap/export-async-1.js.trap @@ -0,0 +1,148 @@ +#10000=@"/export-async-1.js;sourcefile" +files(#10000,"/export-async-1.js","export-async-1","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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() {};"," +") +#20018=@"loc,{#10000},1,1,1,37" +locations_default(#20018,#10000,1,1,1,37) +hasLocation(#20017,#20018) +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) +#20034=* +tokeninfo(#20034,8,#20001,8,"}") +#20035=@"loc,{#10000},1,36,1,36" +locations_default(#20035,#10000,1,36,1,36) +hasLocation(#20034,#20035) +#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) +#20039=* +entry_cfg_node(#20039,#20001) +#20040=@"loc,{#10000},1,1,1,0" +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) +#20042=* +entry_cfg_node(#20042,#20007) +#20043=@"loc,{#10000},1,16,1,15" +locations_default(#20043,#10000,1,16,1,15) +hasLocation(#20042,#20043) +#20044=* +exit_cfg_node(#20044,#20007) +#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) +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 new file mode 100644 index 00000000000..cc3d7af00ad --- /dev/null +++ b/javascript/extractor/tests/es2017/output/trap/export-async-2.js.trap @@ -0,0 +1,135 @@ +#10000=@"/export-async-2.js;sourcefile" +files(#10000,"/export-async-2.js","export-async-2","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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 () {};"," +") +#20015=@"loc,{#10000},1,1,1,36" +locations_default(#20015,#10000,1,1,1,36) +hasLocation(#20014,#20015) +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) +#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,6,#20001,2,"async") +#20021=@"loc,{#10000},1,16,1,20" +locations_default(#20021,#10000,1,16,1,20) +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) +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) +#20026=* +tokeninfo(#20026,8,#20001,5,")") +#20027=@"loc,{#10000},1,32,1,32" +locations_default(#20027,#10000,1,32,1,32) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,6,"{") +#20029=@"loc,{#10000},1,34,1,34" +locations_default(#20029,#10000,1,34,1,34) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,7,"}") +#20031=@"loc,{#10000},1,35,1,35" +locations_default(#20031,#10000,1,35,1,35) +hasLocation(#20030,#20031) +#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) +#20035=* +entry_cfg_node(#20035,#20001) +#20036=@"loc,{#10000},1,1,1,0" +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) +#20038=* +entry_cfg_node(#20038,#20006) +#20039=@"loc,{#10000},1,16,1,15" +locations_default(#20039,#10000,1,16,1,15) +hasLocation(#20038,#20039) +#20040=* +exit_cfg_node(#20040,#20006) +#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) +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 new file mode 100644 index 00000000000..7b7b6079233 --- /dev/null +++ b/javascript/extractor/tests/es2017/output/trap/invalid-async-fn.js.trap @@ -0,0 +1,145 @@ +#10000=@"/invalid-async-fn.js;sourcefile" +files(#10000,"/invalid-async-fn.js","invalid-async-fn","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +numlines(#20001,1,1,0) +#20017=* +tokeninfo(#20017,6,#20001,0,"f") +hasLocation(#20017,#20006) +#20018=* +tokeninfo(#20018,8,#20001,1,"=") +#20019=@"loc,{#10000},1,3,1,3" +locations_default(#20019,#10000,1,3,1,3) +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) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,3,"(") +#20023=@"loc,{#10000},1,11,1,11" +locations_default(#20023,#10000,1,11,1,11) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,4,"(") +#20025=@"loc,{#10000},1,12,1,12" +locations_default(#20025,#10000,1,12,1,12) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,6,#20001,5,"x") +hasLocation(#20026,#20013) +#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) +#20034=* +tokeninfo(#20034,0,#20001,10,"") +#20035=@"loc,{#10000},1,21,1,20" +locations_default(#20035,#10000,1,21,1,20) +hasLocation(#20034,#20035) +#20036=* +entry_cfg_node(#20036,#20001) +#20037=@"loc,{#10000},1,1,1,0" +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) +#20039=* +entry_cfg_node(#20039,#20008) +#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) +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 new file mode 100644 index 00000000000..ca7d5b51006 --- /dev/null +++ b/javascript/extractor/tests/es2017/output/trap/shorthand-prop-async.js.trap @@ -0,0 +1,110 @@ +#10000=@"/shorthand-prop-async.js;sourcefile" +files(#10000,"/shorthand-prop-async.js","shorthand-prop-async","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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 });"," +") +hasLocation(#20014,#20004) +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) +#20019=* +tokeninfo(#20019,6,#20001,2,"async") +hasLocation(#20019,#20010) +#20020=* +tokeninfo(#20020,8,#20001,3,"}") +#20021=@"loc,{#10000},1,10,1,10" +locations_default(#20021,#10000,1,10,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,8,#20001,5,";") +#20025=@"loc,{#10000},1,12,1,12" +locations_default(#20025,#10000,1,12,1,12) +hasLocation(#20024,#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) +#20028=* +entry_cfg_node(#20028,#20001) +#20029=@"loc,{#10000},1,1,1,0" +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) +numlines(#10000,1,1,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/es2018/input/templates.js b/javascript/extractor/tests/es2018/input/templates.js new file mode 100644 index 00000000000..c5436cd1427 --- /dev/null +++ b/javascript/extractor/tests/es2018/input/templates.js @@ -0,0 +1,12 @@ +`foo` +`foo\u25a0` +`foo${bar}\u25a0` +foo `\u25a0` +foo `foo${bar}\u25a0` +foo `\unicode` +foo `foo${bar}\unicode` +foo `\u` +foo `\u{` +foo `\u{abcdx` +foo `\u{abcdx}` +foo `\unicode\\` diff --git a/javascript/extractor/tests/es2018/options.json b/javascript/extractor/tests/es2018/options.json new file mode 100644 index 00000000000..075583ca1f6 --- /dev/null +++ b/javascript/extractor/tests/es2018/options.json @@ -0,0 +1,3 @@ +{ + "experimental": true +} diff --git a/javascript/extractor/tests/es2018/output/trap/templates.js.trap b/javascript/extractor/tests/es2018/output/trap/templates.js.trap new file mode 100644 index 00000000000..f4f713473cd --- /dev/null +++ b/javascript/extractor/tests/es2018/output/trap/templates.js.trap @@ -0,0 +1,804 @@ +#10000=@"/templates.js;sourcefile" +files(#10000,"/templates.js","templates","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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) +#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) +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) +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) +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) +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) +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) +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) +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) +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`"," +") +hasLocation(#20115,#20009) +#20116=* +lines(#20116,#20001,"`foo\u25a0`"," +") +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) +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) +#20130=* +tokeninfo(#20130,8,#20001,2,"`") +#20131=@"loc,{#10000},1,5,1,5" +locations_default(#20131,#10000,1,5,1,5) +hasLocation(#20130,#20131) +#20132=* +tokeninfo(#20132,8,#20001,3,"`") +#20133=@"loc,{#10000},2,1,2,1" +locations_default(#20133,#10000,2,1,2,1) +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) +#20140=* +tokeninfo(#20140,8,#20001,8,"${") +#20141=@"loc,{#10000},3,5,3,6" +locations_default(#20141,#10000,3,5,3,6) +hasLocation(#20140,#20141) +#20142=* +tokeninfo(#20142,6,#20001,9,"bar") +hasLocation(#20142,#20021) +#20143=* +tokeninfo(#20143,8,#20001,10,"}") +#20144=@"loc,{#10000},3,10,3,10" +locations_default(#20144,#10000,3,10,3,10) +hasLocation(#20143,#20144) +#20145=* +tokeninfo(#20145,4,#20001,11,"\u25a0") +hasLocation(#20145,#20024) +#20146=* +tokeninfo(#20146,8,#20001,12,"`") +#20147=@"loc,{#10000},3,17,3,17" +locations_default(#20147,#10000,3,17,3,17) +hasLocation(#20146,#20147) +#20148=* +tokeninfo(#20148,6,#20001,13,"foo") +hasLocation(#20148,#20029) +#20149=* +tokeninfo(#20149,8,#20001,14,"`") +#20150=@"loc,{#10000},4,5,4,5" +locations_default(#20150,#10000,4,5,4,5) +hasLocation(#20149,#20150) +#20151=* +tokeninfo(#20151,4,#20001,15,"\u25a0") +hasLocation(#20151,#20034) +#20152=* +tokeninfo(#20152,8,#20001,16,"`") +#20153=@"loc,{#10000},4,12,4,12" +locations_default(#20153,#10000,4,12,4,12) +hasLocation(#20152,#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) +#20157=* +tokeninfo(#20157,4,#20001,19,"foo") +hasLocation(#20157,#20043) +#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) +#20161=* +tokeninfo(#20161,8,#20001,22,"}") +#20162=@"loc,{#10000},5,14,5,14" +locations_default(#20162,#10000,5,14,5,14) +hasLocation(#20161,#20162) +#20163=* +tokeninfo(#20163,4,#20001,23,"\u25a0") +hasLocation(#20163,#20047) +#20164=* +tokeninfo(#20164,8,#20001,24,"`") +#20165=@"loc,{#10000},5,21,5,21" +locations_default(#20165,#10000,5,21,5,21) +hasLocation(#20164,#20165) +#20166=* +tokeninfo(#20166,6,#20001,25,"foo") +hasLocation(#20166,#20052) +#20167=* +tokeninfo(#20167,8,#20001,26,"`") +#20168=@"loc,{#10000},6,5,6,5" +locations_default(#20168,#10000,6,5,6,5) +hasLocation(#20167,#20168) +#20169=* +tokeninfo(#20169,8,#20001,27,"\unicode") +hasLocation(#20169,#20056) +#20170=* +tokeninfo(#20170,8,#20001,28,"`") +#20171=@"loc,{#10000},6,14,6,14" +locations_default(#20171,#10000,6,14,6,14) +hasLocation(#20170,#20171) +#20172=* +tokeninfo(#20172,6,#20001,29,"foo") +hasLocation(#20172,#20061) +#20173=* +tokeninfo(#20173,8,#20001,30,"`") +#20174=@"loc,{#10000},7,5,7,5" +locations_default(#20174,#10000,7,5,7,5) +hasLocation(#20173,#20174) +#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) +#20178=* +tokeninfo(#20178,6,#20001,33,"bar") +hasLocation(#20178,#20067) +#20179=* +tokeninfo(#20179,8,#20001,34,"}") +#20180=@"loc,{#10000},7,14,7,14" +locations_default(#20180,#10000,7,14,7,14) +hasLocation(#20179,#20180) +#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) +#20184=* +tokeninfo(#20184,6,#20001,37,"foo") +hasLocation(#20184,#20074) +#20185=* +tokeninfo(#20185,8,#20001,38,"`") +#20186=@"loc,{#10000},8,5,8,5" +locations_default(#20186,#10000,8,5,8,5) +hasLocation(#20185,#20186) +#20187=* +tokeninfo(#20187,8,#20001,39,"\u") +hasLocation(#20187,#20078) +#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) +#20191=* +tokeninfo(#20191,8,#20001,42,"`") +#20192=@"loc,{#10000},9,5,9,5" +locations_default(#20192,#10000,9,5,9,5) +hasLocation(#20191,#20192) +#20193=* +tokeninfo(#20193,8,#20001,43,"\u{") +hasLocation(#20193,#20087) +#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) +#20197=* +tokeninfo(#20197,8,#20001,46,"`") +#20198=@"loc,{#10000},10,5,10,5" +locations_default(#20198,#10000,10,5,10,5) +hasLocation(#20197,#20198) +#20199=* +tokeninfo(#20199,8,#20001,47,"\u{abcdx") +hasLocation(#20199,#20096) +#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) +#20203=* +tokeninfo(#20203,8,#20001,50,"`") +#20204=@"loc,{#10000},11,5,11,5" +locations_default(#20204,#10000,11,5,11,5) +hasLocation(#20203,#20204) +#20205=* +tokeninfo(#20205,8,#20001,51,"\u{abcdx}") +hasLocation(#20205,#20105) +#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) +#20209=* +tokeninfo(#20209,8,#20001,54,"`") +#20210=@"loc,{#10000},12,5,12,5" +locations_default(#20210,#10000,12,5,12,5) +hasLocation(#20209,#20210) +#20211=* +tokeninfo(#20211,8,#20001,55,"\unicode\\") +hasLocation(#20211,#20114) +#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) +#20216=* +entry_cfg_node(#20216,#20001) +#20217=@"loc,{#10000},1,1,1,0" +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) +numlines(#10000,12,12,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/esnext/input/async-generators.js b/javascript/extractor/tests/esnext/input/async-generators.js new file mode 100644 index 00000000000..c5f6177fc79 --- /dev/null +++ b/javascript/extractor/tests/esnext/input/async-generators.js @@ -0,0 +1,6 @@ +async function *foo() { +} + +async function bar() { + for await(var x of foo()); +} diff --git a/javascript/extractor/tests/esnext/input/catchGuardAndNoBinding.js b/javascript/extractor/tests/esnext/input/catchGuardAndNoBinding.js new file mode 100644 index 00000000000..597eda58480 --- /dev/null +++ b/javascript/extractor/tests/esnext/input/catchGuardAndNoBinding.js @@ -0,0 +1,10 @@ +try {} +catch (e if e instanceof TypeError) {} +catch (e if e instanceof Error) {} +catch {} + +try {} +catch (e if e instanceof TypeError) {} +catch (e if e instanceof Error) {} +catch {} +finally {} diff --git a/javascript/extractor/tests/esnext/input/catchNoBinding.js b/javascript/extractor/tests/esnext/input/catchNoBinding.js new file mode 100644 index 00000000000..23f2e4c5209 --- /dev/null +++ b/javascript/extractor/tests/esnext/input/catchNoBinding.js @@ -0,0 +1,5 @@ +try { + try {} catch {} +} catch { + try {} catch {} finally {} +} diff --git a/javascript/extractor/tests/esnext/input/dynamic-import.js b/javascript/extractor/tests/esnext/input/dynamic-import.js new file mode 100644 index 00000000000..8c396e8425b --- /dev/null +++ b/javascript/extractor/tests/esnext/input/dynamic-import.js @@ -0,0 +1,3 @@ +import("m"); +b ? import("n") : {}; +import("o").then((o) => {}); diff --git a/javascript/extractor/tests/esnext/input/fields.js b/javascript/extractor/tests/esnext/input/fields.js new file mode 100644 index 00000000000..fd0aa847228 --- /dev/null +++ b/javascript/extractor/tests/esnext/input/fields.js @@ -0,0 +1,11 @@ +class A { + x = new.target; +} + +class B extends A { + y = super.x; +} + +class C { + async; +} diff --git a/javascript/extractor/tests/esnext/options.json b/javascript/extractor/tests/esnext/options.json new file mode 100644 index 00000000000..075583ca1f6 --- /dev/null +++ b/javascript/extractor/tests/esnext/options.json @@ -0,0 +1,3 @@ +{ + "experimental": true +} diff --git a/javascript/extractor/tests/esnext/output/trap/async-generators.js.trap b/javascript/extractor/tests/esnext/output/trap/async-generators.js.trap new file mode 100644 index 00000000000..394bf7d967d --- /dev/null +++ b/javascript/extractor/tests/esnext/output/trap/async-generators.js.trap @@ -0,0 +1,333 @@ +#10000=@"/async-generators.js;sourcefile" +files(#10000,"/async-generators.js","async-generators","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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() {"," +") +#20036=@"loc,{#10000},1,1,1,23" +locations_default(#20036,#10000,1,1,1,23) +hasLocation(#20035,#20036) +#20037=* +lines(#20037,#20001,"}"," +") +#20038=@"loc,{#10000},2,1,2,1" +locations_default(#20038,#10000,2,1,2,1) +hasLocation(#20037,#20038) +#20039=* +lines(#20039,#20001,""," +") +#20040=@"loc,{#10000},3,1,3,0" +locations_default(#20040,#10000,3,1,3,0) +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) +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) +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) +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) +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) +hasLocation(#20049,#20050) +#20051=* +tokeninfo(#20051,8,#20001,2,"*") +#20052=@"loc,{#10000},1,16,1,16" +locations_default(#20052,#10000,1,16,1,16) +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) +#20061=* +tokeninfo(#20061,6,#20001,8,"async") +#20062=@"loc,{#10000},4,1,4,5" +locations_default(#20062,#10000,4,1,4,5) +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) +#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) +#20074=* +tokeninfo(#20074,6,#20001,15,"await") +#20075=@"loc,{#10000},5,7,5,11" +locations_default(#20075,#10000,5,7,5,11) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,8,#20001,16,"(") +#20077=@"loc,{#10000},5,12,5,12" +locations_default(#20077,#10000,5,12,5,12) +hasLocation(#20076,#20077) +#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) +#20084=* +tokeninfo(#20084,8,#20001,21,"(") +#20085=@"loc,{#10000},5,25,5,25" +locations_default(#20085,#10000,5,25,5,25) +hasLocation(#20084,#20085) +#20086=* +tokeninfo(#20086,8,#20001,22,")") +#20087=@"loc,{#10000},5,26,5,26" +locations_default(#20087,#10000,5,26,5,26) +hasLocation(#20086,#20087) +#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) +#20091=* +tokeninfo(#20091,8,#20001,25,"}") +hasLocation(#20091,#20046) +#20092=* +tokeninfo(#20092,0,#20001,26,"") +#20093=@"loc,{#10000},7,1,7,0" +locations_default(#20093,#10000,7,1,7,0) +hasLocation(#20092,#20093) +#20094=* +entry_cfg_node(#20094,#20001) +#20095=@"loc,{#10000},1,1,1,0" +locations_default(#20095,#10000,1,1,1,0) +hasLocation(#20094,#20095) +#20096=* +exit_cfg_node(#20096,#20001) +hasLocation(#20096,#20093) +successor(#20013,#20096) +#20097=* +entry_cfg_node(#20097,#20013) +#20098=@"loc,{#10000},4,1,4,0" +locations_default(#20098,#10000,4,1,4,0) +hasLocation(#20097,#20098) +#20099=* +exit_cfg_node(#20099,#20013) +#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) +#20101=* +entry_cfg_node(#20101,#20005) +hasLocation(#20101,#20095) +#20102=* +exit_cfg_node(#20102,#20005) +#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) +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 new file mode 100644 index 00000000000..f96395b0b44 --- /dev/null +++ b/javascript/extractor/tests/esnext/output/trap/catchGuardAndNoBinding.js.trap @@ -0,0 +1,642 @@ +#10000=@"/catchGuardAndNoBinding.js;sourcefile" +files(#10000,"/catchGuardAndNoBinding.js","catchGuardAndNoBinding","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,11,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) +#20020=* +stmts(#20020,1,#20007,1,"{}") +#20021=@"loc,{#10000},2,37,2,38" +locations_default(#20021,#10000,2,37,2,38) +hasLocation(#20020,#20021) +stmtContainers(#20020,#20001) +#20022=* +stmts(#20022,20,#20003,2,"catch ( ... ror) {}") +#20023=@"loc,{#10000},3,1,3,34" +locations_default(#20023,#10000,3,1,3,34) +hasLocation(#20022,#20023) +stmtContainers(#20022,#20001) +#20024=* +scopes(#20024,2) +scopenodes(#20022,#20024) +scopenesting(#20024,#20000) +#20025=@"var;{e};{#20024}" +variables(#20025,"e",#20024) +#20026=* +exprs(#20026,78,#20022,0,"e") +#20027=@"loc,{#10000},3,8,3,8" +locations_default(#20027,#10000,3,8,3,8) +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) +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) +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) +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) +#20040=* +stmts(#20040,1,#20037,1,"{}") +#20041=@"loc,{#10000},4,7,4,8" +locations_default(#20041,#10000,4,7,4,8) +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) +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) +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) +hasLocation(#20046,#20047) +stmtContainers(#20046,#20001) +#20048=* +scopes(#20048,2) +scopenodes(#20046,#20048) +scopenesting(#20048,#20000) +#20049=@"var;{e};{#20048}" +variables(#20049,"e",#20048) +#20050=* +exprs(#20050,78,#20046,0,"e") +#20051=@"loc,{#10000},7,8,7,8" +locations_default(#20051,#10000,7,8,7,8) +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) +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) +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) +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) +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) +hasLocation(#20060,#20061) +stmtContainers(#20060,#20001) +#20062=* +scopes(#20062,2) +scopenodes(#20060,#20062) +scopenesting(#20062,#20000) +#20063=@"var;{e};{#20062}" +variables(#20063,"e",#20062) +#20064=* +exprs(#20064,78,#20060,0,"e") +#20065=@"loc,{#10000},8,8,8,8" +locations_default(#20065,#10000,8,8,8,8) +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) +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) +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) +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) +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) +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) +#20084=* +lines(#20084,#20001,"catch (e if e instanceof Error) {}"," +") +hasLocation(#20084,#20023) +#20085=* +lines(#20085,#20001,"catch {}"," +") +hasLocation(#20085,#20038) +#20086=* +lines(#20086,#20001,""," +") +#20087=@"loc,{#10000},5,1,5,0" +locations_default(#20087,#10000,5,1,5,0) +hasLocation(#20086,#20087) +#20088=* +lines(#20088,#20001,"try {}"," +") +#20089=@"loc,{#10000},6,1,6,6" +locations_default(#20089,#10000,6,1,6,6) +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) +#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) +#20106=* +tokeninfo(#20106,7,#20001,6,"if") +#20107=@"loc,{#10000},2,10,2,11" +locations_default(#20107,#10000,2,10,2,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) +#20112=* +tokeninfo(#20112,8,#20001,10,")") +#20113=@"loc,{#10000},2,35,2,35" +locations_default(#20113,#10000,2,35,2,35) +hasLocation(#20112,#20113) +#20114=* +tokeninfo(#20114,8,#20001,11,"{") +#20115=@"loc,{#10000},2,37,2,37" +locations_default(#20115,#10000,2,37,2,37) +hasLocation(#20114,#20115) +#20116=* +tokeninfo(#20116,8,#20001,12,"}") +#20117=@"loc,{#10000},2,38,2,38" +locations_default(#20117,#10000,2,38,2,38) +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) +hasLocation(#20118,#20119) +#20120=* +tokeninfo(#20120,8,#20001,14,"(") +#20121=@"loc,{#10000},3,7,3,7" +locations_default(#20121,#10000,3,7,3,7) +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) +#20126=* +tokeninfo(#20126,7,#20001,18,"instanceof") +#20127=@"loc,{#10000},3,15,3,24" +locations_default(#20127,#10000,3,15,3,24) +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) +#20135=* +tokeninfo(#20135,7,#20001,23,"catch") +#20136=@"loc,{#10000},4,1,4,5" +locations_default(#20136,#10000,4,1,4,5) +hasLocation(#20135,#20136) +#20137=* +tokeninfo(#20137,8,#20001,24,"{") +#20138=@"loc,{#10000},4,7,4,7" +locations_default(#20138,#10000,4,7,4,7) +hasLocation(#20137,#20138) +#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) +#20143=* +tokeninfo(#20143,8,#20001,27,"{") +#20144=@"loc,{#10000},6,5,6,5" +locations_default(#20144,#10000,6,5,6,5) +hasLocation(#20143,#20144) +#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) +#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) +#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) +#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) +#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) +#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) +#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) +#20175=* +tokeninfo(#20175,8,#20001,46,")") +#20176=@"loc,{#10000},8,31,8,31" +locations_default(#20176,#10000,8,31,8,31) +hasLocation(#20175,#20176) +#20177=* +tokeninfo(#20177,8,#20001,47,"{") +#20178=@"loc,{#10000},8,33,8,33" +locations_default(#20178,#10000,8,33,8,33) +hasLocation(#20177,#20178) +#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) +#20183=* +tokeninfo(#20183,8,#20001,50,"{") +#20184=@"loc,{#10000},9,7,9,7" +locations_default(#20184,#10000,9,7,9,7) +hasLocation(#20183,#20184) +#20185=* +tokeninfo(#20185,8,#20001,51,"}") +#20186=@"loc,{#10000},9,8,9,8" +locations_default(#20186,#10000,9,8,9,8) +hasLocation(#20185,#20186) +#20187=* +tokeninfo(#20187,7,#20001,52,"finally") +#20188=@"loc,{#10000},10,1,10,7" +locations_default(#20188,#10000,10,1,10,7) +hasLocation(#20187,#20188) +#20189=* +tokeninfo(#20189,8,#20001,53,"{") +#20190=@"loc,{#10000},10,9,10,9" +locations_default(#20190,#10000,10,9,10,9) +hasLocation(#20189,#20190) +#20191=* +tokeninfo(#20191,8,#20001,54,"}") +#20192=@"loc,{#10000},10,10,10,10" +locations_default(#20192,#10000,10,10,10,10) +hasLocation(#20191,#20192) +#20193=* +tokeninfo(#20193,0,#20001,55,"") +#20194=@"loc,{#10000},11,1,11,0" +locations_default(#20194,#10000,11,1,11,0) +hasLocation(#20193,#20194) +#20195=* +entry_cfg_node(#20195,#20001) +#20196=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..4950424398f --- /dev/null +++ b/javascript/extractor/tests/esnext/output/trap/catchNoBinding.js.trap @@ -0,0 +1,270 @@ +#10000=@"/catchNoBinding.js;sourcefile" +files(#10000,"/catchNoBinding.js","catchNoBinding","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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 {"," +") +#20033=@"loc,{#10000},1,1,1,5" +locations_default(#20033,#10000,1,1,1,5) +hasLocation(#20032,#20033) +#20034=* +lines(#20034,#20001," try {} catch {}"," +") +#20035=@"loc,{#10000},2,1,2,16" +locations_default(#20035,#10000,2,1,2,16) +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) +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) +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) +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) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,1,"{") +#20045=@"loc,{#10000},1,5,1,5" +locations_default(#20045,#10000,1,5,1,5) +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) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,8,#20001,3,"{") +#20049=@"loc,{#10000},2,6,2,6" +locations_default(#20049,#10000,2,6,2,6) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,4,"}") +#20051=@"loc,{#10000},2,7,2,7" +locations_default(#20051,#10000,2,7,2,7) +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) +#20056=* +tokeninfo(#20056,8,#20001,7,"}") +#20057=@"loc,{#10000},2,16,2,16" +locations_default(#20057,#10000,2,16,2,16) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,8,#20001,8,"}") +#20059=@"loc,{#10000},3,1,3,1" +locations_default(#20059,#10000,3,1,3,1) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,7,#20001,9,"catch") +#20061=@"loc,{#10000},3,3,3,7" +locations_default(#20061,#10000,3,3,3,7) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,8,#20001,10,"{") +#20063=@"loc,{#10000},3,9,3,9" +locations_default(#20063,#10000,3,9,3,9) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,7,#20001,11,"try") +#20065=@"loc,{#10000},4,2,4,4" +locations_default(#20065,#10000,4,2,4,4) +hasLocation(#20064,#20065) +#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) +#20072=* +tokeninfo(#20072,8,#20001,15,"{") +#20073=@"loc,{#10000},4,15,4,15" +locations_default(#20073,#10000,4,15,4,15) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,8,#20001,16,"}") +#20075=@"loc,{#10000},4,16,4,16" +locations_default(#20075,#10000,4,16,4,16) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,7,#20001,17,"finally") +#20077=@"loc,{#10000},4,18,4,24" +locations_default(#20077,#10000,4,18,4,24) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,8,#20001,18,"{") +#20079=@"loc,{#10000},4,26,4,26" +locations_default(#20079,#10000,4,26,4,26) +hasLocation(#20078,#20079) +#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) +#20083=* +tokeninfo(#20083,0,#20001,21,"") +#20084=@"loc,{#10000},6,1,6,0" +locations_default(#20084,#10000,6,1,6,0) +hasLocation(#20083,#20084) +#20085=* +entry_cfg_node(#20085,#20001) +#20086=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..ed1dd37705b --- /dev/null +++ b/javascript/extractor/tests/esnext/output/trap/dynamic-import.js.trap @@ -0,0 +1,363 @@ +#10000=@"/dynamic-import.js;sourcefile" +files(#10000,"/dynamic-import.js","dynamic-import","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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=* +stmts(#20004,2,#20001,0,"import(""m"");") +#20005=@"loc,{#10000},1,1,1,12" +locations_default(#20005,#10000,1,1,1,12) +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) +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) +#20046=* +tokeninfo(#20046,7,#20001,0,"import") +#20047=@"loc,{#10000},1,1,1,6" +locations_default(#20047,#10000,1,1,1,6) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,8,#20001,1,"(") +#20049=@"loc,{#10000},1,7,1,7" +locations_default(#20049,#10000,1,7,1,7) +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) +#20056=* +tokeninfo(#20056,8,#20001,6,"?") +#20057=@"loc,{#10000},2,3,2,3" +locations_default(#20057,#10000,2,3,2,3) +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) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,8,#20001,8,"(") +#20061=@"loc,{#10000},2,11,2,11" +locations_default(#20061,#10000,2,11,2,11) +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) +#20073=* +tokeninfo(#20073,7,#20001,15,"import") +#20074=@"loc,{#10000},3,1,3,6" +locations_default(#20074,#10000,3,1,3,6) +hasLocation(#20073,#20074) +#20075=* +tokeninfo(#20075,8,#20001,16,"(") +#20076=@"loc,{#10000},3,7,3,7" +locations_default(#20076,#10000,3,7,3,7) +hasLocation(#20075,#20076) +#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) +#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) +#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) +#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) +#20100=* +tokeninfo(#20100,0,#20001,30,"") +#20101=@"loc,{#10000},4,1,4,0" +locations_default(#20101,#10000,4,1,4,0) +hasLocation(#20100,#20101) +#20102=* +entry_cfg_node(#20102,#20001) +#20103=@"loc,{#10000},1,1,1,0" +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) +#20105=* +entry_cfg_node(#20105,#20035) +#20106=@"loc,{#10000},3,18,3,17" +locations_default(#20106,#10000,3,18,3,17) +hasLocation(#20105,#20106) +#20107=* +exit_cfg_node(#20107,#20035) +#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) +#20109=* +guard_node(#20109,1,#20014) +hasLocation(#20109,#20015) +successor(#20109,#20019) +#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) +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 new file mode 100644 index 00000000000..e84e9f8d8fe --- /dev/null +++ b/javascript/extractor/tests/esnext/output/trap/fields.js.trap @@ -0,0 +1,540 @@ +#10000=@"/fields.js;sourcefile" +files(#10000,"/fields.js","fields","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,12,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) +#20014=* +properties(#20014,#20009,2,8,"x = new.target;") +#20015=@"loc,{#10000},2,3,2,17" +locations_default(#20015,#10000,2,3,2,17) +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) +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) +#20024=* +scopes(#20024,1) +scopenodes(#20018,#20024) +scopenesting(#20024,#20013) +#20025=@"var;{arguments};{#20024}" +variables(#20025,"arguments",#20024) +isArgumentsObject(#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) +#20032=* +exprs(#20032,79,#20027,1,"A") +#20033=@"loc,{#10000},5,17,5,17" +locations_default(#20033,#10000,5,17,5,17) +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) +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) +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) +#20043=* +exprs(#20043,0,#20039,1,"x") +#20044=@"loc,{#10000},6,13,6,13" +locations_default(#20044,#10000,6,13,6,13) +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) +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) +#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) +#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) +#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) +#20063=* +properties(#20063,#20058,2,8,"async;") +#20064=@"loc,{#10000},10,3,10,8" +locations_default(#20064,#10000,10,3,10,8) +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=* +#20068=* +properties(#20068,#20058,3,0,"constructor() {}") +#20069=@"loc,{#10000},9,9,9,8" +locations_default(#20069,#10000,9,9,9,8) +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) +#20074=* +lines(#20074,#20001,"class A {"," +") +#20075=@"loc,{#10000},1,1,1,9" +locations_default(#20075,#10000,1,1,1,9) +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) +#20086=* +lines(#20086,#20001,"}"," +") +#20087=@"loc,{#10000},7,1,7,1" +locations_default(#20087,#10000,7,1,7,1) +hasLocation(#20086,#20087) +#20088=* +lines(#20088,#20001,""," +") +#20089=@"loc,{#10000},8,1,8,0" +locations_default(#20089,#10000,8,1,8,0) +hasLocation(#20088,#20089) +#20090=* +lines(#20090,#20001,"class C {"," +") +#20091=@"loc,{#10000},9,1,9,9" +locations_default(#20091,#10000,9,1,9,9) +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) +#20094=* +lines(#20094,#20001,"}"," +") +#20095=@"loc,{#10000},11,1,11,1" +locations_default(#20095,#10000,11,1,11,1) +hasLocation(#20094,#20095) +numlines(#20001,11,9,0) +#20096=* +tokeninfo(#20096,7,#20001,0,"class") +#20097=@"loc,{#10000},1,1,1,5" +locations_default(#20097,#10000,1,1,1,5) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,6,#20001,1,"A") +hasLocation(#20098,#20012) +#20099=* +tokeninfo(#20099,8,#20001,2,"{") +#20100=@"loc,{#10000},1,9,1,9" +locations_default(#20100,#10000,1,9,1,9) +hasLocation(#20099,#20100) +#20101=* +tokeninfo(#20101,6,#20001,3,"x") +hasLocation(#20101,#20017) +#20102=* +tokeninfo(#20102,8,#20001,4,"=") +#20103=@"loc,{#10000},2,5,2,5" +locations_default(#20103,#10000,2,5,2,5) +hasLocation(#20102,#20103) +#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) +#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) +#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) +#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) +#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) +#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) +#20122=* +tokeninfo(#20122,8,#20001,16,"=") +#20123=@"loc,{#10000},6,5,6,5" +locations_default(#20123,#10000,6,5,6,5) +hasLocation(#20122,#20123) +#20124=* +tokeninfo(#20124,7,#20001,17,"super") +hasLocation(#20124,#20042) +#20125=* +tokeninfo(#20125,8,#20001,18,".") +#20126=@"loc,{#10000},6,12,6,12" +locations_default(#20126,#10000,6,12,6,12) +hasLocation(#20125,#20126) +#20127=* +tokeninfo(#20127,6,#20001,19,"x") +hasLocation(#20127,#20044) +#20128=* +tokeninfo(#20128,8,#20001,20,";") +#20129=@"loc,{#10000},6,14,6,14" +locations_default(#20129,#10000,6,14,6,14) +hasLocation(#20128,#20129) +#20130=* +tokeninfo(#20130,8,#20001,21,"}") +hasLocation(#20130,#20087) +#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) +#20134=* +tokeninfo(#20134,8,#20001,24,"{") +#20135=@"loc,{#10000},9,9,9,9" +locations_default(#20135,#10000,9,9,9,9) +hasLocation(#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) +#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) +#20142=* +entry_cfg_node(#20142,#20001) +#20143=@"loc,{#10000},1,1,1,0" +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) +#20145=* +entry_cfg_node(#20145,#20067) +hasLocation(#20145,#20069) +successor(#20063,#20073) +#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) +#20147=* +entry_cfg_node(#20147,#20038) +hasLocation(#20147,#20046) +#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) +#20149=* +entry_cfg_node(#20149,#20018) +hasLocation(#20149,#20022) +successor(#20014,#20026) +#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) +numlines(#10000,11,9,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/excludes/input/.jshintignore b/javascript/extractor/tests/excludes/input/.jshintignore new file mode 100644 index 00000000000..15a1c43efb2 --- /dev/null +++ b/javascript/extractor/tests/excludes/input/.jshintignore @@ -0,0 +1,2 @@ +f/bar*.js +baz/ diff --git a/javascript/extractor/tests/excludes/input/a.js b/javascript/extractor/tests/excludes/input/a.js new file mode 100644 index 00000000000..f70d7bba4ae --- /dev/null +++ b/javascript/extractor/tests/excludes/input/a.js @@ -0,0 +1 @@ +42 \ No newline at end of file diff --git a/javascript/extractor/tests/excludes/input/baz/a.js b/javascript/extractor/tests/excludes/input/baz/a.js new file mode 100644 index 00000000000..7f78a0fa65a --- /dev/null +++ b/javascript/extractor/tests/excludes/input/baz/a.js @@ -0,0 +1 @@ +console.log("Nor this."); \ No newline at end of file diff --git a/javascript/extractor/tests/excludes/input/f/bar.js b/javascript/extractor/tests/excludes/input/f/bar.js new file mode 100644 index 00000000000..a11e2f701ad --- /dev/null +++ b/javascript/extractor/tests/excludes/input/f/bar.js @@ -0,0 +1 @@ +console.log("And neither will this."); \ No newline at end of file diff --git a/javascript/extractor/tests/excludes/input/f/empty.json b/javascript/extractor/tests/excludes/input/f/empty.json new file mode 100644 index 00000000000..9e26dfeeb6e --- /dev/null +++ b/javascript/extractor/tests/excludes/input/f/empty.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/javascript/extractor/tests/excludes/input/f/foo.js b/javascript/extractor/tests/excludes/input/f/foo.js new file mode 100644 index 00000000000..23a8640c828 --- /dev/null +++ b/javascript/extractor/tests/excludes/input/f/foo.js @@ -0,0 +1 @@ +console.log("This file will not be extracted."); \ No newline at end of file diff --git a/javascript/extractor/tests/excludes/options.json b/javascript/extractor/tests/excludes/options.json new file mode 100644 index 00000000000..93d35250cb0 --- /dev/null +++ b/javascript/extractor/tests/excludes/options.json @@ -0,0 +1,5 @@ +{ + "exclude": ["**/foo.js"], + "exclude-path": [".jshintignore"], + "include": ["**/*.json"] +} diff --git a/javascript/extractor/tests/excludes/output/trap/a.js.trap b/javascript/extractor/tests/excludes/output/trap/a.js.trap new file mode 100644 index 00000000000..3584a025695 --- /dev/null +++ b/javascript/extractor/tests/excludes/output/trap/a.js.trap @@ -0,0 +1,50 @@ +#10000=@"/a.js;sourcefile" +files(#10000,"/a.js","a","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +numlines(#20001,1,1,0) +#20006=* +tokeninfo(#20006,3,#20001,0,"42") +hasLocation(#20006,#20002) +#20007=* +tokeninfo(#20007,0,#20001,1,"") +#20008=@"loc,{#10000},1,3,1,2" +locations_default(#20008,#10000,1,3,1,2) +hasLocation(#20007,#20008) +#20009=* +entry_cfg_node(#20009,#20001) +#20010=@"loc,{#10000},1,1,1,0" +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) +numlines(#10000,1,1,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/excludes/output/trap/empty.json.trap b/javascript/extractor/tests/excludes/output/trap/empty.json.trap new file mode 100644 index 00000000000..597f0575b19 --- /dev/null +++ b/javascript/extractor/tests/excludes/output/trap/empty.json.trap @@ -0,0 +1,18 @@ +#10000=@"/f/empty.json;sourcefile" +files(#10000,"/f/empty.json","empty","json",0) +#10001=@"/f;folder" +folders(#10001,"/f","f") +#10002=@"/;folder" +folders(#10002,"/","") +containerparent(#10002,#10001) +containerparent(#10001,#10000) +#10003=@"loc,{#10000},0,0,0,0" +locations_default(#10003,#10000,0,0,0,0) +hasLocation(#10000,#10003) +#20000=* +json(#20000,5,#10000,0,"{}") +#20001=@"loc,{#10000},1,1,1,2" +locations_default(#20001,#10000,1,1,1,2) +hasLocation(#20000,#20001) +numlines(#10000,1,0,0) +filetype(#10000,"json") diff --git a/javascript/extractor/tests/exprs/input/assignment.js b/javascript/extractor/tests/exprs/input/assignment.js new file mode 100644 index 00000000000..07426bf3f9e --- /dev/null +++ b/javascript/extractor/tests/exprs/input/assignment.js @@ -0,0 +1,12 @@ +a = 23; +a += 19; +a -= 9; +a *= b; +a /= 2; +a %= 2; +a <<= 8; +a >>= 7; +a >>>= 2; +a |= 2; +a ^= 1; +a &= 3; \ No newline at end of file diff --git a/javascript/extractor/tests/exprs/input/binary.js b/javascript/extractor/tests/exprs/input/binary.js new file mode 100644 index 00000000000..30fd4fa7d86 --- /dev/null +++ b/javascript/extractor/tests/exprs/input/binary.js @@ -0,0 +1,15 @@ +1 << 2; +2 >> 1; +2 >>> 1; +23 + 19; +42 - 19; +2 * 3; +8 / 5; +2 % 1; +2 | 3; +2 ^ 3; +2 & 3; +'prototype' in Object; +[] instanceof Array; +1 && 2; +1 || 2; diff --git a/javascript/extractor/tests/exprs/input/comparison.js b/javascript/extractor/tests/exprs/input/comparison.js new file mode 100644 index 00000000000..0959e2b4a9d --- /dev/null +++ b/javascript/extractor/tests/exprs/input/comparison.js @@ -0,0 +1,8 @@ +1 == 1; +1 != 2; +1 === 1; +1 !== 2; +1 < 2; +1 <= 2; +2 > 1; +2 >= 1; diff --git a/javascript/extractor/tests/exprs/input/fnnesting.js b/javascript/extractor/tests/exprs/input/fnnesting.js new file mode 100644 index 00000000000..5566d361690 --- /dev/null +++ b/javascript/extractor/tests/exprs/input/fnnesting.js @@ -0,0 +1 @@ +f(function(){}, 23); \ No newline at end of file diff --git a/javascript/extractor/tests/exprs/input/others.js b/javascript/extractor/tests/exprs/input/others.js new file mode 100644 index 00000000000..8ba5b02925b --- /dev/null +++ b/javascript/extractor/tests/exprs/input/others.js @@ -0,0 +1,3 @@ +23, 42; +23, 42, 56; +true ? 0 : 1; diff --git a/javascript/extractor/tests/exprs/input/parens.js b/javascript/extractor/tests/exprs/input/parens.js new file mode 100644 index 00000000000..096528fdec4 --- /dev/null +++ b/javascript/extractor/tests/exprs/input/parens.js @@ -0,0 +1 @@ +--(NaN); \ No newline at end of file diff --git a/javascript/extractor/tests/exprs/input/primaries.js b/javascript/extractor/tests/exprs/input/primaries.js new file mode 100644 index 00000000000..b13cda6eb42 --- /dev/null +++ b/javascript/extractor/tests/exprs/input/primaries.js @@ -0,0 +1,30 @@ +null; +true; +false; +23; +2.3; +.42; +7.6e23; +1E-42; +0xdeadbeef; +"Hello"; +'world'; +"'what?'\x0a"; +'"why?"\n'; +/^(need?le)+/gi; +(23); +[23, 42, , "hi" ]; +({ x: 23, + y: this, + get o() {}, + get p() {}, + set p(v) {}}); +new Array; +new Object(); +new String("hi"); +String(""); +Object.create({}); +String['epytotorp'.reverse()]; +[,,]; +[1,]; +({ z: 56, }); \ No newline at end of file diff --git a/javascript/extractor/tests/exprs/input/regexp.js b/javascript/extractor/tests/exprs/input/regexp.js new file mode 100644 index 00000000000..b6741b6a06d --- /dev/null +++ b/javascript/extractor/tests/exprs/input/regexp.js @@ -0,0 +1,44 @@ +/t/; +/foo|bar/; +/(?:)/; +/^abc$/; +/\bx\b/; +/\bx\B/; +/x(?=y)/; +/x(?!z)/; +/a*/; +/a*?/; +/a+/; +/a+?/; +/a?/; +/a??/; +/a{1}/; +/a{1,}/; +/a{1,2}/; +/a{1}?/; +/a{1,}?/; +/a{1,2}?/; +/./; +/(abc)/; +/(?:abc)/; +/\x0a/; +/\u000a/; +/\10/; +/\t\n\r\f\v/; +/\ca\cN/; +/\w\S/; +/\\/; +/[abc]/; +/[a-z]/; +/[a-zA-Z]/; +/[-a-z]/; +/[^a-z]/; +/[a\b\x0c]/; +/a{/; +/a{b}/; +/a{2/; +/\xa/; +/\c0/; +/[]/; +/[^]/; +/]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/; \ No newline at end of file diff --git a/javascript/extractor/tests/exprs/input/unary.js b/javascript/extractor/tests/exprs/input/unary.js new file mode 100644 index 00000000000..9ba6bfd9524 --- /dev/null +++ b/javascript/extractor/tests/exprs/input/unary.js @@ -0,0 +1,7 @@ +-23; ++42; +!true; +~2; +typeof Object; +void(0); +delete Object.prototype; \ No newline at end of file diff --git a/javascript/extractor/tests/exprs/input/update.js b/javascript/extractor/tests/exprs/input/update.js new file mode 100644 index 00000000000..0500255ad84 --- /dev/null +++ b/javascript/extractor/tests/exprs/input/update.js @@ -0,0 +1,4 @@ +++a; +a++; +--b; +b--; diff --git a/javascript/extractor/tests/exprs/output/trap/assignment.js.trap b/javascript/extractor/tests/exprs/output/trap/assignment.js.trap new file mode 100644 index 00000000000..d191864dadc --- /dev/null +++ b/javascript/extractor/tests/exprs/output/trap/assignment.js.trap @@ -0,0 +1,684 @@ +#10000=@"/assignment.js;sourcefile" +files(#10000,"/assignment.js","assignment","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,12,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) +#20010=* +exprs(#20010,3,#20005,1,"23") +#20011=@"loc,{#10000},1,5,1,6" +locations_default(#20011,#10000,1,5,1,6) +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) +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) +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) +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) +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) +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) +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) +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) +#20114=* +tokeninfo(#20114,8,#20001,1,"=") +#20115=@"loc,{#10000},1,3,1,3" +locations_default(#20115,#10000,1,3,1,3) +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) +#20120=* +tokeninfo(#20120,8,#20001,5,"+=") +#20121=@"loc,{#10000},2,3,2,4" +locations_default(#20121,#10000,2,3,2,4) +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) +#20125=* +tokeninfo(#20125,6,#20001,8,"a") +hasLocation(#20125,#20025) +#20126=* +tokeninfo(#20126,8,#20001,9,"-=") +#20127=@"loc,{#10000},3,3,3,4" +locations_default(#20127,#10000,3,3,3,4) +hasLocation(#20126,#20127) +#20128=* +tokeninfo(#20128,3,#20001,10,"9") +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) +#20131=* +tokeninfo(#20131,6,#20001,12,"a") +hasLocation(#20131,#20033) +#20132=* +tokeninfo(#20132,8,#20001,13,"*=") +#20133=@"loc,{#10000},4,3,4,4" +locations_default(#20133,#10000,4,3,4,4) +hasLocation(#20132,#20133) +#20134=* +tokeninfo(#20134,6,#20001,14,"b") +hasLocation(#20134,#20035) +#20135=* +tokeninfo(#20135,8,#20001,15,";") +#20136=@"loc,{#10000},4,7,4,7" +locations_default(#20136,#10000,4,7,4,7) +hasLocation(#20135,#20136) +#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) +#20140=* +tokeninfo(#20140,3,#20001,18,"2") +hasLocation(#20140,#20044) +#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) +#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) +#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) +#20150=* +tokeninfo(#20150,8,#20001,25,"<<=") +#20151=@"loc,{#10000},7,3,7,5" +locations_default(#20151,#10000,7,3,7,5) +hasLocation(#20150,#20151) +#20152=* +tokeninfo(#20152,3,#20001,26,"8") +hasLocation(#20152,#20060) +#20153=* +tokeninfo(#20153,8,#20001,27,";") +#20154=@"loc,{#10000},7,8,7,8" +locations_default(#20154,#10000,7,8,7,8) +hasLocation(#20153,#20154) +#20155=* +tokeninfo(#20155,6,#20001,28,"a") +hasLocation(#20155,#20066) +#20156=* +tokeninfo(#20156,8,#20001,29,">>=") +#20157=@"loc,{#10000},8,3,8,5" +locations_default(#20157,#10000,8,3,8,5) +hasLocation(#20156,#20157) +#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) +#20161=* +tokeninfo(#20161,6,#20001,32,"a") +hasLocation(#20161,#20074) +#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) +#20165=* +tokeninfo(#20165,8,#20001,35,";") +#20166=@"loc,{#10000},9,9,9,9" +locations_default(#20166,#10000,9,9,9,9) +hasLocation(#20165,#20166) +#20167=* +tokeninfo(#20167,6,#20001,36,"a") +hasLocation(#20167,#20082) +#20168=* +tokeninfo(#20168,8,#20001,37,"|=") +#20169=@"loc,{#10000},10,3,10,4" +locations_default(#20169,#10000,10,3,10,4) +hasLocation(#20168,#20169) +#20170=* +tokeninfo(#20170,3,#20001,38,"2") +hasLocation(#20170,#20084) +#20171=* +tokeninfo(#20171,8,#20001,39,";") +#20172=@"loc,{#10000},10,7,10,7" +locations_default(#20172,#10000,10,7,10,7) +hasLocation(#20171,#20172) +#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) +#20176=* +tokeninfo(#20176,3,#20001,42,"1") +hasLocation(#20176,#20092) +#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) +#20180=* +tokeninfo(#20180,8,#20001,45,"&=") +#20181=@"loc,{#10000},12,3,12,4" +locations_default(#20181,#10000,12,3,12,4) +hasLocation(#20180,#20181) +#20182=* +tokeninfo(#20182,3,#20001,46,"3") +hasLocation(#20182,#20100) +#20183=* +tokeninfo(#20183,8,#20001,47,";") +#20184=@"loc,{#10000},12,7,12,7" +locations_default(#20184,#10000,12,7,12,7) +hasLocation(#20183,#20184) +#20185=* +tokeninfo(#20185,0,#20001,48,"") +#20186=@"loc,{#10000},12,8,12,7" +locations_default(#20186,#10000,12,8,12,7) +hasLocation(#20185,#20186) +#20187=* +entry_cfg_node(#20187,#20001) +#20188=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..1136313bf1d --- /dev/null +++ b/javascript/extractor/tests/exprs/output/trap/binary.js.trap @@ -0,0 +1,840 @@ +#10000=@"/binary.js;sourcefile" +files(#10000,"/binary.js","binary","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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;"," +") +hasLocation(#20125,#20004) +#20126=* +lines(#20126,#20001,"2 >> 1;"," +") +hasLocation(#20126,#20012) +#20127=* +lines(#20127,#20001,"2 >>> 1;"," +") +hasLocation(#20127,#20020) +#20128=* +lines(#20128,#20001,"23 + 19;"," +") +hasLocation(#20128,#20028) +#20129=* +lines(#20129,#20001,"42 - 19;"," +") +hasLocation(#20129,#20036) +#20130=* +lines(#20130,#20001,"2 * 3;"," +") +hasLocation(#20130,#20044) +#20131=* +lines(#20131,#20001,"8 / 5;"," +") +hasLocation(#20131,#20052) +#20132=* +lines(#20132,#20001,"2 % 1;"," +") +hasLocation(#20132,#20060) +#20133=* +lines(#20133,#20001,"2 | 3;"," +") +hasLocation(#20133,#20068) +#20134=* +lines(#20134,#20001,"2 ^ 3;"," +") +hasLocation(#20134,#20076) +#20135=* +lines(#20135,#20001,"2 & 3;"," +") +hasLocation(#20135,#20084) +#20136=* +lines(#20136,#20001,"'prototype' in Object;"," +") +hasLocation(#20136,#20092) +#20137=* +lines(#20137,#20001,"[] instanceof Array;"," +") +hasLocation(#20137,#20101) +#20138=* +lines(#20138,#20001,"1 && 2;"," +") +hasLocation(#20138,#20110) +#20139=* +lines(#20139,#20001,"1 || 2;"," +") +hasLocation(#20139,#20118) +numlines(#20001,15,15,0) +#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) +#20144=* +tokeninfo(#20144,8,#20001,3,";") +#20145=@"loc,{#10000},1,7,1,7" +locations_default(#20145,#10000,1,7,1,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) +#20150=* +tokeninfo(#20150,8,#20001,7,";") +#20151=@"loc,{#10000},2,7,2,7" +locations_default(#20151,#10000,2,7,2,7) +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) +#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) +#20161=* +tokeninfo(#20161,3,#20001,14,"19") +hasLocation(#20161,#20034) +#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) +#20165=* +tokeninfo(#20165,8,#20001,17,"-") +#20166=@"loc,{#10000},5,4,5,4" +locations_default(#20166,#10000,5,4,5,4) +hasLocation(#20165,#20166) +#20167=* +tokeninfo(#20167,3,#20001,18,"19") +hasLocation(#20167,#20042) +#20168=* +tokeninfo(#20168,8,#20001,19,";") +#20169=@"loc,{#10000},5,8,5,8" +locations_default(#20169,#10000,5,8,5,8) +hasLocation(#20168,#20169) +#20170=* +tokeninfo(#20170,3,#20001,20,"2") +hasLocation(#20170,#20048) +#20171=* +tokeninfo(#20171,8,#20001,21,"*") +#20172=@"loc,{#10000},6,3,6,3" +locations_default(#20172,#10000,6,3,6,3) +hasLocation(#20171,#20172) +#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) +#20176=* +tokeninfo(#20176,3,#20001,24,"8") +hasLocation(#20176,#20056) +#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) +#20180=* +tokeninfo(#20180,8,#20001,27,";") +#20181=@"loc,{#10000},7,6,7,6" +locations_default(#20181,#10000,7,6,7,6) +hasLocation(#20180,#20181) +#20182=* +tokeninfo(#20182,3,#20001,28,"2") +hasLocation(#20182,#20064) +#20183=* +tokeninfo(#20183,8,#20001,29,"%") +#20184=@"loc,{#10000},8,3,8,3" +locations_default(#20184,#10000,8,3,8,3) +hasLocation(#20183,#20184) +#20185=* +tokeninfo(#20185,3,#20001,30,"1") +hasLocation(#20185,#20066) +#20186=* +tokeninfo(#20186,8,#20001,31,";") +#20187=@"loc,{#10000},8,6,8,6" +locations_default(#20187,#10000,8,6,8,6) +hasLocation(#20186,#20187) +#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) +#20191=* +tokeninfo(#20191,3,#20001,34,"3") +hasLocation(#20191,#20074) +#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) +#20195=* +tokeninfo(#20195,8,#20001,37,"^") +#20196=@"loc,{#10000},10,3,10,3" +locations_default(#20196,#10000,10,3,10,3) +hasLocation(#20195,#20196) +#20197=* +tokeninfo(#20197,3,#20001,38,"3") +hasLocation(#20197,#20082) +#20198=* +tokeninfo(#20198,8,#20001,39,";") +#20199=@"loc,{#10000},10,6,10,6" +locations_default(#20199,#10000,10,6,10,6) +hasLocation(#20198,#20199) +#20200=* +tokeninfo(#20200,3,#20001,40,"2") +hasLocation(#20200,#20088) +#20201=* +tokeninfo(#20201,8,#20001,41,"&") +#20202=@"loc,{#10000},11,3,11,3" +locations_default(#20202,#10000,11,3,11,3) +hasLocation(#20201,#20202) +#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) +#20206=* +tokeninfo(#20206,4,#20001,44,"'prototype'") +hasLocation(#20206,#20096) +#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) +#20210=* +tokeninfo(#20210,8,#20001,47,";") +#20211=@"loc,{#10000},12,22,12,22" +locations_default(#20211,#10000,12,22,12,22) +hasLocation(#20210,#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) +#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) +#20218=* +tokeninfo(#20218,6,#20001,51,"Array") +hasLocation(#20218,#20107) +#20219=* +tokeninfo(#20219,8,#20001,52,";") +#20220=@"loc,{#10000},13,20,13,20" +locations_default(#20220,#10000,13,20,13,20) +hasLocation(#20219,#20220) +#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) +#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) +#20228=* +tokeninfo(#20228,8,#20001,58,"||") +#20229=@"loc,{#10000},15,3,15,4" +locations_default(#20229,#10000,15,3,15,4) +hasLocation(#20228,#20229) +#20230=* +tokeninfo(#20230,3,#20001,59,"2") +hasLocation(#20230,#20124) +#20231=* +tokeninfo(#20231,8,#20001,60,";") +#20232=@"loc,{#10000},15,7,15,7" +locations_default(#20232,#10000,15,7,15,7) +hasLocation(#20231,#20232) +#20233=* +tokeninfo(#20233,0,#20001,61,"") +#20234=@"loc,{#10000},16,1,16,0" +locations_default(#20234,#10000,16,1,16,0) +hasLocation(#20233,#20234) +#20235=* +entry_cfg_node(#20235,#20001) +#20236=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..efa30966aa3 --- /dev/null +++ b/javascript/extractor/tests/exprs/output/trap/comparison.js.trap @@ -0,0 +1,456 @@ +#10000=@"/comparison.js;sourcefile" +files(#10000,"/comparison.js","comparison","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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;"," +") +hasLocation(#20067,#20004) +#20068=* +lines(#20068,#20001,"1 != 2;"," +") +hasLocation(#20068,#20012) +#20069=* +lines(#20069,#20001,"1 === 1;"," +") +hasLocation(#20069,#20020) +#20070=* +lines(#20070,#20001,"1 !== 2;"," +") +hasLocation(#20070,#20028) +#20071=* +lines(#20071,#20001,"1 < 2;"," +") +hasLocation(#20071,#20036) +#20072=* +lines(#20072,#20001,"1 <= 2;"," +") +hasLocation(#20072,#20044) +#20073=* +lines(#20073,#20001,"2 > 1;"," +") +hasLocation(#20073,#20052) +#20074=* +lines(#20074,#20001,"2 >= 1;"," +") +hasLocation(#20074,#20060) +numlines(#20001,8,8,0) +#20075=* +tokeninfo(#20075,3,#20001,0,"1") +hasLocation(#20075,#20008) +#20076=* +tokeninfo(#20076,8,#20001,1,"==") +#20077=@"loc,{#10000},1,3,1,4" +locations_default(#20077,#10000,1,3,1,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) +#20082=* +tokeninfo(#20082,8,#20001,5,"!=") +#20083=@"loc,{#10000},2,3,2,4" +locations_default(#20083,#10000,2,3,2,4) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,3,#20001,6,"2") +hasLocation(#20084,#20018) +#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) +#20088=* +tokeninfo(#20088,8,#20001,9,"===") +#20089=@"loc,{#10000},3,3,3,5" +locations_default(#20089,#10000,3,3,3,5) +hasLocation(#20088,#20089) +#20090=* +tokeninfo(#20090,3,#20001,10,"1") +hasLocation(#20090,#20026) +#20091=* +tokeninfo(#20091,8,#20001,11,";") +#20092=@"loc,{#10000},3,8,3,8" +locations_default(#20092,#10000,3,8,3,8) +hasLocation(#20091,#20092) +#20093=* +tokeninfo(#20093,3,#20001,12,"1") +hasLocation(#20093,#20032) +#20094=* +tokeninfo(#20094,8,#20001,13,"!==") +#20095=@"loc,{#10000},4,3,4,5" +locations_default(#20095,#10000,4,3,4,5) +hasLocation(#20094,#20095) +#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) +#20099=* +tokeninfo(#20099,3,#20001,16,"1") +hasLocation(#20099,#20040) +#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) +#20103=* +tokeninfo(#20103,8,#20001,19,";") +#20104=@"loc,{#10000},5,6,5,6" +locations_default(#20104,#10000,5,6,5,6) +hasLocation(#20103,#20104) +#20105=* +tokeninfo(#20105,3,#20001,20,"1") +hasLocation(#20105,#20048) +#20106=* +tokeninfo(#20106,8,#20001,21,"<=") +#20107=@"loc,{#10000},6,3,6,4" +locations_default(#20107,#10000,6,3,6,4) +hasLocation(#20106,#20107) +#20108=* +tokeninfo(#20108,3,#20001,22,"2") +hasLocation(#20108,#20050) +#20109=* +tokeninfo(#20109,8,#20001,23,";") +#20110=@"loc,{#10000},6,7,6,7" +locations_default(#20110,#10000,6,7,6,7) +hasLocation(#20109,#20110) +#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) +#20114=* +tokeninfo(#20114,3,#20001,26,"1") +hasLocation(#20114,#20058) +#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) +#20118=* +tokeninfo(#20118,8,#20001,29,">=") +#20119=@"loc,{#10000},8,3,8,4" +locations_default(#20119,#10000,8,3,8,4) +hasLocation(#20118,#20119) +#20120=* +tokeninfo(#20120,3,#20001,30,"1") +hasLocation(#20120,#20066) +#20121=* +tokeninfo(#20121,8,#20001,31,";") +#20122=@"loc,{#10000},8,7,8,7" +locations_default(#20122,#10000,8,7,8,7) +hasLocation(#20121,#20122) +#20123=* +tokeninfo(#20123,0,#20001,32,"") +#20124=@"loc,{#10000},9,1,9,0" +locations_default(#20124,#10000,9,1,9,0) +hasLocation(#20123,#20124) +#20125=* +entry_cfg_node(#20125,#20001) +#20126=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..e38676531c2 --- /dev/null +++ b/javascript/extractor/tests/exprs/output/trap/fnnesting.js.trap @@ -0,0 +1,154 @@ +#10000=@"/fnnesting.js;sourcefile" +files(#10000,"/fnnesting.js","fnnesting","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +numlines(#20001,1,1,0) +#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) +#20029=* +tokeninfo(#20029,8,#20001,6,"}") +#20030=@"loc,{#10000},1,14,1,14" +locations_default(#20030,#10000,1,14,1,14) +hasLocation(#20029,#20030) +#20031=* +tokeninfo(#20031,8,#20001,7,",") +#20032=@"loc,{#10000},1,15,1,15" +locations_default(#20032,#10000,1,15,1,15) +hasLocation(#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) +#20040=* +entry_cfg_node(#20040,#20001) +#20041=@"loc,{#10000},1,1,1,0" +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) +#20043=* +entry_cfg_node(#20043,#20009) +#20044=@"loc,{#10000},1,3,1,2" +locations_default(#20044,#10000,1,3,1,2) +hasLocation(#20043,#20044) +#20045=* +exit_cfg_node(#20045,#20009) +#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) +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 new file mode 100644 index 00000000000..632e7594828 --- /dev/null +++ b/javascript/extractor/tests/exprs/output/trap/others.js.trap @@ -0,0 +1,225 @@ +#10000=@"/others.js;sourcefile" +files(#10000,"/others.js","others","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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;"," +") +hasLocation(#20031,#20004) +#20032=* +lines(#20032,#20001,"23, 42, 56;"," +") +hasLocation(#20032,#20012) +#20033=* +lines(#20033,#20001,"true ? 0 : 1;"," +") +hasLocation(#20033,#20022) +numlines(#20001,3,3,0) +#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) +#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,"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) +#20043=* +tokeninfo(#20043,3,#20001,6,"42") +hasLocation(#20043,#20018) +#20044=* +tokeninfo(#20044,8,#20001,7,",") +#20045=@"loc,{#10000},2,7,2,7" +locations_default(#20045,#10000,2,7,2,7) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,3,#20001,8,"56") +hasLocation(#20046,#20020) +#20047=* +tokeninfo(#20047,8,#20001,9,";") +#20048=@"loc,{#10000},2,11,2,11" +locations_default(#20048,#10000,2,11,2,11) +hasLocation(#20047,#20048) +#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) +#20052=* +tokeninfo(#20052,3,#20001,12,"0") +hasLocation(#20052,#20028) +#20053=* +tokeninfo(#20053,8,#20001,13,":") +#20054=@"loc,{#10000},3,10,3,10" +locations_default(#20054,#10000,3,10,3,10) +hasLocation(#20053,#20054) +#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) +#20058=* +tokeninfo(#20058,0,#20001,16,"") +#20059=@"loc,{#10000},4,1,4,0" +locations_default(#20059,#10000,4,1,4,0) +hasLocation(#20058,#20059) +#20060=* +entry_cfg_node(#20060,#20001) +#20061=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..6257a3fa929 --- /dev/null +++ b/javascript/extractor/tests/exprs/output/trap/parens.js.trap @@ -0,0 +1,91 @@ +#10000=@"/parens.js;sourcefile" +files(#10000,"/parens.js","parens","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,8" +locations_default(#20002,#10000,1,1,1,8) +hasLocation(#20001,#20002) +#20003=* +stmts(#20003,2,#20001,0,"--(NaN);") +hasLocation(#20003,#20002) +stmtContainers(#20003,#20001) +#20004=* +exprs(#20004,61,#20003,0,"--(NaN)") +#20005=@"loc,{#10000},1,1,1,7" +locations_default(#20005,#10000,1,1,1,7) +hasLocation(#20004,#20005) +enclosingStmt(#20004,#20003) +exprContainers(#20004,#20001) +#20006=* +exprs(#20006,63,#20004,0,"(NaN)") +#20007=@"loc,{#10000},1,3,1,7" +locations_default(#20007,#10000,1,3,1,7) +hasLocation(#20006,#20007) +enclosingStmt(#20006,#20003) +exprContainers(#20006,#20001) +#20008=* +exprs(#20008,79,#20006,0,"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) +#20012=* +tokeninfo(#20012,8,#20001,0,"--") +#20013=@"loc,{#10000},1,1,1,2" +locations_default(#20013,#10000,1,1,1,2) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,1,"(") +#20015=@"loc,{#10000},1,3,1,3" +locations_default(#20015,#10000,1,3,1,3) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,6,#20001,2,"NaN") +hasLocation(#20016,#20009) +#20017=* +tokeninfo(#20017,8,#20001,3,")") +#20018=@"loc,{#10000},1,7,1,7" +locations_default(#20018,#10000,1,7,1,7) +hasLocation(#20017,#20018) +#20019=* +tokeninfo(#20019,8,#20001,4,";") +#20020=@"loc,{#10000},1,8,1,8" +locations_default(#20020,#10000,1,8,1,8) +hasLocation(#20019,#20020) +#20021=* +tokeninfo(#20021,0,#20001,5,"") +#20022=@"loc,{#10000},1,9,1,8" +locations_default(#20022,#10000,1,9,1,8) +hasLocation(#20021,#20022) +#20023=* +entry_cfg_node(#20023,#20001) +#20024=@"loc,{#10000},1,1,1,0" +locations_default(#20024,#10000,1,1,1,0) +hasLocation(#20023,#20024) +#20025=* +exit_cfg_node(#20025,#20001) +hasLocation(#20025,#20022) +successor(#20003,#20006) +successor(#20006,#20008) +successor(#20008,#20004) +successor(#20004,#20025) +successor(#20023,#20003) +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 new file mode 100644 index 00000000000..564dc2dd641 --- /dev/null +++ b/javascript/extractor/tests/exprs/output/trap/primaries.js.trap @@ -0,0 +1,1646 @@ +#10000=@"/primaries.js;sourcefile" +files(#10000,"/primaries.js","primaries","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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;"," +") +hasLocation(#20229,#20004) +#20230=* +lines(#20230,#20001,"true;"," +") +hasLocation(#20230,#20008) +#20231=* +lines(#20231,#20001,"false;"," +") +hasLocation(#20231,#20012) +#20232=* +lines(#20232,#20001,"23;"," +") +hasLocation(#20232,#20016) +#20233=* +lines(#20233,#20001,"2.3;"," +") +hasLocation(#20233,#20020) +#20234=* +lines(#20234,#20001,".42;"," +") +hasLocation(#20234,#20024) +#20235=* +lines(#20235,#20001,"7.6e23;"," +") +hasLocation(#20235,#20028) +#20236=* +lines(#20236,#20001,"1E-42;"," +") +hasLocation(#20236,#20032) +#20237=* +lines(#20237,#20001,"0xdeadbeef;"," +") +hasLocation(#20237,#20036) +#20238=* +lines(#20238,#20001,"""Hello"";"," +") +hasLocation(#20238,#20040) +#20239=* +lines(#20239,#20001,"'world';"," +") +hasLocation(#20239,#20044) +#20240=* +lines(#20240,#20001,"""'what?'\x0a"";"," +") +hasLocation(#20240,#20048) +#20241=* +lines(#20241,#20001,"'""why?""\n';"," +") +hasLocation(#20241,#20052) +#20242=* +lines(#20242,#20001,"/^(need?le)+/gi;"," +") +hasLocation(#20242,#20056) +#20243=* +lines(#20243,#20001,"(23);"," +") +hasLocation(#20243,#20084) +#20244=* +lines(#20244,#20001,"[23, 42, , ""hi"" ];"," +") +hasLocation(#20244,#20090) +#20245=* +lines(#20245,#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,"," +") +#20248=@"loc,{#10000},18,1,18,11" +locations_default(#20248,#10000,18,1,18,11) +hasLocation(#20247,#20248) +indentation(#10000,18," ",3) +#20249=* +lines(#20249,#20001," get o() {},"," +") +#20250=@"loc,{#10000},19,1,19,14" +locations_default(#20250,#10000,19,1,19,14) +hasLocation(#20249,#20250) +indentation(#10000,19," ",3) +#20251=* +lines(#20251,#20001," get p() {},"," +") +#20252=@"loc,{#10000},20,1,20,14" +locations_default(#20252,#10000,20,1,20,14) +hasLocation(#20251,#20252) +indentation(#10000,20," ",3) +#20253=* +lines(#20253,#20001," set p(v) {}});"," +") +#20254=@"loc,{#10000},21,1,21,17" +locations_default(#20254,#10000,21,1,21,17) +hasLocation(#20253,#20254) +indentation(#10000,21," ",3) +#20255=* +lines(#20255,#20001,"new Array;"," +") +hasLocation(#20255,#20151) +#20256=* +lines(#20256,#20001,"new Object();"," +") +hasLocation(#20256,#20158) +#20257=* +lines(#20257,#20001,"new String(""hi"");"," +") +hasLocation(#20257,#20165) +#20258=* +lines(#20258,#20001,"String("""");"," +") +hasLocation(#20258,#20174) +#20259=* +lines(#20259,#20001,"Object.create({});"," +") +hasLocation(#20259,#20182) +#20260=* +lines(#20260,#20001,"String['epytotorp'.reverse()];"," +") +hasLocation(#20260,#20194) +#20261=* +lines(#20261,#20001,"[,,];"," +") +hasLocation(#20261,#20208) +#20262=* +lines(#20262,#20001,"[1,];"," +") +hasLocation(#20262,#20212) +#20263=* +lines(#20263,#20001,"({ z: 56, });","") +hasLocation(#20263,#20218) +numlines(#20001,30,30,0) +#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) +#20268=* +tokeninfo(#20268,8,#20001,3,";") +#20269=@"loc,{#10000},2,5,2,5" +locations_default(#20269,#10000,2,5,2,5) +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) +#20274=* +tokeninfo(#20274,8,#20001,7,";") +#20275=@"loc,{#10000},4,3,4,3" +locations_default(#20275,#10000,4,3,4,3) +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) +#20280=* +tokeninfo(#20280,8,#20001,11,";") +#20281=@"loc,{#10000},6,4,6,4" +locations_default(#20281,#10000,6,4,6,4) +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) +#20286=* +tokeninfo(#20286,8,#20001,15,";") +#20287=@"loc,{#10000},8,6,8,6" +locations_default(#20287,#10000,8,6,8,6) +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) +#20292=* +tokeninfo(#20292,8,#20001,19,";") +#20293=@"loc,{#10000},10,8,10,8" +locations_default(#20293,#10000,10,8,10,8) +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) +#20298=* +tokeninfo(#20298,8,#20001,23,";") +#20299=@"loc,{#10000},12,14,12,14" +locations_default(#20299,#10000,12,14,12,14) +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) +#20304=* +tokeninfo(#20304,8,#20001,27,";") +#20305=@"loc,{#10000},14,16,14,16" +locations_default(#20305,#10000,14,16,14,16) +hasLocation(#20304,#20305) +#20306=* +tokeninfo(#20306,8,#20001,28,"(") +#20307=@"loc,{#10000},15,1,15,1" +locations_default(#20307,#10000,15,1,15,1) +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) +#20316=* +tokeninfo(#20316,8,#20001,34,",") +#20317=@"loc,{#10000},16,4,16,4" +locations_default(#20317,#10000,16,4,16,4) +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) +#20326=* +tokeninfo(#20326,8,#20001,40,";") +#20327=@"loc,{#10000},16,18,16,18" +locations_default(#20327,#10000,16,18,16,18) +hasLocation(#20326,#20327) +#20328=* +tokeninfo(#20328,8,#20001,41,"(") +#20329=@"loc,{#10000},17,1,17,1" +locations_default(#20329,#10000,17,1,17,1) +hasLocation(#20328,#20329) +#20330=* +tokeninfo(#20330,8,#20001,42,"{") +#20331=@"loc,{#10000},17,2,17,2" +locations_default(#20331,#10000,17,2,17,2) +hasLocation(#20330,#20331) +#20332=* +tokeninfo(#20332,6,#20001,43,"x") +hasLocation(#20332,#20108) +#20333=* +tokeninfo(#20333,8,#20001,44,":") +#20334=@"loc,{#10000},17,5,17,5" +locations_default(#20334,#10000,17,5,17,5) +hasLocation(#20333,#20334) +#20335=* +tokeninfo(#20335,3,#20001,45,"23") +hasLocation(#20335,#20110) +#20336=* +tokeninfo(#20336,8,#20001,46,",") +#20337=@"loc,{#10000},17,9,17,9" +locations_default(#20337,#10000,17,9,17,9) +hasLocation(#20336,#20337) +#20338=* +tokeninfo(#20338,6,#20001,47,"y") +hasLocation(#20338,#20114) +#20339=* +tokeninfo(#20339,8,#20001,48,":") +#20340=@"loc,{#10000},18,5,18,5" +locations_default(#20340,#10000,18,5,18,5) +hasLocation(#20339,#20340) +#20341=* +tokeninfo(#20341,7,#20001,49,"this") +hasLocation(#20341,#20116) +#20342=* +tokeninfo(#20342,8,#20001,50,",") +#20343=@"loc,{#10000},18,11,18,11" +locations_default(#20343,#10000,18,11,18,11) +hasLocation(#20342,#20343) +#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) +#20346=* +tokeninfo(#20346,6,#20001,52,"o") +hasLocation(#20346,#20120) +#20347=* +tokeninfo(#20347,8,#20001,53,"(") +#20348=@"loc,{#10000},19,9,19,9" +locations_default(#20348,#10000,19,9,19,9) +hasLocation(#20347,#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) +#20351=* +tokeninfo(#20351,8,#20001,55,"{") +#20352=@"loc,{#10000},19,12,19,12" +locations_default(#20352,#10000,19,12,19,12) +hasLocation(#20351,#20352) +#20353=* +tokeninfo(#20353,8,#20001,56,"}") +#20354=@"loc,{#10000},19,13,19,13" +locations_default(#20354,#10000,19,13,19,13) +hasLocation(#20353,#20354) +#20355=* +tokeninfo(#20355,8,#20001,57,",") +#20356=@"loc,{#10000},19,14,19,14" +locations_default(#20356,#10000,19,14,19,14) +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) +hasLocation(#20357,#20358) +#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) +#20373=* +tokeninfo(#20373,8,#20001,67,"(") +#20374=@"loc,{#10000},21,9,21,9" +locations_default(#20374,#10000,21,9,21,9) +hasLocation(#20373,#20374) +#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) +#20378=* +tokeninfo(#20378,8,#20001,70,"{") +#20379=@"loc,{#10000},21,13,21,13" +locations_default(#20379,#10000,21,13,21,13) +hasLocation(#20378,#20379) +#20380=* +tokeninfo(#20380,8,#20001,71,"}") +#20381=@"loc,{#10000},21,14,21,14" +locations_default(#20381,#10000,21,14,21,14) +hasLocation(#20380,#20381) +#20382=* +tokeninfo(#20382,8,#20001,72,"}") +#20383=@"loc,{#10000},21,15,21,15" +locations_default(#20383,#10000,21,15,21,15) +hasLocation(#20382,#20383) +#20384=* +tokeninfo(#20384,8,#20001,73,")") +#20385=@"loc,{#10000},21,16,21,16" +locations_default(#20385,#10000,21,16,21,16) +hasLocation(#20384,#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) +#20391=* +tokeninfo(#20391,8,#20001,77,";") +#20392=@"loc,{#10000},22,10,22,10" +locations_default(#20392,#10000,22,10,22,10) +hasLocation(#20391,#20392) +#20393=* +tokeninfo(#20393,7,#20001,78,"new") +#20394=@"loc,{#10000},23,1,23,3" +locations_default(#20394,#10000,23,1,23,3) +hasLocation(#20393,#20394) +#20395=* +tokeninfo(#20395,6,#20001,79,"Object") +hasLocation(#20395,#20162) +#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) +#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) +#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) +#20408=* +tokeninfo(#20408,8,#20001,87,")") +#20409=@"loc,{#10000},24,16,24,16" +locations_default(#20409,#10000,24,16,24,16) +hasLocation(#20408,#20409) +#20410=* +tokeninfo(#20410,8,#20001,88,";") +#20411=@"loc,{#10000},24,17,24,17" +locations_default(#20411,#10000,24,17,24,17) +hasLocation(#20410,#20411) +#20412=* +tokeninfo(#20412,6,#20001,89,"String") +hasLocation(#20412,#20178) +#20413=* +tokeninfo(#20413,8,#20001,90,"(") +#20414=@"loc,{#10000},25,7,25,7" +locations_default(#20414,#10000,25,7,25,7) +hasLocation(#20413,#20414) +#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) +#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) +#20424=* +tokeninfo(#20424,8,#20001,97,"(") +#20425=@"loc,{#10000},26,14,26,14" +locations_default(#20425,#10000,26,14,26,14) +hasLocation(#20424,#20425) +#20426=* +tokeninfo(#20426,8,#20001,98,"{") +#20427=@"loc,{#10000},26,15,26,15" +locations_default(#20427,#10000,26,15,26,15) +hasLocation(#20426,#20427) +#20428=* +tokeninfo(#20428,8,#20001,99,"}") +#20429=@"loc,{#10000},26,16,26,16" +locations_default(#20429,#10000,26,16,26,16) +hasLocation(#20428,#20429) +#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) +#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) +#20438=* +tokeninfo(#20438,8,#20001,105,".") +#20439=@"loc,{#10000},27,19,27,19" +locations_default(#20439,#10000,27,19,27,19) +hasLocation(#20438,#20439) +#20440=* +tokeninfo(#20440,6,#20001,106,"reverse") +hasLocation(#20440,#20206) +#20441=* +tokeninfo(#20441,8,#20001,107,"(") +#20442=@"loc,{#10000},27,27,27,27" +locations_default(#20442,#10000,27,27,27,27) +hasLocation(#20441,#20442) +#20443=* +tokeninfo(#20443,8,#20001,108,")") +#20444=@"loc,{#10000},27,28,27,28" +locations_default(#20444,#10000,27,28,27,28) +hasLocation(#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) +#20447=* +tokeninfo(#20447,8,#20001,110,";") +#20448=@"loc,{#10000},27,30,27,30" +locations_default(#20448,#10000,27,30,27,30) +hasLocation(#20447,#20448) +#20449=* +tokeninfo(#20449,8,#20001,111,"[") +#20450=@"loc,{#10000},28,1,28,1" +locations_default(#20450,#10000,28,1,28,1) +hasLocation(#20449,#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) +#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) +#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) +#20464=* +tokeninfo(#20464,8,#20001,119,"]") +#20465=@"loc,{#10000},29,4,29,4" +locations_default(#20465,#10000,29,4,29,4) +hasLocation(#20464,#20465) +#20466=* +tokeninfo(#20466,8,#20001,120,";") +#20467=@"loc,{#10000},29,5,29,5" +locations_default(#20467,#10000,29,5,29,5) +hasLocation(#20466,#20467) +#20468=* +tokeninfo(#20468,8,#20001,121,"(") +#20469=@"loc,{#10000},30,1,30,1" +locations_default(#20469,#10000,30,1,30,1) +hasLocation(#20468,#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) +#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) +#20476=* +tokeninfo(#20476,8,#20001,126,",") +#20477=@"loc,{#10000},30,9,30,9" +locations_default(#20477,#10000,30,9,30,9) +hasLocation(#20476,#20477) +#20478=* +tokeninfo(#20478,8,#20001,127,"}") +#20479=@"loc,{#10000},30,11,30,11" +locations_default(#20479,#10000,30,11,30,11) +hasLocation(#20478,#20479) +#20480=* +tokeninfo(#20480,8,#20001,128,")") +#20481=@"loc,{#10000},30,12,30,12" +locations_default(#20481,#10000,30,12,30,12) +hasLocation(#20480,#20481) +#20482=* +tokeninfo(#20482,8,#20001,129,";") +#20483=@"loc,{#10000},30,13,30,13" +locations_default(#20483,#10000,30,13,30,13) +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) +#20486=* +entry_cfg_node(#20486,#20001) +#20487=@"loc,{#10000},1,1,1,0" +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) +#20489=* +entry_cfg_node(#20489,#20141) +#20490=@"loc,{#10000},21,9,21,8" +locations_default(#20490,#10000,21,9,21,8) +hasLocation(#20489,#20490) +#20491=* +exit_cfg_node(#20491,#20141) +#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) +#20493=* +entry_cfg_node(#20493,#20131) +#20494=@"loc,{#10000},20,9,20,8" +locations_default(#20494,#10000,20,9,20,8) +hasLocation(#20493,#20494) +#20495=* +exit_cfg_node(#20495,#20131) +#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) +#20497=* +entry_cfg_node(#20497,#20121) +#20498=@"loc,{#10000},19,9,19,8" +locations_default(#20498,#10000,19,9,19,8) +hasLocation(#20497,#20498) +#20499=* +exit_cfg_node(#20499,#20121) +#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) +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 new file mode 100644 index 00000000000..9a3eb7e3595 --- /dev/null +++ b/javascript/extractor/tests/exprs/output/trap/regexp.js.trap @@ -0,0 +1,2250 @@ +#10000=@"/regexp.js;sourcefile" +files(#10000,"/regexp.js","regexp","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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," +") +#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," +") +#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=* +stmts(#20251,2,#20001,26,"/\t\n\r\f\v/;") +#20252=@"loc,{#10000},27,1,27,13" +locations_default(#20252,#10000,27,1,27,13) +hasLocation(#20251,#20252) +stmtContainers(#20251,#20001) +#20253=* +exprs(#20253,5,#20251,0,"/\t\n\r\f\v/") +#20254=@"loc,{#10000},27,1,27,12" +locations_default(#20254,#10000,27,1,27,12) +hasLocation(#20253,#20254) +enclosingStmt(#20253,#20251) +exprContainers(#20253,#20001) +literals("/\t\n\r\f\v/","/\t\n\r\f\v/",#20253) +#20255=* +regexpterm(#20255,1,#20253,0,"\t\n\r\f\v") +#20256=@"loc,{#10000},27,2,27,11" +locations_default(#20256,#10000,27,2,27,11) +hasLocation(#20255,#20256) +#20257=* +regexpterm(#20257,19,#20255,0,"\t") +#20258=@"loc,{#10000},27,2,27,3" +locations_default(#20258,#10000,27,2,27,3) +hasLocation(#20257,#20258) +regexpConstValue(#20257," ") +#20259=* +regexpterm(#20259,19,#20255,1,"\n") +#20260=@"loc,{#10000},27,4,27,5" +locations_default(#20260,#10000,27,4,27,5) +hasLocation(#20259,#20260) +regexpConstValue(#20259," +") +#20261=* +regexpterm(#20261,19,#20255,2,"\r") +#20262=@"loc,{#10000},27,6,27,7" +locations_default(#20262,#10000,27,6,27,7) +hasLocation(#20261,#20262) +regexpConstValue(#20261," ") +#20263=* +regexpterm(#20263,19,#20255,3,"\f") +#20264=@"loc,{#10000},27,8,27,9" +locations_default(#20264,#10000,27,8,27,9) +hasLocation(#20263,#20264) +regexpConstValue(#20263," ") +#20265=* +regexpterm(#20265,19,#20255,4,"\v") +#20266=@"loc,{#10000},27,10,27,11" +locations_default(#20266,#10000,27,10,27,11) +hasLocation(#20265,#20266) +regexpConstValue(#20265," ") +#20267=* +stmts(#20267,2,#20001,27,"/\ca\cN/;") +#20268=@"loc,{#10000},28,1,28,9" +locations_default(#20268,#10000,28,1,28,9) +hasLocation(#20267,#20268) +stmtContainers(#20267,#20001) +#20269=* +exprs(#20269,5,#20267,0,"/\ca\cN/") +#20270=@"loc,{#10000},28,1,28,8" +locations_default(#20270,#10000,28,1,28,8) +hasLocation(#20269,#20270) +enclosingStmt(#20269,#20267) +exprContainers(#20269,#20001) +literals("/\ca\cN/","/\ca\cN/",#20269) +#20271=* +regexpterm(#20271,1,#20269,0,"\ca\cN") +#20272=@"loc,{#10000},28,2,28,7" +locations_default(#20272,#10000,28,2,28,7) +hasLocation(#20271,#20272) +#20273=* +regexpterm(#20273,19,#20271,0,"\ca") +#20274=@"loc,{#10000},28,2,28,4" +locations_default(#20274,#10000,28,2,28,4) +hasLocation(#20273,#20274) +regexpConstValue(#20273,"") +#20275=* +regexpterm(#20275,19,#20271,1,"\cN") +#20276=@"loc,{#10000},28,5,28,7" +locations_default(#20276,#10000,28,5,28,7) +hasLocation(#20275,#20276) +regexpConstValue(#20275,"") +#20277=* +stmts(#20277,2,#20001,28,"/\w\S/;") +#20278=@"loc,{#10000},29,1,29,7" +locations_default(#20278,#10000,29,1,29,7) +hasLocation(#20277,#20278) +stmtContainers(#20277,#20001) +#20279=* +exprs(#20279,5,#20277,0,"/\w\S/") +#20280=@"loc,{#10000},29,1,29,6" +locations_default(#20280,#10000,29,1,29,6) +hasLocation(#20279,#20280) +enclosingStmt(#20279,#20277) +exprContainers(#20279,#20001) +literals("/\w\S/","/\w\S/",#20279) +#20281=* +regexpterm(#20281,1,#20279,0,"\w\S") +#20282=@"loc,{#10000},29,2,29,5" +locations_default(#20282,#10000,29,2,29,5) +hasLocation(#20281,#20282) +#20283=* +regexpterm(#20283,20,#20281,0,"\w") +#20284=@"loc,{#10000},29,2,29,3" +locations_default(#20284,#10000,29,2,29,3) +hasLocation(#20283,#20284) +charClassEscape(#20283,"w") +#20285=* +regexpterm(#20285,20,#20281,1,"\S") +#20286=@"loc,{#10000},29,4,29,5" +locations_default(#20286,#10000,29,4,29,5) +hasLocation(#20285,#20286) +charClassEscape(#20285,"S") +#20287=* +stmts(#20287,2,#20001,29,"/\\/;") +#20288=@"loc,{#10000},30,1,30,5" +locations_default(#20288,#10000,30,1,30,5) +hasLocation(#20287,#20288) +stmtContainers(#20287,#20001) +#20289=* +exprs(#20289,5,#20287,0,"/\\/") +#20290=@"loc,{#10000},30,1,30,4" +locations_default(#20290,#10000,30,1,30,4) +hasLocation(#20289,#20290) +enclosingStmt(#20289,#20287) +exprContainers(#20289,#20001) +literals("/\\/","/\\/",#20289) +#20291=* +regexpterm(#20291,21,#20289,0,"\\") +#20292=@"loc,{#10000},30,2,30,3" +locations_default(#20292,#10000,30,2,30,3) +hasLocation(#20291,#20292) +regexpConstValue(#20291,"\") +#20293=* +stmts(#20293,2,#20001,30,"/[abc]/;") +#20294=@"loc,{#10000},31,1,31,8" +locations_default(#20294,#10000,31,1,31,8) +hasLocation(#20293,#20294) +stmtContainers(#20293,#20001) +#20295=* +exprs(#20295,5,#20293,0,"/[abc]/") +#20296=@"loc,{#10000},31,1,31,7" +locations_default(#20296,#10000,31,1,31,7) +hasLocation(#20295,#20296) +enclosingStmt(#20295,#20293) +exprContainers(#20295,#20001) +literals("/[abc]/","/[abc]/",#20295) +#20297=* +regexpterm(#20297,23,#20295,0,"[abc]") +#20298=@"loc,{#10000},31,2,31,6" +locations_default(#20298,#10000,31,2,31,6) +hasLocation(#20297,#20298) +#20299=* +regexpterm(#20299,14,#20297,0,"a") +#20300=@"loc,{#10000},31,3,31,3" +locations_default(#20300,#10000,31,3,31,3) +hasLocation(#20299,#20300) +regexpConstValue(#20299,"a") +#20301=* +regexpterm(#20301,14,#20297,1,"b") +#20302=@"loc,{#10000},31,4,31,4" +locations_default(#20302,#10000,31,4,31,4) +hasLocation(#20301,#20302) +regexpConstValue(#20301,"b") +#20303=* +regexpterm(#20303,14,#20297,2,"c") +#20304=@"loc,{#10000},31,5,31,5" +locations_default(#20304,#10000,31,5,31,5) +hasLocation(#20303,#20304) +regexpConstValue(#20303,"c") +#20305=* +stmts(#20305,2,#20001,31,"/[a-z]/;") +#20306=@"loc,{#10000},32,1,32,8" +locations_default(#20306,#10000,32,1,32,8) +hasLocation(#20305,#20306) +stmtContainers(#20305,#20001) +#20307=* +exprs(#20307,5,#20305,0,"/[a-z]/") +#20308=@"loc,{#10000},32,1,32,7" +locations_default(#20308,#10000,32,1,32,7) +hasLocation(#20307,#20308) +enclosingStmt(#20307,#20305) +exprContainers(#20307,#20001) +literals("/[a-z]/","/[a-z]/",#20307) +#20309=* +regexpterm(#20309,23,#20307,0,"[a-z]") +#20310=@"loc,{#10000},32,2,32,6" +locations_default(#20310,#10000,32,2,32,6) +hasLocation(#20309,#20310) +#20311=* +regexpterm(#20311,24,#20309,0,"a-z") +#20312=@"loc,{#10000},32,3,32,5" +locations_default(#20312,#10000,32,3,32,5) +hasLocation(#20311,#20312) +#20313=* +regexpterm(#20313,14,#20311,0,"a") +#20314=@"loc,{#10000},32,3,32,3" +locations_default(#20314,#10000,32,3,32,3) +hasLocation(#20313,#20314) +regexpConstValue(#20313,"a") +#20315=* +regexpterm(#20315,14,#20311,1,"z") +#20316=@"loc,{#10000},32,5,32,5" +locations_default(#20316,#10000,32,5,32,5) +hasLocation(#20315,#20316) +regexpConstValue(#20315,"z") +#20317=* +stmts(#20317,2,#20001,32,"/[a-zA-Z]/;") +#20318=@"loc,{#10000},33,1,33,11" +locations_default(#20318,#10000,33,1,33,11) +hasLocation(#20317,#20318) +stmtContainers(#20317,#20001) +#20319=* +exprs(#20319,5,#20317,0,"/[a-zA-Z]/") +#20320=@"loc,{#10000},33,1,33,10" +locations_default(#20320,#10000,33,1,33,10) +hasLocation(#20319,#20320) +enclosingStmt(#20319,#20317) +exprContainers(#20319,#20001) +literals("/[a-zA-Z]/","/[a-zA-Z]/",#20319) +#20321=* +regexpterm(#20321,23,#20319,0,"[a-zA-Z]") +#20322=@"loc,{#10000},33,2,33,9" +locations_default(#20322,#10000,33,2,33,9) +hasLocation(#20321,#20322) +#20323=* +regexpterm(#20323,24,#20321,0,"a-z") +#20324=@"loc,{#10000},33,3,33,5" +locations_default(#20324,#10000,33,3,33,5) +hasLocation(#20323,#20324) +#20325=* +regexpterm(#20325,14,#20323,0,"a") +#20326=@"loc,{#10000},33,3,33,3" +locations_default(#20326,#10000,33,3,33,3) +hasLocation(#20325,#20326) +regexpConstValue(#20325,"a") +#20327=* +regexpterm(#20327,14,#20323,1,"z") +#20328=@"loc,{#10000},33,5,33,5" +locations_default(#20328,#10000,33,5,33,5) +hasLocation(#20327,#20328) +regexpConstValue(#20327,"z") +#20329=* +regexpterm(#20329,24,#20321,1,"A-Z") +#20330=@"loc,{#10000},33,6,33,8" +locations_default(#20330,#10000,33,6,33,8) +hasLocation(#20329,#20330) +#20331=* +regexpterm(#20331,14,#20329,0,"A") +#20332=@"loc,{#10000},33,6,33,6" +locations_default(#20332,#10000,33,6,33,6) +hasLocation(#20331,#20332) +regexpConstValue(#20331,"A") +#20333=* +regexpterm(#20333,14,#20329,1,"Z") +#20334=@"loc,{#10000},33,8,33,8" +locations_default(#20334,#10000,33,8,33,8) +hasLocation(#20333,#20334) +regexpConstValue(#20333,"Z") +#20335=* +stmts(#20335,2,#20001,33,"/[-a-z]/;") +#20336=@"loc,{#10000},34,1,34,9" +locations_default(#20336,#10000,34,1,34,9) +hasLocation(#20335,#20336) +stmtContainers(#20335,#20001) +#20337=* +exprs(#20337,5,#20335,0,"/[-a-z]/") +#20338=@"loc,{#10000},34,1,34,8" +locations_default(#20338,#10000,34,1,34,8) +hasLocation(#20337,#20338) +enclosingStmt(#20337,#20335) +exprContainers(#20337,#20001) +literals("/[-a-z]/","/[-a-z]/",#20337) +#20339=* +regexpterm(#20339,23,#20337,0,"[-a-z]") +#20340=@"loc,{#10000},34,2,34,7" +locations_default(#20340,#10000,34,2,34,7) +hasLocation(#20339,#20340) +#20341=* +regexpterm(#20341,14,#20339,0,"-") +#20342=@"loc,{#10000},34,3,34,3" +locations_default(#20342,#10000,34,3,34,3) +hasLocation(#20341,#20342) +regexpConstValue(#20341,"-") +#20343=* +regexpterm(#20343,24,#20339,1,"a-z") +#20344=@"loc,{#10000},34,4,34,6" +locations_default(#20344,#10000,34,4,34,6) +hasLocation(#20343,#20344) +#20345=* +regexpterm(#20345,14,#20343,0,"a") +#20346=@"loc,{#10000},34,4,34,4" +locations_default(#20346,#10000,34,4,34,4) +hasLocation(#20345,#20346) +regexpConstValue(#20345,"a") +#20347=* +regexpterm(#20347,14,#20343,1,"z") +#20348=@"loc,{#10000},34,6,34,6" +locations_default(#20348,#10000,34,6,34,6) +hasLocation(#20347,#20348) +regexpConstValue(#20347,"z") +#20349=* +stmts(#20349,2,#20001,34,"/[^a-z]/;") +#20350=@"loc,{#10000},35,1,35,9" +locations_default(#20350,#10000,35,1,35,9) +hasLocation(#20349,#20350) +stmtContainers(#20349,#20001) +#20351=* +exprs(#20351,5,#20349,0,"/[^a-z]/") +#20352=@"loc,{#10000},35,1,35,8" +locations_default(#20352,#10000,35,1,35,8) +hasLocation(#20351,#20352) +enclosingStmt(#20351,#20349) +exprContainers(#20351,#20001) +literals("/[^a-z]/","/[^a-z]/",#20351) +#20353=* +regexpterm(#20353,23,#20351,0,"[^a-z]") +#20354=@"loc,{#10000},35,2,35,7" +locations_default(#20354,#10000,35,2,35,7) +hasLocation(#20353,#20354) +isInverted(#20353) +#20355=* +regexpterm(#20355,24,#20353,0,"a-z") +#20356=@"loc,{#10000},35,4,35,6" +locations_default(#20356,#10000,35,4,35,6) +hasLocation(#20355,#20356) +#20357=* +regexpterm(#20357,14,#20355,0,"a") +#20358=@"loc,{#10000},35,4,35,4" +locations_default(#20358,#10000,35,4,35,4) +hasLocation(#20357,#20358) +regexpConstValue(#20357,"a") +#20359=* +regexpterm(#20359,14,#20355,1,"z") +#20360=@"loc,{#10000},35,6,35,6" +locations_default(#20360,#10000,35,6,35,6) +hasLocation(#20359,#20360) +regexpConstValue(#20359,"z") +#20361=* +stmts(#20361,2,#20001,35,"/[a\b\x0c]/;") +#20362=@"loc,{#10000},36,1,36,12" +locations_default(#20362,#10000,36,1,36,12) +hasLocation(#20361,#20362) +stmtContainers(#20361,#20001) +#20363=* +exprs(#20363,5,#20361,0,"/[a\b\x0c]/") +#20364=@"loc,{#10000},36,1,36,11" +locations_default(#20364,#10000,36,1,36,11) +hasLocation(#20363,#20364) +enclosingStmt(#20363,#20361) +exprContainers(#20363,#20001) +literals("/[a\b\x0c]/","/[a\b\x0c]/",#20363) +#20365=* +regexpterm(#20365,23,#20363,0,"[a\b\x0c]") +#20366=@"loc,{#10000},36,2,36,10" +locations_default(#20366,#10000,36,2,36,10) +hasLocation(#20365,#20366) +#20367=* +regexpterm(#20367,14,#20365,0,"a") +#20368=@"loc,{#10000},36,3,36,3" +locations_default(#20368,#10000,36,3,36,3) +hasLocation(#20367,#20368) +regexpConstValue(#20367,"a") +#20369=* +regexpterm(#20369,19,#20365,1,"\b") +#20370=@"loc,{#10000},36,4,36,5" +locations_default(#20370,#10000,36,4,36,5) +hasLocation(#20369,#20370) +regexpConstValue(#20369,"") +#20371=* +regexpterm(#20371,15,#20365,2,"\x0c") +#20372=@"loc,{#10000},36,6,36,9" +locations_default(#20372,#10000,36,6,36,9) +hasLocation(#20371,#20372) +regexpConstValue(#20371," ") +#20373=* +stmts(#20373,2,#20001,36,"/a{/;") +#20374=@"loc,{#10000},37,1,37,5" +locations_default(#20374,#10000,37,1,37,5) +hasLocation(#20373,#20374) +stmtContainers(#20373,#20001) +#20375=* +exprs(#20375,5,#20373,0,"/a{/") +#20376=@"loc,{#10000},37,1,37,4" +locations_default(#20376,#10000,37,1,37,4) +hasLocation(#20375,#20376) +enclosingStmt(#20375,#20373) +exprContainers(#20375,#20001) +literals("/a{/","/a{/",#20375) +#20377=* +regexpterm(#20377,11,#20375,0,"a{") +#20378=@"loc,{#10000},37,2,37,3" +locations_default(#20378,#10000,37,2,37,3) +hasLocation(#20377,#20378) +isGreedy(#20377) +rangeQuantifierLowerBound(#20377,0) +#20379=* +regexpterm(#20379,14,#20377,0,"a") +#20380=@"loc,{#10000},37,2,37,2" +locations_default(#20380,#10000,37,2,37,2) +hasLocation(#20379,#20380) +regexpConstValue(#20379,"a") +#20381=* +regexpParseErrors(#20381,#20377,"expected digit") +#20382=@"loc,{#10000},37,4,37,4" +locations_default(#20382,#10000,37,4,37,4) +hasLocation(#20381,#20382) +#20383=* +regexpParseErrors(#20383,#20377,"expected '}'") +#20384=@"loc,{#10000},37,3,37,3" +locations_default(#20384,#10000,37,3,37,3) +hasLocation(#20383,#20384) +#20385=* +stmts(#20385,2,#20001,37,"/a{b}/;") +#20386=@"loc,{#10000},38,1,38,7" +locations_default(#20386,#10000,38,1,38,7) +hasLocation(#20385,#20386) +stmtContainers(#20385,#20001) +#20387=* +exprs(#20387,5,#20385,0,"/a{b}/") +#20388=@"loc,{#10000},38,1,38,6" +locations_default(#20388,#10000,38,1,38,6) +hasLocation(#20387,#20388) +enclosingStmt(#20387,#20385) +exprContainers(#20387,#20001) +literals("/a{b}/","/a{b}/",#20387) +#20389=* +regexpterm(#20389,1,#20387,0,"a{b}") +#20390=@"loc,{#10000},38,2,38,5" +locations_default(#20390,#10000,38,2,38,5) +hasLocation(#20389,#20390) +#20391=* +regexpterm(#20391,11,#20389,0,"a{") +#20392=@"loc,{#10000},38,2,38,3" +locations_default(#20392,#10000,38,2,38,3) +hasLocation(#20391,#20392) +isGreedy(#20391) +rangeQuantifierLowerBound(#20391,0) +#20393=* +regexpterm(#20393,14,#20391,0,"a") +#20394=@"loc,{#10000},38,2,38,2" +locations_default(#20394,#10000,38,2,38,2) +hasLocation(#20393,#20394) +regexpConstValue(#20393,"a") +#20395=* +regexpterm(#20395,14,#20389,1,"b") +#20396=@"loc,{#10000},38,4,38,4" +locations_default(#20396,#10000,38,4,38,4) +hasLocation(#20395,#20396) +regexpConstValue(#20395,"b") +#20397=* +regexpterm(#20397,14,#20389,2,"}") +#20398=@"loc,{#10000},38,5,38,5" +locations_default(#20398,#10000,38,5,38,5) +hasLocation(#20397,#20398) +regexpConstValue(#20397,"}") +#20399=* +regexpParseErrors(#20399,#20389,"expected digit") +hasLocation(#20399,#20396) +#20400=* +regexpParseErrors(#20400,#20389,"expected '}'") +#20401=@"loc,{#10000},38,3,38,3" +locations_default(#20401,#10000,38,3,38,3) +hasLocation(#20400,#20401) +#20402=* +regexpParseErrors(#20402,#20389,"unexpected character") +hasLocation(#20402,#20398) +#20403=* +stmts(#20403,2,#20001,38,"/a{2/;") +#20404=@"loc,{#10000},39,1,39,6" +locations_default(#20404,#10000,39,1,39,6) +hasLocation(#20403,#20404) +stmtContainers(#20403,#20001) +#20405=* +exprs(#20405,5,#20403,0,"/a{2/") +#20406=@"loc,{#10000},39,1,39,5" +locations_default(#20406,#10000,39,1,39,5) +hasLocation(#20405,#20406) +enclosingStmt(#20405,#20403) +exprContainers(#20405,#20001) +literals("/a{2/","/a{2/",#20405) +#20407=* +regexpterm(#20407,11,#20405,0,"a{2") +#20408=@"loc,{#10000},39,2,39,4" +locations_default(#20408,#10000,39,2,39,4) +hasLocation(#20407,#20408) +isGreedy(#20407) +rangeQuantifierLowerBound(#20407,2) +#20409=* +regexpterm(#20409,14,#20407,0,"a") +#20410=@"loc,{#10000},39,2,39,2" +locations_default(#20410,#10000,39,2,39,2) +hasLocation(#20409,#20410) +regexpConstValue(#20409,"a") +#20411=* +regexpParseErrors(#20411,#20407,"expected '}'") +#20412=@"loc,{#10000},39,4,39,4" +locations_default(#20412,#10000,39,4,39,4) +hasLocation(#20411,#20412) +#20413=* +stmts(#20413,2,#20001,39,"/\xa/;") +#20414=@"loc,{#10000},40,1,40,6" +locations_default(#20414,#10000,40,1,40,6) +hasLocation(#20413,#20414) +stmtContainers(#20413,#20001) +#20415=* +exprs(#20415,5,#20413,0,"/\xa/") +#20416=@"loc,{#10000},40,1,40,5" +locations_default(#20416,#10000,40,1,40,5) +hasLocation(#20415,#20416) +enclosingStmt(#20415,#20413) +exprContainers(#20415,#20001) +literals("/\xa/","/\xa/",#20415) +#20417=* +regexpterm(#20417,15,#20415,0,"\xa") +#20418=@"loc,{#10000},40,2,40,4" +locations_default(#20418,#10000,40,2,40,4) +hasLocation(#20417,#20418) +regexpConstValue(#20417," +") +#20419=* +regexpParseErrors(#20419,#20417,"unexpected end of regular expression") +#20420=@"loc,{#10000},40,5,40,5" +locations_default(#20420,#10000,40,5,40,5) +hasLocation(#20419,#20420) +#20421=* +stmts(#20421,2,#20001,40,"/\c0/;") +#20422=@"loc,{#10000},41,1,41,6" +locations_default(#20422,#10000,41,1,41,6) +hasLocation(#20421,#20422) +stmtContainers(#20421,#20001) +#20423=* +exprs(#20423,5,#20421,0,"/\c0/") +#20424=@"loc,{#10000},41,1,41,5" +locations_default(#20424,#10000,41,1,41,5) +hasLocation(#20423,#20424) +enclosingStmt(#20423,#20421) +exprContainers(#20423,#20001) +literals("/\c0/","/\c0/",#20423) +#20425=* +regexpterm(#20425,19,#20423,0,"\c0") +#20426=@"loc,{#10000},41,2,41,4" +locations_default(#20426,#10000,41,2,41,4) +hasLocation(#20425,#20426) +regexpConstValue(#20425,"") +#20427=* +regexpParseErrors(#20427,#20425,"expected control letter") +#20428=@"loc,{#10000},41,4,41,4" +locations_default(#20428,#10000,41,4,41,4) +hasLocation(#20427,#20428) +#20429=* +stmts(#20429,2,#20001,41,"/[]/;") +#20430=@"loc,{#10000},42,1,42,5" +locations_default(#20430,#10000,42,1,42,5) +hasLocation(#20429,#20430) +stmtContainers(#20429,#20001) +#20431=* +exprs(#20431,5,#20429,0,"/[]/") +#20432=@"loc,{#10000},42,1,42,4" +locations_default(#20432,#10000,42,1,42,4) +hasLocation(#20431,#20432) +enclosingStmt(#20431,#20429) +exprContainers(#20431,#20001) +literals("/[]/","/[]/",#20431) +#20433=* +regexpterm(#20433,23,#20431,0,"[]") +#20434=@"loc,{#10000},42,2,42,3" +locations_default(#20434,#10000,42,2,42,3) +hasLocation(#20433,#20434) +#20435=* +stmts(#20435,2,#20001,42,"/[^]/;") +#20436=@"loc,{#10000},43,1,43,6" +locations_default(#20436,#10000,43,1,43,6) +hasLocation(#20435,#20436) +stmtContainers(#20435,#20001) +#20437=* +exprs(#20437,5,#20435,0,"/[^]/") +#20438=@"loc,{#10000},43,1,43,5" +locations_default(#20438,#10000,43,1,43,5) +hasLocation(#20437,#20438) +enclosingStmt(#20437,#20435) +exprContainers(#20437,#20001) +literals("/[^]/","/[^]/",#20437) +#20439=* +regexpterm(#20439,23,#20437,0,"[^]") +#20440=@"loc,{#10000},43,2,43,4" +locations_default(#20440,#10000,43,2,43,4) +hasLocation(#20439,#20440) +isInverted(#20439) +#20441=* +stmts(#20441,2,#20001,43,"//;") +#20442=@"loc,{#10000},44,1,44,60" +locations_default(#20442,#10000,44,1,44,60) +hasLocation(#20441,#20442) +stmtContainers(#20441,#20001) +#20443=* +exprs(#20443,5,#20441,0,"//") +#20444=@"loc,{#10000},44,1,44,59" +locations_default(#20444,#10000,44,1,44,59) +hasLocation(#20443,#20444) +enclosingStmt(#20443,#20441) +exprContainers(#20443,#20001) +literals("/]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/","/]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/",#20443) +#20445=* +regexpterm(#20445,1,#20443,0,"]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>") +#20446=@"loc,{#10000},44,2,44,58" +locations_default(#20446,#10000,44,2,44,58) +hasLocation(#20445,#20446) +#20447=* +regexpterm(#20447,14,#20445,0,"<") +#20448=@"loc,{#10000},44,2,44,2" +locations_default(#20448,#10000,44,2,44,2) +hasLocation(#20447,#20448) +regexpConstValue(#20447,"<") +#20449=* +regexpterm(#20449,14,#20445,1,"t") +#20450=@"loc,{#10000},44,3,44,3" +locations_default(#20450,#10000,44,3,44,3) +hasLocation(#20449,#20450) +regexpConstValue(#20449,"t") +#20451=* +regexpterm(#20451,14,#20445,2,"p") +#20452=@"loc,{#10000},44,4,44,4" +locations_default(#20452,#10000,44,4,44,4) +hasLocation(#20451,#20452) +regexpConstValue(#20451,"p") +#20453=* +regexpterm(#20453,14,#20445,3,"l") +#20454=@"loc,{#10000},44,5,44,5" +locations_default(#20454,#10000,44,5,44,5) +hasLocation(#20453,#20454) +regexpConstValue(#20453,"l") +#20455=* +regexpterm(#20455,4,#20445,4,"\b") +#20456=@"loc,{#10000},44,6,44,7" +locations_default(#20456,#10000,44,6,44,7) +hasLocation(#20455,#20456) +#20457=* +regexpterm(#20457,8,#20445,5,"[^>]*") +#20458=@"loc,{#10000},44,8,44,12" +locations_default(#20458,#10000,44,8,44,12) +hasLocation(#20457,#20458) +isGreedy(#20457) +#20459=* +regexpterm(#20459,23,#20457,0,"[^>]") +#20460=@"loc,{#10000},44,8,44,11" +locations_default(#20460,#10000,44,8,44,11) +hasLocation(#20459,#20460) +isInverted(#20459) +#20461=* +regexpterm(#20461,14,#20459,0,">") +#20462=@"loc,{#10000},44,10,44,10" +locations_default(#20462,#10000,44,10,44,10) +hasLocation(#20461,#20462) +regexpConstValue(#20461,">") +#20463=* +regexpterm(#20463,14,#20445,6,">") +#20464=@"loc,{#10000},44,13,44,13" +locations_default(#20464,#10000,44,13,44,13) +hasLocation(#20463,#20464) +regexpConstValue(#20463,">") +#20465=* +regexpterm(#20465,13,#20445,7,"((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)") +#20466=@"loc,{#10000},44,14,44,51" +locations_default(#20466,#10000,44,14,44,51) +hasLocation(#20465,#20466) +isCapture(#20465,1) +#20467=* +regexpterm(#20467,8,#20465,0,"(?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?") +#20468=@"loc,{#10000},44,15,44,50" +locations_default(#20468,#10000,44,15,44,50) +hasLocation(#20467,#20468) +#20469=* +regexpterm(#20469,13,#20467,0,"(?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))") +#20470=@"loc,{#10000},44,15,44,48" +locations_default(#20470,#10000,44,15,44,48) +hasLocation(#20469,#20470) +#20471=* +regexpterm(#20471,0,#20469,0,"(?=([^<]+))\2|<(?!tpl\b[^>]*>)") +#20472=@"loc,{#10000},44,18,44,47" +locations_default(#20472,#10000,44,18,44,47) +hasLocation(#20471,#20472) +#20473=* +regexpterm(#20473,1,#20471,0,"(?=([^<]+))\2") +#20474=@"loc,{#10000},44,18,44,30" +locations_default(#20474,#10000,44,18,44,30) +hasLocation(#20473,#20474) +#20475=* +regexpterm(#20475,6,#20473,0,"(?=([^<]+))") +#20476=@"loc,{#10000},44,18,44,28" +locations_default(#20476,#10000,44,18,44,28) +hasLocation(#20475,#20476) +#20477=* +regexpterm(#20477,13,#20475,0,"([^<]+)") +#20478=@"loc,{#10000},44,21,44,27" +locations_default(#20478,#10000,44,21,44,27) +hasLocation(#20477,#20478) +isCapture(#20477,2) +#20479=* +regexpterm(#20479,9,#20477,0,"[^<]+") +#20480=@"loc,{#10000},44,22,44,26" +locations_default(#20480,#10000,44,22,44,26) +hasLocation(#20479,#20480) +isGreedy(#20479) +#20481=* +regexpterm(#20481,23,#20479,0,"[^<]") +#20482=@"loc,{#10000},44,22,44,25" +locations_default(#20482,#10000,44,22,44,25) +hasLocation(#20481,#20482) +isInverted(#20481) +#20483=* +regexpterm(#20483,14,#20481,0,"<") +#20484=@"loc,{#10000},44,24,44,24" +locations_default(#20484,#10000,44,24,44,24) +hasLocation(#20483,#20484) +regexpConstValue(#20483,"<") +#20485=* +regexpterm(#20485,22,#20473,1,"\2") +#20486=@"loc,{#10000},44,29,44,30" +locations_default(#20486,#10000,44,29,44,30) +hasLocation(#20485,#20486) +backref(#20485,2) +#20487=* +regexpterm(#20487,1,#20471,1,"<(?!tpl\b[^>]*>)") +#20488=@"loc,{#10000},44,32,44,47" +locations_default(#20488,#10000,44,32,44,47) +hasLocation(#20487,#20488) +#20489=* +regexpterm(#20489,14,#20487,0,"<") +#20490=@"loc,{#10000},44,32,44,32" +locations_default(#20490,#10000,44,32,44,32) +hasLocation(#20489,#20490) +regexpConstValue(#20489,"<") +#20491=* +regexpterm(#20491,7,#20487,1,"(?!tpl\b[^>]*>)") +#20492=@"loc,{#10000},44,33,44,47" +locations_default(#20492,#10000,44,33,44,47) +hasLocation(#20491,#20492) +#20493=* +regexpterm(#20493,1,#20491,0,"tpl\b[^>]*>") +#20494=@"loc,{#10000},44,36,44,46" +locations_default(#20494,#10000,44,36,44,46) +hasLocation(#20493,#20494) +#20495=* +regexpterm(#20495,14,#20493,0,"t") +#20496=@"loc,{#10000},44,36,44,36" +locations_default(#20496,#10000,44,36,44,36) +hasLocation(#20495,#20496) +regexpConstValue(#20495,"t") +#20497=* +regexpterm(#20497,14,#20493,1,"p") +#20498=@"loc,{#10000},44,37,44,37" +locations_default(#20498,#10000,44,37,44,37) +hasLocation(#20497,#20498) +regexpConstValue(#20497,"p") +#20499=* +regexpterm(#20499,14,#20493,2,"l") +#20500=@"loc,{#10000},44,38,44,38" +locations_default(#20500,#10000,44,38,44,38) +hasLocation(#20499,#20500) +regexpConstValue(#20499,"l") +#20501=* +regexpterm(#20501,4,#20493,3,"\b") +#20502=@"loc,{#10000},44,39,44,40" +locations_default(#20502,#10000,44,39,44,40) +hasLocation(#20501,#20502) +#20503=* +regexpterm(#20503,8,#20493,4,"[^>]*") +#20504=@"loc,{#10000},44,41,44,45" +locations_default(#20504,#10000,44,41,44,45) +hasLocation(#20503,#20504) +isGreedy(#20503) +#20505=* +regexpterm(#20505,23,#20503,0,"[^>]") +#20506=@"loc,{#10000},44,41,44,44" +locations_default(#20506,#10000,44,41,44,44) +hasLocation(#20505,#20506) +isInverted(#20505) +#20507=* +regexpterm(#20507,14,#20505,0,">") +#20508=@"loc,{#10000},44,43,44,43" +locations_default(#20508,#10000,44,43,44,43) +hasLocation(#20507,#20508) +regexpConstValue(#20507,">") +#20509=* +regexpterm(#20509,14,#20493,5,">") +#20510=@"loc,{#10000},44,46,44,46" +locations_default(#20510,#10000,44,46,44,46) +hasLocation(#20509,#20510) +regexpConstValue(#20509,">") +#20511=* +regexpterm(#20511,14,#20445,8,"<") +#20512=@"loc,{#10000},44,52,44,52" +locations_default(#20512,#10000,44,52,44,52) +hasLocation(#20511,#20512) +regexpConstValue(#20511,"<") +#20513=* +regexpterm(#20513,21,#20445,9,"\/") +#20514=@"loc,{#10000},44,53,44,54" +locations_default(#20514,#10000,44,53,44,54) +hasLocation(#20513,#20514) +regexpConstValue(#20513,"/") +#20515=* +regexpterm(#20515,14,#20445,10,"t") +#20516=@"loc,{#10000},44,55,44,55" +locations_default(#20516,#10000,44,55,44,55) +hasLocation(#20515,#20516) +regexpConstValue(#20515,"t") +#20517=* +regexpterm(#20517,14,#20445,11,"p") +#20518=@"loc,{#10000},44,56,44,56" +locations_default(#20518,#10000,44,56,44,56) +hasLocation(#20517,#20518) +regexpConstValue(#20517,"p") +#20519=* +regexpterm(#20519,14,#20445,12,"l") +#20520=@"loc,{#10000},44,57,44,57" +locations_default(#20520,#10000,44,57,44,57) +hasLocation(#20519,#20520) +regexpConstValue(#20519,"l") +#20521=* +regexpterm(#20521,14,#20445,13,">") +#20522=@"loc,{#10000},44,58,44,58" +locations_default(#20522,#10000,44,58,44,58) +hasLocation(#20521,#20522) +regexpConstValue(#20521,">") +#20523=* +lines(#20523,#20001,"/t/;"," +") +hasLocation(#20523,#20004) +#20524=* +lines(#20524,#20001,"/foo|bar/;"," +") +hasLocation(#20524,#20010) +#20525=* +lines(#20525,#20001,"/(?:)/;"," +") +hasLocation(#20525,#20032) +#20526=* +lines(#20526,#20001,"/^abc$/;"," +") +hasLocation(#20526,#20040) +#20527=* +lines(#20527,#20001,"/\bx\b/;"," +") +hasLocation(#20527,#20056) +#20528=* +lines(#20528,#20001,"/\bx\B/;"," +") +hasLocation(#20528,#20068) +#20529=* +lines(#20529,#20001,"/x(?=y)/;"," +") +hasLocation(#20529,#20080) +#20530=* +lines(#20530,#20001,"/x(?!z)/;"," +") +hasLocation(#20530,#20092) +#20531=* +lines(#20531,#20001,"/a*/;"," +") +hasLocation(#20531,#20104) +#20532=* +lines(#20532,#20001,"/a*?/;"," +") +hasLocation(#20532,#20112) +#20533=* +lines(#20533,#20001,"/a+/;"," +") +hasLocation(#20533,#20120) +#20534=* +lines(#20534,#20001,"/a+?/;"," +") +hasLocation(#20534,#20128) +#20535=* +lines(#20535,#20001,"/a?/;"," +") +hasLocation(#20535,#20136) +#20536=* +lines(#20536,#20001,"/a??/;"," +") +hasLocation(#20536,#20144) +#20537=* +lines(#20537,#20001,"/a{1}/;"," +") +hasLocation(#20537,#20152) +#20538=* +lines(#20538,#20001,"/a{1,}/;"," +") +hasLocation(#20538,#20160) +#20539=* +lines(#20539,#20001,"/a{1,2}/;"," +") +hasLocation(#20539,#20168) +#20540=* +lines(#20540,#20001,"/a{1}?/;"," +") +hasLocation(#20540,#20176) +#20541=* +lines(#20541,#20001,"/a{1,}?/;"," +") +hasLocation(#20541,#20184) +#20542=* +lines(#20542,#20001,"/a{1,2}?/;"," +") +hasLocation(#20542,#20192) +#20543=* +lines(#20543,#20001,"/./;"," +") +hasLocation(#20543,#20200) +#20544=* +lines(#20544,#20001,"/(abc)/;"," +") +hasLocation(#20544,#20206) +#20545=* +lines(#20545,#20001,"/(?:abc)/;"," +") +hasLocation(#20545,#20220) +#20546=* +lines(#20546,#20001,"/\x0a/;"," +") +hasLocation(#20546,#20234) +#20547=* +lines(#20547,#20001,"/\u000a/;"," +") +hasLocation(#20547,#20240) +#20548=* +lines(#20548,#20001,"/\10/;"," +") +hasLocation(#20548,#20246) +#20549=* +lines(#20549,#20001,"/\t\n\r\f\v/;"," +") +hasLocation(#20549,#20252) +#20550=* +lines(#20550,#20001,"/\ca\cN/;"," +") +hasLocation(#20550,#20268) +#20551=* +lines(#20551,#20001,"/\w\S/;"," +") +hasLocation(#20551,#20278) +#20552=* +lines(#20552,#20001,"/\\/;"," +") +hasLocation(#20552,#20288) +#20553=* +lines(#20553,#20001,"/[abc]/;"," +") +hasLocation(#20553,#20294) +#20554=* +lines(#20554,#20001,"/[a-z]/;"," +") +hasLocation(#20554,#20306) +#20555=* +lines(#20555,#20001,"/[a-zA-Z]/;"," +") +hasLocation(#20555,#20318) +#20556=* +lines(#20556,#20001,"/[-a-z]/;"," +") +hasLocation(#20556,#20336) +#20557=* +lines(#20557,#20001,"/[^a-z]/;"," +") +hasLocation(#20557,#20350) +#20558=* +lines(#20558,#20001,"/[a\b\x0c]/;"," +") +hasLocation(#20558,#20362) +#20559=* +lines(#20559,#20001,"/a{/;"," +") +hasLocation(#20559,#20374) +#20560=* +lines(#20560,#20001,"/a{b}/;"," +") +hasLocation(#20560,#20386) +#20561=* +lines(#20561,#20001,"/a{2/;"," +") +hasLocation(#20561,#20404) +#20562=* +lines(#20562,#20001,"/\xa/;"," +") +hasLocation(#20562,#20414) +#20563=* +lines(#20563,#20001,"/\c0/;"," +") +hasLocation(#20563,#20422) +#20564=* +lines(#20564,#20001,"/[]/;"," +") +hasLocation(#20564,#20430) +#20565=* +lines(#20565,#20001,"/[^]/;"," +") +hasLocation(#20565,#20436) +#20566=* +lines(#20566,#20001,"/]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/;","") +hasLocation(#20566,#20442) +numlines(#20001,44,44,0) +#20567=* +tokeninfo(#20567,5,#20001,0,"/t/") +hasLocation(#20567,#20006) +#20568=* +tokeninfo(#20568,8,#20001,1,";") +#20569=@"loc,{#10000},1,4,1,4" +locations_default(#20569,#10000,1,4,1,4) +hasLocation(#20568,#20569) +#20570=* +tokeninfo(#20570,5,#20001,2,"/foo|bar/") +hasLocation(#20570,#20012) +#20571=* +tokeninfo(#20571,8,#20001,3,";") +#20572=@"loc,{#10000},2,10,2,10" +locations_default(#20572,#10000,2,10,2,10) +hasLocation(#20571,#20572) +#20573=* +tokeninfo(#20573,5,#20001,4,"/(?:)/") +hasLocation(#20573,#20034) +#20574=* +tokeninfo(#20574,8,#20001,5,";") +#20575=@"loc,{#10000},3,7,3,7" +locations_default(#20575,#10000,3,7,3,7) +hasLocation(#20574,#20575) +#20576=* +tokeninfo(#20576,5,#20001,6,"/^abc$/") +hasLocation(#20576,#20042) +#20577=* +tokeninfo(#20577,8,#20001,7,";") +#20578=@"loc,{#10000},4,8,4,8" +locations_default(#20578,#10000,4,8,4,8) +hasLocation(#20577,#20578) +#20579=* +tokeninfo(#20579,5,#20001,8,"/\bx\b/") +hasLocation(#20579,#20058) +#20580=* +tokeninfo(#20580,8,#20001,9,";") +#20581=@"loc,{#10000},5,8,5,8" +locations_default(#20581,#10000,5,8,5,8) +hasLocation(#20580,#20581) +#20582=* +tokeninfo(#20582,5,#20001,10,"/\bx\B/") +hasLocation(#20582,#20070) +#20583=* +tokeninfo(#20583,8,#20001,11,";") +#20584=@"loc,{#10000},6,8,6,8" +locations_default(#20584,#10000,6,8,6,8) +hasLocation(#20583,#20584) +#20585=* +tokeninfo(#20585,5,#20001,12,"/x(?=y)/") +hasLocation(#20585,#20082) +#20586=* +tokeninfo(#20586,8,#20001,13,";") +#20587=@"loc,{#10000},7,9,7,9" +locations_default(#20587,#10000,7,9,7,9) +hasLocation(#20586,#20587) +#20588=* +tokeninfo(#20588,5,#20001,14,"/x(?!z)/") +hasLocation(#20588,#20094) +#20589=* +tokeninfo(#20589,8,#20001,15,";") +#20590=@"loc,{#10000},8,9,8,9" +locations_default(#20590,#10000,8,9,8,9) +hasLocation(#20589,#20590) +#20591=* +tokeninfo(#20591,5,#20001,16,"/a*/") +hasLocation(#20591,#20106) +#20592=* +tokeninfo(#20592,8,#20001,17,";") +#20593=@"loc,{#10000},9,5,9,5" +locations_default(#20593,#10000,9,5,9,5) +hasLocation(#20592,#20593) +#20594=* +tokeninfo(#20594,5,#20001,18,"/a*?/") +hasLocation(#20594,#20114) +#20595=* +tokeninfo(#20595,8,#20001,19,";") +#20596=@"loc,{#10000},10,6,10,6" +locations_default(#20596,#10000,10,6,10,6) +hasLocation(#20595,#20596) +#20597=* +tokeninfo(#20597,5,#20001,20,"/a+/") +hasLocation(#20597,#20122) +#20598=* +tokeninfo(#20598,8,#20001,21,";") +#20599=@"loc,{#10000},11,5,11,5" +locations_default(#20599,#10000,11,5,11,5) +hasLocation(#20598,#20599) +#20600=* +tokeninfo(#20600,5,#20001,22,"/a+?/") +hasLocation(#20600,#20130) +#20601=* +tokeninfo(#20601,8,#20001,23,";") +#20602=@"loc,{#10000},12,6,12,6" +locations_default(#20602,#10000,12,6,12,6) +hasLocation(#20601,#20602) +#20603=* +tokeninfo(#20603,5,#20001,24,"/a?/") +hasLocation(#20603,#20138) +#20604=* +tokeninfo(#20604,8,#20001,25,";") +#20605=@"loc,{#10000},13,5,13,5" +locations_default(#20605,#10000,13,5,13,5) +hasLocation(#20604,#20605) +#20606=* +tokeninfo(#20606,5,#20001,26,"/a??/") +hasLocation(#20606,#20146) +#20607=* +tokeninfo(#20607,8,#20001,27,";") +#20608=@"loc,{#10000},14,6,14,6" +locations_default(#20608,#10000,14,6,14,6) +hasLocation(#20607,#20608) +#20609=* +tokeninfo(#20609,5,#20001,28,"/a{1}/") +hasLocation(#20609,#20154) +#20610=* +tokeninfo(#20610,8,#20001,29,";") +#20611=@"loc,{#10000},15,7,15,7" +locations_default(#20611,#10000,15,7,15,7) +hasLocation(#20610,#20611) +#20612=* +tokeninfo(#20612,5,#20001,30,"/a{1,}/") +hasLocation(#20612,#20162) +#20613=* +tokeninfo(#20613,8,#20001,31,";") +#20614=@"loc,{#10000},16,8,16,8" +locations_default(#20614,#10000,16,8,16,8) +hasLocation(#20613,#20614) +#20615=* +tokeninfo(#20615,5,#20001,32,"/a{1,2}/") +hasLocation(#20615,#20170) +#20616=* +tokeninfo(#20616,8,#20001,33,";") +#20617=@"loc,{#10000},17,9,17,9" +locations_default(#20617,#10000,17,9,17,9) +hasLocation(#20616,#20617) +#20618=* +tokeninfo(#20618,5,#20001,34,"/a{1}?/") +hasLocation(#20618,#20178) +#20619=* +tokeninfo(#20619,8,#20001,35,";") +#20620=@"loc,{#10000},18,8,18,8" +locations_default(#20620,#10000,18,8,18,8) +hasLocation(#20619,#20620) +#20621=* +tokeninfo(#20621,5,#20001,36,"/a{1,}?/") +hasLocation(#20621,#20186) +#20622=* +tokeninfo(#20622,8,#20001,37,";") +#20623=@"loc,{#10000},19,9,19,9" +locations_default(#20623,#10000,19,9,19,9) +hasLocation(#20622,#20623) +#20624=* +tokeninfo(#20624,5,#20001,38,"/a{1,2}?/") +hasLocation(#20624,#20194) +#20625=* +tokeninfo(#20625,8,#20001,39,";") +#20626=@"loc,{#10000},20,10,20,10" +locations_default(#20626,#10000,20,10,20,10) +hasLocation(#20625,#20626) +#20627=* +tokeninfo(#20627,5,#20001,40,"/./") +hasLocation(#20627,#20202) +#20628=* +tokeninfo(#20628,8,#20001,41,";") +#20629=@"loc,{#10000},21,4,21,4" +locations_default(#20629,#10000,21,4,21,4) +hasLocation(#20628,#20629) +#20630=* +tokeninfo(#20630,5,#20001,42,"/(abc)/") +hasLocation(#20630,#20208) +#20631=* +tokeninfo(#20631,8,#20001,43,";") +#20632=@"loc,{#10000},22,8,22,8" +locations_default(#20632,#10000,22,8,22,8) +hasLocation(#20631,#20632) +#20633=* +tokeninfo(#20633,5,#20001,44,"/(?:abc)/") +hasLocation(#20633,#20222) +#20634=* +tokeninfo(#20634,8,#20001,45,";") +#20635=@"loc,{#10000},23,10,23,10" +locations_default(#20635,#10000,23,10,23,10) +hasLocation(#20634,#20635) +#20636=* +tokeninfo(#20636,5,#20001,46,"/\x0a/") +hasLocation(#20636,#20236) +#20637=* +tokeninfo(#20637,8,#20001,47,";") +#20638=@"loc,{#10000},24,7,24,7" +locations_default(#20638,#10000,24,7,24,7) +hasLocation(#20637,#20638) +#20639=* +tokeninfo(#20639,5,#20001,48,"/\u000a/") +hasLocation(#20639,#20242) +#20640=* +tokeninfo(#20640,8,#20001,49,";") +#20641=@"loc,{#10000},25,9,25,9" +locations_default(#20641,#10000,25,9,25,9) +hasLocation(#20640,#20641) +#20642=* +tokeninfo(#20642,5,#20001,50,"/\10/") +hasLocation(#20642,#20248) +#20643=* +tokeninfo(#20643,8,#20001,51,";") +#20644=@"loc,{#10000},26,6,26,6" +locations_default(#20644,#10000,26,6,26,6) +hasLocation(#20643,#20644) +#20645=* +tokeninfo(#20645,5,#20001,52,"/\t\n\r\f\v/") +hasLocation(#20645,#20254) +#20646=* +tokeninfo(#20646,8,#20001,53,";") +#20647=@"loc,{#10000},27,13,27,13" +locations_default(#20647,#10000,27,13,27,13) +hasLocation(#20646,#20647) +#20648=* +tokeninfo(#20648,5,#20001,54,"/\ca\cN/") +hasLocation(#20648,#20270) +#20649=* +tokeninfo(#20649,8,#20001,55,";") +#20650=@"loc,{#10000},28,9,28,9" +locations_default(#20650,#10000,28,9,28,9) +hasLocation(#20649,#20650) +#20651=* +tokeninfo(#20651,5,#20001,56,"/\w\S/") +hasLocation(#20651,#20280) +#20652=* +tokeninfo(#20652,8,#20001,57,";") +#20653=@"loc,{#10000},29,7,29,7" +locations_default(#20653,#10000,29,7,29,7) +hasLocation(#20652,#20653) +#20654=* +tokeninfo(#20654,5,#20001,58,"/\\/") +hasLocation(#20654,#20290) +#20655=* +tokeninfo(#20655,8,#20001,59,";") +#20656=@"loc,{#10000},30,5,30,5" +locations_default(#20656,#10000,30,5,30,5) +hasLocation(#20655,#20656) +#20657=* +tokeninfo(#20657,5,#20001,60,"/[abc]/") +hasLocation(#20657,#20296) +#20658=* +tokeninfo(#20658,8,#20001,61,";") +#20659=@"loc,{#10000},31,8,31,8" +locations_default(#20659,#10000,31,8,31,8) +hasLocation(#20658,#20659) +#20660=* +tokeninfo(#20660,5,#20001,62,"/[a-z]/") +hasLocation(#20660,#20308) +#20661=* +tokeninfo(#20661,8,#20001,63,";") +#20662=@"loc,{#10000},32,8,32,8" +locations_default(#20662,#10000,32,8,32,8) +hasLocation(#20661,#20662) +#20663=* +tokeninfo(#20663,5,#20001,64,"/[a-zA-Z]/") +hasLocation(#20663,#20320) +#20664=* +tokeninfo(#20664,8,#20001,65,";") +#20665=@"loc,{#10000},33,11,33,11" +locations_default(#20665,#10000,33,11,33,11) +hasLocation(#20664,#20665) +#20666=* +tokeninfo(#20666,5,#20001,66,"/[-a-z]/") +hasLocation(#20666,#20338) +#20667=* +tokeninfo(#20667,8,#20001,67,";") +#20668=@"loc,{#10000},34,9,34,9" +locations_default(#20668,#10000,34,9,34,9) +hasLocation(#20667,#20668) +#20669=* +tokeninfo(#20669,5,#20001,68,"/[^a-z]/") +hasLocation(#20669,#20352) +#20670=* +tokeninfo(#20670,8,#20001,69,";") +#20671=@"loc,{#10000},35,9,35,9" +locations_default(#20671,#10000,35,9,35,9) +hasLocation(#20670,#20671) +#20672=* +tokeninfo(#20672,5,#20001,70,"/[a\b\x0c]/") +hasLocation(#20672,#20364) +#20673=* +tokeninfo(#20673,8,#20001,71,";") +#20674=@"loc,{#10000},36,12,36,12" +locations_default(#20674,#10000,36,12,36,12) +hasLocation(#20673,#20674) +#20675=* +tokeninfo(#20675,5,#20001,72,"/a{/") +hasLocation(#20675,#20376) +#20676=* +tokeninfo(#20676,8,#20001,73,";") +#20677=@"loc,{#10000},37,5,37,5" +locations_default(#20677,#10000,37,5,37,5) +hasLocation(#20676,#20677) +#20678=* +tokeninfo(#20678,5,#20001,74,"/a{b}/") +hasLocation(#20678,#20388) +#20679=* +tokeninfo(#20679,8,#20001,75,";") +#20680=@"loc,{#10000},38,7,38,7" +locations_default(#20680,#10000,38,7,38,7) +hasLocation(#20679,#20680) +#20681=* +tokeninfo(#20681,5,#20001,76,"/a{2/") +hasLocation(#20681,#20406) +#20682=* +tokeninfo(#20682,8,#20001,77,";") +#20683=@"loc,{#10000},39,6,39,6" +locations_default(#20683,#10000,39,6,39,6) +hasLocation(#20682,#20683) +#20684=* +tokeninfo(#20684,5,#20001,78,"/\xa/") +hasLocation(#20684,#20416) +#20685=* +tokeninfo(#20685,8,#20001,79,";") +#20686=@"loc,{#10000},40,6,40,6" +locations_default(#20686,#10000,40,6,40,6) +hasLocation(#20685,#20686) +#20687=* +tokeninfo(#20687,5,#20001,80,"/\c0/") +hasLocation(#20687,#20424) +#20688=* +tokeninfo(#20688,8,#20001,81,";") +#20689=@"loc,{#10000},41,6,41,6" +locations_default(#20689,#10000,41,6,41,6) +hasLocation(#20688,#20689) +#20690=* +tokeninfo(#20690,5,#20001,82,"/[]/") +hasLocation(#20690,#20432) +#20691=* +tokeninfo(#20691,8,#20001,83,";") +#20692=@"loc,{#10000},42,5,42,5" +locations_default(#20692,#10000,42,5,42,5) +hasLocation(#20691,#20692) +#20693=* +tokeninfo(#20693,5,#20001,84,"/[^]/") +hasLocation(#20693,#20438) +#20694=* +tokeninfo(#20694,8,#20001,85,";") +#20695=@"loc,{#10000},43,6,43,6" +locations_default(#20695,#10000,43,6,43,6) +hasLocation(#20694,#20695) +#20696=* +tokeninfo(#20696,5,#20001,86,"/]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/") +hasLocation(#20696,#20444) +#20697=* +tokeninfo(#20697,8,#20001,87,";") +#20698=@"loc,{#10000},44,60,44,60" +locations_default(#20698,#10000,44,60,44,60) +hasLocation(#20697,#20698) +#20699=* +tokeninfo(#20699,0,#20001,88,"") +#20700=@"loc,{#10000},44,61,44,60" +locations_default(#20700,#10000,44,61,44,60) +hasLocation(#20699,#20700) +#20701=* +entry_cfg_node(#20701,#20001) +#20702=@"loc,{#10000},1,1,1,0" +locations_default(#20702,#10000,1,1,1,0) +hasLocation(#20701,#20702) +#20703=* +exit_cfg_node(#20703,#20001) +hasLocation(#20703,#20700) +successor(#20441,#20443) +successor(#20443,#20703) +successor(#20435,#20437) +successor(#20437,#20441) +successor(#20429,#20431) +successor(#20431,#20435) +successor(#20421,#20423) +successor(#20423,#20429) +successor(#20413,#20415) +successor(#20415,#20421) +successor(#20403,#20405) +successor(#20405,#20413) +successor(#20385,#20387) +successor(#20387,#20403) +successor(#20373,#20375) +successor(#20375,#20385) +successor(#20361,#20363) +successor(#20363,#20373) +successor(#20349,#20351) +successor(#20351,#20361) +successor(#20335,#20337) +successor(#20337,#20349) +successor(#20317,#20319) +successor(#20319,#20335) +successor(#20305,#20307) +successor(#20307,#20317) +successor(#20293,#20295) +successor(#20295,#20305) +successor(#20287,#20289) +successor(#20289,#20293) +successor(#20277,#20279) +successor(#20279,#20287) +successor(#20267,#20269) +successor(#20269,#20277) +successor(#20251,#20253) +successor(#20253,#20267) +successor(#20245,#20247) +successor(#20247,#20251) +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(#20701,#20003) +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 new file mode 100644 index 00000000000..9ab29f7463c --- /dev/null +++ b/javascript/extractor/tests/exprs/output/trap/unary.js.trap @@ -0,0 +1,365 @@ +#10000=@"/unary.js;sourcefile" +files(#10000,"/unary.js","unary","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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;"," +") +hasLocation(#20052,#20004) +#20053=* +lines(#20053,#20001,"+42;"," +") +hasLocation(#20053,#20010) +#20054=* +lines(#20054,#20001,"!true;"," +") +hasLocation(#20054,#20016) +#20055=* +lines(#20055,#20001,"~2;"," +") +hasLocation(#20055,#20022) +#20056=* +lines(#20056,#20001,"typeof Object;"," +") +hasLocation(#20056,#20028) +#20057=* +lines(#20057,#20001,"void(0);"," +") +hasLocation(#20057,#20035) +#20058=* +lines(#20058,#20001,"delete Object.prototype;","") +hasLocation(#20058,#20043) +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) +#20062=* +tokeninfo(#20062,8,#20001,2,";") +#20063=@"loc,{#10000},1,4,1,4" +locations_default(#20063,#10000,1,4,1,4) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,8,#20001,3,"+") +#20065=@"loc,{#10000},2,1,2,1" +locations_default(#20065,#10000,2,1,2,1) +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) +#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) +#20072=* +tokeninfo(#20072,8,#20001,8,";") +#20073=@"loc,{#10000},3,6,3,6" +locations_default(#20073,#10000,3,6,3,6) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,8,#20001,9,"~") +#20075=@"loc,{#10000},4,1,4,1" +locations_default(#20075,#10000,4,1,4,1) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,3,#20001,10,"2") +hasLocation(#20076,#20026) +#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) +#20081=* +tokeninfo(#20081,6,#20001,13,"Object") +hasLocation(#20081,#20032) +#20082=* +tokeninfo(#20082,8,#20001,14,";") +#20083=@"loc,{#10000},5,14,5,14" +locations_default(#20083,#10000,5,14,5,14) +hasLocation(#20082,#20083) +#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) +#20086=* +tokeninfo(#20086,8,#20001,16,"(") +#20087=@"loc,{#10000},6,5,6,5" +locations_default(#20087,#10000,6,5,6,5) +hasLocation(#20086,#20087) +#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) +#20091=* +tokeninfo(#20091,8,#20001,19,";") +#20092=@"loc,{#10000},6,8,6,8" +locations_default(#20092,#10000,6,8,6,8) +hasLocation(#20091,#20092) +#20093=* +tokeninfo(#20093,7,#20001,20,"delete") +#20094=@"loc,{#10000},7,1,7,6" +locations_default(#20094,#10000,7,1,7,6) +hasLocation(#20093,#20094) +#20095=* +tokeninfo(#20095,6,#20001,21,"Object") +hasLocation(#20095,#20049) +#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) +#20099=* +tokeninfo(#20099,8,#20001,24,";") +#20100=@"loc,{#10000},7,24,7,24" +locations_default(#20100,#10000,7,24,7,24) +hasLocation(#20099,#20100) +#20101=* +tokeninfo(#20101,0,#20001,25,"") +#20102=@"loc,{#10000},7,25,7,24" +locations_default(#20102,#10000,7,25,7,24) +hasLocation(#20101,#20102) +#20103=* +entry_cfg_node(#20103,#20001) +#20104=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..ea3b22006e9 --- /dev/null +++ b/javascript/extractor/tests/exprs/output/trap/update.js.trap @@ -0,0 +1,204 @@ +#10000=@"/update.js;sourcefile" +files(#10000,"/update.js","update","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,5,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;"," +") +hasLocation(#20029,#20004) +#20030=* +lines(#20030,#20001,"a++;"," +") +hasLocation(#20030,#20011) +#20031=* +lines(#20031,#20001,"--b;"," +") +hasLocation(#20031,#20017) +#20032=* +lines(#20032,#20001,"b--;"," +") +hasLocation(#20032,#20024) +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) +#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) +#20043=* +tokeninfo(#20043,8,#20001,6,"--") +#20044=@"loc,{#10000},3,1,3,2" +locations_default(#20044,#10000,3,1,3,2) +hasLocation(#20043,#20044) +#20045=* +tokeninfo(#20045,6,#20001,7,"b") +hasLocation(#20045,#20021) +#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) +#20049=* +tokeninfo(#20049,8,#20001,10,"--") +#20050=@"loc,{#10000},4,2,4,3" +locations_default(#20050,#10000,4,2,4,3) +hasLocation(#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) +#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,#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) +numlines(#10000,4,4,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/extensions/input/tst.es6 b/javascript/extractor/tests/extensions/input/tst.es6 new file mode 100644 index 00000000000..d21851cafa5 --- /dev/null +++ b/javascript/extractor/tests/extensions/input/tst.es6 @@ -0,0 +1 @@ +console.log("Hello ES6"); diff --git a/javascript/extractor/tests/extensions/input/tst2.es b/javascript/extractor/tests/extensions/input/tst2.es new file mode 100644 index 00000000000..f3365cbe708 --- /dev/null +++ b/javascript/extractor/tests/extensions/input/tst2.es @@ -0,0 +1 @@ +console.log("Hello ES"); diff --git a/javascript/extractor/tests/extensions/output/trap/tst.es6.trap b/javascript/extractor/tests/extensions/output/trap/tst.es6.trap new file mode 100644 index 00000000000..a9654e04dff --- /dev/null +++ b/javascript/extractor/tests/extensions/output/trap/tst.es6.trap @@ -0,0 +1,123 @@ +#10000=@"/tst.es6;sourcefile" +files(#10000,"/tst.es6","tst","es6",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,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"");"," +") +hasLocation(#20017,#20005) +numlines(#20001,1,1,0) +#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) +#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) +#20025=* +tokeninfo(#20025,8,#20001,5,")") +#20026=@"loc,{#10000},1,24,1,24" +locations_default(#20026,#10000,1,24,1,24) +hasLocation(#20025,#20026) +#20027=* +tokeninfo(#20027,8,#20001,6,";") +#20028=@"loc,{#10000},1,25,1,25" +locations_default(#20028,#10000,1,25,1,25) +hasLocation(#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) +#20031=* +entry_cfg_node(#20031,#20001) +#20032=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..af533ef6a61 --- /dev/null +++ b/javascript/extractor/tests/extensions/output/trap/tst2.es.trap @@ -0,0 +1,123 @@ +#10000=@"/tst2.es;sourcefile" +files(#10000,"/tst2.es","tst2","es",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,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"");"," +") +hasLocation(#20017,#20005) +numlines(#20001,1,1,0) +#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) +#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) +#20025=* +tokeninfo(#20025,8,#20001,5,")") +#20026=@"loc,{#10000},1,23,1,23" +locations_default(#20026,#10000,1,23,1,23) +hasLocation(#20025,#20026) +#20027=* +tokeninfo(#20027,8,#20001,6,";") +#20028=@"loc,{#10000},1,24,1,24" +locations_default(#20028,#10000,1,24,1,24) +hasLocation(#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) +#20031=* +entry_cfg_node(#20031,#20001) +#20032=@"loc,{#10000},1,1,1,0" +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) +numlines(#10000,1,1,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/externs/input/Point.js b/javascript/extractor/tests/externs/input/Point.js new file mode 100644 index 00000000000..0975d986e90 --- /dev/null +++ b/javascript/extractor/tests/externs/input/Point.js @@ -0,0 +1,17 @@ +function Point(x, y) {} + +Point.prototype.move = function(dx, dy) {}; +Point.prototype.obj = {}; +Point.prototype.secret; + +Point.ORIGIN; +Point.foo = function() {}; + +var someGlobal; + +/** @typedef {String} */ +var MyString; + +Point.prototype['final']; + +'use strict'; \ No newline at end of file diff --git a/javascript/extractor/tests/externs/options.json b/javascript/extractor/tests/externs/options.json new file mode 100644 index 00000000000..fe719bb8f33 --- /dev/null +++ b/javascript/extractor/tests/externs/options.json @@ -0,0 +1,3 @@ +{ + "externs": true +} \ No newline at end of file diff --git a/javascript/extractor/tests/externs/output/trap/Point.js.trap b/javascript/extractor/tests/externs/output/trap/Point.js.trap new file mode 100644 index 00000000000..1b79ccca210 --- /dev/null +++ b/javascript/extractor/tests/externs/output/trap/Point.js.trap @@ -0,0 +1,944 @@ +#10000=@"/Point.js;sourcefile" +files(#10000,"/Point.js","Point","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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) +#20006=* +stmts(#20006,17,#20001,0,"functio ... , y) {}") +#20007=@"loc,{#10000},1,1,1,23" +locations_default(#20007,#10000,1,1,1,23) +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) +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) +#20012=* +exprs(#20012,78,#20006,0,"x") +#20013=@"loc,{#10000},1,16,1,16" +locations_default(#20013,#10000,1,16,1,16) +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) +#20018=* +stmts(#20018,1,#20006,-2,"{}") +#20019=@"loc,{#10000},1,22,1,23" +locations_default(#20019,#10000,1,22,1,23) +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) +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) +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) +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) +#20041=* +exprs(#20041,78,#20034,1,"dy") +#20042=@"loc,{#10000},3,37,3,38" +locations_default(#20042,#10000,3,37,3,38) +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) +#20103=* +stmts(#20103,18,#20001,7,"var MyString;") +#20104=@"loc,{#10000},13,1,13,13" +locations_default(#20104,#10000,13,1,13,13) +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) +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) +#20127=* +lines(#20127,#20001,""," +") +#20128=@"loc,{#10000},2,1,2,0" +locations_default(#20128,#10000,2,1,2,0) +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) +#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) +#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) +#20139=* +lines(#20139,#20001,""," +") +#20140=@"loc,{#10000},11,1,11,0" +locations_default(#20140,#10000,11,1,11,0) +hasLocation(#20139,#20140) +#20141=* +lines(#20141,#20001,"/** @typedef {String} */"," +") +hasLocation(#20141,#20125) +#20142=* +lines(#20142,#20001,"var MyString;"," +") +hasLocation(#20142,#20104) +#20143=* +lines(#20143,#20001,""," +") +#20144=@"loc,{#10000},14,1,14,0" +locations_default(#20144,#10000,14,1,14,0) +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) +#20149=* +tokeninfo(#20149,7,#20001,0,"function") +#20150=@"loc,{#10000},1,1,1,8" +locations_default(#20150,#10000,1,1,1,8) +hasLocation(#20149,#20150) +#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) +#20155=* +tokeninfo(#20155,8,#20001,4,",") +#20156=@"loc,{#10000},1,17,1,17" +locations_default(#20156,#10000,1,17,1,17) +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) +#20165=* +tokeninfo(#20165,8,#20001,10,".") +#20166=@"loc,{#10000},3,6,3,6" +locations_default(#20166,#10000,3,6,3,6) +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) +#20171=* +tokeninfo(#20171,8,#20001,14,"=") +#20172=@"loc,{#10000},3,22,3,22" +locations_default(#20172,#10000,3,22,3,22) +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) +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) +#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) +#20183=* +tokeninfo(#20183,8,#20001,21,"{") +#20184=@"loc,{#10000},3,41,3,41" +locations_default(#20184,#10000,3,41,3,41) +hasLocation(#20183,#20184) +#20185=* +tokeninfo(#20185,8,#20001,22,"}") +#20186=@"loc,{#10000},3,42,3,42" +locations_default(#20186,#10000,3,42,3,42) +hasLocation(#20185,#20186) +#20187=* +tokeninfo(#20187,8,#20001,23,";") +#20188=@"loc,{#10000},3,43,3,43" +locations_default(#20188,#10000,3,43,3,43) +hasLocation(#20187,#20188) +#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) +#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) +#20196=* +tokeninfo(#20196,8,#20001,29,"=") +#20197=@"loc,{#10000},4,21,4,21" +locations_default(#20197,#10000,4,21,4,21) +hasLocation(#20196,#20197) +#20198=* +tokeninfo(#20198,8,#20001,30,"{") +#20199=@"loc,{#10000},4,23,4,23" +locations_default(#20199,#10000,4,23,4,23) +hasLocation(#20198,#20199) +#20200=* +tokeninfo(#20200,8,#20001,31,"}") +#20201=@"loc,{#10000},4,24,4,24" +locations_default(#20201,#10000,4,24,4,24) +hasLocation(#20200,#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) +#20205=* +tokeninfo(#20205,8,#20001,34,".") +#20206=@"loc,{#10000},5,6,5,6" +locations_default(#20206,#10000,5,6,5,6) +hasLocation(#20205,#20206) +#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) +#20211=* +tokeninfo(#20211,8,#20001,38,";") +#20212=@"loc,{#10000},5,23,5,23" +locations_default(#20212,#10000,5,23,5,23) +hasLocation(#20211,#20212) +#20213=* +tokeninfo(#20213,6,#20001,39,"Point") +hasLocation(#20213,#20079) +#20214=* +tokeninfo(#20214,8,#20001,40,".") +#20215=@"loc,{#10000},7,6,7,6" +locations_default(#20215,#10000,7,6,7,6) +hasLocation(#20214,#20215) +#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) +#20220=* +tokeninfo(#20220,8,#20001,44,".") +#20221=@"loc,{#10000},8,6,8,6" +locations_default(#20221,#10000,8,6,8,6) +hasLocation(#20220,#20221) +#20222=* +tokeninfo(#20222,6,#20001,45,"foo") +hasLocation(#20222,#20091) +#20223=* +tokeninfo(#20223,8,#20001,46,"=") +#20224=@"loc,{#10000},8,11,8,11" +locations_default(#20224,#10000,8,11,8,11) +hasLocation(#20223,#20224) +#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) +#20231=* +tokeninfo(#20231,8,#20001,50,"{") +#20232=@"loc,{#10000},8,24,8,24" +locations_default(#20232,#10000,8,24,8,24) +hasLocation(#20231,#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) +#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) +#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) +#20244=* +tokeninfo(#20244,6,#20001,57,"MyString") +hasLocation(#20244,#20106) +#20245=* +tokeninfo(#20245,8,#20001,58,";") +#20246=@"loc,{#10000},13,13,13,13" +locations_default(#20246,#10000,13,13,13,13) +hasLocation(#20245,#20246) +#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) +#20251=* +tokeninfo(#20251,8,#20001,62,"[") +#20252=@"loc,{#10000},15,16,15,16" +locations_default(#20252,#10000,15,16,15,16) +hasLocation(#20251,#20252) +#20253=* +tokeninfo(#20253,4,#20001,63,"'final'") +hasLocation(#20253,#20119) +#20254=* +tokeninfo(#20254,8,#20001,64,"]") +#20255=@"loc,{#10000},15,24,15,24" +locations_default(#20255,#10000,15,24,15,24) +hasLocation(#20254,#20255) +#20256=* +tokeninfo(#20256,8,#20001,65,";") +#20257=@"loc,{#10000},15,25,15,25" +locations_default(#20257,#10000,15,25,15,25) +hasLocation(#20256,#20257) +#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) +#20263=* +entry_cfg_node(#20263,#20001) +#20264=@"loc,{#10000},1,1,1,0" +locations_default(#20264,#10000,1,1,1,0) +hasLocation(#20263,#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) +#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) +#20270=* +entry_cfg_node(#20270,#20034) +#20271=@"loc,{#10000},3,24,3,23" +locations_default(#20271,#10000,3,24,3,23) +hasLocation(#20270,#20271) +#20272=* +exit_cfg_node(#20272,#20034) +#20273=@"loc,{#10000},3,43,3,42" +locations_default(#20273,#10000,3,43,3,42) +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) +#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) +#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") +isExterns(#20001) +numlines(#10000,17,10,1) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/input/anonFunctionOptionalParm.js b/javascript/extractor/tests/flow/input/anonFunctionOptionalParm.js new file mode 100644 index 00000000000..dafa42eb242 --- /dev/null +++ b/javascript/extractor/tests/flow/input/anonFunctionOptionalParm.js @@ -0,0 +1 @@ +var f = (x?:int) => {}; diff --git a/javascript/extractor/tests/flow/input/anonFunctionReturnType.js b/javascript/extractor/tests/flow/input/anonFunctionReturnType.js new file mode 100644 index 00000000000..12343b51f53 --- /dev/null +++ b/javascript/extractor/tests/flow/input/anonFunctionReturnType.js @@ -0,0 +1 @@ +var f = (viewable: ViewToken): ?ViewToken => {}; \ No newline at end of file diff --git a/javascript/extractor/tests/flow/input/anonFunctionWithoutParens.js b/javascript/extractor/tests/flow/input/anonFunctionWithoutParens.js new file mode 100644 index 00000000000..f403b49788d --- /dev/null +++ b/javascript/extractor/tests/flow/input/anonFunctionWithoutParens.js @@ -0,0 +1 @@ +export type Callback = (Error => void); \ No newline at end of file diff --git a/javascript/extractor/tests/flow/input/anonIndexer.js b/javascript/extractor/tests/flow/input/anonIndexer.js new file mode 100644 index 00000000000..cddd3c3af04 --- /dev/null +++ b/javascript/extractor/tests/flow/input/anonIndexer.js @@ -0,0 +1 @@ +export type TransformResults = {[string]: TransformResult}; diff --git a/javascript/extractor/tests/flow/input/async.js b/javascript/extractor/tests/flow/input/async.js new file mode 100644 index 00000000000..5c4557761e3 --- /dev/null +++ b/javascript/extractor/tests/flow/input/async.js @@ -0,0 +1 @@ +let f = async() : Promise => await foo(); diff --git a/javascript/extractor/tests/flow/input/atAtIteratorProp.js b/javascript/extractor/tests/flow/input/atAtIteratorProp.js new file mode 100644 index 00000000000..bb86346e287 --- /dev/null +++ b/javascript/extractor/tests/flow/input/atAtIteratorProp.js @@ -0,0 +1,3 @@ +declare class Foo { + @@iterator(): int +} \ No newline at end of file diff --git a/javascript/extractor/tests/flow/input/complexParamTypes.js b/javascript/extractor/tests/flow/input/complexParamTypes.js new file mode 100644 index 00000000000..2428edef9a6 --- /dev/null +++ b/javascript/extractor/tests/flow/input/complexParamTypes.js @@ -0,0 +1 @@ +type Asyncify = ((A, B) => C) => (A, B, Callback) => void \ No newline at end of file diff --git a/javascript/extractor/tests/flow/input/complexParamTypes2.js b/javascript/extractor/tests/flow/input/complexParamTypes2.js new file mode 100644 index 00000000000..4507e7e6cea --- /dev/null +++ b/javascript/extractor/tests/flow/input/complexParamTypes2.js @@ -0,0 +1,3 @@ +type o = { + push(T | Array, void | C): void +} \ No newline at end of file diff --git a/javascript/extractor/tests/flow/input/declareExport.js b/javascript/extractor/tests/flow/input/declareExport.js new file mode 100644 index 00000000000..47c183c6c5e --- /dev/null +++ b/javascript/extractor/tests/flow/input/declareExport.js @@ -0,0 +1,4 @@ +declare export var foo : boolean; +declare export default typeof simpleTextBuffer$TextBuffer; +declare export default marked$Marked; +declare export type ProcessEnv = { }; diff --git a/javascript/extractor/tests/flow/input/declareModuleExports.js b/javascript/extractor/tests/flow/input/declareModuleExports.js new file mode 100644 index 00000000000..36fcc3b70a7 --- /dev/null +++ b/javascript/extractor/tests/flow/input/declareModuleExports.js @@ -0,0 +1,4 @@ +declare module 'foo' { + declare module.exports: { + } +} \ No newline at end of file diff --git a/javascript/extractor/tests/flow/input/exportOpaqueType.js b/javascript/extractor/tests/flow/input/exportOpaqueType.js new file mode 100644 index 00000000000..8a53255a239 --- /dev/null +++ b/javascript/extractor/tests/flow/input/exportOpaqueType.js @@ -0,0 +1 @@ +export opaque type num : number = number; diff --git a/javascript/extractor/tests/flow/input/importType.js b/javascript/extractor/tests/flow/input/importType.js new file mode 100644 index 00000000000..00c1426201f --- /dev/null +++ b/javascript/extractor/tests/flow/input/importType.js @@ -0,0 +1,2 @@ +import { type, type t1, typeof t2 } from 'm'; +import { type t } from 'n'; diff --git a/javascript/extractor/tests/flow/input/methodTypeParams.js b/javascript/extractor/tests/flow/input/methodTypeParams.js new file mode 100644 index 00000000000..2bcc4841ae3 --- /dev/null +++ b/javascript/extractor/tests/flow/input/methodTypeParams.js @@ -0,0 +1,5 @@ +var o = { + id(a : A) { + return a; + } +} \ No newline at end of file diff --git a/javascript/extractor/tests/flow/input/objectTypeSpread.js b/javascript/extractor/tests/flow/input/objectTypeSpread.js new file mode 100644 index 00000000000..955c4c22272 --- /dev/null +++ b/javascript/extractor/tests/flow/input/objectTypeSpread.js @@ -0,0 +1,2 @@ +type A = { x: int }; +type B = { ...A, y: string }; \ No newline at end of file diff --git a/javascript/extractor/tests/flow/input/optParms.js b/javascript/extractor/tests/flow/input/optParms.js new file mode 100644 index 00000000000..75c2e0c78c6 --- /dev/null +++ b/javascript/extractor/tests/flow/input/optParms.js @@ -0,0 +1,2 @@ +let f = (x?) => {}; +let g = (x?, y) => {}; diff --git a/javascript/extractor/tests/flow/input/parmAnonFunctionType.js b/javascript/extractor/tests/flow/input/parmAnonFunctionType.js new file mode 100644 index 00000000000..9f0766f72d5 --- /dev/null +++ b/javascript/extractor/tests/flow/input/parmAnonFunctionType.js @@ -0,0 +1,3 @@ +function f(g: ({y: int}) => void) { + g(42); +} diff --git a/javascript/extractor/tests/flow/input/qualifiedInterface.js b/javascript/extractor/tests/flow/input/qualifiedInterface.js new file mode 100644 index 00000000000..efeffb21bda --- /dev/null +++ b/javascript/extractor/tests/flow/input/qualifiedInterface.js @@ -0,0 +1 @@ +interface I extends J.K {} diff --git a/javascript/extractor/tests/flow/input/tst.js b/javascript/extractor/tests/flow/input/tst.js new file mode 100644 index 00000000000..98615cc6fc8 --- /dev/null +++ b/javascript/extractor/tests/flow/input/tst.js @@ -0,0 +1,22 @@ +type Point = { + x: int, + y: int +} + +class A { + x: T; + m() : Point {} +} + +function f() { + switch(x) { + case (42): + } +} + +@SomeDecorator +type MyPoint = Point + +type T1 = {| bar: string |} + +type T2 = (| "red" | "green" | "blue") diff --git a/javascript/extractor/tests/flow/input/variance.js b/javascript/extractor/tests/flow/input/variance.js new file mode 100644 index 00000000000..eb08b1ff6c3 --- /dev/null +++ b/javascript/extractor/tests/flow/input/variance.js @@ -0,0 +1,7 @@ +export type PackagerAsset = { + +__packager_asset: boolean, +}; + +class Foo { + +x: int +} \ No newline at end of file diff --git a/javascript/extractor/tests/flow/options.json b/javascript/extractor/tests/flow/options.json new file mode 100644 index 00000000000..075583ca1f6 --- /dev/null +++ b/javascript/extractor/tests/flow/options.json @@ -0,0 +1,3 @@ +{ + "experimental": true +} diff --git a/javascript/extractor/tests/flow/output/trap/anonFunctionOptionalParm.js.trap b/javascript/extractor/tests/flow/output/trap/anonFunctionOptionalParm.js.trap new file mode 100644 index 00000000000..dc46a3154a1 --- /dev/null +++ b/javascript/extractor/tests/flow/output/trap/anonFunctionOptionalParm.js.trap @@ -0,0 +1,166 @@ +#10000=@"/anonFunctionOptionalParm.js;sourcefile" +files(#10000,"/anonFunctionOptionalParm.js","anonFunctionOptionalParm","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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) => {};"," +") +hasLocation(#20018,#20005) +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) +#20022=* +tokeninfo(#20022,8,#20001,2,"=") +#20023=@"loc,{#10000},1,7,1,7" +locations_default(#20023,#10000,1,7,1,7) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,3,"(") +#20025=@"loc,{#10000},1,9,1,9" +locations_default(#20025,#10000,1,9,1,9) +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) +#20035=* +tokeninfo(#20035,8,#20001,9,"=>") +#20036=@"loc,{#10000},1,18,1,19" +locations_default(#20036,#10000,1,18,1,19) +hasLocation(#20035,#20036) +#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) +#20043=* +tokeninfo(#20043,0,#20001,13,"") +#20044=@"loc,{#10000},2,1,2,0" +locations_default(#20044,#10000,2,1,2,0) +hasLocation(#20043,#20044) +#20045=* +entry_cfg_node(#20045,#20001) +#20046=@"loc,{#10000},1,1,1,0" +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) +#20048=* +entry_cfg_node(#20048,#20010) +#20049=@"loc,{#10000},1,9,1,8" +locations_default(#20049,#10000,1,9,1,8) +hasLocation(#20048,#20049) +#20050=* +exit_cfg_node(#20050,#20010) +#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) +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 new file mode 100644 index 00000000000..37e401c7c76 --- /dev/null +++ b/javascript/extractor/tests/flow/output/trap/anonFunctionReturnType.js.trap @@ -0,0 +1,173 @@ +#10000=@"/anonFunctionReturnType.js;sourcefile" +files(#10000,"/anonFunctionReturnType.js","anonFunctionReturnType","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +numlines(#20001,1,1,0) +#20018=* +tokeninfo(#20018,7,#20001,0,"var") +#20019=@"loc,{#10000},1,1,1,3" +locations_default(#20019,#10000,1,1,1,3) +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) +#20026=* +tokeninfo(#20026,8,#20001,5,":") +#20027=@"loc,{#10000},1,18,1,18" +locations_default(#20027,#10000,1,18,1,18) +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) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,7,")") +#20031=@"loc,{#10000},1,29,1,29" +locations_default(#20031,#10000,1,29,1,29) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,8,":") +#20033=@"loc,{#10000},1,30,1,30" +locations_default(#20033,#10000,1,30,1,30) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,9,"?") +#20035=@"loc,{#10000},1,32,1,32" +locations_default(#20035,#10000,1,32,1,32) +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) +#20038=* +tokeninfo(#20038,8,#20001,11,"=>") +#20039=@"loc,{#10000},1,43,1,44" +locations_default(#20039,#10000,1,43,1,44) +hasLocation(#20038,#20039) +#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) +#20046=* +tokeninfo(#20046,0,#20001,15,"") +#20047=@"loc,{#10000},1,49,1,48" +locations_default(#20047,#10000,1,49,1,48) +hasLocation(#20046,#20047) +#20048=* +entry_cfg_node(#20048,#20001) +#20049=@"loc,{#10000},1,1,1,0" +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) +#20051=* +entry_cfg_node(#20051,#20009) +#20052=@"loc,{#10000},1,9,1,8" +locations_default(#20052,#10000,1,9,1,8) +hasLocation(#20051,#20052) +#20053=* +exit_cfg_node(#20053,#20009) +#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) +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 new file mode 100644 index 00000000000..37086da64b2 --- /dev/null +++ b/javascript/extractor/tests/flow/output/trap/anonFunctionWithoutParens.js.trap @@ -0,0 +1,90 @@ +#10000=@"/anonFunctionWithoutParens.js;sourcefile" +files(#10000,"/anonFunctionWithoutParens.js","anonFunctionWithoutParens","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +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) +#20027=* +entry_cfg_node(#20027,#20001) +#20028=@"loc,{#10000},1,1,1,0" +locations_default(#20028,#10000,1,1,1,0) +hasLocation(#20027,#20028) +#20029=* +exit_cfg_node(#20029,#20001) +hasLocation(#20029,#20026) +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 new file mode 100644 index 00000000000..e9948ea3fbb --- /dev/null +++ b/javascript/extractor/tests/flow/output/trap/anonIndexer.js.trap @@ -0,0 +1,103 @@ +#10000=@"/anonIndexer.js;sourcefile" +files(#10000,"/anonIndexer.js","anonIndexer","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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};"," +") +#20005=@"loc,{#10000},1,1,1,59" +locations_default(#20005,#10000,1,1,1,59) +hasLocation(#20004,#20005) +numlines(#20001,1,1,0) +#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,6,#20001,1,"type") +#20009=@"loc,{#10000},1,8,1,11" +locations_default(#20009,#10000,1,8,1,11) +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) +hasLocation(#20010,#20011) +#20012=* +tokeninfo(#20012,8,#20001,3,"=") +#20013=@"loc,{#10000},1,30,1,30" +locations_default(#20013,#10000,1,30,1,30) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,8,#20001,4,"{") +#20015=@"loc,{#10000},1,32,1,32" +locations_default(#20015,#10000,1,32,1,32) +hasLocation(#20014,#20015) +#20016=* +tokeninfo(#20016,8,#20001,5,"[") +#20017=@"loc,{#10000},1,33,1,33" +locations_default(#20017,#10000,1,33,1,33) +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) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,7,"]") +#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,"TransformResult") +#20025=@"loc,{#10000},1,43,1,57" +locations_default(#20025,#10000,1,43,1,57) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,10,"}") +#20027=@"loc,{#10000},1,58,1,58" +locations_default(#20027,#10000,1,58,1,58) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,11,";") +#20029=@"loc,{#10000},1,59,1,59" +locations_default(#20029,#10000,1,59,1,59) +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) +#20032=* +entry_cfg_node(#20032,#20001) +#20033=@"loc,{#10000},1,1,1,0" +locations_default(#20033,#10000,1,1,1,0) +hasLocation(#20032,#20033) +#20034=* +exit_cfg_node(#20034,#20001) +hasLocation(#20034,#20031) +successor(#20032,#20034) +numlines(#10000,1,1,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 new file mode 100644 index 00000000000..fc5097763cd --- /dev/null +++ b/javascript/extractor/tests/flow/output/trap/async.js.trap @@ -0,0 +1,194 @@ +#10000=@"/async.js;sourcefile" +files(#10000,"/async.js","async","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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();"," +") +hasLocation(#20020,#20005) +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) +#20024=* +tokeninfo(#20024,8,#20001,2,"=") +#20025=@"loc,{#10000},1,7,1,7" +locations_default(#20025,#10000,1,7,1,7) +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) +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,8,#20001,5,")") +#20031=@"loc,{#10000},1,15,1,15" +locations_default(#20031,#10000,1,15,1,15) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,8,#20001,6,":") +#20033=@"loc,{#10000},1,17,1,17" +locations_default(#20033,#10000,1,17,1,17) +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) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,8,"<") +#20037=@"loc,{#10000},1,26,1,26" +locations_default(#20037,#10000,1,26,1,26) +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) +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) +#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) +#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) +#20049=* +tokeninfo(#20049,8,#20001,15,")") +#20050=@"loc,{#10000},1,48,1,48" +locations_default(#20050,#10000,1,48,1,48) +hasLocation(#20049,#20050) +#20051=* +tokeninfo(#20051,8,#20001,16,";") +#20052=@"loc,{#10000},1,49,1,49" +locations_default(#20052,#10000,1,49,1,49) +hasLocation(#20051,#20052) +#20053=* +tokeninfo(#20053,0,#20001,17,"") +#20054=@"loc,{#10000},2,1,2,0" +locations_default(#20054,#10000,2,1,2,0) +hasLocation(#20053,#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,#20054) +successor(#20004,#20008) +successor(#20010,#20006) +#20058=* +entry_cfg_node(#20058,#20010) +#20059=@"loc,{#10000},1,9,1,8" +locations_default(#20059,#10000,1,9,1,8) +hasLocation(#20058,#20059) +#20060=* +exit_cfg_node(#20060,#20010) +#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) +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 new file mode 100644 index 00000000000..2be5306c0a8 --- /dev/null +++ b/javascript/extractor/tests/flow/output/trap/atAtIteratorProp.js.trap @@ -0,0 +1,108 @@ +#10000=@"/atAtIteratorProp.js;sourcefile" +files(#10000,"/atAtIteratorProp.js","atAtIteratorProp","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,3,1" +locations_default(#20002,#10000,1,1,3,1) +hasLocation(#20001,#20002) +#20003=* +lines(#20003,#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"," +") +#20006=@"loc,{#10000},2,1,2,19" +locations_default(#20006,#10000,2,1,2,19) +hasLocation(#20005,#20006) +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) +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) +#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) +#20034=* +entry_cfg_node(#20034,#20001) +#20035=@"loc,{#10000},1,1,1,0" +locations_default(#20035,#10000,1,1,1,0) +hasLocation(#20034,#20035) +#20036=* +exit_cfg_node(#20036,#20001) +hasLocation(#20036,#20033) +successor(#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 new file mode 100644 index 00000000000..380f722d404 --- /dev/null +++ b/javascript/extractor/tests/flow/output/trap/complexParamTypes.js.trap @@ -0,0 +1,195 @@ +#10000=@"/complexParamTypes.js;sourcefile" +files(#10000,"/complexParamTypes.js","complexParamTypes","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +numlines(#20001,1,1,0) +#20004=* +tokeninfo(#20004,6,#20001,0,"type") +#20005=@"loc,{#10000},1,1,1,4" +locations_default(#20005,#10000,1,1,1,4) +hasLocation(#20004,#20005) +#20006=* +tokeninfo(#20006,6,#20001,1,"Asyncify") +#20007=@"loc,{#10000},1,6,1,13" +locations_default(#20007,#10000,1,6,1,13) +hasLocation(#20006,#20007) +#20008=* +tokeninfo(#20008,8,#20001,2,"=") +#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,6,#20001,4,"A") +#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,6,#20001,6,"B") +#20017=@"loc,{#10000},1,21,1,21" +locations_default(#20017,#10000,1,21,1,21) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,7,",") +#20019=@"loc,{#10000},1,22,1,22" +locations_default(#20019,#10000,1,22,1,22) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,6,#20001,8,"C") +#20021=@"loc,{#10000},1,24,1,24" +locations_default(#20021,#10000,1,24,1,24) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,9,">") +#20023=@"loc,{#10000},1,25,1,25" +locations_default(#20023,#10000,1,25,1,25) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,8,#20001,10,"(") +#20025=@"loc,{#10000},1,26,1,26" +locations_default(#20025,#10000,1,26,1,26) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,11,"(") +#20027=@"loc,{#10000},1,27,1,27" +locations_default(#20027,#10000,1,27,1,27) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,6,#20001,12,"A") +#20029=@"loc,{#10000},1,28,1,28" +locations_default(#20029,#10000,1,28,1,28) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,13,",") +#20031=@"loc,{#10000},1,29,1,29" +locations_default(#20031,#10000,1,29,1,29) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,6,#20001,14,"B") +#20033=@"loc,{#10000},1,31,1,31" +locations_default(#20033,#10000,1,31,1,31) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,8,#20001,15,")") +#20035=@"loc,{#10000},1,32,1,32" +locations_default(#20035,#10000,1,32,1,32) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,8,#20001,16,"=>") +#20037=@"loc,{#10000},1,34,1,35" +locations_default(#20037,#10000,1,34,1,35) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,6,#20001,17,"C") +#20039=@"loc,{#10000},1,37,1,37" +locations_default(#20039,#10000,1,37,1,37) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,18,")") +#20041=@"loc,{#10000},1,38,1,38" +locations_default(#20041,#10000,1,38,1,38) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,19,"=>") +#20043=@"loc,{#10000},1,40,1,41" +locations_default(#20043,#10000,1,40,1,41) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,20,"(") +#20045=@"loc,{#10000},1,43,1,43" +locations_default(#20045,#10000,1,43,1,43) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,6,#20001,21,"A") +#20047=@"loc,{#10000},1,44,1,44" +locations_default(#20047,#10000,1,44,1,44) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,8,#20001,22,",") +#20049=@"loc,{#10000},1,45,1,45" +locations_default(#20049,#10000,1,45,1,45) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,6,#20001,23,"B") +#20051=@"loc,{#10000},1,47,1,47" +locations_default(#20051,#10000,1,47,1,47) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,8,#20001,24,",") +#20053=@"loc,{#10000},1,48,1,48" +locations_default(#20053,#10000,1,48,1,48) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,6,#20001,25,"Callback") +#20055=@"loc,{#10000},1,50,1,57" +locations_default(#20055,#10000,1,50,1,57) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,8,#20001,26,"<") +#20057=@"loc,{#10000},1,58,1,58" +locations_default(#20057,#10000,1,58,1,58) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,6,#20001,27,"C") +#20059=@"loc,{#10000},1,59,1,59" +locations_default(#20059,#10000,1,59,1,59) +hasLocation(#20058,#20059) +#20060=* +tokeninfo(#20060,8,#20001,28,">") +#20061=@"loc,{#10000},1,60,1,60" +locations_default(#20061,#10000,1,60,1,60) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,8,#20001,29,")") +#20063=@"loc,{#10000},1,61,1,61" +locations_default(#20063,#10000,1,61,1,61) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,8,#20001,30,"=>") +#20065=@"loc,{#10000},1,63,1,64" +locations_default(#20065,#10000,1,63,1,64) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,7,#20001,31,"void") +#20067=@"loc,{#10000},1,66,1,69" +locations_default(#20067,#10000,1,66,1,69) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,0,#20001,32,"") +#20069=@"loc,{#10000},1,70,1,69" +locations_default(#20069,#10000,1,70,1,69) +hasLocation(#20068,#20069) +#20070=* +entry_cfg_node(#20070,#20001) +#20071=@"loc,{#10000},1,1,1,0" +locations_default(#20071,#10000,1,1,1,0) +hasLocation(#20070,#20071) +#20072=* +exit_cfg_node(#20072,#20001) +hasLocation(#20072,#20069) +successor(#20070,#20072) +numlines(#10000,1,1,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/flow/output/trap/complexParamTypes2.js.trap b/javascript/extractor/tests/flow/output/trap/complexParamTypes2.js.trap new file mode 100644 index 00000000000..3dd109ade80 --- /dev/null +++ b/javascript/extractor/tests/flow/output/trap/complexParamTypes2.js.trap @@ -0,0 +1,148 @@ +#10000=@"/complexParamTypes2.js;sourcefile" +files(#10000,"/complexParamTypes2.js","complexParamTypes2","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,3,1" +locations_default(#20002,#10000,1,1,3,1) +hasLocation(#20001,#20002) +#20003=* +lines(#20003,#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"," +") +#20006=@"loc,{#10000},2,1,2,36" +locations_default(#20006,#10000,2,1,2,36) +hasLocation(#20005,#20006) +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) +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) +#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) +#20050=* +entry_cfg_node(#20050,#20001) +#20051=@"loc,{#10000},1,1,1,0" +locations_default(#20051,#10000,1,1,1,0) +hasLocation(#20050,#20051) +#20052=* +exit_cfg_node(#20052,#20001) +hasLocation(#20052,#20049) +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 new file mode 100644 index 00000000000..6850a1767c6 --- /dev/null +++ b/javascript/extractor/tests/flow/output/trap/declareExport.js.trap @@ -0,0 +1,186 @@ +#10000=@"/declareExport.js;sourcefile" +files(#10000,"/declareExport.js","declareExport","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,5,0" +locations_default(#20002,#10000,1,1,5,0) +hasLocation(#20001,#20002) +#20003=* +lines(#20003,#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;"," +") +#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;"," +") +#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 = { };"," +") +#20010=@"loc,{#10000},4,1,4,37" +locations_default(#20010,#10000,4,1,4,37) +hasLocation(#20009,#20010) +numlines(#20001,4,4,0) +#20011=* +tokeninfo(#20011,6,#20001,0,"declare") +#20012=@"loc,{#10000},1,1,1,7" +locations_default(#20012,#10000,1,1,1,7) +hasLocation(#20011,#20012) +#20013=* +tokeninfo(#20013,7,#20001,1,"export") +#20014=@"loc,{#10000},1,9,1,14" +locations_default(#20014,#10000,1,9,1,14) +hasLocation(#20013,#20014) +#20015=* +tokeninfo(#20015,7,#20001,2,"var") +#20016=@"loc,{#10000},1,16,1,18" +locations_default(#20016,#10000,1,16,1,18) +hasLocation(#20015,#20016) +#20017=* +tokeninfo(#20017,6,#20001,3,"foo") +#20018=@"loc,{#10000},1,20,1,22" +locations_default(#20018,#10000,1,20,1,22) +hasLocation(#20017,#20018) +#20019=* +tokeninfo(#20019,8,#20001,4,":") +#20020=@"loc,{#10000},1,24,1,24" +locations_default(#20020,#10000,1,24,1,24) +hasLocation(#20019,#20020) +#20021=* +tokeninfo(#20021,6,#20001,5,"boolean") +#20022=@"loc,{#10000},1,26,1,32" +locations_default(#20022,#10000,1,26,1,32) +hasLocation(#20021,#20022) +#20023=* +tokeninfo(#20023,8,#20001,6,";") +#20024=@"loc,{#10000},1,33,1,33" +locations_default(#20024,#10000,1,33,1,33) +hasLocation(#20023,#20024) +#20025=* +tokeninfo(#20025,6,#20001,7,"declare") +#20026=@"loc,{#10000},2,1,2,7" +locations_default(#20026,#10000,2,1,2,7) +hasLocation(#20025,#20026) +#20027=* +tokeninfo(#20027,7,#20001,8,"export") +#20028=@"loc,{#10000},2,9,2,14" +locations_default(#20028,#10000,2,9,2,14) +hasLocation(#20027,#20028) +#20029=* +tokeninfo(#20029,7,#20001,9,"default") +#20030=@"loc,{#10000},2,16,2,22" +locations_default(#20030,#10000,2,16,2,22) +hasLocation(#20029,#20030) +#20031=* +tokeninfo(#20031,7,#20001,10,"typeof") +#20032=@"loc,{#10000},2,24,2,29" +locations_default(#20032,#10000,2,24,2,29) +hasLocation(#20031,#20032) +#20033=* +tokeninfo(#20033,6,#20001,11,"simpleTextBuffer$TextBuffer") +#20034=@"loc,{#10000},2,31,2,57" +locations_default(#20034,#10000,2,31,2,57) +hasLocation(#20033,#20034) +#20035=* +tokeninfo(#20035,8,#20001,12,";") +#20036=@"loc,{#10000},2,58,2,58" +locations_default(#20036,#10000,2,58,2,58) +hasLocation(#20035,#20036) +#20037=* +tokeninfo(#20037,6,#20001,13,"declare") +#20038=@"loc,{#10000},3,1,3,7" +locations_default(#20038,#10000,3,1,3,7) +hasLocation(#20037,#20038) +#20039=* +tokeninfo(#20039,7,#20001,14,"export") +#20040=@"loc,{#10000},3,9,3,14" +locations_default(#20040,#10000,3,9,3,14) +hasLocation(#20039,#20040) +#20041=* +tokeninfo(#20041,7,#20001,15,"default") +#20042=@"loc,{#10000},3,16,3,22" +locations_default(#20042,#10000,3,16,3,22) +hasLocation(#20041,#20042) +#20043=* +tokeninfo(#20043,6,#20001,16,"marked$Marked") +#20044=@"loc,{#10000},3,24,3,36" +locations_default(#20044,#10000,3,24,3,36) +hasLocation(#20043,#20044) +#20045=* +tokeninfo(#20045,8,#20001,17,";") +#20046=@"loc,{#10000},3,37,3,37" +locations_default(#20046,#10000,3,37,3,37) +hasLocation(#20045,#20046) +#20047=* +tokeninfo(#20047,6,#20001,18,"declare") +#20048=@"loc,{#10000},4,1,4,7" +locations_default(#20048,#10000,4,1,4,7) +hasLocation(#20047,#20048) +#20049=* +tokeninfo(#20049,7,#20001,19,"export") +#20050=@"loc,{#10000},4,9,4,14" +locations_default(#20050,#10000,4,9,4,14) +hasLocation(#20049,#20050) +#20051=* +tokeninfo(#20051,6,#20001,20,"type") +#20052=@"loc,{#10000},4,16,4,19" +locations_default(#20052,#10000,4,16,4,19) +hasLocation(#20051,#20052) +#20053=* +tokeninfo(#20053,6,#20001,21,"ProcessEnv") +#20054=@"loc,{#10000},4,21,4,30" +locations_default(#20054,#10000,4,21,4,30) +hasLocation(#20053,#20054) +#20055=* +tokeninfo(#20055,8,#20001,22,"=") +#20056=@"loc,{#10000},4,32,4,32" +locations_default(#20056,#10000,4,32,4,32) +hasLocation(#20055,#20056) +#20057=* +tokeninfo(#20057,8,#20001,23,"{") +#20058=@"loc,{#10000},4,34,4,34" +locations_default(#20058,#10000,4,34,4,34) +hasLocation(#20057,#20058) +#20059=* +tokeninfo(#20059,8,#20001,24,"}") +#20060=@"loc,{#10000},4,36,4,36" +locations_default(#20060,#10000,4,36,4,36) +hasLocation(#20059,#20060) +#20061=* +tokeninfo(#20061,8,#20001,25,";") +#20062=@"loc,{#10000},4,37,4,37" +locations_default(#20062,#10000,4,37,4,37) +hasLocation(#20061,#20062) +#20063=* +tokeninfo(#20063,0,#20001,26,"") +#20064=@"loc,{#10000},5,1,5,0" +locations_default(#20064,#10000,5,1,5,0) +hasLocation(#20063,#20064) +#20065=* +entry_cfg_node(#20065,#20001) +#20066=@"loc,{#10000},1,1,1,0" +locations_default(#20066,#10000,1,1,1,0) +hasLocation(#20065,#20066) +#20067=* +exit_cfg_node(#20067,#20001) +hasLocation(#20067,#20064) +successor(#20065,#20067) +numlines(#10000,4,4,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 new file mode 100644 index 00000000000..0a74fc0ed82 --- /dev/null +++ b/javascript/extractor/tests/flow/output/trap/declareModuleExports.js.trap @@ -0,0 +1,115 @@ +#10000=@"/declareModuleExports.js;sourcefile" +files(#10000,"/declareModuleExports.js","declareModuleExports","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,4,1" +locations_default(#20002,#10000,1,1,4,1) +hasLocation(#20001,#20002) +#20003=* +lines(#20003,#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: {"," +") +#20006=@"loc,{#10000},2,1,2,27" +locations_default(#20006,#10000,2,1,2,27) +hasLocation(#20005,#20006) +indentation(#10000,2," ",2) +#20007=* +lines(#20007,#20001," }"," +") +#20008=@"loc,{#10000},3,1,3,3" +locations_default(#20008,#10000,3,1,3,3) +hasLocation(#20007,#20008) +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) +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) +#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) +#20036=* +entry_cfg_node(#20036,#20001) +#20037=@"loc,{#10000},1,1,1,0" +locations_default(#20037,#10000,1,1,1,0) +hasLocation(#20036,#20037) +#20038=* +exit_cfg_node(#20038,#20001) +hasLocation(#20038,#20035) +successor(#20036,#20038) +numlines(#10000,4,4,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 new file mode 100644 index 00000000000..56db77daae3 --- /dev/null +++ b/javascript/extractor/tests/flow/output/trap/exportOpaqueType.js.trap @@ -0,0 +1,88 @@ +#10000=@"/exportOpaqueType.js;sourcefile" +files(#10000,"/exportOpaqueType.js","exportOpaqueType","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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;"," +") +#20005=@"loc,{#10000},1,1,1,41" +locations_default(#20005,#10000,1,1,1,41) +hasLocation(#20004,#20005) +numlines(#20001,1,1,0) +#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,6,#20001,1,"opaque") +#20009=@"loc,{#10000},1,8,1,13" +locations_default(#20009,#10000,1,8,1,13) +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) +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) +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,"number") +#20017=@"loc,{#10000},1,26,1,31" +locations_default(#20017,#10000,1,26,1,31) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,6,"=") +#20019=@"loc,{#10000},1,33,1,33" +locations_default(#20019,#10000,1,33,1,33) +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) +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,0,#20001,9,"") +#20025=@"loc,{#10000},2,1,2,0" +locations_default(#20025,#10000,2,1,2,0) +hasLocation(#20024,#20025) +#20026=* +entry_cfg_node(#20026,#20001) +#20027=@"loc,{#10000},1,1,1,0" +locations_default(#20027,#10000,1,1,1,0) +hasLocation(#20026,#20027) +#20028=* +exit_cfg_node(#20028,#20001) +hasLocation(#20028,#20025) +successor(#20026,#20028) +numlines(#10000,1,1,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 new file mode 100644 index 00000000000..aaafc65c9be --- /dev/null +++ b/javascript/extractor/tests/flow/output/trap/importType.js.trap @@ -0,0 +1,195 @@ +#10000=@"/importType.js;sourcefile" +files(#10000,"/importType.js","importType","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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) +#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) +#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) +#20016=* +lines(#20016,#20001,"import { type t } from 'n';"," +") +#20017=@"loc,{#10000},2,1,2,27" +locations_default(#20017,#10000,2,1,2,27) +hasLocation(#20016,#20017) +numlines(#20001,2,2,0) +#20018=* +tokeninfo(#20018,7,#20001,0,"import") +#20019=@"loc,{#10000},1,1,1,6" +locations_default(#20019,#10000,1,1,1,6) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,1,"{") +#20021=@"loc,{#10000},1,8,1,8" +locations_default(#20021,#10000,1,8,1,8) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,6,#20001,2,"type") +hasLocation(#20022,#20012) +#20023=* +tokeninfo(#20023,8,#20001,3,",") +#20024=@"loc,{#10000},1,14,1,14" +locations_default(#20024,#10000,1,14,1,14) +hasLocation(#20023,#20024) +#20025=* +tokeninfo(#20025,6,#20001,4,"type") +#20026=@"loc,{#10000},1,16,1,19" +locations_default(#20026,#10000,1,16,1,19) +hasLocation(#20025,#20026) +#20027=* +tokeninfo(#20027,6,#20001,5,"t1") +#20028=@"loc,{#10000},1,21,1,22" +locations_default(#20028,#10000,1,21,1,22) +hasLocation(#20027,#20028) +#20029=* +tokeninfo(#20029,8,#20001,6,",") +#20030=@"loc,{#10000},1,23,1,23" +locations_default(#20030,#10000,1,23,1,23) +hasLocation(#20029,#20030) +#20031=* +tokeninfo(#20031,7,#20001,7,"typeof") +#20032=@"loc,{#10000},1,25,1,30" +locations_default(#20032,#10000,1,25,1,30) +hasLocation(#20031,#20032) +#20033=* +tokeninfo(#20033,6,#20001,8,"t2") +#20034=@"loc,{#10000},1,32,1,33" +locations_default(#20034,#10000,1,32,1,33) +hasLocation(#20033,#20034) +#20035=* +tokeninfo(#20035,8,#20001,9,"}") +#20036=@"loc,{#10000},1,35,1,35" +locations_default(#20036,#10000,1,35,1,35) +hasLocation(#20035,#20036) +#20037=* +tokeninfo(#20037,6,#20001,10,"from") +#20038=@"loc,{#10000},1,37,1,40" +locations_default(#20038,#10000,1,37,1,40) +hasLocation(#20037,#20038) +#20039=* +tokeninfo(#20039,4,#20001,11,"'m'") +hasLocation(#20039,#20010) +#20040=* +tokeninfo(#20040,8,#20001,12,";") +#20041=@"loc,{#10000},1,45,1,45" +locations_default(#20041,#10000,1,45,1,45) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,7,#20001,13,"import") +#20043=@"loc,{#10000},2,1,2,6" +locations_default(#20043,#10000,2,1,2,6) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,14,"{") +#20045=@"loc,{#10000},2,8,2,8" +locations_default(#20045,#10000,2,8,2,8) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,6,#20001,15,"type") +#20047=@"loc,{#10000},2,10,2,13" +locations_default(#20047,#10000,2,10,2,13) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,6,#20001,16,"t") +#20049=@"loc,{#10000},2,15,2,15" +locations_default(#20049,#10000,2,15,2,15) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,17,"}") +#20051=@"loc,{#10000},2,17,2,17" +locations_default(#20051,#10000,2,17,2,17) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,6,#20001,18,"from") +#20053=@"loc,{#10000},2,19,2,22" +locations_default(#20053,#10000,2,19,2,22) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,4,#20001,19,"'n'") +#20055=@"loc,{#10000},2,24,2,26" +locations_default(#20055,#10000,2,24,2,26) +hasLocation(#20054,#20055) +#20056=* +tokeninfo(#20056,8,#20001,20,";") +#20057=@"loc,{#10000},2,27,2,27" +locations_default(#20057,#10000,2,27,2,27) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,0,#20001,21,"") +#20059=@"loc,{#10000},3,1,3,0" +locations_default(#20059,#10000,3,1,3,0) +hasLocation(#20058,#20059) +#20060=* +entry_cfg_node(#20060,#20001) +#20061=@"loc,{#10000},1,1,1,0" +locations_default(#20061,#10000,1,1,1,0) +hasLocation(#20060,#20061) +#20062=* +exit_cfg_node(#20062,#20001) +hasLocation(#20062,#20059) +successor(#20007,#20062) +successor(#20011,#20007) +successor(#20060,#20011) +numlines(#10000,2,2,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 new file mode 100644 index 00000000000..d318d7e3502 --- /dev/null +++ b/javascript/extractor/tests/flow/output/trap/methodTypeParams.js.trap @@ -0,0 +1,262 @@ +#10000=@"/methodTypeParams.js;sourcefile" +files(#10000,"/methodTypeParams.js","methodTypeParams","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,5,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 = {"," +") +#20029=@"loc,{#10000},1,1,1,9" +locations_default(#20029,#10000,1,1,1,9) +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) +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) +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) +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) +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) +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) +#20046=* +tokeninfo(#20046,8,#20001,5,"<") +#20047=@"loc,{#10000},2,5,2,5" +locations_default(#20047,#10000,2,5,2,5) +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) +#20054=* +tokeninfo(#20054,6,#20001,9,"a") +#20055=@"loc,{#10000},2,9,2,9" +locations_default(#20055,#10000,2,9,2,9) +hasLocation(#20054,#20055) +#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) +#20062=* +tokeninfo(#20062,8,#20001,13,"{") +#20063=@"loc,{#10000},2,16,2,16" +locations_default(#20063,#10000,2,16,2,16) +hasLocation(#20062,#20063) +#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) +#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) +#20069=* +tokeninfo(#20069,8,#20001,17,"}") +#20070=@"loc,{#10000},4,3,4,3" +locations_default(#20070,#10000,4,3,4,3) +hasLocation(#20069,#20070) +#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) +#20074=* +entry_cfg_node(#20074,#20001) +#20075=@"loc,{#10000},1,1,1,0" +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) +#20077=* +entry_cfg_node(#20077,#20015) +#20078=@"loc,{#10000},2,8,2,7" +locations_default(#20078,#10000,2,8,2,7) +hasLocation(#20077,#20078) +#20079=* +exit_cfg_node(#20079,#20015) +#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) +numlines(#10000,5,5,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 new file mode 100644 index 00000000000..040ab76cb00 --- /dev/null +++ b/javascript/extractor/tests/flow/output/trap/objectTypeSpread.js.trap @@ -0,0 +1,148 @@ +#10000=@"/objectTypeSpread.js;sourcefile" +files(#10000,"/objectTypeSpread.js","objectTypeSpread","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,2,29" +locations_default(#20002,#10000,1,1,2,29) +hasLocation(#20001,#20002) +#20003=* +lines(#20003,#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) +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) +#20051=* +entry_cfg_node(#20051,#20001) +#20052=@"loc,{#10000},1,1,1,0" +locations_default(#20052,#10000,1,1,1,0) +hasLocation(#20051,#20052) +#20053=* +exit_cfg_node(#20053,#20001) +hasLocation(#20053,#20050) +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 new file mode 100644 index 00000000000..818a1af1573 --- /dev/null +++ b/javascript/extractor/tests/flow/output/trap/optParms.js.trap @@ -0,0 +1,299 @@ +#10000=@"/optParms.js;sourcefile" +files(#10000,"/optParms.js","optParms","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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?) => {};"," +") +hasLocation(#20036,#20006) +#20037=* +lines(#20037,#20001,"let g = (x?, y) => {};"," +") +hasLocation(#20037,#20020) +numlines(#20001,2,2,0) +#20038=* +tokeninfo(#20038,7,#20001,0,"let") +#20039=@"loc,{#10000},1,1,1,3" +locations_default(#20039,#10000,1,1,1,3) +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) +#20046=* +tokeninfo(#20046,8,#20001,5,"?") +#20047=@"loc,{#10000},1,11,1,11" +locations_default(#20047,#10000,1,11,1,11) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,8,#20001,6,")") +#20049=@"loc,{#10000},1,12,1,12" +locations_default(#20049,#10000,1,12,1,12) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,7,"=>") +#20051=@"loc,{#10000},1,14,1,15" +locations_default(#20051,#10000,1,14,1,15) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,8,#20001,8,"{") +#20053=@"loc,{#10000},1,17,1,17" +locations_default(#20053,#10000,1,17,1,17) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,8,#20001,9,"}") +#20055=@"loc,{#10000},1,18,1,18" +locations_default(#20055,#10000,1,18,1,18) +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) +#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) +#20063=* +tokeninfo(#20063,8,#20001,14,"(") +#20064=@"loc,{#10000},2,9,2,9" +locations_default(#20064,#10000,2,9,2,9) +hasLocation(#20063,#20064) +#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) +#20068=* +tokeninfo(#20068,8,#20001,17,",") +#20069=@"loc,{#10000},2,12,2,12" +locations_default(#20069,#10000,2,12,2,12) +hasLocation(#20068,#20069) +#20070=* +tokeninfo(#20070,6,#20001,18,"y") +hasLocation(#20070,#20033) +#20071=* +tokeninfo(#20071,8,#20001,19,")") +#20072=@"loc,{#10000},2,15,2,15" +locations_default(#20072,#10000,2,15,2,15) +hasLocation(#20071,#20072) +#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) +#20081=* +tokeninfo(#20081,0,#20001,24,"") +#20082=@"loc,{#10000},3,1,3,0" +locations_default(#20082,#10000,3,1,3,0) +hasLocation(#20081,#20082) +#20083=* +entry_cfg_node(#20083,#20001) +#20084=@"loc,{#10000},1,1,1,0" +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) +#20086=* +entry_cfg_node(#20086,#20025) +#20087=@"loc,{#10000},2,9,2,8" +locations_default(#20087,#10000,2,9,2,8) +hasLocation(#20086,#20087) +#20088=* +exit_cfg_node(#20088,#20025) +#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) +#20090=* +entry_cfg_node(#20090,#20011) +#20091=@"loc,{#10000},1,9,1,8" +locations_default(#20091,#10000,1,9,1,8) +hasLocation(#20090,#20091) +#20092=* +exit_cfg_node(#20092,#20011) +#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) +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 new file mode 100644 index 00000000000..bb99e983717 --- /dev/null +++ b/javascript/extractor/tests/flow/output/trap/parmAnonFunctionType.js.trap @@ -0,0 +1,240 @@ +#10000=@"/parmAnonFunctionType.js;sourcefile" +files(#10000,"/parmAnonFunctionType.js","parmAnonFunctionType","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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 ... (42);\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,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,"}"," +") +#20028=@"loc,{#10000},3,1,3,1" +locations_default(#20028,#10000,3,1,3,1) +hasLocation(#20027,#20028) +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) +#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,"g") +#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,8,#20001,5,"(") +#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,6,#20001,7,"y") +#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,6,#20001,9,"int") +#20047=@"loc,{#10000},1,20,1,22" +locations_default(#20047,#10000,1,20,1,22) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,8,#20001,10,"}") +#20049=@"loc,{#10000},1,23,1,23" +locations_default(#20049,#10000,1,23,1,23) +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) +#20058=* +tokeninfo(#20058,8,#20001,15,"{") +#20059=@"loc,{#10000},1,35,1,35" +locations_default(#20059,#10000,1,35,1,35) +hasLocation(#20058,#20059) +#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) +#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) +#20069=* +tokeninfo(#20069,0,#20001,22,"") +#20070=@"loc,{#10000},4,1,4,0" +locations_default(#20070,#10000,4,1,4,0) +hasLocation(#20069,#20070) +#20071=* +entry_cfg_node(#20071,#20001) +#20072=@"loc,{#10000},1,1,1,0" +locations_default(#20072,#10000,1,1,1,0) +hasLocation(#20071,#20072) +#20073=* +exit_cfg_node(#20073,#20001) +hasLocation(#20073,#20070) +successor(#20004,#20073) +#20074=* +entry_cfg_node(#20074,#20004) +hasLocation(#20074,#20072) +#20075=* +exit_cfg_node(#20075,#20004) +#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) +numlines(#10000,3,3,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 new file mode 100644 index 00000000000..8eb4ade67ac --- /dev/null +++ b/javascript/extractor/tests/flow/output/trap/qualifiedInterface.js.trap @@ -0,0 +1,78 @@ +#10000=@"/qualifiedInterface.js;sourcefile" +files(#10000,"/qualifiedInterface.js","qualifiedInterface","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,2,0" +locations_default(#20002,#10000,1,1,2,0) +hasLocation(#20001,#20002) +#20003=* +lines(#20003,#20001,"interface I extends J.K {}"," +") +#20004=@"loc,{#10000},1,1,1,26" +locations_default(#20004,#10000,1,1,1,26) +hasLocation(#20003,#20004) +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) +#20023=* +entry_cfg_node(#20023,#20001) +#20024=@"loc,{#10000},1,1,1,0" +locations_default(#20024,#10000,1,1,1,0) +hasLocation(#20023,#20024) +#20025=* +exit_cfg_node(#20025,#20001) +hasLocation(#20025,#20022) +successor(#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 new file mode 100644 index 00000000000..52e2fcd2260 --- /dev/null +++ b/javascript/extractor/tests/flow/output/trap/tst.js.trap @@ -0,0 +1,731 @@ +#10000=@"/tst.js;sourcefile" +files(#10000,"/tst.js","tst","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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 = {"," +") +#20052=@"loc,{#10000},1,1,1,14" +locations_default(#20052,#10000,1,1,1,14) +hasLocation(#20051,#20052) +#20053=* +lines(#20053,#20001," x: int,"," +") +#20054=@"loc,{#10000},2,1,2,9" +locations_default(#20054,#10000,2,1,2,9) +hasLocation(#20053,#20054) +indentation(#10000,2," ",2) +#20055=* +lines(#20055,#20001," y: int"," +") +#20056=@"loc,{#10000},3,1,3,8" +locations_default(#20056,#10000,3,1,3,8) +hasLocation(#20055,#20056) +indentation(#10000,3," ",2) +#20057=* +lines(#20057,#20001,"}"," +") +#20058=@"loc,{#10000},4,1,4,1" +locations_default(#20058,#10000,4,1,4,1) +hasLocation(#20057,#20058) +#20059=* +lines(#20059,#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 {"," +") +#20062=@"loc,{#10000},6,1,6,12" +locations_default(#20062,#10000,6,1,6,12) +hasLocation(#20061,#20062) +#20063=* +lines(#20063,#20001," x: T;"," +") +#20064=@"loc,{#10000},7,1,7,7" +locations_default(#20064,#10000,7,1,7,7) +hasLocation(#20063,#20064) +indentation(#10000,7," ",2) +#20065=* +lines(#20065,#20001," m() : Point {}"," +") +#20066=@"loc,{#10000},8,1,8,16" +locations_default(#20066,#10000,8,1,8,16) +hasLocation(#20065,#20066) +indentation(#10000,8," ",2) +#20067=* +lines(#20067,#20001,"}"," +") +#20068=@"loc,{#10000},9,1,9,1" +locations_default(#20068,#10000,9,1,9,1) +hasLocation(#20067,#20068) +#20069=* +lines(#20069,#20001,""," +") +#20070=@"loc,{#10000},10,1,10,0" +locations_default(#20070,#10000,10,1,10,0) +hasLocation(#20069,#20070) +#20071=* +lines(#20071,#20001,"function f() {"," +") +#20072=@"loc,{#10000},11,1,11,14" +locations_default(#20072,#10000,11,1,11,14) +hasLocation(#20071,#20072) +#20073=* +lines(#20073,#20001," switch(x) {"," +") +#20074=@"loc,{#10000},12,1,12,13" +locations_default(#20074,#10000,12,1,12,13) +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) +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) +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) +hasLocation(#20079,#20080) +#20081=* +lines(#20081,#20001,""," +") +#20082=@"loc,{#10000},16,1,16,0" +locations_default(#20082,#10000,16,1,16,0) +hasLocation(#20081,#20082) +#20083=* +lines(#20083,#20001,"@SomeDecorator"," +") +#20084=@"loc,{#10000},17,1,17,14" +locations_default(#20084,#10000,17,1,17,14) +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) +hasLocation(#20085,#20086) +#20087=* +lines(#20087,#20001,""," +") +#20088=@"loc,{#10000},19,1,19,0" +locations_default(#20088,#10000,19,1,19,0) +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) +hasLocation(#20089,#20090) +#20091=* +lines(#20091,#20001,""," +") +#20092=@"loc,{#10000},21,1,21,0" +locations_default(#20092,#10000,21,1,21,0) +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) +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) +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) +hasLocation(#20097,#20098) +#20099=* +tokeninfo(#20099,8,#20001,2,"=") +#20100=@"loc,{#10000},1,12,1,12" +locations_default(#20100,#10000,1,12,1,12) +hasLocation(#20099,#20100) +#20101=* +tokeninfo(#20101,8,#20001,3,"{") +#20102=@"loc,{#10000},1,14,1,14" +locations_default(#20102,#10000,1,14,1,14) +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) +#20118=* +tokeninfo(#20118,7,#20001,12,"class") +#20119=@"loc,{#10000},6,1,6,5" +locations_default(#20119,#10000,6,1,6,5) +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) +#20130=* +tokeninfo(#20130,8,#20001,19,":") +#20131=@"loc,{#10000},7,4,7,4" +locations_default(#20131,#10000,7,4,7,4) +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) +hasLocation(#20132,#20133) +#20134=* +tokeninfo(#20134,8,#20001,21,";") +#20135=@"loc,{#10000},7,7,7,7" +locations_default(#20135,#10000,7,7,7,7) +hasLocation(#20134,#20135) +#20136=* +tokeninfo(#20136,6,#20001,22,"m") +hasLocation(#20136,#20019) +#20137=* +tokeninfo(#20137,8,#20001,23,"(") +#20138=@"loc,{#10000},8,4,8,4" +locations_default(#20138,#10000,8,4,8,4) +hasLocation(#20137,#20138) +#20139=* +tokeninfo(#20139,8,#20001,24,")") +#20140=@"loc,{#10000},8,5,8,5" +locations_default(#20140,#10000,8,5,8,5) +hasLocation(#20139,#20140) +#20141=* +tokeninfo(#20141,8,#20001,25,":") +#20142=@"loc,{#10000},8,7,8,7" +locations_default(#20142,#10000,8,7,8,7) +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) +hasLocation(#20143,#20144) +#20145=* +tokeninfo(#20145,8,#20001,27,"{") +#20146=@"loc,{#10000},8,15,8,15" +locations_default(#20146,#10000,8,15,8,15) +hasLocation(#20145,#20146) +#20147=* +tokeninfo(#20147,8,#20001,28,"}") +#20148=@"loc,{#10000},8,16,8,16" +locations_default(#20148,#10000,8,16,8,16) +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) +#20153=* +tokeninfo(#20153,8,#20001,32,"(") +#20154=@"loc,{#10000},11,11,11,11" +locations_default(#20154,#10000,11,11,11,11) +hasLocation(#20153,#20154) +#20155=* +tokeninfo(#20155,8,#20001,33,")") +#20156=@"loc,{#10000},11,12,11,12" +locations_default(#20156,#10000,11,12,11,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) +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) +hasLocation(#20159,#20160) +#20161=* +tokeninfo(#20161,8,#20001,36,"(") +#20162=@"loc,{#10000},12,9,12,9" +locations_default(#20162,#10000,12,9,12,9) +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) +#20173=* +tokeninfo(#20173,8,#20001,43,")") +#20174=@"loc,{#10000},13,11,13,11" +locations_default(#20174,#10000,13,11,13,11) +hasLocation(#20173,#20174) +#20175=* +tokeninfo(#20175,8,#20001,44,":") +#20176=@"loc,{#10000},13,12,13,12" +locations_default(#20176,#10000,13,12,13,12) +hasLocation(#20175,#20176) +#20177=* +tokeninfo(#20177,8,#20001,45,"}") +#20178=@"loc,{#10000},14,3,14,3" +locations_default(#20178,#10000,14,3,14,3) +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) +#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) +#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) +#20204=* +tokeninfo(#20204,6,#20001,59,"string") +#20205=@"loc,{#10000},20,19,20,24" +locations_default(#20205,#10000,20,19,20,24) +hasLocation(#20204,#20205) +#20206=* +tokeninfo(#20206,8,#20001,60,"|}") +#20207=@"loc,{#10000},20,26,20,27" +locations_default(#20207,#10000,20,26,20,27) +hasLocation(#20206,#20207) +#20208=* +tokeninfo(#20208,6,#20001,61,"type") +#20209=@"loc,{#10000},22,1,22,4" +locations_default(#20209,#10000,22,1,22,4) +hasLocation(#20208,#20209) +#20210=* +tokeninfo(#20210,6,#20001,62,"T2") +#20211=@"loc,{#10000},22,6,22,7" +locations_default(#20211,#10000,22,6,22,7) +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) +#20216=* +tokeninfo(#20216,8,#20001,65,"|") +#20217=@"loc,{#10000},22,12,22,12" +locations_default(#20217,#10000,22,12,22,12) +hasLocation(#20216,#20217) +#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) +#20232=* +entry_cfg_node(#20232,#20001) +#20233=@"loc,{#10000},1,1,1,0" +locations_default(#20233,#10000,1,1,1,0) +hasLocation(#20232,#20233) +#20234=* +exit_cfg_node(#20234,#20001) +hasLocation(#20234,#20231) +successor(#20032,#20234) +#20235=* +entry_cfg_node(#20235,#20032) +#20236=@"loc,{#10000},11,1,11,0" +locations_default(#20236,#10000,11,1,11,0) +hasLocation(#20235,#20236) +#20237=* +exit_cfg_node(#20237,#20032) +#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) +#20239=* +entry_cfg_node(#20239,#20015) +hasLocation(#20239,#20027) +successor(#20011,#20031) +#20240=* +exit_cfg_node(#20240,#20015) +hasLocation(#20240,#20027) +successor(#20031,#20240) +successor(#20239,#20013) +successor(#20028,#20015) +successor(#20026,#20006) +successor(#20020,#20016) +#20241=* +entry_cfg_node(#20241,#20020) +#20242=@"loc,{#10000},8,4,8,3" +locations_default(#20242,#10000,8,4,8,3) +hasLocation(#20241,#20242) +#20243=* +exit_cfg_node(#20243,#20020) +#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) +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 new file mode 100644 index 00000000000..c3d2ff68ad7 --- /dev/null +++ b/javascript/extractor/tests/flow/output/trap/variance.js.trap @@ -0,0 +1,255 @@ +#10000=@"/variance.js;sourcefile" +files(#10000,"/variance.js","variance","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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) +#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) +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) +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=* +#20016=* +properties(#20016,#20006,3,0,"constructor() {}") +#20017=@"loc,{#10000},5,11,5,10" +locations_default(#20017,#10000,5,11,5,10) +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) +#20022=* +lines(#20022,#20001,"export type PackagerAsset = {"," +") +#20023=@"loc,{#10000},1,1,1,29" +locations_default(#20023,#10000,1,1,1,29) +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) +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) +hasLocation(#20026,#20027) +#20028=* +lines(#20028,#20001,""," +") +#20029=@"loc,{#10000},4,1,4,0" +locations_default(#20029,#10000,4,1,4,0) +hasLocation(#20028,#20029) +#20030=* +lines(#20030,#20001,"class Foo {"," +") +#20031=@"loc,{#10000},5,1,5,11" +locations_default(#20031,#10000,5,1,5,11) +hasLocation(#20030,#20031) +#20032=* +lines(#20032,#20001," +x: int"," +") +#20033=@"loc,{#10000},6,1,6,9" +locations_default(#20033,#10000,6,1,6,9) +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) +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) +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) +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) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,3,"=") +#20043=@"loc,{#10000},1,27,1,27" +locations_default(#20043,#10000,1,27,1,27) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,8,#20001,4,"{") +#20045=@"loc,{#10000},1,29,1,29" +locations_default(#20045,#10000,1,29,1,29) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,5,"+") +#20047=@"loc,{#10000},2,3,2,3" +locations_default(#20047,#10000,2,3,2,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) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,7,":") +#20051=@"loc,{#10000},2,20,2,20" +locations_default(#20051,#10000,2,20,2,20) +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) +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) +#20063=* +tokeninfo(#20063,8,#20001,14,"{") +#20064=@"loc,{#10000},5,11,5,11" +locations_default(#20064,#10000,5,11,5,11) +hasLocation(#20063,#20064) +#20065=* +tokeninfo(#20065,8,#20001,15,"+") +#20066=@"loc,{#10000},6,3,6,3" +locations_default(#20066,#10000,6,3,6,3) +hasLocation(#20065,#20066) +#20067=* +tokeninfo(#20067,6,#20001,16,"x") +hasLocation(#20067,#20014) +#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) +#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) +#20075=* +entry_cfg_node(#20075,#20001) +#20076=@"loc,{#10000},1,1,1,0" +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) +#20078=* +entry_cfg_node(#20078,#20015) +hasLocation(#20078,#20017) +successor(#20011,#20021) +#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) +numlines(#10000,7,6,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/functionbind/input/tst.js b/javascript/extractor/tests/functionbind/input/tst.js new file mode 100644 index 00000000000..72da6afecfe --- /dev/null +++ b/javascript/extractor/tests/functionbind/input/tst.js @@ -0,0 +1,5 @@ +process.argv.map(::console.log); + +let hasOwnProp = Object.prototype.hasOwnProperty; +let obj = { x: 100 }; +obj::hasOwnProp("x"); \ No newline at end of file diff --git a/javascript/extractor/tests/functionbind/options.json b/javascript/extractor/tests/functionbind/options.json new file mode 100644 index 00000000000..075583ca1f6 --- /dev/null +++ b/javascript/extractor/tests/functionbind/options.json @@ -0,0 +1,3 @@ +{ + "experimental": true +} diff --git a/javascript/extractor/tests/functionbind/output/trap/tst.js.trap b/javascript/extractor/tests/functionbind/output/trap/tst.js.trap new file mode 100644 index 00000000000..2084554fde5 --- /dev/null +++ b/javascript/extractor/tests/functionbind/output/trap/tst.js.trap @@ -0,0 +1,490 @@ +#10000=@"/tst.js;sourcefile" +files(#10000,"/tst.js","tst","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,5,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) +#20016=* +exprs(#20016,0,#20011,1,"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) +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) +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) +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) +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) +#20042=* +exprs(#20042,0,#20037,1,"prototype") +#20043=@"loc,{#10000},3,25,3,33" +locations_default(#20043,#10000,3,25,3,33) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +#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) +#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) +#20082=* +tokeninfo(#20082,8,#20001,3,".") +#20083=@"loc,{#10000},1,13,1,13" +locations_default(#20083,#10000,1,13,1,13) +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) +#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) +#20100=* +tokeninfo(#20100,8,#20001,14,"=") +#20101=@"loc,{#10000},3,16,3,16" +locations_default(#20101,#10000,3,16,3,16) +hasLocation(#20100,#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) +#20106=* +tokeninfo(#20106,8,#20001,18,".") +#20107=@"loc,{#10000},3,34,3,34" +locations_default(#20107,#10000,3,34,3,34) +hasLocation(#20106,#20107) +#20108=* +tokeninfo(#20108,6,#20001,19,"hasOwnProperty") +hasLocation(#20108,#20045) +#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) +#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) +#20119=* +tokeninfo(#20119,8,#20001,26,":") +#20120=@"loc,{#10000},4,14,4,14" +locations_default(#20120,#10000,4,14,4,14) +hasLocation(#20119,#20120) +#20121=* +tokeninfo(#20121,3,#20001,27,"100") +hasLocation(#20121,#20059) +#20122=* +tokeninfo(#20122,8,#20001,28,"}") +#20123=@"loc,{#10000},4,20,4,20" +locations_default(#20123,#10000,4,20,4,20) +hasLocation(#20122,#20123) +#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) +#20127=* +tokeninfo(#20127,8,#20001,31,"::") +#20128=@"loc,{#10000},5,4,5,5" +locations_default(#20128,#10000,5,4,5,5) +hasLocation(#20127,#20128) +#20129=* +tokeninfo(#20129,6,#20001,32,"hasOwnProp") +hasLocation(#20129,#20069) +#20130=* +tokeninfo(#20130,8,#20001,33,"(") +#20131=@"loc,{#10000},5,16,5,16" +locations_default(#20131,#10000,5,16,5,16) +hasLocation(#20130,#20131) +#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) +#20137=* +tokeninfo(#20137,0,#20001,37,"") +#20138=@"loc,{#10000},5,22,5,21" +locations_default(#20138,#10000,5,22,5,21) +hasLocation(#20137,#20138) +#20139=* +entry_cfg_node(#20139,#20001) +#20140=@"loc,{#10000},1,1,1,0" +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) +numlines(#10000,5,4,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/helloworld/input/hello.js b/javascript/extractor/tests/helloworld/input/hello.js new file mode 100644 index 00000000000..fc7084624d5 --- /dev/null +++ b/javascript/extractor/tests/helloworld/input/hello.js @@ -0,0 +1 @@ +alert("Hello, world!"); \ No newline at end of file diff --git a/javascript/extractor/tests/helloworld/output/trap/hello.js.trap b/javascript/extractor/tests/helloworld/output/trap/hello.js.trap new file mode 100644 index 00000000000..17566af6556 --- /dev/null +++ b/javascript/extractor/tests/helloworld/output/trap/hello.js.trap @@ -0,0 +1,90 @@ +#10000=@"/hello.js;sourcefile" +files(#10000,"/hello.js","hello","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +numlines(#20001,1,1,0) +#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) +#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) +#20022=* +entry_cfg_node(#20022,#20001) +#20023=@"loc,{#10000},1,1,1,0" +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) +numlines(#10000,1,1,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/html-text-extraction/input/text-examples.html b/javascript/extractor/tests/html-text-extraction/input/text-examples.html new file mode 100644 index 00000000000..4c69b8a6c3e --- /dev/null +++ b/javascript/extractor/tests/html-text-extraction/input/text-examples.html @@ -0,0 +1,25 @@ + + + + + + text1 +
+ text2 +
+ text3 +
text4
+ text5 +
+ text6 +
text7
+ text8text10text13 +
+
+ +
+ text14 +
entity1: & entity2: > entity3: < entity4: & entity5: > entity6: <
+ + + diff --git a/javascript/extractor/tests/html-text-extraction/options.json b/javascript/extractor/tests/html-text-extraction/options.json new file mode 100644 index 00000000000..6230811198f --- /dev/null +++ b/javascript/extractor/tests/html-text-extraction/options.json @@ -0,0 +1,3 @@ +{ + "html": "all" +} diff --git a/javascript/extractor/tests/html-text-extraction/output/trap/text-examples.html.trap b/javascript/extractor/tests/html-text-extraction/output/trap/text-examples.html.trap new file mode 100644 index 00000000000..022f91fa9e6 --- /dev/null +++ b/javascript/extractor/tests/html-text-extraction/output/trap/text-examples.html.trap @@ -0,0 +1,242 @@ +#10000=@"/text-examples.html;sourcefile" +files(#10000,"/text-examples.html","text-examples","html",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=* +xmlElements(#20001,"html",#10000,0,#10000) +#20002=@"loc,{#10000},1,1,25,7" +locations_default(#20002,#10000,1,1,25,7) +xmllocations(#20001,#20002) +#20003=* +xmlChars(#20003," +",#10000,1,0,#10000) +#20004=@"loc,{#10000},25,8,25,8" +locations_default(#20004,#10000,25,8,25,8) +xmllocations(#20003,#20004) +#20005=* +xmlChars(#20005," + ",#20001,0,0,#10000) +#20006=@"loc,{#10000},1,7,2,3" +locations_default(#20006,#10000,1,7,2,3) +xmllocations(#20005,#20006) +#20007=* +xmlElements(#20007,"head",#20001,1,#10000) +#20008=@"loc,{#10000},2,4,4,10" +locations_default(#20008,#10000,2,4,4,10) +xmllocations(#20007,#20008) +#20009=* +xmlChars(#20009," + ",#20001,2,0,#10000) +#20010=@"loc,{#10000},4,11,5,3" +locations_default(#20010,#10000,4,11,5,3) +xmllocations(#20009,#20010) +#20011=* +xmlElements(#20011,"body",#20001,3,#10000) +#20012=@"loc,{#10000},5,4,24,10" +locations_default(#20012,#10000,5,4,24,10) +xmllocations(#20011,#20012) +#20013=* +xmlChars(#20013," +",#20001,4,0,#10000) +#20014=@"loc,{#10000},24,11,24,11" +locations_default(#20014,#10000,24,11,24,11) +xmllocations(#20013,#20014) +#20015=* +xmlChars(#20015," + ",#20007,0,0,#10000) +#20016=@"loc,{#10000},2,10,3,6" +locations_default(#20016,#10000,2,10,3,6) +xmllocations(#20015,#20016) +#20017=* +xmlElements(#20017,"title",#20007,1,#10000) +#20018=@"loc,{#10000},3,7,3,21" +locations_default(#20018,#10000,3,7,3,21) +xmllocations(#20017,#20018) +#20019=* +xmlChars(#20019," + ",#20007,2,0,#10000) +#20020=@"loc,{#10000},3,22,4,3" +locations_default(#20020,#10000,3,22,4,3) +xmllocations(#20019,#20020) +#20021=* +xmlChars(#20021," + text1 + ",#20011,0,0,#10000) +#20022=@"loc,{#10000},5,10,7,6" +locations_default(#20022,#10000,5,10,7,6) +xmllocations(#20021,#20022) +#20023=* +xmlElements(#20023,"div",#20011,1,#10000) +#20024=@"loc,{#10000},7,7,7,12" +locations_default(#20024,#10000,7,7,7,12) +xmllocations(#20023,#20024) +#20025=* +xmlChars(#20025," + text2 + ",#20011,2,0,#10000) +#20026=@"loc,{#10000},7,13,9,6" +locations_default(#20026,#10000,7,13,9,6) +xmllocations(#20025,#20026) +#20027=* +xmlElements(#20027,"div",#20011,3,#10000) +#20028=@"loc,{#10000},9,7,9,11" +locations_default(#20028,#10000,9,7,9,11) +xmllocations(#20027,#20028) +#20029=* +xmlChars(#20029," + text3 + ",#20011,4,0,#10000) +#20030=@"loc,{#10000},9,12,11,6" +locations_default(#20030,#10000,9,12,11,6) +xmllocations(#20029,#20030) +#20031=* +xmlElements(#20031,"div",#20011,5,#10000) +#20032=@"loc,{#10000},11,7,11,22" +locations_default(#20032,#10000,11,7,11,22) +xmllocations(#20031,#20032) +#20033=* +xmlChars(#20033," + text5 + ",#20011,6,0,#10000) +#20034=@"loc,{#10000},11,23,13,6" +locations_default(#20034,#10000,11,23,13,6) +xmllocations(#20033,#20034) +#20035=* +xmlElements(#20035,"div",#20011,7,#10000) +#20036=@"loc,{#10000},13,7,13,12" +locations_default(#20036,#10000,13,7,13,12) +xmllocations(#20035,#20036) +#20037=* +xmlChars(#20037," + text6 + ",#20011,8,0,#10000) +#20038=@"loc,{#10000},13,13,15,6" +locations_default(#20038,#10000,13,13,15,6) +xmllocations(#20037,#20038) +#20039=* +xmlElements(#20039,"div",#20011,9,#10000) +#20040=@"loc,{#10000},15,7,15,23" +locations_default(#20040,#10000,15,7,15,23) +xmllocations(#20039,#20040) +#20041=* +xmlChars(#20041," + text8",#20011,10,0,#10000) +#20042=@"loc,{#10000},15,24,16,11" +locations_default(#20042,#10000,15,24,16,11) +xmllocations(#20041,#20042) +#20043=* +xmlChars(#20043,"text9",#20011,11,1,#10000) +#20044=@"loc,{#10000},16,21,16,25" +locations_default(#20044,#10000,16,21,16,25) +xmllocations(#20043,#20044) +#20045=* +xmlChars(#20045,"text10",#20011,12,0,#10000) +#20046=@"loc,{#10000},16,29,16,34" +locations_default(#20046,#10000,16,29,16,34) +xmllocations(#20045,#20046) +#20047=* +xmlChars(#20047,"text11",#20011,13,1,#10000) +#20048=@"loc,{#10000},16,44,16,49" +locations_default(#20048,#10000,16,44,16,49) +xmllocations(#20047,#20048) +#20049=* +xmlChars(#20049,"text12",#20011,14,1,#10000) +#20050=@"loc,{#10000},16,62,16,67" +locations_default(#20050,#10000,16,62,16,67) +xmllocations(#20049,#20050) +#20051=* +xmlChars(#20051,"text13 + ",#20011,15,0,#10000) +#20052=@"loc,{#10000},16,71,17,6" +locations_default(#20052,#10000,16,71,17,6) +xmllocations(#20051,#20052) +#20053=* +xmlElements(#20053,"div",#20011,16,#10000) +#20054=@"loc,{#10000},17,7,17,12" +locations_default(#20054,#10000,17,7,17,12) +xmllocations(#20053,#20054) +#20055=* +xmlChars(#20055," + ",#20011,17,0,#10000) +#20056=@"loc,{#10000},17,13,18,6" +locations_default(#20056,#10000,17,13,18,6) +xmllocations(#20055,#20056) +#20057=* +xmlElements(#20057,"div",#20011,18,#10000) +#20058=@"loc,{#10000},18,7,18,12" +locations_default(#20058,#10000,18,7,18,12) +xmllocations(#20057,#20058) +#20059=* +xmlChars(#20059," + ",#20011,19,0,#10000) +#20060=@"loc,{#10000},18,13,19,6" +locations_default(#20060,#10000,18,13,19,6) +xmllocations(#20059,#20060) +#20061=* +xmlComments(#20061,"",#20011,#10000) +#20062=@"loc,{#10000},19,7,19,32" +locations_default(#20062,#10000,19,7,19,32) +xmllocations(#20061,#20062) +#20063=* +xmlChars(#20063," + ",#20011,20,0,#10000) +#20064=@"loc,{#10000},19,33,20,6" +locations_default(#20064,#10000,19,33,20,6) +xmllocations(#20063,#20064) +#20065=* +xmlElements(#20065,"div",#20011,21,#10000) +#20066=@"loc,{#10000},20,7,20,12" +locations_default(#20066,#10000,20,7,20,12) +xmllocations(#20065,#20066) +#20067=* +xmlChars(#20067," + text14 + ",#20011,22,0,#10000) +#20068=@"loc,{#10000},20,13,22,6" +locations_default(#20068,#10000,20,13,22,6) +xmllocations(#20067,#20068) +#20069=* +xmlElements(#20069,"div",#20011,23,#10000) +#20070=@"loc,{#10000},22,7,22,104" +locations_default(#20070,#10000,22,7,22,104) +xmllocations(#20069,#20070) +#20071=* +xmlChars(#20071," + ",#20011,24,0,#10000) +#20072=@"loc,{#10000},22,105,23,6" +locations_default(#20072,#10000,22,105,23,6) +xmllocations(#20071,#20072) +#20073=* +xmlChars(#20073,"non-entity1: & non-entity2: > non-entity3: <",#20011,25,1,#10000) +#20074=@"loc,{#10000},23,16,23,69" +locations_default(#20074,#10000,23,16,23,69) +xmllocations(#20073,#20074) +#20075=* +xmlChars(#20075," + ",#20011,26,0,#10000) +#20076=@"loc,{#10000},23,73,24,3" +locations_default(#20076,#10000,23,73,24,3) +xmllocations(#20075,#20076) +#20077=* +xmlChars(#20077,"text4",#20031,0,0,#10000) +#20078=@"loc,{#10000},11,12,11,16" +locations_default(#20078,#10000,11,12,11,16) +xmllocations(#20077,#20078) +#20079=* +xmlChars(#20079,"text7",#20039,0,0,#10000) +#20080=@"loc,{#10000},15,13,15,17" +locations_default(#20080,#10000,15,13,15,17) +xmllocations(#20079,#20080) +#20081=* +xmlChars(#20081,"entity1: & entity2: > entity3: < entity4: & entity5: > entity6: <",#20069,0,0,#10000) +#20082=@"loc,{#10000},22,12,22,98" +locations_default(#20082,#10000,22,12,22,98) +xmllocations(#20081,#20082) +numlines(#10000,25,0,0) +filetype(#10000,"html") diff --git a/javascript/extractor/tests/html/input/doctype.html b/javascript/extractor/tests/html/input/doctype.html new file mode 100644 index 00000000000..0e76edd65b7 --- /dev/null +++ b/javascript/extractor/tests/html/input/doctype.html @@ -0,0 +1 @@ + diff --git a/javascript/extractor/tests/html/input/empty_script.html b/javascript/extractor/tests/html/input/empty_script.html new file mode 100644 index 00000000000..f2b112da655 --- /dev/null +++ b/javascript/extractor/tests/html/input/empty_script.html @@ -0,0 +1,6 @@ + + + + + diff --git a/javascript/extractor/tests/html/input/entities.html b/javascript/extractor/tests/html/input/entities.html new file mode 100644 index 00000000000..13977d98e84 --- /dev/null +++ b/javascript/extractor/tests/html/input/entities.html @@ -0,0 +1,8 @@ + + + Test page + + +
click here + + \ No newline at end of file diff --git a/javascript/extractor/tests/html/input/module.html b/javascript/extractor/tests/html/input/module.html new file mode 100644 index 00000000000..d5abf9708e8 --- /dev/null +++ b/javascript/extractor/tests/html/input/module.html @@ -0,0 +1,11 @@ + + + Test page + + + + + \ No newline at end of file diff --git a/javascript/extractor/tests/html/input/q.html b/javascript/extractor/tests/html/input/q.html new file mode 100644 index 00000000000..3a6f8b8c0c9 --- /dev/null +++ b/javascript/extractor/tests/html/input/q.html @@ -0,0 +1,8 @@ + + +

+ +

+ + + diff --git a/javascript/extractor/tests/html/input/tst.html b/javascript/extractor/tests/html/input/tst.html new file mode 100644 index 00000000000..3113fce38cd --- /dev/null +++ b/javascript/extractor/tests/html/input/tst.html @@ -0,0 +1,18 @@ + + + Test page + + + + + + click here +
don't click here
+ can't click this one + + + + + \ No newline at end of file diff --git a/javascript/extractor/tests/html/input/tst.xhtml b/javascript/extractor/tests/html/input/tst.xhtml new file mode 100644 index 00000000000..c7fe7141b43 --- /dev/null +++ b/javascript/extractor/tests/html/input/tst.xhtml @@ -0,0 +1,12 @@ + + + + Example page + + + + + \ No newline at end of file diff --git a/javascript/extractor/tests/html/input/tst2.html b/javascript/extractor/tests/html/input/tst2.html new file mode 100644 index 00000000000..16dbbe10fcb --- /dev/null +++ b/javascript/extractor/tests/html/input/tst2.html @@ -0,0 +1,10 @@ + + + + + + diff --git a/javascript/extractor/tests/html/input/tst2.xhtml b/javascript/extractor/tests/html/input/tst2.xhtml new file mode 100644 index 00000000000..77585ef028c --- /dev/null +++ b/javascript/extractor/tests/html/input/tst2.xhtml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/javascript/extractor/tests/html/output/trap/doctype.html.trap b/javascript/extractor/tests/html/output/trap/doctype.html.trap new file mode 100644 index 00000000000..2624d53f031 --- /dev/null +++ b/javascript/extractor/tests/html/output/trap/doctype.html.trap @@ -0,0 +1,12 @@ +#10000=@"/doctype.html;sourcefile" +files(#10000,"/doctype.html","doctype","html",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) +numlines(#10000,1,0,0) +filetype(#10000,"html") diff --git a/javascript/extractor/tests/html/output/trap/empty_script.html.trap b/javascript/extractor/tests/html/output/trap/empty_script.html.trap new file mode 100644 index 00000000000..bcb4c5adf87 --- /dev/null +++ b/javascript/extractor/tests/html/output/trap/empty_script.html.trap @@ -0,0 +1,37 @@ +#10000=@"/empty_script.html;sourcefile" +files(#10000,"/empty_script.html","empty_script","html",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=* +xmlElements(#20001,"html",#10000,0,#10000) +#20002=@"loc,{#10000},1,1,6,7" +locations_default(#20002,#10000,1,1,6,7) +xmllocations(#20001,#20002) +#20003=* +xmlElements(#20003,"head",#20001,0,#10000) +#20004=@"loc,{#10000},2,3,5,9" +locations_default(#20004,#10000,2,3,5,9) +xmllocations(#20003,#20004) +#20005=* +xmlElements(#20005,"script",#20003,0,#10000) +#20006=@"loc,{#10000},3,5,4,13" +locations_default(#20006,#10000,3,5,4,13) +xmllocations(#20005,#20006) +#20007=* +xmlAttrs(#20007,#20005,"type","text/javascript",0,#10000) +#20008=@"loc,{#10000},3,13,3,34" +locations_default(#20008,#10000,3,13,3,34) +xmllocations(#20007,#20008) +#20009=* +xmlAttrs(#20009,#20005,"charset","utf-8",1,#10000) +#20010=@"loc,{#10000},3,36,3,50" +locations_default(#20010,#10000,3,36,3,50) +xmllocations(#20009,#20010) +numlines(#10000,6,0,0) +filetype(#10000,"html") diff --git a/javascript/extractor/tests/html/output/trap/entities.html.trap b/javascript/extractor/tests/html/output/trap/entities.html.trap new file mode 100644 index 00000000000..61b8c18ec49 --- /dev/null +++ b/javascript/extractor/tests/html/output/trap/entities.html.trap @@ -0,0 +1,144 @@ +#10000=@"/entities.html;sourcefile" +files(#10000,"/entities.html","entities","html",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},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) +#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) +#20012=* +exprs(#20012,4,#20007,0,"""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) +#20020=* +tokeninfo(#20020,8,#20001,3,"(") +#20021=@"loc,{#10000},6,39,6,39" +locations_default(#20021,#10000,6,39,6,39) +hasLocation(#20020,#20021) +#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) +#20029=* +entry_cfg_node(#20029,#20001) +#20030=@"loc,{#10000},6,29,6,28" +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) +#20032=* +xmlElements(#20032,"html",#10000,0,#10000) +#20033=@"loc,{#10000},1,1,8,7" +locations_default(#20033,#10000,1,1,8,7) +xmllocations(#20032,#20033) +#20034=* +xmlElements(#20034,"head",#20032,0,#10000) +#20035=@"loc,{#10000},2,5,4,11" +locations_default(#20035,#10000,2,5,4,11) +xmllocations(#20034,#20035) +#20036=* +xmlElements(#20036,"body",#20032,1,#10000) +#20037=@"loc,{#10000},5,5,7,11" +locations_default(#20037,#10000,5,5,7,11) +xmllocations(#20036,#20037) +#20038=* +xmlElements(#20038,"title",#20034,0,#10000) +#20039=@"loc,{#10000},3,9,3,32" +locations_default(#20039,#10000,3,9,3,32) +xmllocations(#20038,#20039) +#20040=* +xmlElements(#20040,"a",#20036,0,#10000) +#20041=@"loc,{#10000},6,9,6,80" +locations_default(#20041,#10000,6,9,6,80) +xmllocations(#20040,#20041) +#20042=* +xmlAttrs(#20042,#20040,"href","javascript:void(alert(""Nope!""))",0,#10000) +#20043=@"loc,{#10000},6,12,6,65" +locations_default(#20043,#10000,6,12,6,65) +xmllocations(#20042,#20043) +numlines(#10000,8,1,0) +filetype(#10000,"html") diff --git a/javascript/extractor/tests/html/output/trap/module.html.trap b/javascript/extractor/tests/html/output/trap/module.html.trap new file mode 100644 index 00000000000..848f05a4e1f --- /dev/null +++ b/javascript/extractor/tests/html/output/trap/module.html.trap @@ -0,0 +1,220 @@ +#10000=@"/module.html;sourcefile" +files(#10000,"/module.html","module","html",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},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) +#20014=* +stmts(#20014,2,#20001,1,"foo.baz();") +#20015=@"loc,{#10000},6,13,6,22" +locations_default(#20015,#10000,6,13,6,22) +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) +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) +hasLocation(#20018,#20019) +enclosingStmt(#20018,#20014) +exprContainers(#20018,#20001) +#20020=* +exprs(#20020,79,#20018,0,"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) +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) +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) +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) +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) +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) +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) +#20041=* +tokeninfo(#20041,8,#20001,6,".") +#20042=@"loc,{#10000},6,16,6,16" +locations_default(#20042,#10000,6,16,6,16) +hasLocation(#20041,#20042) +#20043=* +tokeninfo(#20043,6,#20001,7,"baz") +hasLocation(#20043,#20023) +#20044=* +tokeninfo(#20044,8,#20001,8,"(") +#20045=@"loc,{#10000},6,20,6,20" +locations_default(#20045,#10000,6,20,6,20) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,8,#20001,9,")") +#20047=@"loc,{#10000},6,21,6,21" +locations_default(#20047,#10000,6,21,6,21) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,8,#20001,10,";") +#20049=@"loc,{#10000},6,22,6,22" +locations_default(#20049,#10000,6,22,6,22) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,0,#20001,11,"") +#20051=@"loc,{#10000},7,9,7,8" +locations_default(#20051,#10000,7,9,7,8) +hasLocation(#20050,#20051) +#20052=* +entry_cfg_node(#20052,#20001) +hasLocation(#20052,#20025) +#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) +#20054=* +xmlElements(#20054,"html",#10000,0,#10000) +#20055=@"loc,{#10000},1,1,11,7" +locations_default(#20055,#10000,1,1,11,7) +xmllocations(#20054,#20055) +#20056=* +xmlElements(#20056,"head",#20054,0,#10000) +#20057=@"loc,{#10000},2,5,8,11" +locations_default(#20057,#10000,2,5,8,11) +xmllocations(#20056,#20057) +#20058=* +xmlElements(#20058,"body",#20054,1,#10000) +#20059=@"loc,{#10000},9,5,10,11" +locations_default(#20059,#10000,9,5,10,11) +xmllocations(#20058,#20059) +#20060=* +xmlElements(#20060,"title",#20056,0,#10000) +#20061=@"loc,{#10000},3,9,3,32" +locations_default(#20061,#10000,3,9,3,32) +xmllocations(#20060,#20061) +#20062=* +xmlElements(#20062,"script",#20056,1,#10000) +#20063=@"loc,{#10000},4,9,7,17" +locations_default(#20063,#10000,4,9,7,17) +xmllocations(#20062,#20063) +#20064=* +xmlAttrs(#20064,#20062,"type","module",0,#10000) +#20065=@"loc,{#10000},4,17,4,29" +locations_default(#20065,#10000,4,17,4,29) +xmllocations(#20064,#20065) +numlines(#10000,11,2,0) +filetype(#10000,"html") diff --git a/javascript/extractor/tests/html/output/trap/q.html.trap b/javascript/extractor/tests/html/output/trap/q.html.trap new file mode 100644 index 00000000000..ebf42cf0b91 --- /dev/null +++ b/javascript/extractor/tests/html/output/trap/q.html.trap @@ -0,0 +1,47 @@ +#10000=@"/q.html;sourcefile" +files(#10000,"/q.html","q","html",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=* +xmlElements(#20001,"html",#10000,0,#10000) +#20002=@"loc,{#10000},1,1,7,7" +locations_default(#20002,#10000,1,1,7,7) +xmllocations(#20001,#20002) +#20003=* +xmlElements(#20003,"body",#20001,0,#10000) +#20004=@"loc,{#10000},2,3,6,9" +locations_default(#20004,#10000,2,3,6,9) +xmllocations(#20003,#20004) +#20005=* +xmlElements(#20005,"p",#20003,0,#10000) +#20006=@"loc,{#10000},3,5,5,8" +locations_default(#20006,#10000,3,5,5,8) +xmllocations(#20005,#20006) +#20007=* +xmlElements(#20007,"input",#20005,0,#10000) +#20008=@"loc,{#10000},4,7,4,51" +locations_default(#20008,#10000,4,7,4,51) +xmllocations(#20007,#20008) +#20009=* +xmlAttrs(#20009,#20007,"type","button",0,#10000) +#20010=@"loc,{#10000},4,14,4,26" +locations_default(#20010,#10000,4,14,4,26) +xmllocations(#20009,#20010) +#20011=* +xmlAttrs(#20011,#20007,"value","Test",1,#10000) +#20012=@"loc,{#10000},4,28,4,39" +locations_default(#20012,#10000,4,28,4,39) +xmllocations(#20011,#20012) +#20013=* +xmlAttrs(#20013,#20007,"onClick","",2,#10000) +#20014=@"loc,{#10000},4,41,4,50" +locations_default(#20014,#10000,4,41,4,50) +xmllocations(#20013,#20014) +numlines(#10000,8,0,0) +filetype(#10000,"html") diff --git a/javascript/extractor/tests/html/output/trap/tst.html.trap b/javascript/extractor/tests/html/output/trap/tst.html.trap new file mode 100644 index 00000000000..e6b3a2a119b --- /dev/null +++ b/javascript/extractor/tests/html/output/trap/tst.html.trap @@ -0,0 +1,455 @@ +#10000=@"/tst.html;sourcefile" +files(#10000,"/tst.html","tst","html",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},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,""," +") +#20013=@"loc,{#10000},5,17,5,16" +locations_default(#20013,#10000,5,17,5,16) +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) +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) +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) +#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) +#20028=* +entry_cfg_node(#20028,#20001) +hasLocation(#20028,#20013) +#20029=* +exit_cfg_node(#20029,#20001) +hasLocation(#20029,#20027) +successor(#20003,#20007) +successor(#20010,#20005) +successor(#20007,#20010) +successor(#20005,#20029) +successor(#20028,#20003) +#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) +numlines(#20030,1,1,0) +#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) +#20037=* +entry_cfg_node(#20037,#20030) +#20038=@"loc,{#10000},8,17,8,16" +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) +#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) +numlines(#20040,1,1,0) +#20053=* +tokeninfo(#20053,7,#20040,0,"void") +#20054=@"loc,{#10000},11,29,11,32" +locations_default(#20054,#10000,11,29,11,32) +hasLocation(#20053,#20054) +#20055=* +tokeninfo(#20055,8,#20040,1,"(") +#20056=@"loc,{#10000},11,33,11,33" +locations_default(#20056,#10000,11,33,11,33) +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) +#20060=* +tokeninfo(#20060,4,#20040,4,"'Nope!'") +hasLocation(#20060,#20051) +#20061=* +tokeninfo(#20061,8,#20040,5,")") +#20062=@"loc,{#10000},11,47,11,47" +locations_default(#20062,#10000,11,47,11,47) +hasLocation(#20061,#20062) +#20063=* +tokeninfo(#20063,8,#20040,6,")") +#20064=@"loc,{#10000},11,48,11,48" +locations_default(#20064,#10000,11,48,11,48) +hasLocation(#20063,#20064) +#20065=* +tokeninfo(#20065,0,#20040,7,"") +#20066=@"loc,{#10000},11,49,11,48" +locations_default(#20066,#10000,11,49,11,48) +hasLocation(#20065,#20066) +#20067=* +entry_cfg_node(#20067,#20040) +#20068=@"loc,{#10000},11,29,11,28" +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) +#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) +numlines(#20070,1,1,0) +#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) +#20083=* +tokeninfo(#20083,8,#20070,3,")") +#20084=@"loc,{#10000},12,51,12,51" +locations_default(#20084,#10000,12,51,12,51) +hasLocation(#20083,#20084) +#20085=* +tokeninfo(#20085,0,#20070,4,"") +#20086=@"loc,{#10000},12,52,12,51" +locations_default(#20086,#10000,12,52,12,51) +hasLocation(#20085,#20086) +#20087=* +entry_cfg_node(#20087,#20070) +#20088=@"loc,{#10000},12,23,12,22" +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) +#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) +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) +#20099=* +tokeninfo(#20099,8,#20090,2,";") +#20100=@"loc,{#10000},13,33,13,33" +locations_default(#20100,#10000,13,33,13,33) +hasLocation(#20099,#20100) +#20101=* +tokeninfo(#20101,0,#20090,3,"") +#20102=@"loc,{#10000},13,34,13,33" +locations_default(#20102,#10000,13,34,13,33) +hasLocation(#20101,#20102) +#20103=* +entry_cfg_node(#20103,#20090) +#20104=@"loc,{#10000},13,21,13,20" +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) +#20106=* +xmlElements(#20106,"html",#10000,0,#10000) +#20107=@"loc,{#10000},1,1,18,7" +locations_default(#20107,#10000,1,1,18,7) +xmllocations(#20106,#20107) +#20108=* +xmlElements(#20108,"head",#20106,0,#10000) +#20109=@"loc,{#10000},2,5,9,11" +locations_default(#20109,#10000,2,5,9,11) +xmllocations(#20108,#20109) +#20110=* +xmlElements(#20110,"body",#20106,1,#10000) +#20111=@"loc,{#10000},10,5,14,11" +locations_default(#20111,#10000,10,5,14,11) +xmllocations(#20110,#20111) +#20112=* +xmlElements(#20112,"script",#20106,2,#10000) +#20113=@"loc,{#10000},15,5,15,71" +locations_default(#20113,#10000,15,5,15,71) +xmllocations(#20112,#20113) +#20114=* +xmlElements(#20114,"script",#20106,3,#10000) +#20115=@"loc,{#10000},16,5,16,71" +locations_default(#20115,#10000,16,5,16,71) +xmllocations(#20114,#20115) +#20116=* +xmlElements(#20116,"script",#20106,4,#10000) +#20117=@"loc,{#10000},17,5,17,29" +locations_default(#20117,#10000,17,5,17,29) +xmllocations(#20116,#20117) +#20118=* +xmlElements(#20118,"title",#20108,0,#10000) +#20119=@"loc,{#10000},3,9,3,32" +locations_default(#20119,#10000,3,9,3,32) +xmllocations(#20118,#20119) +#20120=* +xmlElements(#20120,"script",#20108,1,#10000) +#20121=@"loc,{#10000},4,9,4,43" +locations_default(#20121,#10000,4,9,4,43) +xmllocations(#20120,#20121) +#20122=* +xmlElements(#20122,"script",#20108,2,#10000) +#20123=@"loc,{#10000},5,9,7,17" +locations_default(#20123,#10000,5,9,7,17) +xmllocations(#20122,#20123) +#20124=* +xmlElements(#20124,"script",#20108,3,#10000) +#20125=@"loc,{#10000},8,9,8,26" +locations_default(#20125,#10000,8,9,8,26) +xmllocations(#20124,#20125) +#20126=* +xmlAttrs(#20126,#20120,"src","external.js",0,#10000) +#20127=@"loc,{#10000},4,17,4,33" +locations_default(#20127,#10000,4,17,4,33) +xmllocations(#20126,#20127) +#20128=* +xmlElements(#20128,"a",#20110,0,#10000) +#20129=@"loc,{#10000},11,9,11,64" +locations_default(#20129,#10000,11,9,11,64) +xmllocations(#20128,#20129) +#20130=* +xmlElements(#20130,"div",#20110,1,#10000) +#20131=@"loc,{#10000},12,9,12,75" +locations_default(#20131,#10000,12,9,12,75) +xmllocations(#20130,#20131) +#20132=* +xmlElements(#20132,"a",#20110,2,#10000) +#20133=@"loc,{#10000},13,9,13,59" +locations_default(#20133,#10000,13,9,13,59) +xmllocations(#20132,#20133) +#20134=* +xmlAttrs(#20134,#20128,"href","javascript:void(alert('Nope!'))",0,#10000) +#20135=@"loc,{#10000},11,12,11,49" +locations_default(#20135,#10000,11,12,11,49) +xmllocations(#20134,#20135) +#20136=* +xmlAttrs(#20136,#20130,"onclick","alert('I said don\'t click!')",0,#10000) +#20137=@"loc,{#10000},12,14,12,52" +locations_default(#20137,#10000,12,14,12,52) +xmllocations(#20136,#20137) +#20138=* +xmlAttrs(#20138,#20132,"onclick","return false;",0,#10000) +#20139=@"loc,{#10000},13,12,13,34" +locations_default(#20139,#10000,13,12,13,34) +xmllocations(#20138,#20139) +#20140=* +xmlAttrs(#20140,#20112,"type","text/x-handlebars-template",0,#10000) +#20141=@"loc,{#10000},15,13,15,45" +locations_default(#20141,#10000,15,13,15,45) +xmllocations(#20140,#20141) +#20142=* +xmlAttrs(#20142,#20114,"TYPE","text/x-handlebars-template",0,#10000) +#20143=@"loc,{#10000},16,13,16,45" +locations_default(#20143,#10000,16,13,16,45) +xmllocations(#20142,#20143) +#20144=* +xmlAttrs(#20144,#20116,"type","",0,#10000) +#20145=@"loc,{#10000},17,13,17,19" +locations_default(#20145,#10000,17,13,17,19) +xmllocations(#20144,#20145) +numlines(#10000,18,5,0) +filetype(#10000,"html") diff --git a/javascript/extractor/tests/html/output/trap/tst.xhtml.trap b/javascript/extractor/tests/html/output/trap/tst.xhtml.trap new file mode 100644 index 00000000000..2ea4a130c1e --- /dev/null +++ b/javascript/extractor/tests/html/output/trap/tst.xhtml.trap @@ -0,0 +1,118 @@ +#10000=@"/tst.xhtml;sourcefile" +files(#10000,"/tst.xhtml","tst","xhtml",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},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,""," +") +#20008=@"loc,{#10000},7,43,7,42" +locations_default(#20008,#10000,7,43,7,42) +hasLocation(#20007,#20008) +#20009=* +lines(#20009,#20001," "," +") +#20010=@"loc,{#10000},8,1,8,14" +locations_default(#20010,#10000,8,1,8,14) +hasLocation(#20009,#20010) +#20011=* +lines(#20011,#20001," 42;"," +") +#20012=@"loc,{#10000},9,1,9,7" +locations_default(#20012,#10000,9,1,9,7) +hasLocation(#20011,#20012) +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) +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) +#20020=* +entry_cfg_node(#20020,#20001) +hasLocation(#20020,#20008) +#20021=* +exit_cfg_node(#20021,#20001) +hasLocation(#20021,#20019) +successor(#20003,#20005) +successor(#20005,#20021) +successor(#20020,#20003) +#20022=* +xmlElements(#20022,"html",#10000,0,#10000) +#20023=@"loc,{#10000},2,1,12,7" +locations_default(#20023,#10000,2,1,12,7) +xmllocations(#20022,#20023) +#20024=* +xmlElements(#20024,"head",#20022,0,#10000) +#20025=@"loc,{#10000},3,1,5,7" +locations_default(#20025,#10000,3,1,5,7) +xmllocations(#20024,#20025) +#20026=* +xmlElements(#20026,"body",#20022,1,#10000) +#20027=@"loc,{#10000},6,1,11,7" +locations_default(#20027,#10000,6,1,11,7) +xmllocations(#20026,#20027) +#20028=* +xmlAttrs(#20028,#20022,"xmlns","http://www.w3.org/1999/xhtml",0,#10000) +#20029=@"loc,{#10000},2,7,2,42" +locations_default(#20029,#10000,2,7,2,42) +xmllocations(#20028,#20029) +#20030=* +xmlAttrs(#20030,#20022,"xml:lang","en",1,#10000) +#20031=@"loc,{#10000},2,44,2,56" +locations_default(#20031,#10000,2,44,2,56) +xmllocations(#20030,#20031) +#20032=* +xmlElements(#20032,"title",#20024,0,#10000) +#20033=@"loc,{#10000},4,5,4,31" +locations_default(#20033,#10000,4,5,4,31) +xmllocations(#20032,#20033) +#20034=* +xmlElements(#20034,"script",#20026,0,#10000) +#20035=@"loc,{#10000},7,5,10,16" +locations_default(#20035,#10000,7,5,10,16) +xmllocations(#20034,#20035) +#20036=* +xmlAttrs(#20036,#20034,"type","application/javascript",0,#10000) +#20037=@"loc,{#10000},7,13,7,41" +locations_default(#20037,#10000,7,13,7,41) +xmllocations(#20036,#20037) +numlines(#10000,12,1,0) +filetype(#10000,"html") diff --git a/javascript/extractor/tests/html/output/trap/tst2.html.trap b/javascript/extractor/tests/html/output/trap/tst2.html.trap new file mode 100644 index 00000000000..0cd62140a70 --- /dev/null +++ b/javascript/extractor/tests/html/output/trap/tst2.html.trap @@ -0,0 +1,362 @@ +#10000=@"/tst2.html;sourcefile" +files(#10000,"/tst2.html","tst2","html",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},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) +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) +#20014=* +tokeninfo(#20014,0,#20001,3,"") +#20015=@"loc,{#10000},2,41,2,40" +locations_default(#20015,#10000,2,41,2,40) +hasLocation(#20014,#20015) +#20016=* +entry_cfg_node(#20016,#20001) +#20017=@"loc,{#10000},2,31,2,30" +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) +#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) +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) +#20032=* +tokeninfo(#20032,0,#20019,3,"") +#20033=@"loc,{#10000},3,39,3,38" +locations_default(#20033,#10000,3,39,3,38) +hasLocation(#20032,#20033) +#20034=* +entry_cfg_node(#20034,#20019) +#20035=@"loc,{#10000},3,29,3,28" +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) +#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,""," +") +#20047=@"loc,{#10000},4,75,4,74" +locations_default(#20047,#10000,4,75,4,74) +hasLocation(#20046,#20047) +#20048=* +lines(#20048,#20037," var inAModule;"," +") +#20049=@"loc,{#10000},5,1,5,20" +locations_default(#20049,#10000,5,1,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) +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) +#20055=* +tokeninfo(#20055,8,#20037,2,";") +#20056=@"loc,{#10000},5,20,5,20" +locations_default(#20056,#10000,5,20,5,20) +hasLocation(#20055,#20056) +#20057=* +tokeninfo(#20057,0,#20037,3,"") +#20058=@"loc,{#10000},6,5,6,4" +locations_default(#20058,#10000,6,5,6,4) +hasLocation(#20057,#20058) +#20059=* +entry_cfg_node(#20059,#20037) +hasLocation(#20059,#20047) +#20060=* +exit_cfg_node(#20060,#20037) +hasLocation(#20060,#20058) +successor(#20041,#20045) +successor(#20045,#20043) +successor(#20043,#20060) +successor(#20059,#20041) +#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,""," +") +#20075=@"loc,{#10000},7,75,7,74" +locations_default(#20075,#10000,7,75,7,74) +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) +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) +#20083=* +tokeninfo(#20083,6,#20061,2,"from") +#20084=@"loc,{#10000},8,16,8,19" +locations_default(#20084,#10000,8,16,8,19) +hasLocation(#20083,#20084) +#20085=* +tokeninfo(#20085,4,#20061,3,"""f""") +hasLocation(#20085,#20070) +#20086=* +tokeninfo(#20086,0,#20061,4,"") +#20087=@"loc,{#10000},9,5,9,4" +locations_default(#20087,#10000,9,5,9,4) +hasLocation(#20086,#20087) +#20088=* +entry_cfg_node(#20088,#20061) +hasLocation(#20088,#20075) +#20089=* +exit_cfg_node(#20089,#20061) +hasLocation(#20089,#20087) +successor(#20067,#20089) +successor(#20071,#20067) +successor(#20088,#20071) +#20090=* +xmlElements(#20090,"html",#10000,0,#10000) +#20091=@"loc,{#10000},1,1,10,7" +locations_default(#20091,#10000,1,1,10,7) +xmllocations(#20090,#20091) +#20092=* +xmlElements(#20092,"script",#20090,0,#10000) +#20093=@"loc,{#10000},2,5,2,49" +locations_default(#20093,#10000,2,5,2,49) +xmllocations(#20092,#20093) +#20094=* +xmlElements(#20094,"script",#20090,1,#10000) +#20095=@"loc,{#10000},3,5,3,47" +locations_default(#20095,#10000,3,5,3,47) +xmllocations(#20094,#20095) +#20096=* +xmlElements(#20096,"script",#20090,2,#10000) +#20097=@"loc,{#10000},4,5,6,13" +locations_default(#20097,#10000,4,5,6,13) +xmllocations(#20096,#20097) +#20098=* +xmlElements(#20098,"script",#20090,3,#10000) +#20099=@"loc,{#10000},7,5,9,13" +locations_default(#20099,#10000,7,5,9,13) +xmllocations(#20098,#20099) +#20100=* +xmlAttrs(#20100,#20092,"type","text/babel",0,#10000) +#20101=@"loc,{#10000},2,13,2,29" +locations_default(#20101,#10000,2,13,2,29) +xmllocations(#20100,#20101) +#20102=* +xmlAttrs(#20102,#20094,"type","text/jsx",0,#10000) +#20103=@"loc,{#10000},3,13,3,27" +locations_default(#20103,#10000,3,13,3,27) +xmllocations(#20102,#20103) +#20104=* +xmlAttrs(#20104,#20096,"type","text/babel",0,#10000) +#20105=@"loc,{#10000},4,13,4,29" +locations_default(#20105,#10000,4,13,4,29) +xmllocations(#20104,#20105) +#20106=* +xmlAttrs(#20106,#20096,"data-plugins","transform-es2015-modules-umd",1,#10000) +#20107=@"loc,{#10000},4,31,4,73" +locations_default(#20107,#10000,4,31,4,73) +xmllocations(#20106,#20107) +#20108=* +xmlAttrs(#20108,#20098,"type","text/babel",0,#10000) +#20109=@"loc,{#10000},7,13,7,29" +locations_default(#20109,#10000,7,13,7,29) +xmllocations(#20108,#20109) +#20110=* +xmlAttrs(#20110,#20098,"data-plugins","transform-es2015-modules-umd",1,#10000) +#20111=@"loc,{#10000},7,31,7,73" +locations_default(#20111,#10000,7,31,7,73) +xmllocations(#20110,#20111) +numlines(#10000,10,4,0) +filetype(#10000,"html") diff --git a/javascript/extractor/tests/html/output/trap/tst2.xhtml.trap b/javascript/extractor/tests/html/output/trap/tst2.xhtml.trap new file mode 100644 index 00000000000..146959f935e --- /dev/null +++ b/javascript/extractor/tests/html/output/trap/tst2.xhtml.trap @@ -0,0 +1,37 @@ +#10000=@"/tst2.xhtml;sourcefile" +files(#10000,"/tst2.xhtml","tst2","xhtml",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=* +xmlElements(#20001,"html",#10000,0,#10000) +#20002=@"loc,{#10000},2,1,8,7" +locations_default(#20002,#10000,2,1,8,7) +xmllocations(#20001,#20002) +#20003=* +xmlElements(#20003,"head",#20001,0,#10000) +#20004=@"loc,{#10000},3,3,6,9" +locations_default(#20004,#10000,3,3,6,9) +xmllocations(#20003,#20004) +#20005=* +xmlElements(#20005,"body",#20001,1,#10000) +#20006=@"loc,{#10000},7,3,7,10" +locations_default(#20006,#10000,7,3,7,10) +xmllocations(#20005,#20006) +#20007=* +xmlElements(#20007,"script",#20003,0,#10000) +#20008=@"loc,{#10000},4,5,5,21" +locations_default(#20008,#10000,4,5,5,21) +xmllocations(#20007,#20008) +#20009=* +xmlAttrs(#20009,#20007,"src","svgunit.js",0,#10000) +#20010=@"loc,{#10000},4,13,4,28" +locations_default(#20010,#10000,4,13,4,28) +xmllocations(#20009,#20010) +numlines(#10000,8,0,0) +filetype(#10000,"html") diff --git a/javascript/extractor/tests/jscript/input/tst.js b/javascript/extractor/tests/jscript/input/tst.js new file mode 100644 index 00000000000..f616ecbbadb --- /dev/null +++ b/javascript/extractor/tests/jscript/input/tst.js @@ -0,0 +1 @@ +function ISMTPOnArrival::OnArrival( Msg, States) { } \ No newline at end of file diff --git a/javascript/extractor/tests/jscript/options.json b/javascript/extractor/tests/jscript/options.json new file mode 100644 index 00000000000..075583ca1f6 --- /dev/null +++ b/javascript/extractor/tests/jscript/options.json @@ -0,0 +1,3 @@ +{ + "experimental": true +} diff --git a/javascript/extractor/tests/jscript/output/trap/tst.js.trap b/javascript/extractor/tests/jscript/output/trap/tst.js.trap new file mode 100644 index 00000000000..bd0c31aee50 --- /dev/null +++ b/javascript/extractor/tests/jscript/output/trap/tst.js.trap @@ -0,0 +1,181 @@ +#10000=@"/tst.js;sourcefile" +files(#10000,"/tst.js","tst","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +#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) +#20010=* +exprs(#20010,0,#20005,1,"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) +#20020=* +exprs(#20020,78,#20012,1,"States") +#20021=@"loc,{#10000},1,42,1,47" +locations_default(#20021,#10000,1,42,1,47) +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) +#20026=* +tokeninfo(#20026,7,#20001,0,"function") +#20027=@"loc,{#10000},1,1,1,8" +locations_default(#20027,#10000,1,1,1,8) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,6,#20001,1,"ISMTPOnArrival") +hasLocation(#20028,#20008) +#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) +#20032=* +tokeninfo(#20032,8,#20001,4,"(") +#20033=@"loc,{#10000},1,35,1,35" +locations_default(#20033,#10000,1,35,1,35) +hasLocation(#20032,#20033) +#20034=* +tokeninfo(#20034,6,#20001,5,"Msg") +hasLocation(#20034,#20018) +#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) +#20038=* +tokeninfo(#20038,8,#20001,8,")") +#20039=@"loc,{#10000},1,48,1,48" +locations_default(#20039,#10000,1,48,1,48) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,9,"{") +#20041=@"loc,{#10000},1,50,1,50" +locations_default(#20041,#10000,1,50,1,50) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,10,"}") +#20043=@"loc,{#10000},1,52,1,52" +locations_default(#20043,#10000,1,52,1,52) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,0,#20001,11,"") +#20045=@"loc,{#10000},1,53,1,52" +locations_default(#20045,#10000,1,53,1,52) +hasLocation(#20044,#20045) +#20046=* +entry_cfg_node(#20046,#20001) +#20047=@"loc,{#10000},1,1,1,0" +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) +#20049=* +entry_cfg_node(#20049,#20012) +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) +numlines(#10000,1,1,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/json/input/array.json b/javascript/extractor/tests/json/input/array.json new file mode 100644 index 00000000000..fe51488c706 --- /dev/null +++ b/javascript/extractor/tests/json/input/array.json @@ -0,0 +1 @@ +[] diff --git a/javascript/extractor/tests/json/input/comments.json b/javascript/extractor/tests/json/input/comments.json new file mode 100644 index 00000000000..bdc2822bed3 --- /dev/null +++ b/javascript/extractor/tests/json/input/comments.json @@ -0,0 +1,5 @@ +{ + // comments aren't legal JSON + "hello": "world" + /* no, not even block comments */ +} diff --git a/javascript/extractor/tests/json/input/duplicate-keys.json b/javascript/extractor/tests/json/input/duplicate-keys.json new file mode 100644 index 00000000000..da94b48fb18 --- /dev/null +++ b/javascript/extractor/tests/json/input/duplicate-keys.json @@ -0,0 +1,4 @@ +{ + "x": 23, + "x": 42 +} diff --git a/javascript/extractor/tests/json/input/empty.json b/javascript/extractor/tests/json/input/empty.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/javascript/extractor/tests/json/input/error.json b/javascript/extractor/tests/json/input/error.json new file mode 100644 index 00000000000..81750b96f9d --- /dev/null +++ b/javascript/extractor/tests/json/input/error.json @@ -0,0 +1 @@ +{ \ No newline at end of file diff --git a/javascript/extractor/tests/json/input/f/ignored.json b/javascript/extractor/tests/json/input/f/ignored.json new file mode 100644 index 00000000000..9e26dfeeb6e --- /dev/null +++ b/javascript/extractor/tests/json/input/f/ignored.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/javascript/extractor/tests/json/input/invalid.json b/javascript/extractor/tests/json/input/invalid.json new file mode 100644 index 00000000000..bf2cbc86091 --- /dev/null +++ b/javascript/extractor/tests/json/input/invalid.json @@ -0,0 +1,3 @@ +{ + x: 23 +} \ No newline at end of file diff --git a/javascript/extractor/tests/json/input/neg.json b/javascript/extractor/tests/json/input/neg.json new file mode 100644 index 00000000000..d7d17fcbef9 --- /dev/null +++ b/javascript/extractor/tests/json/input/neg.json @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/javascript/extractor/tests/json/input/neg2.json b/javascript/extractor/tests/json/input/neg2.json new file mode 100644 index 00000000000..9a11babd84d --- /dev/null +++ b/javascript/extractor/tests/json/input/neg2.json @@ -0,0 +1 @@ +[1, -2] \ No newline at end of file diff --git a/javascript/extractor/tests/json/input/null.json b/javascript/extractor/tests/json/input/null.json new file mode 100644 index 00000000000..ec747fa47dd --- /dev/null +++ b/javascript/extractor/tests/json/input/null.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/javascript/extractor/tests/json/input/omitted.json b/javascript/extractor/tests/json/input/omitted.json new file mode 100644 index 00000000000..3c217190c7c --- /dev/null +++ b/javascript/extractor/tests/json/input/omitted.json @@ -0,0 +1,3 @@ +{ + "x": [ , 23 ] +} \ No newline at end of file diff --git a/javascript/extractor/tests/json/input/tst.json b/javascript/extractor/tests/json/input/tst.json new file mode 100644 index 00000000000..f0fd30be204 --- /dev/null +++ b/javascript/extractor/tests/json/input/tst.json @@ -0,0 +1,7 @@ +{ + "hello": "world", + "o": { + "x": 23, + "y": 42 + } +} \ No newline at end of file diff --git a/javascript/extractor/tests/json/output/trap/array.json.trap b/javascript/extractor/tests/json/output/trap/array.json.trap new file mode 100644 index 00000000000..96a00626519 --- /dev/null +++ b/javascript/extractor/tests/json/output/trap/array.json.trap @@ -0,0 +1,15 @@ +#10000=@"/array.json;sourcefile" +files(#10000,"/array.json","array","json",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=* +json(#20000,4,#10000,0,"[]") +#20001=@"loc,{#10000},1,1,1,2" +locations_default(#20001,#10000,1,1,1,2) +hasLocation(#20000,#20001) +numlines(#10000,1,0,0) +filetype(#10000,"json") diff --git a/javascript/extractor/tests/json/output/trap/comments.json.trap b/javascript/extractor/tests/json/output/trap/comments.json.trap new file mode 100644 index 00000000000..3e18082880b --- /dev/null +++ b/javascript/extractor/tests/json/output/trap/comments.json.trap @@ -0,0 +1,32 @@ +#10000=@"/comments.json;sourcefile" +files(#10000,"/comments.json","comments","json",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=* +json(#20000,5,#10000,0,"{\n // ... ts */\n}") +#20001=@"loc,{#10000},1,1,5,1" +locations_default(#20001,#10000,1,1,5,1) +hasLocation(#20000,#20001) +#20002=* +json(#20002,3,#20000,0,"""world""") +#20003=@"loc,{#10000},3,12,3,18" +locations_default(#20003,#10000,3,12,3,18) +hasLocation(#20002,#20003) +json_literals("world","""world""",#20002) +json_properties(#20000,"hello",#20002) +#20004=* +json_errors(#20004,"Error: Comments are not legal in JSON.") +#20005=@"loc,{#10000},2,3,2,3" +locations_default(#20005,#10000,2,3,2,3) +hasLocation(#20004,#20005) +#20006=* +json_errors(#20006,"Error: Comments are not legal in JSON.") +#20007=@"loc,{#10000},4,3,4,3" +locations_default(#20007,#10000,4,3,4,3) +hasLocation(#20006,#20007) +numlines(#10000,5,0,0) +filetype(#10000,"json") diff --git a/javascript/extractor/tests/json/output/trap/duplicate-keys.json.trap b/javascript/extractor/tests/json/output/trap/duplicate-keys.json.trap new file mode 100644 index 00000000000..ebc28d147bf --- /dev/null +++ b/javascript/extractor/tests/json/output/trap/duplicate-keys.json.trap @@ -0,0 +1,29 @@ +#10000=@"/duplicate-keys.json;sourcefile" +files(#10000,"/duplicate-keys.json","duplicate-keys","json",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=* +json(#20000,5,#10000,0,"{\n "" ... "": 42\n}") +#20001=@"loc,{#10000},1,1,4,1" +locations_default(#20001,#10000,1,1,4,1) +hasLocation(#20000,#20001) +#20002=* +json(#20002,2,#20000,0,"23") +#20003=@"loc,{#10000},2,10,2,11" +locations_default(#20003,#10000,2,10,2,11) +hasLocation(#20002,#20003) +json_literals("23","23",#20002) +json_properties(#20000,"x",#20002) +#20004=* +json(#20004,2,#20000,1,"42") +#20005=@"loc,{#10000},3,10,3,11" +locations_default(#20005,#10000,3,10,3,11) +hasLocation(#20004,#20005) +json_literals("42","42",#20004) +json_properties(#20000,"x",#20004) +numlines(#10000,4,0,0) +filetype(#10000,"json") diff --git a/javascript/extractor/tests/json/output/trap/empty.json.trap b/javascript/extractor/tests/json/output/trap/empty.json.trap new file mode 100644 index 00000000000..e8a3aa4d813 --- /dev/null +++ b/javascript/extractor/tests/json/output/trap/empty.json.trap @@ -0,0 +1,15 @@ +#10000=@"/empty.json;sourcefile" +files(#10000,"/empty.json","empty","json",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=* +json_errors(#20000,"Error: Unexpected token") +#20001=@"loc,{#10000},1,1,1,1" +locations_default(#20001,#10000,1,1,1,1) +hasLocation(#20000,#20001) +numlines(#10000,0,0,0) +filetype(#10000,"json") diff --git a/javascript/extractor/tests/json/output/trap/error.json.trap b/javascript/extractor/tests/json/output/trap/error.json.trap new file mode 100644 index 00000000000..dd2dc094850 --- /dev/null +++ b/javascript/extractor/tests/json/output/trap/error.json.trap @@ -0,0 +1,15 @@ +#10000=@"/error.json;sourcefile" +files(#10000,"/error.json","error","json",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=* +json_errors(#20000,"Error: Unexpected token") +#20001=@"loc,{#10000},1,2,1,2" +locations_default(#20001,#10000,1,2,1,2) +hasLocation(#20000,#20001) +numlines(#10000,1,0,0) +filetype(#10000,"json") diff --git a/javascript/extractor/tests/json/output/trap/invalid.json.trap b/javascript/extractor/tests/json/output/trap/invalid.json.trap new file mode 100644 index 00000000000..d607af95198 --- /dev/null +++ b/javascript/extractor/tests/json/output/trap/invalid.json.trap @@ -0,0 +1,15 @@ +#10000=@"/invalid.json;sourcefile" +files(#10000,"/invalid.json","invalid","json",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=* +json_errors(#20000,"Error: JSON object property keys must be string literals.") +#20001=@"loc,{#10000},2,5,2,5" +locations_default(#20001,#10000,2,5,2,5) +hasLocation(#20000,#20001) +numlines(#10000,3,0,0) +filetype(#10000,"json") diff --git a/javascript/extractor/tests/json/output/trap/neg.json.trap b/javascript/extractor/tests/json/output/trap/neg.json.trap new file mode 100644 index 00000000000..fb584fbb0cf --- /dev/null +++ b/javascript/extractor/tests/json/output/trap/neg.json.trap @@ -0,0 +1,16 @@ +#10000=@"/neg.json;sourcefile" +files(#10000,"/neg.json","neg","json",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=* +json(#20000,2,#10000,0,"-1") +#20001=@"loc,{#10000},1,1,1,2" +locations_default(#20001,#10000,1,1,1,2) +hasLocation(#20000,#20001) +json_literals("-1","-1",#20000) +numlines(#10000,1,0,0) +filetype(#10000,"json") diff --git a/javascript/extractor/tests/json/output/trap/neg2.json.trap b/javascript/extractor/tests/json/output/trap/neg2.json.trap new file mode 100644 index 00000000000..50031abfc20 --- /dev/null +++ b/javascript/extractor/tests/json/output/trap/neg2.json.trap @@ -0,0 +1,27 @@ +#10000=@"/neg2.json;sourcefile" +files(#10000,"/neg2.json","neg2","json",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=* +json(#20000,4,#10000,0,"[1, -2]") +#20001=@"loc,{#10000},1,1,1,7" +locations_default(#20001,#10000,1,1,1,7) +hasLocation(#20000,#20001) +#20002=* +json(#20002,2,#20000,0,"1") +#20003=@"loc,{#10000},1,2,1,2" +locations_default(#20003,#10000,1,2,1,2) +hasLocation(#20002,#20003) +json_literals("1","1",#20002) +#20004=* +json(#20004,2,#20000,1,"-2") +#20005=@"loc,{#10000},1,5,1,6" +locations_default(#20005,#10000,1,5,1,6) +hasLocation(#20004,#20005) +json_literals("-2","-2",#20004) +numlines(#10000,1,0,0) +filetype(#10000,"json") diff --git a/javascript/extractor/tests/json/output/trap/null.json.trap b/javascript/extractor/tests/json/output/trap/null.json.trap new file mode 100644 index 00000000000..f8c076aff39 --- /dev/null +++ b/javascript/extractor/tests/json/output/trap/null.json.trap @@ -0,0 +1,16 @@ +#10000=@"/null.json;sourcefile" +files(#10000,"/null.json","null","json",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=* +json(#20000,0,#10000,0,"null") +#20001=@"loc,{#10000},1,1,1,4" +locations_default(#20001,#10000,1,1,1,4) +hasLocation(#20000,#20001) +json_literals("null","null",#20000) +numlines(#10000,1,0,0) +filetype(#10000,"json") diff --git a/javascript/extractor/tests/json/output/trap/omitted.json.trap b/javascript/extractor/tests/json/output/trap/omitted.json.trap new file mode 100644 index 00000000000..581d3f2f103 --- /dev/null +++ b/javascript/extractor/tests/json/output/trap/omitted.json.trap @@ -0,0 +1,15 @@ +#10000=@"/omitted.json;sourcefile" +files(#10000,"/omitted.json","omitted","json",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=* +json_errors(#20000,"Error: Omitted elements are not allowed in JSON.") +#20001=@"loc,{#10000},2,12,2,12" +locations_default(#20001,#10000,2,12,2,12) +hasLocation(#20000,#20001) +numlines(#10000,3,0,0) +filetype(#10000,"json") diff --git a/javascript/extractor/tests/json/output/trap/tst.json.trap b/javascript/extractor/tests/json/output/trap/tst.json.trap new file mode 100644 index 00000000000..35ea0d83975 --- /dev/null +++ b/javascript/extractor/tests/json/output/trap/tst.json.trap @@ -0,0 +1,42 @@ +#10000=@"/tst.json;sourcefile" +files(#10000,"/tst.json","tst","json",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=* +json(#20000,5,#10000,0,"{\n "" ... }\n}") +#20001=@"loc,{#10000},1,1,7,1" +locations_default(#20001,#10000,1,1,7,1) +hasLocation(#20000,#20001) +#20002=* +json(#20002,3,#20000,0,"""world""") +#20003=@"loc,{#10000},2,14,2,20" +locations_default(#20003,#10000,2,14,2,20) +hasLocation(#20002,#20003) +json_literals("world","""world""",#20002) +json_properties(#20000,"hello",#20002) +#20004=* +json(#20004,5,#20000,1,"{\n ... 2\n }") +#20005=@"loc,{#10000},3,10,6,5" +locations_default(#20005,#10000,3,10,6,5) +hasLocation(#20004,#20005) +#20006=* +json(#20006,2,#20004,0,"23") +#20007=@"loc,{#10000},4,14,4,15" +locations_default(#20007,#10000,4,14,4,15) +hasLocation(#20006,#20007) +json_literals("23","23",#20006) +json_properties(#20004,"x",#20006) +#20008=* +json(#20008,2,#20004,1,"42") +#20009=@"loc,{#10000},5,14,5,15" +locations_default(#20009,#10000,5,14,5,15) +hasLocation(#20008,#20009) +json_literals("42","42",#20008) +json_properties(#20004,"y",#20008) +json_properties(#20000,"o",#20004) +numlines(#10000,7,0,0) +filetype(#10000,"json") diff --git a/javascript/extractor/tests/jsx/input/err1.jsx b/javascript/extractor/tests/jsx/input/err1.jsx new file mode 100644 index 00000000000..8aa93574714 --- /dev/null +++ b/javascript/extractor/tests/jsx/input/err1.jsx @@ -0,0 +1 @@ + diff --git a/javascript/extractor/tests/jsx/input/err2.jsx b/javascript/extractor/tests/jsx/input/err2.jsx new file mode 100644 index 00000000000..b554d9e46a8 --- /dev/null +++ b/javascript/extractor/tests/jsx/input/err2.jsx @@ -0,0 +1 @@ +<> diff --git a/javascript/extractor/tests/jsx/input/err3.jsx b/javascript/extractor/tests/jsx/input/err3.jsx new file mode 100644 index 00000000000..5d1ad4afe52 --- /dev/null +++ b/javascript/extractor/tests/jsx/input/err3.jsx @@ -0,0 +1 @@ + diff --git a/javascript/extractor/tests/jsx/input/err4.jsx b/javascript/extractor/tests/jsx/input/err4.jsx new file mode 100644 index 00000000000..152e0e84016 --- /dev/null +++ b/javascript/extractor/tests/jsx/input/err4.jsx @@ -0,0 +1 @@ +<> diff --git a/javascript/extractor/tests/jsx/input/tst.js b/javascript/extractor/tests/jsx/input/tst.js new file mode 100644 index 00000000000..75b0733c966 --- /dev/null +++ b/javascript/extractor/tests/jsx/input/tst.js @@ -0,0 +1,5 @@ +; +; +{j}; +; +<> diff --git a/javascript/extractor/tests/jsx/input/tst.jsx b/javascript/extractor/tests/jsx/input/tst.jsx new file mode 100644 index 00000000000..e69de29bb2d diff --git a/javascript/extractor/tests/jsx/input/tst2.js b/javascript/extractor/tests/jsx/input/tst2.js new file mode 100644 index 00000000000..bb807216237 --- /dev/null +++ b/javascript/extractor/tests/jsx/input/tst2.js @@ -0,0 +1 @@ +/b> \ No newline at end of file diff --git a/javascript/extractor/tests/jsx/output/trap/err1.jsx.trap b/javascript/extractor/tests/jsx/output/trap/err1.jsx.trap new file mode 100644 index 00000000000..c19eb4b515f --- /dev/null +++ b/javascript/extractor/tests/jsx/output/trap/err1.jsx.trap @@ -0,0 +1,30 @@ +#10000=@"/err1.jsx;sourcefile" +files(#10000,"/err1.jsx","err1","jsx",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,1" +locations_default(#20002,#10000,1,1,1,1) +hasLocation(#20001,#20002) +#20003=* +jsParseErrors(#20003,#20001,"Error: Unexpected token"," +") +#20004=@"loc,{#10000},1,2,1,2" +locations_default(#20004,#10000,1,2,1,2) +hasLocation(#20003,#20004) +#20005=* +lines(#20005,#20001,""," +") +#20006=@"loc,{#10000},1,1,1,3" +locations_default(#20006,#10000,1,1,1,3) +hasLocation(#20005,#20006) +numlines(#20001,1,0,0) +numlines(#10000,1,0,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/jsx/output/trap/err2.jsx.trap b/javascript/extractor/tests/jsx/output/trap/err2.jsx.trap new file mode 100644 index 00000000000..6cd6cf49bc0 --- /dev/null +++ b/javascript/extractor/tests/jsx/output/trap/err2.jsx.trap @@ -0,0 +1,30 @@ +#10000=@"/err2.jsx;sourcefile" +files(#10000,"/err2.jsx","err2","jsx",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,1" +locations_default(#20002,#10000,1,1,1,1) +hasLocation(#20001,#20002) +#20003=* +jsParseErrors(#20003,#20001,"Error: Unterminated JSX contents","<> +") +#20004=@"loc,{#10000},1,3,1,3" +locations_default(#20004,#10000,1,3,1,3) +hasLocation(#20003,#20004) +#20005=* +lines(#20005,#20001,"<>"," +") +#20006=@"loc,{#10000},1,1,1,2" +locations_default(#20006,#10000,1,1,1,2) +hasLocation(#20005,#20006) +numlines(#20001,1,0,0) +numlines(#10000,1,0,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/jsx/output/trap/err3.jsx.trap b/javascript/extractor/tests/jsx/output/trap/err3.jsx.trap new file mode 100644 index 00000000000..2450d3776dc --- /dev/null +++ b/javascript/extractor/tests/jsx/output/trap/err3.jsx.trap @@ -0,0 +1,30 @@ +#10000=@"/err3.jsx;sourcefile" +files(#10000,"/err3.jsx","err3","jsx",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,1" +locations_default(#20002,#10000,1,1,1,1) +hasLocation(#20001,#20002) +#20003=* +jsParseErrors(#20003,#20001,"Error: Expected corresponding JSX closing tag for "," +") +#20004=@"loc,{#10000},1,4,1,4" +locations_default(#20004,#10000,1,4,1,4) +hasLocation(#20003,#20004) +#20005=* +lines(#20005,#20001,""," +") +#20006=@"loc,{#10000},1,1,1,6" +locations_default(#20006,#10000,1,1,1,6) +hasLocation(#20005,#20006) +numlines(#20001,1,0,0) +numlines(#10000,1,0,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/jsx/output/trap/err4.jsx.trap b/javascript/extractor/tests/jsx/output/trap/err4.jsx.trap new file mode 100644 index 00000000000..22f018c4498 --- /dev/null +++ b/javascript/extractor/tests/jsx/output/trap/err4.jsx.trap @@ -0,0 +1,30 @@ +#10000=@"/err4.jsx;sourcefile" +files(#10000,"/err4.jsx","err4","jsx",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,1" +locations_default(#20002,#10000,1,1,1,1) +hasLocation(#20001,#20002) +#20003=* +jsParseErrors(#20003,#20001,"Error: Expected corresponding JSX closing tag for <>","<> +") +#20004=@"loc,{#10000},1,3,1,3" +locations_default(#20004,#10000,1,3,1,3) +hasLocation(#20003,#20004) +#20005=* +lines(#20005,#20001,"<>"," +") +#20006=@"loc,{#10000},1,1,1,6" +locations_default(#20006,#10000,1,1,1,6) +hasLocation(#20005,#20006) +numlines(#20001,1,0,0) +numlines(#10000,1,0,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 new file mode 100644 index 00000000000..e86d9e16be5 --- /dev/null +++ b/javascript/extractor/tests/jsx/output/trap/tst.js.trap @@ -0,0 +1,752 @@ +#10000=@"/tst.js;sourcefile" +files(#10000,"/tst.js","tst","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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) +#20022=* +exprs(#20022,0,#20021,0,"d") +#20023=@"loc,{#10000},2,6,2,6" +locations_default(#20023,#10000,2,6,2,6) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +#20062=* +exprs(#20062,0,#20057,1,"l") +#20063=@"loc,{#10000},3,36,3,36" +locations_default(#20063,#10000,3,36,3,36) +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) +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) +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) +#20078=* +exprs(#20078,79,#20077,0,"props") +#20079=@"loc,{#10000},4,8,4,12" +locations_default(#20079,#10000,4,8,4,12) +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) +#20084=* +exprs(#20084,89,#20083,-2,"") +#20085=@"loc,{#10000},5,3,5,6" +locations_default(#20085,#10000,5,3,5,6) +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) +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) +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) +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) +#20094=* +lines(#20094,#20001,"{j};"," +") +hasLocation(#20094,#20027) +#20095=* +lines(#20095,#20001,";"," +") +hasLocation(#20095,#20070) +#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) +#20100=* +tokeninfo(#20100,8,#20001,2,"/") +#20101=@"loc,{#10000},1,3,1,3" +locations_default(#20101,#10000,1,3,1,3) +hasLocation(#20100,#20101) +#20102=* +tokeninfo(#20102,8,#20001,3,">") +#20103=@"loc,{#10000},1,4,1,4" +locations_default(#20103,#10000,1,4,1,4) +hasLocation(#20102,#20103) +#20104=* +tokeninfo(#20104,8,#20001,4,";") +#20105=@"loc,{#10000},1,5,1,5" +locations_default(#20105,#10000,1,5,1,5) +hasLocation(#20104,#20105) +#20106=* +tokeninfo(#20106,8,#20001,5,"<") +#20107=@"loc,{#10000},2,1,2,1" +locations_default(#20107,#10000,2,1,2,1) +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) +#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) +#20116=* +tokeninfo(#20116,8,#20001,12,"/") +#20117=@"loc,{#10000},2,9,2,9" +locations_default(#20117,#10000,2,9,2,9) +hasLocation(#20116,#20117) +#20118=* +tokeninfo(#20118,8,#20001,13,">") +#20119=@"loc,{#10000},2,10,2,10" +locations_default(#20119,#10000,2,10,2,10) +hasLocation(#20118,#20119) +#20120=* +tokeninfo(#20120,8,#20001,14,";") +#20121=@"loc,{#10000},2,11,2,11" +locations_default(#20121,#10000,2,11,2,11) +hasLocation(#20120,#20121) +#20122=* +tokeninfo(#20122,8,#20001,15,"<") +#20123=@"loc,{#10000},3,1,3,1" +locations_default(#20123,#10000,3,1,3,1) +hasLocation(#20122,#20123) +#20124=* +tokeninfo(#20124,6,#20001,16,"f") +hasLocation(#20124,#20031) +#20125=* +tokeninfo(#20125,6,#20001,17,"g") +hasLocation(#20125,#20037) +#20126=* +tokeninfo(#20126,8,#20001,18,":") +#20127=@"loc,{#10000},3,5,3,5" +locations_default(#20127,#10000,3,5,3,5) +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) +#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) +#20138=* +tokeninfo(#20138,8,#20001,26,"+") +#20139=@"loc,{#10000},3,24,3,24" +locations_default(#20139,#10000,3,24,3,24) +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) +#20148=* +tokeninfo(#20148,8,#20001,32,"}") +#20149=@"loc,{#10000},3,32,3,32" +locations_default(#20149,#10000,3,32,3,32) +hasLocation(#20148,#20149) +#20150=* +tokeninfo(#20150,8,#20001,33,"<") +#20151=@"loc,{#10000},3,33,3,33" +locations_default(#20151,#10000,3,33,3,33) +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) +#20156=* +tokeninfo(#20156,8,#20001,37,">") +#20157=@"loc,{#10000},3,37,3,37" +locations_default(#20157,#10000,3,37,3,37) +hasLocation(#20156,#20157) +#20158=* +tokeninfo(#20158,8,#20001,38,"<") +#20159=@"loc,{#10000},3,38,3,38" +locations_default(#20159,#10000,3,38,3,38) +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) +#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) +#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) +#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) +#20179=* +tokeninfo(#20179,8,#20001,49,"/") +#20180=@"loc,{#10000},3,49,3,49" +locations_default(#20180,#10000,3,49,3,49) +hasLocation(#20179,#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) +#20185=* +tokeninfo(#20185,8,#20001,52,";") +#20186=@"loc,{#10000},3,52,3,52" +locations_default(#20186,#10000,3,52,3,52) +hasLocation(#20185,#20186) +#20187=* +tokeninfo(#20187,8,#20001,53,"<") +#20188=@"loc,{#10000},4,1,4,1" +locations_default(#20188,#10000,4,1,4,1) +hasLocation(#20187,#20188) +#20189=* +tokeninfo(#20189,6,#20001,54,"n") +hasLocation(#20189,#20074) +#20190=* +tokeninfo(#20190,8,#20001,55,"{") +#20191=@"loc,{#10000},4,4,4,4" +locations_default(#20191,#10000,4,4,4,4) +hasLocation(#20190,#20191) +#20192=* +tokeninfo(#20192,8,#20001,56,"...") +#20193=@"loc,{#10000},4,5,4,7" +locations_default(#20193,#10000,4,5,4,7) +hasLocation(#20192,#20193) +#20194=* +tokeninfo(#20194,6,#20001,57,"props") +hasLocation(#20194,#20079) +#20195=* +tokeninfo(#20195,8,#20001,58,"}") +#20196=@"loc,{#10000},4,13,4,13" +locations_default(#20196,#10000,4,13,4,13) +hasLocation(#20195,#20196) +#20197=* +tokeninfo(#20197,8,#20001,59,"/") +#20198=@"loc,{#10000},4,14,4,14" +locations_default(#20198,#10000,4,14,4,14) +hasLocation(#20197,#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) +#20201=* +tokeninfo(#20201,8,#20001,61,";") +#20202=@"loc,{#10000},4,16,4,16" +locations_default(#20202,#10000,4,16,4,16) +hasLocation(#20201,#20202) +#20203=* +tokeninfo(#20203,8,#20001,62,"<") +#20204=@"loc,{#10000},5,1,5,1" +locations_default(#20204,#10000,5,1,5,1) +hasLocation(#20203,#20204) +#20205=* +tokeninfo(#20205,8,#20001,63,">") +#20206=@"loc,{#10000},5,2,5,2" +locations_default(#20206,#10000,5,2,5,2) +hasLocation(#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) +#20210=* +tokeninfo(#20210,8,#20001,66,"/") +#20211=@"loc,{#10000},5,5,5,5" +locations_default(#20211,#10000,5,5,5,5) +hasLocation(#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) +#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) +#20219=* +tokeninfo(#20219,8,#20001,71,">") +#20220=@"loc,{#10000},5,10,5,10" +locations_default(#20220,#10000,5,10,5,10) +hasLocation(#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) +#20223=* +tokeninfo(#20223,8,#20001,73,"/") +#20224=@"loc,{#10000},5,12,5,12" +locations_default(#20224,#10000,5,12,5,12) +hasLocation(#20223,#20224) +#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) +#20229=* +entry_cfg_node(#20229,#20001) +#20230=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..f32e397621f --- /dev/null +++ b/javascript/extractor/tests/jsx/output/trap/tst.jsx.trap @@ -0,0 +1,28 @@ +#10000=@"/tst.jsx;sourcefile" +files(#10000,"/tst.jsx","tst","jsx",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +#20004=* +entry_cfg_node(#20004,#20001) +hasLocation(#20004,#20002) +#20005=* +exit_cfg_node(#20005,#20001) +hasLocation(#20005,#20002) +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 new file mode 100644 index 00000000000..341d3d1e796 --- /dev/null +++ b/javascript/extractor/tests/jsx/output/trap/tst2.js.trap @@ -0,0 +1,100 @@ +#10000=@"/tst2.js;sourcefile" +files(#10000,"/tst2.js","tst2","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +numlines(#20001,1,1,0) +#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,"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) +#20016=* +tokeninfo(#20016,8,#20001,4,"<") +#20017=@"loc,{#10000},1,10,1,10" +locations_default(#20017,#10000,1,10,1,10) +hasLocation(#20016,#20017) +#20018=* +tokeninfo(#20018,8,#20001,5,"/") +#20019=@"loc,{#10000},1,11,1,11" +locations_default(#20019,#10000,1,11,1,11) +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) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,8,#20001,7,">") +#20023=@"loc,{#10000},1,13,1,13" +locations_default(#20023,#10000,1,13,1,13) +hasLocation(#20022,#20023) +#20024=* +tokeninfo(#20024,0,#20001,8,"") +#20025=@"loc,{#10000},1,14,1,13" +locations_default(#20025,#10000,1,14,1,13) +hasLocation(#20024,#20025) +#20026=* +entry_cfg_node(#20026,#20001) +#20027=@"loc,{#10000},1,1,1,0" +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) +numlines(#10000,1,1,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/mozilla/input/array_comprehensions.js b/javascript/extractor/tests/mozilla/input/array_comprehensions.js new file mode 100644 index 00000000000..6c7fd16a6fc --- /dev/null +++ b/javascript/extractor/tests/mozilla/input/array_comprehensions.js @@ -0,0 +1,4 @@ +[for (year of years) if (year > 2000) year]; +year; +[for (i of numbers) for (j of letters) i+j]; +[for (i of numbers) for (j of letters) if (i 2000) year); +year; +(for (i of numbers) for (j of letters) i+j); +(for (i of numbers) for (j of letters) if (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,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];"," +") +hasLocation(#20089,#20004) +#20090=* +lines(#20090,#20001,"year;"," +") +hasLocation(#20090,#20025) +#20091=* +lines(#20091,#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") +#20111=@"loc,{#10000},1,31,1,31" +locations_default(#20111,#10000,1,31,1,31) +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) +#20116=* +tokeninfo(#20116,8,#20001,14,"]") +#20117=@"loc,{#10000},1,43,1,43" +locations_default(#20117,#10000,1,43,1,43) +hasLocation(#20116,#20117) +#20118=* +tokeninfo(#20118,8,#20001,15,";") +#20119=@"loc,{#10000},1,44,1,44" +locations_default(#20119,#10000,1,44,1,44) +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) +#20130=* +tokeninfo(#20130,6,#20001,22,"of") +#20131=@"loc,{#10000},3,9,3,10" +locations_default(#20131,#10000,3,9,3,10) +hasLocation(#20130,#20131) +#20132=* +tokeninfo(#20132,6,#20001,23,"numbers") +hasLocation(#20132,#20040) +#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) +#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) +#20143=* +tokeninfo(#20143,8,#20001,30,")") +#20144=@"loc,{#10000},3,38,3,38" +locations_default(#20144,#10000,3,38,3,38) +hasLocation(#20143,#20144) +#20145=* +tokeninfo(#20145,6,#20001,31,"i") +hasLocation(#20145,#20054) +#20146=* +tokeninfo(#20146,8,#20001,32,"+") +#20147=@"loc,{#10000},3,41,3,41" +locations_default(#20147,#10000,3,41,3,41) +hasLocation(#20146,#20147) +#20148=* +tokeninfo(#20148,6,#20001,33,"j") +hasLocation(#20148,#20056) +#20149=* +tokeninfo(#20149,8,#20001,34,"]") +#20150=@"loc,{#10000},3,43,3,43" +locations_default(#20150,#10000,3,43,3,43) +hasLocation(#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) +#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) +#20163=* +tokeninfo(#20163,8,#20001,42,")") +#20164=@"loc,{#10000},4,19,4,19" +locations_default(#20164,#10000,4,19,4,19) +hasLocation(#20163,#20164) +#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) +#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) +#20172=* +tokeninfo(#20172,6,#20001,47,"letters") +hasLocation(#20172,#20076) +#20173=* +tokeninfo(#20173,8,#20001,48,")") +#20174=@"loc,{#10000},4,38,4,38" +locations_default(#20174,#10000,4,38,4,38) +hasLocation(#20173,#20174) +#20175=* +tokeninfo(#20175,7,#20001,49,"if") +#20176=@"loc,{#10000},4,40,4,41" +locations_default(#20176,#10000,4,40,4,41) +hasLocation(#20175,#20176) +#20177=* +tokeninfo(#20177,8,#20001,50,"(") +#20178=@"loc,{#10000},4,43,4,43" +locations_default(#20178,#10000,4,43,4,43) +hasLocation(#20177,#20178) +#20179=* +tokeninfo(#20179,6,#20001,51,"i") +hasLocation(#20179,#20080) +#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) +#20183=* +tokeninfo(#20183,8,#20001,54,")") +#20184=@"loc,{#10000},4,47,4,47" +locations_default(#20184,#10000,4,47,4,47) +hasLocation(#20183,#20184) +#20185=* +tokeninfo(#20185,6,#20001,55,"i") +hasLocation(#20185,#20086) +#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) +#20189=* +tokeninfo(#20189,8,#20001,58,"]") +#20190=@"loc,{#10000},4,52,4,52" +locations_default(#20190,#10000,4,52,4,52) +hasLocation(#20189,#20190) +#20191=* +tokeninfo(#20191,8,#20001,59,";") +#20192=@"loc,{#10000},4,53,4,53" +locations_default(#20192,#10000,4,53,4,53) +hasLocation(#20191,#20192) +#20193=* +tokeninfo(#20193,0,#20001,60,"") +#20194=@"loc,{#10000},4,54,4,53" +locations_default(#20194,#10000,4,54,4,53) +hasLocation(#20193,#20194) +#20195=* +entry_cfg_node(#20195,#20001) +#20196=@"loc,{#10000},1,1,1,0" +locations_default(#20196,#10000,1,1,1,0) +hasLocation(#20195,#20196) +#20197=* +exit_cfg_node(#20197,#20001) +hasLocation(#20197,#20194) +successor(#20057,#20059) +successor(#20061,#20067) +successor(#20067,#20065) +successor(#20067,#20197) +successor(#20069,#20075) +successor(#20075,#20073) +successor(#20075,#20065) +successor(#20075,#20197) +successor(#20087,#20083) +successor(#20085,#20087) +successor(#20083,#20073) +successor(#20083,#20065) +successor(#20083,#20197) +successor(#20081,#20077) +successor(#20079,#20081) +#20198=* +guard_node(#20198,1,#20077) +hasLocation(#20198,#20078) +successor(#20198,#20085) +#20199=* +guard_node(#20199,0,#20077) +hasLocation(#20199,#20078) +successor(#20199,#20073) +successor(#20199,#20065) +successor(#20199,#20197) +successor(#20077,#20198) +successor(#20077,#20199) +successor(#20073,#20079) +successor(#20065,#20069) +successor(#20059,#20061) +successor(#20029,#20031) +successor(#20033,#20039) +successor(#20039,#20037) +successor(#20039,#20057) +successor(#20042,#20048) +successor(#20048,#20046) +successor(#20048,#20037) +successor(#20048,#20057) +successor(#20055,#20051) +successor(#20053,#20055) +successor(#20051,#20046) +successor(#20051,#20037) +successor(#20051,#20057) +successor(#20046,#20053) +successor(#20037,#20042) +successor(#20031,#20033) +successor(#20024,#20026) +successor(#20026,#20029) +successor(#20003,#20005) +successor(#20007,#20013) +successor(#20013,#20011) +successor(#20013,#20024) +successor(#20022,#20011) +successor(#20022,#20024) +successor(#20020,#20016) +successor(#20018,#20020) +#20200=* +guard_node(#20200,1,#20016) +hasLocation(#20200,#20017) +successor(#20200,#20022) +#20201=* +guard_node(#20201,0,#20016) +hasLocation(#20201,#20017) +successor(#20201,#20011) +successor(#20201,#20024) +successor(#20016,#20200) +successor(#20016,#20201) +successor(#20011,#20018) +successor(#20005,#20007) +successor(#20195,#20003) +numlines(#10000,4,4,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/mozilla/output/trap/foreach.js.trap b/javascript/extractor/tests/mozilla/output/trap/foreach.js.trap new file mode 100644 index 00000000000..ff3a5c8061b --- /dev/null +++ b/javascript/extractor/tests/mozilla/output/trap/foreach.js.trap @@ -0,0 +1,546 @@ +#10000=@"/foreach.js;sourcefile" +files(#10000,"/foreach.js","foreach","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,9,0" +locations_default(#20002,#10000,1,1,9,0) +hasLocation(#20001,#20002) +#20003=@"var;{sum};{#20000}" +variables(#20003,"sum",#20000) +#20004=@"var;{obj};{#20000}" +variables(#20004,"obj",#20000) +#20005=@"var;{item};{#20000}" +variables(#20005,"item",#20000) +#20006=* +stmts(#20006,18,#20001,0,"var sum = 0;") +#20007=@"loc,{#10000},1,1,1,12" +locations_default(#20007,#10000,1,1,1,12) +hasLocation(#20006,#20007) +stmtContainers(#20006,#20001) +#20008=* +exprs(#20008,64,#20006,0,"sum = 0") +#20009=@"loc,{#10000},1,5,1,11" +locations_default(#20009,#10000,1,5,1,11) +hasLocation(#20008,#20009) +enclosingStmt(#20008,#20006) +exprContainers(#20008,#20001) +#20010=* +exprs(#20010,78,#20008,0,"sum") +#20011=@"loc,{#10000},1,5,1,7" +locations_default(#20011,#10000,1,5,1,7) +hasLocation(#20010,#20011) +enclosingStmt(#20010,#20006) +exprContainers(#20010,#20001) +literals("sum","sum",#20010) +decl(#20010,#20003) +#20012=* +exprs(#20012,3,#20008,1,"0") +#20013=@"loc,{#10000},1,11,1,11" +locations_default(#20013,#10000,1,11,1,11) +hasLocation(#20012,#20013) +enclosingStmt(#20012,#20006) +exprContainers(#20012,#20001) +literals("0","0",#20012) +#20014=* +stmts(#20014,18,#20001,1,"var obj ... p3: 8};") +#20015=@"loc,{#10000},2,1,2,42" +locations_default(#20015,#10000,2,1,2,42) +hasLocation(#20014,#20015) +stmtContainers(#20014,#20001) +#20016=* +exprs(#20016,64,#20014,0,"obj = { ... op3: 8}") +#20017=@"loc,{#10000},2,5,2,41" +locations_default(#20017,#10000,2,5,2,41) +hasLocation(#20016,#20017) +enclosingStmt(#20016,#20014) +exprContainers(#20016,#20001) +#20018=* +exprs(#20018,78,#20016,0,"obj") +#20019=@"loc,{#10000},2,5,2,7" +locations_default(#20019,#10000,2,5,2,7) +hasLocation(#20018,#20019) +enclosingStmt(#20018,#20014) +exprContainers(#20018,#20001) +literals("obj","obj",#20018) +decl(#20018,#20004) +#20020=* +exprs(#20020,8,#20016,1,"{prop1: ... op3: 8}") +#20021=@"loc,{#10000},2,11,2,41" +locations_default(#20021,#10000,2,11,2,41) +hasLocation(#20020,#20021) +enclosingStmt(#20020,#20014) +exprContainers(#20020,#20001) +#20022=* +properties(#20022,#20020,0,0,"prop1: 5") +#20023=@"loc,{#10000},2,12,2,19" +locations_default(#20023,#10000,2,12,2,19) +hasLocation(#20022,#20023) +#20024=* +exprs(#20024,0,#20022,0,"prop1") +#20025=@"loc,{#10000},2,12,2,16" +locations_default(#20025,#10000,2,12,2,16) +hasLocation(#20024,#20025) +enclosingStmt(#20024,#20014) +exprContainers(#20024,#20001) +literals("prop1","prop1",#20024) +#20026=* +exprs(#20026,3,#20022,1,"5") +#20027=@"loc,{#10000},2,19,2,19" +locations_default(#20027,#10000,2,19,2,19) +hasLocation(#20026,#20027) +enclosingStmt(#20026,#20014) +exprContainers(#20026,#20001) +literals("5","5",#20026) +#20028=* +properties(#20028,#20020,1,0,"prop2: 13") +#20029=@"loc,{#10000},2,22,2,30" +locations_default(#20029,#10000,2,22,2,30) +hasLocation(#20028,#20029) +#20030=* +exprs(#20030,0,#20028,0,"prop2") +#20031=@"loc,{#10000},2,22,2,26" +locations_default(#20031,#10000,2,22,2,26) +hasLocation(#20030,#20031) +enclosingStmt(#20030,#20014) +exprContainers(#20030,#20001) +literals("prop2","prop2",#20030) +#20032=* +exprs(#20032,3,#20028,1,"13") +#20033=@"loc,{#10000},2,29,2,30" +locations_default(#20033,#10000,2,29,2,30) +hasLocation(#20032,#20033) +enclosingStmt(#20032,#20014) +exprContainers(#20032,#20001) +literals("13","13",#20032) +#20034=* +properties(#20034,#20020,2,0,"prop3: 8") +#20035=@"loc,{#10000},2,33,2,40" +locations_default(#20035,#10000,2,33,2,40) +hasLocation(#20034,#20035) +#20036=* +exprs(#20036,0,#20034,0,"prop3") +#20037=@"loc,{#10000},2,33,2,37" +locations_default(#20037,#10000,2,33,2,37) +hasLocation(#20036,#20037) +enclosingStmt(#20036,#20014) +exprContainers(#20036,#20001) +literals("prop3","prop3",#20036) +#20038=* +exprs(#20038,3,#20034,1,"8") +#20039=@"loc,{#10000},2,40,2,40" +locations_default(#20039,#10000,2,40,2,40) +hasLocation(#20038,#20039) +enclosingStmt(#20038,#20014) +exprContainers(#20038,#20001) +literals("8","8",#20038) +#20040=* +stmts(#20040,25,#20001,2,"for eac ... item;\n}") +#20041=@"loc,{#10000},4,1,6,1" +locations_default(#20041,#10000,4,1,6,1) +hasLocation(#20040,#20041) +stmtContainers(#20040,#20001) +#20042=* +exprs(#20042,79,#20040,1,"obj") +#20043=@"loc,{#10000},4,23,4,25" +locations_default(#20043,#10000,4,23,4,25) +hasLocation(#20042,#20043) +enclosingStmt(#20042,#20040) +exprContainers(#20042,#20001) +literals("obj","obj",#20042) +bind(#20042,#20004) +#20044=* +stmts(#20044,18,#20040,0,"var item") +#20045=@"loc,{#10000},4,11,4,18" +locations_default(#20045,#10000,4,11,4,18) +hasLocation(#20044,#20045) +stmtContainers(#20044,#20001) +#20046=* +exprs(#20046,64,#20044,0,"item") +#20047=@"loc,{#10000},4,15,4,18" +locations_default(#20047,#10000,4,15,4,18) +hasLocation(#20046,#20047) +enclosingStmt(#20046,#20044) +exprContainers(#20046,#20001) +#20048=* +exprs(#20048,78,#20046,0,"item") +hasLocation(#20048,#20047) +enclosingStmt(#20048,#20044) +exprContainers(#20048,#20001) +literals("item","item",#20048) +decl(#20048,#20005) +#20049=* +stmts(#20049,1,#20040,2,"{\n sum += item;\n}") +#20050=@"loc,{#10000},4,28,6,1" +locations_default(#20050,#10000,4,28,6,1) +hasLocation(#20049,#20050) +stmtContainers(#20049,#20001) +#20051=* +stmts(#20051,2,#20049,0,"sum += item;") +#20052=@"loc,{#10000},5,3,5,14" +locations_default(#20052,#10000,5,3,5,14) +hasLocation(#20051,#20052) +stmtContainers(#20051,#20001) +#20053=* +exprs(#20053,48,#20051,0,"sum += item") +#20054=@"loc,{#10000},5,3,5,13" +locations_default(#20054,#10000,5,3,5,13) +hasLocation(#20053,#20054) +enclosingStmt(#20053,#20051) +exprContainers(#20053,#20001) +#20055=* +exprs(#20055,79,#20053,0,"sum") +#20056=@"loc,{#10000},5,3,5,5" +locations_default(#20056,#10000,5,3,5,5) +hasLocation(#20055,#20056) +enclosingStmt(#20055,#20051) +exprContainers(#20055,#20001) +literals("sum","sum",#20055) +bind(#20055,#20003) +#20057=* +exprs(#20057,79,#20053,1,"item") +#20058=@"loc,{#10000},5,10,5,13" +locations_default(#20058,#10000,5,10,5,13) +hasLocation(#20057,#20058) +enclosingStmt(#20057,#20051) +exprContainers(#20057,#20001) +literals("item","item",#20057) +bind(#20057,#20005) +#20059=* +stmts(#20059,2,#20001,3,"console.log(sum);") +#20060=@"loc,{#10000},8,1,8,17" +locations_default(#20060,#10000,8,1,8,17) +hasLocation(#20059,#20060) +stmtContainers(#20059,#20001) +#20061=* +exprs(#20061,13,#20059,0,"console.log(sum)") +#20062=@"loc,{#10000},8,1,8,16" +locations_default(#20062,#10000,8,1,8,16) +hasLocation(#20061,#20062) +enclosingStmt(#20061,#20059) +exprContainers(#20061,#20001) +#20063=* +exprs(#20063,14,#20061,-1,"console.log") +#20064=@"loc,{#10000},8,1,8,11" +locations_default(#20064,#10000,8,1,8,11) +hasLocation(#20063,#20064) +enclosingStmt(#20063,#20059) +exprContainers(#20063,#20001) +#20065=* +exprs(#20065,79,#20063,0,"console") +#20066=@"loc,{#10000},8,1,8,7" +locations_default(#20066,#10000,8,1,8,7) +hasLocation(#20065,#20066) +enclosingStmt(#20065,#20059) +exprContainers(#20065,#20001) +literals("console","console",#20065) +#20067=@"var;{console};{#20000}" +variables(#20067,"console",#20000) +bind(#20065,#20067) +#20068=* +exprs(#20068,0,#20063,1,"log") +#20069=@"loc,{#10000},8,9,8,11" +locations_default(#20069,#10000,8,9,8,11) +hasLocation(#20068,#20069) +enclosingStmt(#20068,#20059) +exprContainers(#20068,#20001) +literals("log","log",#20068) +#20070=* +exprs(#20070,79,#20061,0,"sum") +#20071=@"loc,{#10000},8,13,8,15" +locations_default(#20071,#10000,8,13,8,15) +hasLocation(#20070,#20071) +enclosingStmt(#20070,#20059) +exprContainers(#20070,#20001) +literals("sum","sum",#20070) +bind(#20070,#20003) +#20072=* +comments(#20072,0,#20001," logs ""26"", which is 5+13+8","// logs ... 5+13+8") +#20073=@"loc,{#10000},8,19,8,47" +locations_default(#20073,#10000,8,19,8,47) +hasLocation(#20072,#20073) +#20074=* +lines(#20074,#20001,"var sum = 0;"," +") +hasLocation(#20074,#20007) +#20075=* +lines(#20075,#20001,"var obj = {prop1: 5, prop2: 13, prop3: 8};"," +") +hasLocation(#20075,#20015) +#20076=* +lines(#20076,#20001,""," +") +#20077=@"loc,{#10000},3,1,3,0" +locations_default(#20077,#10000,3,1,3,0) +hasLocation(#20076,#20077) +#20078=* +lines(#20078,#20001,"for each (var item in obj) {"," +") +#20079=@"loc,{#10000},4,1,4,28" +locations_default(#20079,#10000,4,1,4,28) +hasLocation(#20078,#20079) +#20080=* +lines(#20080,#20001," sum += item;"," +") +#20081=@"loc,{#10000},5,1,5,14" +locations_default(#20081,#10000,5,1,5,14) +hasLocation(#20080,#20081) +indentation(#10000,5," ",2) +#20082=* +lines(#20082,#20001,"}"," +") +#20083=@"loc,{#10000},6,1,6,1" +locations_default(#20083,#10000,6,1,6,1) +hasLocation(#20082,#20083) +#20084=* +lines(#20084,#20001,""," +") +#20085=@"loc,{#10000},7,1,7,0" +locations_default(#20085,#10000,7,1,7,0) +hasLocation(#20084,#20085) +#20086=* +lines(#20086,#20001,"console.log(sum); // logs ""26"", which is 5+13+8"," +") +#20087=@"loc,{#10000},8,1,8,47" +locations_default(#20087,#10000,8,1,8,47) +hasLocation(#20086,#20087) +numlines(#20001,8,6,1) +#20088=* +tokeninfo(#20088,7,#20001,0,"var") +#20089=@"loc,{#10000},1,1,1,3" +locations_default(#20089,#10000,1,1,1,3) +hasLocation(#20088,#20089) +#20090=* +tokeninfo(#20090,6,#20001,1,"sum") +hasLocation(#20090,#20011) +#20091=* +tokeninfo(#20091,8,#20001,2,"=") +#20092=@"loc,{#10000},1,9,1,9" +locations_default(#20092,#10000,1,9,1,9) +hasLocation(#20091,#20092) +#20093=* +tokeninfo(#20093,3,#20001,3,"0") +hasLocation(#20093,#20013) +#20094=* +tokeninfo(#20094,8,#20001,4,";") +#20095=@"loc,{#10000},1,12,1,12" +locations_default(#20095,#10000,1,12,1,12) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,7,#20001,5,"var") +#20097=@"loc,{#10000},2,1,2,3" +locations_default(#20097,#10000,2,1,2,3) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,6,#20001,6,"obj") +hasLocation(#20098,#20019) +#20099=* +tokeninfo(#20099,8,#20001,7,"=") +#20100=@"loc,{#10000},2,9,2,9" +locations_default(#20100,#10000,2,9,2,9) +hasLocation(#20099,#20100) +#20101=* +tokeninfo(#20101,8,#20001,8,"{") +#20102=@"loc,{#10000},2,11,2,11" +locations_default(#20102,#10000,2,11,2,11) +hasLocation(#20101,#20102) +#20103=* +tokeninfo(#20103,6,#20001,9,"prop1") +hasLocation(#20103,#20025) +#20104=* +tokeninfo(#20104,8,#20001,10,":") +#20105=@"loc,{#10000},2,17,2,17" +locations_default(#20105,#10000,2,17,2,17) +hasLocation(#20104,#20105) +#20106=* +tokeninfo(#20106,3,#20001,11,"5") +hasLocation(#20106,#20027) +#20107=* +tokeninfo(#20107,8,#20001,12,",") +#20108=@"loc,{#10000},2,20,2,20" +locations_default(#20108,#10000,2,20,2,20) +hasLocation(#20107,#20108) +#20109=* +tokeninfo(#20109,6,#20001,13,"prop2") +hasLocation(#20109,#20031) +#20110=* +tokeninfo(#20110,8,#20001,14,":") +#20111=@"loc,{#10000},2,27,2,27" +locations_default(#20111,#10000,2,27,2,27) +hasLocation(#20110,#20111) +#20112=* +tokeninfo(#20112,3,#20001,15,"13") +hasLocation(#20112,#20033) +#20113=* +tokeninfo(#20113,8,#20001,16,",") +#20114=@"loc,{#10000},2,31,2,31" +locations_default(#20114,#10000,2,31,2,31) +hasLocation(#20113,#20114) +#20115=* +tokeninfo(#20115,6,#20001,17,"prop3") +hasLocation(#20115,#20037) +#20116=* +tokeninfo(#20116,8,#20001,18,":") +#20117=@"loc,{#10000},2,38,2,38" +locations_default(#20117,#10000,2,38,2,38) +hasLocation(#20116,#20117) +#20118=* +tokeninfo(#20118,3,#20001,19,"8") +hasLocation(#20118,#20039) +#20119=* +tokeninfo(#20119,8,#20001,20,"}") +#20120=@"loc,{#10000},2,41,2,41" +locations_default(#20120,#10000,2,41,2,41) +hasLocation(#20119,#20120) +#20121=* +tokeninfo(#20121,8,#20001,21,";") +#20122=@"loc,{#10000},2,42,2,42" +locations_default(#20122,#10000,2,42,2,42) +hasLocation(#20121,#20122) +#20123=* +tokeninfo(#20123,7,#20001,22,"for") +#20124=@"loc,{#10000},4,1,4,3" +locations_default(#20124,#10000,4,1,4,3) +hasLocation(#20123,#20124) +#20125=* +tokeninfo(#20125,6,#20001,23,"each") +#20126=@"loc,{#10000},4,5,4,8" +locations_default(#20126,#10000,4,5,4,8) +hasLocation(#20125,#20126) +#20127=* +tokeninfo(#20127,8,#20001,24,"(") +#20128=@"loc,{#10000},4,10,4,10" +locations_default(#20128,#10000,4,10,4,10) +hasLocation(#20127,#20128) +#20129=* +tokeninfo(#20129,7,#20001,25,"var") +#20130=@"loc,{#10000},4,11,4,13" +locations_default(#20130,#10000,4,11,4,13) +hasLocation(#20129,#20130) +#20131=* +tokeninfo(#20131,6,#20001,26,"item") +hasLocation(#20131,#20047) +#20132=* +tokeninfo(#20132,7,#20001,27,"in") +#20133=@"loc,{#10000},4,20,4,21" +locations_default(#20133,#10000,4,20,4,21) +hasLocation(#20132,#20133) +#20134=* +tokeninfo(#20134,6,#20001,28,"obj") +hasLocation(#20134,#20043) +#20135=* +tokeninfo(#20135,8,#20001,29,")") +#20136=@"loc,{#10000},4,26,4,26" +locations_default(#20136,#10000,4,26,4,26) +hasLocation(#20135,#20136) +#20137=* +tokeninfo(#20137,8,#20001,30,"{") +#20138=@"loc,{#10000},4,28,4,28" +locations_default(#20138,#10000,4,28,4,28) +hasLocation(#20137,#20138) +#20139=* +tokeninfo(#20139,6,#20001,31,"sum") +hasLocation(#20139,#20056) +#20140=* +tokeninfo(#20140,8,#20001,32,"+=") +#20141=@"loc,{#10000},5,7,5,8" +locations_default(#20141,#10000,5,7,5,8) +hasLocation(#20140,#20141) +#20142=* +tokeninfo(#20142,6,#20001,33,"item") +hasLocation(#20142,#20058) +#20143=* +tokeninfo(#20143,8,#20001,34,";") +#20144=@"loc,{#10000},5,14,5,14" +locations_default(#20144,#10000,5,14,5,14) +hasLocation(#20143,#20144) +#20145=* +tokeninfo(#20145,8,#20001,35,"}") +hasLocation(#20145,#20083) +#20146=* +tokeninfo(#20146,6,#20001,36,"console") +hasLocation(#20146,#20066) +#20147=* +tokeninfo(#20147,8,#20001,37,".") +#20148=@"loc,{#10000},8,8,8,8" +locations_default(#20148,#10000,8,8,8,8) +hasLocation(#20147,#20148) +#20149=* +tokeninfo(#20149,6,#20001,38,"log") +hasLocation(#20149,#20069) +#20150=* +tokeninfo(#20150,8,#20001,39,"(") +#20151=@"loc,{#10000},8,12,8,12" +locations_default(#20151,#10000,8,12,8,12) +hasLocation(#20150,#20151) +#20152=* +tokeninfo(#20152,6,#20001,40,"sum") +hasLocation(#20152,#20071) +#20153=* +tokeninfo(#20153,8,#20001,41,")") +#20154=@"loc,{#10000},8,16,8,16" +locations_default(#20154,#10000,8,16,8,16) +hasLocation(#20153,#20154) +#20155=* +tokeninfo(#20155,8,#20001,42,";") +#20156=@"loc,{#10000},8,17,8,17" +locations_default(#20156,#10000,8,17,8,17) +hasLocation(#20155,#20156) +#20157=* +tokeninfo(#20157,0,#20001,43,"") +#20158=@"loc,{#10000},9,1,9,0" +locations_default(#20158,#10000,9,1,9,0) +hasLocation(#20157,#20158) +next_token(#20072,#20157) +#20159=* +entry_cfg_node(#20159,#20001) +#20160=@"loc,{#10000},1,1,1,0" +locations_default(#20160,#10000,1,1,1,0) +hasLocation(#20159,#20160) +#20161=* +exit_cfg_node(#20161,#20001) +hasLocation(#20161,#20158) +successor(#20059,#20065) +successor(#20070,#20061) +successor(#20068,#20063) +successor(#20065,#20068) +successor(#20063,#20070) +successor(#20061,#20161) +successor(#20042,#20040) +successor(#20040,#20044) +successor(#20040,#20059) +successor(#20049,#20051) +successor(#20051,#20055) +successor(#20057,#20053) +successor(#20055,#20057) +successor(#20053,#20040) +successor(#20044,#20048) +successor(#20048,#20046) +successor(#20046,#20049) +successor(#20014,#20018) +successor(#20020,#20024) +successor(#20038,#20034) +successor(#20036,#20038) +successor(#20034,#20016) +successor(#20032,#20028) +successor(#20030,#20032) +successor(#20028,#20036) +successor(#20026,#20022) +successor(#20024,#20026) +successor(#20022,#20030) +successor(#20018,#20020) +successor(#20016,#20042) +successor(#20006,#20010) +successor(#20012,#20008) +successor(#20010,#20012) +successor(#20008,#20014) +successor(#20159,#20006) +numlines(#10000,8,6,1) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/mozilla/output/trap/generator_expressions.js.trap b/javascript/extractor/tests/mozilla/output/trap/generator_expressions.js.trap new file mode 100644 index 00000000000..594351b7e27 --- /dev/null +++ b/javascript/extractor/tests/mozilla/output/trap/generator_expressions.js.trap @@ -0,0 +1,701 @@ +#10000=@"/generator_expressions.js;sourcefile" +files(#10000,"/generator_expressions.js","generator_expressions","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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,74,#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,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);"," +") +hasLocation(#20089,#20004) +#20090=* +lines(#20090,#20001,"year;"," +") +hasLocation(#20090,#20025) +#20091=* +lines(#20091,#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") +#20111=@"loc,{#10000},1,31,1,31" +locations_default(#20111,#10000,1,31,1,31) +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) +#20116=* +tokeninfo(#20116,8,#20001,14,")") +#20117=@"loc,{#10000},1,43,1,43" +locations_default(#20117,#10000,1,43,1,43) +hasLocation(#20116,#20117) +#20118=* +tokeninfo(#20118,8,#20001,15,";") +#20119=@"loc,{#10000},1,44,1,44" +locations_default(#20119,#10000,1,44,1,44) +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) +#20130=* +tokeninfo(#20130,6,#20001,22,"of") +#20131=@"loc,{#10000},3,9,3,10" +locations_default(#20131,#10000,3,9,3,10) +hasLocation(#20130,#20131) +#20132=* +tokeninfo(#20132,6,#20001,23,"numbers") +hasLocation(#20132,#20040) +#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) +#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) +#20143=* +tokeninfo(#20143,8,#20001,30,")") +#20144=@"loc,{#10000},3,38,3,38" +locations_default(#20144,#10000,3,38,3,38) +hasLocation(#20143,#20144) +#20145=* +tokeninfo(#20145,6,#20001,31,"i") +hasLocation(#20145,#20054) +#20146=* +tokeninfo(#20146,8,#20001,32,"+") +#20147=@"loc,{#10000},3,41,3,41" +locations_default(#20147,#10000,3,41,3,41) +hasLocation(#20146,#20147) +#20148=* +tokeninfo(#20148,6,#20001,33,"j") +hasLocation(#20148,#20056) +#20149=* +tokeninfo(#20149,8,#20001,34,")") +#20150=@"loc,{#10000},3,43,3,43" +locations_default(#20150,#10000,3,43,3,43) +hasLocation(#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) +#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) +#20163=* +tokeninfo(#20163,8,#20001,42,")") +#20164=@"loc,{#10000},4,19,4,19" +locations_default(#20164,#10000,4,19,4,19) +hasLocation(#20163,#20164) +#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) +#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) +#20172=* +tokeninfo(#20172,6,#20001,47,"letters") +hasLocation(#20172,#20076) +#20173=* +tokeninfo(#20173,8,#20001,48,")") +#20174=@"loc,{#10000},4,38,4,38" +locations_default(#20174,#10000,4,38,4,38) +hasLocation(#20173,#20174) +#20175=* +tokeninfo(#20175,7,#20001,49,"if") +#20176=@"loc,{#10000},4,40,4,41" +locations_default(#20176,#10000,4,40,4,41) +hasLocation(#20175,#20176) +#20177=* +tokeninfo(#20177,8,#20001,50,"(") +#20178=@"loc,{#10000},4,43,4,43" +locations_default(#20178,#10000,4,43,4,43) +hasLocation(#20177,#20178) +#20179=* +tokeninfo(#20179,6,#20001,51,"i") +hasLocation(#20179,#20080) +#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) +#20183=* +tokeninfo(#20183,8,#20001,54,")") +#20184=@"loc,{#10000},4,47,4,47" +locations_default(#20184,#10000,4,47,4,47) +hasLocation(#20183,#20184) +#20185=* +tokeninfo(#20185,6,#20001,55,"i") +hasLocation(#20185,#20086) +#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) +#20189=* +tokeninfo(#20189,8,#20001,58,")") +#20190=@"loc,{#10000},4,52,4,52" +locations_default(#20190,#10000,4,52,4,52) +hasLocation(#20189,#20190) +#20191=* +tokeninfo(#20191,8,#20001,59,";") +#20192=@"loc,{#10000},4,53,4,53" +locations_default(#20192,#10000,4,53,4,53) +hasLocation(#20191,#20192) +#20193=* +tokeninfo(#20193,0,#20001,60,"") +#20194=@"loc,{#10000},4,54,4,53" +locations_default(#20194,#10000,4,54,4,53) +hasLocation(#20193,#20194) +#20195=* +entry_cfg_node(#20195,#20001) +#20196=@"loc,{#10000},1,1,1,0" +locations_default(#20196,#10000,1,1,1,0) +hasLocation(#20195,#20196) +#20197=* +exit_cfg_node(#20197,#20001) +hasLocation(#20197,#20194) +successor(#20057,#20059) +successor(#20061,#20067) +successor(#20067,#20065) +successor(#20067,#20197) +successor(#20069,#20075) +successor(#20075,#20073) +successor(#20075,#20065) +successor(#20075,#20197) +successor(#20087,#20083) +successor(#20085,#20087) +successor(#20083,#20073) +successor(#20083,#20065) +successor(#20083,#20197) +successor(#20081,#20077) +successor(#20079,#20081) +#20198=* +guard_node(#20198,1,#20077) +hasLocation(#20198,#20078) +successor(#20198,#20085) +#20199=* +guard_node(#20199,0,#20077) +hasLocation(#20199,#20078) +successor(#20199,#20073) +successor(#20199,#20065) +successor(#20199,#20197) +successor(#20077,#20198) +successor(#20077,#20199) +successor(#20073,#20079) +successor(#20065,#20069) +successor(#20059,#20061) +successor(#20029,#20031) +successor(#20033,#20039) +successor(#20039,#20037) +successor(#20039,#20057) +successor(#20042,#20048) +successor(#20048,#20046) +successor(#20048,#20037) +successor(#20048,#20057) +successor(#20055,#20051) +successor(#20053,#20055) +successor(#20051,#20046) +successor(#20051,#20037) +successor(#20051,#20057) +successor(#20046,#20053) +successor(#20037,#20042) +successor(#20031,#20033) +successor(#20024,#20026) +successor(#20026,#20029) +successor(#20003,#20005) +successor(#20007,#20013) +successor(#20013,#20011) +successor(#20013,#20024) +successor(#20022,#20011) +successor(#20022,#20024) +successor(#20020,#20016) +successor(#20018,#20020) +#20200=* +guard_node(#20200,1,#20016) +hasLocation(#20200,#20017) +successor(#20200,#20022) +#20201=* +guard_node(#20201,0,#20016) +hasLocation(#20201,#20017) +successor(#20201,#20011) +successor(#20201,#20024) +successor(#20016,#20200) +successor(#20016,#20201) +successor(#20011,#20018) +successor(#20005,#20007) +successor(#20195,#20003) +numlines(#10000,4,4,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/mozilla/output/trap/guardedCatch.js.trap b/javascript/extractor/tests/mozilla/output/trap/guardedCatch.js.trap new file mode 100644 index 00000000000..beb842b3f18 --- /dev/null +++ b/javascript/extractor/tests/mozilla/output/trap/guardedCatch.js.trap @@ -0,0 +1,568 @@ +#10000=@"/guardedCatch.js;sourcefile" +files(#10000,"/guardedCatch.js","guardedCatch","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,9,1" +locations_default(#20002,#10000,1,1,9,1) +hasLocation(#20001,#20002) +#20003=@"var;{f};{#20000}" +variables(#20003,"f",#20000) +#20004=* +stmts(#20004,17,#20001,0,"functio ... );\n\t}\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;{g};{#20007}" +variables(#20008,"g",#20007) +#20009=* +exprs(#20009,78,#20004,0,"g") +#20010=@"loc,{#10000},1,12,1,12" +locations_default(#20010,#10000,1,12,1,12) +hasLocation(#20009,#20010) +exprContainers(#20009,#20004) +literals("g","g",#20009) +decl(#20009,#20008) +#20011=@"var;{arguments};{#20007}" +variables(#20011,"arguments",#20007) +isArgumentsObject(#20011) +#20012=* +stmts(#20012,1,#20004,-2,"{\n\ttry ... );\n\t}\n}") +#20013=@"loc,{#10000},1,15,9,1" +locations_default(#20013,#10000,1,15,9,1) +hasLocation(#20012,#20013) +stmtContainers(#20012,#20004) +#20014=* +stmts(#20014,11,#20012,0,"try {\n\t ... !"");\n\t}") +#20015=@"loc,{#10000},2,2,8,2" +locations_default(#20015,#10000,2,2,8,2) +hasLocation(#20014,#20015) +stmtContainers(#20014,#20004) +#20016=* +stmts(#20016,1,#20014,0,"{\n\t\tg();\n\t}") +#20017=@"loc,{#10000},2,6,4,2" +locations_default(#20017,#10000,2,6,4,2) +hasLocation(#20016,#20017) +stmtContainers(#20016,#20004) +#20018=* +stmts(#20018,2,#20016,0,"g();") +#20019=@"loc,{#10000},3,3,3,6" +locations_default(#20019,#10000,3,3,3,6) +hasLocation(#20018,#20019) +stmtContainers(#20018,#20004) +#20020=* +exprs(#20020,13,#20018,0,"g()") +#20021=@"loc,{#10000},3,3,3,5" +locations_default(#20021,#10000,3,3,3,5) +hasLocation(#20020,#20021) +enclosingStmt(#20020,#20018) +exprContainers(#20020,#20004) +#20022=* +exprs(#20022,79,#20020,-1,"g") +#20023=@"loc,{#10000},3,3,3,3" +locations_default(#20023,#10000,3,3,3,3) +hasLocation(#20022,#20023) +enclosingStmt(#20022,#20018) +exprContainers(#20022,#20004) +literals("g","g",#20022) +bind(#20022,#20008) +#20024=* +stmts(#20024,20,#20014,1,"catch ( ... !"");\n\t}") +#20025=@"loc,{#10000},4,4,6,2" +locations_default(#20025,#10000,4,4,6,2) +hasLocation(#20024,#20025) +stmtContainers(#20024,#20004) +#20026=* +scopes(#20026,2) +scopenodes(#20024,#20026) +scopenesting(#20026,#20007) +#20027=@"var;{e};{#20026}" +variables(#20027,"e",#20026) +#20028=* +exprs(#20028,78,#20024,0,"e") +#20029=@"loc,{#10000},4,11,4,11" +locations_default(#20029,#10000,4,11,4,11) +hasLocation(#20028,#20029) +enclosingStmt(#20028,#20024) +exprContainers(#20028,#20004) +literals("e","e",#20028) +decl(#20028,#20027) +#20030=* +exprs(#20030,43,#20024,2,"e instanceof Error") +#20031=@"loc,{#10000},4,16,4,33" +locations_default(#20031,#10000,4,16,4,33) +hasLocation(#20030,#20031) +enclosingStmt(#20030,#20024) +exprContainers(#20030,#20004) +#20032=* +exprs(#20032,79,#20030,0,"e") +#20033=@"loc,{#10000},4,16,4,16" +locations_default(#20033,#10000,4,16,4,16) +hasLocation(#20032,#20033) +enclosingStmt(#20032,#20024) +exprContainers(#20032,#20004) +literals("e","e",#20032) +bind(#20032,#20027) +#20034=* +exprs(#20034,79,#20030,1,"Error") +#20035=@"loc,{#10000},4,29,4,33" +locations_default(#20035,#10000,4,29,4,33) +hasLocation(#20034,#20035) +enclosingStmt(#20034,#20024) +exprContainers(#20034,#20004) +literals("Error","Error",#20034) +#20036=@"var;{Error};{#20000}" +variables(#20036,"Error",#20000) +bind(#20034,#20036) +#20037=* +stmts(#20037,1,#20024,1,"{\n\t\tcon ... !"");\n\t}") +#20038=@"loc,{#10000},4,36,6,2" +locations_default(#20038,#10000,4,36,6,2) +hasLocation(#20037,#20038) +stmtContainers(#20037,#20004) +#20039=* +stmts(#20039,2,#20037,0,"console ... ror!"");") +#20040=@"loc,{#10000},5,3,5,24" +locations_default(#20040,#10000,5,3,5,24) +hasLocation(#20039,#20040) +stmtContainers(#20039,#20004) +#20041=* +exprs(#20041,13,#20039,0,"console ... rror!"")") +#20042=@"loc,{#10000},5,3,5,23" +locations_default(#20042,#10000,5,3,5,23) +hasLocation(#20041,#20042) +enclosingStmt(#20041,#20039) +exprContainers(#20041,#20004) +#20043=* +exprs(#20043,14,#20041,-1,"console.log") +#20044=@"loc,{#10000},5,3,5,13" +locations_default(#20044,#10000,5,3,5,13) +hasLocation(#20043,#20044) +enclosingStmt(#20043,#20039) +exprContainers(#20043,#20004) +#20045=* +exprs(#20045,79,#20043,0,"console") +#20046=@"loc,{#10000},5,3,5,9" +locations_default(#20046,#10000,5,3,5,9) +hasLocation(#20045,#20046) +enclosingStmt(#20045,#20039) +exprContainers(#20045,#20004) +literals("console","console",#20045) +#20047=@"var;{console};{#20000}" +variables(#20047,"console",#20000) +bind(#20045,#20047) +#20048=* +exprs(#20048,0,#20043,1,"log") +#20049=@"loc,{#10000},5,11,5,13" +locations_default(#20049,#10000,5,11,5,13) +hasLocation(#20048,#20049) +enclosingStmt(#20048,#20039) +exprContainers(#20048,#20004) +literals("log","log",#20048) +#20050=* +exprs(#20050,4,#20041,0,"""error!""") +#20051=@"loc,{#10000},5,15,5,22" +locations_default(#20051,#10000,5,15,5,22) +hasLocation(#20050,#20051) +enclosingStmt(#20050,#20039) +exprContainers(#20050,#20004) +literals("error!","""error!""",#20050) +#20052=* +stmts(#20052,20,#20014,2,"catch ( ... !"");\n\t}") +#20053=@"loc,{#10000},6,4,8,2" +locations_default(#20053,#10000,6,4,8,2) +hasLocation(#20052,#20053) +stmtContainers(#20052,#20004) +#20054=* +scopes(#20054,2) +scopenodes(#20052,#20054) +scopenesting(#20054,#20007) +#20055=@"var;{e};{#20054}" +variables(#20055,"e",#20054) +#20056=* +exprs(#20056,78,#20052,0,"e") +#20057=@"loc,{#10000},6,11,6,11" +locations_default(#20057,#10000,6,11,6,11) +hasLocation(#20056,#20057) +enclosingStmt(#20056,#20052) +exprContainers(#20056,#20004) +literals("e","e",#20056) +decl(#20056,#20055) +#20058=* +stmts(#20058,1,#20052,1,"{\n\t\tcon ... !"");\n\t}") +#20059=@"loc,{#10000},6,14,8,2" +locations_default(#20059,#10000,6,14,8,2) +hasLocation(#20058,#20059) +stmtContainers(#20058,#20004) +#20060=* +stmts(#20060,2,#20058,0,"console ... lse!"");") +#20061=@"loc,{#10000},7,3,7,33" +locations_default(#20061,#10000,7,3,7,33) +hasLocation(#20060,#20061) +stmtContainers(#20060,#20004) +#20062=* +exprs(#20062,13,#20060,0,"console ... else!"")") +#20063=@"loc,{#10000},7,3,7,32" +locations_default(#20063,#10000,7,3,7,32) +hasLocation(#20062,#20063) +enclosingStmt(#20062,#20060) +exprContainers(#20062,#20004) +#20064=* +exprs(#20064,14,#20062,-1,"console.log") +#20065=@"loc,{#10000},7,3,7,13" +locations_default(#20065,#10000,7,3,7,13) +hasLocation(#20064,#20065) +enclosingStmt(#20064,#20060) +exprContainers(#20064,#20004) +#20066=* +exprs(#20066,79,#20064,0,"console") +#20067=@"loc,{#10000},7,3,7,9" +locations_default(#20067,#10000,7,3,7,9) +hasLocation(#20066,#20067) +enclosingStmt(#20066,#20060) +exprContainers(#20066,#20004) +literals("console","console",#20066) +bind(#20066,#20047) +#20068=* +exprs(#20068,0,#20064,1,"log") +#20069=@"loc,{#10000},7,11,7,13" +locations_default(#20069,#10000,7,11,7,13) +hasLocation(#20068,#20069) +enclosingStmt(#20068,#20060) +exprContainers(#20068,#20004) +literals("log","log",#20068) +#20070=* +exprs(#20070,4,#20062,0,"""something else!""") +#20071=@"loc,{#10000},7,15,7,31" +locations_default(#20071,#10000,7,15,7,31) +hasLocation(#20070,#20071) +enclosingStmt(#20070,#20060) +exprContainers(#20070,#20004) +literals("something else!","""something else!""",#20070) +numlines(#20004,9,9,0) +#20072=* +lines(#20072,#20001,"function f(g) {"," +") +#20073=@"loc,{#10000},1,1,1,15" +locations_default(#20073,#10000,1,1,1,15) +hasLocation(#20072,#20073) +#20074=* +lines(#20074,#20001," try {"," +") +#20075=@"loc,{#10000},2,1,2,6" +locations_default(#20075,#10000,2,1,2,6) +hasLocation(#20074,#20075) +indentation(#10000,2," ",1) +#20076=* +lines(#20076,#20001," g();"," +") +#20077=@"loc,{#10000},3,1,3,6" +locations_default(#20077,#10000,3,1,3,6) +hasLocation(#20076,#20077) +indentation(#10000,3," ",2) +#20078=* +lines(#20078,#20001," } catch (e if e instanceof Error) {"," +") +#20079=@"loc,{#10000},4,1,4,36" +locations_default(#20079,#10000,4,1,4,36) +hasLocation(#20078,#20079) +indentation(#10000,4," ",1) +#20080=* +lines(#20080,#20001," console.log(""error!"");"," +") +#20081=@"loc,{#10000},5,1,5,24" +locations_default(#20081,#10000,5,1,5,24) +hasLocation(#20080,#20081) +indentation(#10000,5," ",2) +#20082=* +lines(#20082,#20001," } catch (e) {"," +") +#20083=@"loc,{#10000},6,1,6,14" +locations_default(#20083,#10000,6,1,6,14) +hasLocation(#20082,#20083) +indentation(#10000,6," ",1) +#20084=* +lines(#20084,#20001," console.log(""something else!"");"," +") +#20085=@"loc,{#10000},7,1,7,33" +locations_default(#20085,#10000,7,1,7,33) +hasLocation(#20084,#20085) +indentation(#10000,7," ",2) +#20086=* +lines(#20086,#20001," }"," +") +#20087=@"loc,{#10000},8,1,8,2" +locations_default(#20087,#10000,8,1,8,2) +hasLocation(#20086,#20087) +indentation(#10000,8," ",1) +#20088=* +lines(#20088,#20001,"}","") +#20089=@"loc,{#10000},9,1,9,1" +locations_default(#20089,#10000,9,1,9,1) +hasLocation(#20088,#20089) +numlines(#20001,9,9,0) +#20090=* +tokeninfo(#20090,7,#20001,0,"function") +#20091=@"loc,{#10000},1,1,1,8" +locations_default(#20091,#10000,1,1,1,8) +hasLocation(#20090,#20091) +#20092=* +tokeninfo(#20092,6,#20001,1,"f") +hasLocation(#20092,#20006) +#20093=* +tokeninfo(#20093,8,#20001,2,"(") +#20094=@"loc,{#10000},1,11,1,11" +locations_default(#20094,#10000,1,11,1,11) +hasLocation(#20093,#20094) +#20095=* +tokeninfo(#20095,6,#20001,3,"g") +hasLocation(#20095,#20010) +#20096=* +tokeninfo(#20096,8,#20001,4,")") +#20097=@"loc,{#10000},1,13,1,13" +locations_default(#20097,#10000,1,13,1,13) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,8,#20001,5,"{") +#20099=@"loc,{#10000},1,15,1,15" +locations_default(#20099,#10000,1,15,1,15) +hasLocation(#20098,#20099) +#20100=* +tokeninfo(#20100,7,#20001,6,"try") +#20101=@"loc,{#10000},2,2,2,4" +locations_default(#20101,#10000,2,2,2,4) +hasLocation(#20100,#20101) +#20102=* +tokeninfo(#20102,8,#20001,7,"{") +#20103=@"loc,{#10000},2,6,2,6" +locations_default(#20103,#10000,2,6,2,6) +hasLocation(#20102,#20103) +#20104=* +tokeninfo(#20104,6,#20001,8,"g") +hasLocation(#20104,#20023) +#20105=* +tokeninfo(#20105,8,#20001,9,"(") +#20106=@"loc,{#10000},3,4,3,4" +locations_default(#20106,#10000,3,4,3,4) +hasLocation(#20105,#20106) +#20107=* +tokeninfo(#20107,8,#20001,10,")") +#20108=@"loc,{#10000},3,5,3,5" +locations_default(#20108,#10000,3,5,3,5) +hasLocation(#20107,#20108) +#20109=* +tokeninfo(#20109,8,#20001,11,";") +#20110=@"loc,{#10000},3,6,3,6" +locations_default(#20110,#10000,3,6,3,6) +hasLocation(#20109,#20110) +#20111=* +tokeninfo(#20111,8,#20001,12,"}") +#20112=@"loc,{#10000},4,2,4,2" +locations_default(#20112,#10000,4,2,4,2) +hasLocation(#20111,#20112) +#20113=* +tokeninfo(#20113,7,#20001,13,"catch") +#20114=@"loc,{#10000},4,4,4,8" +locations_default(#20114,#10000,4,4,4,8) +hasLocation(#20113,#20114) +#20115=* +tokeninfo(#20115,8,#20001,14,"(") +#20116=@"loc,{#10000},4,10,4,10" +locations_default(#20116,#10000,4,10,4,10) +hasLocation(#20115,#20116) +#20117=* +tokeninfo(#20117,6,#20001,15,"e") +hasLocation(#20117,#20029) +#20118=* +tokeninfo(#20118,7,#20001,16,"if") +#20119=@"loc,{#10000},4,13,4,14" +locations_default(#20119,#10000,4,13,4,14) +hasLocation(#20118,#20119) +#20120=* +tokeninfo(#20120,6,#20001,17,"e") +hasLocation(#20120,#20033) +#20121=* +tokeninfo(#20121,7,#20001,18,"instanceof") +#20122=@"loc,{#10000},4,18,4,27" +locations_default(#20122,#10000,4,18,4,27) +hasLocation(#20121,#20122) +#20123=* +tokeninfo(#20123,6,#20001,19,"Error") +hasLocation(#20123,#20035) +#20124=* +tokeninfo(#20124,8,#20001,20,")") +#20125=@"loc,{#10000},4,34,4,34" +locations_default(#20125,#10000,4,34,4,34) +hasLocation(#20124,#20125) +#20126=* +tokeninfo(#20126,8,#20001,21,"{") +#20127=@"loc,{#10000},4,36,4,36" +locations_default(#20127,#10000,4,36,4,36) +hasLocation(#20126,#20127) +#20128=* +tokeninfo(#20128,6,#20001,22,"console") +hasLocation(#20128,#20046) +#20129=* +tokeninfo(#20129,8,#20001,23,".") +#20130=@"loc,{#10000},5,10,5,10" +locations_default(#20130,#10000,5,10,5,10) +hasLocation(#20129,#20130) +#20131=* +tokeninfo(#20131,6,#20001,24,"log") +hasLocation(#20131,#20049) +#20132=* +tokeninfo(#20132,8,#20001,25,"(") +#20133=@"loc,{#10000},5,14,5,14" +locations_default(#20133,#10000,5,14,5,14) +hasLocation(#20132,#20133) +#20134=* +tokeninfo(#20134,4,#20001,26,"""error!""") +hasLocation(#20134,#20051) +#20135=* +tokeninfo(#20135,8,#20001,27,")") +#20136=@"loc,{#10000},5,23,5,23" +locations_default(#20136,#10000,5,23,5,23) +hasLocation(#20135,#20136) +#20137=* +tokeninfo(#20137,8,#20001,28,";") +#20138=@"loc,{#10000},5,24,5,24" +locations_default(#20138,#10000,5,24,5,24) +hasLocation(#20137,#20138) +#20139=* +tokeninfo(#20139,8,#20001,29,"}") +#20140=@"loc,{#10000},6,2,6,2" +locations_default(#20140,#10000,6,2,6,2) +hasLocation(#20139,#20140) +#20141=* +tokeninfo(#20141,7,#20001,30,"catch") +#20142=@"loc,{#10000},6,4,6,8" +locations_default(#20142,#10000,6,4,6,8) +hasLocation(#20141,#20142) +#20143=* +tokeninfo(#20143,8,#20001,31,"(") +#20144=@"loc,{#10000},6,10,6,10" +locations_default(#20144,#10000,6,10,6,10) +hasLocation(#20143,#20144) +#20145=* +tokeninfo(#20145,6,#20001,32,"e") +hasLocation(#20145,#20057) +#20146=* +tokeninfo(#20146,8,#20001,33,")") +#20147=@"loc,{#10000},6,12,6,12" +locations_default(#20147,#10000,6,12,6,12) +hasLocation(#20146,#20147) +#20148=* +tokeninfo(#20148,8,#20001,34,"{") +#20149=@"loc,{#10000},6,14,6,14" +locations_default(#20149,#10000,6,14,6,14) +hasLocation(#20148,#20149) +#20150=* +tokeninfo(#20150,6,#20001,35,"console") +hasLocation(#20150,#20067) +#20151=* +tokeninfo(#20151,8,#20001,36,".") +#20152=@"loc,{#10000},7,10,7,10" +locations_default(#20152,#10000,7,10,7,10) +hasLocation(#20151,#20152) +#20153=* +tokeninfo(#20153,6,#20001,37,"log") +hasLocation(#20153,#20069) +#20154=* +tokeninfo(#20154,8,#20001,38,"(") +#20155=@"loc,{#10000},7,14,7,14" +locations_default(#20155,#10000,7,14,7,14) +hasLocation(#20154,#20155) +#20156=* +tokeninfo(#20156,4,#20001,39,"""something else!""") +hasLocation(#20156,#20071) +#20157=* +tokeninfo(#20157,8,#20001,40,")") +#20158=@"loc,{#10000},7,32,7,32" +locations_default(#20158,#10000,7,32,7,32) +hasLocation(#20157,#20158) +#20159=* +tokeninfo(#20159,8,#20001,41,";") +#20160=@"loc,{#10000},7,33,7,33" +locations_default(#20160,#10000,7,33,7,33) +hasLocation(#20159,#20160) +#20161=* +tokeninfo(#20161,8,#20001,42,"}") +#20162=@"loc,{#10000},8,2,8,2" +locations_default(#20162,#10000,8,2,8,2) +hasLocation(#20161,#20162) +#20163=* +tokeninfo(#20163,8,#20001,43,"}") +hasLocation(#20163,#20089) +#20164=* +tokeninfo(#20164,0,#20001,44,"") +#20165=@"loc,{#10000},9,2,9,1" +locations_default(#20165,#10000,9,2,9,1) +hasLocation(#20164,#20165) +#20166=* +entry_cfg_node(#20166,#20001) +#20167=@"loc,{#10000},1,1,1,0" +locations_default(#20167,#10000,1,1,1,0) +hasLocation(#20166,#20167) +#20168=* +exit_cfg_node(#20168,#20001) +hasLocation(#20168,#20165) +successor(#20004,#20168) +#20169=* +entry_cfg_node(#20169,#20004) +hasLocation(#20169,#20167) +#20170=* +exit_cfg_node(#20170,#20004) +hasLocation(#20170,#20165) +successor(#20012,#20014) +successor(#20014,#20016) +successor(#20016,#20018) +successor(#20018,#20022) +successor(#20022,#20020) +successor(#20020,#20024) +successor(#20020,#20170) +successor(#20024,#20028) +successor(#20034,#20030) +successor(#20032,#20034) +successor(#20030,#20037) +successor(#20030,#20052) +successor(#20028,#20032) +successor(#20037,#20039) +successor(#20039,#20045) +successor(#20050,#20041) +successor(#20048,#20043) +successor(#20045,#20048) +successor(#20043,#20050) +successor(#20041,#20170) +successor(#20052,#20056) +successor(#20058,#20060) +successor(#20060,#20066) +successor(#20070,#20062) +successor(#20068,#20064) +successor(#20066,#20068) +successor(#20064,#20070) +successor(#20062,#20170) +successor(#20056,#20058) +successor(#20009,#20012) +successor(#20169,#20009) +successor(#20005,#20004) +successor(#20166,#20005) +numlines(#10000,9,9,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/mozilla/output/trap/letExpr.js.trap b/javascript/extractor/tests/mozilla/output/trap/letExpr.js.trap new file mode 100644 index 00000000000..c1f2d9d8eec --- /dev/null +++ b/javascript/extractor/tests/mozilla/output/trap/letExpr.js.trap @@ -0,0 +1,485 @@ +#10000=@"/letExpr.js;sourcefile" +files(#10000,"/letExpr.js","letExpr","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,5,19" +locations_default(#20002,#10000,1,1,5,19) +hasLocation(#20001,#20002) +#20003=@"var;{x};{#20000}" +variables(#20003,"x",#20000) +#20004=@"var;{y};{#20000}" +variables(#20004,"y",#20000) +#20005=* +stmts(#20005,18,#20001,0,"var x = 42, y = 19;") +#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,"x = 42") +#20008=@"loc,{#10000},1,5,1,10" +locations_default(#20008,#10000,1,5,1,10) +hasLocation(#20007,#20008) +enclosingStmt(#20007,#20005) +exprContainers(#20007,#20001) +#20009=* +exprs(#20009,78,#20007,0,"x") +#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("x","x",#20009) +decl(#20009,#20003) +#20011=* +exprs(#20011,3,#20007,1,"42") +#20012=@"loc,{#10000},1,9,1,10" +locations_default(#20012,#10000,1,9,1,10) +hasLocation(#20011,#20012) +enclosingStmt(#20011,#20005) +exprContainers(#20011,#20001) +literals("42","42",#20011) +#20013=* +exprs(#20013,64,#20005,1,"y = 19") +#20014=@"loc,{#10000},1,13,1,18" +locations_default(#20014,#10000,1,13,1,18) +hasLocation(#20013,#20014) +enclosingStmt(#20013,#20005) +exprContainers(#20013,#20001) +#20015=* +exprs(#20015,78,#20013,0,"y") +#20016=@"loc,{#10000},1,13,1,13" +locations_default(#20016,#10000,1,13,1,13) +hasLocation(#20015,#20016) +enclosingStmt(#20015,#20005) +exprContainers(#20015,#20001) +literals("y","y",#20015) +decl(#20015,#20004) +#20017=* +exprs(#20017,3,#20013,1,"19") +#20018=@"loc,{#10000},1,17,1,18" +locations_default(#20018,#10000,1,17,1,18) +hasLocation(#20017,#20018) +enclosingStmt(#20017,#20005) +exprContainers(#20017,#20001) +literals("19","19",#20017) +#20019=* +stmts(#20019,2,#20001,1,"console ... x + y);") +#20020=@"loc,{#10000},3,1,3,40" +locations_default(#20020,#10000,3,1,3,40) +hasLocation(#20019,#20020) +stmtContainers(#20019,#20001) +#20021=* +exprs(#20021,13,#20019,0,"console ... x + y)") +#20022=@"loc,{#10000},3,1,3,39" +locations_default(#20022,#10000,3,1,3,39) +hasLocation(#20021,#20022) +enclosingStmt(#20021,#20019) +exprContainers(#20021,#20001) +#20023=* +exprs(#20023,14,#20021,-1,"console.log") +#20024=@"loc,{#10000},3,1,3,11" +locations_default(#20024,#10000,3,1,3,11) +hasLocation(#20023,#20024) +enclosingStmt(#20023,#20019) +exprContainers(#20023,#20001) +#20025=* +exprs(#20025,79,#20023,0,"console") +#20026=@"loc,{#10000},3,1,3,7" +locations_default(#20026,#10000,3,1,3,7) +hasLocation(#20025,#20026) +enclosingStmt(#20025,#20019) +exprContainers(#20025,#20001) +literals("console","console",#20025) +#20027=@"var;{console};{#20000}" +variables(#20027,"console",#20000) +bind(#20025,#20027) +#20028=* +exprs(#20028,0,#20023,1,"log") +#20029=@"loc,{#10000},3,9,3,11" +locations_default(#20029,#10000,3,9,3,11) +hasLocation(#20028,#20029) +enclosingStmt(#20028,#20019) +exprContainers(#20028,#20001) +literals("log","log",#20028) +#20030=* +exprs(#20030,77,#20021,0,"let (x ... ) x + y") +#20031=@"loc,{#10000},3,13,3,38" +locations_default(#20031,#10000,3,13,3,38) +hasLocation(#20030,#20031) +enclosingStmt(#20030,#20019) +exprContainers(#20030,#20001) +#20032=* +scopes(#20032,4) +scopenodes(#20030,#20032) +scopenesting(#20032,#20000) +#20033=@"var;{x};{#20032}" +variables(#20033,"x",#20032) +#20034=@"var;{y};{#20032}" +variables(#20034,"y",#20032) +#20035=* +exprs(#20035,64,#20030,0,"x = 23") +#20036=@"loc,{#10000},3,18,3,23" +locations_default(#20036,#10000,3,18,3,23) +hasLocation(#20035,#20036) +enclosingStmt(#20035,#20019) +exprContainers(#20035,#20001) +#20037=* +exprs(#20037,78,#20035,0,"x") +#20038=@"loc,{#10000},3,18,3,18" +locations_default(#20038,#10000,3,18,3,18) +hasLocation(#20037,#20038) +enclosingStmt(#20037,#20019) +exprContainers(#20037,#20001) +literals("x","x",#20037) +decl(#20037,#20033) +#20039=* +exprs(#20039,3,#20035,1,"23") +#20040=@"loc,{#10000},3,22,3,23" +locations_default(#20040,#10000,3,22,3,23) +hasLocation(#20039,#20040) +enclosingStmt(#20039,#20019) +exprContainers(#20039,#20001) +literals("23","23",#20039) +#20041=* +exprs(#20041,64,#20030,1,"y = 19") +#20042=@"loc,{#10000},3,26,3,31" +locations_default(#20042,#10000,3,26,3,31) +hasLocation(#20041,#20042) +enclosingStmt(#20041,#20019) +exprContainers(#20041,#20001) +#20043=* +exprs(#20043,78,#20041,0,"y") +#20044=@"loc,{#10000},3,26,3,26" +locations_default(#20044,#10000,3,26,3,26) +hasLocation(#20043,#20044) +enclosingStmt(#20043,#20019) +exprContainers(#20043,#20001) +literals("y","y",#20043) +decl(#20043,#20034) +#20045=* +exprs(#20045,3,#20041,1,"19") +#20046=@"loc,{#10000},3,30,3,31" +locations_default(#20046,#10000,3,30,3,31) +hasLocation(#20045,#20046) +enclosingStmt(#20045,#20019) +exprContainers(#20045,#20001) +literals("19","19",#20045) +#20047=* +exprs(#20047,34,#20030,-1,"x + y") +#20048=@"loc,{#10000},3,34,3,38" +locations_default(#20048,#10000,3,34,3,38) +hasLocation(#20047,#20048) +enclosingStmt(#20047,#20019) +exprContainers(#20047,#20001) +#20049=* +exprs(#20049,79,#20047,0,"x") +#20050=@"loc,{#10000},3,34,3,34" +locations_default(#20050,#10000,3,34,3,34) +hasLocation(#20049,#20050) +enclosingStmt(#20049,#20019) +exprContainers(#20049,#20001) +literals("x","x",#20049) +bind(#20049,#20033) +#20051=* +exprs(#20051,79,#20047,1,"y") +#20052=@"loc,{#10000},3,38,3,38" +locations_default(#20052,#10000,3,38,3,38) +hasLocation(#20051,#20052) +enclosingStmt(#20051,#20019) +exprContainers(#20051,#20001) +literals("y","y",#20051) +bind(#20051,#20034) +#20053=* +stmts(#20053,2,#20001,2,"console.log(x - y);") +#20054=@"loc,{#10000},5,1,5,19" +locations_default(#20054,#10000,5,1,5,19) +hasLocation(#20053,#20054) +stmtContainers(#20053,#20001) +#20055=* +exprs(#20055,13,#20053,0,"console.log(x - y)") +#20056=@"loc,{#10000},5,1,5,18" +locations_default(#20056,#10000,5,1,5,18) +hasLocation(#20055,#20056) +enclosingStmt(#20055,#20053) +exprContainers(#20055,#20001) +#20057=* +exprs(#20057,14,#20055,-1,"console.log") +#20058=@"loc,{#10000},5,1,5,11" +locations_default(#20058,#10000,5,1,5,11) +hasLocation(#20057,#20058) +enclosingStmt(#20057,#20053) +exprContainers(#20057,#20001) +#20059=* +exprs(#20059,79,#20057,0,"console") +#20060=@"loc,{#10000},5,1,5,7" +locations_default(#20060,#10000,5,1,5,7) +hasLocation(#20059,#20060) +enclosingStmt(#20059,#20053) +exprContainers(#20059,#20001) +literals("console","console",#20059) +bind(#20059,#20027) +#20061=* +exprs(#20061,0,#20057,1,"log") +#20062=@"loc,{#10000},5,9,5,11" +locations_default(#20062,#10000,5,9,5,11) +hasLocation(#20061,#20062) +enclosingStmt(#20061,#20053) +exprContainers(#20061,#20001) +literals("log","log",#20061) +#20063=* +exprs(#20063,35,#20055,0,"x - y") +#20064=@"loc,{#10000},5,13,5,17" +locations_default(#20064,#10000,5,13,5,17) +hasLocation(#20063,#20064) +enclosingStmt(#20063,#20053) +exprContainers(#20063,#20001) +#20065=* +exprs(#20065,79,#20063,0,"x") +#20066=@"loc,{#10000},5,13,5,13" +locations_default(#20066,#10000,5,13,5,13) +hasLocation(#20065,#20066) +enclosingStmt(#20065,#20053) +exprContainers(#20065,#20001) +literals("x","x",#20065) +bind(#20065,#20003) +#20067=* +exprs(#20067,79,#20063,1,"y") +#20068=@"loc,{#10000},5,17,5,17" +locations_default(#20068,#10000,5,17,5,17) +hasLocation(#20067,#20068) +enclosingStmt(#20067,#20053) +exprContainers(#20067,#20001) +literals("y","y",#20067) +bind(#20067,#20004) +#20069=* +lines(#20069,#20001,"var x = 42, y = 19;"," +") +hasLocation(#20069,#20006) +#20070=* +lines(#20070,#20001,""," +") +#20071=@"loc,{#10000},2,1,2,0" +locations_default(#20071,#10000,2,1,2,0) +hasLocation(#20070,#20071) +#20072=* +lines(#20072,#20001,"console.log(let (x = 23, y = 19) x + y);"," +") +hasLocation(#20072,#20020) +#20073=* +lines(#20073,#20001,""," +") +#20074=@"loc,{#10000},4,1,4,0" +locations_default(#20074,#10000,4,1,4,0) +hasLocation(#20073,#20074) +#20075=* +lines(#20075,#20001,"console.log(x - y);","") +hasLocation(#20075,#20054) +numlines(#20001,5,3,0) +#20076=* +tokeninfo(#20076,7,#20001,0,"var") +#20077=@"loc,{#10000},1,1,1,3" +locations_default(#20077,#10000,1,1,1,3) +hasLocation(#20076,#20077) +#20078=* +tokeninfo(#20078,6,#20001,1,"x") +hasLocation(#20078,#20010) +#20079=* +tokeninfo(#20079,8,#20001,2,"=") +#20080=@"loc,{#10000},1,7,1,7" +locations_default(#20080,#10000,1,7,1,7) +hasLocation(#20079,#20080) +#20081=* +tokeninfo(#20081,3,#20001,3,"42") +hasLocation(#20081,#20012) +#20082=* +tokeninfo(#20082,8,#20001,4,",") +#20083=@"loc,{#10000},1,11,1,11" +locations_default(#20083,#10000,1,11,1,11) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,6,#20001,5,"y") +hasLocation(#20084,#20016) +#20085=* +tokeninfo(#20085,8,#20001,6,"=") +#20086=@"loc,{#10000},1,15,1,15" +locations_default(#20086,#10000,1,15,1,15) +hasLocation(#20085,#20086) +#20087=* +tokeninfo(#20087,3,#20001,7,"19") +hasLocation(#20087,#20018) +#20088=* +tokeninfo(#20088,8,#20001,8,";") +#20089=@"loc,{#10000},1,19,1,19" +locations_default(#20089,#10000,1,19,1,19) +hasLocation(#20088,#20089) +#20090=* +tokeninfo(#20090,6,#20001,9,"console") +hasLocation(#20090,#20026) +#20091=* +tokeninfo(#20091,8,#20001,10,".") +#20092=@"loc,{#10000},3,8,3,8" +locations_default(#20092,#10000,3,8,3,8) +hasLocation(#20091,#20092) +#20093=* +tokeninfo(#20093,6,#20001,11,"log") +hasLocation(#20093,#20029) +#20094=* +tokeninfo(#20094,8,#20001,12,"(") +#20095=@"loc,{#10000},3,12,3,12" +locations_default(#20095,#10000,3,12,3,12) +hasLocation(#20094,#20095) +#20096=* +tokeninfo(#20096,7,#20001,13,"let") +#20097=@"loc,{#10000},3,13,3,15" +locations_default(#20097,#10000,3,13,3,15) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,8,#20001,14,"(") +#20099=@"loc,{#10000},3,17,3,17" +locations_default(#20099,#10000,3,17,3,17) +hasLocation(#20098,#20099) +#20100=* +tokeninfo(#20100,6,#20001,15,"x") +hasLocation(#20100,#20038) +#20101=* +tokeninfo(#20101,8,#20001,16,"=") +#20102=@"loc,{#10000},3,20,3,20" +locations_default(#20102,#10000,3,20,3,20) +hasLocation(#20101,#20102) +#20103=* +tokeninfo(#20103,3,#20001,17,"23") +hasLocation(#20103,#20040) +#20104=* +tokeninfo(#20104,8,#20001,18,",") +#20105=@"loc,{#10000},3,24,3,24" +locations_default(#20105,#10000,3,24,3,24) +hasLocation(#20104,#20105) +#20106=* +tokeninfo(#20106,6,#20001,19,"y") +hasLocation(#20106,#20044) +#20107=* +tokeninfo(#20107,8,#20001,20,"=") +#20108=@"loc,{#10000},3,28,3,28" +locations_default(#20108,#10000,3,28,3,28) +hasLocation(#20107,#20108) +#20109=* +tokeninfo(#20109,3,#20001,21,"19") +hasLocation(#20109,#20046) +#20110=* +tokeninfo(#20110,8,#20001,22,")") +#20111=@"loc,{#10000},3,32,3,32" +locations_default(#20111,#10000,3,32,3,32) +hasLocation(#20110,#20111) +#20112=* +tokeninfo(#20112,6,#20001,23,"x") +hasLocation(#20112,#20050) +#20113=* +tokeninfo(#20113,8,#20001,24,"+") +#20114=@"loc,{#10000},3,36,3,36" +locations_default(#20114,#10000,3,36,3,36) +hasLocation(#20113,#20114) +#20115=* +tokeninfo(#20115,6,#20001,25,"y") +hasLocation(#20115,#20052) +#20116=* +tokeninfo(#20116,8,#20001,26,")") +#20117=@"loc,{#10000},3,39,3,39" +locations_default(#20117,#10000,3,39,3,39) +hasLocation(#20116,#20117) +#20118=* +tokeninfo(#20118,8,#20001,27,";") +#20119=@"loc,{#10000},3,40,3,40" +locations_default(#20119,#10000,3,40,3,40) +hasLocation(#20118,#20119) +#20120=* +tokeninfo(#20120,6,#20001,28,"console") +hasLocation(#20120,#20060) +#20121=* +tokeninfo(#20121,8,#20001,29,".") +#20122=@"loc,{#10000},5,8,5,8" +locations_default(#20122,#10000,5,8,5,8) +hasLocation(#20121,#20122) +#20123=* +tokeninfo(#20123,6,#20001,30,"log") +hasLocation(#20123,#20062) +#20124=* +tokeninfo(#20124,8,#20001,31,"(") +#20125=@"loc,{#10000},5,12,5,12" +locations_default(#20125,#10000,5,12,5,12) +hasLocation(#20124,#20125) +#20126=* +tokeninfo(#20126,6,#20001,32,"x") +hasLocation(#20126,#20066) +#20127=* +tokeninfo(#20127,8,#20001,33,"-") +#20128=@"loc,{#10000},5,15,5,15" +locations_default(#20128,#10000,5,15,5,15) +hasLocation(#20127,#20128) +#20129=* +tokeninfo(#20129,6,#20001,34,"y") +hasLocation(#20129,#20068) +#20130=* +tokeninfo(#20130,8,#20001,35,")") +#20131=@"loc,{#10000},5,18,5,18" +locations_default(#20131,#10000,5,18,5,18) +hasLocation(#20130,#20131) +#20132=* +tokeninfo(#20132,8,#20001,36,";") +#20133=@"loc,{#10000},5,19,5,19" +locations_default(#20133,#10000,5,19,5,19) +hasLocation(#20132,#20133) +#20134=* +tokeninfo(#20134,0,#20001,37,"") +#20135=@"loc,{#10000},5,20,5,19" +locations_default(#20135,#10000,5,20,5,19) +hasLocation(#20134,#20135) +#20136=* +entry_cfg_node(#20136,#20001) +#20137=@"loc,{#10000},1,1,1,0" +locations_default(#20137,#10000,1,1,1,0) +hasLocation(#20136,#20137) +#20138=* +exit_cfg_node(#20138,#20001) +hasLocation(#20138,#20135) +successor(#20053,#20059) +successor(#20067,#20063) +successor(#20065,#20067) +successor(#20063,#20055) +successor(#20061,#20057) +successor(#20059,#20061) +successor(#20057,#20065) +successor(#20055,#20138) +successor(#20019,#20025) +successor(#20030,#20037) +successor(#20051,#20047) +successor(#20049,#20051) +successor(#20047,#20021) +successor(#20045,#20041) +successor(#20043,#20045) +successor(#20041,#20049) +successor(#20039,#20035) +successor(#20037,#20039) +successor(#20035,#20043) +successor(#20028,#20023) +successor(#20025,#20028) +successor(#20023,#20030) +successor(#20021,#20053) +successor(#20005,#20009) +successor(#20017,#20013) +successor(#20015,#20017) +successor(#20013,#20019) +successor(#20011,#20007) +successor(#20009,#20011) +successor(#20007,#20015) +successor(#20136,#20005) +numlines(#10000,5,3,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/mozilla/output/trap/letStmt.js.trap b/javascript/extractor/tests/mozilla/output/trap/letStmt.js.trap new file mode 100644 index 00000000000..1169a114d32 --- /dev/null +++ b/javascript/extractor/tests/mozilla/output/trap/letStmt.js.trap @@ -0,0 +1,516 @@ +#10000=@"/letStmt.js;sourcefile" +files(#10000,"/letStmt.js","letStmt","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,7,19" +locations_default(#20002,#10000,1,1,7,19) +hasLocation(#20001,#20002) +#20003=@"var;{x};{#20000}" +variables(#20003,"x",#20000) +#20004=@"var;{y};{#20000}" +variables(#20004,"y",#20000) +variables(#20003,"x",#20000) +variables(#20004,"y",#20000) +#20005=* +stmts(#20005,18,#20001,0,"var x = 42, y = 19;") +#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,"x = 42") +#20008=@"loc,{#10000},1,5,1,10" +locations_default(#20008,#10000,1,5,1,10) +hasLocation(#20007,#20008) +enclosingStmt(#20007,#20005) +exprContainers(#20007,#20001) +#20009=* +exprs(#20009,78,#20007,0,"x") +#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("x","x",#20009) +decl(#20009,#20003) +#20011=* +exprs(#20011,3,#20007,1,"42") +#20012=@"loc,{#10000},1,9,1,10" +locations_default(#20012,#10000,1,9,1,10) +hasLocation(#20011,#20012) +enclosingStmt(#20011,#20005) +exprContainers(#20011,#20001) +literals("42","42",#20011) +#20013=* +exprs(#20013,64,#20005,1,"y = 19") +#20014=@"loc,{#10000},1,13,1,18" +locations_default(#20014,#10000,1,13,1,18) +hasLocation(#20013,#20014) +enclosingStmt(#20013,#20005) +exprContainers(#20013,#20001) +#20015=* +exprs(#20015,78,#20013,0,"y") +#20016=@"loc,{#10000},1,13,1,13" +locations_default(#20016,#10000,1,13,1,13) +hasLocation(#20015,#20016) +enclosingStmt(#20015,#20005) +exprContainers(#20015,#20001) +literals("y","y",#20015) +decl(#20015,#20004) +#20017=* +exprs(#20017,3,#20013,1,"19") +#20018=@"loc,{#10000},1,17,1,18" +locations_default(#20018,#10000,1,17,1,18) +hasLocation(#20017,#20018) +enclosingStmt(#20017,#20005) +exprContainers(#20017,#20001) +literals("19","19",#20017) +#20019=* +stmts(#20019,24,#20001,1,"let (x ... + y);\n}") +#20020=@"loc,{#10000},3,1,5,1" +locations_default(#20020,#10000,3,1,5,1) +hasLocation(#20019,#20020) +stmtContainers(#20019,#20001) +#20021=* +scopes(#20021,4) +scopenodes(#20019,#20021) +scopenesting(#20021,#20000) +#20022=@"var;{x};{#20021}" +variables(#20022,"x",#20021) +#20023=@"var;{y};{#20021}" +variables(#20023,"y",#20021) +#20024=* +exprs(#20024,64,#20019,0,"x = 23") +#20025=@"loc,{#10000},3,6,3,11" +locations_default(#20025,#10000,3,6,3,11) +hasLocation(#20024,#20025) +enclosingStmt(#20024,#20019) +exprContainers(#20024,#20001) +#20026=* +exprs(#20026,78,#20024,0,"x") +#20027=@"loc,{#10000},3,6,3,6" +locations_default(#20027,#10000,3,6,3,6) +hasLocation(#20026,#20027) +enclosingStmt(#20026,#20019) +exprContainers(#20026,#20001) +literals("x","x",#20026) +decl(#20026,#20022) +#20028=* +exprs(#20028,3,#20024,1,"23") +#20029=@"loc,{#10000},3,10,3,11" +locations_default(#20029,#10000,3,10,3,11) +hasLocation(#20028,#20029) +enclosingStmt(#20028,#20019) +exprContainers(#20028,#20001) +literals("23","23",#20028) +#20030=* +exprs(#20030,64,#20019,1,"y = 19") +#20031=@"loc,{#10000},3,14,3,19" +locations_default(#20031,#10000,3,14,3,19) +hasLocation(#20030,#20031) +enclosingStmt(#20030,#20019) +exprContainers(#20030,#20001) +#20032=* +exprs(#20032,78,#20030,0,"y") +#20033=@"loc,{#10000},3,14,3,14" +locations_default(#20033,#10000,3,14,3,14) +hasLocation(#20032,#20033) +enclosingStmt(#20032,#20019) +exprContainers(#20032,#20001) +literals("y","y",#20032) +decl(#20032,#20023) +#20034=* +exprs(#20034,3,#20030,1,"19") +#20035=@"loc,{#10000},3,18,3,19" +locations_default(#20035,#10000,3,18,3,19) +hasLocation(#20034,#20035) +enclosingStmt(#20034,#20019) +exprContainers(#20034,#20001) +literals("19","19",#20034) +#20036=* +stmts(#20036,1,#20019,-1,"{\n con ... + y);\n}") +#20037=@"loc,{#10000},3,22,5,1" +locations_default(#20037,#10000,3,22,5,1) +hasLocation(#20036,#20037) +stmtContainers(#20036,#20001) +#20038=* +stmts(#20038,2,#20036,0,"console.log(x + y);") +#20039=@"loc,{#10000},4,3,4,21" +locations_default(#20039,#10000,4,3,4,21) +hasLocation(#20038,#20039) +stmtContainers(#20038,#20001) +#20040=* +exprs(#20040,13,#20038,0,"console.log(x + y)") +#20041=@"loc,{#10000},4,3,4,20" +locations_default(#20041,#10000,4,3,4,20) +hasLocation(#20040,#20041) +enclosingStmt(#20040,#20038) +exprContainers(#20040,#20001) +#20042=* +exprs(#20042,14,#20040,-1,"console.log") +#20043=@"loc,{#10000},4,3,4,13" +locations_default(#20043,#10000,4,3,4,13) +hasLocation(#20042,#20043) +enclosingStmt(#20042,#20038) +exprContainers(#20042,#20001) +#20044=* +exprs(#20044,79,#20042,0,"console") +#20045=@"loc,{#10000},4,3,4,9" +locations_default(#20045,#10000,4,3,4,9) +hasLocation(#20044,#20045) +enclosingStmt(#20044,#20038) +exprContainers(#20044,#20001) +literals("console","console",#20044) +#20046=@"var;{console};{#20000}" +variables(#20046,"console",#20000) +bind(#20044,#20046) +#20047=* +exprs(#20047,0,#20042,1,"log") +#20048=@"loc,{#10000},4,11,4,13" +locations_default(#20048,#10000,4,11,4,13) +hasLocation(#20047,#20048) +enclosingStmt(#20047,#20038) +exprContainers(#20047,#20001) +literals("log","log",#20047) +#20049=* +exprs(#20049,34,#20040,0,"x + y") +#20050=@"loc,{#10000},4,15,4,19" +locations_default(#20050,#10000,4,15,4,19) +hasLocation(#20049,#20050) +enclosingStmt(#20049,#20038) +exprContainers(#20049,#20001) +#20051=* +exprs(#20051,79,#20049,0,"x") +#20052=@"loc,{#10000},4,15,4,15" +locations_default(#20052,#10000,4,15,4,15) +hasLocation(#20051,#20052) +enclosingStmt(#20051,#20038) +exprContainers(#20051,#20001) +literals("x","x",#20051) +bind(#20051,#20022) +#20053=* +exprs(#20053,79,#20049,1,"y") +#20054=@"loc,{#10000},4,19,4,19" +locations_default(#20054,#10000,4,19,4,19) +hasLocation(#20053,#20054) +enclosingStmt(#20053,#20038) +exprContainers(#20053,#20001) +literals("y","y",#20053) +bind(#20053,#20023) +#20055=* +stmts(#20055,2,#20001,2,"console.log(x - y);") +#20056=@"loc,{#10000},7,1,7,19" +locations_default(#20056,#10000,7,1,7,19) +hasLocation(#20055,#20056) +stmtContainers(#20055,#20001) +#20057=* +exprs(#20057,13,#20055,0,"console.log(x - y)") +#20058=@"loc,{#10000},7,1,7,18" +locations_default(#20058,#10000,7,1,7,18) +hasLocation(#20057,#20058) +enclosingStmt(#20057,#20055) +exprContainers(#20057,#20001) +#20059=* +exprs(#20059,14,#20057,-1,"console.log") +#20060=@"loc,{#10000},7,1,7,11" +locations_default(#20060,#10000,7,1,7,11) +hasLocation(#20059,#20060) +enclosingStmt(#20059,#20055) +exprContainers(#20059,#20001) +#20061=* +exprs(#20061,79,#20059,0,"console") +#20062=@"loc,{#10000},7,1,7,7" +locations_default(#20062,#10000,7,1,7,7) +hasLocation(#20061,#20062) +enclosingStmt(#20061,#20055) +exprContainers(#20061,#20001) +literals("console","console",#20061) +bind(#20061,#20046) +#20063=* +exprs(#20063,0,#20059,1,"log") +#20064=@"loc,{#10000},7,9,7,11" +locations_default(#20064,#10000,7,9,7,11) +hasLocation(#20063,#20064) +enclosingStmt(#20063,#20055) +exprContainers(#20063,#20001) +literals("log","log",#20063) +#20065=* +exprs(#20065,35,#20057,0,"x - y") +#20066=@"loc,{#10000},7,13,7,17" +locations_default(#20066,#10000,7,13,7,17) +hasLocation(#20065,#20066) +enclosingStmt(#20065,#20055) +exprContainers(#20065,#20001) +#20067=* +exprs(#20067,79,#20065,0,"x") +#20068=@"loc,{#10000},7,13,7,13" +locations_default(#20068,#10000,7,13,7,13) +hasLocation(#20067,#20068) +enclosingStmt(#20067,#20055) +exprContainers(#20067,#20001) +literals("x","x",#20067) +bind(#20067,#20003) +#20069=* +exprs(#20069,79,#20065,1,"y") +#20070=@"loc,{#10000},7,17,7,17" +locations_default(#20070,#10000,7,17,7,17) +hasLocation(#20069,#20070) +enclosingStmt(#20069,#20055) +exprContainers(#20069,#20001) +literals("y","y",#20069) +bind(#20069,#20004) +#20071=* +lines(#20071,#20001,"var x = 42, y = 19;"," +") +hasLocation(#20071,#20006) +#20072=* +lines(#20072,#20001,""," +") +#20073=@"loc,{#10000},2,1,2,0" +locations_default(#20073,#10000,2,1,2,0) +hasLocation(#20072,#20073) +#20074=* +lines(#20074,#20001,"let (x = 23, y = 19) {"," +") +#20075=@"loc,{#10000},3,1,3,22" +locations_default(#20075,#10000,3,1,3,22) +hasLocation(#20074,#20075) +#20076=* +lines(#20076,#20001," console.log(x + y);"," +") +#20077=@"loc,{#10000},4,1,4,21" +locations_default(#20077,#10000,4,1,4,21) +hasLocation(#20076,#20077) +indentation(#10000,4," ",2) +#20078=* +lines(#20078,#20001,"}"," +") +#20079=@"loc,{#10000},5,1,5,1" +locations_default(#20079,#10000,5,1,5,1) +hasLocation(#20078,#20079) +#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,"console.log(x - y);","") +hasLocation(#20082,#20056) +numlines(#20001,7,5,0) +#20083=* +tokeninfo(#20083,7,#20001,0,"var") +#20084=@"loc,{#10000},1,1,1,3" +locations_default(#20084,#10000,1,1,1,3) +hasLocation(#20083,#20084) +#20085=* +tokeninfo(#20085,6,#20001,1,"x") +hasLocation(#20085,#20010) +#20086=* +tokeninfo(#20086,8,#20001,2,"=") +#20087=@"loc,{#10000},1,7,1,7" +locations_default(#20087,#10000,1,7,1,7) +hasLocation(#20086,#20087) +#20088=* +tokeninfo(#20088,3,#20001,3,"42") +hasLocation(#20088,#20012) +#20089=* +tokeninfo(#20089,8,#20001,4,",") +#20090=@"loc,{#10000},1,11,1,11" +locations_default(#20090,#10000,1,11,1,11) +hasLocation(#20089,#20090) +#20091=* +tokeninfo(#20091,6,#20001,5,"y") +hasLocation(#20091,#20016) +#20092=* +tokeninfo(#20092,8,#20001,6,"=") +#20093=@"loc,{#10000},1,15,1,15" +locations_default(#20093,#10000,1,15,1,15) +hasLocation(#20092,#20093) +#20094=* +tokeninfo(#20094,3,#20001,7,"19") +hasLocation(#20094,#20018) +#20095=* +tokeninfo(#20095,8,#20001,8,";") +#20096=@"loc,{#10000},1,19,1,19" +locations_default(#20096,#10000,1,19,1,19) +hasLocation(#20095,#20096) +#20097=* +tokeninfo(#20097,7,#20001,9,"let") +#20098=@"loc,{#10000},3,1,3,3" +locations_default(#20098,#10000,3,1,3,3) +hasLocation(#20097,#20098) +#20099=* +tokeninfo(#20099,8,#20001,10,"(") +#20100=@"loc,{#10000},3,5,3,5" +locations_default(#20100,#10000,3,5,3,5) +hasLocation(#20099,#20100) +#20101=* +tokeninfo(#20101,6,#20001,11,"x") +hasLocation(#20101,#20027) +#20102=* +tokeninfo(#20102,8,#20001,12,"=") +#20103=@"loc,{#10000},3,8,3,8" +locations_default(#20103,#10000,3,8,3,8) +hasLocation(#20102,#20103) +#20104=* +tokeninfo(#20104,3,#20001,13,"23") +hasLocation(#20104,#20029) +#20105=* +tokeninfo(#20105,8,#20001,14,",") +#20106=@"loc,{#10000},3,12,3,12" +locations_default(#20106,#10000,3,12,3,12) +hasLocation(#20105,#20106) +#20107=* +tokeninfo(#20107,6,#20001,15,"y") +hasLocation(#20107,#20033) +#20108=* +tokeninfo(#20108,8,#20001,16,"=") +#20109=@"loc,{#10000},3,16,3,16" +locations_default(#20109,#10000,3,16,3,16) +hasLocation(#20108,#20109) +#20110=* +tokeninfo(#20110,3,#20001,17,"19") +hasLocation(#20110,#20035) +#20111=* +tokeninfo(#20111,8,#20001,18,")") +#20112=@"loc,{#10000},3,20,3,20" +locations_default(#20112,#10000,3,20,3,20) +hasLocation(#20111,#20112) +#20113=* +tokeninfo(#20113,8,#20001,19,"{") +#20114=@"loc,{#10000},3,22,3,22" +locations_default(#20114,#10000,3,22,3,22) +hasLocation(#20113,#20114) +#20115=* +tokeninfo(#20115,6,#20001,20,"console") +hasLocation(#20115,#20045) +#20116=* +tokeninfo(#20116,8,#20001,21,".") +#20117=@"loc,{#10000},4,10,4,10" +locations_default(#20117,#10000,4,10,4,10) +hasLocation(#20116,#20117) +#20118=* +tokeninfo(#20118,6,#20001,22,"log") +hasLocation(#20118,#20048) +#20119=* +tokeninfo(#20119,8,#20001,23,"(") +#20120=@"loc,{#10000},4,14,4,14" +locations_default(#20120,#10000,4,14,4,14) +hasLocation(#20119,#20120) +#20121=* +tokeninfo(#20121,6,#20001,24,"x") +hasLocation(#20121,#20052) +#20122=* +tokeninfo(#20122,8,#20001,25,"+") +#20123=@"loc,{#10000},4,17,4,17" +locations_default(#20123,#10000,4,17,4,17) +hasLocation(#20122,#20123) +#20124=* +tokeninfo(#20124,6,#20001,26,"y") +hasLocation(#20124,#20054) +#20125=* +tokeninfo(#20125,8,#20001,27,")") +#20126=@"loc,{#10000},4,20,4,20" +locations_default(#20126,#10000,4,20,4,20) +hasLocation(#20125,#20126) +#20127=* +tokeninfo(#20127,8,#20001,28,";") +#20128=@"loc,{#10000},4,21,4,21" +locations_default(#20128,#10000,4,21,4,21) +hasLocation(#20127,#20128) +#20129=* +tokeninfo(#20129,8,#20001,29,"}") +hasLocation(#20129,#20079) +#20130=* +tokeninfo(#20130,6,#20001,30,"console") +hasLocation(#20130,#20062) +#20131=* +tokeninfo(#20131,8,#20001,31,".") +#20132=@"loc,{#10000},7,8,7,8" +locations_default(#20132,#10000,7,8,7,8) +hasLocation(#20131,#20132) +#20133=* +tokeninfo(#20133,6,#20001,32,"log") +hasLocation(#20133,#20064) +#20134=* +tokeninfo(#20134,8,#20001,33,"(") +#20135=@"loc,{#10000},7,12,7,12" +locations_default(#20135,#10000,7,12,7,12) +hasLocation(#20134,#20135) +#20136=* +tokeninfo(#20136,6,#20001,34,"x") +hasLocation(#20136,#20068) +#20137=* +tokeninfo(#20137,8,#20001,35,"-") +#20138=@"loc,{#10000},7,15,7,15" +locations_default(#20138,#10000,7,15,7,15) +hasLocation(#20137,#20138) +#20139=* +tokeninfo(#20139,6,#20001,36,"y") +hasLocation(#20139,#20070) +#20140=* +tokeninfo(#20140,8,#20001,37,")") +#20141=@"loc,{#10000},7,18,7,18" +locations_default(#20141,#10000,7,18,7,18) +hasLocation(#20140,#20141) +#20142=* +tokeninfo(#20142,8,#20001,38,";") +#20143=@"loc,{#10000},7,19,7,19" +locations_default(#20143,#10000,7,19,7,19) +hasLocation(#20142,#20143) +#20144=* +tokeninfo(#20144,0,#20001,39,"") +#20145=@"loc,{#10000},7,20,7,19" +locations_default(#20145,#10000,7,20,7,19) +hasLocation(#20144,#20145) +#20146=* +entry_cfg_node(#20146,#20001) +#20147=@"loc,{#10000},1,1,1,0" +locations_default(#20147,#10000,1,1,1,0) +hasLocation(#20146,#20147) +#20148=* +exit_cfg_node(#20148,#20001) +hasLocation(#20148,#20145) +successor(#20055,#20061) +successor(#20069,#20065) +successor(#20067,#20069) +successor(#20065,#20057) +successor(#20063,#20059) +successor(#20061,#20063) +successor(#20059,#20067) +successor(#20057,#20148) +successor(#20019,#20026) +successor(#20036,#20038) +successor(#20038,#20044) +successor(#20053,#20049) +successor(#20051,#20053) +successor(#20049,#20040) +successor(#20047,#20042) +successor(#20044,#20047) +successor(#20042,#20051) +successor(#20040,#20055) +successor(#20034,#20030) +successor(#20032,#20034) +successor(#20030,#20036) +successor(#20028,#20024) +successor(#20026,#20028) +successor(#20024,#20032) +successor(#20005,#20009) +successor(#20017,#20013) +successor(#20015,#20017) +successor(#20013,#20019) +successor(#20011,#20007) +successor(#20009,#20011) +successor(#20007,#20015) +successor(#20146,#20005) +numlines(#10000,7,5,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/mozilla/output/trap/letStmt2.js.trap b/javascript/extractor/tests/mozilla/output/trap/letStmt2.js.trap new file mode 100644 index 00000000000..7a9bcc8c7c3 --- /dev/null +++ b/javascript/extractor/tests/mozilla/output/trap/letStmt2.js.trap @@ -0,0 +1,121 @@ +#10000=@"/letStmt2.js;sourcefile" +files(#10000,"/letStmt2.js","letStmt2","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,2,0" +locations_default(#20002,#10000,1,1,2,0) +hasLocation(#20001,#20002) +#20003=@"var;{x};{#20000}" +variables(#20003,"x",#20000) +#20004=* +stmts(#20004,24,#20001,0,"let (x = 0) 1") +#20005=@"loc,{#10000},1,1,1,13" +locations_default(#20005,#10000,1,1,1,13) +hasLocation(#20004,#20005) +stmtContainers(#20004,#20001) +#20006=* +scopes(#20006,4) +scopenodes(#20004,#20006) +scopenesting(#20006,#20000) +#20007=@"var;{x};{#20006}" +variables(#20007,"x",#20006) +#20008=* +exprs(#20008,64,#20004,0,"x = 0") +#20009=@"loc,{#10000},1,6,1,10" +locations_default(#20009,#10000,1,6,1,10) +hasLocation(#20008,#20009) +enclosingStmt(#20008,#20004) +exprContainers(#20008,#20001) +#20010=* +exprs(#20010,78,#20008,0,"x") +#20011=@"loc,{#10000},1,6,1,6" +locations_default(#20011,#10000,1,6,1,6) +hasLocation(#20010,#20011) +enclosingStmt(#20010,#20004) +exprContainers(#20010,#20001) +literals("x","x",#20010) +decl(#20010,#20007) +#20012=* +exprs(#20012,3,#20008,1,"0") +#20013=@"loc,{#10000},1,10,1,10" +locations_default(#20013,#10000,1,10,1,10) +hasLocation(#20012,#20013) +enclosingStmt(#20012,#20004) +exprContainers(#20012,#20001) +literals("0","0",#20012) +#20014=* +stmts(#20014,2,#20004,-1,"1") +#20015=@"loc,{#10000},1,13,1,13" +locations_default(#20015,#10000,1,13,1,13) +hasLocation(#20014,#20015) +stmtContainers(#20014,#20001) +#20016=* +exprs(#20016,3,#20014,0,"1") +hasLocation(#20016,#20015) +enclosingStmt(#20016,#20014) +exprContainers(#20016,#20001) +literals("1","1",#20016) +#20017=* +lines(#20017,#20001,"let (x = 0) 1"," +") +hasLocation(#20017,#20005) +numlines(#20001,1,1,0) +#20018=* +tokeninfo(#20018,7,#20001,0,"let") +#20019=@"loc,{#10000},1,1,1,3" +locations_default(#20019,#10000,1,1,1,3) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,8,#20001,1,"(") +#20021=@"loc,{#10000},1,5,1,5" +locations_default(#20021,#10000,1,5,1,5) +hasLocation(#20020,#20021) +#20022=* +tokeninfo(#20022,6,#20001,2,"x") +hasLocation(#20022,#20011) +#20023=* +tokeninfo(#20023,8,#20001,3,"=") +#20024=@"loc,{#10000},1,8,1,8" +locations_default(#20024,#10000,1,8,1,8) +hasLocation(#20023,#20024) +#20025=* +tokeninfo(#20025,3,#20001,4,"0") +hasLocation(#20025,#20013) +#20026=* +tokeninfo(#20026,8,#20001,5,")") +#20027=@"loc,{#10000},1,11,1,11" +locations_default(#20027,#10000,1,11,1,11) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,3,#20001,6,"1") +hasLocation(#20028,#20015) +#20029=* +tokeninfo(#20029,0,#20001,7,"") +#20030=@"loc,{#10000},2,1,2,0" +locations_default(#20030,#10000,2,1,2,0) +hasLocation(#20029,#20030) +#20031=* +entry_cfg_node(#20031,#20001) +#20032=@"loc,{#10000},1,1,1,0" +locations_default(#20032,#10000,1,1,1,0) +hasLocation(#20031,#20032) +#20033=* +exit_cfg_node(#20033,#20001) +hasLocation(#20033,#20030) +successor(#20004,#20010) +successor(#20014,#20016) +successor(#20016,#20033) +successor(#20012,#20008) +successor(#20010,#20012) +successor(#20008,#20014) +successor(#20031,#20004) +numlines(#10000,1,1,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/mozilla/output/trap/new-with-trailing-arg.js.trap b/javascript/extractor/tests/mozilla/output/trap/new-with-trailing-arg.js.trap new file mode 100644 index 00000000000..0da2c334d93 --- /dev/null +++ b/javascript/extractor/tests/mozilla/output/trap/new-with-trailing-arg.js.trap @@ -0,0 +1,223 @@ +#10000=@"/new-with-trailing-arg.js;sourcefile" +files(#10000,"/new-with-trailing-arg.js","new-with-trailing-arg","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,6,2" +locations_default(#20002,#10000,1,1,6,2) +hasLocation(#20001,#20002) +#20003=* +stmts(#20003,2,#20001,0,"new A() ... ""bar"" }") +#20004=@"loc,{#10000},2,1,2,22" +locations_default(#20004,#10000,2,1,2,22) +hasLocation(#20003,#20004) +stmtContainers(#20003,#20001) +#20005=* +exprs(#20005,12,#20003,0,"new A() ... ""bar"" }") +hasLocation(#20005,#20004) +enclosingStmt(#20005,#20003) +exprContainers(#20005,#20001) +#20006=* +exprs(#20006,79,#20005,-1,"A") +#20007=@"loc,{#10000},2,5,2,5" +locations_default(#20007,#10000,2,5,2,5) +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,8,#20005,0,"{ foo: ""bar"" }") +#20010=@"loc,{#10000},2,9,2,22" +locations_default(#20010,#10000,2,9,2,22) +hasLocation(#20009,#20010) +enclosingStmt(#20009,#20003) +exprContainers(#20009,#20001) +#20011=* +properties(#20011,#20009,0,0,"foo: ""bar""") +#20012=@"loc,{#10000},2,11,2,20" +locations_default(#20012,#10000,2,11,2,20) +hasLocation(#20011,#20012) +#20013=* +exprs(#20013,0,#20011,0,"foo") +#20014=@"loc,{#10000},2,11,2,13" +locations_default(#20014,#10000,2,11,2,13) +hasLocation(#20013,#20014) +enclosingStmt(#20013,#20003) +exprContainers(#20013,#20001) +literals("foo","foo",#20013) +#20015=* +exprs(#20015,4,#20011,1,"""bar""") +#20016=@"loc,{#10000},2,16,2,20" +locations_default(#20016,#10000,2,16,2,20) +hasLocation(#20015,#20016) +enclosingStmt(#20015,#20003) +exprContainers(#20015,#20001) +literals("bar","""bar""",#20015) +#20017=* +stmts(#20017,2,#20001,1,"new A()") +#20018=@"loc,{#10000},5,1,5,7" +locations_default(#20018,#10000,5,1,5,7) +hasLocation(#20017,#20018) +stmtContainers(#20017,#20001) +#20019=* +exprs(#20019,12,#20017,0,"new A()") +hasLocation(#20019,#20018) +enclosingStmt(#20019,#20017) +exprContainers(#20019,#20001) +#20020=* +exprs(#20020,79,#20019,-1,"A") +#20021=@"loc,{#10000},5,5,5,5" +locations_default(#20021,#10000,5,5,5,5) +hasLocation(#20020,#20021) +enclosingStmt(#20020,#20017) +exprContainers(#20020,#20001) +literals("A","A",#20020) +bind(#20020,#20008) +#20022=* +stmts(#20022,1,#20001,2,"{}") +#20023=@"loc,{#10000},6,1,6,2" +locations_default(#20023,#10000,6,1,6,2) +hasLocation(#20022,#20023) +stmtContainers(#20022,#20001) +#20024=* +comments(#20024,0,#20001," `new` with initializer","// `new ... ializer") +#20025=@"loc,{#10000},1,1,1,25" +locations_default(#20025,#10000,1,1,1,25) +hasLocation(#20024,#20025) +#20026=* +comments(#20026,0,#20001," `new` followed by an empty block","// `new ... y block") +#20027=@"loc,{#10000},4,1,4,35" +locations_default(#20027,#10000,4,1,4,35) +hasLocation(#20026,#20027) +#20028=* +lines(#20028,#20001,"// `new` with initializer"," +") +hasLocation(#20028,#20025) +#20029=* +lines(#20029,#20001,"new A() { foo: ""bar"" }"," +") +hasLocation(#20029,#20004) +#20030=* +lines(#20030,#20001,""," +") +#20031=@"loc,{#10000},3,1,3,0" +locations_default(#20031,#10000,3,1,3,0) +hasLocation(#20030,#20031) +#20032=* +lines(#20032,#20001,"// `new` followed by an empty block"," +") +hasLocation(#20032,#20027) +#20033=* +lines(#20033,#20001,"new A()"," +") +hasLocation(#20033,#20018) +#20034=* +lines(#20034,#20001,"{}","") +hasLocation(#20034,#20023) +numlines(#20001,6,3,2) +#20035=* +tokeninfo(#20035,7,#20001,0,"new") +#20036=@"loc,{#10000},2,1,2,3" +locations_default(#20036,#10000,2,1,2,3) +hasLocation(#20035,#20036) +next_token(#20024,#20035) +#20037=* +tokeninfo(#20037,6,#20001,1,"A") +hasLocation(#20037,#20007) +#20038=* +tokeninfo(#20038,8,#20001,2,"(") +#20039=@"loc,{#10000},2,6,2,6" +locations_default(#20039,#10000,2,6,2,6) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,3,")") +#20041=@"loc,{#10000},2,7,2,7" +locations_default(#20041,#10000,2,7,2,7) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,8,#20001,4,"{") +#20043=@"loc,{#10000},2,9,2,9" +locations_default(#20043,#10000,2,9,2,9) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,6,#20001,5,"foo") +hasLocation(#20044,#20014) +#20045=* +tokeninfo(#20045,8,#20001,6,":") +#20046=@"loc,{#10000},2,14,2,14" +locations_default(#20046,#10000,2,14,2,14) +hasLocation(#20045,#20046) +#20047=* +tokeninfo(#20047,4,#20001,7,"""bar""") +hasLocation(#20047,#20016) +#20048=* +tokeninfo(#20048,8,#20001,8,"}") +#20049=@"loc,{#10000},2,22,2,22" +locations_default(#20049,#10000,2,22,2,22) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,7,#20001,9,"new") +#20051=@"loc,{#10000},5,1,5,3" +locations_default(#20051,#10000,5,1,5,3) +hasLocation(#20050,#20051) +next_token(#20026,#20050) +#20052=* +tokeninfo(#20052,6,#20001,10,"A") +hasLocation(#20052,#20021) +#20053=* +tokeninfo(#20053,8,#20001,11,"(") +#20054=@"loc,{#10000},5,6,5,6" +locations_default(#20054,#10000,5,6,5,6) +hasLocation(#20053,#20054) +#20055=* +tokeninfo(#20055,8,#20001,12,")") +#20056=@"loc,{#10000},5,7,5,7" +locations_default(#20056,#10000,5,7,5,7) +hasLocation(#20055,#20056) +#20057=* +tokeninfo(#20057,8,#20001,13,"{") +#20058=@"loc,{#10000},6,1,6,1" +locations_default(#20058,#10000,6,1,6,1) +hasLocation(#20057,#20058) +#20059=* +tokeninfo(#20059,8,#20001,14,"}") +#20060=@"loc,{#10000},6,2,6,2" +locations_default(#20060,#10000,6,2,6,2) +hasLocation(#20059,#20060) +#20061=* +tokeninfo(#20061,0,#20001,15,"") +#20062=@"loc,{#10000},6,3,6,2" +locations_default(#20062,#10000,6,3,6,2) +hasLocation(#20061,#20062) +#20063=* +entry_cfg_node(#20063,#20001) +#20064=@"loc,{#10000},1,1,1,0" +locations_default(#20064,#10000,1,1,1,0) +hasLocation(#20063,#20064) +#20065=* +exit_cfg_node(#20065,#20001) +hasLocation(#20065,#20062) +successor(#20022,#20065) +successor(#20017,#20020) +successor(#20020,#20019) +successor(#20019,#20022) +successor(#20003,#20006) +successor(#20009,#20013) +successor(#20015,#20011) +successor(#20013,#20015) +successor(#20011,#20005) +successor(#20006,#20009) +successor(#20005,#20017) +successor(#20063,#20003) +numlines(#10000,6,3,2) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/mozilla/output/trap/odasa-2593.js.trap b/javascript/extractor/tests/mozilla/output/trap/odasa-2593.js.trap new file mode 100644 index 00000000000..549b87a613c --- /dev/null +++ b/javascript/extractor/tests/mozilla/output/trap/odasa-2593.js.trap @@ -0,0 +1,209 @@ +#10000=@"/odasa-2593.js;sourcefile" +files(#10000,"/odasa-2593.js","odasa-2593","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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=* +scopes(#20011,4) +scopenodes(#20009,#20011) +scopenesting(#20011,#20007) +#20012=@"var;{arguments};{#20011}" +variables(#20012,"arguments",#20011) +#20013=* +stmts(#20013,2,#20009,0,"arguments;") +#20014=@"loc,{#10000},2,5,2,14" +locations_default(#20014,#10000,2,5,2,14) +hasLocation(#20013,#20014) +stmtContainers(#20013,#20004) +#20015=* +exprs(#20015,79,#20013,0,"arguments") +#20016=@"loc,{#10000},2,5,2,13" +locations_default(#20016,#10000,2,5,2,13) +hasLocation(#20015,#20016) +enclosingStmt(#20015,#20013) +exprContainers(#20015,#20004) +literals("arguments","arguments",#20015) +bind(#20015,#20012) +#20017=* +stmts(#20017,24,#20009,1,"let (arguments);") +#20018=@"loc,{#10000},3,5,3,20" +locations_default(#20018,#10000,3,5,3,20) +hasLocation(#20017,#20018) +stmtContainers(#20017,#20004) +#20019=* +scopes(#20019,4) +scopenodes(#20017,#20019) +scopenesting(#20019,#20011) +#20020=@"var;{arguments};{#20019}" +variables(#20020,"arguments",#20019) +#20021=* +exprs(#20021,64,#20017,0,"arguments") +#20022=@"loc,{#10000},3,10,3,18" +locations_default(#20022,#10000,3,10,3,18) +hasLocation(#20021,#20022) +enclosingStmt(#20021,#20017) +exprContainers(#20021,#20004) +#20023=* +exprs(#20023,78,#20021,0,"arguments") +hasLocation(#20023,#20022) +enclosingStmt(#20023,#20017) +exprContainers(#20023,#20004) +literals("arguments","arguments",#20023) +decl(#20023,#20020) +#20024=* +stmts(#20024,0,#20017,-1,";") +#20025=@"loc,{#10000},3,20,3,20" +locations_default(#20025,#10000,3,20,3,20) +hasLocation(#20024,#20025) +stmtContainers(#20024,#20004) +numlines(#20004,4,4,0) +#20026=* +lines(#20026,#20001,"function test() {"," +") +#20027=@"loc,{#10000},1,1,1,17" +locations_default(#20027,#10000,1,1,1,17) +hasLocation(#20026,#20027) +#20028=* +lines(#20028,#20001," arguments;"," +") +#20029=@"loc,{#10000},2,1,2,14" +locations_default(#20029,#10000,2,1,2,14) +hasLocation(#20028,#20029) +indentation(#10000,2," ",4) +#20030=* +lines(#20030,#20001," let (arguments);"," +") +#20031=@"loc,{#10000},3,1,3,20" +locations_default(#20031,#10000,3,1,3,20) +hasLocation(#20030,#20031) +indentation(#10000,3," ",4) +#20032=* +lines(#20032,#20001,"}","") +#20033=@"loc,{#10000},4,1,4,1" +locations_default(#20033,#10000,4,1,4,1) +hasLocation(#20032,#20033) +numlines(#20001,4,4,0) +#20034=* +tokeninfo(#20034,7,#20001,0,"function") +#20035=@"loc,{#10000},1,1,1,8" +locations_default(#20035,#10000,1,1,1,8) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,6,#20001,1,"test") +hasLocation(#20036,#20006) +#20037=* +tokeninfo(#20037,8,#20001,2,"(") +#20038=@"loc,{#10000},1,14,1,14" +locations_default(#20038,#10000,1,14,1,14) +hasLocation(#20037,#20038) +#20039=* +tokeninfo(#20039,8,#20001,3,")") +#20040=@"loc,{#10000},1,15,1,15" +locations_default(#20040,#10000,1,15,1,15) +hasLocation(#20039,#20040) +#20041=* +tokeninfo(#20041,8,#20001,4,"{") +#20042=@"loc,{#10000},1,17,1,17" +locations_default(#20042,#10000,1,17,1,17) +hasLocation(#20041,#20042) +#20043=* +tokeninfo(#20043,6,#20001,5,"arguments") +hasLocation(#20043,#20016) +#20044=* +tokeninfo(#20044,8,#20001,6,";") +#20045=@"loc,{#10000},2,14,2,14" +locations_default(#20045,#10000,2,14,2,14) +hasLocation(#20044,#20045) +#20046=* +tokeninfo(#20046,7,#20001,7,"let") +#20047=@"loc,{#10000},3,5,3,7" +locations_default(#20047,#10000,3,5,3,7) +hasLocation(#20046,#20047) +#20048=* +tokeninfo(#20048,8,#20001,8,"(") +#20049=@"loc,{#10000},3,9,3,9" +locations_default(#20049,#10000,3,9,3,9) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,6,#20001,9,"arguments") +hasLocation(#20050,#20022) +#20051=* +tokeninfo(#20051,8,#20001,10,")") +#20052=@"loc,{#10000},3,19,3,19" +locations_default(#20052,#10000,3,19,3,19) +hasLocation(#20051,#20052) +#20053=* +tokeninfo(#20053,8,#20001,11,";") +hasLocation(#20053,#20025) +#20054=* +tokeninfo(#20054,8,#20001,12,"}") +hasLocation(#20054,#20033) +#20055=* +tokeninfo(#20055,0,#20001,13,"") +#20056=@"loc,{#10000},4,2,4,1" +locations_default(#20056,#10000,4,2,4,1) +hasLocation(#20055,#20056) +#20057=* +entry_cfg_node(#20057,#20001) +#20058=@"loc,{#10000},1,1,1,0" +locations_default(#20058,#10000,1,1,1,0) +hasLocation(#20057,#20058) +#20059=* +exit_cfg_node(#20059,#20001) +hasLocation(#20059,#20056) +successor(#20004,#20059) +#20060=* +entry_cfg_node(#20060,#20004) +hasLocation(#20060,#20058) +#20061=* +exit_cfg_node(#20061,#20004) +hasLocation(#20061,#20056) +successor(#20009,#20013) +successor(#20017,#20023) +successor(#20024,#20061) +successor(#20023,#20021) +successor(#20021,#20024) +successor(#20013,#20015) +successor(#20015,#20017) +successor(#20060,#20009) +successor(#20005,#20004) +successor(#20057,#20005) +numlines(#10000,4,4,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/node/input/constlet.js b/javascript/extractor/tests/node/input/constlet.js new file mode 100644 index 00000000000..8f2457ce8b4 --- /dev/null +++ b/javascript/extractor/tests/node/input/constlet.js @@ -0,0 +1,2 @@ +const x = 23; +let y = 42; \ No newline at end of file diff --git a/javascript/extractor/tests/node/input/empty b/javascript/extractor/tests/node/input/empty new file mode 100644 index 00000000000..e69de29bb2d diff --git a/javascript/extractor/tests/node/input/f/ignored.json b/javascript/extractor/tests/node/input/f/ignored.json new file mode 100644 index 00000000000..9e26dfeeb6e --- /dev/null +++ b/javascript/extractor/tests/node/input/f/ignored.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/javascript/extractor/tests/node/input/f/package.json b/javascript/extractor/tests/node/input/f/package.json new file mode 100644 index 00000000000..41a3f33289d --- /dev/null +++ b/javascript/extractor/tests/node/input/f/package.json @@ -0,0 +1 @@ +"i get extracted" \ No newline at end of file diff --git a/javascript/extractor/tests/node/input/g/hello b/javascript/extractor/tests/node/input/g/hello new file mode 100644 index 00000000000..1b7d321578e --- /dev/null +++ b/javascript/extractor/tests/node/input/g/hello @@ -0,0 +1,2 @@ +#!/usr/bin/env node +console.log("Hello, world!"); \ No newline at end of file diff --git a/javascript/extractor/tests/node/input/tst.html b/javascript/extractor/tests/node/input/tst.html new file mode 100644 index 00000000000..bc15b3827d3 --- /dev/null +++ b/javascript/extractor/tests/node/input/tst.html @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/javascript/extractor/tests/node/input/tst.js b/javascript/extractor/tests/node/input/tst.js new file mode 100644 index 00000000000..f7e66501f5b --- /dev/null +++ b/javascript/extractor/tests/node/input/tst.js @@ -0,0 +1,4 @@ +var fs = require('fs'); +y = 42; +console.log(__filename); +return arguments[0]; \ No newline at end of file diff --git a/javascript/extractor/tests/node/input/tst.mjs b/javascript/extractor/tests/node/input/tst.mjs new file mode 100644 index 00000000000..3589a15ddc7 --- /dev/null +++ b/javascript/extractor/tests/node/input/tst.mjs @@ -0,0 +1 @@ +var x; \ No newline at end of file diff --git a/javascript/extractor/tests/node/options.json b/javascript/extractor/tests/node/options.json new file mode 100644 index 00000000000..d096c8f0c2d --- /dev/null +++ b/javascript/extractor/tests/node/options.json @@ -0,0 +1,3 @@ +{ + "nodejs": true +} \ No newline at end of file diff --git a/javascript/extractor/tests/node/output/trap/constlet.js.trap b/javascript/extractor/tests/node/output/trap/constlet.js.trap new file mode 100644 index 00000000000..8fa9767644c --- /dev/null +++ b/javascript/extractor/tests/node/output/trap/constlet.js.trap @@ -0,0 +1,179 @@ +#10000=@"/constlet.js;sourcefile" +files(#10000,"/constlet.js","constlet","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,2,11" +locations_default(#20002,#10000,1,1,2,11) +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},1,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=@"var;{x};{#20007}" +variables(#20014,"x",#20007) +#20015=@"var;{y};{#20007}" +variables(#20015,"y",#20007) +#20016=* +stmts(#20016,22,#20001,0,"const x = 23;") +#20017=@"loc,{#10000},1,1,1,13" +locations_default(#20017,#10000,1,1,1,13) +hasLocation(#20016,#20017) +stmtContainers(#20016,#20001) +#20018=* +exprs(#20018,64,#20016,0,"x = 23") +#20019=@"loc,{#10000},1,7,1,12" +locations_default(#20019,#10000,1,7,1,12) +hasLocation(#20018,#20019) +enclosingStmt(#20018,#20016) +exprContainers(#20018,#20001) +#20020=* +exprs(#20020,78,#20018,0,"x") +#20021=@"loc,{#10000},1,7,1,7" +locations_default(#20021,#10000,1,7,1,7) +hasLocation(#20020,#20021) +enclosingStmt(#20020,#20016) +exprContainers(#20020,#20001) +literals("x","x",#20020) +decl(#20020,#20014) +#20022=* +exprs(#20022,3,#20018,1,"23") +#20023=@"loc,{#10000},1,11,1,12" +locations_default(#20023,#10000,1,11,1,12) +hasLocation(#20022,#20023) +enclosingStmt(#20022,#20016) +exprContainers(#20022,#20001) +literals("23","23",#20022) +#20024=* +stmts(#20024,23,#20001,1,"let y = 42;") +#20025=@"loc,{#10000},2,1,2,11" +locations_default(#20025,#10000,2,1,2,11) +hasLocation(#20024,#20025) +stmtContainers(#20024,#20001) +#20026=* +exprs(#20026,64,#20024,0,"y = 42") +#20027=@"loc,{#10000},2,5,2,10" +locations_default(#20027,#10000,2,5,2,10) +hasLocation(#20026,#20027) +enclosingStmt(#20026,#20024) +exprContainers(#20026,#20001) +#20028=* +exprs(#20028,78,#20026,0,"y") +#20029=@"loc,{#10000},2,5,2,5" +locations_default(#20029,#10000,2,5,2,5) +hasLocation(#20028,#20029) +enclosingStmt(#20028,#20024) +exprContainers(#20028,#20001) +literals("y","y",#20028) +decl(#20028,#20015) +#20030=* +exprs(#20030,3,#20026,1,"42") +#20031=@"loc,{#10000},2,9,2,10" +locations_default(#20031,#10000,2,9,2,10) +hasLocation(#20030,#20031) +enclosingStmt(#20030,#20024) +exprContainers(#20030,#20001) +literals("42","42",#20030) +#20032=* +lines(#20032,#20001,"const x = 23;"," +") +hasLocation(#20032,#20017) +#20033=* +lines(#20033,#20001,"let y = 42;","") +hasLocation(#20033,#20025) +numlines(#20001,2,2,0) +#20034=* +tokeninfo(#20034,7,#20001,0,"const") +#20035=@"loc,{#10000},1,1,1,5" +locations_default(#20035,#10000,1,1,1,5) +hasLocation(#20034,#20035) +#20036=* +tokeninfo(#20036,6,#20001,1,"x") +hasLocation(#20036,#20021) +#20037=* +tokeninfo(#20037,8,#20001,2,"=") +#20038=@"loc,{#10000},1,9,1,9" +locations_default(#20038,#10000,1,9,1,9) +hasLocation(#20037,#20038) +#20039=* +tokeninfo(#20039,3,#20001,3,"23") +hasLocation(#20039,#20023) +#20040=* +tokeninfo(#20040,8,#20001,4,";") +#20041=@"loc,{#10000},1,13,1,13" +locations_default(#20041,#10000,1,13,1,13) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,7,#20001,5,"let") +#20043=@"loc,{#10000},2,1,2,3" +locations_default(#20043,#10000,2,1,2,3) +hasLocation(#20042,#20043) +#20044=* +tokeninfo(#20044,6,#20001,6,"y") +hasLocation(#20044,#20029) +#20045=* +tokeninfo(#20045,8,#20001,7,"=") +#20046=@"loc,{#10000},2,7,2,7" +locations_default(#20046,#10000,2,7,2,7) +hasLocation(#20045,#20046) +#20047=* +tokeninfo(#20047,3,#20001,8,"42") +hasLocation(#20047,#20031) +#20048=* +tokeninfo(#20048,8,#20001,9,";") +#20049=@"loc,{#10000},2,11,2,11" +locations_default(#20049,#10000,2,11,2,11) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,0,#20001,10,"") +#20051=@"loc,{#10000},2,12,2,11" +locations_default(#20051,#10000,2,12,2,11) +hasLocation(#20050,#20051) +#20052=* +entry_cfg_node(#20052,#20001) +#20053=@"loc,{#10000},1,1,1,0" +locations_default(#20053,#10000,1,1,1,0) +hasLocation(#20052,#20053) +#20054=* +exit_cfg_node(#20054,#20001) +hasLocation(#20054,#20051) +successor(#20024,#20028) +successor(#20030,#20026) +successor(#20028,#20030) +successor(#20026,#20054) +successor(#20016,#20020) +successor(#20022,#20018) +successor(#20020,#20022) +successor(#20018,#20024) +successor(#20052,#20016) +isNodejs(#20001) +numlines(#10000,2,2,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/node/output/trap/hello.trap b/javascript/extractor/tests/node/output/trap/hello.trap new file mode 100644 index 00000000000..e56576fa626 --- /dev/null +++ b/javascript/extractor/tests/node/output/trap/hello.trap @@ -0,0 +1,148 @@ +#10000=@"/g/hello;sourcefile" +files(#10000,"/g/hello","hello","",0) +#10001=@"/g;folder" +folders(#10001,"/g","g") +#10002=@"/;folder" +folders(#10002,"/","") +containerparent(#10002,#10001) +containerparent(#10001,#10000) +#10003=@"loc,{#10000},0,0,0,0" +locations_default(#10003,#10000,0,0,0,0) +hasLocation(#10000,#10003) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},2,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},2,1,2,29" +locations_default(#20002,#10000,2,1,2,29) +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,"console ... rld!"");") +hasLocation(#20014,#20002) +stmtContainers(#20014,#20001) +#20015=* +exprs(#20015,13,#20014,0,"console ... orld!"")") +#20016=@"loc,{#10000},2,1,2,28" +locations_default(#20016,#10000,2,1,2,28) +hasLocation(#20015,#20016) +enclosingStmt(#20015,#20014) +exprContainers(#20015,#20001) +#20017=* +exprs(#20017,14,#20015,-1,"console.log") +#20018=@"loc,{#10000},2,1,2,11" +locations_default(#20018,#10000,2,1,2,11) +hasLocation(#20017,#20018) +enclosingStmt(#20017,#20014) +exprContainers(#20017,#20001) +#20019=* +exprs(#20019,79,#20017,0,"console") +#20020=@"loc,{#10000},2,1,2,7" +locations_default(#20020,#10000,2,1,2,7) +hasLocation(#20019,#20020) +enclosingStmt(#20019,#20014) +exprContainers(#20019,#20001) +literals("console","console",#20019) +bind(#20019,#20005) +#20021=* +exprs(#20021,0,#20017,1,"log") +#20022=@"loc,{#10000},2,9,2,11" +locations_default(#20022,#10000,2,9,2,11) +hasLocation(#20021,#20022) +enclosingStmt(#20021,#20014) +exprContainers(#20021,#20001) +literals("log","log",#20021) +#20023=* +exprs(#20023,4,#20015,0,"""Hello, world!""") +#20024=@"loc,{#10000},2,13,2,27" +locations_default(#20024,#10000,2,13,2,27) +hasLocation(#20023,#20024) +enclosingStmt(#20023,#20014) +exprContainers(#20023,#20001) +literals("Hello, world!","""Hello, world!""",#20023) +#20025=* +lines(#20025,#20001,"console.log(""Hello, world!"");","") +hasLocation(#20025,#20002) +numlines(#20001,1,1,0) +#20026=* +tokeninfo(#20026,6,#20001,0,"console") +hasLocation(#20026,#20020) +#20027=* +tokeninfo(#20027,8,#20001,1,".") +#20028=@"loc,{#10000},2,8,2,8" +locations_default(#20028,#10000,2,8,2,8) +hasLocation(#20027,#20028) +#20029=* +tokeninfo(#20029,6,#20001,2,"log") +hasLocation(#20029,#20022) +#20030=* +tokeninfo(#20030,8,#20001,3,"(") +#20031=@"loc,{#10000},2,12,2,12" +locations_default(#20031,#10000,2,12,2,12) +hasLocation(#20030,#20031) +#20032=* +tokeninfo(#20032,4,#20001,4,"""Hello, world!""") +hasLocation(#20032,#20024) +#20033=* +tokeninfo(#20033,8,#20001,5,")") +#20034=@"loc,{#10000},2,28,2,28" +locations_default(#20034,#10000,2,28,2,28) +hasLocation(#20033,#20034) +#20035=* +tokeninfo(#20035,8,#20001,6,";") +#20036=@"loc,{#10000},2,29,2,29" +locations_default(#20036,#10000,2,29,2,29) +hasLocation(#20035,#20036) +#20037=* +tokeninfo(#20037,0,#20001,7,"") +#20038=@"loc,{#10000},2,30,2,29" +locations_default(#20038,#10000,2,30,2,29) +hasLocation(#20037,#20038) +#20039=* +entry_cfg_node(#20039,#20001) +#20040=@"loc,{#10000},2,1,2,0" +locations_default(#20040,#10000,2,1,2,0) +hasLocation(#20039,#20040) +#20041=* +exit_cfg_node(#20041,#20001) +hasLocation(#20041,#20038) +successor(#20014,#20019) +successor(#20023,#20015) +successor(#20021,#20017) +successor(#20019,#20021) +successor(#20017,#20023) +successor(#20015,#20041) +successor(#20039,#20014) +isNodejs(#20001) +#20042=* +lines(#20042,#20001,"#!/usr/bin/env node"," +") +#20043=@"loc,{#10000},1,1,1,19" +locations_default(#20043,#10000,1,1,1,19) +hasLocation(#20042,#20043) +numlines(#10000,2,1,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/node/output/trap/package.json.trap b/javascript/extractor/tests/node/output/trap/package.json.trap new file mode 100644 index 00000000000..0956b01c53b --- /dev/null +++ b/javascript/extractor/tests/node/output/trap/package.json.trap @@ -0,0 +1,19 @@ +#10000=@"/f/package.json;sourcefile" +files(#10000,"/f/package.json","package","json",0) +#10001=@"/f;folder" +folders(#10001,"/f","f") +#10002=@"/;folder" +folders(#10002,"/","") +containerparent(#10002,#10001) +containerparent(#10001,#10000) +#10003=@"loc,{#10000},0,0,0,0" +locations_default(#10003,#10000,0,0,0,0) +hasLocation(#10000,#10003) +#20000=* +json(#20000,3,#10000,0,"""i get extracted""") +#20001=@"loc,{#10000},1,1,1,17" +locations_default(#20001,#10000,1,1,1,17) +hasLocation(#20000,#20001) +json_literals("i get extracted","""i get extracted""",#20000) +numlines(#10000,1,0,0) +filetype(#10000,"json") diff --git a/javascript/extractor/tests/node/output/trap/tst.html.trap b/javascript/extractor/tests/node/output/trap/tst.html.trap new file mode 100644 index 00000000000..995cb0f3ecb --- /dev/null +++ b/javascript/extractor/tests/node/output/trap/tst.html.trap @@ -0,0 +1,120 @@ +#10000=@"/tst.html;sourcefile" +files(#10000,"/tst.html","tst","html",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},6,13" +toplevels(#20001,2) +#20002=@"loc,{#10000},6,13,6,23" +locations_default(#20002,#10000,6,13,6,23) +hasLocation(#20001,#20002) +#20003=@"var;{x};{#20000}" +variables(#20003,"x",#20000) +#20004=* +stmts(#20004,18,#20001,0,"var x = 42;") +hasLocation(#20004,#20002) +stmtContainers(#20004,#20001) +#20005=* +exprs(#20005,64,#20004,0,"x = 42") +#20006=@"loc,{#10000},6,17,6,22" +locations_default(#20006,#10000,6,17,6,22) +hasLocation(#20005,#20006) +enclosingStmt(#20005,#20004) +exprContainers(#20005,#20001) +#20007=* +exprs(#20007,78,#20005,0,"x") +#20008=@"loc,{#10000},6,17,6,17" +locations_default(#20008,#10000,6,17,6,17) +hasLocation(#20007,#20008) +enclosingStmt(#20007,#20004) +exprContainers(#20007,#20001) +literals("x","x",#20007) +decl(#20007,#20003) +#20009=* +exprs(#20009,3,#20005,1,"42") +#20010=@"loc,{#10000},6,21,6,22" +locations_default(#20010,#10000,6,21,6,22) +hasLocation(#20009,#20010) +enclosingStmt(#20009,#20004) +exprContainers(#20009,#20001) +literals("42","42",#20009) +#20011=* +lines(#20011,#20001,"var x = 42;","") +hasLocation(#20011,#20002) +numlines(#20001,1,1,0) +#20012=* +tokeninfo(#20012,7,#20001,0,"var") +#20013=@"loc,{#10000},6,13,6,15" +locations_default(#20013,#10000,6,13,6,15) +hasLocation(#20012,#20013) +#20014=* +tokeninfo(#20014,6,#20001,1,"x") +hasLocation(#20014,#20008) +#20015=* +tokeninfo(#20015,8,#20001,2,"=") +#20016=@"loc,{#10000},6,19,6,19" +locations_default(#20016,#10000,6,19,6,19) +hasLocation(#20015,#20016) +#20017=* +tokeninfo(#20017,3,#20001,3,"42") +hasLocation(#20017,#20010) +#20018=* +tokeninfo(#20018,8,#20001,4,";") +#20019=@"loc,{#10000},6,23,6,23" +locations_default(#20019,#10000,6,23,6,23) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,0,#20001,5,"") +#20021=@"loc,{#10000},6,24,6,23" +locations_default(#20021,#10000,6,24,6,23) +hasLocation(#20020,#20021) +#20022=* +entry_cfg_node(#20022,#20001) +#20023=@"loc,{#10000},6,13,6,12" +locations_default(#20023,#10000,6,13,6,12) +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) +#20025=* +xmlElements(#20025,"html",#10000,0,#10000) +#20026=@"loc,{#10000},1,1,8,7" +locations_default(#20026,#10000,1,1,8,7) +xmllocations(#20025,#20026) +#20027=* +xmlElements(#20027,"head",#20025,0,#10000) +#20028=@"loc,{#10000},2,1,4,7" +locations_default(#20028,#10000,2,1,4,7) +xmllocations(#20027,#20028) +#20029=* +xmlElements(#20029,"body",#20025,1,#10000) +#20030=@"loc,{#10000},5,1,7,7" +locations_default(#20030,#10000,5,1,7,7) +xmllocations(#20029,#20030) +#20031=* +xmlElements(#20031,"title",#20027,0,#10000) +#20032=@"loc,{#10000},3,1,3,15" +locations_default(#20032,#10000,3,1,3,15) +xmllocations(#20031,#20032) +#20033=* +xmlElements(#20033,"a",#20029,0,#10000) +#20034=@"loc,{#10000},6,1,6,29" +locations_default(#20034,#10000,6,1,6,29) +xmllocations(#20033,#20034) +#20035=* +xmlAttrs(#20035,#20033,"onclick","var x = 42;",0,#10000) +#20036=@"loc,{#10000},6,4,6,24" +locations_default(#20036,#10000,6,4,6,24) +xmllocations(#20035,#20036) +numlines(#10000,8,1,0) +filetype(#10000,"html") diff --git a/javascript/extractor/tests/node/output/trap/tst.js.trap b/javascript/extractor/tests/node/output/trap/tst.js.trap new file mode 100644 index 00000000000..7d68c464523 --- /dev/null +++ b/javascript/extractor/tests/node/output/trap/tst.js.trap @@ -0,0 +1,354 @@ +#10000=@"/tst.js;sourcefile" +files(#10000,"/tst.js","tst","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,4,20" +locations_default(#20002,#10000,1,1,4,20) +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},1,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=@"var;{fs};{#20007}" +variables(#20014,"fs",#20007) +#20015=* +stmts(#20015,18,#20001,0,"var fs ... ('fs');") +#20016=@"loc,{#10000},1,1,1,23" +locations_default(#20016,#10000,1,1,1,23) +hasLocation(#20015,#20016) +stmtContainers(#20015,#20001) +#20017=* +exprs(#20017,64,#20015,0,"fs = require('fs')") +#20018=@"loc,{#10000},1,5,1,22" +locations_default(#20018,#10000,1,5,1,22) +hasLocation(#20017,#20018) +enclosingStmt(#20017,#20015) +exprContainers(#20017,#20001) +#20019=* +exprs(#20019,78,#20017,0,"fs") +#20020=@"loc,{#10000},1,5,1,6" +locations_default(#20020,#10000,1,5,1,6) +hasLocation(#20019,#20020) +enclosingStmt(#20019,#20015) +exprContainers(#20019,#20001) +literals("fs","fs",#20019) +decl(#20019,#20014) +#20021=* +exprs(#20021,13,#20017,1,"require('fs')") +#20022=@"loc,{#10000},1,10,1,22" +locations_default(#20022,#10000,1,10,1,22) +hasLocation(#20021,#20022) +enclosingStmt(#20021,#20015) +exprContainers(#20021,#20001) +#20023=* +exprs(#20023,79,#20021,-1,"require") +#20024=@"loc,{#10000},1,10,1,16" +locations_default(#20024,#10000,1,10,1,16) +hasLocation(#20023,#20024) +enclosingStmt(#20023,#20015) +exprContainers(#20023,#20001) +literals("require","require",#20023) +bind(#20023,#20008) +#20025=* +exprs(#20025,4,#20021,0,"'fs'") +#20026=@"loc,{#10000},1,18,1,21" +locations_default(#20026,#10000,1,18,1,21) +hasLocation(#20025,#20026) +enclosingStmt(#20025,#20015) +exprContainers(#20025,#20001) +literals("fs","'fs'",#20025) +#20027=* +stmts(#20027,2,#20001,1,"y = 42;") +#20028=@"loc,{#10000},2,1,2,7" +locations_default(#20028,#10000,2,1,2,7) +hasLocation(#20027,#20028) +stmtContainers(#20027,#20001) +#20029=* +exprs(#20029,47,#20027,0,"y = 42") +#20030=@"loc,{#10000},2,1,2,6" +locations_default(#20030,#10000,2,1,2,6) +hasLocation(#20029,#20030) +enclosingStmt(#20029,#20027) +exprContainers(#20029,#20001) +#20031=* +exprs(#20031,79,#20029,0,"y") +#20032=@"loc,{#10000},2,1,2,1" +locations_default(#20032,#10000,2,1,2,1) +hasLocation(#20031,#20032) +enclosingStmt(#20031,#20027) +exprContainers(#20031,#20001) +literals("y","y",#20031) +#20033=@"var;{y};{#20000}" +variables(#20033,"y",#20000) +bind(#20031,#20033) +#20034=* +exprs(#20034,3,#20029,1,"42") +#20035=@"loc,{#10000},2,5,2,6" +locations_default(#20035,#10000,2,5,2,6) +hasLocation(#20034,#20035) +enclosingStmt(#20034,#20027) +exprContainers(#20034,#20001) +literals("42","42",#20034) +#20036=* +stmts(#20036,2,#20001,2,"console ... ename);") +#20037=@"loc,{#10000},3,1,3,24" +locations_default(#20037,#10000,3,1,3,24) +hasLocation(#20036,#20037) +stmtContainers(#20036,#20001) +#20038=* +exprs(#20038,13,#20036,0,"console ... lename)") +#20039=@"loc,{#10000},3,1,3,23" +locations_default(#20039,#10000,3,1,3,23) +hasLocation(#20038,#20039) +enclosingStmt(#20038,#20036) +exprContainers(#20038,#20001) +#20040=* +exprs(#20040,14,#20038,-1,"console.log") +#20041=@"loc,{#10000},3,1,3,11" +locations_default(#20041,#10000,3,1,3,11) +hasLocation(#20040,#20041) +enclosingStmt(#20040,#20036) +exprContainers(#20040,#20001) +#20042=* +exprs(#20042,79,#20040,0,"console") +#20043=@"loc,{#10000},3,1,3,7" +locations_default(#20043,#10000,3,1,3,7) +hasLocation(#20042,#20043) +enclosingStmt(#20042,#20036) +exprContainers(#20042,#20001) +literals("console","console",#20042) +bind(#20042,#20005) +#20044=* +exprs(#20044,0,#20040,1,"log") +#20045=@"loc,{#10000},3,9,3,11" +locations_default(#20045,#10000,3,9,3,11) +hasLocation(#20044,#20045) +enclosingStmt(#20044,#20036) +exprContainers(#20044,#20001) +literals("log","log",#20044) +#20046=* +exprs(#20046,79,#20038,0,"__filename") +#20047=@"loc,{#10000},3,13,3,22" +locations_default(#20047,#10000,3,13,3,22) +hasLocation(#20046,#20047) +enclosingStmt(#20046,#20036) +exprContainers(#20046,#20001) +literals("__filename","__filename",#20046) +bind(#20046,#20011) +#20048=* +stmts(#20048,9,#20001,3,"return arguments[0];") +#20049=@"loc,{#10000},4,1,4,20" +locations_default(#20049,#10000,4,1,4,20) +hasLocation(#20048,#20049) +stmtContainers(#20048,#20001) +#20050=* +exprs(#20050,15,#20048,0,"arguments[0]") +#20051=@"loc,{#10000},4,8,4,19" +locations_default(#20051,#10000,4,8,4,19) +hasLocation(#20050,#20051) +enclosingStmt(#20050,#20048) +exprContainers(#20050,#20001) +#20052=* +exprs(#20052,79,#20050,0,"arguments") +#20053=@"loc,{#10000},4,8,4,16" +locations_default(#20053,#10000,4,8,4,16) +hasLocation(#20052,#20053) +enclosingStmt(#20052,#20048) +exprContainers(#20052,#20001) +literals("arguments","arguments",#20052) +bind(#20052,#20013) +#20054=* +exprs(#20054,3,#20050,1,"0") +#20055=@"loc,{#10000},4,18,4,18" +locations_default(#20055,#10000,4,18,4,18) +hasLocation(#20054,#20055) +enclosingStmt(#20054,#20048) +exprContainers(#20054,#20001) +literals("0","0",#20054) +#20056=* +lines(#20056,#20001,"var fs = require('fs');"," +") +hasLocation(#20056,#20016) +#20057=* +lines(#20057,#20001,"y = 42;"," +") +hasLocation(#20057,#20028) +#20058=* +lines(#20058,#20001,"console.log(__filename);"," +") +hasLocation(#20058,#20037) +#20059=* +lines(#20059,#20001,"return arguments[0];","") +hasLocation(#20059,#20049) +numlines(#20001,4,4,0) +#20060=* +tokeninfo(#20060,7,#20001,0,"var") +#20061=@"loc,{#10000},1,1,1,3" +locations_default(#20061,#10000,1,1,1,3) +hasLocation(#20060,#20061) +#20062=* +tokeninfo(#20062,6,#20001,1,"fs") +hasLocation(#20062,#20020) +#20063=* +tokeninfo(#20063,8,#20001,2,"=") +#20064=@"loc,{#10000},1,8,1,8" +locations_default(#20064,#10000,1,8,1,8) +hasLocation(#20063,#20064) +#20065=* +tokeninfo(#20065,6,#20001,3,"require") +hasLocation(#20065,#20024) +#20066=* +tokeninfo(#20066,8,#20001,4,"(") +#20067=@"loc,{#10000},1,17,1,17" +locations_default(#20067,#10000,1,17,1,17) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,4,#20001,5,"'fs'") +hasLocation(#20068,#20026) +#20069=* +tokeninfo(#20069,8,#20001,6,")") +#20070=@"loc,{#10000},1,22,1,22" +locations_default(#20070,#10000,1,22,1,22) +hasLocation(#20069,#20070) +#20071=* +tokeninfo(#20071,8,#20001,7,";") +#20072=@"loc,{#10000},1,23,1,23" +locations_default(#20072,#10000,1,23,1,23) +hasLocation(#20071,#20072) +#20073=* +tokeninfo(#20073,6,#20001,8,"y") +hasLocation(#20073,#20032) +#20074=* +tokeninfo(#20074,8,#20001,9,"=") +#20075=@"loc,{#10000},2,3,2,3" +locations_default(#20075,#10000,2,3,2,3) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,3,#20001,10,"42") +hasLocation(#20076,#20035) +#20077=* +tokeninfo(#20077,8,#20001,11,";") +#20078=@"loc,{#10000},2,7,2,7" +locations_default(#20078,#10000,2,7,2,7) +hasLocation(#20077,#20078) +#20079=* +tokeninfo(#20079,6,#20001,12,"console") +hasLocation(#20079,#20043) +#20080=* +tokeninfo(#20080,8,#20001,13,".") +#20081=@"loc,{#10000},3,8,3,8" +locations_default(#20081,#10000,3,8,3,8) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,6,#20001,14,"log") +hasLocation(#20082,#20045) +#20083=* +tokeninfo(#20083,8,#20001,15,"(") +#20084=@"loc,{#10000},3,12,3,12" +locations_default(#20084,#10000,3,12,3,12) +hasLocation(#20083,#20084) +#20085=* +tokeninfo(#20085,6,#20001,16,"__filename") +hasLocation(#20085,#20047) +#20086=* +tokeninfo(#20086,8,#20001,17,")") +#20087=@"loc,{#10000},3,23,3,23" +locations_default(#20087,#10000,3,23,3,23) +hasLocation(#20086,#20087) +#20088=* +tokeninfo(#20088,8,#20001,18,";") +#20089=@"loc,{#10000},3,24,3,24" +locations_default(#20089,#10000,3,24,3,24) +hasLocation(#20088,#20089) +#20090=* +tokeninfo(#20090,7,#20001,19,"return") +#20091=@"loc,{#10000},4,1,4,6" +locations_default(#20091,#10000,4,1,4,6) +hasLocation(#20090,#20091) +#20092=* +tokeninfo(#20092,6,#20001,20,"arguments") +hasLocation(#20092,#20053) +#20093=* +tokeninfo(#20093,8,#20001,21,"[") +#20094=@"loc,{#10000},4,17,4,17" +locations_default(#20094,#10000,4,17,4,17) +hasLocation(#20093,#20094) +#20095=* +tokeninfo(#20095,3,#20001,22,"0") +hasLocation(#20095,#20055) +#20096=* +tokeninfo(#20096,8,#20001,23,"]") +#20097=@"loc,{#10000},4,19,4,19" +locations_default(#20097,#10000,4,19,4,19) +hasLocation(#20096,#20097) +#20098=* +tokeninfo(#20098,8,#20001,24,";") +#20099=@"loc,{#10000},4,20,4,20" +locations_default(#20099,#10000,4,20,4,20) +hasLocation(#20098,#20099) +#20100=* +tokeninfo(#20100,0,#20001,25,"") +#20101=@"loc,{#10000},4,21,4,20" +locations_default(#20101,#10000,4,21,4,20) +hasLocation(#20100,#20101) +#20102=* +entry_cfg_node(#20102,#20001) +#20103=@"loc,{#10000},1,1,1,0" +locations_default(#20103,#10000,1,1,1,0) +hasLocation(#20102,#20103) +#20104=* +exit_cfg_node(#20104,#20001) +hasLocation(#20104,#20101) +successor(#20054,#20050) +successor(#20052,#20054) +successor(#20050,#20048) +successor(#20048,#20104) +successor(#20036,#20042) +successor(#20046,#20038) +successor(#20044,#20040) +successor(#20042,#20044) +successor(#20040,#20046) +successor(#20038,#20052) +successor(#20027,#20031) +successor(#20034,#20029) +successor(#20031,#20034) +successor(#20029,#20036) +successor(#20015,#20019) +successor(#20025,#20021) +successor(#20023,#20025) +successor(#20021,#20017) +successor(#20019,#20023) +successor(#20017,#20027) +successor(#20102,#20015) +isNodejs(#20001) +numlines(#10000,4,4,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/node/output/trap/tst.mjs.trap b/javascript/extractor/tests/node/output/trap/tst.mjs.trap new file mode 100644 index 00000000000..a8608dce6fe --- /dev/null +++ b/javascript/extractor/tests/node/output/trap/tst.mjs.trap @@ -0,0 +1,84 @@ +#10000=@"/tst.mjs;sourcefile" +files(#10000,"/tst.mjs","tst","mjs",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,6" +locations_default(#20002,#10000,1,1,1,6) +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},1,1" +scopes(#20007,3) +scopenodes(#20001,#20007) +scopenesting(#20007,#20000) +isModule(#20001) +#20008=@"var;{x};{#20007}" +variables(#20008,"x",#20007) +#20009=* +stmts(#20009,18,#20001,0,"var x;") +hasLocation(#20009,#20002) +stmtContainers(#20009,#20001) +#20010=* +exprs(#20010,64,#20009,0,"x") +#20011=@"loc,{#10000},1,5,1,5" +locations_default(#20011,#10000,1,5,1,5) +hasLocation(#20010,#20011) +enclosingStmt(#20010,#20009) +exprContainers(#20010,#20001) +#20012=* +exprs(#20012,78,#20010,0,"x") +hasLocation(#20012,#20011) +enclosingStmt(#20012,#20009) +exprContainers(#20012,#20001) +literals("x","x",#20012) +decl(#20012,#20008) +#20013=* +lines(#20013,#20001,"var x;","") +hasLocation(#20013,#20002) +numlines(#20001,1,1,0) +#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") +hasLocation(#20016,#20011) +#20017=* +tokeninfo(#20017,8,#20001,2,";") +#20018=@"loc,{#10000},1,6,1,6" +locations_default(#20018,#10000,1,6,1,6) +hasLocation(#20017,#20018) +#20019=* +tokeninfo(#20019,0,#20001,3,"") +#20020=@"loc,{#10000},1,7,1,6" +locations_default(#20020,#10000,1,7,1,6) +hasLocation(#20019,#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=* +exit_cfg_node(#20023,#20001) +hasLocation(#20023,#20020) +successor(#20009,#20012) +successor(#20012,#20010) +successor(#20010,#20023) +successor(#20021,#20009) +numlines(#10000,1,1,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/project-layout b/javascript/extractor/tests/project-layout new file mode 100644 index 00000000000..173b219894c --- /dev/null +++ b/javascript/extractor/tests/project-layout @@ -0,0 +1 @@ +**/packs/javascript/extractor/tests/*/input// diff --git a/javascript/extractor/tests/rcfiles/input/.babelrc b/javascript/extractor/tests/rcfiles/input/.babelrc new file mode 100644 index 00000000000..2104ca43283 --- /dev/null +++ b/javascript/extractor/tests/rcfiles/input/.babelrc @@ -0,0 +1,3 @@ +{ + "sourceType": "module" +} diff --git a/javascript/extractor/tests/rcfiles/input/.eslintrc b/javascript/extractor/tests/rcfiles/input/.eslintrc new file mode 100644 index 00000000000..8dafe48e325 --- /dev/null +++ b/javascript/extractor/tests/rcfiles/input/.eslintrc @@ -0,0 +1,3 @@ +{ + "parser": "babel-eslint" +} diff --git a/javascript/extractor/tests/rcfiles/input/.npmrc b/javascript/extractor/tests/rcfiles/input/.npmrc new file mode 100644 index 00000000000..f4e5d9d2029 --- /dev/null +++ b/javascript/extractor/tests/rcfiles/input/.npmrc @@ -0,0 +1 @@ +page-lock=false diff --git a/javascript/extractor/tests/rcfiles/output/trap/.babelrc.trap b/javascript/extractor/tests/rcfiles/output/trap/.babelrc.trap new file mode 100644 index 00000000000..653a7d69968 --- /dev/null +++ b/javascript/extractor/tests/rcfiles/output/trap/.babelrc.trap @@ -0,0 +1,22 @@ +#10000=@"/.babelrc;sourcefile" +files(#10000,"/.babelrc",".babelrc","",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=* +json(#20000,5,#10000,0,"{\n ""so ... dule""\n}") +#20001=@"loc,{#10000},1,1,3,1" +locations_default(#20001,#10000,1,1,3,1) +hasLocation(#20000,#20001) +#20002=* +json(#20002,3,#20000,0,"""module""") +#20003=@"loc,{#10000},2,17,2,24" +locations_default(#20003,#10000,2,17,2,24) +hasLocation(#20002,#20003) +json_literals("module","""module""",#20002) +json_properties(#20000,"sourceType",#20002) +numlines(#10000,3,0,0) +filetype(#10000,"json") diff --git a/javascript/extractor/tests/rcfiles/output/trap/.eslintrc.trap b/javascript/extractor/tests/rcfiles/output/trap/.eslintrc.trap new file mode 100644 index 00000000000..efb89e48051 --- /dev/null +++ b/javascript/extractor/tests/rcfiles/output/trap/.eslintrc.trap @@ -0,0 +1,22 @@ +#10000=@"/.eslintrc;sourcefile" +files(#10000,"/.eslintrc",".eslintrc","",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=* +json(#20000,5,#10000,0,"{\n ""pa ... lint""\n}") +#20001=@"loc,{#10000},1,1,3,1" +locations_default(#20001,#10000,1,1,3,1) +hasLocation(#20000,#20001) +#20002=* +json(#20002,3,#20000,0,"""babel-eslint""") +#20003=@"loc,{#10000},2,13,2,26" +locations_default(#20003,#10000,2,13,2,26) +hasLocation(#20002,#20003) +json_literals("babel-eslint","""babel-eslint""",#20002) +json_properties(#20000,"parser",#20002) +numlines(#10000,3,0,0) +filetype(#10000,"json") diff --git a/javascript/extractor/tests/regexp/input/es2018.js b/javascript/extractor/tests/regexp/input/es2018.js new file mode 100644 index 00000000000..f7d0d826b2c --- /dev/null +++ b/javascript/extractor/tests/regexp/input/es2018.js @@ -0,0 +1,5 @@ +/^(?\s+)\w+\k$/; +/(?<=.)/; +/(?$/;") +#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,"/(?\s+)\w+\k$/;"," +") +hasLocation(#20053,#20004) +#20054=* +lines(#20054,#20001,"/(?<=.)/;"," +") +hasLocation(#20054,#20026) +#20055=* +lines(#20055,#20001,"/(?\s+)\w+\k$/") +hasLocation(#20058,#20006) +#20059=* +tokeninfo(#20059,8,#20001,1,";") +#20060=@"loc,{#10000},1,24,1,24" +locations_default(#20060,#10000,1,24,1,24) +hasLocation(#20059,#20060) +#20061=* +tokeninfo(#20061,5,#20001,2,"/(?<=.)/") +hasLocation(#20061,#20028) +#20062=* +tokeninfo(#20062,8,#20001,3,";") +#20063=@"loc,{#10000},2,9,2,9" +locations_default(#20063,#10000,2,9,2,9) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,5,#20001,4,"/(?{=&o%PrQ*%M4qn&B0B&iy#Nr1X<2@Xv>TWbe=W?PdFm>MMQ!_405zzmB`%@o*fn75(>e z_mi>A7lv7$%@5))UoTl+Y*xlt(X%2l?yo?ni`x8W#HsOgCS zJk0YpFQedTi3z+IF2EZUxq)TDR{-^GJ3jn5{s1Zi_(!(FZw}ipCUo?xD$mA@pQ8ZL zuk?q%uP)c;t6evA2bDD8IJ|INKwqC}7(5bvh(x`0=#4tib^J?|Rp!n5h!UV@G ztOP&#A27`I4H%7G~ly3J}o?2gPs zj4N?>@8?FJBP|IIMKc?Rm-Bf2b$x$-zdo&1mVG*HY^Equ6R%n;JaQx9Rbe9_hLH&L zW^skYrF>mFnMVt8vQnOt6%bd9y*EyFu%9h>$sQFHD?>tkN0bKcP*bsrVTc{;lj9VM zHOw9vEc$5n*ilQY@`+V>D}GV=FLPAR&m^Umk&Z%nRYe(U8iS6!;V>TP1R?_zFX%_=7liNpWTNQEueoCa!Qo@12;6loW z)MPNB0CrRqpe%iAWv-D=hO?126S7YxW`pHssZo=#poTonOPvye5?-@WW6KCN-W5s| zXM~z;8S$ua&`{6AJWgt3r-rWx6q&n6z;sw@@ zGAcU&XP_rSIm?boMqgRVE?45=#_UrrGn<_eO(9CEPiCj1DQp>`#KKTUH3hJ4QSvpV z@-?L@fQ_kAata~gQbk0>AWY_H<%kGdhFq{DEm%cGL|AN z!*9usvvNvVOe2`MAS=`|LqW%Ux&C*1d>z<yWIOM=?nYHl@Z%@P&U2vJ^7qxTM54B)v% zR7P#kTAxd6`y|Zb^hvr)5h;=pL#6pduoncy!u_Vk)j@;^52hj}qh7?E>j(|CntCPa zYYQ7ex{h!n*rVAtDU49&Ss@i!2UiaW9BELM)Sw#0J&|V92x;E-YWO2Ung>&)Wz-{G zph3isAt0(#`>Io``N#=9%d+2~zPRV4yB13}ke>!lp(ZjF;CfOYYZ+3-!UU_1ijNE? zsM=AF>Wq8Ig4dC(u1SiHxCZ9iz1kM{bPJhhEAU=sqqUR0x2Ar;nT6#HS5_GuPR|=^ zK^H*nHhP7m+faaow=c=2v7Q-m4f>2P{Ho2IsDU_faOOYDTW zBeW=k+TvFdNug|}(h|c6O0KL%DyyN&TEOXmR^Y&G1ZF8;jTE4rgf_XwBt1^{G70tp zd&k}e8=XmxbZxfNHYbJ=FuYT>;^3AxBp*ym&k7iNo8;cVM%clejOmh?{%olX788~; zI~4z&#H$UG9|}j;r7Bsn?UenKX~?kU^lzo7Xeq@PfV6D8NFmg)ZGo3@YdJ;fhSo5n z_Hr>1-Lr_RP*htV_xVMW)JsrrB zTUO^Ny)g_KVJQPb8kH{0;*Q!zi8W5-&TY^#Z(vDwbcbW+q^4&HvP=kEfYVQJd z#<7x)TxGH&>n44kOe547b|*#Jg$mu_mB&O4`jaYm*ipFXlxo5jCUxh?G<==e_X&NV z(*S(?*1eyUdNPf0W3BE*tNT!^d*yf=3N#@KP7PRw5-I(Pqes@-L=w{w5!NH$^b-F* zOzqxHZOG8OcaqzEB)7|!Aa$wS?w#Bg(+DKa?Owvxhq>Lmxt$Or*qGppqV-{7_ikcC zjXqjlk;KMLFLX0`xz{_1Ev6A(oY=i2b{{5o-^uY9+Zam8oR60U3mf7^XIc}uFsXYd zsd0mo$u%lcA#$~F^93LtnNtWCzi>fh@4$LM0$YPf;ZvK1I^tJzQsX6w-Bwi*Now4* zVwqIKfJYoeY#Ml))-#AWsZ|jqHGVZq2(F!jgZjejWN*A~XAD{pRcMDJL`e!)6^T|m zl}mWQGUQepn@)hn$R8}l<3Vn#!pUvazHLBN5#%!w4Fa*RT{cL0&6- z3&XoH>k>qZZshov!2e&%4K`&!_X=T%;@d zb_G==pPnduda`)Q$_I$lPKF085-|*s@Di{TB-DTmZ-?sw2)7mlWEo}pMuqAMR4%W( z-Eg^_M{{5zHvl|+;NcI*O%5&T56JgnB}&vEkoVN|y3-$!OWYFO>0*F4j1s!)56Igp z9V{*{?C4V0e?nePmME&l0B`S=D2k%`eR|!FdnbT&c|u;GrvuM%wbI*dZ(=3ii_ncF zxmHmbFDIrqJ;{j~SY%=zs6+A`#4uL;8XXW87z@qO)hKQcd?8n>I>-mPhYlB)k4{t& zEBoC{5MBOqNzq47{^F1~a!L_QWxsO^rh){SCzf!h+5_|XqJSF}xhS9ySFhh+P^$dv O?CbX1mcQPFbo?Jskm_&% literal 0 HcmV?d00001 diff --git a/javascript/extractor/tests/restprops/input/tst.js b/javascript/extractor/tests/restprops/input/tst.js new file mode 100644 index 00000000000..c695a1af2d3 --- /dev/null +++ b/javascript/extractor/tests/restprops/input/tst.js @@ -0,0 +1 @@ +var f = ({...p}) => {}; diff --git a/javascript/extractor/tests/restprops/options.json b/javascript/extractor/tests/restprops/options.json new file mode 100644 index 00000000000..075583ca1f6 --- /dev/null +++ b/javascript/extractor/tests/restprops/options.json @@ -0,0 +1,3 @@ +{ + "experimental": true +} diff --git a/javascript/extractor/tests/restprops/output/trap/tst.js.trap b/javascript/extractor/tests/restprops/output/trap/tst.js.trap new file mode 100644 index 00000000000..e63c1f116bc --- /dev/null +++ b/javascript/extractor/tests/restprops/output/trap/tst.js.trap @@ -0,0 +1,173 @@ +#10000=@"/tst.js;sourcefile" +files(#10000,"/tst.js","tst","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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 = ({...p}) => {}") +#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,"({...p}) => {}") +#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;{p};{#20012}" +variables(#20013,"p",#20012) +#20014=* +exprs(#20014,68,#20010,0,"{...p}") +#20015=@"loc,{#10000},1,10,1,15" +locations_default(#20015,#10000,1,10,1,15) +hasLocation(#20014,#20015) +exprContainers(#20014,#20010) +#20016=* +exprs(#20016,78,#20014,-1,"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) +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) +#20024=* +tokeninfo(#20024,8,#20001,2,"=") +#20025=@"loc,{#10000},1,7,1,7" +locations_default(#20025,#10000,1,7,1,7) +hasLocation(#20024,#20025) +#20026=* +tokeninfo(#20026,8,#20001,3,"(") +#20027=@"loc,{#10000},1,9,1,9" +locations_default(#20027,#10000,1,9,1,9) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,4,"{") +#20029=@"loc,{#10000},1,10,1,10" +locations_default(#20029,#10000,1,10,1,10) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,5,"...") +#20031=@"loc,{#10000},1,11,1,13" +locations_default(#20031,#10000,1,11,1,13) +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) +#20035=* +tokeninfo(#20035,8,#20001,8,")") +#20036=@"loc,{#10000},1,16,1,16" +locations_default(#20036,#10000,1,16,1,16) +hasLocation(#20035,#20036) +#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) +#20045=* +tokeninfo(#20045,0,#20001,13,"") +#20046=@"loc,{#10000},2,1,2,0" +locations_default(#20046,#10000,2,1,2,0) +hasLocation(#20045,#20046) +#20047=* +entry_cfg_node(#20047,#20001) +#20048=@"loc,{#10000},1,1,1,0" +locations_default(#20048,#10000,1,1,1,0) +hasLocation(#20047,#20048) +#20049=* +exit_cfg_node(#20049,#20001) +hasLocation(#20049,#20046) +successor(#20004,#20008) +successor(#20010,#20006) +#20050=* +entry_cfg_node(#20050,#20010) +#20051=@"loc,{#10000},1,9,1,8" +locations_default(#20051,#10000,1,9,1,8) +hasLocation(#20050,#20051) +#20052=* +exit_cfg_node(#20052,#20010) +#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) +numlines(#10000,1,1,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/shebang/input/tst.html b/javascript/extractor/tests/shebang/input/tst.html new file mode 100644 index 00000000000..872c6709fea --- /dev/null +++ b/javascript/extractor/tests/shebang/input/tst.html @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/javascript/extractor/tests/shebang/input/tst.js b/javascript/extractor/tests/shebang/input/tst.js new file mode 100644 index 00000000000..401b38c1998 --- /dev/null +++ b/javascript/extractor/tests/shebang/input/tst.js @@ -0,0 +1,2 @@ +#!/usr/bin/node +alert("Hi!"); \ No newline at end of file diff --git a/javascript/extractor/tests/shebang/output/trap/tst.html.trap b/javascript/extractor/tests/shebang/output/trap/tst.html.trap new file mode 100644 index 00000000000..525df65c352 --- /dev/null +++ b/javascript/extractor/tests/shebang/output/trap/tst.html.trap @@ -0,0 +1,67 @@ +#10000=@"/tst.html;sourcefile" +files(#10000,"/tst.html","tst","html",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},3,17" +toplevels(#20001,1) +#20002=@"loc,{#10000},3,17,3,17" +locations_default(#20002,#10000,3,17,3,17) +hasLocation(#20001,#20002) +#20003=* +jsParseErrors(#20003,#20001,"Error: Unexpected character '#'","#!/usr/bin/node +") +#20004=@"loc,{#10000},4,1,4,1" +locations_default(#20004,#10000,4,1,4,1) +hasLocation(#20003,#20004) +#20005=* +lines(#20005,#20001,""," +") +#20006=@"loc,{#10000},3,17,3,16" +locations_default(#20006,#10000,3,17,3,16) +hasLocation(#20005,#20006) +#20007=* +lines(#20007,#20001,"#!/usr/bin/node"," +") +#20008=@"loc,{#10000},4,1,4,15" +locations_default(#20008,#10000,4,1,4,15) +hasLocation(#20007,#20008) +#20009=* +lines(#20009,#20001,"// shebang in HTML is not OK"," +") +#20010=@"loc,{#10000},5,1,5,28" +locations_default(#20010,#10000,5,1,5,28) +hasLocation(#20009,#20010) +#20011=* +lines(#20011,#20001," ","") +#20012=@"loc,{#10000},6,1,6,8" +locations_default(#20012,#10000,6,1,6,8) +hasLocation(#20011,#20012) +numlines(#20001,4,0,0) +#20013=* +xmlElements(#20013,"html",#10000,0,#10000) +#20014=@"loc,{#10000},1,1,10,7" +locations_default(#20014,#10000,1,1,10,7) +xmllocations(#20013,#20014) +#20015=* +xmlElements(#20015,"head",#20013,0,#10000) +#20016=@"loc,{#10000},2,5,7,11" +locations_default(#20016,#10000,2,5,7,11) +xmllocations(#20015,#20016) +#20017=* +xmlElements(#20017,"body",#20013,1,#10000) +#20018=@"loc,{#10000},8,5,9,11" +locations_default(#20018,#10000,8,5,9,11) +xmllocations(#20017,#20018) +#20019=* +xmlElements(#20019,"script",#20015,0,#10000) +#20020=@"loc,{#10000},3,9,6,17" +locations_default(#20020,#10000,3,9,6,17) +xmllocations(#20019,#20020) +numlines(#10000,10,0,0) +filetype(#10000,"html") diff --git a/javascript/extractor/tests/shebang/output/trap/tst.js.trap b/javascript/extractor/tests/shebang/output/trap/tst.js.trap new file mode 100644 index 00000000000..af22a7a7af9 --- /dev/null +++ b/javascript/extractor/tests/shebang/output/trap/tst.js.trap @@ -0,0 +1,122 @@ +#10000=@"/tst.js;sourcefile" +files(#10000,"/tst.js","tst","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},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) +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) +#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) +#20033=* +entry_cfg_node(#20033,#20001) +#20034=@"loc,{#10000},2,1,2,0" +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) +isNodejs(#20001) +#20036=* +lines(#20036,#20001,"#!/usr/bin/node"," +") +#20037=@"loc,{#10000},1,1,1,15" +locations_default(#20037,#10000,1,1,1,15) +hasLocation(#20036,#20037) +numlines(#10000,2,1,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/stmts/input/conditionals.js b/javascript/extractor/tests/stmts/input/conditionals.js new file mode 100644 index 00000000000..e21a4299f87 --- /dev/null +++ b/javascript/extractor/tests/stmts/input/conditionals.js @@ -0,0 +1,12 @@ +if (true) + ; +if (b) + ; +else + ; +switch (b) { +case 23: +case c: + break; +default: +} \ No newline at end of file diff --git a/javascript/extractor/tests/stmts/input/forvardefault.js b/javascript/extractor/tests/stmts/input/forvardefault.js new file mode 100644 index 00000000000..45b7708a59c --- /dev/null +++ b/javascript/extractor/tests/stmts/input/forvardefault.js @@ -0,0 +1,3 @@ +for (a = 1 in b) f(); + +for (c = 0 of d) g(); \ No newline at end of file diff --git a/javascript/extractor/tests/stmts/input/functions.js b/javascript/extractor/tests/stmts/input/functions.js new file mode 100644 index 00000000000..1dc9724687b --- /dev/null +++ b/javascript/extractor/tests/stmts/input/functions.js @@ -0,0 +1,13 @@ +function g(x, y) { + return x+y; +} + +function h() {} + +k = function() { + return; +} + +l = function f() {} + +function() {} diff --git a/javascript/extractor/tests/stmts/input/loops.js b/javascript/extractor/tests/stmts/input/loops.js new file mode 100644 index 00000000000..84028192cee --- /dev/null +++ b/javascript/extractor/tests/stmts/input/loops.js @@ -0,0 +1,21 @@ +while(true) + ; +outer: for(a; b; c) { + for(;;) + if (d) + continue outer; + else if (e) + break outer; + else + continue; +} + +do { + ; +} while(a); + +for (var i=0,n=10; 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,7,"(...strings: string[]) => string") +#10026=@"type;21" +types(#10026,6,"ConcatArray") +#10027=@"symbol;8" +type_symbol(#10026,#10027) +type_child(#10008,#10026,0) +#10028=@"type;22" +types(#10028,6,"ConcatArray[]") +type_symbol(#10028,#10015) +type_child(#10026,#10028,0) +#10029=@"type;23" +types(#10029,3,"string | ConcatArray") +type_child(#10008,#10029,0) +type_child(#10026,#10029,1) +#10030=@"type;24" +types(#10030,6,"(string | ConcatArray)[]") +type_symbol(#10030,#10015) +type_child(#10029,#10030,0) +#10031=@"type;25" +types(#10031,7,"{ (...items: ConcatArray[]): string[]; ...") +#10032=@"type;26" +types(#10032,3,"((...strings: string[]) => string) | { (...item...") +type_child(#10025,#10032,0) +type_child(#10031,#10032,1) +#10033=@"type;27" +types(#10033,7,"(searchString: string, position?: number) => nu...") +#10034=@"type;28" +types(#10034,7,"(start?: number, end?: number) => string") +#10035=@"type;29" +types(#10035,7,"(start?: number, end?: number) => string[]") +#10036=@"type;30" +types(#10036,3,"((start?: number, end?: number) => string) | ((...") +type_child(#10034,#10036,0) +type_child(#10035,#10036,1) +#10037=@"type;31" +types(#10037,6,"Object") +#10038=@"symbol;9" +type_symbol(#10037,#10038) +#10039=@"type;32" +types(#10039,7,"() => Object") +#10040=@"type;33" +types(#10040,3,"(() => string) | (() => Object)") +type_child(#10024,#10040,0) +type_child(#10039,#10040,1) +#10041=@"type;34" +types(#10041,6,"Function") +#10042=@"symbol;10" +type_symbol(#10041,#10042) +#10043=@"type;35" +types(#10043,14,"symbol") +#10044=@"type;36" +types(#10044,3,"string | number | symbol") +type_child(#10008,#10044,0) +type_child(#10009,#10044,1) +type_child(#10043,#10044,2) +#10045=@"type;37" +types(#10045,7,"(v: string | number | symbol) => boolean") +#10046=@"type;38" +types(#10046,7,"(v: Object) => boolean") +#10047=@"type;39" +types(#10047,3,"((radix?: number) => string) | (() => string)") +type_child(#10010,#10047,0) +type_child(#10024,#10047,1) +#10048=@"type;40" +types(#10048,7,"() => symbol") +#10049=@"type;41" +types(#10049,3,"(() => number) | (() => string) | (() => symbol)") +type_child(#10013,#10049,0) +type_child(#10024,#10049,1) +type_child(#10048,#10049,2) +#10050=@"type;42" +types(#10050,7,"(this: Function, thisArg: any, argArray?: any) ...") +#10051=@"type;43" +types(#10051,6,"any[]") +type_symbol(#10051,#10015) +type_child(#10002,#10051,0) +#10052=@"type;44" +types(#10052,7,"(this: Function, thisArg: any, ...argArray: any...") +#10053=@"type;45" +types(#10053,8,"T") +#10054=@"symbol;11" +type_symbol(#10053,#10054) +#10055=@"type;46" +types(#10055,6,"T[]") +type_symbol(#10055,#10015) +type_child(#10053,#10055,0) +#10056=@"type;47" +types(#10056,8,"T") +#10057=@"symbol;12" +type_symbol(#10056,#10057) +#10058=@"type;48" +types(#10058,6,"ConcatArray") +type_symbol(#10058,#10027) +type_child(#10056,#10058,0) +#10059=@"type;49" +types(#10059,7,"(...items: any[]) => number") +#10060=@"type;50" +types(#10060,6,"ConcatArray") +type_symbol(#10060,#10027) +type_child(#10002,#10060,0) +#10061=@"type;51" +types(#10061,6,"ConcatArray[]") +type_symbol(#10061,#10015) +type_child(#10060,#10061,0) +#10062=@"type;52" +types(#10062,7,"{ (...items: ConcatArray[]): any[]; (...it...") +#10063=@"type;53" +types(#10063,7,"(separator?: string) => string") +#10064=@"type;54" +types(#10064,7,"() => any[]") +#10065=@"type;55" +types(#10065,7,"(start?: number, end?: number) => any[]") +#10066=@"type;56" +types(#10066,7,"(a: any, b: any) => number") +#10067=@"type;57" +types(#10067,7,"(compareFn?: (a: any, b: any) => number) => any[]") +#10068=@"type;58" +types(#10068,7,"{ (start: number, deleteCount?: number): any[];...") +#10069=@"type;59" +types(#10069,7,"(searchElement: any, fromIndex?: number) => number") +#10070=@"type;60" +types(#10070,7,"(value: any, index: number, array: any[]) => bo...") +#10071=@"type;61" +types(#10071,7,"(callbackfn: (value: any, index: number, array:...") +#10072=@"type;62" +types(#10072,10,"void") +#10073=@"type;63" +types(#10073,7,"(value: any, index: number, array: any[]) => void") +#10074=@"type;64" +types(#10074,7,"(callbackfn: (value: any, index: number, array:...") +#10075=@"type;65" +types(#10075,19,"U") +#10076=@"type;66" +types(#10076,6,"U[]") +type_symbol(#10076,#10015) +type_child(#10075,#10076,0) +#10077=@"type;67" +types(#10077,7,"(value: any, index: number, array: any[]) => U") +#10078=@"type;68" +types(#10078,7,"(callbackfn: (value: any, index: number, arr...") +#10079=@"type;69" +types(#10079,19,"S") +#10080=@"type;70" +types(#10080,6,"S[]") +type_symbol(#10080,#10015) +type_child(#10079,#10080,0) +#10081=@"type;71" +types(#10081,7,"(value: any, index: number, array: any[]) => any") +#10082=@"type;72" +types(#10082,7,"{ (callbackfn: (value: any, inde...") +#10083=@"type;73" +types(#10083,7,"(previousValue: any, currentValue: any, current...") +#10084=@"type;74" +types(#10084,7,"(previousValue: U, currentValue: any, currentIn...") +#10085=@"type;75" +types(#10085,7,"{ (callbackfn: (previousValue: any, currentValu...") +#10086=@"type;76" +types(#10086,6,"T[]") +type_symbol(#10086,#10015) +type_child(#10056,#10086,0) +#10087=@"type;77" +types(#10087,7,"(start?: number, end?: number) => T[]") +#10088=@"type;78" +types(#10088,7,"() => T") +#10089=@"type;79" +types(#10089,7,"(...items: T[]) => number") +#10090=@"type;80" +types(#10090,6,"ConcatArray") +type_symbol(#10090,#10027) +type_child(#10053,#10090,0) +#10091=@"type;81" +types(#10091,6,"ConcatArray[]") +type_symbol(#10091,#10015) +type_child(#10090,#10091,0) +#10092=@"type;82" +types(#10092,3,"T | ConcatArray") +type_child(#10053,#10092,0) +type_child(#10090,#10092,1) +#10093=@"type;83" +types(#10093,6,"(T | ConcatArray)[]") +type_symbol(#10093,#10015) +type_child(#10092,#10093,0) +#10094=@"type;84" +types(#10094,7,"{ (...items: ConcatArray[]): T[]; (...items:...") +#10095=@"type;85" +types(#10095,7,"() => T[]") +#10096=@"type;86" +types(#10096,7,"(start?: number, end?: number) => T[]") +#10097=@"type;87" +types(#10097,7,"(a: T, b: T) => number") +#10098=@"type;88" +types(#10098,7,"(compareFn?: (a: T, b: T) => number) => T[]") +#10099=@"type;89" +types(#10099,7,"{ (start: number, deleteCount?: number): T[]; (...") +#10100=@"type;90" +types(#10100,7,"(searchElement: T, fromIndex?: number) => number") +#10101=@"type;91" +types(#10101,7,"(value: T, index: number, array: T[]) => boolean") +#10102=@"type;92" +types(#10102,7,"(callbackfn: (value: T, index: number, array: T...") +#10103=@"type;93" +types(#10103,7,"(value: T, index: number, array: T[]) => void") +#10104=@"type;94" +types(#10104,7,"(callbackfn: (value: T, index: number, array: T...") +#10105=@"type;95" +types(#10105,7,"(value: T, index: number, array: T[]) => U") +#10106=@"type;96" +types(#10106,7,"(callbackfn: (value: T, index: number, array...") +#10107=@"type;97" +types(#10107,7,"(value: T, index: number, array: T[]) => any") +#10108=@"type;98" +types(#10108,7,"{ (callbackfn: (value: T, index: n...") +#10109=@"type;99" +types(#10109,7,"(previousValue: T, currentValue: T, currentInde...") +#10110=@"type;100" +types(#10110,7,"(previousValue: U, currentValue: T, currentInde...") +#10111=@"type;101" +types(#10111,7,"{ (callbackfn: (previousValue: T, currentValue:...") +#10112=@"type;102" +types(#10112,7,"() => string | ConcatArray") +#10113=@"type;103" +types(#10113,7,"(...items: (string | ConcatArray)[]) =>...") +#10114=@"type;104" +types(#10114,6,"ConcatArray>") +type_symbol(#10114,#10027) +type_child(#10029,#10114,0) +#10115=@"type;105" +types(#10115,6,"ConcatArray>[]") +type_symbol(#10115,#10015) +type_child(#10114,#10115,0) +#10116=@"type;106" +types(#10116,3,"string | ConcatArray | ConcatArray | ConcatArray (string | ConcatArray)[]") +#10120=@"type;110" +types(#10120,7,"(start?: number, end?: number) => (string | Con...") +#10121=@"type;111" +types(#10121,7,"(a: string | ConcatArray, b: string | C...") +#10122=@"type;112" +types(#10122,7,"(compareFn?: (a: string | ConcatArray, ...") +#10123=@"type;113" +types(#10123,7,"{ (start: number, deleteCount?: number): (strin...") +#10124=@"type;114" +types(#10124,7,"(searchElement: string | ConcatArray, f...") +#10125=@"type;115" +types(#10125,7,"(value: string | ConcatArray, index: nu...") +#10126=@"type;116" +types(#10126,7,"(callbackfn: (value: string | ConcatArray, index: nu...") +#10128=@"type;118" +types(#10128,7,"(callbackfn: (value: string | ConcatArray, index: nu...") +#10130=@"type;120" +types(#10130,7,"(callbackfn: (value: string | ConcatArray, index: nu...") +#10132=@"type;122" +types(#10132,7,"{ >(call...") +#10133=@"type;123" +types(#10133,7,"(previousValue: string | ConcatArray, c...") +#10134=@"type;124" +types(#10134,7,"(previousValue: U, currentValue: string | Conca...") +#10135=@"type;125" +types(#10135,7,"{ (callbackfn: (previousValue: string | ConcatA...") +#10136=@"type;126" +types(#10136,3,"((start?: number, end?: number) => string) | ((...") +type_child(#10034,#10136,0) +type_child(#10035,#10136,1) +type_child(#10120,#10136,2) +#10137=@"type;127" +types(#10137,3,"string | (string | ConcatArray)[]") +type_child(#10008,#10137,0) +type_child(#10030,#10137,1) +#10138=@"type;128" +types(#10138,3,"((...strings: string[]) => string) | { (...item...") +type_child(#10025,#10138,0) +type_child(#10118,#10138,1) +#10139=@"type;129" +types(#10139,3,"((searchString: string, position?: number) => n...") +type_child(#10033,#10139,0) +type_child(#10124,#10139,1) +#10140=@"type;130" +types(#10140,3,"((start?: number, end?: number) => string) | ((...") +type_child(#10034,#10140,0) +type_child(#10120,#10140,1) +#10141=@"type;131" +types(#10141,7,"() => ConcatArray") +#10142=@"type;132" +types(#10142,7,"(...items: ConcatArray[]) => number") +#10143=@"type;133" +types(#10143,6,"ConcatArray>") +type_symbol(#10143,#10027) +type_child(#10026,#10143,0) +#10144=@"type;134" +types(#10144,6,"ConcatArray>[]") +type_symbol(#10144,#10015) +type_child(#10143,#10144,0) +#10145=@"type;135" +types(#10145,3,"ConcatArray | ConcatArray | ConcatArray>[]...") +#10148=@"type;138" +types(#10148,7,"() => ConcatArray[]") +#10149=@"type;139" +types(#10149,7,"(start?: number, end?: number) => ConcatArray, b: ConcatArray...") +#10151=@"type;141" +types(#10151,7,"(compareFn?: (a: ConcatArray, b: Concat...") +#10152=@"type;142" +types(#10152,7,"{ (start: number, deleteCount?: number): Concat...") +#10153=@"type;143" +types(#10153,7,"(searchElement: ConcatArray, fromIndex?...") +#10154=@"type;144" +types(#10154,7,"(value: ConcatArray, index: number, arr...") +#10155=@"type;145" +types(#10155,7,"(callbackfn: (value: ConcatArray, index...") +#10156=@"type;146" +types(#10156,7,"(value: ConcatArray, index: number, arr...") +#10157=@"type;147" +types(#10157,7,"(callbackfn: (value: ConcatArray, index...") +#10158=@"type;148" +types(#10158,7,"(value: ConcatArray, index: number, arr...") +#10159=@"type;149" +types(#10159,7,"(callbackfn: (value: ConcatArray, in...") +#10160=@"type;150" +types(#10160,7,"(value: ConcatArray, index: number, arr...") +#10161=@"type;151" +types(#10161,7,"{ >(callbackfn: (...") +#10162=@"type;152" +types(#10162,7,"(previousValue: ConcatArray, currentVal...") +#10163=@"type;153" +types(#10163,7,"(previousValue: U, currentValue: ConcatArray string[]) | ...") +type_child(#10035,#10165,0) +type_child(#10149,#10165,1) +#10166=@"type;156" +types(#10166,3,"string[] | ConcatArray[]") +type_child(#10014,#10166,0) +type_child(#10028,#10166,1) +#10167=@"type;157" +types(#10167,3,"(() => string) | (() => ConcatArray)") +type_child(#10024,#10167,0) +type_child(#10141,#10167,1) +#10168=@"type;158" +types(#10168,7,"(...items: string[]) => number") +#10169=@"type;159" +types(#10169,3,"((...items: ConcatArray[]) => number) |...") +type_child(#10142,#10169,0) +type_child(#10168,#10169,1) +#10170=@"type;160" +types(#10170,3,"{ (...items: ConcatArray[]): string[]; ...") +type_child(#10031,#10170,0) +type_child(#10147,#10170,1) +#10171=@"type;161" +types(#10171,7,"() => string[]") +#10172=@"type;162" +types(#10172,3,"(() => ConcatArray[]) | (() => string[])") +type_child(#10148,#10172,0) +type_child(#10171,#10172,1) +#10173=@"type;163" +types(#10173,3,"(() => ConcatArray) | (() => string)") +type_child(#10141,#10173,0) +type_child(#10024,#10173,1) +#10174=@"type;164" +types(#10174,7,"(a: string, b: string) => number") +#10175=@"type;165" +types(#10175,7,"(compareFn?: (a: string, b: string) => number) ...") +#10176=@"type;166" +types(#10176,3,"((compareFn?: (a: ConcatArray, b: Conca...") +type_child(#10151,#10176,0) +type_child(#10175,#10176,1) +#10177=@"type;167" +types(#10177,7,"{ (start: number, deleteCount?: number): string...") +#10178=@"type;168" +types(#10178,3,"{ (start: number, deleteCount?: number): Concat...") +type_child(#10152,#10178,0) +type_child(#10177,#10178,1) +#10179=@"type;169" +types(#10179,7,"(searchElement: string, fromIndex?: number) => ...") +#10180=@"type;170" +types(#10180,3,"((searchElement: string, fromIndex?: number) =>...") +type_child(#10179,#10180,0) +type_child(#10153,#10180,1) +#10181=@"type;171" +types(#10181,7,"(value: string, index: number, array: string[])...") +#10182=@"type;172" +types(#10182,7,"(callbackfn: (value: string, index: number, arr...") +#10183=@"type;173" +types(#10183,3,"((callbackfn: (value: ConcatArray, inde...") +type_child(#10155,#10183,0) +type_child(#10182,#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(#10157,#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, ...") +#10189=@"type;179" +types(#10189,3,"((callbackfn: (value: ConcatArray, i...") +type_child(#10159,#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...") +#10192=@"type;182" +types(#10192,3,"{ >(callbackfn: (...") +type_child(#10161,#10192,0) +type_child(#10191,#10192,1) +#10193=@"type;183" +types(#10193,7,"(previousValue: string, currentValue: string, c...") +#10194=@"type;184" +types(#10194,7,"(previousValue: U, currentValue: string, curren...") +#10195=@"type;185" +types(#10195,7,"{ (callbackfn: (previousValue: string, currentV...") +#10196=@"type;186" +types(#10196,3,"{ (callbackfn: (previousValue: ConcatArray string") +#10198=@"type;188" +types(#10198,7,"(index: number) => number") +#10199=@"type;189" +types(#10199,6,"CollatorOptions") +#10200=@"symbol;13" +type_symbol(#10199,#10200) +#10201=@"type;190" +types(#10201,7,"{ (that: string): number; (that: string, locale...") +#10202=@"type;191" +types(#10202,6,"RegExpMatchArray") +#10203=@"symbol;14" +type_symbol(#10202,#10203) +#10204=@"type;192" +types(#10204,6,"RegExp") +#10205=@"symbol;15" +type_symbol(#10204,#10205) +#10206=@"type;193" +types(#10206,3,"string | RegExp") +type_child(#10008,#10206,0) +type_child(#10204,#10206,1) +#10207=@"type;194" +types(#10207,7,"(regexp: string | RegExp) => RegExpMatchArray") +#10208=@"type;195" +types(#10208,7,"(substring: string, ...args: any[]) => string") +#10209=@"type;196" +types(#10209,7,"{ (searchValue: string | RegExp, replaceValue: ...") +#10210=@"type;197" +types(#10210,7,"(regexp: string | RegExp) => number") +#10211=@"type;198" +types(#10211,7,"(separator: string | RegExp, limit?: number) =>...") +#10212=@"type;199" +types(#10212,7,"(from: number, length?: number) => string") +#10213=@"type;200" +types(#10213,6,"RegExpExecArray") +#10214=@"symbol;16" +type_symbol(#10213,#10214) +#10215=@"type;201" +types(#10215,7,"(string: string) => RegExpExecArray") +#10216=@"type;202" +types(#10216,7,"(string: string) => boolean") +#10217=@"type;203" +types(#10217,7,"() => RegExp") +#10218=@"type;204" +types(#10218,7,"(compareFn?: (a: string, b: string) => number) ...") +#10219=@"type;205" +types(#10219,7,"() => S") +#10220=@"type;206" +types(#10220,7,"(...items: S[]) => number") +#10221=@"type;207" +types(#10221,6,"ConcatArray") +type_symbol(#10221,#10027) +type_child(#10079,#10221,0) +#10222=@"type;208" +types(#10222,6,"ConcatArray[]") +type_symbol(#10222,#10015) +type_child(#10221,#10222,0) +#10223=@"type;209" +types(#10223,3,"S | ConcatArray") +type_child(#10079,#10223,0) +type_child(#10221,#10223,1) +#10224=@"type;210" +types(#10224,6,"(S | ConcatArray)[]") +type_symbol(#10224,#10015) +type_child(#10223,#10224,0) +#10225=@"type;211" +types(#10225,7,"{ (...items: ConcatArray[]): S[]; (...items:...") +#10226=@"type;212" +types(#10226,7,"() => S[]") +#10227=@"type;213" +types(#10227,7,"(start?: number, end?: number) => S[]") +#10228=@"type;214" +types(#10228,7,"(a: S, b: S) => number") +#10229=@"type;215" +types(#10229,7,"(compareFn?: (a: S, b: S) => number) => S[]") +#10230=@"type;216" +types(#10230,7,"{ (start: number, deleteCount?: number): S[]; (...") +#10231=@"type;217" +types(#10231,7,"(searchElement: S, fromIndex?: number) => number") +#10232=@"type;218" +types(#10232,7,"(value: S, index: number, array: S[]) => boolean") +#10233=@"type;219" +types(#10233,7,"(callbackfn: (value: S, index: number, array: S...") +#10234=@"type;220" +types(#10234,7,"(value: S, index: number, array: S[]) => void") +#10235=@"type;221" +types(#10235,7,"(callbackfn: (value: S, index: number, array: S...") +#10236=@"type;222" +types(#10236,7,"(value: S, index: number, array: S[]) => U") +#10237=@"type;223" +types(#10237,7,"(callbackfn: (value: S, index: number, array...") +#10238=@"type;224" +types(#10238,7,"(value: S, index: number, array: S[]) => any") +#10239=@"type;225" +types(#10239,7,"{ (callbackfn: (value: S, index: n...") +#10240=@"type;226" +types(#10240,7,"(previousValue: S, currentValue: S, currentInde...") +#10241=@"type;227" +types(#10241,7,"(previousValue: U, currentValue: S, currentInde...") +#10242=@"type;228" +types(#10242,7,"{ (callbackfn: (previousValue: S, currentValue:...") +#10243=@"type;229" +types(#10243,3,"((start?: number, end?: number) => string) | ((...") +type_child(#10034,#10243,0) +type_child(#10227,#10243,1) +#10244=@"type;230" +types(#10244,3,"string | S[]") +type_child(#10008,#10244,0) +type_child(#10080,#10244,1) +#10245=@"type;231" +types(#10245,3,"((...strings: string[]) => string) | { (...item...") +type_child(#10025,#10245,0) +type_child(#10225,#10245,1) +#10246=@"type;232" +types(#10246,3,"((searchString: string, position?: number) => n...") +type_child(#10033,#10246,0) +type_child(#10231,#10246,1) +#10247=@"type;233" +types(#10247,7,"() => U") +#10248=@"type;234" +types(#10248,7,"(...items: U[]) => number") +#10249=@"type;235" +types(#10249,6,"ConcatArray") +type_symbol(#10249,#10027) +type_child(#10075,#10249,0) +#10250=@"type;236" +types(#10250,6,"ConcatArray[]") +type_symbol(#10250,#10015) +type_child(#10249,#10250,0) +#10251=@"type;237" +types(#10251,3,"U | ConcatArray") +type_child(#10075,#10251,0) +type_child(#10249,#10251,1) +#10252=@"type;238" +types(#10252,6,"(U | ConcatArray)[]") +type_symbol(#10252,#10015) +type_child(#10251,#10252,0) +#10253=@"type;239" +types(#10253,7,"{ (...items: ConcatArray[]): U[]; (...items:...") +#10254=@"type;240" +types(#10254,7,"() => U[]") +#10255=@"type;241" +types(#10255,7,"(start?: number, end?: number) => U[]") +#10256=@"type;242" +types(#10256,7,"(a: U, b: U) => number") +#10257=@"type;243" +types(#10257,7,"(compareFn?: (a: U, b: U) => number) => U[]") +#10258=@"type;244" +types(#10258,7,"{ (start: number, deleteCount?: number): U[]; (...") +#10259=@"type;245" +types(#10259,7,"(searchElement: U, fromIndex?: number) => number") +#10260=@"type;246" +types(#10260,7,"(value: U, index: number, array: U[]) => boolean") +#10261=@"type;247" +types(#10261,7,"(callbackfn: (value: U, index: number, array: U...") +#10262=@"type;248" +types(#10262,7,"(value: U, index: number, array: U[]) => void") +#10263=@"type;249" +types(#10263,7,"(callbackfn: (value: U, index: number, array: U...") +#10264=@"type;250" +types(#10264,7,"(value: U, index: number, array: U[]) => U") +#10265=@"type;251" +types(#10265,7,"(callbackfn: (value: U, index: number, array...") +#10266=@"type;252" +types(#10266,7,"(value: U, index: number, array: U[]) => any") +#10267=@"type;253" +types(#10267,7,"{ (callbackfn: (value: U, index: n...") +#10268=@"type;254" +types(#10268,7,"(previousValue: U, currentValue: U, currentInde...") +#10269=@"type;255" +types(#10269,7,"{ (callbackfn: (previousValue: U, currentValue:...") +#10270=@"type;256" +types(#10270,7,"(compareFn?: (a: string, b: string) => number) ...") +#10271=@"type;257" +types(#10271,6,"number[]") +type_symbol(#10271,#10015) +type_child(#10009,#10271,0) +#10272=@"type;258" +types(#10272,7,"(...items: number[]) => number") +#10273=@"type;259" +types(#10273,6,"ConcatArray") +type_symbol(#10273,#10027) +type_child(#10009,#10273,0) +#10274=@"type;260" +types(#10274,6,"ConcatArray[]") +type_symbol(#10274,#10015) +type_child(#10273,#10274,0) +#10275=@"type;261" +types(#10275,3,"number | ConcatArray") +type_child(#10009,#10275,0) +type_child(#10273,#10275,1) +#10276=@"type;262" +types(#10276,6,"(number | ConcatArray)[]") +type_symbol(#10276,#10015) +type_child(#10275,#10276,0) +#10277=@"type;263" +types(#10277,7,"{ (...items: ConcatArray[]): number[]; ...") +#10278=@"type;264" +types(#10278,7,"() => number[]") +#10279=@"type;265" +types(#10279,7,"(start?: number, end?: number) => number[]") +#10280=@"type;266" +types(#10280,7,"(a: number, b: number) => number") +#10281=@"type;267" +types(#10281,7,"(compareFn?: (a: number, b: number) => number) ...") +#10282=@"type;268" +types(#10282,7,"{ (start: number, deleteCount?: number): number...") +#10283=@"type;269" +types(#10283,7,"(searchElement: number, fromIndex?: number) => ...") +#10284=@"type;270" +types(#10284,7,"(value: number, index: number, array: number[])...") +#10285=@"type;271" +types(#10285,7,"(callbackfn: (value: number, index: number, arr...") +#10286=@"type;272" +types(#10286,7,"(value: number, index: number, array: number[])...") +#10287=@"type;273" +types(#10287,7,"(callbackfn: (value: number, index: number, arr...") +#10288=@"type;274" +types(#10288,7,"(value: number, index: number, array: number[])...") +#10289=@"type;275" +types(#10289,7,"(callbackfn: (value: number, index: number, ...") +#10290=@"type;276" +types(#10290,7,"(value: number, index: number, array: number[])...") +#10291=@"type;277" +types(#10291,7,"{ (callbackfn: (value: number...") +#10292=@"type;278" +types(#10292,7,"(previousValue: number, currentValue: number, c...") +#10293=@"type;279" +types(#10293,7,"(previousValue: U, currentValue: number, curren...") +#10294=@"type;280" +types(#10294,7,"{ (callbackfn: (previousValue: number, currentV...") +#10295=@"type;281" +types(#10295,3,"(() => number) | (() => Object)") +type_child(#10013,#10295,0) +type_child(#10039,#10295,1) +#10296=@"type;282" +types(#10296,3,"((locales?: string | string[], options?: Number...") +type_child(#10019,#10296,0) +type_child(#10024,#10296,1) +#10297=@"type;283" +types(#10297,7,"() => void") +#10298=@"type;284" +types(#10298,9,"typeof Class") +type_symbol(#10298,#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",#10024) +type_property(#10016,"concat",#10032) +type_property(#10016,"indexOf",#10033) +type_property(#10016,"lastIndexOf",#10033) +type_property(#10016,"slice",#10036) +type_property(#10016,"length",#10009) +type_property(#10016,"valueOf",#10040) +type_property(#10037,"constructor",#10041) +type_property(#10037,"toString",#10024) +type_property(#10037,"toLocaleString",#10024) +type_property(#10037,"valueOf",#10039) +type_property(#10037,"hasOwnProperty",#10045) +type_property(#10037,"isPrototypeOf",#10046) +type_property(#10037,"propertyIsEnumerable",#10045) +type_property(#10044,"toString",#10047) +type_property(#10044,"valueOf",#10049) +type_property(#10043,"toString",#10024) +type_property(#10043,"valueOf",#10048) +type_property(#10041,"apply",#10050) +type_property(#10041,"call",#10052) +type_property(#10041,"bind",#10052) +type_property(#10041,"toString",#10024) +type_property(#10041,"prototype",#10002) +type_property(#10041,"length",#10009) +type_property(#10041,"arguments",#10002) +type_property(#10041,"caller",#10041) +type_property(#10051,"length",#10009) +type_property(#10051,"toString",#10024) +type_property(#10051,"toLocaleString",#10024) +type_property(#10051,"pop",#10003) +type_property(#10051,"push",#10059) +type_property(#10051,"concat",#10062) +type_property(#10051,"join",#10063) +type_property(#10051,"reverse",#10064) +type_property(#10051,"shift",#10003) +type_property(#10051,"slice",#10065) +type_property(#10051,"sort",#10067) +type_property(#10051,"splice",#10068) +type_property(#10051,"unshift",#10059) +type_property(#10051,"indexOf",#10069) +type_property(#10051,"lastIndexOf",#10069) +type_property(#10051,"every",#10071) +type_property(#10051,"some",#10071) +type_property(#10051,"forEach",#10074) +type_property(#10051,"map",#10078) +type_property(#10051,"filter",#10082) +type_property(#10051,"reduce",#10085) +type_property(#10051,"reduceRight",#10085) +type_property(#10058,"length",#10009) +type_property(#10058,"join",#10063) +type_property(#10058,"slice",#10087) +type_property(#10055,"length",#10009) +type_property(#10055,"toString",#10024) +type_property(#10055,"toLocaleString",#10024) +type_property(#10055,"pop",#10088) +type_property(#10055,"push",#10089) +type_property(#10055,"concat",#10094) +type_property(#10055,"join",#10063) +type_property(#10055,"reverse",#10095) +type_property(#10055,"shift",#10088) +type_property(#10055,"slice",#10096) +type_property(#10055,"sort",#10098) +type_property(#10055,"splice",#10099) +type_property(#10055,"unshift",#10089) +type_property(#10055,"indexOf",#10100) +type_property(#10055,"lastIndexOf",#10100) +type_property(#10055,"every",#10102) +type_property(#10055,"some",#10102) +type_property(#10055,"forEach",#10104) +type_property(#10055,"map",#10106) +type_property(#10055,"filter",#10108) +type_property(#10055,"reduce",#10111) +type_property(#10055,"reduceRight",#10111) +type_property(#10030,"length",#10009) +type_property(#10030,"toString",#10024) +type_property(#10030,"toLocaleString",#10024) +type_property(#10030,"pop",#10112) +type_property(#10030,"push",#10113) +type_property(#10030,"concat",#10118) +type_property(#10030,"join",#10063) +type_property(#10030,"reverse",#10119) +type_property(#10030,"shift",#10112) +type_property(#10030,"slice",#10120) +type_property(#10030,"sort",#10122) +type_property(#10030,"splice",#10123) +type_property(#10030,"unshift",#10113) +type_property(#10030,"indexOf",#10124) +type_property(#10030,"lastIndexOf",#10124) +type_property(#10030,"every",#10126) +type_property(#10030,"some",#10126) +type_property(#10030,"forEach",#10128) +type_property(#10030,"map",#10130) +type_property(#10030,"filter",#10132) +type_property(#10030,"reduce",#10135) +type_property(#10030,"reduceRight",#10135) +type_property(#10116,"toString",#10024) +type_property(#10116,"slice",#10136) +type_property(#10116,"length",#10009) +type_property(#10116,"valueOf",#10040) +type_property(#10137,"toString",#10024) +type_property(#10137,"concat",#10138) +type_property(#10137,"indexOf",#10139) +type_property(#10137,"lastIndexOf",#10139) +type_property(#10137,"slice",#10140) +type_property(#10137,"length",#10009) +type_property(#10137,"valueOf",#10040) +type_property(#10029,"toString",#10024) +type_property(#10029,"slice",#10036) +type_property(#10029,"length",#10009) +type_property(#10029,"valueOf",#10040) +type_property(#10028,"length",#10009) +type_property(#10028,"toString",#10024) +type_property(#10028,"toLocaleString",#10024) +type_property(#10028,"pop",#10141) +type_property(#10028,"push",#10142) +type_property(#10028,"concat",#10147) +type_property(#10028,"join",#10063) +type_property(#10028,"reverse",#10148) +type_property(#10028,"shift",#10141) +type_property(#10028,"slice",#10149) +type_property(#10028,"sort",#10151) +type_property(#10028,"splice",#10152) +type_property(#10028,"unshift",#10142) +type_property(#10028,"indexOf",#10153) +type_property(#10028,"lastIndexOf",#10153) +type_property(#10028,"every",#10155) +type_property(#10028,"some",#10155) +type_property(#10028,"forEach",#10157) +type_property(#10028,"map",#10159) +type_property(#10028,"filter",#10161) +type_property(#10028,"reduce",#10164) +type_property(#10028,"reduceRight",#10164) +type_property(#10145,"length",#10009) +type_property(#10145,"join",#10063) +type_property(#10145,"slice",#10165) +type_property(#10166,"length",#10009) +type_property(#10166,"toString",#10024) +type_property(#10166,"toLocaleString",#10024) +type_property(#10166,"pop",#10167) +type_property(#10166,"push",#10169) +type_property(#10166,"concat",#10170) +type_property(#10166,"join",#10063) +type_property(#10166,"reverse",#10172) +type_property(#10166,"shift",#10173) +type_property(#10166,"slice",#10165) +type_property(#10166,"sort",#10176) +type_property(#10166,"splice",#10178) +type_property(#10166,"unshift",#10169) +type_property(#10166,"indexOf",#10180) +type_property(#10166,"lastIndexOf",#10180) +type_property(#10166,"every",#10183) +type_property(#10166,"some",#10183) +type_property(#10166,"forEach",#10186) +type_property(#10166,"map",#10189) +type_property(#10166,"filter",#10192) +type_property(#10166,"reduce",#10196) +type_property(#10166,"reduceRight",#10196) +type_property(#10026,"length",#10009) +type_property(#10026,"join",#10063) +type_property(#10026,"slice",#10035) +type_property(#10014,"length",#10009) +type_property(#10014,"toString",#10024) +type_property(#10014,"toLocaleString",#10024) +type_property(#10014,"pop",#10024) +type_property(#10014,"push",#10168) +type_property(#10014,"concat",#10031) +type_property(#10014,"join",#10063) +type_property(#10014,"reverse",#10171) +type_property(#10014,"shift",#10024) +type_property(#10014,"slice",#10035) +type_property(#10014,"sort",#10175) +type_property(#10014,"splice",#10177) +type_property(#10014,"unshift",#10168) +type_property(#10014,"indexOf",#10179) +type_property(#10014,"lastIndexOf",#10179) +type_property(#10014,"every",#10182) +type_property(#10014,"some",#10182) +type_property(#10014,"forEach",#10185) +type_property(#10014,"map",#10188) +type_property(#10014,"filter",#10191) +type_property(#10014,"reduce",#10195) +type_property(#10014,"reduceRight",#10195) +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",#10197) +type_property(#10008,"charCodeAt",#10198) +type_property(#10008,"concat",#10025) +type_property(#10008,"indexOf",#10033) +type_property(#10008,"lastIndexOf",#10033) +type_property(#10008,"localeCompare",#10201) +type_property(#10008,"match",#10207) +type_property(#10008,"replace",#10209) +type_property(#10008,"search",#10210) +type_property(#10008,"slice",#10034) +type_property(#10008,"split",#10211) +type_property(#10008,"substring",#10034) +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",#10212) +type_property(#10008,"valueOf",#10024) +type_property(#10206,"toString",#10024) +type_property(#10206,"valueOf",#10040) +type_property(#10204,"exec",#10215) +type_property(#10204,"test",#10216) +type_property(#10204,"source",#10008) +type_property(#10204,"global",#10022) +type_property(#10204,"ignoreCase",#10022) +type_property(#10204,"multiline",#10022) +type_property(#10204,"lastIndex",#10009) +type_property(#10204,"compile",#10217) +type_property(#10213,"index",#10009) +type_property(#10213,"input",#10008) +type_property(#10213,"length",#10009) +type_property(#10213,"toString",#10024) +type_property(#10213,"toLocaleString",#10024) +type_property(#10213,"pop",#10024) +type_property(#10213,"push",#10168) +type_property(#10213,"concat",#10031) +type_property(#10213,"join",#10063) +type_property(#10213,"reverse",#10171) +type_property(#10213,"shift",#10024) +type_property(#10213,"slice",#10035) +type_property(#10213,"sort",#10218) +type_property(#10213,"splice",#10177) +type_property(#10213,"unshift",#10168) +type_property(#10213,"indexOf",#10179) +type_property(#10213,"lastIndexOf",#10179) +type_property(#10213,"every",#10182) +type_property(#10213,"some",#10182) +type_property(#10213,"forEach",#10185) +type_property(#10213,"map",#10188) +type_property(#10213,"filter",#10191) +type_property(#10213,"reduce",#10195) +type_property(#10213,"reduceRight",#10195) +type_property(#10080,"length",#10009) +type_property(#10080,"toString",#10024) +type_property(#10080,"toLocaleString",#10024) +type_property(#10080,"pop",#10219) +type_property(#10080,"push",#10220) +type_property(#10080,"concat",#10225) +type_property(#10080,"join",#10063) +type_property(#10080,"reverse",#10226) +type_property(#10080,"shift",#10219) +type_property(#10080,"slice",#10227) +type_property(#10080,"sort",#10229) +type_property(#10080,"splice",#10230) +type_property(#10080,"unshift",#10220) +type_property(#10080,"indexOf",#10231) +type_property(#10080,"lastIndexOf",#10231) +type_property(#10080,"every",#10233) +type_property(#10080,"some",#10233) +type_property(#10080,"forEach",#10235) +type_property(#10080,"map",#10237) +type_property(#10080,"filter",#10239) +type_property(#10080,"reduce",#10242) +type_property(#10080,"reduceRight",#10242) +type_property(#10223,"toString",#10024) +type_property(#10223,"slice",#10243) +type_property(#10223,"length",#10009) +type_property(#10223,"valueOf",#10040) +type_property(#10244,"toString",#10024) +type_property(#10244,"concat",#10245) +type_property(#10244,"indexOf",#10246) +type_property(#10244,"lastIndexOf",#10246) +type_property(#10244,"slice",#10243) +type_property(#10244,"length",#10009) +type_property(#10244,"valueOf",#10040) +type_property(#10076,"length",#10009) +type_property(#10076,"toString",#10024) +type_property(#10076,"toLocaleString",#10024) +type_property(#10076,"pop",#10247) +type_property(#10076,"push",#10248) +type_property(#10076,"concat",#10253) +type_property(#10076,"join",#10063) +type_property(#10076,"reverse",#10254) +type_property(#10076,"shift",#10247) +type_property(#10076,"slice",#10255) +type_property(#10076,"sort",#10257) +type_property(#10076,"splice",#10258) +type_property(#10076,"unshift",#10248) +type_property(#10076,"indexOf",#10259) +type_property(#10076,"lastIndexOf",#10259) +type_property(#10076,"every",#10261) +type_property(#10076,"some",#10261) +type_property(#10076,"forEach",#10263) +type_property(#10076,"map",#10265) +type_property(#10076,"filter",#10267) +type_property(#10076,"reduce",#10269) +type_property(#10076,"reduceRight",#10269) +type_property(#10202,"index",#10009) +type_property(#10202,"input",#10008) +type_property(#10202,"length",#10009) +type_property(#10202,"toString",#10024) +type_property(#10202,"toLocaleString",#10024) +type_property(#10202,"pop",#10024) +type_property(#10202,"push",#10168) +type_property(#10202,"concat",#10031) +type_property(#10202,"join",#10063) +type_property(#10202,"reverse",#10171) +type_property(#10202,"shift",#10024) +type_property(#10202,"slice",#10035) +type_property(#10202,"sort",#10270) +type_property(#10202,"splice",#10177) +type_property(#10202,"unshift",#10168) +type_property(#10202,"indexOf",#10179) +type_property(#10202,"lastIndexOf",#10179) +type_property(#10202,"every",#10182) +type_property(#10202,"some",#10182) +type_property(#10202,"forEach",#10185) +type_property(#10202,"map",#10188) +type_property(#10202,"filter",#10191) +type_property(#10202,"reduce",#10195) +type_property(#10202,"reduceRight",#10195) +type_property(#10199,"usage",#10008) +type_property(#10199,"localeMatcher",#10008) +type_property(#10199,"numeric",#10022) +type_property(#10199,"caseFirst",#10008) +type_property(#10199,"sensitivity",#10008) +type_property(#10199,"ignorePunctuation",#10022) +type_property(#10271,"length",#10009) +type_property(#10271,"toString",#10024) +type_property(#10271,"toLocaleString",#10024) +type_property(#10271,"pop",#10013) +type_property(#10271,"push",#10272) +type_property(#10271,"concat",#10277) +type_property(#10271,"join",#10063) +type_property(#10271,"reverse",#10278) +type_property(#10271,"shift",#10013) +type_property(#10271,"slice",#10279) +type_property(#10271,"sort",#10281) +type_property(#10271,"splice",#10282) +type_property(#10271,"unshift",#10272) +type_property(#10271,"indexOf",#10283) +type_property(#10271,"lastIndexOf",#10283) +type_property(#10271,"every",#10285) +type_property(#10271,"some",#10285) +type_property(#10271,"forEach",#10287) +type_property(#10271,"map",#10289) +type_property(#10271,"filter",#10291) +type_property(#10271,"reduce",#10294) +type_property(#10271,"reduceRight",#10294) +type_property(#10275,"toString",#10047) +type_property(#10275,"valueOf",#10295) +type_property(#10275,"toLocaleString",#10296) +type_property(#10298,"prototype",#10000) +symbols(#10001,0,"Class") +#10299=@"symbol;1" +symbols(#10299,2,"m") +symbol_parent(#10299,#10001) +symbols(#10005,0,"Interface") +#10300=@"symbol;3" +symbols(#10300,0,"Namespace") +symbols(#10007,0,"Enum") +symbols(#10015,0,"Array") +#10301=@"symbol;6" +symbols(#10301,0,"Intl") +symbols(#10018,1,"NumberFormatOptions") +symbol_parent(#10018,#10301) +symbols(#10027,0,"ConcatArray") +symbols(#10038,0,"Object") +symbols(#10042,0,"Function") +symbols(#10054,2,"T") +symbol_parent(#10054,#10015) +symbols(#10057,2,"T") +symbol_parent(#10057,#10027) +symbols(#10200,1,"CollatorOptions") +symbol_parent(#10200,#10301) +symbols(#10203,0,"RegExpMatchArray") +symbols(#10205,0,"RegExp") +symbols(#10214,0,"RegExpExecArray") +#10302=@"symbol;17" +symbols(#10302,0,"fun") +symbol_global(#10001,"Class") +symbol_global(#10005,"Interface") +symbol_global(#10300,"Namespace") +symbol_global(#10007,"Enum") +symbol_global(#10015,"Array") +symbol_global(#10301,"Intl") +symbol_global(#10027,"ConcatArray") +symbol_global(#10038,"Object") +symbol_global(#10042,"Function") +symbol_global(#10203,"RegExpMatchArray") +symbol_global(#10205,"RegExp") +symbol_global(#10214,"RegExpExecArray") +#10303=@"signature;0" +type_contains_signature(#10003,0,0,#10303) +#10304=@"signature;5" +type_contains_signature(#10019,0,0,#10304) +#10305=@"signature;6" +type_contains_signature(#10023,0,0,#10305) +#10306=@"signature;14" +type_contains_signature(#10040,0,0,#10306) +type_contains_signature(#10039,0,0,#10306) +#10307=@"signature;16" +type_contains_signature(#10046,0,0,#10307) +#10308=@"signature;15" +type_contains_signature(#10045,0,0,#10308) +#10309=@"signature;18" +type_contains_signature(#10049,0,0,#10309) +#10310=@"signature;17" +type_contains_signature(#10048,0,0,#10310) +#10311=@"signature;7" +type_contains_signature(#10047,0,0,#10311) +#10312=@"signature;20" +type_contains_signature(#10052,0,0,#10312) +#10313=@"signature;42" +type_contains_signature(#10085,0,0,#10313) +#10314=@"signature;43" +type_contains_signature(#10085,0,1,#10314) +#10315=@"signature;45" +type_contains_signature(#10085,0,2,#10315) +#10316=@"signature;44" +type_contains_signature(#10084,0,0,#10316) +#10317=@"signature;41" +type_contains_signature(#10083,0,0,#10317) +#10318=@"signature;38" +type_contains_signature(#10082,0,0,#10318) +#10319=@"signature;40" +type_contains_signature(#10082,0,1,#10319) +#10320=@"signature;39" +type_contains_signature(#10081,0,0,#10320) +#10321=@"signature;37" +type_contains_signature(#10078,0,0,#10321) +#10322=@"signature;36" +type_contains_signature(#10077,0,0,#10322) +#10323=@"signature;35" +type_contains_signature(#10074,0,0,#10323) +#10324=@"signature;34" +type_contains_signature(#10073,0,0,#10324) +#10325=@"signature;33" +type_contains_signature(#10071,0,0,#10325) +#10326=@"signature;32" +type_contains_signature(#10070,0,0,#10326) +#10327=@"signature;31" +type_contains_signature(#10069,0,0,#10327) +#10328=@"signature;29" +type_contains_signature(#10068,0,0,#10328) +#10329=@"signature;30" +type_contains_signature(#10068,0,1,#10329) +#10330=@"signature;28" +type_contains_signature(#10067,0,0,#10330) +#10331=@"signature;27" +type_contains_signature(#10066,0,0,#10331) +#10332=@"signature;26" +type_contains_signature(#10065,0,0,#10332) +#10333=@"signature;25" +type_contains_signature(#10064,0,0,#10333) +#10334=@"signature;24" +type_contains_signature(#10063,0,0,#10334) +#10335=@"signature;22" +type_contains_signature(#10062,0,0,#10335) +#10336=@"signature;23" +type_contains_signature(#10062,0,1,#10336) +#10337=@"signature;21" +type_contains_signature(#10059,0,0,#10337) +#10338=@"signature;46" +type_contains_signature(#10087,0,0,#10338) +#10339=@"signature;68" +type_contains_signature(#10111,0,0,#10339) +#10340=@"signature;69" +type_contains_signature(#10111,0,1,#10340) +#10341=@"signature;71" +type_contains_signature(#10111,0,2,#10341) +#10342=@"signature;70" +type_contains_signature(#10110,0,0,#10342) +#10343=@"signature;67" +type_contains_signature(#10109,0,0,#10343) +#10344=@"signature;64" +type_contains_signature(#10108,0,0,#10344) +#10345=@"signature;66" +type_contains_signature(#10108,0,1,#10345) +#10346=@"signature;65" +type_contains_signature(#10107,0,0,#10346) +#10347=@"signature;63" +type_contains_signature(#10106,0,0,#10347) +#10348=@"signature;62" +type_contains_signature(#10105,0,0,#10348) +#10349=@"signature;61" +type_contains_signature(#10104,0,0,#10349) +#10350=@"signature;60" +type_contains_signature(#10103,0,0,#10350) +#10351=@"signature;59" +type_contains_signature(#10102,0,0,#10351) +#10352=@"signature;58" +type_contains_signature(#10101,0,0,#10352) +#10353=@"signature;57" +type_contains_signature(#10100,0,0,#10353) +#10354=@"signature;55" +type_contains_signature(#10099,0,0,#10354) +#10355=@"signature;56" +type_contains_signature(#10099,0,1,#10355) +#10356=@"signature;54" +type_contains_signature(#10098,0,0,#10356) +#10357=@"signature;53" +type_contains_signature(#10097,0,0,#10357) +#10358=@"signature;52" +type_contains_signature(#10096,0,0,#10358) +#10359=@"signature;51" +type_contains_signature(#10095,0,0,#10359) +#10360=@"signature;49" +type_contains_signature(#10094,0,0,#10360) +#10361=@"signature;50" +type_contains_signature(#10094,0,1,#10361) +#10362=@"signature;48" +type_contains_signature(#10089,0,0,#10362) +#10363=@"signature;47" +type_contains_signature(#10088,0,0,#10363) +#10364=@"signature;19" +type_contains_signature(#10050,0,0,#10364) +#10365=@"signature;72" +type_contains_signature(#10036,0,0,#10365) +#10366=@"signature;13" +type_contains_signature(#10035,0,0,#10366) +#10367=@"signature;12" +type_contains_signature(#10034,0,0,#10367) +#10368=@"signature;11" +type_contains_signature(#10033,0,0,#10368) +#10369=@"signature;9" +type_contains_signature(#10031,0,0,#10369) +#10370=@"signature;10" +type_contains_signature(#10031,0,1,#10370) +#10371=@"signature;94" +type_contains_signature(#10135,0,0,#10371) +#10372=@"signature;95" +type_contains_signature(#10135,0,1,#10372) +#10373=@"signature;97" +type_contains_signature(#10135,0,2,#10373) +#10374=@"signature;96" +type_contains_signature(#10134,0,0,#10374) +#10375=@"signature;93" +type_contains_signature(#10133,0,0,#10375) +#10376=@"signature;90" +type_contains_signature(#10132,0,0,#10376) +#10377=@"signature;92" +type_contains_signature(#10132,0,1,#10377) +#10378=@"signature;91" +type_contains_signature(#10131,0,0,#10378) +#10379=@"signature;89" +type_contains_signature(#10130,0,0,#10379) +#10380=@"signature;88" +type_contains_signature(#10129,0,0,#10380) +#10381=@"signature;87" +type_contains_signature(#10128,0,0,#10381) +#10382=@"signature;86" +type_contains_signature(#10127,0,0,#10382) +#10383=@"signature;85" +type_contains_signature(#10126,0,0,#10383) +#10384=@"signature;84" +type_contains_signature(#10125,0,0,#10384) +#10385=@"signature;83" +type_contains_signature(#10124,0,0,#10385) +#10386=@"signature;81" +type_contains_signature(#10123,0,0,#10386) +#10387=@"signature;82" +type_contains_signature(#10123,0,1,#10387) +#10388=@"signature;80" +type_contains_signature(#10122,0,0,#10388) +#10389=@"signature;79" +type_contains_signature(#10121,0,0,#10389) +#10390=@"signature;78" +type_contains_signature(#10120,0,0,#10390) +#10391=@"signature;77" +type_contains_signature(#10119,0,0,#10391) +#10392=@"signature;75" +type_contains_signature(#10118,0,0,#10392) +#10393=@"signature;76" +type_contains_signature(#10118,0,1,#10393) +#10394=@"signature;98" +type_contains_signature(#10136,0,0,#10394) +type_contains_signature(#10140,0,0,#10394) +#10395=@"signature;74" +type_contains_signature(#10113,0,0,#10395) +#10396=@"signature;73" +type_contains_signature(#10112,0,0,#10396) +#10397=@"signature;120" +type_contains_signature(#10164,0,0,#10397) +#10398=@"signature;121" +type_contains_signature(#10164,0,1,#10398) +#10399=@"signature;123" +type_contains_signature(#10164,0,2,#10399) +#10400=@"signature;122" +type_contains_signature(#10163,0,0,#10400) +#10401=@"signature;119" +type_contains_signature(#10162,0,0,#10401) +#10402=@"signature;116" +type_contains_signature(#10161,0,0,#10402) +#10403=@"signature;118" +type_contains_signature(#10161,0,1,#10403) +#10404=@"signature;117" +type_contains_signature(#10160,0,0,#10404) +#10405=@"signature;115" +type_contains_signature(#10159,0,0,#10405) +#10406=@"signature;114" +type_contains_signature(#10158,0,0,#10406) +#10407=@"signature;113" +type_contains_signature(#10157,0,0,#10407) +#10408=@"signature;112" +type_contains_signature(#10156,0,0,#10408) +#10409=@"signature;111" +type_contains_signature(#10155,0,0,#10409) +#10410=@"signature;110" +type_contains_signature(#10154,0,0,#10410) +#10411=@"signature;109" +type_contains_signature(#10153,0,0,#10411) +#10412=@"signature;107" +type_contains_signature(#10152,0,0,#10412) +#10413=@"signature;108" +type_contains_signature(#10152,0,1,#10413) +#10414=@"signature;106" +type_contains_signature(#10151,0,0,#10414) +#10415=@"signature;105" +type_contains_signature(#10150,0,0,#10415) +#10416=@"signature;104" +type_contains_signature(#10149,0,0,#10416) +#10417=@"signature;103" +type_contains_signature(#10148,0,0,#10417) +#10418=@"signature;101" +type_contains_signature(#10147,0,0,#10418) +#10419=@"signature;102" +type_contains_signature(#10147,0,1,#10419) +#10420=@"signature;124" +type_contains_signature(#10165,0,0,#10420) +#10421=@"signature;142" +type_contains_signature(#10195,0,0,#10421) +#10422=@"signature;143" +type_contains_signature(#10195,0,1,#10422) +#10423=@"signature;145" +type_contains_signature(#10195,0,2,#10423) +#10424=@"signature;144" +type_contains_signature(#10194,0,0,#10424) +#10425=@"signature;141" +type_contains_signature(#10193,0,0,#10425) +#10426=@"signature;138" +type_contains_signature(#10191,0,0,#10426) +#10427=@"signature;140" +type_contains_signature(#10191,0,1,#10427) +#10428=@"signature;139" +type_contains_signature(#10190,0,0,#10428) +#10429=@"signature;137" +type_contains_signature(#10188,0,0,#10429) +#10430=@"signature;136" +type_contains_signature(#10187,0,0,#10430) +#10431=@"signature;135" +type_contains_signature(#10185,0,0,#10431) +#10432=@"signature;134" +type_contains_signature(#10184,0,0,#10432) +#10433=@"signature;133" +type_contains_signature(#10182,0,0,#10433) +#10434=@"signature;132" +type_contains_signature(#10181,0,0,#10434) +#10435=@"signature;131" +type_contains_signature(#10179,0,0,#10435) +#10436=@"signature;146" +type_contains_signature(#10178,0,0,#10436) +#10437=@"signature;129" +type_contains_signature(#10177,0,0,#10437) +#10438=@"signature;130" +type_contains_signature(#10177,0,1,#10438) +#10439=@"signature;128" +type_contains_signature(#10175,0,0,#10439) +#10440=@"signature;127" +type_contains_signature(#10174,0,0,#10440) +type_contains_signature(#10173,0,0,#10396) +#10441=@"signature;147" +type_contains_signature(#10172,0,0,#10441) +#10442=@"signature;126" +type_contains_signature(#10171,0,0,#10442) +#10443=@"signature;125" +type_contains_signature(#10168,0,0,#10443) +type_contains_signature(#10167,0,0,#10396) +#10444=@"signature;100" +type_contains_signature(#10142,0,0,#10444) +#10445=@"signature;99" +type_contains_signature(#10141,0,0,#10445) +#10446=@"signature;8" +type_contains_signature(#10025,0,0,#10446) +type_contains_signature(#10024,0,0,#10311) +#10447=@"signature;4" +type_contains_signature(#10013,0,0,#10447) +#10448=@"signature;3" +type_contains_signature(#10012,0,0,#10448) +#10449=@"signature;2" +type_contains_signature(#10011,0,0,#10449) +#10450=@"signature;1" +type_contains_signature(#10010,0,0,#10450) +#10451=@"signature;158" +type_contains_signature(#10212,0,0,#10451) +#10452=@"signature;157" +type_contains_signature(#10211,0,0,#10452) +#10453=@"signature;156" +type_contains_signature(#10210,0,0,#10453) +#10454=@"signature;153" +type_contains_signature(#10209,0,0,#10454) +#10455=@"signature;155" +type_contains_signature(#10209,0,1,#10455) +#10456=@"signature;154" +type_contains_signature(#10208,0,0,#10456) +#10457=@"signature;152" +type_contains_signature(#10207,0,0,#10457) +#10458=@"signature;161" +type_contains_signature(#10217,0,0,#10458) +#10459=@"signature;160" +type_contains_signature(#10216,0,0,#10459) +#10460=@"signature;159" +type_contains_signature(#10215,0,0,#10460) +#10461=@"signature;184" +type_contains_signature(#10242,0,0,#10461) +#10462=@"signature;185" +type_contains_signature(#10242,0,1,#10462) +#10463=@"signature;187" +type_contains_signature(#10242,0,2,#10463) +#10464=@"signature;186" +type_contains_signature(#10241,0,0,#10464) +#10465=@"signature;183" +type_contains_signature(#10240,0,0,#10465) +#10466=@"signature;180" +type_contains_signature(#10239,0,0,#10466) +#10467=@"signature;182" +type_contains_signature(#10239,0,1,#10467) +#10468=@"signature;181" +type_contains_signature(#10238,0,0,#10468) +#10469=@"signature;179" +type_contains_signature(#10237,0,0,#10469) +#10470=@"signature;178" +type_contains_signature(#10236,0,0,#10470) +#10471=@"signature;177" +type_contains_signature(#10235,0,0,#10471) +#10472=@"signature;176" +type_contains_signature(#10234,0,0,#10472) +#10473=@"signature;175" +type_contains_signature(#10233,0,0,#10473) +#10474=@"signature;174" +type_contains_signature(#10232,0,0,#10474) +#10475=@"signature;173" +type_contains_signature(#10231,0,0,#10475) +#10476=@"signature;171" +type_contains_signature(#10230,0,0,#10476) +#10477=@"signature;172" +type_contains_signature(#10230,0,1,#10477) +#10478=@"signature;170" +type_contains_signature(#10229,0,0,#10478) +#10479=@"signature;169" +type_contains_signature(#10228,0,0,#10479) +#10480=@"signature;168" +type_contains_signature(#10227,0,0,#10480) +#10481=@"signature;167" +type_contains_signature(#10226,0,0,#10481) +#10482=@"signature;165" +type_contains_signature(#10225,0,0,#10482) +#10483=@"signature;166" +type_contains_signature(#10225,0,1,#10483) +#10484=@"signature;188" +type_contains_signature(#10243,0,0,#10484) +#10485=@"signature;164" +type_contains_signature(#10220,0,0,#10485) +#10486=@"signature;163" +type_contains_signature(#10219,0,0,#10486) +#10487=@"signature;210" +type_contains_signature(#10269,0,0,#10487) +#10488=@"signature;211" +type_contains_signature(#10269,0,1,#10488) +#10489=@"signature;212" +type_contains_signature(#10269,0,2,#10489) +#10490=@"signature;209" +type_contains_signature(#10268,0,0,#10490) +#10491=@"signature;206" +type_contains_signature(#10267,0,0,#10491) +#10492=@"signature;208" +type_contains_signature(#10267,0,1,#10492) +#10493=@"signature;207" +type_contains_signature(#10266,0,0,#10493) +#10494=@"signature;205" +type_contains_signature(#10265,0,0,#10494) +#10495=@"signature;204" +type_contains_signature(#10264,0,0,#10495) +#10496=@"signature;203" +type_contains_signature(#10263,0,0,#10496) +#10497=@"signature;202" +type_contains_signature(#10262,0,0,#10497) +#10498=@"signature;201" +type_contains_signature(#10261,0,0,#10498) +#10499=@"signature;200" +type_contains_signature(#10260,0,0,#10499) +#10500=@"signature;199" +type_contains_signature(#10259,0,0,#10500) +#10501=@"signature;197" +type_contains_signature(#10258,0,0,#10501) +#10502=@"signature;198" +type_contains_signature(#10258,0,1,#10502) +#10503=@"signature;196" +type_contains_signature(#10257,0,0,#10503) +#10504=@"signature;195" +type_contains_signature(#10256,0,0,#10504) +#10505=@"signature;194" +type_contains_signature(#10255,0,0,#10505) +#10506=@"signature;193" +type_contains_signature(#10254,0,0,#10506) +#10507=@"signature;191" +type_contains_signature(#10253,0,0,#10507) +#10508=@"signature;192" +type_contains_signature(#10253,0,1,#10508) +#10509=@"signature;190" +type_contains_signature(#10248,0,0,#10509) +#10510=@"signature;189" +type_contains_signature(#10247,0,0,#10510) +#10511=@"signature;162" +type_contains_signature(#10218,0,0,#10511) +#10512=@"signature;213" +type_contains_signature(#10270,0,0,#10512) +#10513=@"signature;150" +type_contains_signature(#10201,0,0,#10513) +#10514=@"signature;151" +type_contains_signature(#10201,0,1,#10514) +#10515=@"signature;149" +type_contains_signature(#10198,0,0,#10515) +#10516=@"signature;148" +type_contains_signature(#10197,0,0,#10516) +#10517=@"signature;234" +type_contains_signature(#10294,0,0,#10517) +#10518=@"signature;235" +type_contains_signature(#10294,0,1,#10518) +#10519=@"signature;237" +type_contains_signature(#10294,0,2,#10519) +#10520=@"signature;236" +type_contains_signature(#10293,0,0,#10520) +#10521=@"signature;233" +type_contains_signature(#10292,0,0,#10521) +#10522=@"signature;230" +type_contains_signature(#10291,0,0,#10522) +#10523=@"signature;232" +type_contains_signature(#10291,0,1,#10523) +#10524=@"signature;231" +type_contains_signature(#10290,0,0,#10524) +#10525=@"signature;229" +type_contains_signature(#10289,0,0,#10525) +#10526=@"signature;228" +type_contains_signature(#10288,0,0,#10526) +#10527=@"signature;227" +type_contains_signature(#10287,0,0,#10527) +#10528=@"signature;226" +type_contains_signature(#10286,0,0,#10528) +#10529=@"signature;225" +type_contains_signature(#10285,0,0,#10529) +#10530=@"signature;224" +type_contains_signature(#10284,0,0,#10530) +#10531=@"signature;223" +type_contains_signature(#10283,0,0,#10531) +#10532=@"signature;221" +type_contains_signature(#10282,0,0,#10532) +#10533=@"signature;222" +type_contains_signature(#10282,0,1,#10533) +#10534=@"signature;220" +type_contains_signature(#10281,0,0,#10534) +#10535=@"signature;219" +type_contains_signature(#10280,0,0,#10535) +#10536=@"signature;218" +type_contains_signature(#10279,0,0,#10536) +#10537=@"signature;217" +type_contains_signature(#10278,0,0,#10537) +#10538=@"signature;215" +type_contains_signature(#10277,0,0,#10538) +#10539=@"signature;216" +type_contains_signature(#10277,0,1,#10539) +type_contains_signature(#10296,0,0,#10311) +type_contains_signature(#10295,0,0,#10306) +#10540=@"signature;214" +type_contains_signature(#10272,0,0,#10540) +#10541=@"signature;238" +type_contains_signature(#10297,0,0,#10541) +#10542=@"signature;239" +type_contains_signature(#10298,1,0,#10542) +signature_types(#10303,0,"(): any",0,0) +signature_contains_type(#10002,#10303,-1) +signature_types(#10450,0,"(radix?: number): string",0,1) +signature_contains_type(#10008,#10450,-1) +signature_contains_type(#10009,#10450,0) +signature_parameter_name(#10450,0,"radix") +signature_types(#10449,0,"(fractionDigits?: number): string",0,1) +signature_contains_type(#10008,#10449,-1) +signature_contains_type(#10009,#10449,0) +signature_parameter_name(#10449,0,"fractionDigits") +signature_types(#10448,0,"(precision?: number): string",0,1) +signature_contains_type(#10008,#10448,-1) +signature_contains_type(#10009,#10448,0) +signature_parameter_name(#10448,0,"precision") +signature_types(#10447,0,"(): number",0,0) +signature_contains_type(#10009,#10447,-1) +signature_types(#10304,0,"(locales?: string | string[], options?: Intl.NumberFormatOptions): st...",0,2) +signature_contains_type(#10008,#10304,-1) +signature_contains_type(#10016,#10304,0) +signature_parameter_name(#10304,0,"locales") +signature_contains_type(#10017,#10304,1) +signature_parameter_name(#10304,1,"options") +signature_types(#10305,0,"(): boolean",0,0) +signature_contains_type(#10022,#10305,-1) +signature_types(#10311,0,"(): string",0,0) +signature_contains_type(#10008,#10311,-1) +signature_types(#10446,0,"(...strings: string[]): string",0,1) +signature_contains_type(#10008,#10446,-1) +signature_contains_type(#10014,#10446,0) +signature_parameter_name(#10446,0,"strings") +signature_types(#10369,0,"(...items: ConcatArray[]): string[]",0,1) +signature_contains_type(#10014,#10369,-1) +signature_contains_type(#10028,#10369,0) +signature_parameter_name(#10369,0,"items") +signature_types(#10370,0,"(...items: (string | ConcatArray)[]): string[]",0,1) +signature_contains_type(#10014,#10370,-1) +signature_contains_type(#10030,#10370,0) +signature_parameter_name(#10370,0,"items") +signature_types(#10368,0,"(searchString: string, position?: number): number",0,2) +signature_contains_type(#10009,#10368,-1) +signature_contains_type(#10008,#10368,0) +signature_parameter_name(#10368,0,"searchString") +signature_contains_type(#10009,#10368,1) +signature_parameter_name(#10368,1,"position") +signature_types(#10367,0,"(start?: number, end?: number): string",0,2) +signature_contains_type(#10008,#10367,-1) +signature_contains_type(#10009,#10367,0) +signature_parameter_name(#10367,0,"start") +signature_contains_type(#10009,#10367,1) +signature_parameter_name(#10367,1,"end") +signature_types(#10366,0,"(start?: number, end?: number): string[]",0,2) +signature_contains_type(#10014,#10366,-1) +signature_contains_type(#10009,#10366,0) +signature_parameter_name(#10366,0,"start") +signature_contains_type(#10009,#10366,1) +signature_parameter_name(#10366,1,"end") +signature_types(#10306,0,"(): Object",0,0) +signature_contains_type(#10037,#10306,-1) +signature_types(#10308,0,"(v: string | number | symbol): boolean",0,1) +signature_contains_type(#10022,#10308,-1) +signature_contains_type(#10044,#10308,0) +signature_parameter_name(#10308,0,"v") +signature_types(#10307,0,"(v: Object): boolean",0,1) +signature_contains_type(#10022,#10307,-1) +signature_contains_type(#10037,#10307,0) +signature_parameter_name(#10307,0,"v") +signature_types(#10310,0,"(): symbol",0,0) +signature_contains_type(#10043,#10310,-1) +signature_types(#10309,0,"(): string | number | symbol",0,0) +signature_contains_type(#10044,#10309,-1) +signature_types(#10364,0,"(this: Function, thisArg: any, argArray?: any): any",0,2) +signature_contains_type(#10002,#10364,-1) +signature_contains_type(#10002,#10364,0) +signature_parameter_name(#10364,0,"thisArg") +signature_contains_type(#10002,#10364,1) +signature_parameter_name(#10364,1,"argArray") +signature_types(#10312,0,"(this: Function, thisArg: any, ...argArray: any[]): any",0,2) +signature_contains_type(#10002,#10312,-1) +signature_contains_type(#10002,#10312,0) +signature_parameter_name(#10312,0,"thisArg") +signature_contains_type(#10051,#10312,1) +signature_parameter_name(#10312,1,"argArray") +signature_types(#10337,0,"(...items: any[]): number",0,1) +signature_contains_type(#10009,#10337,-1) +signature_contains_type(#10051,#10337,0) +signature_parameter_name(#10337,0,"items") +signature_types(#10335,0,"(...items: ConcatArray[]): any[]",0,1) +signature_contains_type(#10051,#10335,-1) +signature_contains_type(#10061,#10335,0) +signature_parameter_name(#10335,0,"items") +signature_types(#10336,0,"(...items: any[]): any[]",0,1) +signature_contains_type(#10051,#10336,-1) +signature_contains_type(#10051,#10336,0) +signature_parameter_name(#10336,0,"items") +signature_types(#10334,0,"(separator?: string): string",0,1) +signature_contains_type(#10008,#10334,-1) +signature_contains_type(#10008,#10334,0) +signature_parameter_name(#10334,0,"separator") +signature_types(#10333,0,"(): any[]",0,0) +signature_contains_type(#10051,#10333,-1) +signature_types(#10332,0,"(start?: number, end?: number): any[]",0,2) +signature_contains_type(#10051,#10332,-1) +signature_contains_type(#10009,#10332,0) +signature_parameter_name(#10332,0,"start") +signature_contains_type(#10009,#10332,1) +signature_parameter_name(#10332,1,"end") +signature_types(#10331,0,"(a: any, b: any): number",0,2) +signature_contains_type(#10009,#10331,-1) +signature_contains_type(#10002,#10331,0) +signature_parameter_name(#10331,0,"a") +signature_contains_type(#10002,#10331,1) +signature_parameter_name(#10331,1,"b") +signature_types(#10330,0,"(compareFn?: (a: any, b: any) => number): any[]",0,1) +signature_contains_type(#10051,#10330,-1) +signature_contains_type(#10066,#10330,0) +signature_parameter_name(#10330,0,"compareFn") +signature_types(#10328,0,"(start: number, deleteCount?: number): any[]",0,2) +signature_contains_type(#10051,#10328,-1) +signature_contains_type(#10009,#10328,0) +signature_parameter_name(#10328,0,"start") +signature_contains_type(#10009,#10328,1) +signature_parameter_name(#10328,1,"deleteCount") +signature_types(#10329,0,"(start: number, deleteCount: number, ...items: any[]): any[]",0,3) +signature_contains_type(#10051,#10329,-1) +signature_contains_type(#10009,#10329,0) +signature_parameter_name(#10329,0,"start") +signature_contains_type(#10009,#10329,1) +signature_parameter_name(#10329,1,"deleteCount") +signature_contains_type(#10051,#10329,2) +signature_parameter_name(#10329,2,"items") +signature_types(#10327,0,"(searchElement: any, fromIndex?: number): number",0,2) +signature_contains_type(#10009,#10327,-1) +signature_contains_type(#10002,#10327,0) +signature_parameter_name(#10327,0,"searchElement") +signature_contains_type(#10009,#10327,1) +signature_parameter_name(#10327,1,"fromIndex") +signature_types(#10326,0,"(value: any, index: number, array: any[]): boolean",0,3) +signature_contains_type(#10022,#10326,-1) +signature_contains_type(#10002,#10326,0) +signature_parameter_name(#10326,0,"value") +signature_contains_type(#10009,#10326,1) +signature_parameter_name(#10326,1,"index") +signature_contains_type(#10051,#10326,2) +signature_parameter_name(#10326,2,"array") +signature_types(#10325,0,"(callbackfn: (value: any, index: number, array: any[]) => boolean, th...",0,2) +signature_contains_type(#10022,#10325,-1) +signature_contains_type(#10070,#10325,0) +signature_parameter_name(#10325,0,"callbackfn") +signature_contains_type(#10002,#10325,1) +signature_parameter_name(#10325,1,"thisArg") +signature_types(#10324,0,"(value: any, index: number, array: any[]): void",0,3) +signature_contains_type(#10072,#10324,-1) +signature_contains_type(#10002,#10324,0) +signature_parameter_name(#10324,0,"value") +signature_contains_type(#10009,#10324,1) +signature_parameter_name(#10324,1,"index") +signature_contains_type(#10051,#10324,2) +signature_parameter_name(#10324,2,"array") +signature_types(#10323,0,"(callbackfn: (value: any, index: number, array: any[]) => void, thisA...",0,2) +signature_contains_type(#10072,#10323,-1) +signature_contains_type(#10073,#10323,0) +signature_parameter_name(#10323,0,"callbackfn") +signature_contains_type(#10002,#10323,1) +signature_parameter_name(#10323,1,"thisArg") +signature_types(#10322,0,"(value: any, index: number, array: any[]): U",0,3) +signature_contains_type(#10075,#10322,-1) +signature_contains_type(#10002,#10322,0) +signature_parameter_name(#10322,0,"value") +signature_contains_type(#10009,#10322,1) +signature_parameter_name(#10322,1,"index") +signature_contains_type(#10051,#10322,2) +signature_parameter_name(#10322,2,"array") +signature_types(#10321,0,"(callbackfn: (value: any, index: number, array: any[]) => U, thisA...",1,2) +signature_contains_type(#10076,#10321,-1) +signature_parameter_name(#10321,0,"U") +signature_contains_type(#10077,#10321,1) +signature_parameter_name(#10321,1,"callbackfn") +signature_contains_type(#10002,#10321,2) +signature_parameter_name(#10321,2,"thisArg") +signature_types(#10318,0,"(callbackfn: (value: any, index: number, array: any[])...",1,2) +signature_contains_type(#10080,#10318,-1) +signature_contains_type(#10002,#10318,0) +signature_parameter_name(#10318,0,"S") +signature_contains_type(#10070,#10318,1) +signature_parameter_name(#10318,1,"callbackfn") +signature_contains_type(#10002,#10318,2) +signature_parameter_name(#10318,2,"thisArg") +signature_types(#10320,0,"(value: any, index: number, array: any[]): any",0,3) +signature_contains_type(#10002,#10320,-1) +signature_contains_type(#10002,#10320,0) +signature_parameter_name(#10320,0,"value") +signature_contains_type(#10009,#10320,1) +signature_parameter_name(#10320,1,"index") +signature_contains_type(#10051,#10320,2) +signature_parameter_name(#10320,2,"array") +signature_types(#10319,0,"(callbackfn: (value: any, index: number, array: any[]) => any, thisAr...",0,2) +signature_contains_type(#10051,#10319,-1) +signature_contains_type(#10081,#10319,0) +signature_parameter_name(#10319,0,"callbackfn") +signature_contains_type(#10002,#10319,1) +signature_parameter_name(#10319,1,"thisArg") +signature_types(#10317,0,"(previousValue: any, currentValue: any, currentIndex: number, array: ...",0,4) +signature_contains_type(#10002,#10317,-1) +signature_contains_type(#10002,#10317,0) +signature_parameter_name(#10317,0,"previousValue") +signature_contains_type(#10002,#10317,1) +signature_parameter_name(#10317,1,"currentValue") +signature_contains_type(#10009,#10317,2) +signature_parameter_name(#10317,2,"currentIndex") +signature_contains_type(#10051,#10317,3) +signature_parameter_name(#10317,3,"array") +signature_types(#10313,0,"(callbackfn: (previousValue: any, currentValue: any, currentIndex: nu...",0,1) +signature_contains_type(#10002,#10313,-1) +signature_contains_type(#10083,#10313,0) +signature_parameter_name(#10313,0,"callbackfn") +signature_types(#10314,0,"(callbackfn: (previousValue: any, currentValue: any, currentIndex: nu...",0,2) +signature_contains_type(#10002,#10314,-1) +signature_contains_type(#10083,#10314,0) +signature_parameter_name(#10314,0,"callbackfn") +signature_contains_type(#10002,#10314,1) +signature_parameter_name(#10314,1,"initialValue") +signature_types(#10316,0,"(previousValue: U, currentValue: any, currentIndex: number, array: an...",0,4) +signature_contains_type(#10075,#10316,-1) +signature_contains_type(#10075,#10316,0) +signature_parameter_name(#10316,0,"previousValue") +signature_contains_type(#10002,#10316,1) +signature_parameter_name(#10316,1,"currentValue") +signature_contains_type(#10009,#10316,2) +signature_parameter_name(#10316,2,"currentIndex") +signature_contains_type(#10051,#10316,3) +signature_parameter_name(#10316,3,"array") +signature_types(#10315,0,"(callbackfn: (previousValue: U, currentValue: any, currentIndex: n...",1,2) +signature_contains_type(#10075,#10315,-1) +signature_parameter_name(#10315,0,"U") +signature_contains_type(#10084,#10315,1) +signature_parameter_name(#10315,1,"callbackfn") +signature_contains_type(#10075,#10315,2) +signature_parameter_name(#10315,2,"initialValue") +signature_types(#10338,0,"(start?: number, end?: number): T[]",0,2) +signature_contains_type(#10086,#10338,-1) +signature_contains_type(#10009,#10338,0) +signature_parameter_name(#10338,0,"start") +signature_contains_type(#10009,#10338,1) +signature_parameter_name(#10338,1,"end") +signature_types(#10363,0,"(): T",0,0) +signature_contains_type(#10053,#10363,-1) +signature_types(#10362,0,"(...items: T[]): number",0,1) +signature_contains_type(#10009,#10362,-1) +signature_contains_type(#10055,#10362,0) +signature_parameter_name(#10362,0,"items") +signature_types(#10360,0,"(...items: ConcatArray[]): T[]",0,1) +signature_contains_type(#10055,#10360,-1) +signature_contains_type(#10091,#10360,0) +signature_parameter_name(#10360,0,"items") +signature_types(#10361,0,"(...items: (T | ConcatArray)[]): T[]",0,1) +signature_contains_type(#10055,#10361,-1) +signature_contains_type(#10093,#10361,0) +signature_parameter_name(#10361,0,"items") +signature_types(#10359,0,"(): T[]",0,0) +signature_contains_type(#10055,#10359,-1) +signature_types(#10358,0,"(start?: number, end?: number): T[]",0,2) +signature_contains_type(#10055,#10358,-1) +signature_contains_type(#10009,#10358,0) +signature_parameter_name(#10358,0,"start") +signature_contains_type(#10009,#10358,1) +signature_parameter_name(#10358,1,"end") +signature_types(#10357,0,"(a: T, b: T): number",0,2) +signature_contains_type(#10009,#10357,-1) +signature_contains_type(#10053,#10357,0) +signature_parameter_name(#10357,0,"a") +signature_contains_type(#10053,#10357,1) +signature_parameter_name(#10357,1,"b") +signature_types(#10356,0,"(compareFn?: (a: T, b: T) => number): T[]",0,1) +signature_contains_type(#10055,#10356,-1) +signature_contains_type(#10097,#10356,0) +signature_parameter_name(#10356,0,"compareFn") +signature_types(#10354,0,"(start: number, deleteCount?: number): T[]",0,2) +signature_contains_type(#10055,#10354,-1) +signature_contains_type(#10009,#10354,0) +signature_parameter_name(#10354,0,"start") +signature_contains_type(#10009,#10354,1) +signature_parameter_name(#10354,1,"deleteCount") +signature_types(#10355,0,"(start: number, deleteCount: number, ...items: T[]): T[]",0,3) +signature_contains_type(#10055,#10355,-1) +signature_contains_type(#10009,#10355,0) +signature_parameter_name(#10355,0,"start") +signature_contains_type(#10009,#10355,1) +signature_parameter_name(#10355,1,"deleteCount") +signature_contains_type(#10055,#10355,2) +signature_parameter_name(#10355,2,"items") +signature_types(#10353,0,"(searchElement: T, fromIndex?: number): number",0,2) +signature_contains_type(#10009,#10353,-1) +signature_contains_type(#10053,#10353,0) +signature_parameter_name(#10353,0,"searchElement") +signature_contains_type(#10009,#10353,1) +signature_parameter_name(#10353,1,"fromIndex") +signature_types(#10352,0,"(value: T, index: number, array: T[]): boolean",0,3) +signature_contains_type(#10022,#10352,-1) +signature_contains_type(#10053,#10352,0) +signature_parameter_name(#10352,0,"value") +signature_contains_type(#10009,#10352,1) +signature_parameter_name(#10352,1,"index") +signature_contains_type(#10055,#10352,2) +signature_parameter_name(#10352,2,"array") +signature_types(#10351,0,"(callbackfn: (value: T, index: number, array: T[]) => boolean, thisAr...",0,2) +signature_contains_type(#10022,#10351,-1) +signature_contains_type(#10101,#10351,0) +signature_parameter_name(#10351,0,"callbackfn") +signature_contains_type(#10002,#10351,1) +signature_parameter_name(#10351,1,"thisArg") +signature_types(#10350,0,"(value: T, index: number, array: T[]): void",0,3) +signature_contains_type(#10072,#10350,-1) +signature_contains_type(#10053,#10350,0) +signature_parameter_name(#10350,0,"value") +signature_contains_type(#10009,#10350,1) +signature_parameter_name(#10350,1,"index") +signature_contains_type(#10055,#10350,2) +signature_parameter_name(#10350,2,"array") +signature_types(#10349,0,"(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?:...",0,2) +signature_contains_type(#10072,#10349,-1) +signature_contains_type(#10103,#10349,0) +signature_parameter_name(#10349,0,"callbackfn") +signature_contains_type(#10002,#10349,1) +signature_parameter_name(#10349,1,"thisArg") +signature_types(#10348,0,"(value: T, index: number, array: T[]): U",0,3) +signature_contains_type(#10075,#10348,-1) +signature_contains_type(#10053,#10348,0) +signature_parameter_name(#10348,0,"value") +signature_contains_type(#10009,#10348,1) +signature_parameter_name(#10348,1,"index") +signature_contains_type(#10055,#10348,2) +signature_parameter_name(#10348,2,"array") +signature_types(#10347,0,"(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?:...",1,2) +signature_contains_type(#10076,#10347,-1) +signature_parameter_name(#10347,0,"U") +signature_contains_type(#10105,#10347,1) +signature_parameter_name(#10347,1,"callbackfn") +signature_contains_type(#10002,#10347,2) +signature_parameter_name(#10347,2,"thisArg") +signature_types(#10344,0,"(callbackfn: (value: T, index: number, array: T[]) => va...",1,2) +signature_contains_type(#10080,#10344,-1) +signature_parameter_name(#10344,0,"S") +signature_contains_type(#10101,#10344,1) +signature_parameter_name(#10344,1,"callbackfn") +signature_contains_type(#10002,#10344,2) +signature_parameter_name(#10344,2,"thisArg") +signature_types(#10346,0,"(value: T, index: number, array: T[]): any",0,3) +signature_contains_type(#10002,#10346,-1) +signature_contains_type(#10053,#10346,0) +signature_parameter_name(#10346,0,"value") +signature_contains_type(#10009,#10346,1) +signature_parameter_name(#10346,1,"index") +signature_contains_type(#10055,#10346,2) +signature_parameter_name(#10346,2,"array") +signature_types(#10345,0,"(callbackfn: (value: T, index: number, array: T[]) => any, thisArg?: ...",0,2) +signature_contains_type(#10055,#10345,-1) +signature_contains_type(#10107,#10345,0) +signature_parameter_name(#10345,0,"callbackfn") +signature_contains_type(#10002,#10345,1) +signature_parameter_name(#10345,1,"thisArg") +signature_types(#10343,0,"(previousValue: T, currentValue: T, currentIndex: number, array: T[])...",0,4) +signature_contains_type(#10053,#10343,-1) +signature_contains_type(#10053,#10343,0) +signature_parameter_name(#10343,0,"previousValue") +signature_contains_type(#10053,#10343,1) +signature_parameter_name(#10343,1,"currentValue") +signature_contains_type(#10009,#10343,2) +signature_parameter_name(#10343,2,"currentIndex") +signature_contains_type(#10055,#10343,3) +signature_parameter_name(#10343,3,"array") +signature_types(#10339,0,"(callbackfn: (previousValue: T, currentValue: T, currentIndex: number...",0,1) +signature_contains_type(#10053,#10339,-1) +signature_contains_type(#10109,#10339,0) +signature_parameter_name(#10339,0,"callbackfn") +signature_types(#10340,0,"(callbackfn: (previousValue: T, currentValue: T, currentIndex: number...",0,2) +signature_contains_type(#10053,#10340,-1) +signature_contains_type(#10109,#10340,0) +signature_parameter_name(#10340,0,"callbackfn") +signature_contains_type(#10053,#10340,1) +signature_parameter_name(#10340,1,"initialValue") +signature_types(#10342,0,"(previousValue: U, currentValue: T, currentIndex: number, array: T[])...",0,4) +signature_contains_type(#10075,#10342,-1) +signature_contains_type(#10075,#10342,0) +signature_parameter_name(#10342,0,"previousValue") +signature_contains_type(#10053,#10342,1) +signature_parameter_name(#10342,1,"currentValue") +signature_contains_type(#10009,#10342,2) +signature_parameter_name(#10342,2,"currentIndex") +signature_contains_type(#10055,#10342,3) +signature_parameter_name(#10342,3,"array") +signature_types(#10341,0,"(callbackfn: (previousValue: U, currentValue: T, currentIndex: num...",1,2) +signature_contains_type(#10075,#10341,-1) +signature_parameter_name(#10341,0,"U") +signature_contains_type(#10110,#10341,1) +signature_parameter_name(#10341,1,"callbackfn") +signature_contains_type(#10075,#10341,2) +signature_parameter_name(#10341,2,"initialValue") +signature_types(#10365,0,"(start?: number, end?: number): string | string[]",0,2) +signature_contains_type(#10016,#10365,-1) +signature_contains_type(#10009,#10365,0) +signature_parameter_name(#10365,0,"start") +signature_contains_type(#10009,#10365,1) +signature_parameter_name(#10365,1,"end") +signature_types(#10396,0,"(): string | ConcatArray",0,0) +signature_contains_type(#10029,#10396,-1) +signature_types(#10395,0,"(...items: (string | ConcatArray)[]): number",0,1) +signature_contains_type(#10009,#10395,-1) +signature_contains_type(#10030,#10395,0) +signature_parameter_name(#10395,0,"items") +signature_types(#10392,0,"(...items: ConcatArray>[]): (string | Co...",0,1) +signature_contains_type(#10030,#10392,-1) +signature_contains_type(#10115,#10392,0) +signature_parameter_name(#10392,0,"items") +signature_types(#10393,0,"(...items: (string | ConcatArray | ConcatArray)[]",0,0) +signature_contains_type(#10030,#10391,-1) +signature_types(#10390,0,"(start?: number, end?: number): (string | ConcatArray)[]",0,2) +signature_contains_type(#10030,#10390,-1) +signature_contains_type(#10009,#10390,0) +signature_parameter_name(#10390,0,"start") +signature_contains_type(#10009,#10390,1) +signature_parameter_name(#10390,1,"end") +signature_types(#10389,0,"(a: string | ConcatArray, b: string | ConcatArray): n...",0,2) +signature_contains_type(#10009,#10389,-1) +signature_contains_type(#10029,#10389,0) +signature_parameter_name(#10389,0,"a") +signature_contains_type(#10029,#10389,1) +signature_parameter_name(#10389,1,"b") +signature_types(#10388,0,"(compareFn?: (a: string | ConcatArray, b: string | ConcatArra...",0,1) +signature_contains_type(#10030,#10388,-1) +signature_contains_type(#10121,#10388,0) +signature_parameter_name(#10388,0,"compareFn") +signature_types(#10386,0,"(start: number, deleteCount?: number): (string | ConcatArray)...",0,2) +signature_contains_type(#10030,#10386,-1) +signature_contains_type(#10009,#10386,0) +signature_parameter_name(#10386,0,"start") +signature_contains_type(#10009,#10386,1) +signature_parameter_name(#10386,1,"deleteCount") +signature_types(#10387,0,"(start: number, deleteCount: number, ...items: (string | ConcatArray<...",0,3) +signature_contains_type(#10030,#10387,-1) +signature_contains_type(#10009,#10387,0) +signature_parameter_name(#10387,0,"start") +signature_contains_type(#10009,#10387,1) +signature_parameter_name(#10387,1,"deleteCount") +signature_contains_type(#10030,#10387,2) +signature_parameter_name(#10387,2,"items") +signature_types(#10385,0,"(searchElement: string | ConcatArray, fromIndex?: number): nu...",0,2) +signature_contains_type(#10009,#10385,-1) +signature_contains_type(#10029,#10385,0) +signature_parameter_name(#10385,0,"searchElement") +signature_contains_type(#10009,#10385,1) +signature_parameter_name(#10385,1,"fromIndex") +signature_types(#10384,0,"(value: string | ConcatArray, index: number, array: (string |...",0,3) +signature_contains_type(#10022,#10384,-1) +signature_contains_type(#10029,#10384,0) +signature_parameter_name(#10384,0,"value") +signature_contains_type(#10009,#10384,1) +signature_parameter_name(#10384,1,"index") +signature_contains_type(#10030,#10384,2) +signature_parameter_name(#10384,2,"array") +signature_types(#10383,0,"(callbackfn: (value: string | ConcatArray, index: number, arr...",0,2) +signature_contains_type(#10022,#10383,-1) +signature_contains_type(#10125,#10383,0) +signature_parameter_name(#10383,0,"callbackfn") +signature_contains_type(#10002,#10383,1) +signature_parameter_name(#10383,1,"thisArg") +signature_types(#10382,0,"(value: string | ConcatArray, index: number, array: (string |...",0,3) +signature_contains_type(#10072,#10382,-1) +signature_contains_type(#10029,#10382,0) +signature_parameter_name(#10382,0,"value") +signature_contains_type(#10009,#10382,1) +signature_parameter_name(#10382,1,"index") +signature_contains_type(#10030,#10382,2) +signature_parameter_name(#10382,2,"array") +signature_types(#10381,0,"(callbackfn: (value: string | ConcatArray, index: number, arr...",0,2) +signature_contains_type(#10072,#10381,-1) +signature_contains_type(#10127,#10381,0) +signature_parameter_name(#10381,0,"callbackfn") +signature_contains_type(#10002,#10381,1) +signature_parameter_name(#10381,1,"thisArg") +signature_types(#10380,0,"(value: string | ConcatArray, index: number, array: (string |...",0,3) +signature_contains_type(#10075,#10380,-1) +signature_contains_type(#10029,#10380,0) +signature_parameter_name(#10380,0,"value") +signature_contains_type(#10009,#10380,1) +signature_parameter_name(#10380,1,"index") +signature_contains_type(#10030,#10380,2) +signature_parameter_name(#10380,2,"array") +signature_types(#10379,0,"(callbackfn: (value: string | ConcatArray, index: number, ...",1,2) +signature_contains_type(#10076,#10379,-1) +signature_parameter_name(#10379,0,"U") +signature_contains_type(#10129,#10379,1) +signature_parameter_name(#10379,1,"callbackfn") +signature_contains_type(#10002,#10379,2) +signature_parameter_name(#10379,2,"thisArg") +signature_types(#10376,0,">(callbackfn: (value: string |...",1,2) +signature_contains_type(#10080,#10376,-1) +signature_contains_type(#10029,#10376,0) +signature_parameter_name(#10376,0,"S") +signature_contains_type(#10125,#10376,1) +signature_parameter_name(#10376,1,"callbackfn") +signature_contains_type(#10002,#10376,2) +signature_parameter_name(#10376,2,"thisArg") +signature_types(#10378,0,"(value: string | ConcatArray, index: number, array: (string |...",0,3) +signature_contains_type(#10002,#10378,-1) +signature_contains_type(#10029,#10378,0) +signature_parameter_name(#10378,0,"value") +signature_contains_type(#10009,#10378,1) +signature_parameter_name(#10378,1,"index") +signature_contains_type(#10030,#10378,2) +signature_parameter_name(#10378,2,"array") +signature_types(#10377,0,"(callbackfn: (value: string | ConcatArray, index: number, arr...",0,2) +signature_contains_type(#10030,#10377,-1) +signature_contains_type(#10131,#10377,0) +signature_parameter_name(#10377,0,"callbackfn") +signature_contains_type(#10002,#10377,1) +signature_parameter_name(#10377,1,"thisArg") +signature_types(#10375,0,"(previousValue: string | ConcatArray, currentValue: string | ...",0,4) +signature_contains_type(#10029,#10375,-1) +signature_contains_type(#10029,#10375,0) +signature_parameter_name(#10375,0,"previousValue") +signature_contains_type(#10029,#10375,1) +signature_parameter_name(#10375,1,"currentValue") +signature_contains_type(#10009,#10375,2) +signature_parameter_name(#10375,2,"currentIndex") +signature_contains_type(#10030,#10375,3) +signature_parameter_name(#10375,3,"array") +signature_types(#10371,0,"(callbackfn: (previousValue: string | ConcatArray, currentVal...",0,1) +signature_contains_type(#10029,#10371,-1) +signature_contains_type(#10133,#10371,0) +signature_parameter_name(#10371,0,"callbackfn") +signature_types(#10372,0,"(callbackfn: (previousValue: string | ConcatArray, currentVal...",0,2) +signature_contains_type(#10029,#10372,-1) +signature_contains_type(#10133,#10372,0) +signature_parameter_name(#10372,0,"callbackfn") +signature_contains_type(#10029,#10372,1) +signature_parameter_name(#10372,1,"initialValue") +signature_types(#10374,0,"(previousValue: U, currentValue: string | ConcatArray, curren...",0,4) +signature_contains_type(#10075,#10374,-1) +signature_contains_type(#10075,#10374,0) +signature_parameter_name(#10374,0,"previousValue") +signature_contains_type(#10029,#10374,1) +signature_parameter_name(#10374,1,"currentValue") +signature_contains_type(#10009,#10374,2) +signature_parameter_name(#10374,2,"currentIndex") +signature_contains_type(#10030,#10374,3) +signature_parameter_name(#10374,3,"array") +signature_types(#10373,0,"(callbackfn: (previousValue: U, currentValue: string | ConcatArray...",1,2) +signature_contains_type(#10075,#10373,-1) +signature_parameter_name(#10373,0,"U") +signature_contains_type(#10134,#10373,1) +signature_parameter_name(#10373,1,"callbackfn") +signature_contains_type(#10075,#10373,2) +signature_parameter_name(#10373,2,"initialValue") +signature_types(#10394,0,"(start?: number, end?: number): string | (string | ConcatArray",0,0) +signature_contains_type(#10026,#10445,-1) +signature_types(#10444,0,"(...items: ConcatArray[]): number",0,1) +signature_contains_type(#10009,#10444,-1) +signature_contains_type(#10028,#10444,0) +signature_parameter_name(#10444,0,"items") +signature_types(#10418,0,"(...items: ConcatArray>[]): ConcatArray[]",0,1) +signature_contains_type(#10028,#10418,-1) +signature_contains_type(#10144,#10418,0) +signature_parameter_name(#10418,0,"items") +signature_types(#10419,0,"(...items: (ConcatArray | ConcatArray>)[]...",0,1) +signature_contains_type(#10028,#10419,-1) +signature_contains_type(#10146,#10419,0) +signature_parameter_name(#10419,0,"items") +signature_types(#10417,0,"(): ConcatArray[]",0,0) +signature_contains_type(#10028,#10417,-1) +signature_types(#10416,0,"(start?: number, end?: number): ConcatArray[]",0,2) +signature_contains_type(#10028,#10416,-1) +signature_contains_type(#10009,#10416,0) +signature_parameter_name(#10416,0,"start") +signature_contains_type(#10009,#10416,1) +signature_parameter_name(#10416,1,"end") +signature_types(#10415,0,"(a: ConcatArray, b: ConcatArray): number",0,2) +signature_contains_type(#10009,#10415,-1) +signature_contains_type(#10026,#10415,0) +signature_parameter_name(#10415,0,"a") +signature_contains_type(#10026,#10415,1) +signature_parameter_name(#10415,1,"b") +signature_types(#10414,0,"(compareFn?: (a: ConcatArray, b: ConcatArray) => numb...",0,1) +signature_contains_type(#10028,#10414,-1) +signature_contains_type(#10150,#10414,0) +signature_parameter_name(#10414,0,"compareFn") +signature_types(#10412,0,"(start: number, deleteCount?: number): ConcatArray[]",0,2) +signature_contains_type(#10028,#10412,-1) +signature_contains_type(#10009,#10412,0) +signature_parameter_name(#10412,0,"start") +signature_contains_type(#10009,#10412,1) +signature_parameter_name(#10412,1,"deleteCount") +signature_types(#10413,0,"(start: number, deleteCount: number, ...items: ConcatArray[])...",0,3) +signature_contains_type(#10028,#10413,-1) +signature_contains_type(#10009,#10413,0) +signature_parameter_name(#10413,0,"start") +signature_contains_type(#10009,#10413,1) +signature_parameter_name(#10413,1,"deleteCount") +signature_contains_type(#10028,#10413,2) +signature_parameter_name(#10413,2,"items") +signature_types(#10411,0,"(searchElement: ConcatArray, fromIndex?: number): number",0,2) +signature_contains_type(#10009,#10411,-1) +signature_contains_type(#10026,#10411,0) +signature_parameter_name(#10411,0,"searchElement") +signature_contains_type(#10009,#10411,1) +signature_parameter_name(#10411,1,"fromIndex") +signature_types(#10410,0,"(value: ConcatArray, index: number, array: ConcatArray, index: number, array: Conca...",0,2) +signature_contains_type(#10022,#10409,-1) +signature_contains_type(#10154,#10409,0) +signature_parameter_name(#10409,0,"callbackfn") +signature_contains_type(#10002,#10409,1) +signature_parameter_name(#10409,1,"thisArg") +signature_types(#10408,0,"(value: ConcatArray, index: number, array: ConcatArray, index: number, array: Conca...",0,2) +signature_contains_type(#10072,#10407,-1) +signature_contains_type(#10156,#10407,0) +signature_parameter_name(#10407,0,"callbackfn") +signature_contains_type(#10002,#10407,1) +signature_parameter_name(#10407,1,"thisArg") +signature_types(#10406,0,"(value: ConcatArray, index: number, array: ConcatArray(callbackfn: (value: ConcatArray, index: number, array: Co...",1,2) +signature_contains_type(#10076,#10405,-1) +signature_parameter_name(#10405,0,"U") +signature_contains_type(#10158,#10405,1) +signature_parameter_name(#10405,1,"callbackfn") +signature_contains_type(#10002,#10405,2) +signature_parameter_name(#10405,2,"thisArg") +signature_types(#10402,0,">(callbackfn: (value: ConcatArray, index: number, array: ConcatArray, index: number, array: Conca...",0,2) +signature_contains_type(#10028,#10403,-1) +signature_contains_type(#10160,#10403,0) +signature_parameter_name(#10403,0,"callbackfn") +signature_contains_type(#10002,#10403,1) +signature_parameter_name(#10403,1,"thisArg") +signature_types(#10401,0,"(previousValue: ConcatArray, currentValue: ConcatArray, currentValue: Conca...",0,1) +signature_contains_type(#10026,#10397,-1) +signature_contains_type(#10162,#10397,0) +signature_parameter_name(#10397,0,"callbackfn") +signature_types(#10398,0,"(callbackfn: (previousValue: ConcatArray, currentValue: Conca...",0,2) +signature_contains_type(#10026,#10398,-1) +signature_contains_type(#10162,#10398,0) +signature_parameter_name(#10398,0,"callbackfn") +signature_contains_type(#10026,#10398,1) +signature_parameter_name(#10398,1,"initialValue") +signature_types(#10400,0,"(previousValue: U, currentValue: ConcatArray, currentIndex: n...",0,4) +signature_contains_type(#10075,#10400,-1) +signature_contains_type(#10075,#10400,0) +signature_parameter_name(#10400,0,"previousValue") +signature_contains_type(#10026,#10400,1) +signature_parameter_name(#10400,1,"currentValue") +signature_contains_type(#10009,#10400,2) +signature_parameter_name(#10400,2,"currentIndex") +signature_contains_type(#10028,#10400,3) +signature_parameter_name(#10400,3,"array") +signature_types(#10399,0,"(callbackfn: (previousValue: U, currentValue: ConcatArray,...",1,2) +signature_contains_type(#10075,#10399,-1) +signature_parameter_name(#10399,0,"U") +signature_contains_type(#10163,#10399,1) +signature_parameter_name(#10399,1,"callbackfn") +signature_contains_type(#10075,#10399,2) +signature_parameter_name(#10399,2,"initialValue") +signature_types(#10420,0,"(start?: number, end?: number): string[] | ConcatArray[]",0,2) +signature_contains_type(#10166,#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,"end") +signature_types(#10443,0,"(...items: string[]): number",0,1) +signature_contains_type(#10009,#10443,-1) +signature_contains_type(#10014,#10443,0) +signature_parameter_name(#10443,0,"items") +signature_types(#10442,0,"(): string[]",0,0) +signature_contains_type(#10014,#10442,-1) +signature_types(#10440,0,"(a: string, b: string): number",0,2) +signature_contains_type(#10009,#10440,-1) +signature_contains_type(#10008,#10440,0) +signature_parameter_name(#10440,0,"a") +signature_contains_type(#10008,#10440,1) +signature_parameter_name(#10440,1,"b") +signature_types(#10439,0,"(compareFn?: (a: string, b: string) => number): string[]",0,1) +signature_contains_type(#10014,#10439,-1) +signature_contains_type(#10174,#10439,0) +signature_parameter_name(#10439,0,"compareFn") +signature_types(#10437,0,"(start: number, deleteCount?: number): string[]",0,2) +signature_contains_type(#10014,#10437,-1) +signature_contains_type(#10009,#10437,0) +signature_parameter_name(#10437,0,"start") +signature_contains_type(#10009,#10437,1) +signature_parameter_name(#10437,1,"deleteCount") +signature_types(#10438,0,"(start: number, deleteCount: number, ...items: string[]): string[]",0,3) +signature_contains_type(#10014,#10438,-1) +signature_contains_type(#10009,#10438,0) +signature_parameter_name(#10438,0,"start") +signature_contains_type(#10009,#10438,1) +signature_parameter_name(#10438,1,"deleteCount") +signature_contains_type(#10014,#10438,2) +signature_parameter_name(#10438,2,"items") +signature_types(#10435,0,"(searchElement: string, fromIndex?: number): number",0,2) +signature_contains_type(#10009,#10435,-1) +signature_contains_type(#10008,#10435,0) +signature_parameter_name(#10435,0,"searchElement") +signature_contains_type(#10009,#10435,1) +signature_parameter_name(#10435,1,"fromIndex") +signature_types(#10434,0,"(value: string, index: number, array: string[]): boolean",0,3) +signature_contains_type(#10022,#10434,-1) +signature_contains_type(#10008,#10434,0) +signature_parameter_name(#10434,0,"value") +signature_contains_type(#10009,#10434,1) +signature_parameter_name(#10434,1,"index") +signature_contains_type(#10014,#10434,2) +signature_parameter_name(#10434,2,"array") +signature_types(#10433,0,"(callbackfn: (value: string, index: number, array: string[]) => boole...",0,2) +signature_contains_type(#10022,#10433,-1) +signature_contains_type(#10181,#10433,0) +signature_parameter_name(#10433,0,"callbackfn") +signature_contains_type(#10002,#10433,1) +signature_parameter_name(#10433,1,"thisArg") +signature_types(#10432,0,"(value: string, index: number, array: string[]): void",0,3) +signature_contains_type(#10072,#10432,-1) +signature_contains_type(#10008,#10432,0) +signature_parameter_name(#10432,0,"value") +signature_contains_type(#10009,#10432,1) +signature_parameter_name(#10432,1,"index") +signature_contains_type(#10014,#10432,2) +signature_parameter_name(#10432,2,"array") +signature_types(#10431,0,"(callbackfn: (value: string, index: number, array: string[]) => void,...",0,2) +signature_contains_type(#10072,#10431,-1) +signature_contains_type(#10184,#10431,0) +signature_parameter_name(#10431,0,"callbackfn") +signature_contains_type(#10002,#10431,1) +signature_parameter_name(#10431,1,"thisArg") +signature_types(#10430,0,"(value: string, index: number, array: string[]): U",0,3) +signature_contains_type(#10075,#10430,-1) +signature_contains_type(#10008,#10430,0) +signature_parameter_name(#10430,0,"value") +signature_contains_type(#10009,#10430,1) +signature_parameter_name(#10430,1,"index") +signature_contains_type(#10014,#10430,2) +signature_parameter_name(#10430,2,"array") +signature_types(#10429,0,"(callbackfn: (value: string, index: number, array: string[]) => U,...",1,2) +signature_contains_type(#10076,#10429,-1) +signature_parameter_name(#10429,0,"U") +signature_contains_type(#10187,#10429,1) +signature_parameter_name(#10429,1,"callbackfn") +signature_contains_type(#10002,#10429,2) +signature_parameter_name(#10429,2,"thisArg") +signature_types(#10426,0,"(callbackfn: (value: string, index: number, array: ...",1,2) +signature_contains_type(#10080,#10426,-1) +signature_contains_type(#10008,#10426,0) +signature_parameter_name(#10426,0,"S") +signature_contains_type(#10181,#10426,1) +signature_parameter_name(#10426,1,"callbackfn") +signature_contains_type(#10002,#10426,2) +signature_parameter_name(#10426,2,"thisArg") +signature_types(#10428,0,"(value: string, index: number, array: string[]): any",0,3) +signature_contains_type(#10002,#10428,-1) +signature_contains_type(#10008,#10428,0) +signature_parameter_name(#10428,0,"value") +signature_contains_type(#10009,#10428,1) +signature_parameter_name(#10428,1,"index") +signature_contains_type(#10014,#10428,2) +signature_parameter_name(#10428,2,"array") +signature_types(#10427,0,"(callbackfn: (value: string, index: number, array: string[]) => any, ...",0,2) +signature_contains_type(#10014,#10427,-1) +signature_contains_type(#10190,#10427,0) +signature_parameter_name(#10427,0,"callbackfn") +signature_contains_type(#10002,#10427,1) +signature_parameter_name(#10427,1,"thisArg") +signature_types(#10425,0,"(previousValue: string, currentValue: string, currentIndex: number, a...",0,4) +signature_contains_type(#10008,#10425,-1) +signature_contains_type(#10008,#10425,0) +signature_parameter_name(#10425,0,"previousValue") +signature_contains_type(#10008,#10425,1) +signature_parameter_name(#10425,1,"currentValue") +signature_contains_type(#10009,#10425,2) +signature_parameter_name(#10425,2,"currentIndex") +signature_contains_type(#10014,#10425,3) +signature_parameter_name(#10425,3,"array") +signature_types(#10421,0,"(callbackfn: (previousValue: string, currentValue: string, currentInd...",0,1) +signature_contains_type(#10008,#10421,-1) +signature_contains_type(#10193,#10421,0) +signature_parameter_name(#10421,0,"callbackfn") +signature_types(#10422,0,"(callbackfn: (previousValue: string, currentValue: string, currentInd...",0,2) +signature_contains_type(#10008,#10422,-1) +signature_contains_type(#10193,#10422,0) +signature_parameter_name(#10422,0,"callbackfn") +signature_contains_type(#10008,#10422,1) +signature_parameter_name(#10422,1,"initialValue") +signature_types(#10424,0,"(previousValue: U, currentValue: string, currentIndex: number, array:...",0,4) +signature_contains_type(#10075,#10424,-1) +signature_contains_type(#10075,#10424,0) +signature_parameter_name(#10424,0,"previousValue") +signature_contains_type(#10008,#10424,1) +signature_parameter_name(#10424,1,"currentValue") +signature_contains_type(#10009,#10424,2) +signature_parameter_name(#10424,2,"currentIndex") +signature_contains_type(#10014,#10424,3) +signature_parameter_name(#10424,3,"array") +signature_types(#10423,0,"(callbackfn: (previousValue: U, currentValue: string, currentIndex...",1,2) +signature_contains_type(#10075,#10423,-1) +signature_parameter_name(#10423,0,"U") +signature_contains_type(#10194,#10423,1) +signature_parameter_name(#10423,1,"callbackfn") +signature_contains_type(#10075,#10423,2) +signature_parameter_name(#10423,2,"initialValue") +signature_types(#10436,0,"(start: number, deleteCount?: number): string[] | ConcatArray...",0,2) +signature_contains_type(#10166,#10436,-1) +signature_contains_type(#10009,#10436,0) +signature_parameter_name(#10436,0,"start") +signature_contains_type(#10009,#10436,1) +signature_parameter_name(#10436,1,"deleteCount") +signature_types(#10441,0,"(): string[] | ConcatArray[]",0,0) +signature_contains_type(#10166,#10441,-1) +signature_types(#10516,0,"(pos: number): string",0,1) +signature_contains_type(#10008,#10516,-1) +signature_contains_type(#10009,#10516,0) +signature_parameter_name(#10516,0,"pos") +signature_types(#10515,0,"(index: number): number",0,1) +signature_contains_type(#10009,#10515,-1) +signature_contains_type(#10009,#10515,0) +signature_parameter_name(#10515,0,"index") +signature_types(#10513,0,"(that: string): number",0,1) +signature_contains_type(#10009,#10513,-1) +signature_contains_type(#10008,#10513,0) +signature_parameter_name(#10513,0,"that") +signature_types(#10514,0,"(that: string, locales?: string | string[], options?: Intl.CollatorOp...",0,3) +signature_contains_type(#10009,#10514,-1) +signature_contains_type(#10008,#10514,0) +signature_parameter_name(#10514,0,"that") +signature_contains_type(#10016,#10514,1) +signature_parameter_name(#10514,1,"locales") +signature_contains_type(#10199,#10514,2) +signature_parameter_name(#10514,2,"options") +signature_types(#10457,0,"(regexp: string | RegExp): RegExpMatchArray",0,1) +signature_contains_type(#10202,#10457,-1) +signature_contains_type(#10206,#10457,0) +signature_parameter_name(#10457,0,"regexp") +signature_types(#10454,0,"(searchValue: string | RegExp, replaceValue: string): string",0,2) +signature_contains_type(#10008,#10454,-1) +signature_contains_type(#10206,#10454,0) +signature_parameter_name(#10454,0,"searchValue") +signature_contains_type(#10008,#10454,1) +signature_parameter_name(#10454,1,"replaceValue") +signature_types(#10456,0,"(substring: string, ...args: any[]): string",0,2) +signature_contains_type(#10008,#10456,-1) +signature_contains_type(#10008,#10456,0) +signature_parameter_name(#10456,0,"substring") +signature_contains_type(#10051,#10456,1) +signature_parameter_name(#10456,1,"args") +signature_types(#10455,0,"(searchValue: string | RegExp, replacer: (substring: string, ...args:...",0,2) +signature_contains_type(#10008,#10455,-1) +signature_contains_type(#10206,#10455,0) +signature_parameter_name(#10455,0,"searchValue") +signature_contains_type(#10208,#10455,1) +signature_parameter_name(#10455,1,"replacer") +signature_types(#10453,0,"(regexp: string | RegExp): number",0,1) +signature_contains_type(#10009,#10453,-1) +signature_contains_type(#10206,#10453,0) +signature_parameter_name(#10453,0,"regexp") +signature_types(#10452,0,"(separator: string | RegExp, limit?: number): string[]",0,2) +signature_contains_type(#10014,#10452,-1) +signature_contains_type(#10206,#10452,0) +signature_parameter_name(#10452,0,"separator") +signature_contains_type(#10009,#10452,1) +signature_parameter_name(#10452,1,"limit") +signature_types(#10451,0,"(from: number, length?: number): string",0,2) +signature_contains_type(#10008,#10451,-1) +signature_contains_type(#10009,#10451,0) +signature_parameter_name(#10451,0,"from") +signature_contains_type(#10009,#10451,1) +signature_parameter_name(#10451,1,"length") +signature_types(#10460,0,"(string: string): RegExpExecArray",0,1) +signature_contains_type(#10213,#10460,-1) +signature_contains_type(#10008,#10460,0) +signature_parameter_name(#10460,0,"string") +signature_types(#10459,0,"(string: string): boolean",0,1) +signature_contains_type(#10022,#10459,-1) +signature_contains_type(#10008,#10459,0) +signature_parameter_name(#10459,0,"string") +signature_types(#10458,0,"(): RegExp",0,0) +signature_contains_type(#10204,#10458,-1) +signature_types(#10511,0,"(compareFn?: (a: string, b: string) => number): RegExpExecArray",0,1) +signature_contains_type(#10213,#10511,-1) +signature_contains_type(#10174,#10511,0) +signature_parameter_name(#10511,0,"compareFn") +signature_types(#10486,0,"(): S",0,0) +signature_contains_type(#10079,#10486,-1) +signature_types(#10485,0,"(...items: S[]): number",0,1) +signature_contains_type(#10009,#10485,-1) +signature_contains_type(#10080,#10485,0) +signature_parameter_name(#10485,0,"items") +signature_types(#10482,0,"(...items: ConcatArray[]): S[]",0,1) +signature_contains_type(#10080,#10482,-1) +signature_contains_type(#10222,#10482,0) +signature_parameter_name(#10482,0,"items") +signature_types(#10483,0,"(...items: (S | ConcatArray)[]): S[]",0,1) +signature_contains_type(#10080,#10483,-1) +signature_contains_type(#10224,#10483,0) +signature_parameter_name(#10483,0,"items") +signature_types(#10481,0,"(): S[]",0,0) +signature_contains_type(#10080,#10481,-1) +signature_types(#10480,0,"(start?: number, end?: number): S[]",0,2) +signature_contains_type(#10080,#10480,-1) +signature_contains_type(#10009,#10480,0) +signature_parameter_name(#10480,0,"start") +signature_contains_type(#10009,#10480,1) +signature_parameter_name(#10480,1,"end") +signature_types(#10479,0,"(a: S, b: S): number",0,2) +signature_contains_type(#10009,#10479,-1) +signature_contains_type(#10079,#10479,0) +signature_parameter_name(#10479,0,"a") +signature_contains_type(#10079,#10479,1) +signature_parameter_name(#10479,1,"b") +signature_types(#10478,0,"(compareFn?: (a: S, b: S) => number): S[]",0,1) +signature_contains_type(#10080,#10478,-1) +signature_contains_type(#10228,#10478,0) +signature_parameter_name(#10478,0,"compareFn") +signature_types(#10476,0,"(start: number, deleteCount?: number): S[]",0,2) +signature_contains_type(#10080,#10476,-1) +signature_contains_type(#10009,#10476,0) +signature_parameter_name(#10476,0,"start") +signature_contains_type(#10009,#10476,1) +signature_parameter_name(#10476,1,"deleteCount") +signature_types(#10477,0,"(start: number, deleteCount: number, ...items: S[]): S[]",0,3) +signature_contains_type(#10080,#10477,-1) +signature_contains_type(#10009,#10477,0) +signature_parameter_name(#10477,0,"start") +signature_contains_type(#10009,#10477,1) +signature_parameter_name(#10477,1,"deleteCount") +signature_contains_type(#10080,#10477,2) +signature_parameter_name(#10477,2,"items") +signature_types(#10475,0,"(searchElement: S, fromIndex?: number): number",0,2) +signature_contains_type(#10009,#10475,-1) +signature_contains_type(#10079,#10475,0) +signature_parameter_name(#10475,0,"searchElement") +signature_contains_type(#10009,#10475,1) +signature_parameter_name(#10475,1,"fromIndex") +signature_types(#10474,0,"(value: S, index: number, array: S[]): boolean",0,3) +signature_contains_type(#10022,#10474,-1) +signature_contains_type(#10079,#10474,0) +signature_parameter_name(#10474,0,"value") +signature_contains_type(#10009,#10474,1) +signature_parameter_name(#10474,1,"index") +signature_contains_type(#10080,#10474,2) +signature_parameter_name(#10474,2,"array") +signature_types(#10473,0,"(callbackfn: (value: S, index: number, array: S[]) => boolean, thisAr...",0,2) +signature_contains_type(#10022,#10473,-1) +signature_contains_type(#10232,#10473,0) +signature_parameter_name(#10473,0,"callbackfn") +signature_contains_type(#10002,#10473,1) +signature_parameter_name(#10473,1,"thisArg") +signature_types(#10472,0,"(value: S, index: number, array: S[]): void",0,3) +signature_contains_type(#10072,#10472,-1) +signature_contains_type(#10079,#10472,0) +signature_parameter_name(#10472,0,"value") +signature_contains_type(#10009,#10472,1) +signature_parameter_name(#10472,1,"index") +signature_contains_type(#10080,#10472,2) +signature_parameter_name(#10472,2,"array") +signature_types(#10471,0,"(callbackfn: (value: S, index: number, array: S[]) => void, thisArg?:...",0,2) +signature_contains_type(#10072,#10471,-1) +signature_contains_type(#10234,#10471,0) +signature_parameter_name(#10471,0,"callbackfn") +signature_contains_type(#10002,#10471,1) +signature_parameter_name(#10471,1,"thisArg") +signature_types(#10470,0,"(value: S, index: number, array: S[]): U",0,3) +signature_contains_type(#10075,#10470,-1) +signature_contains_type(#10079,#10470,0) +signature_parameter_name(#10470,0,"value") +signature_contains_type(#10009,#10470,1) +signature_parameter_name(#10470,1,"index") +signature_contains_type(#10080,#10470,2) +signature_parameter_name(#10470,2,"array") +signature_types(#10469,0,"(callbackfn: (value: S, index: number, array: S[]) => U, thisArg?:...",1,2) +signature_contains_type(#10076,#10469,-1) +signature_parameter_name(#10469,0,"U") +signature_contains_type(#10236,#10469,1) +signature_parameter_name(#10469,1,"callbackfn") +signature_contains_type(#10002,#10469,2) +signature_parameter_name(#10469,2,"thisArg") +signature_types(#10466,0,"(callbackfn: (value: S, index: number, array: S[]) => va...",1,2) +signature_contains_type(#10080,#10466,-1) +signature_contains_type(#10008,#10466,0) +signature_parameter_name(#10466,0,"S") +signature_contains_type(#10232,#10466,1) +signature_parameter_name(#10466,1,"callbackfn") +signature_contains_type(#10002,#10466,2) +signature_parameter_name(#10466,2,"thisArg") +signature_types(#10468,0,"(value: S, index: number, array: S[]): any",0,3) +signature_contains_type(#10002,#10468,-1) +signature_contains_type(#10079,#10468,0) +signature_parameter_name(#10468,0,"value") +signature_contains_type(#10009,#10468,1) +signature_parameter_name(#10468,1,"index") +signature_contains_type(#10080,#10468,2) +signature_parameter_name(#10468,2,"array") +signature_types(#10467,0,"(callbackfn: (value: S, index: number, array: S[]) => any, thisArg?: ...",0,2) +signature_contains_type(#10080,#10467,-1) +signature_contains_type(#10238,#10467,0) +signature_parameter_name(#10467,0,"callbackfn") +signature_contains_type(#10002,#10467,1) +signature_parameter_name(#10467,1,"thisArg") +signature_types(#10465,0,"(previousValue: S, currentValue: S, currentIndex: number, array: S[])...",0,4) +signature_contains_type(#10079,#10465,-1) +signature_contains_type(#10079,#10465,0) +signature_parameter_name(#10465,0,"previousValue") +signature_contains_type(#10079,#10465,1) +signature_parameter_name(#10465,1,"currentValue") +signature_contains_type(#10009,#10465,2) +signature_parameter_name(#10465,2,"currentIndex") +signature_contains_type(#10080,#10465,3) +signature_parameter_name(#10465,3,"array") +signature_types(#10461,0,"(callbackfn: (previousValue: S, currentValue: S, currentIndex: number...",0,1) +signature_contains_type(#10079,#10461,-1) +signature_contains_type(#10240,#10461,0) +signature_parameter_name(#10461,0,"callbackfn") +signature_types(#10462,0,"(callbackfn: (previousValue: S, currentValue: S, currentIndex: number...",0,2) +signature_contains_type(#10079,#10462,-1) +signature_contains_type(#10240,#10462,0) +signature_parameter_name(#10462,0,"callbackfn") +signature_contains_type(#10079,#10462,1) +signature_parameter_name(#10462,1,"initialValue") +signature_types(#10464,0,"(previousValue: U, currentValue: S, currentIndex: number, array: S[])...",0,4) +signature_contains_type(#10075,#10464,-1) +signature_contains_type(#10075,#10464,0) +signature_parameter_name(#10464,0,"previousValue") +signature_contains_type(#10079,#10464,1) +signature_parameter_name(#10464,1,"currentValue") +signature_contains_type(#10009,#10464,2) +signature_parameter_name(#10464,2,"currentIndex") +signature_contains_type(#10080,#10464,3) +signature_parameter_name(#10464,3,"array") +signature_types(#10463,0,"(callbackfn: (previousValue: U, currentValue: S, currentIndex: num...",1,2) +signature_contains_type(#10075,#10463,-1) +signature_parameter_name(#10463,0,"U") +signature_contains_type(#10241,#10463,1) +signature_parameter_name(#10463,1,"callbackfn") +signature_contains_type(#10075,#10463,2) +signature_parameter_name(#10463,2,"initialValue") +signature_types(#10484,0,"(start?: number, end?: number): string | S[]",0,2) +signature_contains_type(#10244,#10484,-1) +signature_contains_type(#10009,#10484,0) +signature_parameter_name(#10484,0,"start") +signature_contains_type(#10009,#10484,1) +signature_parameter_name(#10484,1,"end") +signature_types(#10510,0,"(): U",0,0) +signature_contains_type(#10075,#10510,-1) +signature_types(#10509,0,"(...items: U[]): number",0,1) +signature_contains_type(#10009,#10509,-1) +signature_contains_type(#10076,#10509,0) +signature_parameter_name(#10509,0,"items") +signature_types(#10507,0,"(...items: ConcatArray[]): U[]",0,1) +signature_contains_type(#10076,#10507,-1) +signature_contains_type(#10250,#10507,0) +signature_parameter_name(#10507,0,"items") +signature_types(#10508,0,"(...items: (U | ConcatArray)[]): U[]",0,1) +signature_contains_type(#10076,#10508,-1) +signature_contains_type(#10252,#10508,0) +signature_parameter_name(#10508,0,"items") +signature_types(#10506,0,"(): U[]",0,0) +signature_contains_type(#10076,#10506,-1) +signature_types(#10505,0,"(start?: number, end?: number): U[]",0,2) +signature_contains_type(#10076,#10505,-1) +signature_contains_type(#10009,#10505,0) +signature_parameter_name(#10505,0,"start") +signature_contains_type(#10009,#10505,1) +signature_parameter_name(#10505,1,"end") +signature_types(#10504,0,"(a: U, b: U): number",0,2) +signature_contains_type(#10009,#10504,-1) +signature_contains_type(#10075,#10504,0) +signature_parameter_name(#10504,0,"a") +signature_contains_type(#10075,#10504,1) +signature_parameter_name(#10504,1,"b") +signature_types(#10503,0,"(compareFn?: (a: U, b: U) => number): U[]",0,1) +signature_contains_type(#10076,#10503,-1) +signature_contains_type(#10256,#10503,0) +signature_parameter_name(#10503,0,"compareFn") +signature_types(#10501,0,"(start: number, deleteCount?: number): U[]",0,2) +signature_contains_type(#10076,#10501,-1) +signature_contains_type(#10009,#10501,0) +signature_parameter_name(#10501,0,"start") +signature_contains_type(#10009,#10501,1) +signature_parameter_name(#10501,1,"deleteCount") +signature_types(#10502,0,"(start: number, deleteCount: number, ...items: U[]): U[]",0,3) +signature_contains_type(#10076,#10502,-1) +signature_contains_type(#10009,#10502,0) +signature_parameter_name(#10502,0,"start") +signature_contains_type(#10009,#10502,1) +signature_parameter_name(#10502,1,"deleteCount") +signature_contains_type(#10076,#10502,2) +signature_parameter_name(#10502,2,"items") +signature_types(#10500,0,"(searchElement: U, fromIndex?: number): number",0,2) +signature_contains_type(#10009,#10500,-1) +signature_contains_type(#10075,#10500,0) +signature_parameter_name(#10500,0,"searchElement") +signature_contains_type(#10009,#10500,1) +signature_parameter_name(#10500,1,"fromIndex") +signature_types(#10499,0,"(value: U, index: number, array: U[]): boolean",0,3) +signature_contains_type(#10022,#10499,-1) +signature_contains_type(#10075,#10499,0) +signature_parameter_name(#10499,0,"value") +signature_contains_type(#10009,#10499,1) +signature_parameter_name(#10499,1,"index") +signature_contains_type(#10076,#10499,2) +signature_parameter_name(#10499,2,"array") +signature_types(#10498,0,"(callbackfn: (value: U, index: number, array: U[]) => boolean, thisAr...",0,2) +signature_contains_type(#10022,#10498,-1) +signature_contains_type(#10260,#10498,0) +signature_parameter_name(#10498,0,"callbackfn") +signature_contains_type(#10002,#10498,1) +signature_parameter_name(#10498,1,"thisArg") +signature_types(#10497,0,"(value: U, index: number, array: U[]): void",0,3) +signature_contains_type(#10072,#10497,-1) +signature_contains_type(#10075,#10497,0) +signature_parameter_name(#10497,0,"value") +signature_contains_type(#10009,#10497,1) +signature_parameter_name(#10497,1,"index") +signature_contains_type(#10076,#10497,2) +signature_parameter_name(#10497,2,"array") +signature_types(#10496,0,"(callbackfn: (value: U, index: number, array: U[]) => void, thisArg?:...",0,2) +signature_contains_type(#10072,#10496,-1) +signature_contains_type(#10262,#10496,0) +signature_parameter_name(#10496,0,"callbackfn") +signature_contains_type(#10002,#10496,1) +signature_parameter_name(#10496,1,"thisArg") +signature_types(#10495,0,"(value: U, index: number, array: U[]): U",0,3) +signature_contains_type(#10075,#10495,-1) +signature_contains_type(#10075,#10495,0) +signature_parameter_name(#10495,0,"value") +signature_contains_type(#10009,#10495,1) +signature_parameter_name(#10495,1,"index") +signature_contains_type(#10076,#10495,2) +signature_parameter_name(#10495,2,"array") +signature_types(#10494,0,"(callbackfn: (value: U, index: number, array: U[]) => U, thisArg?:...",1,2) +signature_contains_type(#10076,#10494,-1) +signature_parameter_name(#10494,0,"U") +signature_contains_type(#10264,#10494,1) +signature_parameter_name(#10494,1,"callbackfn") +signature_contains_type(#10002,#10494,2) +signature_parameter_name(#10494,2,"thisArg") +signature_types(#10491,0,"(callbackfn: (value: U, index: number, array: U[]) => va...",1,2) +signature_contains_type(#10080,#10491,-1) +signature_parameter_name(#10491,0,"S") +signature_contains_type(#10260,#10491,1) +signature_parameter_name(#10491,1,"callbackfn") +signature_contains_type(#10002,#10491,2) +signature_parameter_name(#10491,2,"thisArg") +signature_types(#10493,0,"(value: U, index: number, array: U[]): any",0,3) +signature_contains_type(#10002,#10493,-1) +signature_contains_type(#10075,#10493,0) +signature_parameter_name(#10493,0,"value") +signature_contains_type(#10009,#10493,1) +signature_parameter_name(#10493,1,"index") +signature_contains_type(#10076,#10493,2) +signature_parameter_name(#10493,2,"array") +signature_types(#10492,0,"(callbackfn: (value: U, index: number, array: U[]) => any, thisArg?: ...",0,2) +signature_contains_type(#10076,#10492,-1) +signature_contains_type(#10266,#10492,0) +signature_parameter_name(#10492,0,"callbackfn") +signature_contains_type(#10002,#10492,1) +signature_parameter_name(#10492,1,"thisArg") +signature_types(#10490,0,"(previousValue: U, currentValue: U, currentIndex: number, array: U[])...",0,4) +signature_contains_type(#10075,#10490,-1) +signature_contains_type(#10075,#10490,0) +signature_parameter_name(#10490,0,"previousValue") +signature_contains_type(#10075,#10490,1) +signature_parameter_name(#10490,1,"currentValue") +signature_contains_type(#10009,#10490,2) +signature_parameter_name(#10490,2,"currentIndex") +signature_contains_type(#10076,#10490,3) +signature_parameter_name(#10490,3,"array") +signature_types(#10487,0,"(callbackfn: (previousValue: U, currentValue: U, currentIndex: number...",0,1) +signature_contains_type(#10075,#10487,-1) +signature_contains_type(#10268,#10487,0) +signature_parameter_name(#10487,0,"callbackfn") +signature_types(#10488,0,"(callbackfn: (previousValue: U, currentValue: U, currentIndex: number...",0,2) +signature_contains_type(#10075,#10488,-1) +signature_contains_type(#10268,#10488,0) +signature_parameter_name(#10488,0,"callbackfn") +signature_contains_type(#10075,#10488,1) +signature_parameter_name(#10488,1,"initialValue") +signature_types(#10489,0,"(callbackfn: (previousValue: U, currentValue: U, currentIndex: num...",1,2) +signature_contains_type(#10075,#10489,-1) +signature_parameter_name(#10489,0,"U") +signature_contains_type(#10268,#10489,1) +signature_parameter_name(#10489,1,"callbackfn") +signature_contains_type(#10075,#10489,2) +signature_parameter_name(#10489,2,"initialValue") +signature_types(#10512,0,"(compareFn?: (a: string, b: string) => number): RegExpMatchArray",0,1) +signature_contains_type(#10202,#10512,-1) +signature_contains_type(#10174,#10512,0) +signature_parameter_name(#10512,0,"compareFn") +signature_types(#10540,0,"(...items: number[]): number",0,1) +signature_contains_type(#10009,#10540,-1) +signature_contains_type(#10271,#10540,0) +signature_parameter_name(#10540,0,"items") +signature_types(#10538,0,"(...items: ConcatArray[]): number[]",0,1) +signature_contains_type(#10271,#10538,-1) +signature_contains_type(#10274,#10538,0) +signature_parameter_name(#10538,0,"items") +signature_types(#10539,0,"(...items: (number | ConcatArray)[]): number[]",0,1) +signature_contains_type(#10271,#10539,-1) +signature_contains_type(#10276,#10539,0) +signature_parameter_name(#10539,0,"items") +signature_types(#10537,0,"(): number[]",0,0) +signature_contains_type(#10271,#10537,-1) +signature_types(#10536,0,"(start?: number, end?: number): number[]",0,2) +signature_contains_type(#10271,#10536,-1) +signature_contains_type(#10009,#10536,0) +signature_parameter_name(#10536,0,"start") +signature_contains_type(#10009,#10536,1) +signature_parameter_name(#10536,1,"end") +signature_types(#10535,0,"(a: number, b: number): number",0,2) +signature_contains_type(#10009,#10535,-1) +signature_contains_type(#10009,#10535,0) +signature_parameter_name(#10535,0,"a") +signature_contains_type(#10009,#10535,1) +signature_parameter_name(#10535,1,"b") +signature_types(#10534,0,"(compareFn?: (a: number, b: number) => number): number[]",0,1) +signature_contains_type(#10271,#10534,-1) +signature_contains_type(#10280,#10534,0) +signature_parameter_name(#10534,0,"compareFn") +signature_types(#10532,0,"(start: number, deleteCount?: number): number[]",0,2) +signature_contains_type(#10271,#10532,-1) +signature_contains_type(#10009,#10532,0) +signature_parameter_name(#10532,0,"start") +signature_contains_type(#10009,#10532,1) +signature_parameter_name(#10532,1,"deleteCount") +signature_types(#10533,0,"(start: number, deleteCount: number, ...items: number[]): number[]",0,3) +signature_contains_type(#10271,#10533,-1) +signature_contains_type(#10009,#10533,0) +signature_parameter_name(#10533,0,"start") +signature_contains_type(#10009,#10533,1) +signature_parameter_name(#10533,1,"deleteCount") +signature_contains_type(#10271,#10533,2) +signature_parameter_name(#10533,2,"items") +signature_types(#10531,0,"(searchElement: number, fromIndex?: number): number",0,2) +signature_contains_type(#10009,#10531,-1) +signature_contains_type(#10009,#10531,0) +signature_parameter_name(#10531,0,"searchElement") +signature_contains_type(#10009,#10531,1) +signature_parameter_name(#10531,1,"fromIndex") +signature_types(#10530,0,"(value: number, index: number, array: number[]): boolean",0,3) +signature_contains_type(#10022,#10530,-1) +signature_contains_type(#10009,#10530,0) +signature_parameter_name(#10530,0,"value") +signature_contains_type(#10009,#10530,1) +signature_parameter_name(#10530,1,"index") +signature_contains_type(#10271,#10530,2) +signature_parameter_name(#10530,2,"array") +signature_types(#10529,0,"(callbackfn: (value: number, index: number, array: number[]) => boole...",0,2) +signature_contains_type(#10022,#10529,-1) +signature_contains_type(#10284,#10529,0) +signature_parameter_name(#10529,0,"callbackfn") +signature_contains_type(#10002,#10529,1) +signature_parameter_name(#10529,1,"thisArg") +signature_types(#10528,0,"(value: number, index: number, array: number[]): void",0,3) +signature_contains_type(#10072,#10528,-1) +signature_contains_type(#10009,#10528,0) +signature_parameter_name(#10528,0,"value") +signature_contains_type(#10009,#10528,1) +signature_parameter_name(#10528,1,"index") +signature_contains_type(#10271,#10528,2) +signature_parameter_name(#10528,2,"array") +signature_types(#10527,0,"(callbackfn: (value: number, index: number, array: number[]) => void,...",0,2) +signature_contains_type(#10072,#10527,-1) +signature_contains_type(#10286,#10527,0) +signature_parameter_name(#10527,0,"callbackfn") +signature_contains_type(#10002,#10527,1) +signature_parameter_name(#10527,1,"thisArg") +signature_types(#10526,0,"(value: number, index: number, array: number[]): U",0,3) +signature_contains_type(#10075,#10526,-1) +signature_contains_type(#10009,#10526,0) +signature_parameter_name(#10526,0,"value") +signature_contains_type(#10009,#10526,1) +signature_parameter_name(#10526,1,"index") +signature_contains_type(#10271,#10526,2) +signature_parameter_name(#10526,2,"array") +signature_types(#10525,0,"(callbackfn: (value: number, index: number, array: number[]) => U,...",1,2) +signature_contains_type(#10076,#10525,-1) +signature_parameter_name(#10525,0,"U") +signature_contains_type(#10288,#10525,1) +signature_parameter_name(#10525,1,"callbackfn") +signature_contains_type(#10002,#10525,2) +signature_parameter_name(#10525,2,"thisArg") +signature_types(#10522,0,"(callbackfn: (value: number, index: number, array: ...",1,2) +signature_contains_type(#10080,#10522,-1) +signature_contains_type(#10009,#10522,0) +signature_parameter_name(#10522,0,"S") +signature_contains_type(#10284,#10522,1) +signature_parameter_name(#10522,1,"callbackfn") +signature_contains_type(#10002,#10522,2) +signature_parameter_name(#10522,2,"thisArg") +signature_types(#10524,0,"(value: number, index: number, array: number[]): any",0,3) +signature_contains_type(#10002,#10524,-1) +signature_contains_type(#10009,#10524,0) +signature_parameter_name(#10524,0,"value") +signature_contains_type(#10009,#10524,1) +signature_parameter_name(#10524,1,"index") +signature_contains_type(#10271,#10524,2) +signature_parameter_name(#10524,2,"array") +signature_types(#10523,0,"(callbackfn: (value: number, index: number, array: number[]) => any, ...",0,2) +signature_contains_type(#10271,#10523,-1) +signature_contains_type(#10290,#10523,0) +signature_parameter_name(#10523,0,"callbackfn") +signature_contains_type(#10002,#10523,1) +signature_parameter_name(#10523,1,"thisArg") +signature_types(#10521,0,"(previousValue: number, currentValue: number, currentIndex: number, a...",0,4) +signature_contains_type(#10009,#10521,-1) +signature_contains_type(#10009,#10521,0) +signature_parameter_name(#10521,0,"previousValue") +signature_contains_type(#10009,#10521,1) +signature_parameter_name(#10521,1,"currentValue") +signature_contains_type(#10009,#10521,2) +signature_parameter_name(#10521,2,"currentIndex") +signature_contains_type(#10271,#10521,3) +signature_parameter_name(#10521,3,"array") +signature_types(#10517,0,"(callbackfn: (previousValue: number, currentValue: number, currentInd...",0,1) +signature_contains_type(#10009,#10517,-1) +signature_contains_type(#10292,#10517,0) +signature_parameter_name(#10517,0,"callbackfn") +signature_types(#10518,0,"(callbackfn: (previousValue: number, currentValue: number, currentInd...",0,2) +signature_contains_type(#10009,#10518,-1) +signature_contains_type(#10292,#10518,0) +signature_parameter_name(#10518,0,"callbackfn") +signature_contains_type(#10009,#10518,1) +signature_parameter_name(#10518,1,"initialValue") +signature_types(#10520,0,"(previousValue: U, currentValue: number, currentIndex: number, array:...",0,4) +signature_contains_type(#10075,#10520,-1) +signature_contains_type(#10075,#10520,0) +signature_parameter_name(#10520,0,"previousValue") +signature_contains_type(#10009,#10520,1) +signature_parameter_name(#10520,1,"currentValue") +signature_contains_type(#10009,#10520,2) +signature_parameter_name(#10520,2,"currentIndex") +signature_contains_type(#10271,#10520,3) +signature_parameter_name(#10520,3,"array") +signature_types(#10519,0,"(callbackfn: (previousValue: U, currentValue: number, currentIndex...",1,2) +signature_contains_type(#10075,#10519,-1) +signature_parameter_name(#10519,0,"U") +signature_contains_type(#10293,#10519,1) +signature_parameter_name(#10519,1,"callbackfn") +signature_contains_type(#10075,#10519,2) +signature_parameter_name(#10519,2,"initialValue") +signature_types(#10541,0,"(): void",0,0) +signature_contains_type(#10072,#10541,-1) +signature_types(#10542,1,"new (): Class",0,0) +signature_contains_type(#10000,#10542,-1) +number_index_type(#10016,#10008) +number_index_type(#10051,#10002) +number_index_type(#10058,#10056) +number_index_type(#10055,#10053) +number_index_type(#10030,#10029) +number_index_type(#10116,#10029) +number_index_type(#10137,#10029) +number_index_type(#10029,#10008) +number_index_type(#10028,#10026) +number_index_type(#10145,#10029) +number_index_type(#10166,#10029) +number_index_type(#10026,#10008) +number_index_type(#10014,#10008) +number_index_type(#10008,#10008) +number_index_type(#10213,#10008) +number_index_type(#10080,#10079) +number_index_type(#10223,#10008) +number_index_type(#10244,#10008) +number_index_type(#10076,#10075) +number_index_type(#10202,#10008) +number_index_type(#10271,#10009) +base_type_names(#10203,#10015) +base_type_names(#10214,#10015) +self_types(#10001,#10000) +self_types(#10005,#10004) +self_types(#10007,#10006) +self_types(#10018,#10017) +self_types(#10038,#10037) +self_types(#10042,#10041) +self_types(#10015,#10055) +self_types(#10027,#10058) +self_types(#10200,#10199) +self_types(#10203,#10202) +self_types(#10205,#10204) +self_types(#10214,#10213) diff --git a/javascript/extractor/tests/ts-full/output/trap/tst.ts.trap b/javascript/extractor/tests/ts-full/output/trap/tst.ts.trap new file mode 100644 index 00000000000..d3de2efe8b4 --- /dev/null +++ b/javascript/extractor/tests/ts-full/output/trap/tst.ts.trap @@ -0,0 +1,917 @@ +#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;257" +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;283" +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;62" +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;238" +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;284" +ast_node_type(#20129,#20131) +literals("Class","Class",#20129) +bind(#20129,#20005) +#20132=@"signature;239" +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/input/arrayBindingPattern.ts b/javascript/extractor/tests/ts/input/arrayBindingPattern.ts new file mode 100644 index 00000000000..8fe59a7a891 --- /dev/null +++ b/javascript/extractor/tests/ts/input/arrayBindingPattern.ts @@ -0,0 +1 @@ +let [x,y] = [1,2] diff --git a/javascript/extractor/tests/ts/input/badimport.ts b/javascript/extractor/tests/ts/input/badimport.ts new file mode 100644 index 00000000000..da32b145b1f --- /dev/null +++ b/javascript/extractor/tests/ts/input/badimport.ts @@ -0,0 +1 @@ +import n = 5; diff --git a/javascript/extractor/tests/ts/input/bindingpattern.ts b/javascript/extractor/tests/ts/input/bindingpattern.ts new file mode 100644 index 00000000000..49345ff496e --- /dev/null +++ b/javascript/extractor/tests/ts/input/bindingpattern.ts @@ -0,0 +1 @@ +function foo({x, y}) {} diff --git a/javascript/extractor/tests/ts/input/bom.ts b/javascript/extractor/tests/ts/input/bom.ts new file mode 100644 index 00000000000..68264e1ab71 --- /dev/null +++ b/javascript/extractor/tests/ts/input/bom.ts @@ -0,0 +1 @@ +42 diff --git a/javascript/extractor/tests/ts/input/classes.ts b/javascript/extractor/tests/ts/input/classes.ts new file mode 100644 index 00000000000..cb268d8e29d --- /dev/null +++ b/javascript/extractor/tests/ts/input/classes.ts @@ -0,0 +1,2 @@ +abstract class C extends D, implements E + {} diff --git a/javascript/extractor/tests/ts/input/comments.ts b/javascript/extractor/tests/ts/input/comments.ts new file mode 100644 index 00000000000..b9c9ffddf1a --- /dev/null +++ b/javascript/extractor/tests/ts/input/comments.ts @@ -0,0 +1,4 @@ +// c1 +a /* b */ + c // d +/* e */ +// f \ No newline at end of file diff --git a/javascript/extractor/tests/ts/input/conditionalTypes.ts b/javascript/extractor/tests/ts/input/conditionalTypes.ts new file mode 100644 index 00000000000..07d175d1d5c --- /dev/null +++ b/javascript/extractor/tests/ts/input/conditionalTypes.ts @@ -0,0 +1,102 @@ +namespace ConditionalTypes1 { + type TypeName = + T extends string ? "string" : + T extends number ? "number" : + T extends boolean ? "boolean" : + T extends undefined ? "undefined" : + T extends Function ? "function" : + "object"; + + type T0 = TypeName; // "string" + type T1 = TypeName<"a">; // "string" + type T2 = TypeName; // "boolean" + type T3 = TypeName<() => void>; // "function" + type T4 = TypeName; // "object" + + + type T10 = TypeName void)>; // "string" | "function" + type T12 = TypeName; // "string" | "object" | "undefined" + type T11 = TypeName; // "object" + + type BoxedValue = { value: T }; + type BoxedArray = { array: T[] }; + type Boxed = T extends any[] ? BoxedArray : BoxedValue; + + type T20 = Boxed; // BoxedValue; + type T21 = Boxed; // BoxedArray; + type T22 = Boxed; // BoxedValue | BoxedArray; + + type Diff = T extends U ? never : T; // Remove types from T that are assignable to U + type Filter = T extends U ? T : never; // Remove types from T that are not assignable to U + + type T30 = Diff<"a" | "b" | "c" | "d", "a" | "c" | "f">; // "b" | "d" + type T31 = Filter<"a" | "b" | "c" | "d", "a" | "c" | "f">; // "a" | "c" + type T32 = Diff void), Function>; // string | number + type T33 = Filter void), Function>; // () => void + + type NonNullable = Diff; // Remove null and undefined from T + + type T34 = NonNullable; // string | number + type T35 = NonNullable; // string | string[] + + function f1(x: T, y: NonNullable) { + x = y; // Ok + } + + function f2(x: T, y: NonNullable) { + x = y; // Ok + let s2: string = y; // Ok + } + + type FunctionPropertyNames = { [K in keyof T]: T[K] extends Function ? K : never }[keyof T]; + type FunctionProperties = Pick>; + + type NonFunctionPropertyNames = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T]; + type NonFunctionProperties = Pick>; + + interface Part { + id: number; + name: string; + subparts: Part[]; + updatePart(newName: string): void; + } + + type T40 = FunctionPropertyNames; // "updatePart" + type T41 = NonFunctionPropertyNames; // "id" | "name" | "subparts" + type T42 = FunctionProperties; // { updatePart(newName: string): void } + type T43 = NonFunctionProperties; // { id: number, name: string, subparts: Part[] } + + type ReturnType = T extends (...args: any[]) => infer R ? R : any; +} + +namespace ConditionalTypes2 { + type Unpacked = + T extends (infer U)[] ? U : + T extends (...args: any[]) => infer U ? U : + T extends Promise ? U : + T; + + type T0 = Unpacked; // string + type T1 = Unpacked; // string + type T2 = Unpacked<() => string>; // string + type T3 = Unpacked>; // string + type T4 = Unpacked[]>; // Promise + type T5 = Unpacked[]>>; // string + + type Foo = T extends { a: infer U, b: infer U } ? U : never; + type T10 = Foo<{ a: string, b: string }>; // string + type T11 = Foo<{ a: string, b: number }>; // string | number + + type Bar = T extends { a: (x: infer U) => void, b: (x: infer U) => void } ? U : never; + type T20 = Bar<{ a: (x: string) => void, b: (x: string) => void }>; // string + type T21 = Bar<{ a: (x: string) => void, b: (x: number) => void }>; // string & number + + declare function foo(x: string): number; + declare function foo(x: number): string; + declare function foo(x: string | number): string | number; + type T30 = ReturnType; // string | number + + type AnyFunction = (...args: any[]) => any; + type ReturnType = T extends (...args: any[]) => infer R ? R : any; +} + diff --git a/javascript/extractor/tests/ts/input/ctordecl.ts b/javascript/extractor/tests/ts/input/ctordecl.ts new file mode 100644 index 00000000000..ccc7aceb10e --- /dev/null +++ b/javascript/extractor/tests/ts/input/ctordecl.ts @@ -0,0 +1,5 @@ +class A { + y = 42; + constructor(x:string); + constructor(x:any) {} +} \ No newline at end of file diff --git a/javascript/extractor/tests/ts/input/declareClass.ts b/javascript/extractor/tests/ts/input/declareClass.ts new file mode 100644 index 00000000000..a32f6064ae9 --- /dev/null +++ b/javascript/extractor/tests/ts/input/declareClass.ts @@ -0,0 +1 @@ +declare class C {} diff --git a/javascript/extractor/tests/ts/input/decorators.ts b/javascript/extractor/tests/ts/input/decorators.ts new file mode 100644 index 00000000000..b2523d3fafc --- /dev/null +++ b/javascript/extractor/tests/ts/input/decorators.ts @@ -0,0 +1,14 @@ +@classDecorator +class Class { + @methodDecorator + method(): number { return this.field } + + @fieldDecorator + field: number; +} + +@functionDecorator +function fun() {} + +@classDecorator2 +export class Class2 {} diff --git a/javascript/extractor/tests/ts/input/emptydecls.ts b/javascript/extractor/tests/ts/input/emptydecls.ts new file mode 100644 index 00000000000..34f2287d9a0 --- /dev/null +++ b/javascript/extractor/tests/ts/input/emptydecls.ts @@ -0,0 +1 @@ +var; diff --git a/javascript/extractor/tests/ts/input/enum.ts b/javascript/extractor/tests/ts/input/enum.ts new file mode 100644 index 00000000000..a441d412dda --- /dev/null +++ b/javascript/extractor/tests/ts/input/enum.ts @@ -0,0 +1,18 @@ +enum Color { red = 1, green, blue } + +declare enum DeclaredEnum { a, b } +const enum ConstEnum { a = 1+2, b } +declare const enum DeclaredConstEnum { a, b } + +function foo(x) { return x; } + +enum ComplexInitializer { + a = foo(1 + 2) +} + +enum StringLiteralEnumMember { + "a" = 2, + b = a +} + +var x : StringLiteralEnumMember.a = 2 diff --git a/javascript/extractor/tests/ts/input/export.ts b/javascript/extractor/tests/ts/input/export.ts new file mode 100644 index 00000000000..9993267c748 --- /dev/null +++ b/javascript/extractor/tests/ts/input/export.ts @@ -0,0 +1,5 @@ +export const foo = 42; + +export class C {} + +export default function f() {}; diff --git a/javascript/extractor/tests/ts/input/export2.ts b/javascript/extractor/tests/ts/input/export2.ts new file mode 100644 index 00000000000..7a4e8a723a4 --- /dev/null +++ b/javascript/extractor/tests/ts/input/export2.ts @@ -0,0 +1 @@ +export default 42; diff --git a/javascript/extractor/tests/ts/input/exportasnamespace.d.ts b/javascript/extractor/tests/ts/input/exportasnamespace.d.ts new file mode 100644 index 00000000000..ed79066ec3e --- /dev/null +++ b/javascript/extractor/tests/ts/input/exportasnamespace.d.ts @@ -0,0 +1,2 @@ +export declare function foo(); +export as namespace bar; diff --git a/javascript/extractor/tests/ts/input/exportassign.ts b/javascript/extractor/tests/ts/input/exportassign.ts new file mode 100644 index 00000000000..b0fde936c1a --- /dev/null +++ b/javascript/extractor/tests/ts/input/exportassign.ts @@ -0,0 +1 @@ +export = 42; diff --git a/javascript/extractor/tests/ts/input/exprs.ts b/javascript/extractor/tests/ts/input/exprs.ts new file mode 100644 index 00000000000..490bbe728a2 --- /dev/null +++ b/javascript/extractor/tests/ts/input/exprs.ts @@ -0,0 +1,5 @@ +function f(z) { + let x, y; + x, y; + [x, y] = z; +} \ No newline at end of file diff --git a/javascript/extractor/tests/ts/input/externalmodule.ts b/javascript/extractor/tests/ts/input/externalmodule.ts new file mode 100644 index 00000000000..f2bccf55456 --- /dev/null +++ b/javascript/extractor/tests/ts/input/externalmodule.ts @@ -0,0 +1,9 @@ +declare module "X" { + module M { + export interface I {} + } + interface M { + method(): M.I; + } + export = M; +} diff --git a/javascript/extractor/tests/ts/input/functiondecorators.ts b/javascript/extractor/tests/ts/input/functiondecorators.ts new file mode 100644 index 00000000000..2c191f7bb3b --- /dev/null +++ b/javascript/extractor/tests/ts/input/functiondecorators.ts @@ -0,0 +1,15 @@ +declare var A : any; +declare var B : any; +declare var C : any; + +class C { + m1(none) {} + m2(@A a) {} + m3(@A @B ab) {} + + m4(none, @A a) {} + m5(none, @A @B ab) {} + + m6(@A a, @B b) {} + m7(@A a, @B @C bc) {} +} diff --git a/javascript/extractor/tests/ts/input/hello.ts b/javascript/extractor/tests/ts/input/hello.ts new file mode 100644 index 00000000000..d61463de5d7 --- /dev/null +++ b/javascript/extractor/tests/ts/input/hello.ts @@ -0,0 +1,5 @@ +function greeter(person: string) { + return "Hello, " + person + "!"; +} + +alert(greeter("world")); diff --git a/javascript/extractor/tests/ts/input/importExport.ts b/javascript/extractor/tests/ts/input/importExport.ts new file mode 100644 index 00000000000..8ad438ec915 --- /dev/null +++ b/javascript/extractor/tests/ts/input/importExport.ts @@ -0,0 +1,3 @@ +import * as Something from 'somewhere'; + +export import importExport = Something.thingy; diff --git a/javascript/extractor/tests/ts/input/importassign.ts b/javascript/extractor/tests/ts/input/importassign.ts new file mode 100644 index 00000000000..d3e5ca57bd3 --- /dev/null +++ b/javascript/extractor/tests/ts/input/importassign.ts @@ -0,0 +1 @@ +import x = require("./exportassign"); diff --git a/javascript/extractor/tests/ts/input/interfaces.ts b/javascript/extractor/tests/ts/input/interfaces.ts new file mode 100644 index 00000000000..e462a9b7b16 --- /dev/null +++ b/javascript/extractor/tests/ts/input/interfaces.ts @@ -0,0 +1,11 @@ +interface MyInterface { + foo(); + bar(x: number): string; + field: number; +} + +namespace Foo { + export interface I { + bar(); + } +} diff --git a/javascript/extractor/tests/ts/input/invalidModuleSpecifier.ts b/javascript/extractor/tests/ts/input/invalidModuleSpecifier.ts new file mode 100644 index 00000000000..092489b986e --- /dev/null +++ b/javascript/extractor/tests/ts/input/invalidModuleSpecifier.ts @@ -0,0 +1 @@ +import * as x from `x`; diff --git a/javascript/extractor/tests/ts/input/klee-binary-file.ts b/javascript/extractor/tests/ts/input/klee-binary-file.ts new file mode 100644 index 0000000000000000000000000000000000000000..05aaa7636f63d55df8d43f04957a33dc87cb05d5 GIT binary patch literal 1412 zcmYk*=~mT16okLZk4G|(PHjp+%h`889+7Kb);u+G02oV=s zNE;$VTx=t4h%k?Nz8ph{_#j>&emw`PAY(s-S$3B~h5C7ed+)VU|BjAw;~CzetxP!Yu!mLWsDyLD~>umfNKeA};QbHbjU# E01J#odH?_b literal 0 HcmV?d00001 diff --git a/javascript/extractor/tests/ts/input/let.ts b/javascript/extractor/tests/ts/input/let.ts new file mode 100644 index 00000000000..9943a1cab4b --- /dev/null +++ b/javascript/extractor/tests/ts/input/let.ts @@ -0,0 +1,3 @@ +var varX = 5; +let letX = 6; +const constX = 7; diff --git a/javascript/extractor/tests/ts/input/mappedTypeModifiers.ts b/javascript/extractor/tests/ts/input/mappedTypeModifiers.ts new file mode 100644 index 00000000000..69e436afdd3 --- /dev/null +++ b/javascript/extractor/tests/ts/input/mappedTypeModifiers.ts @@ -0,0 +1,11 @@ +namespace MappedTypeModifiers { + type MutableRequired = { -readonly [P in keyof T]-?: T[P] }; // Remove readonly and ? + type ReadonlyPartial = { +readonly [P in keyof T]+?: T[P] }; // Add readonly and ? + + type ReadonlyPartial2 = { readonly [P in keyof T]?: T[P] }; // Add readonly and ? + + type Required = { [P in keyof T]-?: T[P] }; + + type Foo = { a?: string }; // Same as { a?: string | undefined } + type Bar = Required; // Same as { a: string } +} diff --git a/javascript/extractor/tests/ts/input/mpeg-stream-fragment.ts b/javascript/extractor/tests/ts/input/mpeg-stream-fragment.ts new file mode 100644 index 0000000000000000000000000000000000000000..0ac7ec758bdf65656a71788c8ff6ccdb684ad449 GIT binary patch literal 376 zcmZ>FU@%z5@P8-(28Ip13=9Vu7#J8IDEv(N+U@S3V6bq|yPbh)gAfBF(Af_HJ}^jw J2xrgf`v5DtQ@j8G literal 0 HcmV?d00001 diff --git a/javascript/extractor/tests/ts/input/namespaces.ts b/javascript/extractor/tests/ts/input/namespaces.ts new file mode 100644 index 00000000000..2f56d55e7b4 --- /dev/null +++ b/javascript/extractor/tests/ts/input/namespaces.ts @@ -0,0 +1,7 @@ +namespace M { + export namespace N { + export let x = 42; + } +} + +import x = M.N.x; diff --git a/javascript/extractor/tests/ts/input/nestedNamespace.ts b/javascript/extractor/tests/ts/input/nestedNamespace.ts new file mode 100644 index 00000000000..086365cef80 --- /dev/null +++ b/javascript/extractor/tests/ts/input/nestedNamespace.ts @@ -0,0 +1,8 @@ +namespace A.B {} +namespace A.B.C {} + +namespace X { + export namespace Y.Z {} + + namespace W.Q {} +} diff --git a/javascript/extractor/tests/ts/input/nobody.ts b/javascript/extractor/tests/ts/input/nobody.ts new file mode 100644 index 00000000000..9d5e6a776a2 --- /dev/null +++ b/javascript/extractor/tests/ts/input/nobody.ts @@ -0,0 +1,29 @@ +// Ambient functions +declare function f(); + +abstract class C { + // Abstract methods + abstract h(); + + // Overload signatures + g(x: number): number; + g(x: string): string; + g(x: any) {} + + // Abstract fields + abstract x: number; +} + +// Same but ambient +declare abstract class D { + // Abstract methods + abstract h(); + + // Overload signatures + g(x: number): number; + g(x: string): string; + g(x: any) {} + + // Abstract fields + abstract x: number; +} diff --git a/javascript/extractor/tests/ts/input/objectLiteralAccessor.ts b/javascript/extractor/tests/ts/input/objectLiteralAccessor.ts new file mode 100644 index 00000000000..45e193bda66 --- /dev/null +++ b/javascript/extractor/tests/ts/input/objectLiteralAccessor.ts @@ -0,0 +1,4 @@ +var x = { + get foo() {return 1}, + set foo(v) {} +} diff --git a/javascript/extractor/tests/ts/input/omitted.ts b/javascript/extractor/tests/ts/input/omitted.ts new file mode 100644 index 00000000000..1ce15b60dfe --- /dev/null +++ b/javascript/extractor/tests/ts/input/omitted.ts @@ -0,0 +1 @@ +[, ,1]; \ No newline at end of file diff --git a/javascript/extractor/tests/ts/input/regexp.ts b/javascript/extractor/tests/ts/input/regexp.ts new file mode 100644 index 00000000000..5f0e8e4849b --- /dev/null +++ b/javascript/extractor/tests/ts/input/regexp.ts @@ -0,0 +1 @@ +/a/ \ No newline at end of file diff --git a/javascript/extractor/tests/ts/input/templates.ts b/javascript/extractor/tests/ts/input/templates.ts new file mode 100644 index 00000000000..27a7c3ec894 --- /dev/null +++ b/javascript/extractor/tests/ts/input/templates.ts @@ -0,0 +1 @@ +`url("${ctx.expected.image}")` diff --git a/javascript/extractor/tests/ts/input/thisparameter.ts b/javascript/extractor/tests/ts/input/thisparameter.ts new file mode 100644 index 00000000000..3dddcabcd99 --- /dev/null +++ b/javascript/extractor/tests/ts/input/thisparameter.ts @@ -0,0 +1,14 @@ +function declaration(this: void, x: number) {} + +var f = function(this: string, x: number) {} + +declare function ambient(this: string, x: number); + +class C { + member(this: C) {} +} + +interface I { + method(this: I); +} + diff --git a/javascript/extractor/tests/ts/input/trust-store-file.ts b/javascript/extractor/tests/ts/input/trust-store-file.ts new file mode 100644 index 0000000000000000000000000000000000000000..b3394237f0d31f9c1a3c0526409278561aed4d69 GIT binary patch literal 1589 zcmezO_TO6u1_mZLW=qb=OwB7{U|_V$mS6t+jPs4_r)5 zjEoFj21i9%Re8> zG^e(%F224+WF7O>$u6#c8&q2}FRR`S-TdHmd*xkyt7+Y}rT71)NpK37rI$VyGhJo9 z?Xbh+f_GPSuc+vp<-Ps*QqAWwrM*&<4)3&QJ8h*=*ku>3x_MIFP1&@BWd4gfFRM4d z_F;0GsXU|UA8%JpO+QO$i%sY)mY+}epITJ^U*ap{!dEZ<3ZHrGG(qV@?_#q*GnVx4 zUvy>Fua3lPuNPR(+-zCN_I2W}+)l$?GqYsu-4~tP;FVx_C#i`o;Ci>vf?ul&&i>`! z@Ps2@HeToCiWbFkdnRT^21eu%0!AS)gcuoE_4*?>>i6tiq!;*kvAe9aP>)S8+s8B0 zVt1%d-85_Ixp%E4ZCrQ1pMQ1zVx99=4*LaXz4;YxvlwQjJN|NJ&e1S%TvSnc_V&dO z+p^UDv-nPYV(ve2!pYi&-{!yOch*_n=veee%h&jT#O+(jPqqhzY>qB?UVQdooa86T z36@uGak%%Kn4xG=X>hUQ%QVJjyC*K;UDGQcP3gK38MVNBY)mjg4Bc`$wL=|0;cR zjiT#nXXmC)cr`a7YX zhq=<1SlEppE2~UmF59{5>vkKD4HrW7IySbx-`xAmF)Q@istLt?(_c;LoELfU?Ww3+ z5!JhTgqG*t?LRGc)7Ce%Ye%7Ws6Wx=e0)!jy*8UyN-txMS zw*H-Vl}UEW?C&`9Lgq&2PkX0iZ7O1^extnlx96_5C6_oO9Hx1&UH_?8H|Ng|yI5vb zhlzLAl(U|yn66dPeM-pOars@TlbVla&&X8RX};%_@Ku(D4_pJ3%QsEcPmKQbJLeGF z659~g!ds;-l>*8JxBfNcPCg-_+T&~Ief`0%#nI)rL-(I*KHIqFti%0J3zw|T|99xY z1;!+&x&QT8r+k?H`S=%JF~Pi@fhv*LzsasT++zPnx#@VztM8%r{qLRow~GawQHMMcYQcSgP!3Q1zX2wMA}S)CYeyp7&o_+LjcovD@is v>TqvwfD&8q*{T+|x|>I@dn<8;dv9rrIq=-V^;Lyb3-4n#quQt8Dej#BT)=r- literal 0 HcmV?d00001 diff --git a/javascript/extractor/tests/ts/input/tryfinally.ts b/javascript/extractor/tests/ts/input/tryfinally.ts new file mode 100644 index 00000000000..fc1fdd27956 --- /dev/null +++ b/javascript/extractor/tests/ts/input/tryfinally.ts @@ -0,0 +1,7 @@ +function foo() { + var x = 5; + try { + } finally { + return x; + } +} diff --git a/javascript/extractor/tests/ts/input/tsx.tsx b/javascript/extractor/tests/ts/input/tsx.tsx new file mode 100644 index 00000000000..21bafc9c3eb --- /dev/null +++ b/javascript/extractor/tests/ts/input/tsx.tsx @@ -0,0 +1,4 @@ +
+ + +
diff --git a/javascript/extractor/tests/ts/input/typeannotations.ts b/javascript/extractor/tests/ts/input/typeannotations.ts new file mode 100644 index 00000000000..83a40955c45 --- /dev/null +++ b/javascript/extractor/tests/ts/input/typeannotations.ts @@ -0,0 +1,65 @@ +interface Point { x: number; y: number } + +namespace N { + export interface I {} + export interface J {} +} + +var anyVar: any; +var objectVar: object; +var numberVar: number; +var stringVar: string; +var booleanVar: boolean; +var nullVar: null; +var undefinedVar: undefined; +var voidVar: void; +var neverVar: never; +var symbolVar: symbol; +var objectVar: { x: number; } +var nestedObjectVar: { x: { y: number } } +var arrayVar: number[] +var stringObjectVar: String +var pointVar: Point +var rawFunctionVar: Function +var varVar: x11 +var genericArrayVar: Array +var nestedGenericVar: Foo> +var callSigVar: () => number; +var constructSigVar: new () => Point; +var callSigVoidVar: () => void; +var callSigNeverVar: () => never; +var unionVar: number | string; +var stringLiteralVar: "literal"; +var trueVar: true; +var falseVar: false; +var intLiteralVar: 100; +var doubleLiteralVar: 100.50; +var tupleVar: [string, number] +var longUnionVar: null | 1 | "two" | [3] +var intersectVar: Foo & Bar; +var genericCallSigVar: (x: T) => T; +var genericConstructSigVar: new (x: T) => T; +var keyofVar: keyof Point +var indexedVar: Point["x"] +var typeofVar: typeof x31 +var mappedVar: { [K in keyof Point]: any } +var parenthesizedVar: (number); +var namespaceTypeVar: N.I; +var namespaceGenericTypeVar: N.J; + +interface GenericInterface { + field: T; + method(x: T): T; +} +abstract class GenericClass implements GenericInterface { + field: T + abstract method(x:T): T; +} + +class Fish {} +class Bird {} +function isFish(pet : Fish | Bird): pet is Fish {} + +class ThisTypes { + foo(x: number): this { return this; } +} diff --git a/javascript/extractor/tests/ts/input/unicode.ts b/javascript/extractor/tests/ts/input/unicode.ts new file mode 100644 index 00000000000..771cef907e8 --- /dev/null +++ b/javascript/extractor/tests/ts/input/unicode.ts @@ -0,0 +1,3 @@ +// Ø α +// ࢢ +// ð„ž diff --git a/javascript/extractor/tests/ts/input/unicodeId.ts b/javascript/extractor/tests/ts/input/unicodeId.ts new file mode 100644 index 00000000000..2bca0472130 --- /dev/null +++ b/javascript/extractor/tests/ts/input/unicodeId.ts @@ -0,0 +1 @@ +var æ‰èƒ½ã‚½Ð«â…¨è’¤éƒ³à¤°à¥à¤•à¥à¤¡à¥à¤°à¤¾Ã¼Ä±ÅŸÄŸÄ°liيونيكودöÄüßæ‰èƒ½ã‚½Ð«â…¨è’¤éƒ³à¤°à¥à¤•à¥à¤¡à¥à¤°à¤¾Ã¼Ä±ÅŸÄŸÄ°liيونيكودöÄüßAbcd123 = 1; diff --git a/javascript/extractor/tests/ts/input/uninstantiatedNamespace.ts b/javascript/extractor/tests/ts/input/uninstantiatedNamespace.ts new file mode 100644 index 00000000000..a8de3fd489f --- /dev/null +++ b/javascript/extractor/tests/ts/input/uninstantiatedNamespace.ts @@ -0,0 +1,25 @@ +namespace Wrapper { + + namespace Empty {} + namespace Comments { + // foo + /* bar */ + } + namespace Outer { + namespace Inner {} + } + namespace Outer2 { + export namespace Inner {} + } + namespace Interfaces { + interface I { + x: number; + foo(): number; + } + } + + namespace EmptyStatement {;} + namespace EmptyBlock {{}} + + var x = [Empty, Comments, Outer, Outer2, Interfaces, EmptyStatement, EmptyBlock] +} diff --git a/javascript/extractor/tests/ts/input/xmlfile-utf16be.ts b/javascript/extractor/tests/ts/input/xmlfile-utf16be.ts new file mode 100644 index 0000000000000000000000000000000000000000..f5af8b3c5f1a2d86482222aa2530f46ea3782238 GIT binary patch literal 62 zcmZRuVF+OeW>8?rVMt`iV@PKx1=8sZsSLIZN(|);89-hMkXHu8ML-cd1}+9027Ry| GAR7Qi*$L4A literal 0 HcmV?d00001 diff --git a/javascript/extractor/tests/ts/input/xmlfile-utf16le.ts b/javascript/extractor/tests/ts/input/xmlfile-utf16le.ts new file mode 100644 index 0000000000000000000000000000000000000000..9b3ca0c563ff93a2a07efd485c9c4b809b6f91e1 GIT binary patch literal 62 zcmcCv2w@0jP+-VmNMy)kNM|So(&-GT47LnP4CM?NKwb%uR|dpIKoL6zE(RM0eXt%7 F8vszL3DE!m literal 0 HcmV?d00001 diff --git a/javascript/extractor/tests/ts/input/xmlfile.ts b/javascript/extractor/tests/ts/input/xmlfile.ts new file mode 100644 index 00000000000..f673979bfa0 --- /dev/null +++ b/javascript/extractor/tests/ts/input/xmlfile.ts @@ -0,0 +1,2 @@ + + diff --git a/javascript/extractor/tests/ts/options.json b/javascript/extractor/tests/ts/options.json new file mode 100644 index 00000000000..075583ca1f6 --- /dev/null +++ b/javascript/extractor/tests/ts/options.json @@ -0,0 +1,3 @@ +{ + "experimental": true +} diff --git a/javascript/extractor/tests/ts/output/trap/arrayBindingPattern.ts.trap b/javascript/extractor/tests/ts/output/trap/arrayBindingPattern.ts.trap new file mode 100644 index 00000000000..2b7fba39b8e --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/arrayBindingPattern.ts.trap @@ -0,0 +1,163 @@ +#10000=@"/arrayBindingPattern.ts;sourcefile" +files(#10000,"/arrayBindingPattern.ts","arrayBindingPattern","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,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]"," +") +hasLocation(#20021,#20006) +numlines(#20001,1,1,0) +#20022=* +tokeninfo(#20022,7,#20001,0,"let") +#20023=@"loc,{#10000},1,1,1,3" +locations_default(#20023,#10000,1,1,1,3) +hasLocation(#20022,#20023) +#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=* +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) +#20034=* +tokeninfo(#20034,8,#20001,7,"[") +#20035=@"loc,{#10000},1,13,1,13" +locations_default(#20035,#10000,1,13,1,13) +hasLocation(#20034,#20035) +#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) +#20039=* +tokeninfo(#20039,3,#20001,10,"2") +hasLocation(#20039,#20020) +#20040=* +tokeninfo(#20040,8,#20001,11,"]") +#20041=@"loc,{#10000},1,17,1,17" +locations_default(#20041,#10000,1,17,1,17) +hasLocation(#20040,#20041) +#20042=* +tokeninfo(#20042,0,#20001,12,"") +#20043=@"loc,{#10000},2,1,2,0" +locations_default(#20043,#10000,2,1,2,0) +hasLocation(#20042,#20043) +#20044=* +entry_cfg_node(#20044,#20001) +#20045=@"loc,{#10000},1,1,1,0" +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) +numlines(#10000,1,1,0) +filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/badimport.ts.trap b/javascript/extractor/tests/ts/output/trap/badimport.ts.trap new file mode 100644 index 00000000000..59e82686b6e --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/badimport.ts.trap @@ -0,0 +1,30 @@ +#10000=@"/badimport.ts;sourcefile" +files(#10000,"/badimport.ts","badimport","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,1,1" +locations_default(#20002,#10000,1,1,1,1) +hasLocation(#20001,#20002) +#20003=* +jsParseErrors(#20003,#20001,"Error: Identifier expected.","import n = 5; +") +#20004=@"loc,{#10000},1,12,1,12" +locations_default(#20004,#10000,1,12,1,12) +hasLocation(#20003,#20004) +#20005=* +lines(#20005,#20001,"import n = 5;"," +") +#20006=@"loc,{#10000},1,1,1,13" +locations_default(#20006,#10000,1,1,1,13) +hasLocation(#20005,#20006) +numlines(#20001,1,0,0) +numlines(#10000,1,0,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 new file mode 100644 index 00000000000..1ec2efaa8a0 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/bindingpattern.ts.trap @@ -0,0 +1,176 @@ +#10000=@"/bindingpattern.ts;sourcefile" +files(#10000,"/bindingpattern.ts","bindingpattern","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,2,0" +locations_default(#20002,#10000,1,1,2,0) +hasLocation(#20001,#20002) +#20003=@"var;{foo};{#20000}" +variables(#20003,"foo",#20000) +#20004=* +stmts(#20004,17,#20001,0,"functio ... y}) {}") +#20005=@"loc,{#10000},1,1,1,23" +locations_default(#20005,#10000,1,1,1,23) +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;{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) +#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) +#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) +#20022=* +stmts(#20022,1,#20004,-2,"{}") +#20023=@"loc,{#10000},1,22,1,23" +locations_default(#20023,#10000,1,22,1,23) +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) +#20030=* +tokeninfo(#20030,8,#20001,3,"{") +#20031=@"loc,{#10000},1,14,1,14" +locations_default(#20031,#10000,1,14,1,14) +hasLocation(#20030,#20031) +#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) +#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) +#20038=* +tokeninfo(#20038,8,#20001,8,")") +#20039=@"loc,{#10000},1,20,1,20" +locations_default(#20039,#10000,1,20,1,20) +hasLocation(#20038,#20039) +#20040=* +tokeninfo(#20040,8,#20001,9,"{") +#20041=@"loc,{#10000},1,22,1,22" +locations_default(#20041,#10000,1,22,1,22) +hasLocation(#20040,#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) +#20044=* +tokeninfo(#20044,0,#20001,11,"") +#20045=@"loc,{#10000},2,1,2,0" +locations_default(#20045,#10000,2,1,2,0) +hasLocation(#20044,#20045) +#20046=* +entry_cfg_node(#20046,#20001) +#20047=@"loc,{#10000},1,1,1,0" +locations_default(#20047,#10000,1,1,1,0) +hasLocation(#20046,#20047) +#20048=* +exit_cfg_node(#20048,#20001) +hasLocation(#20048,#20045) +successor(#20004,#20048) +#20049=* +entry_cfg_node(#20049,#20004) +hasLocation(#20049,#20047) +#20050=* +exit_cfg_node(#20050,#20004) +#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) +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 new file mode 100644 index 00000000000..055df232847 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/bom.ts.trap @@ -0,0 +1,53 @@ +#10000=@"/bom.ts;sourcefile" +files(#10000,"/bom.ts","bom","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,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"," +") +hasLocation(#20006,#20004) +numlines(#20001,1,1,0) +#20007=* +tokeninfo(#20007,3,#20001,0,"42") +hasLocation(#20007,#20004) +#20008=* +tokeninfo(#20008,0,#20001,1,"") +#20009=@"loc,{#10000},2,1,2,0" +locations_default(#20009,#10000,2,1,2,0) +hasLocation(#20008,#20009) +#20010=* +entry_cfg_node(#20010,#20001) +#20011=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..a9c8742782f --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/classes.ts.trap @@ -0,0 +1,245 @@ +#10000=@"/classes.ts;sourcefile" +files(#10000,"/classes.ts","classes","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,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"," +") +#20034=@"loc,{#10000},1,1,1,43" +locations_default(#20034,#10000,1,1,1,43) +hasLocation(#20033,#20034) +#20035=* +lines(#20035,#20001," {}"," +") +#20036=@"loc,{#10000},2,1,2,4" +locations_default(#20036,#10000,2,1,2,4) +hasLocation(#20035,#20036) +indentation(#10000,2," ",2) +numlines(#20001,2,2,0) +#20037=* +tokeninfo(#20037,7,#20001,0,"abstract") +#20038=@"loc,{#10000},1,1,1,8" +locations_default(#20038,#10000,1,1,1,8) +hasLocation(#20037,#20038) +#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) +#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) +#20044=* +tokeninfo(#20044,6,#20001,4,"D") +hasLocation(#20044,#20017) +#20045=* +tokeninfo(#20045,8,#20001,5,",") +#20046=@"loc,{#10000},1,27,1,27" +locations_default(#20046,#10000,1,27,1,27) +hasLocation(#20045,#20046) +#20047=* +tokeninfo(#20047,7,#20001,6,"implements") +#20048=@"loc,{#10000},1,29,1,38" +locations_default(#20048,#10000,1,29,1,38) +hasLocation(#20047,#20048) +#20049=* +tokeninfo(#20049,6,#20001,7,"E") +hasLocation(#20049,#20013) +#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) +#20053=* +tokeninfo(#20053,8,#20001,10,">") +#20054=@"loc,{#10000},1,43,1,43" +locations_default(#20054,#10000,1,43,1,43) +hasLocation(#20053,#20054) +#20055=* +tokeninfo(#20055,8,#20001,11,"{") +#20056=@"loc,{#10000},2,3,2,3" +locations_default(#20056,#10000,2,3,2,3) +hasLocation(#20055,#20056) +#20057=* +tokeninfo(#20057,8,#20001,12,"}") +#20058=@"loc,{#10000},2,4,2,4" +locations_default(#20058,#10000,2,4,2,4) +hasLocation(#20057,#20058) +#20059=* +tokeninfo(#20059,0,#20001,13,"") +#20060=@"loc,{#10000},3,1,3,0" +locations_default(#20060,#10000,3,1,3,0) +hasLocation(#20059,#20060) +#20061=* +entry_cfg_node(#20061,#20001) +#20062=@"loc,{#10000},1,1,1,0" +locations_default(#20062,#10000,1,1,1,0) +hasLocation(#20061,#20062) +#20063=* +exit_cfg_node(#20063,#20001) +hasLocation(#20063,#20060) +successor(#20022,#20019) +#20064=* +entry_cfg_node(#20064,#20022) +hasLocation(#20064,#20020) +#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) +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 new file mode 100644 index 00000000000..d544a077e82 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/comments.ts.trap @@ -0,0 +1,126 @@ +#10000=@"/comments.ts;sourcefile" +files(#10000,"/comments.ts","comments","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},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) +#20006=* +exprs(#20006,79,#20005,0,"a") +#20007=@"loc,{#10000},2,1,2,1" +locations_default(#20007,#10000,2,1,2,1) +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) +#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) +#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) +numlines(#20001,4,1,4) +#20027=* +tokeninfo(#20027,6,#20001,0,"a") +hasLocation(#20027,#20007) +next_token(#20012,#20027) +#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) +#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) +#20033=* +entry_cfg_node(#20033,#20001) +#20034=@"loc,{#10000},2,1,2,0" +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) +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 new file mode 100644 index 00000000000..be1b834003d --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap @@ -0,0 +1,10205 @@ +#10000=@"/conditionalTypes.ts;sourcefile" +files(#10000,"/conditionalTypes.ts","conditionalTypes","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,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) +#20048=* +stmts(#20048,35,#20007,0,"type Ty ... bject"";") +#20049=@"loc,{#10000},2,3,8,15" +locations_default(#20049,#10000,2,3,8,15) +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) +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) +#20054=* +typeexprs(#20054,22,#20048,2,"T") +#20055=@"loc,{#10000},2,17,2,17" +locations_default(#20055,#10000,2,17,2,17) +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) +#20140=* +scopes(#20140,1) +scopenodes(#20139,#20140) +scopenesting(#20140,#20011) +#20141=@"var;{arguments};{#20140}" +variables(#20141,"arguments",#20140) +isArgumentsObject(#20141) +#20142=* +typeexprs(#20142,2,#20139,-3,"void") +#20143=@"loc,{#10000},13,28,13,31" +locations_default(#20143,#10000,13,28,13,31) +hasLocation(#20142,#20143) +exprContainers(#20142,#20139) +literals("void","void",#20142) +numlines(#20139,1,1,0) +#20144=* +stmts(#20144,35,#20007,5,"type T4 ... ing[]>;") +#20145=@"loc,{#10000},14,3,14,31" +locations_default(#20145,#10000,14,3,14,31) +hasLocation(#20144,#20145) +stmtContainers(#20144,#20007) +#20146=* +typeexprs(#20146,1,#20144,0,"T4") +#20147=@"loc,{#10000},14,8,14,9" +locations_default(#20147,#10000,14,8,14,9) +hasLocation(#20146,#20147) +enclosingStmt(#20146,#20144) +exprContainers(#20146,#20007) +literals("T4","T4",#20146) +typedecl(#20146,#20019) +#20148=* +typeexprs(#20148,14,#20144,1,"TypeName") +#20149=@"loc,{#10000},14,13,14,30" +locations_default(#20149,#10000,14,13,14,30) +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) +hasLocation(#20150,#20151) +enclosingStmt(#20150,#20144) +exprContainers(#20150,#20007) +literals("TypeName","TypeName",#20150) +typebind(#20150,#20014) +#20152=* +typeexprs(#20152,6,#20148,0,"string[]") +#20153=@"loc,{#10000},14,22,14,29" +locations_default(#20153,#10000,14,22,14,29) +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) +hasLocation(#20154,#20155) +enclosingStmt(#20154,#20144) +exprContainers(#20154,#20007) +literals("string","string",#20154) +#20156=* +stmts(#20156,35,#20007,6,"type T1 ... void)>;") +#20157=@"loc,{#10000},17,3,17,45" +locations_default(#20157,#10000,17,3,17,45) +hasLocation(#20156,#20157) +stmtContainers(#20156,#20007) +#20158=* +typeexprs(#20158,1,#20156,0,"T10") +#20159=@"loc,{#10000},17,8,17,10" +locations_default(#20159,#10000,17,8,17,10) +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) +hasLocation(#20160,#20161) +enclosingStmt(#20160,#20156) +exprContainers(#20160,#20007) +#20162=* +typeexprs(#20162,0,#20160,-1,"TypeName") +#20163=@"loc,{#10000},17,14,17,21" +locations_default(#20163,#10000,17,14,17,21) +hasLocation(#20162,#20163) +enclosingStmt(#20162,#20156) +exprContainers(#20162,#20007) +literals("TypeName","TypeName",#20162) +typebind(#20162,#20014) +#20164=* +typeexprs(#20164,7,#20160,0,"string ... > void)") +#20165=@"loc,{#10000},17,23,17,43" +locations_default(#20165,#10000,17,23,17,43) +hasLocation(#20164,#20165) +enclosingStmt(#20164,#20156) +exprContainers(#20164,#20007) +#20166=* +typeexprs(#20166,2,#20164,0,"string") +#20167=@"loc,{#10000},17,23,17,28" +locations_default(#20167,#10000,17,23,17,28) +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) +hasLocation(#20168,#20169) +enclosingStmt(#20168,#20156) +exprContainers(#20168,#20007) +#20170=* +typeexprs(#20170,23,#20168,0,"() => void") +#20171=@"loc,{#10000},17,33,17,42" +locations_default(#20171,#10000,17,33,17,42) +hasLocation(#20170,#20171) +enclosingStmt(#20170,#20156) +exprContainers(#20170,#20007) +#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) +#20222=* +typeexprs(#20222,21,#20213,1,"{ value: T }") +#20223=@"loc,{#10000},21,24,21,35" +locations_default(#20223,#10000,21,24,21,35) +hasLocation(#20222,#20223) +enclosingStmt(#20222,#20213) +exprContainers(#20222,#20007) +#20224=* +properties(#20224,#20222,0,8,"value: T") +#20225=@"loc,{#10000},21,26,21,33" +locations_default(#20225,#10000,21,26,21,33) +hasLocation(#20224,#20225) +#20226=* +exprs(#20226,0,#20224,0,"value") +#20227=@"loc,{#10000},21,26,21,30" +locations_default(#20227,#10000,21,26,21,30) +hasLocation(#20226,#20227) +enclosingStmt(#20226,#20213) +exprContainers(#20226,#20007) +literals("value","value",#20226) +isAbstractMember(#20224) +#20228=* +typeexprs(#20228,0,#20224,2,"T") +#20229=@"loc,{#10000},21,33,21,33" +locations_default(#20229,#10000,21,33,21,33) +hasLocation(#20228,#20229) +enclosingStmt(#20228,#20213) +exprContainers(#20228,#20007) +literals("T","T",#20228) +typebind(#20228,#20218) +#20230=* +stmts(#20230,35,#20007,10,"type Bo ... T[] };") +#20231=@"loc,{#10000},22,3,22,38" +locations_default(#20231,#10000,22,3,22,38) +hasLocation(#20230,#20231) +stmtContainers(#20230,#20007) +#20232=* +typeexprs(#20232,1,#20230,0,"BoxedArray") +#20233=@"loc,{#10000},22,8,22,17" +locations_default(#20233,#10000,22,8,22,17) +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) +#20236=* +typeexprs(#20236,22,#20230,2,"T") +#20237=@"loc,{#10000},22,19,22,19" +locations_default(#20237,#10000,22,19,22,19) +hasLocation(#20236,#20237) +enclosingStmt(#20236,#20230) +exprContainers(#20236,#20007) +#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) +#20258=* +typeexprs(#20258,28,#20249,1,"T exten ... alue") +#20259=@"loc,{#10000},23,19,23,73" +locations_default(#20259,#10000,23,19,23,73) +hasLocation(#20258,#20259) +enclosingStmt(#20258,#20249) +exprContainers(#20258,#20007) +#20260=* +typeexprs(#20260,0,#20258,0,"T") +#20261=@"loc,{#10000},23,19,23,19" +locations_default(#20261,#10000,23,19,23,19) +hasLocation(#20260,#20261) +enclosingStmt(#20260,#20249) +exprContainers(#20260,#20007) +literals("T","T",#20260) +typebind(#20260,#20254) +#20262=* +typeexprs(#20262,6,#20258,1,"any[]") +#20263=@"loc,{#10000},23,29,23,33" +locations_default(#20263,#10000,23,29,23,33) +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) +hasLocation(#20264,#20265) +enclosingStmt(#20264,#20249) +exprContainers(#20264,#20007) +literals("any","any",#20264) +#20266=* +typeexprs(#20266,14,#20258,2,"BoxedAr ... umber]>") +#20267=@"loc,{#10000},23,37,23,57" +locations_default(#20267,#10000,23,37,23,57) +hasLocation(#20266,#20267) +enclosingStmt(#20266,#20249) +exprContainers(#20266,#20007) +#20268=* +typeexprs(#20268,0,#20266,-1,"BoxedArray") +#20269=@"loc,{#10000},23,37,23,46" +locations_default(#20269,#10000,23,37,23,46) +hasLocation(#20268,#20269) +enclosingStmt(#20268,#20249) +exprContainers(#20268,#20007) +literals("BoxedArray","BoxedArray",#20268) +typebind(#20268,#20024) +#20270=* +typeexprs(#20270,8,#20266,0,"T[number]") +#20271=@"loc,{#10000},23,48,23,56" +locations_default(#20271,#10000,23,48,23,56) +hasLocation(#20270,#20271) +enclosingStmt(#20270,#20249) +exprContainers(#20270,#20007) +#20272=* +typeexprs(#20272,0,#20270,0,"T") +#20273=@"loc,{#10000},23,48,23,48" +locations_default(#20273,#10000,23,48,23,48) +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) +hasLocation(#20274,#20275) +enclosingStmt(#20274,#20249) +exprContainers(#20274,#20007) +literals("number","number",#20274) +#20276=* +typeexprs(#20276,14,#20258,3,"BoxedValue") +#20277=@"loc,{#10000},23,61,23,73" +locations_default(#20277,#10000,23,61,23,73) +hasLocation(#20276,#20277) +enclosingStmt(#20276,#20249) +exprContainers(#20276,#20007) +#20278=* +typeexprs(#20278,0,#20276,-1,"BoxedValue") +#20279=@"loc,{#10000},23,61,23,70" +locations_default(#20279,#10000,23,61,23,70) +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) +hasLocation(#20280,#20281) +enclosingStmt(#20280,#20249) +exprContainers(#20280,#20007) +literals("T","T",#20280) +typebind(#20280,#20254) +#20282=* +stmts(#20282,35,#20007,12,"type T2 ... tring>;") +#20283=@"loc,{#10000},25,3,25,27" +locations_default(#20283,#10000,25,3,25,27) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +#20330=* +typeexprs(#20330,22,#20320,3,"U") +#20331=@"loc,{#10000},29,16,29,16" +locations_default(#20331,#10000,29,16,29,16) +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) +#20350=* +typeexprs(#20350,22,#20343,2,"T") +#20351=@"loc,{#10000},30,15,30,15" +locations_default(#20351,#10000,30,15,30,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) +#20356=* +typeexprs(#20356,28,#20343,1,"T exten ... : never") +#20357=@"loc,{#10000},30,23,30,45" +locations_default(#20357,#10000,30,23,30,45) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +hasLocation(#20380,#20381) +enclosingStmt(#20380,#20366) +exprContainers(#20380,#20007) +literals("c","""c""",#20380) +#20382=* +typeexprs(#20382,3,#20374,3,"""d""") +#20383=@"loc,{#10000},32,37,32,39" +locations_default(#20383,#10000,32,37,32,39) +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) +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) +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) +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) +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) +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) +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) +hasLocation(#20396,#20397) +enclosingStmt(#20396,#20392) +exprContainers(#20396,#20007) +#20398=* +typeexprs(#20398,0,#20396,-1,"Filter") +#20399=@"loc,{#10000},33,14,33,19" +locations_default(#20399,#10000,33,14,33,19) +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) +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) +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) +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) +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) +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) +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) +hasLocation(#20412,#20413) +enclosingStmt(#20412,#20392) +exprContainers(#20412,#20007) +literals("a","""a""",#20412) +#20414=* +typeexprs(#20414,3,#20410,1,"""c""") +#20415=@"loc,{#10000},33,50,33,52" +locations_default(#20415,#10000,33,50,33,52) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +hasLocation(#20434,#20435) +enclosingStmt(#20434,#20418) +exprContainers(#20434,#20007) +#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) +#20462=* +scopes(#20462,1) +scopenodes(#20461,#20462) +scopenesting(#20462,#20011) +#20463=@"var;{arguments};{#20462}" +variables(#20463,"arguments",#20462) +isArgumentsObject(#20463) +#20464=* +typeexprs(#20464,2,#20461,-3,"void") +#20465=@"loc,{#10000},35,46,35,49" +locations_default(#20465,#10000,35,46,35,49) +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) +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) +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) +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) +#20474=* +typeexprs(#20474,22,#20468,2,"T") +#20475=@"loc,{#10000},37,20,37,20" +locations_default(#20475,#10000,37,20,37,20) +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) +#20532=* +exprs(#20532,78,#20525,0,"x") +#20533=@"loc,{#10000},42,18,42,18" +locations_default(#20533,#10000,42,18,42,18) +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) +#20538=* +typeexprs(#20538,0,#20525,-6,"T") +#20539=@"loc,{#10000},42,21,42,21" +locations_default(#20539,#10000,42,21,42,21) +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) +hasLocation(#20540,#20541) +exprContainers(#20540,#20525) +#20542=* +typeexprs(#20542,0,#20540,-1,"NonNullable") +#20543=@"loc,{#10000},42,27,42,37" +locations_default(#20543,#10000,42,27,42,37) +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) +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) +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) +#20566=* +exprs(#20566,78,#20559,0,"x") +#20567=@"loc,{#10000},46,45,46,45" +locations_default(#20567,#10000,46,45,46,45) +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) +#20572=* +typeexprs(#20572,0,#20559,-6,"T") +#20573=@"loc,{#10000},46,48,46,48" +locations_default(#20573,#10000,46,48,46,48) +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) +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) +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) +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) +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) +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) +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) +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) +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) +hasLocation(#20590,#20591) +stmtContainers(#20590,#20559) +#20592=* +scopes(#20592,4) +scopenodes(#20590,#20592) +scopenesting(#20592,#20563) +#20593=@"var;{s2};{#20592}" +variables(#20593,"s2",#20592) +#20594=* +stmts(#20594,2,#20590,0,"x = y;") +#20595=@"loc,{#10000},47,7,47,12" +locations_default(#20595,#10000,47,7,47,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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +#20618=* +typeexprs(#20618,22,#20612,2,"T") +#20619=@"loc,{#10000},51,30,51,30" +locations_default(#20619,#10000,51,30,51,30) +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) +#20662=* +typeexprs(#20662,14,#20653,1,"Pick>") +#20663=@"loc,{#10000},52,32,52,64" +locations_default(#20663,#10000,52,32,52,64) +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) +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) +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) +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) +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) +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) +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) +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) +#20680=* +typeexprs(#20680,22,#20674,2,"T") +#20681=@"loc,{#10000},54,33,54,33" +locations_default(#20681,#10000,54,33,54,33) +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) +#20724=* +typeexprs(#20724,14,#20715,1,"Pick>") +#20725=@"loc,{#10000},55,35,55,70" +locations_default(#20725,#10000,55,35,55,70) +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) +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) +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) +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) +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) +hasLocation(#20734,#20735) +enclosingStmt(#20734,#20715) +exprContainers(#20734,#20007) +literals("T","T",#20734) +typebind(#20734,#20720) +#20736=* +stmts(#20736,34,#20007,30,"interfa ... id;\n }") +#20737=@"loc,{#10000},57,3,62,3" +locations_default(#20737,#10000,57,3,62,3) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +#20770=* +typeexprs(#20770,2,#20764,-3,"void") +#20771=@"loc,{#10000},61,36,61,39" +locations_default(#20771,#10000,61,36,61,39) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +hasLocation(#20806,#20807) +enclosingStmt(#20806,#20804) +exprContainers(#20806,#20007) +literals("T43","T43",#20806) +typedecl(#20806,#20046) +#20808=* +typeexprs(#20808,14,#20804,1,"NonFunc ... s") +#20809=@"loc,{#10000},67,14,67,40" +locations_default(#20809,#10000,67,14,67,40) +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) +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) +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) +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) +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) +#20820=* +typeexprs(#20820,22,#20814,2,"T") +#20821=@"loc,{#10000},69,19,69,19" +locations_default(#20821,#10000,69,19,69,19) +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) +#20832=* +scopes(#20832,1) +scopenodes(#20831,#20832) +scopenesting(#20832,#20827) +#20833=@"var;{args};{#20832}" +variables(#20833,"args",#20832) +#20834=* +exprs(#20834,78,#20831,0,"args") +#20835=@"loc,{#10000},69,38,69,41" +locations_default(#20835,#10000,69,38,69,41) +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) +#20842=* +typeexprs(#20842,6,#20831,-6,"any[]") +#20843=@"loc,{#10000},69,44,69,48" +locations_default(#20843,#10000,69,44,69,48) +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) +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) +hasLocation(#20846,#20847) +enclosingStmt(#20846,#20814) +exprContainers(#20846,#20007) +literals("R","R",#20846) +typebind(#20846,#20828) +#20848=* +typeexprs(#20848,2,#20823,3,"any") +#20849=@"loc,{#10000},69,68,69,70" +locations_default(#20849,#10000,69,68,69,70) +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) +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) +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) +#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) +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) +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) +#20886=* +typeexprs(#20886,6,#20880,1,"(infer U)[]") +#20887=@"loc,{#10000},74,15,74,25" +locations_default(#20887,#10000,74,15,74,25) +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) +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) +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) +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) +#20906=* +scopes(#20906,1) +scopenodes(#20905,#20906) +scopenesting(#20906,#20901) +#20907=@"var;{args};{#20906}" +variables(#20907,"args",#20906) +#20908=* +exprs(#20908,78,#20905,0,"args") +#20909=@"loc,{#10000},75,19,75,22" +locations_default(#20909,#10000,75,19,75,22) +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) +#20916=* +typeexprs(#20916,6,#20905,-6,"any[]") +#20917=@"loc,{#10000},75,25,75,29" +locations_default(#20917,#10000,75,25,75,29) +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) +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) +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) +hasLocation(#20922,#20923) +enclosingStmt(#20922,#20871) +exprContainers(#20922,#20850) +#20924=* +typeexprs(#20924,0,#20922,0,"T") +#20925=@"loc,{#10000},76,5,76,5" +locations_default(#20925,#10000,76,5,76,5) +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) +#20928=* +typeexprs(#20928,14,#20922,1,"Promise") +#20929=@"loc,{#10000},76,15,76,30" +locations_default(#20929,#10000,76,15,76,30) +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) +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) +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) +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) +#20974=* +scopes(#20974,1) +scopenodes(#20973,#20974) +scopenesting(#20974,#20854) +#20975=@"var;{arguments};{#20974}" +variables(#20975,"arguments",#20974) +isArgumentsObject(#20975) +#20976=* +typeexprs(#20976,2,#20973,-3,"string") +#20977=@"loc,{#10000},81,28,81,33" +locations_default(#20977,#10000,81,28,81,33) +hasLocation(#20976,#20977) +exprContainers(#20976,#20973) +literals("string","string",#20976) +numlines(#20973,1,1,0) +#20978=* +stmts(#20978,35,#20850,4,"type T3 ... ring>>;") +#20979=@"loc,{#10000},82,3,82,38" +locations_default(#20979,#10000,82,3,82,38) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +hasLocation(#21008,#21009) +stmtContainers(#21008,#20850) +#21010=* +typeexprs(#21010,1,#21008,0,"T5") +#21011=@"loc,{#10000},84,8,84,9" +locations_default(#21011,#10000,84,8,84,9) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +#21034=* +typeexprs(#21034,22,#21028,2,"T") +#21035=@"loc,{#10000},86,12,86,12" +locations_default(#21035,#10000,86,12,86,12) +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) +#21052=* +properties(#21052,#21041,1,8,"b: infer U") +#21053=@"loc,{#10000},86,41,86,50" +locations_default(#21053,#10000,86,41,86,50) +hasLocation(#21052,#21053) +#21054=* +exprs(#21054,0,#21052,0,"b") +#21055=@"loc,{#10000},86,41,86,41" +locations_default(#21055,#10000,86,41,86,41) +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) +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) +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) +#21118=* +typeexprs(#21118,28,#21109,1,"T exten ... : never") +#21119=@"loc,{#10000},90,17,90,90" +locations_default(#21119,#10000,90,17,90,90) +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) +hasLocation(#21120,#21121) +enclosingStmt(#21120,#21109) +exprContainers(#21120,#20850) +literals("T","T",#21120) +typebind(#21120,#21114) +#21122=* +typeexprs(#21122,21,#21118,1,"{ a: (x ... void }") +#21123=@"loc,{#10000},90,27,90,78" +locations_default(#21123,#10000,90,27,90,78) +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) +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) +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) +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) +#21136=* +typeexprs(#21136,2,#21130,-3,"void") +#21137=@"loc,{#10000},90,48,90,51" +locations_default(#21137,#10000,90,48,90,51) +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) +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) +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) +#21150=* +scopes(#21150,1) +scopenodes(#21149,#21150) +scopenesting(#21150,#21113) +#21151=@"var;{x};{#21150}" +variables(#21151,"x",#21150) +#21152=* +exprs(#21152,78,#21149,0,"x") +#21153=@"loc,{#10000},90,58,90,58" +locations_default(#21153,#10000,90,58,90,58) +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) +#21162=* +typeexprs(#21162,0,#21118,2,"U") +#21163=@"loc,{#10000},90,82,90,82" +locations_default(#21163,#10000,90,82,90,82) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +#21188=* +typeexprs(#21188,2,#21182,-3,"void") +#21189=@"loc,{#10000},91,38,91,41" +locations_default(#21189,#10000,91,38,91,41) +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) +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) +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) +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) +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) +#21204=* +typeexprs(#21204,2,#21198,-3,"void") +#21205=@"loc,{#10000},91,62,91,65" +locations_default(#21205,#10000,91,62,91,65) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +#21230=* +typeexprs(#21230,2,#21224,-3,"void") +#21231=@"loc,{#10000},92,38,92,41" +locations_default(#21231,#10000,92,38,92,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) +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) +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) +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) +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) +#21246=* +typeexprs(#21246,2,#21240,-3,"void") +#21247=@"loc,{#10000},92,62,92,65" +locations_default(#21247,#10000,92,62,92,65) +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) +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) +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) +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) +#21260=* +typeexprs(#21260,2,#21250,-3,"number") +#21261=@"loc,{#10000},94,36,94,41" +locations_default(#21261,#10000,94,36,94,41) +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) +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) +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) +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) +#21270=* +exprs(#21270,78,#21264,0,"x") +#21271=@"loc,{#10000},95,24,95,24" +locations_default(#21271,#10000,95,24,95,24) +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) +#21286=* +typeexprs(#21286,7,#21277,-3,"string | number") +#21287=@"loc,{#10000},96,45,96,59" +locations_default(#21287,#10000,96,45,96,59) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +#21322=* +typeexprs(#21322,2,#21316,-3,"any") +#21323=@"loc,{#10000},99,42,99,44" +locations_default(#21323,#10000,99,42,99,44) +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) +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) +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) +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) +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) +#21334=* +typeexprs(#21334,22,#21328,2,"T exten ... unction") +#21335=@"loc,{#10000},100,19,100,39" +locations_default(#21335,#10000,100,19,100,39) +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) +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) +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) +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) +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) +#21346=* +typeexprs(#21346,23,#21340,1,"(...arg ... infer R") +#21347=@"loc,{#10000},100,54,100,80" +locations_default(#21347,#10000,100,54,100,80) +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) +#21354=* +typeexprs(#21354,29,#21348,-3,"infer R") +#21355=@"loc,{#10000},100,74,100,80" +locations_default(#21355,#10000,100,74,100,80) +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) +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) +#21473=* +lines(#21473,#20001," "," +") +#21474=@"loc,{#10000},16,1,16,2" +locations_default(#21474,#10000,16,1,16,2) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +hasLocation(#21553,#21554) +#21555=* +lines(#21555,#20001," interface Part {"," +") +#21556=@"loc,{#10000},57,1,57,18" +locations_default(#21556,#10000,57,1,57,18) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +hasLocation(#21581,#21582) +#21583=* +lines(#21583,#20001,""," +") +#21584=@"loc,{#10000},71,1,71,0" +locations_default(#21584,#10000,71,1,71,0) +hasLocation(#21583,#21584) +#21585=* +lines(#21585,#20001,"namespace ConditionalTypes2 {"," +") +#21586=@"loc,{#10000},72,1,72,29" +locations_default(#21586,#10000,72,1,72,29) +hasLocation(#21585,#21586) +#21587=* +lines(#21587,#20001," type Unpacked ="," +") +#21588=@"loc,{#10000},73,1,73,20" +locations_default(#21588,#10000,73,1,73,20) +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) +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) +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) +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) +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) +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) +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) +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) +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) +hasLocation(#21605,#21606) +indentation(#10000,82," ",2) +#21607=* +lines(#21607,#20001," type T4 = Unpacked[]>; // Promise"," +") +#21608=@"loc,{#10000},83,1,83,60" +locations_default(#21608,#10000,83,1,83,60) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +hasLocation(#21627,#21628) +#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) +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) +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) +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) +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) +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) +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) +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) +hasLocation(#21643,#21644) +#21645=* +lines(#21645,#20001,""," +") +#21646=@"loc,{#10000},102,1,102,0" +locations_default(#21646,#10000,102,1,102,0) +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) +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) +#21655=* +tokeninfo(#21655,8,#20001,5,"<") +#21656=@"loc,{#10000},2,16,2,16" +locations_default(#21656,#10000,2,16,2,16) +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) +#21663=* +tokeninfo(#21663,7,#20001,10,"extends") +#21664=@"loc,{#10000},3,9,3,15" +locations_default(#21664,#10000,3,9,3,15) +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) +#21669=* +tokeninfo(#21669,8,#20001,14,":") +#21670=@"loc,{#10000},3,35,3,35" +locations_default(#21670,#10000,3,35,3,35) +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) +#21675=* +tokeninfo(#21675,8,#20001,18,"?") +#21676=@"loc,{#10000},4,24,4,24" +locations_default(#21676,#10000,4,24,4,24) +hasLocation(#21675,#21676) +#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) +#21681=* +tokeninfo(#21681,7,#20001,22,"extends") +#21682=@"loc,{#10000},5,9,5,15" +locations_default(#21682,#10000,5,9,5,15) +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) +#21687=* +tokeninfo(#21687,8,#20001,26,":") +#21688=@"loc,{#10000},5,37,5,37" +locations_default(#21688,#10000,5,37,5,37) +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) +#21693=* +tokeninfo(#21693,8,#20001,30,"?") +#21694=@"loc,{#10000},6,27,6,27" +locations_default(#21694,#10000,6,27,6,27) +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) +#21699=* +tokeninfo(#21699,7,#20001,34,"extends") +#21700=@"loc,{#10000},7,9,7,15" +locations_default(#21700,#10000,7,9,7,15) +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) +#21705=* +tokeninfo(#21705,8,#20001,38,":") +#21706=@"loc,{#10000},7,39,7,39" +locations_default(#21706,#10000,7,39,7,39) +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) +#21713=* +tokeninfo(#21713,8,#20001,43,"=") +#21714=@"loc,{#10000},10,11,10,11" +locations_default(#21714,#10000,10,11,10,11) +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) +#21719=* +tokeninfo(#21719,8,#20001,47,">") +#21720=@"loc,{#10000},10,28,10,28" +locations_default(#21720,#10000,10,28,10,28) +hasLocation(#21719,#21720) +#21721=* +tokeninfo(#21721,8,#20001,48,";") +#21722=@"loc,{#10000},10,29,10,29" +locations_default(#21722,#10000,10,29,10,29) +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) +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) +#21729=* +tokeninfo(#21729,8,#20001,53,"<") +#21730=@"loc,{#10000},11,21,11,21" +locations_default(#21730,#10000,11,21,11,21) +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) +#21739=* +tokeninfo(#21739,8,#20001,59,"=") +#21740=@"loc,{#10000},12,11,12,11" +locations_default(#21740,#10000,12,11,12,11) +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) +#21745=* +tokeninfo(#21745,8,#20001,63,">") +#21746=@"loc,{#10000},12,26,12,26" +locations_default(#21746,#10000,12,26,12,26) +hasLocation(#21745,#21746) +#21747=* +tokeninfo(#21747,8,#20001,64,";") +#21748=@"loc,{#10000},12,27,12,27" +locations_default(#21748,#10000,12,27,12,27) +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) +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) +#21755=* +tokeninfo(#21755,8,#20001,69,"<") +#21756=@"loc,{#10000},13,21,13,21" +locations_default(#21756,#10000,13,21,13,21) +hasLocation(#21755,#21756) +#21757=* +tokeninfo(#21757,8,#20001,70,"(") +#21758=@"loc,{#10000},13,22,13,22" +locations_default(#21758,#10000,13,22,13,22) +hasLocation(#21757,#21758) +#21759=* +tokeninfo(#21759,8,#20001,71,")") +#21760=@"loc,{#10000},13,23,13,23" +locations_default(#21760,#10000,13,23,13,23) +hasLocation(#21759,#21760) +#21761=* +tokeninfo(#21761,8,#20001,72,"=>") +#21762=@"loc,{#10000},13,25,13,26" +locations_default(#21762,#10000,13,25,13,26) +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) +#21771=* +tokeninfo(#21771,8,#20001,78,"=") +#21772=@"loc,{#10000},14,11,14,11" +locations_default(#21772,#10000,14,11,14,11) +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) +#21777=* +tokeninfo(#21777,8,#20001,82,"[") +#21778=@"loc,{#10000},14,28,14,28" +locations_default(#21778,#10000,14,28,14,28) +hasLocation(#21777,#21778) +#21779=* +tokeninfo(#21779,8,#20001,83,"]") +#21780=@"loc,{#10000},14,29,14,29" +locations_default(#21780,#10000,14,29,14,29) +hasLocation(#21779,#21780) +#21781=* +tokeninfo(#21781,8,#20001,84,">") +#21782=@"loc,{#10000},14,30,14,30" +locations_default(#21782,#10000,14,30,14,30) +hasLocation(#21781,#21782) +#21783=* +tokeninfo(#21783,8,#20001,85,";") +#21784=@"loc,{#10000},14,31,14,31" +locations_default(#21784,#10000,14,31,14,31) +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) +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) +#21791=* +tokeninfo(#21791,8,#20001,90,"<") +#21792=@"loc,{#10000},17,22,17,22" +locations_default(#21792,#10000,17,22,17,22) +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) +#21805=* +tokeninfo(#21805,8,#20001,98,")") +#21806=@"loc,{#10000},17,43,17,43" +locations_default(#21806,#10000,17,43,17,43) +hasLocation(#21805,#21806) +#21807=* +tokeninfo(#21807,8,#20001,99,">") +#21808=@"loc,{#10000},17,44,17,44" +locations_default(#21808,#10000,17,44,17,44) +hasLocation(#21807,#21808) +#21809=* +tokeninfo(#21809,8,#20001,100,";") +#21810=@"loc,{#10000},17,45,17,45" +locations_default(#21810,#10000,17,45,17,45) +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) +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) +#21817=* +tokeninfo(#21817,8,#20001,105,"<") +#21818=@"loc,{#10000},18,22,18,22" +locations_default(#21818,#10000,18,22,18,22) +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) +#21823=* +tokeninfo(#21823,8,#20001,109,"[") +#21824=@"loc,{#10000},18,38,18,38" +locations_default(#21824,#10000,18,38,18,38) +hasLocation(#21823,#21824) +#21825=* +tokeninfo(#21825,8,#20001,110,"]") +#21826=@"loc,{#10000},18,39,18,39" +locations_default(#21826,#10000,18,39,18,39) +hasLocation(#21825,#21826) +#21827=* +tokeninfo(#21827,8,#20001,111,"|") +#21828=@"loc,{#10000},18,41,18,41" +locations_default(#21828,#10000,18,41,18,41) +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) +#21837=* +tokeninfo(#21837,8,#20001,117,"=") +#21838=@"loc,{#10000},19,12,19,12" +locations_default(#21838,#10000,19,12,19,12) +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) +#21843=* +tokeninfo(#21843,8,#20001,121,"[") +#21844=@"loc,{#10000},19,29,19,29" +locations_default(#21844,#10000,19,29,19,29) +hasLocation(#21843,#21844) +#21845=* +tokeninfo(#21845,8,#20001,122,"]") +#21846=@"loc,{#10000},19,30,19,30" +locations_default(#21846,#10000,19,30,19,30) +hasLocation(#21845,#21846) +#21847=* +tokeninfo(#21847,8,#20001,123,"|") +#21848=@"loc,{#10000},19,32,19,32" +locations_default(#21848,#10000,19,32,19,32) +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) +#21861=* +tokeninfo(#21861,8,#20001,131,"<") +#21862=@"loc,{#10000},21,18,21,18" +locations_default(#21862,#10000,21,18,21,18) +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) +#21871=* +tokeninfo(#21871,8,#20001,137,":") +#21872=@"loc,{#10000},21,31,21,31" +locations_default(#21872,#10000,21,31,21,31) +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) +#21881=* +tokeninfo(#21881,8,#20001,143,"<") +#21882=@"loc,{#10000},22,18,22,18" +locations_default(#21882,#10000,22,18,22,18) +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) +#21891=* +tokeninfo(#21891,8,#20001,149,":") +#21892=@"loc,{#10000},22,31,22,31" +locations_default(#21892,#10000,22,31,22,31) +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) +#21905=* +tokeninfo(#21905,8,#20001,157,"<") +#21906=@"loc,{#10000},23,13,23,13" +locations_default(#21906,#10000,23,13,23,13) +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) +#21913=* +tokeninfo(#21913,7,#20001,162,"extends") +#21914=@"loc,{#10000},23,21,23,27" +locations_default(#21914,#10000,23,21,23,27) +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) +#21923=* +tokeninfo(#21923,8,#20001,168,"<") +#21924=@"loc,{#10000},23,47,23,47" +locations_default(#21924,#10000,23,47,23,47) +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) +#21929=* +tokeninfo(#21929,8,#20001,172,"]") +#21930=@"loc,{#10000},23,56,23,56" +locations_default(#21930,#10000,23,56,23,56) +hasLocation(#21929,#21930) +#21931=* +tokeninfo(#21931,8,#20001,173,">") +#21932=@"loc,{#10000},23,57,23,57" +locations_default(#21932,#10000,23,57,23,57) +hasLocation(#21931,#21932) +#21933=* +tokeninfo(#21933,8,#20001,174,":") +#21934=@"loc,{#10000},23,59,23,59" +locations_default(#21934,#10000,23,59,23,59) +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) +#21939=* +tokeninfo(#21939,8,#20001,178,">") +#21940=@"loc,{#10000},23,73,23,73" +locations_default(#21940,#10000,23,73,23,73) +hasLocation(#21939,#21940) +#21941=* +tokeninfo(#21941,8,#20001,179,";") +#21942=@"loc,{#10000},23,74,23,74" +locations_default(#21942,#10000,23,74,23,74) +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) +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) +#21949=* +tokeninfo(#21949,8,#20001,184,"<") +#21950=@"loc,{#10000},25,19,25,19" +locations_default(#21950,#10000,25,19,25,19) +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) +#21959=* +tokeninfo(#21959,8,#20001,190,"=") +#21960=@"loc,{#10000},26,12,26,12" +locations_default(#21960,#10000,26,12,26,12) +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) +#21965=* +tokeninfo(#21965,8,#20001,194,"[") +#21966=@"loc,{#10000},26,26,26,26" +locations_default(#21966,#10000,26,26,26,26) +hasLocation(#21965,#21966) +#21967=* +tokeninfo(#21967,8,#20001,195,"]") +#21968=@"loc,{#10000},26,27,26,27" +locations_default(#21968,#10000,26,27,26,27) +hasLocation(#21967,#21968) +#21969=* +tokeninfo(#21969,8,#20001,196,">") +#21970=@"loc,{#10000},26,28,26,28" +locations_default(#21970,#10000,26,28,26,28) +hasLocation(#21969,#21970) +#21971=* +tokeninfo(#21971,8,#20001,197,";") +#21972=@"loc,{#10000},26,29,26,29" +locations_default(#21972,#10000,26,29,26,29) +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) +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) +#21979=* +tokeninfo(#21979,8,#20001,202,"<") +#21980=@"loc,{#10000},27,19,27,19" +locations_default(#21980,#10000,27,19,27,19) +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) +#21985=* +tokeninfo(#21985,8,#20001,206,"[") +#21986=@"loc,{#10000},27,35,27,35" +locations_default(#21986,#10000,27,35,27,35) +hasLocation(#21985,#21986) +#21987=* +tokeninfo(#21987,8,#20001,207,"]") +#21988=@"loc,{#10000},27,36,27,36" +locations_default(#21988,#10000,27,36,27,36) +hasLocation(#21987,#21988) +#21989=* +tokeninfo(#21989,8,#20001,208,">") +#21990=@"loc,{#10000},27,37,27,37" +locations_default(#21990,#10000,27,37,27,37) +hasLocation(#21989,#21990) +#21991=* +tokeninfo(#21991,8,#20001,209,";") +#21992=@"loc,{#10000},27,38,27,38" +locations_default(#21992,#10000,27,38,27,38) +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) +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) +#21999=* +tokeninfo(#21999,8,#20001,214,",") +#22000=@"loc,{#10000},29,14,29,14" +locations_default(#22000,#10000,29,14,29,14) +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) +#22007=* +tokeninfo(#22007,7,#20001,219,"extends") +#22008=@"loc,{#10000},29,23,29,29" +locations_default(#22008,#10000,29,23,29,29) +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) +#22013=* +tokeninfo(#22013,8,#20001,223,":") +#22014=@"loc,{#10000},29,41,29,41" +locations_default(#22014,#10000,29,41,29,41) +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) +#22021=* +tokeninfo(#22021,8,#20001,228,"<") +#22022=@"loc,{#10000},30,14,30,14" +locations_default(#22022,#10000,30,14,30,14) +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) +#22027=* +tokeninfo(#22027,8,#20001,232,">") +#22028=@"loc,{#10000},30,19,30,19" +locations_default(#22028,#10000,30,19,30,19) +hasLocation(#22027,#22028) +#22029=* +tokeninfo(#22029,8,#20001,233,"=") +#22030=@"loc,{#10000},30,21,30,21" +locations_default(#22030,#10000,30,21,30,21) +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) +#22035=* +tokeninfo(#22035,8,#20001,237,"?") +#22036=@"loc,{#10000},30,35,30,35" +locations_default(#22036,#10000,30,35,30,35) +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) +#22041=* +tokeninfo(#22041,8,#20001,241,";") +#22042=@"loc,{#10000},30,46,30,46" +locations_default(#22042,#10000,30,46,30,46) +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) +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) +#22049=* +tokeninfo(#22049,8,#20001,246,"<") +#22050=@"loc,{#10000},32,18,32,18" +locations_default(#22050,#10000,32,18,32,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) +#22055=* +tokeninfo(#22055,8,#20001,250,"|") +#22056=@"loc,{#10000},32,29,32,29" +locations_default(#22056,#10000,32,29,32,29) +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) +#22061=* +tokeninfo(#22061,8,#20001,254,",") +#22062=@"loc,{#10000},32,40,32,40" +locations_default(#22062,#10000,32,40,32,40) +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) +#22067=* +tokeninfo(#22067,8,#20001,258,"|") +#22068=@"loc,{#10000},32,52,32,52" +locations_default(#22068,#10000,32,52,32,52) +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) +#22077=* +tokeninfo(#22077,8,#20001,264,"=") +#22078=@"loc,{#10000},33,12,33,12" +locations_default(#22078,#10000,33,12,33,12) +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) +#22083=* +tokeninfo(#22083,8,#20001,268,"|") +#22084=@"loc,{#10000},33,25,33,25" +locations_default(#22084,#10000,33,25,33,25) +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) +#22089=* +tokeninfo(#22089,8,#20001,272,"|") +#22090=@"loc,{#10000},33,37,33,37" +locations_default(#22090,#10000,33,37,33,37) +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) +#22095=* +tokeninfo(#22095,8,#20001,276,"|") +#22096=@"loc,{#10000},33,48,33,48" +locations_default(#22096,#10000,33,48,33,48) +hasLocation(#22095,#22096) +#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) +#22101=* +tokeninfo(#22101,8,#20001,280,">") +#22102=@"loc,{#10000},33,59,33,59" +locations_default(#22102,#10000,33,59,33,59) +hasLocation(#22101,#22102) +#22103=* +tokeninfo(#22103,8,#20001,281,";") +#22104=@"loc,{#10000},33,60,33,60" +locations_default(#22104,#10000,33,60,33,60) +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) +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) +#22111=* +tokeninfo(#22111,8,#20001,286,"<") +#22112=@"loc,{#10000},34,18,34,18" +locations_default(#22112,#10000,34,18,34,18) +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) +#22117=* +tokeninfo(#22117,8,#20001,290,"|") +#22118=@"loc,{#10000},34,35,34,35" +locations_default(#22118,#10000,34,35,34,35) +hasLocation(#22117,#22118) +#22119=* +tokeninfo(#22119,8,#20001,291,"(") +#22120=@"loc,{#10000},34,37,34,37" +locations_default(#22120,#10000,34,37,34,37) +hasLocation(#22119,#22120) +#22121=* +tokeninfo(#22121,8,#20001,292,"(") +#22122=@"loc,{#10000},34,38,34,38" +locations_default(#22122,#10000,34,38,34,38) +hasLocation(#22121,#22122) +#22123=* +tokeninfo(#22123,8,#20001,293,")") +#22124=@"loc,{#10000},34,39,34,39" +locations_default(#22124,#10000,34,39,34,39) +hasLocation(#22123,#22124) +#22125=* +tokeninfo(#22125,8,#20001,294,"=>") +#22126=@"loc,{#10000},34,41,34,42" +locations_default(#22126,#10000,34,41,34,42) +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) +#22133=* +tokeninfo(#22133,8,#20001,299,">") +#22134=@"loc,{#10000},34,59,34,59" +locations_default(#22134,#10000,34,59,34,59) +hasLocation(#22133,#22134) +#22135=* +tokeninfo(#22135,8,#20001,300,";") +#22136=@"loc,{#10000},34,60,34,60" +locations_default(#22136,#10000,34,60,34,60) +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) +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) +#22143=* +tokeninfo(#22143,8,#20001,305,"<") +#22144=@"loc,{#10000},35,20,35,20" +locations_default(#22144,#10000,35,20,35,20) +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) +#22149=* +tokeninfo(#22149,8,#20001,309,"|") +#22150=@"loc,{#10000},35,37,35,37" +locations_default(#22150,#10000,35,37,35,37) +hasLocation(#22149,#22150) +#22151=* +tokeninfo(#22151,8,#20001,310,"(") +#22152=@"loc,{#10000},35,39,35,39" +locations_default(#22152,#10000,35,39,35,39) +hasLocation(#22151,#22152) +#22153=* +tokeninfo(#22153,8,#20001,311,"(") +#22154=@"loc,{#10000},35,40,35,40" +locations_default(#22154,#10000,35,40,35,40) +hasLocation(#22153,#22154) +#22155=* +tokeninfo(#22155,8,#20001,312,")") +#22156=@"loc,{#10000},35,41,35,41" +locations_default(#22156,#10000,35,41,35,41) +hasLocation(#22155,#22156) +#22157=* +tokeninfo(#22157,8,#20001,313,"=>") +#22158=@"loc,{#10000},35,43,35,44" +locations_default(#22158,#10000,35,43,35,44) +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) +#22165=* +tokeninfo(#22165,8,#20001,318,">") +#22166=@"loc,{#10000},35,61,35,61" +locations_default(#22166,#10000,35,61,35,61) +hasLocation(#22165,#22166) +#22167=* +tokeninfo(#22167,8,#20001,319,";") +#22168=@"loc,{#10000},35,62,35,62" +locations_default(#22168,#10000,35,62,35,62) +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) +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) +#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) +#22183=* +tokeninfo(#22183,8,#20001,329,",") +#22184=@"loc,{#10000},37,31,37,31" +locations_default(#22184,#10000,37,31,37,31) +hasLocation(#22183,#22184) +#22185=* +tokeninfo(#22185,1,#20001,330,"null") +hasLocation(#22185,#20486) +#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) +#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) +#22226=* +tokeninfo(#22226,8,#20001,356,"]") +#22227=@"loc,{#10000},40,42,40,42" +locations_default(#22227,#10000,40,42,40,42) +hasLocation(#22226,#22227) +#22228=* +tokeninfo(#22228,8,#20001,357,"|") +#22229=@"loc,{#10000},40,44,40,44" +locations_default(#22229,#10000,40,44,40,44) +hasLocation(#22228,#22229) +#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) +#22233=* +tokeninfo(#22233,7,#20001,360,"undefined") +hasLocation(#22233,#20524) +#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) +#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) +#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) +#22243=* +tokeninfo(#22243,6,#20001,366,"T") +hasLocation(#22243,#20547) +#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) +#22248=* +tokeninfo(#22248,6,#20001,369,"x") +hasLocation(#22248,#20533) +#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) +#22252=* +tokeninfo(#22252,8,#20001,372,",") +#22253=@"loc,{#10000},42,22,42,22" +locations_default(#22253,#10000,42,22,42,22) +hasLocation(#22252,#22253) +#22254=* +tokeninfo(#22254,6,#20001,373,"y") +hasLocation(#22254,#20536) +#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) +#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) +#22261=* +tokeninfo(#22261,8,#20001,378,">") +#22262=@"loc,{#10000},42,40,42,40" +locations_default(#22262,#10000,42,40,42,40) +hasLocation(#22261,#22262) +#22263=* +tokeninfo(#22263,8,#20001,379,")") +#22264=@"loc,{#10000},42,41,42,41" +locations_default(#22264,#10000,42,41,42,41) +hasLocation(#22263,#22264) +#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) +#22268=* +tokeninfo(#22268,8,#20001,382,"=") +#22269=@"loc,{#10000},43,9,43,9" +locations_default(#22269,#10000,43,9,43,9) +hasLocation(#22268,#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) +#22273=* +tokeninfo(#22273,8,#20001,385,"}") +#22274=@"loc,{#10000},44,3,44,3" +locations_default(#22274,#10000,44,3,44,3) +hasLocation(#22273,#22274) +next_token(#21407,#22273) +#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) +#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) +#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) +#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) +#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) +#22289=* +tokeninfo(#22289,8,#20001,395,"(") +#22290=@"loc,{#10000},46,44,46,44" +locations_default(#22290,#10000,46,44,46,44) +hasLocation(#22289,#22290) +#22291=* +tokeninfo(#22291,6,#20001,396,"x") +hasLocation(#22291,#20567) +#22292=* +tokeninfo(#22292,8,#20001,397,":") +#22293=@"loc,{#10000},46,46,46,46" +locations_default(#22293,#10000,46,46,46,46) +hasLocation(#22292,#22293) +#22294=* +tokeninfo(#22294,6,#20001,398,"T") +hasLocation(#22294,#20573) +#22295=* +tokeninfo(#22295,8,#20001,399,",") +#22296=@"loc,{#10000},46,49,46,49" +locations_default(#22296,#10000,46,49,46,49) +hasLocation(#22295,#22296) +#22297=* +tokeninfo(#22297,6,#20001,400,"y") +hasLocation(#22297,#20570) +#22298=* +tokeninfo(#22298,8,#20001,401,":") +#22299=@"loc,{#10000},46,52,46,52" +locations_default(#22299,#10000,46,52,46,52) +hasLocation(#22298,#22299) +#22300=* +tokeninfo(#22300,6,#20001,402,"NonNullable") +hasLocation(#22300,#20577) +#22301=* +tokeninfo(#22301,8,#20001,403,"<") +#22302=@"loc,{#10000},46,65,46,65" +locations_default(#22302,#10000,46,65,46,65) +hasLocation(#22301,#22302) +#22303=* +tokeninfo(#22303,6,#20001,404,"T") +hasLocation(#22303,#20579) +#22304=* +tokeninfo(#22304,8,#20001,405,">") +#22305=@"loc,{#10000},46,67,46,67" +locations_default(#22305,#10000,46,67,46,67) +hasLocation(#22304,#22305) +#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) +#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) +#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) +#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) +#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) +#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) +#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) +#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) +#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) +#22339=* +tokeninfo(#22339,8,#20001,426,"{") +#22340=@"loc,{#10000},51,35,51,35" +locations_default(#22340,#10000,51,35,51,35) +hasLocation(#22339,#22340) +#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) +#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) +#22348=* +tokeninfo(#22348,6,#20001,431,"T") +hasLocation(#22348,#20634) +#22349=* +tokeninfo(#22349,8,#20001,432,"]") +#22350=@"loc,{#10000},51,50,51,50" +locations_default(#22350,#10000,51,50,51,50) +hasLocation(#22349,#22350) +#22351=* +tokeninfo(#22351,8,#20001,433,":") +#22352=@"loc,{#10000},51,51,51,51" +locations_default(#22352,#10000,51,51,51,51) +hasLocation(#22351,#22352) +#22353=* +tokeninfo(#22353,6,#20001,434,"T") +hasLocation(#22353,#20640) +#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) +#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) +#22361=* +tokeninfo(#22361,6,#20001,439,"Function") +hasLocation(#22361,#20644) +#22362=* +tokeninfo(#22362,8,#20001,440,"?") +#22363=@"loc,{#10000},51,75,51,75" +locations_default(#22363,#10000,51,75,51,75) +hasLocation(#22362,#22363) +#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) +#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) +#22370=* +tokeninfo(#22370,8,#20001,445,"[") +#22371=@"loc,{#10000},51,88,51,88" +locations_default(#22371,#10000,51,88,51,88) +hasLocation(#22370,#22371) +#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) +#22375=* +tokeninfo(#22375,8,#20001,448,"]") +#22376=@"loc,{#10000},51,96,51,96" +locations_default(#22376,#10000,51,96,51,96) +hasLocation(#22375,#22376) +#22377=* +tokeninfo(#22377,8,#20001,449,";") +#22378=@"loc,{#10000},51,97,51,97" +locations_default(#22378,#10000,51,97,51,97) +hasLocation(#22377,#22378) +#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) +#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) +#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) +#22389=* +tokeninfo(#22389,6,#20001,456,"Pick") +hasLocation(#22389,#20665) +#22390=* +tokeninfo(#22390,8,#20001,457,"<") +#22391=@"loc,{#10000},52,36,52,36" +locations_default(#22391,#10000,52,36,52,36) +hasLocation(#22390,#22391) +#22392=* +tokeninfo(#22392,6,#20001,458,"T") +hasLocation(#22392,#20667) +#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) +#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) +#22399=* +tokeninfo(#22399,8,#20001,463,">") +#22400=@"loc,{#10000},52,63,52,63" +locations_default(#22400,#10000,52,63,52,63) +hasLocation(#22399,#22400) +#22401=* +tokeninfo(#22401,8,#20001,464,">") +#22402=@"loc,{#10000},52,64,52,64" +locations_default(#22402,#10000,52,64,52,64) +hasLocation(#22401,#22402) +#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) +#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) +#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) +#22413=* +tokeninfo(#22413,8,#20001,471,"=") +#22414=@"loc,{#10000},54,36,54,36" +locations_default(#22414,#10000,54,36,54,36) +hasLocation(#22413,#22414) +#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) +#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) +#22422=* +tokeninfo(#22422,7,#20001,476,"keyof") +#22423=@"loc,{#10000},54,46,54,50" +locations_default(#22423,#10000,54,46,54,50) +hasLocation(#22422,#22423) +#22424=* +tokeninfo(#22424,6,#20001,477,"T") +hasLocation(#22424,#20696) +#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) +#22429=* +tokeninfo(#22429,6,#20001,480,"T") +hasLocation(#22429,#20702) +#22430=* +tokeninfo(#22430,8,#20001,481,"[") +#22431=@"loc,{#10000},54,57,54,57" +locations_default(#22431,#10000,54,57,54,57) +hasLocation(#22430,#22431) +#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) +#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) +#22437=* +tokeninfo(#22437,6,#20001,485,"Function") +hasLocation(#22437,#20706) +#22438=* +tokeninfo(#22438,8,#20001,486,"?") +#22439=@"loc,{#10000},54,78,54,78" +locations_default(#22439,#10000,54,78,54,78) +hasLocation(#22438,#22439) +#22440=* +tokeninfo(#22440,7,#20001,487,"never") +hasLocation(#22440,#20708) +#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) +#22444=* +tokeninfo(#22444,8,#20001,490,"}") +#22445=@"loc,{#10000},54,90,54,90" +locations_default(#22445,#10000,54,90,54,90) +hasLocation(#22444,#22445) +#22446=* +tokeninfo(#22446,8,#20001,491,"[") +#22447=@"loc,{#10000},54,91,54,91" +locations_default(#22447,#10000,54,91,54,91) +hasLocation(#22446,#22447) +#22448=* +tokeninfo(#22448,7,#20001,492,"keyof") +#22449=@"loc,{#10000},54,92,54,96" +locations_default(#22449,#10000,54,92,54,96) +hasLocation(#22448,#22449) +#22450=* +tokeninfo(#22450,6,#20001,493,"T") +hasLocation(#22450,#20714) +#22451=* +tokeninfo(#22451,8,#20001,494,"]") +#22452=@"loc,{#10000},54,99,54,99" +locations_default(#22452,#10000,54,99,54,99) +hasLocation(#22451,#22452) +#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) +#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) +#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) +#22463=* +tokeninfo(#22463,8,#20001,501,"=") +#22464=@"loc,{#10000},55,33,55,33" +locations_default(#22464,#10000,55,33,55,33) +hasLocation(#22463,#22464) +#22465=* +tokeninfo(#22465,6,#20001,502,"Pick") +hasLocation(#22465,#20727) +#22466=* +tokeninfo(#22466,8,#20001,503,"<") +#22467=@"loc,{#10000},55,39,55,39" +locations_default(#22467,#10000,55,39,55,39) +hasLocation(#22466,#22467) +#22468=* +tokeninfo(#22468,6,#20001,504,"T") +hasLocation(#22468,#20729) +#22469=* +tokeninfo(#22469,8,#20001,505,",") +#22470=@"loc,{#10000},55,41,55,41" +locations_default(#22470,#10000,55,41,55,41) +hasLocation(#22469,#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) +#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) +#22477=* +tokeninfo(#22477,8,#20001,510,">") +#22478=@"loc,{#10000},55,70,55,70" +locations_default(#22478,#10000,55,70,55,70) +hasLocation(#22477,#22478) +#22479=* +tokeninfo(#22479,8,#20001,511,";") +#22480=@"loc,{#10000},55,71,55,71" +locations_default(#22480,#10000,55,71,55,71) +hasLocation(#22479,#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) +#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) +#22486=* +tokeninfo(#22486,6,#20001,515,"id") +hasLocation(#22486,#20743) +#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) +#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) +#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) +#22496=* +tokeninfo(#22496,8,#20001,522,";") +#22497=@"loc,{#10000},59,19,59,19" +locations_default(#22497,#10000,59,19,59,19) +hasLocation(#22496,#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) +#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) +#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) +#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) +#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) +#22515=* +tokeninfo(#22515,8,#20001,534,")") +#22516=@"loc,{#10000},61,33,61,33" +locations_default(#22516,#10000,61,33,61,33) +hasLocation(#22515,#22516) +#22517=* +tokeninfo(#22517,8,#20001,535,":") +#22518=@"loc,{#10000},61,34,61,34" +locations_default(#22518,#10000,61,34,61,34) +hasLocation(#22517,#22518) +#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) +#22522=* +tokeninfo(#22522,8,#20001,538,"}") +#22523=@"loc,{#10000},62,3,62,3" +locations_default(#22523,#10000,62,3,62,3) +hasLocation(#22522,#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) +#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) +#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) +#22532=* +tokeninfo(#22532,6,#20001,544,"Part") +hasLocation(#22532,#20783) +#22533=* +tokeninfo(#22533,8,#20001,545,">") +#22534=@"loc,{#10000},64,40,64,40" +locations_default(#22534,#10000,64,40,64,40) +hasLocation(#22533,#22534) +#22535=* +tokeninfo(#22535,8,#20001,546,";") +#22536=@"loc,{#10000},64,41,64,41" +locations_default(#22536,#10000,64,41,64,41) +hasLocation(#22535,#22536) +#22537=* +tokeninfo(#22537,7,#20001,547,"type") +#22538=@"loc,{#10000},65,3,65,6" +locations_default(#22538,#10000,65,3,65,6) +hasLocation(#22537,#22538) +next_token(#21413,#22537) +#22539=* +tokeninfo(#22539,6,#20001,548,"T41") +hasLocation(#22539,#20787) +#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) +#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) +#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) +#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) +#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) +#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) +#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) +#22561=* +tokeninfo(#22561,8,#20001,562,";") +#22562=@"loc,{#10000},66,38,66,38" +locations_default(#22562,#10000,66,38,66,38) +hasLocation(#22561,#22562) +#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) +#22565=* +tokeninfo(#22565,6,#20001,564,"T43") +hasLocation(#22565,#20807) +#22566=* +tokeninfo(#22566,8,#20001,565,"=") +#22567=@"loc,{#10000},67,12,67,12" +locations_default(#22567,#10000,67,12,67,12) +hasLocation(#22566,#22567) +#22568=* +tokeninfo(#22568,6,#20001,566,"NonFunctionProperties") +hasLocation(#22568,#20811) +#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) +#22572=* +tokeninfo(#22572,8,#20001,569,">") +#22573=@"loc,{#10000},67,40,67,40" +locations_default(#22573,#10000,67,40,67,40) +hasLocation(#22572,#22573) +#22574=* +tokeninfo(#22574,8,#20001,570,";") +#22575=@"loc,{#10000},67,41,67,41" +locations_default(#22575,#10000,67,41,67,41) +hasLocation(#22574,#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) +#22579=* +tokeninfo(#22579,8,#20001,573,"<") +#22580=@"loc,{#10000},69,18,69,18" +locations_default(#22580,#10000,69,18,69,18) +hasLocation(#22579,#22580) +#22581=* +tokeninfo(#22581,6,#20001,574,"T") +hasLocation(#22581,#20821) +#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) +#22587=* +tokeninfo(#22587,7,#20001,578,"extends") +#22588=@"loc,{#10000},69,26,69,32" +locations_default(#22588,#10000,69,26,69,32) +hasLocation(#22587,#22588) +#22589=* +tokeninfo(#22589,8,#20001,579,"(") +#22590=@"loc,{#10000},69,34,69,34" +locations_default(#22590,#10000,69,34,69,34) +hasLocation(#22589,#22590) +#22591=* +tokeninfo(#22591,8,#20001,580,"...") +#22592=@"loc,{#10000},69,35,69,37" +locations_default(#22592,#10000,69,35,69,37) +hasLocation(#22591,#22592) +#22593=* +tokeninfo(#22593,6,#20001,581,"args") +hasLocation(#22593,#20835) +#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) +#22597=* +tokeninfo(#22597,8,#20001,584,"[") +#22598=@"loc,{#10000},69,47,69,47" +locations_default(#22598,#10000,69,47,69,47) +hasLocation(#22597,#22598) +#22599=* +tokeninfo(#22599,8,#20001,585,"]") +#22600=@"loc,{#10000},69,48,69,48" +locations_default(#22600,#10000,69,48,69,48) +hasLocation(#22599,#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) +#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) +#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) +#22611=* +tokeninfo(#22611,8,#20001,592,":") +#22612=@"loc,{#10000},69,66,69,66" +locations_default(#22612,#10000,69,66,69,66) +hasLocation(#22611,#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) +#22617=* +tokeninfo(#22617,7,#20001,596,"namespace") +#22618=@"loc,{#10000},72,1,72,9" +locations_default(#22618,#10000,72,1,72,9) +hasLocation(#22617,#22618) +#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) +#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) +#22625=* +tokeninfo(#22625,8,#20001,601,"<") +#22626=@"loc,{#10000},73,16,73,16" +locations_default(#22626,#10000,73,16,73,16) +hasLocation(#22625,#22626) +#22627=* +tokeninfo(#22627,6,#20001,602,"T") +hasLocation(#22627,#20878) +#22628=* +tokeninfo(#22628,8,#20001,603,">") +#22629=@"loc,{#10000},73,18,73,18" +locations_default(#22629,#10000,73,18,73,18) +hasLocation(#22628,#22629) +#22630=* +tokeninfo(#22630,8,#20001,604,"=") +#22631=@"loc,{#10000},73,20,73,20" +locations_default(#22631,#10000,73,20,73,20) +hasLocation(#22630,#22631) +#22632=* +tokeninfo(#22632,6,#20001,605,"T") +hasLocation(#22632,#20883) +#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) +#22635=* +tokeninfo(#22635,8,#20001,607,"(") +#22636=@"loc,{#10000},74,15,74,15" +locations_default(#22636,#10000,74,15,74,15) +hasLocation(#22635,#22636) +#22637=* +tokeninfo(#22637,7,#20001,608,"infer") +#22638=@"loc,{#10000},74,16,74,20" +locations_default(#22638,#10000,74,16,74,20) +hasLocation(#22637,#22638) +#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) +#22646=* +tokeninfo(#22646,8,#20001,613,"?") +#22647=@"loc,{#10000},74,27,74,27" +locations_default(#22647,#10000,74,27,74,27) +hasLocation(#22646,#22647) +#22648=* +tokeninfo(#22648,6,#20001,614,"U") +hasLocation(#22648,#20896) +#22649=* +tokeninfo(#22649,8,#20001,615,":") +#22650=@"loc,{#10000},74,31,74,31" +locations_default(#22650,#10000,74,31,74,31) +hasLocation(#22649,#22650) +#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) +#22654=* +tokeninfo(#22654,8,#20001,618,"(") +#22655=@"loc,{#10000},75,15,75,15" +locations_default(#22655,#10000,75,15,75,15) +hasLocation(#22654,#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) +#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) +#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) +#22664=* +tokeninfo(#22664,8,#20001,624,"]") +#22665=@"loc,{#10000},75,29,75,29" +locations_default(#22665,#10000,75,29,75,29) +hasLocation(#22664,#22665) +#22666=* +tokeninfo(#22666,8,#20001,625,")") +#22667=@"loc,{#10000},75,30,75,30" +locations_default(#22667,#10000,75,30,75,30) +hasLocation(#22666,#22667) +#22668=* +tokeninfo(#22668,8,#20001,626,"=>") +#22669=@"loc,{#10000},75,32,75,33" +locations_default(#22669,#10000,75,32,75,33) +hasLocation(#22668,#22669) +#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) +#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) +#22675=* +tokeninfo(#22675,6,#20001,630,"U") +hasLocation(#22675,#20921) +#22676=* +tokeninfo(#22676,8,#20001,631,":") +#22677=@"loc,{#10000},75,47,75,47" +locations_default(#22677,#10000,75,47,75,47) +hasLocation(#22676,#22677) +#22678=* +tokeninfo(#22678,6,#20001,632,"T") +hasLocation(#22678,#20925) +#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) +#22681=* +tokeninfo(#22681,6,#20001,634,"Promise") +hasLocation(#22681,#20931) +#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) +#22687=* +tokeninfo(#22687,8,#20001,638,">") +#22688=@"loc,{#10000},76,30,76,30" +locations_default(#22688,#10000,76,30,76,30) +hasLocation(#22687,#22688) +#22689=* +tokeninfo(#22689,8,#20001,639,"?") +#22690=@"loc,{#10000},76,32,76,32" +locations_default(#22690,#10000,76,32,76,32) +hasLocation(#22689,#22690) +#22691=* +tokeninfo(#22691,6,#20001,640,"U") +hasLocation(#22691,#20938) +#22692=* +tokeninfo(#22692,8,#20001,641,":") +#22693=@"loc,{#10000},76,36,76,36" +locations_default(#22693,#10000,76,36,76,36) +hasLocation(#22692,#22693) +#22694=* +tokeninfo(#22694,6,#20001,642,"T") +hasLocation(#22694,#20940) +#22695=* +tokeninfo(#22695,8,#20001,643,";") +#22696=@"loc,{#10000},77,6,77,6" +locations_default(#22696,#10000,77,6,77,6) +hasLocation(#22695,#22696) +#22697=* +tokeninfo(#22697,7,#20001,644,"type") +#22698=@"loc,{#10000},79,3,79,6" +locations_default(#22698,#10000,79,3,79,6) +hasLocation(#22697,#22698) +#22699=* +tokeninfo(#22699,6,#20001,645,"T0") +hasLocation(#22699,#20944) +#22700=* +tokeninfo(#22700,8,#20001,646,"=") +#22701=@"loc,{#10000},79,11,79,11" +locations_default(#22701,#10000,79,11,79,11) +hasLocation(#22700,#22701) +#22702=* +tokeninfo(#22702,6,#20001,647,"Unpacked") +hasLocation(#22702,#20948) +#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) +#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) +#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) +#22712=* +tokeninfo(#22712,6,#20001,653,"T1") +hasLocation(#22712,#20954) +#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) +#22716=* +tokeninfo(#22716,8,#20001,656,"<") +#22717=@"loc,{#10000},80,21,80,21" +locations_default(#22717,#10000,80,21,80,21) +hasLocation(#22716,#22717) +#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) +#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) +#22725=* +tokeninfo(#22725,8,#20001,661,";") +#22726=@"loc,{#10000},80,31,80,31" +locations_default(#22726,#10000,80,31,80,31) +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) +#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) +#22732=* +tokeninfo(#22732,6,#20001,665,"Unpacked") +hasLocation(#22732,#20970) +#22733=* +tokeninfo(#22733,8,#20001,666,"<") +#22734=@"loc,{#10000},81,21,81,21" +locations_default(#22734,#10000,81,21,81,21) +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) +#22739=* +tokeninfo(#22739,8,#20001,669,"=>") +#22740=@"loc,{#10000},81,25,81,26" +locations_default(#22740,#10000,81,25,81,26) +hasLocation(#22739,#22740) +#22741=* +tokeninfo(#22741,7,#20001,670,"string") +hasLocation(#22741,#20977) +#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) +#22748=* +tokeninfo(#22748,6,#20001,674,"T3") +hasLocation(#22748,#20981) +#22749=* +tokeninfo(#22749,8,#20001,675,"=") +#22750=@"loc,{#10000},82,11,82,11" +locations_default(#22750,#10000,82,11,82,11) +hasLocation(#22749,#22750) +#22751=* +tokeninfo(#22751,6,#20001,676,"Unpacked") +hasLocation(#22751,#20985) +#22752=* +tokeninfo(#22752,8,#20001,677,"<") +#22753=@"loc,{#10000},82,21,82,21" +locations_default(#22753,#10000,82,21,82,21) +hasLocation(#22752,#22753) +#22754=* +tokeninfo(#22754,6,#20001,678,"Promise") +hasLocation(#22754,#20989) +#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) +#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) +#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) +#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) +#22769=* +tokeninfo(#22769,6,#20001,687,"Unpacked") +hasLocation(#22769,#20999) +#22770=* +tokeninfo(#22770,8,#20001,688,"<") +#22771=@"loc,{#10000},83,21,83,21" +locations_default(#22771,#10000,83,21,83,21) +hasLocation(#22770,#22771) +#22772=* +tokeninfo(#22772,6,#20001,689,"Promise") +hasLocation(#22772,#21005) +#22773=* +tokeninfo(#22773,8,#20001,690,"<") +#22774=@"loc,{#10000},83,29,83,29" +locations_default(#22774,#10000,83,29,83,29) +hasLocation(#22773,#22774) +#22775=* +tokeninfo(#22775,7,#20001,691,"string") +hasLocation(#22775,#21007) +#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) +#22780=* +tokeninfo(#22780,8,#20001,694,"]") +#22781=@"loc,{#10000},83,38,83,38" +locations_default(#22781,#10000,83,38,83,38) +hasLocation(#22780,#22781) +#22782=* +tokeninfo(#22782,8,#20001,695,">") +#22783=@"loc,{#10000},83,39,83,39" +locations_default(#22783,#10000,83,39,83,39) +hasLocation(#22782,#22783) +#22784=* +tokeninfo(#22784,8,#20001,696,";") +#22785=@"loc,{#10000},83,40,83,40" +locations_default(#22785,#10000,83,40,83,40) +hasLocation(#22784,#22785) +#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) +#22789=* +tokeninfo(#22789,8,#20001,699,"=") +#22790=@"loc,{#10000},84,11,84,11" +locations_default(#22790,#10000,84,11,84,11) +hasLocation(#22789,#22790) +#22791=* +tokeninfo(#22791,6,#20001,700,"Unpacked") +hasLocation(#22791,#21015) +#22792=* +tokeninfo(#22792,8,#20001,701,"<") +#22793=@"loc,{#10000},84,21,84,21" +locations_default(#22793,#10000,84,21,84,21) +hasLocation(#22792,#22793) +#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) +#22798=* +tokeninfo(#22798,8,#20001,705,"<") +#22799=@"loc,{#10000},84,38,84,38" +locations_default(#22799,#10000,84,38,84,38) +hasLocation(#22798,#22799) +#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) +#22803=* +tokeninfo(#22803,8,#20001,708,"[") +#22804=@"loc,{#10000},84,46,84,46" +locations_default(#22804,#10000,84,46,84,46) +hasLocation(#22803,#22804) +#22805=* +tokeninfo(#22805,8,#20001,709,"]") +#22806=@"loc,{#10000},84,47,84,47" +locations_default(#22806,#10000,84,47,84,47) +hasLocation(#22805,#22806) +#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) +#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) +#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) +#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) +#22837=* +tokeninfo(#22837,8,#20001,728,":") +#22838=@"loc,{#10000},86,42,86,42" +locations_default(#22838,#10000,86,42,86,42) +hasLocation(#22837,#22838) +#22839=* +tokeninfo(#22839,7,#20001,729,"infer") +#22840=@"loc,{#10000},86,44,86,48" +locations_default(#22840,#10000,86,44,86,48) +hasLocation(#22839,#22840) +#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) +#22844=* +tokeninfo(#22844,8,#20001,732,"?") +#22845=@"loc,{#10000},86,54,86,54" +locations_default(#22845,#10000,86,54,86,54) +hasLocation(#22844,#22845) +#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) +#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) +#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) +#22858=* +tokeninfo(#22858,8,#20001,741,"<") +#22859=@"loc,{#10000},87,17,87,17" +locations_default(#22859,#10000,87,17,87,17) +hasLocation(#22858,#22859) +#22860=* +tokeninfo(#22860,8,#20001,742,"{") +#22861=@"loc,{#10000},87,18,87,18" +locations_default(#22861,#10000,87,18,87,18) +hasLocation(#22860,#22861) +#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) +#22865=* +tokeninfo(#22865,7,#20001,745,"string") +hasLocation(#22865,#21080) +#22866=* +tokeninfo(#22866,8,#20001,746,",") +#22867=@"loc,{#10000},87,29,87,29" +locations_default(#22867,#10000,87,29,87,29) +hasLocation(#22866,#22867) +#22868=* +tokeninfo(#22868,6,#20001,747,"b") +hasLocation(#22868,#21084) +#22869=* +tokeninfo(#22869,8,#20001,748,":") +#22870=@"loc,{#10000},87,32,87,32" +locations_default(#22870,#10000,87,32,87,32) +hasLocation(#22869,#22870) +#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) +#22874=* +tokeninfo(#22874,8,#20001,751,">") +#22875=@"loc,{#10000},87,42,87,42" +locations_default(#22875,#10000,87,42,87,42) +hasLocation(#22874,#22875) +#22876=* +tokeninfo(#22876,8,#20001,752,";") +#22877=@"loc,{#10000},87,43,87,43" +locations_default(#22877,#10000,87,43,87,43) +hasLocation(#22876,#22877) +#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) +#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) +#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) +#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) +#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) +#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) +#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) +#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) +#22902=* +tokeninfo(#22902,8,#20001,768,";") +#22903=@"loc,{#10000},88,43,88,43" +locations_default(#22903,#10000,88,43,88,43) +hasLocation(#22902,#22903) +#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) +#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) +#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) +#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) +#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) +#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) +#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) +#22929=* +tokeninfo(#22929,6,#20001,784,"U") +hasLocation(#22929,#21141) +#22930=* +tokeninfo(#22930,8,#20001,785,")") +#22931=@"loc,{#10000},90,43,90,43" +locations_default(#22931,#10000,90,43,90,43) +hasLocation(#22930,#22931) +#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) +#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) +#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) +#22943=* +tokeninfo(#22943,8,#20001,793,":") +#22944=@"loc,{#10000},90,59,90,59" +locations_default(#22944,#10000,90,59,90,59) +hasLocation(#22943,#22944) +#22945=* +tokeninfo(#22945,7,#20001,794,"infer") +#22946=@"loc,{#10000},90,61,90,65" +locations_default(#22946,#10000,90,61,90,65) +hasLocation(#22945,#22946) +#22947=* +tokeninfo(#22947,6,#20001,795,"U") +hasLocation(#22947,#21160) +#22948=* +tokeninfo(#22948,8,#20001,796,")") +#22949=@"loc,{#10000},90,68,90,68" +locations_default(#22949,#10000,90,68,90,68) +hasLocation(#22948,#22949) +#22950=* +tokeninfo(#22950,8,#20001,797,"=>") +#22951=@"loc,{#10000},90,70,90,71" +locations_default(#22951,#10000,90,70,90,71) +hasLocation(#22950,#22951) +#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) +#22955=* +tokeninfo(#22955,8,#20001,800,"?") +#22956=@"loc,{#10000},90,80,90,80" +locations_default(#22956,#10000,90,80,90,80) +hasLocation(#22955,#22956) +#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) +#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) +#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) +#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) +#22969=* +tokeninfo(#22969,8,#20001,809,"<") +#22970=@"loc,{#10000},91,17,91,17" +locations_default(#22970,#10000,91,17,91,17) +hasLocation(#22969,#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) +#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) +#22976=* +tokeninfo(#22976,8,#20001,813,"(") +#22977=@"loc,{#10000},91,23,91,23" +locations_default(#22977,#10000,91,23,91,23) +hasLocation(#22976,#22977) +#22978=* +tokeninfo(#22978,6,#20001,814,"x") +hasLocation(#22978,#21186) +#22979=* +tokeninfo(#22979,8,#20001,815,":") +#22980=@"loc,{#10000},91,25,91,25" +locations_default(#22980,#10000,91,25,91,25) +hasLocation(#22979,#22980) +#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) +#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) +#22987=* +tokeninfo(#22987,8,#20001,820,",") +#22988=@"loc,{#10000},91,42,91,42" +locations_default(#22988,#10000,91,42,91,42) +hasLocation(#22987,#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) +#22992=* +tokeninfo(#22992,8,#20001,823,"(") +#22993=@"loc,{#10000},91,47,91,47" +locations_default(#22993,#10000,91,47,91,47) +hasLocation(#22992,#22993) +#22994=* +tokeninfo(#22994,6,#20001,824,"x") +hasLocation(#22994,#21202) +#22995=* +tokeninfo(#22995,8,#20001,825,":") +#22996=@"loc,{#10000},91,49,91,49" +locations_default(#22996,#10000,91,49,91,49) +hasLocation(#22995,#22996) +#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) +#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) +#23003=* +tokeninfo(#23003,8,#20001,830,"}") +#23004=@"loc,{#10000},91,67,91,67" +locations_default(#23004,#10000,91,67,91,67) +hasLocation(#23003,#23004) +#23005=* +tokeninfo(#23005,8,#20001,831,">") +#23006=@"loc,{#10000},91,68,91,68" +locations_default(#23006,#10000,91,68,91,68) +hasLocation(#23005,#23006) +#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) +#23011=* +tokeninfo(#23011,6,#20001,834,"T21") +hasLocation(#23011,#21211) +#23012=* +tokeninfo(#23012,8,#20001,835,"=") +#23013=@"loc,{#10000},92,12,92,12" +locations_default(#23013,#10000,92,12,92,12) +hasLocation(#23012,#23013) +#23014=* +tokeninfo(#23014,6,#20001,836,"Bar") +hasLocation(#23014,#21215) +#23015=* +tokeninfo(#23015,8,#20001,837,"<") +#23016=@"loc,{#10000},92,17,92,17" +locations_default(#23016,#10000,92,17,92,17) +hasLocation(#23015,#23016) +#23017=* +tokeninfo(#23017,8,#20001,838,"{") +#23018=@"loc,{#10000},92,18,92,18" +locations_default(#23018,#10000,92,18,92,18) +hasLocation(#23017,#23018) +#23019=* +tokeninfo(#23019,6,#20001,839,"a") +hasLocation(#23019,#21221) +#23020=* +tokeninfo(#23020,8,#20001,840,":") +#23021=@"loc,{#10000},92,21,92,21" +locations_default(#23021,#10000,92,21,92,21) +hasLocation(#23020,#23021) +#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) +#23025=* +tokeninfo(#23025,8,#20001,843,":") +#23026=@"loc,{#10000},92,25,92,25" +locations_default(#23026,#10000,92,25,92,25) +hasLocation(#23025,#23026) +#23027=* +tokeninfo(#23027,7,#20001,844,"string") +hasLocation(#23027,#21233) +#23028=* +tokeninfo(#23028,8,#20001,845,")") +#23029=@"loc,{#10000},92,33,92,33" +locations_default(#23029,#10000,92,33,92,33) +hasLocation(#23028,#23029) +#23030=* +tokeninfo(#23030,8,#20001,846,"=>") +#23031=@"loc,{#10000},92,35,92,36" +locations_default(#23031,#10000,92,35,92,36) +hasLocation(#23030,#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) +#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) +#23038=* +tokeninfo(#23038,8,#20001,851,"(") +#23039=@"loc,{#10000},92,47,92,47" +locations_default(#23039,#10000,92,47,92,47) +hasLocation(#23038,#23039) +#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) +#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) +#23046=* +tokeninfo(#23046,8,#20001,856,"=>") +#23047=@"loc,{#10000},92,59,92,60" +locations_default(#23047,#10000,92,59,92,60) +hasLocation(#23046,#23047) +#23048=* +tokeninfo(#23048,7,#20001,857,"void") +hasLocation(#23048,#21247) +#23049=* +tokeninfo(#23049,8,#20001,858,"}") +#23050=@"loc,{#10000},92,67,92,67" +locations_default(#23050,#10000,92,67,92,67) +hasLocation(#23049,#23050) +#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) +#23055=* +tokeninfo(#23055,7,#20001,861,"declare") +#23056=@"loc,{#10000},94,3,94,9" +locations_default(#23056,#10000,94,3,94,9) +hasLocation(#23055,#23056) +next_token(#21439,#23055) +#23057=* +tokeninfo(#23057,7,#20001,862,"function") +#23058=@"loc,{#10000},94,11,94,18" +locations_default(#23058,#10000,94,11,94,18) +hasLocation(#23057,#23058) +#23059=* +tokeninfo(#23059,6,#20001,863,"foo") +hasLocation(#23059,#21253) +#23060=* +tokeninfo(#23060,8,#20001,864,"(") +#23061=@"loc,{#10000},94,23,94,23" +locations_default(#23061,#10000,94,23,94,23) +hasLocation(#23060,#23061) +#23062=* +tokeninfo(#23062,6,#20001,865,"x") +hasLocation(#23062,#21258) +#23063=* +tokeninfo(#23063,8,#20001,866,":") +#23064=@"loc,{#10000},94,25,94,25" +locations_default(#23064,#10000,94,25,94,25) +hasLocation(#23063,#23064) +#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) +#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) +#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) +#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) +#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) +#23080=* +tokeninfo(#23080,6,#20001,876,"x") +hasLocation(#23080,#21271) +#23081=* +tokeninfo(#23081,8,#20001,877,":") +#23082=@"loc,{#10000},95,25,95,25" +locations_default(#23082,#10000,95,25,95,25) +hasLocation(#23081,#23082) +#23083=* +tokeninfo(#23083,7,#20001,878,"number") +hasLocation(#23083,#21276) +#23084=* +tokeninfo(#23084,8,#20001,879,")") +#23085=@"loc,{#10000},95,33,95,33" +locations_default(#23085,#10000,95,33,95,33) +hasLocation(#23084,#23085) +#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) +#23089=* +tokeninfo(#23089,8,#20001,882,";") +#23090=@"loc,{#10000},95,42,95,42" +locations_default(#23090,#10000,95,42,95,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) +#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) +#23099=* +tokeninfo(#23099,8,#20001,888,":") +#23100=@"loc,{#10000},96,25,96,25" +locations_default(#23100,#10000,96,25,96,25) +hasLocation(#23099,#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) +#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) +#23107=* +tokeninfo(#23107,8,#20001,893,":") +#23108=@"loc,{#10000},96,43,96,43" +locations_default(#23108,#10000,96,43,96,43) +hasLocation(#23107,#23108) +#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) +#23112=* +tokeninfo(#23112,7,#20001,896,"number") +hasLocation(#23112,#21291) +#23113=* +tokeninfo(#23113,8,#20001,897,";") +#23114=@"loc,{#10000},96,60,96,60" +locations_default(#23114,#10000,96,60,96,60) +hasLocation(#23113,#23114) +#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) +#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) +#23121=* +tokeninfo(#23121,8,#20001,902,"<") +#23122=@"loc,{#10000},97,24,97,24" +locations_default(#23122,#10000,97,24,97,24) +hasLocation(#23121,#23122) +#23123=* +tokeninfo(#23123,7,#20001,903,"typeof") +#23124=@"loc,{#10000},97,25,97,30" +locations_default(#23124,#10000,97,25,97,30) +hasLocation(#23123,#23124) +#23125=* +tokeninfo(#23125,6,#20001,904,"foo") +hasLocation(#23125,#21309) +#23126=* +tokeninfo(#23126,8,#20001,905,">") +#23127=@"loc,{#10000},97,35,97,35" +locations_default(#23127,#10000,97,35,97,35) +hasLocation(#23126,#23127) +#23128=* +tokeninfo(#23128,8,#20001,906,";") +#23129=@"loc,{#10000},97,36,97,36" +locations_default(#23129,#10000,97,36,97,36) +hasLocation(#23128,#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) +#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) +#23135=* +tokeninfo(#23135,8,#20001,910,"(") +#23136=@"loc,{#10000},99,22,99,22" +locations_default(#23136,#10000,99,22,99,22) +hasLocation(#23135,#23136) +#23137=* +tokeninfo(#23137,8,#20001,911,"...") +#23138=@"loc,{#10000},99,23,99,25" +locations_default(#23138,#10000,99,23,99,25) +hasLocation(#23137,#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) +#23142=* +tokeninfo(#23142,7,#20001,914,"any") +hasLocation(#23142,#21327) +#23143=* +tokeninfo(#23143,8,#20001,915,"[") +#23144=@"loc,{#10000},99,35,99,35" +locations_default(#23144,#10000,99,35,99,35) +hasLocation(#23143,#23144) +#23145=* +tokeninfo(#23145,8,#20001,916,"]") +#23146=@"loc,{#10000},99,36,99,36" +locations_default(#23146,#10000,99,36,99,36) +hasLocation(#23145,#23146) +#23147=* +tokeninfo(#23147,8,#20001,917,")") +#23148=@"loc,{#10000},99,37,99,37" +locations_default(#23148,#10000,99,37,99,37) +hasLocation(#23147,#23148) +#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) +#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) +#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) +#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) +#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) +#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) +#23170=* +tokeninfo(#23170,8,#20001,931,"(") +#23171=@"loc,{#10000},100,54,100,54" +locations_default(#23171,#10000,100,54,100,54) +hasLocation(#23170,#23171) +#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) +#23175=* +tokeninfo(#23175,8,#20001,934,":") +#23176=@"loc,{#10000},100,62,100,62" +locations_default(#23176,#10000,100,62,100,62) +hasLocation(#23175,#23176) +#23177=* +tokeninfo(#23177,7,#20001,935,"any") +hasLocation(#23177,#21362) +#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) +#23182=* +tokeninfo(#23182,8,#20001,938,")") +#23183=@"loc,{#10000},100,69,100,69" +locations_default(#23183,#10000,100,69,100,69) +hasLocation(#23182,#23183) +#23184=* +tokeninfo(#23184,8,#20001,939,"=>") +#23185=@"loc,{#10000},100,71,100,72" +locations_default(#23185,#10000,100,71,100,72) +hasLocation(#23184,#23185) +#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) +#23189=* +tokeninfo(#23189,8,#20001,942,"?") +#23190=@"loc,{#10000},100,82,100,82" +locations_default(#23190,#10000,100,82,100,82) +hasLocation(#23189,#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) +#23194=* +tokeninfo(#23194,7,#20001,945,"any") +hasLocation(#23194,#21366) +#23195=* +tokeninfo(#23195,8,#20001,946,";") +#23196=@"loc,{#10000},100,91,100,91" +locations_default(#23196,#10000,100,91,100,91) +hasLocation(#23195,#23196) +#23197=* +tokeninfo(#23197,8,#20001,947,"}") +hasLocation(#23197,#21644) +#23198=* +tokeninfo(#23198,0,#20001,948,"") +#23199=@"loc,{#10000},103,1,103,0" +locations_default(#23199,#10000,103,1,103,0) +hasLocation(#23198,#23199) +#23200=* +entry_cfg_node(#23200,#20001) +#23201=@"loc,{#10000},1,1,1,0" +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) +#23203=* +entry_cfg_node(#23203,#20559) +#23204=@"loc,{#10000},46,3,46,2" +locations_default(#23204,#10000,46,3,46,2) +hasLocation(#23203,#23204) +#23205=* +exit_cfg_node(#23205,#20559) +#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) +#23207=* +entry_cfg_node(#23207,#20525) +#23208=@"loc,{#10000},42,3,42,2" +locations_default(#23208,#10000,42,3,42,2) +hasLocation(#23207,#23208) +#23209=* +exit_cfg_node(#23209,#20525) +#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) +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 new file mode 100644 index 00000000000..65613631b9e --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/ctordecl.ts.trap @@ -0,0 +1,317 @@ +#10000=@"/ctordecl.ts;sourcefile" +files(#10000,"/ctordecl.ts","ctordecl","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,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) +#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,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=* +#20014=* +exprs(#20014,3,#20009,1,"42") +#20015=@"loc,{#10000},2,7,2,8" +locations_default(#20015,#10000,2,7,2,8) +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) +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) +#20024=* +typeexprs(#20024,2,#20013,-6,"string") +#20025=@"loc,{#10000},3,17,3,22" +locations_default(#20025,#10000,3,17,3,22) +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) +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) +#20030=* +scopes(#20030,1) +scopenodes(#20029,#20030) +scopenesting(#20030,#20008) +#20031=@"var;{x};{#20030}" +variables(#20031,"x",#20030) +#20032=* +exprs(#20032,78,#20029,0,"x") +#20033=@"loc,{#10000},4,15,4,15" +locations_default(#20033,#10000,4,15,4,15) +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) +#20052=* +tokeninfo(#20052,8,#20001,2,"{") +#20053=@"loc,{#10000},1,9,1,9" +locations_default(#20053,#10000,1,9,1,9) +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) +#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) +#20062=* +tokeninfo(#20062,8,#20001,8,"(") +#20063=@"loc,{#10000},3,14,3,14" +locations_default(#20063,#10000,3,14,3,14) +hasLocation(#20062,#20063) +#20064=* +tokeninfo(#20064,6,#20001,9,"x") +hasLocation(#20064,#20022) +#20065=* +tokeninfo(#20065,8,#20001,10,":") +#20066=@"loc,{#10000},3,16,3,16" +locations_default(#20066,#10000,3,16,3,16) +hasLocation(#20065,#20066) +#20067=* +tokeninfo(#20067,7,#20001,11,"string") +hasLocation(#20067,#20025) +#20068=* +tokeninfo(#20068,8,#20001,12,")") +#20069=@"loc,{#10000},3,23,3,23" +locations_default(#20069,#10000,3,23,3,23) +hasLocation(#20068,#20069) +#20070=* +tokeninfo(#20070,8,#20001,13,";") +#20071=@"loc,{#10000},3,24,3,24" +locations_default(#20071,#10000,3,24,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) +#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) +#20080=* +tokeninfo(#20080,8,#20001,19,")") +#20081=@"loc,{#10000},4,20,4,20" +locations_default(#20081,#10000,4,20,4,20) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,8,#20001,20,"{") +#20083=@"loc,{#10000},4,22,4,22" +locations_default(#20083,#10000,4,22,4,22) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,8,#20001,21,"}") +#20085=@"loc,{#10000},4,23,4,23" +locations_default(#20085,#10000,4,23,4,23) +hasLocation(#20084,#20085) +#20086=* +tokeninfo(#20086,8,#20001,22,"}") +hasLocation(#20086,#20048) +#20087=* +tokeninfo(#20087,0,#20001,23,"") +#20088=@"loc,{#10000},5,2,5,1" +locations_default(#20088,#10000,5,2,5,1) +hasLocation(#20087,#20088) +#20089=* +entry_cfg_node(#20089,#20001) +#20090=@"loc,{#10000},1,1,1,0" +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) +#20092=* +entry_cfg_node(#20092,#20029) +#20093=@"loc,{#10000},4,3,4,2" +locations_default(#20093,#10000,4,3,4,2) +hasLocation(#20092,#20093) +successor(#20009,#20037) +#20094=* +exit_cfg_node(#20094,#20029) +#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) +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 new file mode 100644 index 00000000000..27aaf5a4664 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/declareClass.ts.trap @@ -0,0 +1,111 @@ +#10000=@"/declareClass.ts;sourcefile" +files(#10000,"/declareClass.ts","declareClass","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,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 {}"," +") +hasLocation(#20016,#20004) +numlines(#20001,1,1,0) +#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) +#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) +#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) +#20028=* +entry_cfg_node(#20028,#20001) +#20029=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..c350394cdeb --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/decorators.ts.trap @@ -0,0 +1,664 @@ +#10000=@"/decorators.ts;sourcefile" +files(#10000,"/decorators.ts","decorators","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,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) +#20016=* +exprs(#20016,78,#20009,0,"Class") +#20017=@"loc,{#10000},2,7,2,11" +locations_default(#20017,#10000,2,7,2,11) +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) +#20026=* +exprs(#20026,0,#20019,0,"method") +#20027=@"loc,{#10000},4,3,4,8" +locations_default(#20027,#10000,4,3,4,8) +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) +#20050=* +exprs(#20050,0,#20043,0,"field") +#20051=@"loc,{#10000},7,3,7,7" +locations_default(#20051,#10000,7,3,7,7) +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) +#20058=* +scopes(#20058,1) +scopenodes(#20052,#20058) +scopenesting(#20058,#20018) +#20059=@"var;{arguments};{#20058}" +variables(#20059,"arguments",#20058) +isArgumentsObject(#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) +#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) +#20081=* +properties(#20081,#20071,2,0,"constructor() {}") +#20082=@"loc,{#10000},14,21,14,20" +locations_default(#20082,#10000,14,21,14,20) +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) +#20085=* +scopes(#20085,1) +scopenodes(#20084,#20085) +scopenesting(#20085,#20080) +#20086=@"var;{arguments};{#20085}" +variables(#20086,"arguments",#20085) +isArgumentsObject(#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) +#20089=* +lines(#20089,#20001,"class Class {"," +") +#20090=@"loc,{#10000},2,1,2,13" +locations_default(#20090,#10000,2,1,2,13) +hasLocation(#20089,#20090) +#20091=* +lines(#20091,#20001," @methodDecorator"," +") +#20092=@"loc,{#10000},3,1,3,18" +locations_default(#20092,#10000,3,1,3,18) +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) +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) +hasLocation(#20095,#20096) +#20097=* +lines(#20097,#20001," @fieldDecorator"," +") +#20098=@"loc,{#10000},6,1,6,17" +locations_default(#20098,#10000,6,1,6,17) +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) +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) +hasLocation(#20101,#20102) +#20103=* +lines(#20103,#20001,""," +") +#20104=@"loc,{#10000},9,1,9,0" +locations_default(#20104,#10000,9,1,9,0) +hasLocation(#20103,#20104) +#20105=* +lines(#20105,#20001,"@functionDecorator"," +") +#20106=@"loc,{#10000},10,1,10,18" +locations_default(#20106,#10000,10,1,10,18) +hasLocation(#20105,#20106) +#20107=* +lines(#20107,#20001,"function fun() {}"," +") +#20108=@"loc,{#10000},11,1,11,17" +locations_default(#20108,#10000,11,1,11,17) +hasLocation(#20107,#20108) +#20109=* +lines(#20109,#20001,""," +") +#20110=@"loc,{#10000},12,1,12,0" +locations_default(#20110,#10000,12,1,12,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) +#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) +#20121=* +tokeninfo(#20121,8,#20001,5,"@") +#20122=@"loc,{#10000},3,3,3,3" +locations_default(#20122,#10000,3,3,3,3) +hasLocation(#20121,#20122) +#20123=* +tokeninfo(#20123,6,#20001,6,"methodDecorator") +hasLocation(#20123,#20024) +#20124=* +tokeninfo(#20124,6,#20001,7,"method") +hasLocation(#20124,#20027) +#20125=* +tokeninfo(#20125,8,#20001,8,"(") +#20126=@"loc,{#10000},4,9,4,9" +locations_default(#20126,#10000,4,9,4,9) +hasLocation(#20125,#20126) +#20127=* +tokeninfo(#20127,8,#20001,9,")") +#20128=@"loc,{#10000},4,10,4,10" +locations_default(#20128,#10000,4,10,4,10) +hasLocation(#20127,#20128) +#20129=* +tokeninfo(#20129,8,#20001,10,":") +#20130=@"loc,{#10000},4,11,4,11" +locations_default(#20130,#10000,4,11,4,11) +hasLocation(#20129,#20130) +#20131=* +tokeninfo(#20131,7,#20001,11,"number") +hasLocation(#20131,#20032) +#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) +#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) +#20140=* +tokeninfo(#20140,8,#20001,17,"}") +#20141=@"loc,{#10000},4,40,4,40" +locations_default(#20141,#10000,4,40,4,40) +hasLocation(#20140,#20141) +#20142=* +tokeninfo(#20142,8,#20001,18,"@") +#20143=@"loc,{#10000},6,3,6,3" +locations_default(#20143,#10000,6,3,6,3) +hasLocation(#20142,#20143) +#20144=* +tokeninfo(#20144,6,#20001,19,"fieldDecorator") +hasLocation(#20144,#20048) +#20145=* +tokeninfo(#20145,6,#20001,20,"field") +hasLocation(#20145,#20051) +#20146=* +tokeninfo(#20146,8,#20001,21,":") +#20147=@"loc,{#10000},7,8,7,8" +locations_default(#20147,#10000,7,8,7,8) +hasLocation(#20146,#20147) +#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) +#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) +#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) +#20158=* +tokeninfo(#20158,6,#20001,28,"fun") +hasLocation(#20158,#20064) +#20159=* +tokeninfo(#20159,8,#20001,29,"(") +#20160=@"loc,{#10000},11,13,11,13" +locations_default(#20160,#10000,11,13,11,13) +hasLocation(#20159,#20160) +#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) +#20167=* +tokeninfo(#20167,8,#20001,33,"@") +#20168=@"loc,{#10000},13,1,13,1" +locations_default(#20168,#10000,13,1,13,1) +hasLocation(#20167,#20168) +#20169=* +tokeninfo(#20169,6,#20001,34,"classDecorator2") +hasLocation(#20169,#20076) +#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) +#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) +#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) +#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) +#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=* +exit_cfg_node(#20183,#20001) +hasLocation(#20183,#20180) +successor(#20069,#20078) +successor(#20084,#20081) +#20184=* +entry_cfg_node(#20184,#20084) +hasLocation(#20184,#20082) +#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) +#20186=* +entry_cfg_node(#20186,#20061) +#20187=@"loc,{#10000},10,1,10,0" +locations_default(#20187,#10000,10,1,10,0) +hasLocation(#20186,#20187) +#20188=* +exit_cfg_node(#20188,#20061) +#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) +#20190=* +entry_cfg_node(#20190,#20052) +hasLocation(#20190,#20056) +successor(#20043,#20060) +#20191=* +exit_cfg_node(#20191,#20052) +hasLocation(#20191,#20056) +successor(#20060,#20191) +successor(#20190,#20050) +successor(#20057,#20052) +successor(#20055,#20009) +successor(#20028,#20019) +#20192=* +entry_cfg_node(#20192,#20028) +#20193=@"loc,{#10000},4,3,4,2" +locations_default(#20193,#10000,4,3,4,2) +hasLocation(#20192,#20193) +#20194=* +exit_cfg_node(#20194,#20028) +#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) +numlines(#10000,14,11,0) +filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/emptydecls.ts.trap b/javascript/extractor/tests/ts/output/trap/emptydecls.ts.trap new file mode 100644 index 00000000000..8ebf40c9f25 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/emptydecls.ts.trap @@ -0,0 +1,30 @@ +#10000=@"/emptydecls.ts;sourcefile" +files(#10000,"/emptydecls.ts","emptydecls","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,1,1" +locations_default(#20002,#10000,1,1,1,1) +hasLocation(#20001,#20002) +#20003=* +jsParseErrors(#20003,#20001,"Error: Unexpected token","var; +") +#20004=@"loc,{#10000},1,4,1,4" +locations_default(#20004,#10000,1,4,1,4) +hasLocation(#20003,#20004) +#20005=* +lines(#20005,#20001,"var;"," +") +#20006=@"loc,{#10000},1,1,1,4" +locations_default(#20006,#10000,1,1,1,4) +hasLocation(#20005,#20006) +numlines(#20001,1,0,0) +numlines(#10000,1,0,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 new file mode 100644 index 00000000000..b1581bf4172 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/enum.ts.trap @@ -0,0 +1,1112 @@ +#10000=@"/enum.ts;sourcefile" +files(#10000,"/enum.ts","enum","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,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) +#20034=* +properties(#20034,#20023,1,7,"red = 1") +#20035=@"loc,{#10000},1,14,1,20" +locations_default(#20035,#10000,1,14,1,20) +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) +hasLocation(#20036,#20037) +enclosingStmt(#20036,#20023) +exprContainers(#20036,#20001) +literals("red","red",#20036) +decl(#20036,#20028) +typedecl(#20036,#20029) +#20038=* +exprs(#20038,3,#20034,1,"1") +#20039=@"loc,{#10000},1,20,1,20" +locations_default(#20039,#10000,1,20,1,20) +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) +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) +#20046=* +stmts(#20046,36,#20001,1,"declare ... a, b }") +#20047=@"loc,{#10000},3,1,3,34" +locations_default(#20047,#10000,3,1,3,34) +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) +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) +#20058=* +properties(#20058,#20046,2,7,"b") +#20059=@"loc,{#10000},3,32,3,32" +locations_default(#20059,#10000,3,32,3,32) +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) +#20070=* +properties(#20070,#20061,1,7,"a = 1+2") +#20071=@"loc,{#10000},4,24,4,30" +locations_default(#20071,#10000,4,24,4,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) +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) +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) +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) +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) +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) +#20092=* +properties(#20092,#20083,1,7,"a") +#20093=@"loc,{#10000},5,40,5,40" +locations_default(#20093,#10000,5,40,5,40) +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) +#20098=* +stmts(#20098,17,#20001,4,"functio ... rn x; }") +#20099=@"loc,{#10000},7,1,7,29" +locations_default(#20099,#10000,7,1,7,29) +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) +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) +#20104=* +exprs(#20104,78,#20098,0,"x") +#20105=@"loc,{#10000},7,14,7,14" +locations_default(#20105,#10000,7,14,7,14) +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) +#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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +#20161=* +exprs(#20161,3,#20157,1,"2") +#20162=@"loc,{#10000},18,37,18,37" +locations_default(#20162,#10000,18,37,18,37) +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) +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) +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) +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) +#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) +#20175=* +lines(#20175,#20001,""," +") +#20176=@"loc,{#10000},6,1,6,0" +locations_default(#20176,#10000,6,1,6,0) +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) +#20182=* +lines(#20182,#20001," a = foo(1 + 2)"," +") +#20183=@"loc,{#10000},10,1,10,16" +locations_default(#20183,#10000,10,1,10,16) +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) +hasLocation(#20184,#20185) +#20186=* +lines(#20186,#20001,""," +") +#20187=@"loc,{#10000},12,1,12,0" +locations_default(#20187,#10000,12,1,12,0) +hasLocation(#20186,#20187) +#20188=* +lines(#20188,#20001,"enum StringLiteralEnumMember {"," +") +#20189=@"loc,{#10000},13,1,13,30" +locations_default(#20189,#10000,13,1,13,30) +hasLocation(#20188,#20189) +#20190=* +lines(#20190,#20001," ""a"" = 2,"," +") +#20191=@"loc,{#10000},14,1,14,10" +locations_default(#20191,#10000,14,1,14,10) +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) +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) +hasLocation(#20194,#20195) +#20196=* +lines(#20196,#20001,""," +") +#20197=@"loc,{#10000},17,1,17,0" +locations_default(#20197,#10000,17,1,17,0) +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) +#20221=* +tokeninfo(#20221,8,#20001,14,"{") +#20222=@"loc,{#10000},3,27,3,27" +locations_default(#20222,#10000,3,27,3,27) +hasLocation(#20221,#20222) +#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) +#20233=* +tokeninfo(#20233,6,#20001,21,"ConstEnum") +hasLocation(#20233,#20064) +#20234=* +tokeninfo(#20234,8,#20001,22,"{") +#20235=@"loc,{#10000},4,22,4,22" +locations_default(#20235,#10000,4,22,4,22) +hasLocation(#20234,#20235) +#20236=* +tokeninfo(#20236,6,#20001,23,"a") +hasLocation(#20236,#20073) +#20237=* +tokeninfo(#20237,8,#20001,24,"=") +#20238=@"loc,{#10000},4,26,4,26" +locations_default(#20238,#10000,4,26,4,26) +hasLocation(#20237,#20238) +#20239=* +tokeninfo(#20239,3,#20001,25,"1") +hasLocation(#20239,#20077) +#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) +#20245=* +tokeninfo(#20245,6,#20001,29,"b") +hasLocation(#20245,#20081) +#20246=* +tokeninfo(#20246,8,#20001,30,"}") +#20247=@"loc,{#10000},4,35,4,35" +locations_default(#20247,#10000,4,35,4,35) +hasLocation(#20246,#20247) +#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) +#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) +#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) +#20261=* +tokeninfo(#20261,8,#20001,39,"}") +#20262=@"loc,{#10000},5,45,5,45" +locations_default(#20262,#10000,5,45,5,45) +hasLocation(#20261,#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) +#20265=* +tokeninfo(#20265,6,#20001,41,"foo") +hasLocation(#20265,#20101) +#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) +#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) +#20275=* +tokeninfo(#20275,6,#20001,47,"x") +hasLocation(#20275,#20112) +#20276=* +tokeninfo(#20276,8,#20001,48,";") +#20277=@"loc,{#10000},7,27,7,27" +locations_default(#20277,#10000,7,27,7,27) +hasLocation(#20276,#20277) +#20278=* +tokeninfo(#20278,8,#20001,49,"}") +#20279=@"loc,{#10000},7,29,7,29" +locations_default(#20279,#10000,7,29,7,29) +hasLocation(#20278,#20279) +#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) +#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) +#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) +#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) +#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) +#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) +#20301=* +tokeninfo(#20301,8,#20001,64,"{") +#20302=@"loc,{#10000},13,30,13,30" +locations_default(#20302,#10000,13,30,13,30) +hasLocation(#20301,#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) +#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) +#20313=* +tokeninfo(#20313,8,#20001,72,"}") +hasLocation(#20313,#20195) +#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) +#20317=* +tokeninfo(#20317,8,#20001,75,":") +#20318=@"loc,{#10000},18,7,18,7" +locations_default(#20318,#10000,18,7,18,7) +hasLocation(#20317,#20318) +#20319=* +tokeninfo(#20319,6,#20001,76,"StringLiteralEnumMember") +hasLocation(#20319,#20166) +#20320=* +tokeninfo(#20320,8,#20001,77,".") +#20321=@"loc,{#10000},18,32,18,32" +locations_default(#20321,#10000,18,32,18,32) +hasLocation(#20320,#20321) +#20322=* +tokeninfo(#20322,6,#20001,78,"a") +hasLocation(#20322,#20168) +#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) +#20326=* +tokeninfo(#20326,0,#20001,81,"") +#20327=@"loc,{#10000},19,1,19,0" +locations_default(#20327,#10000,19,1,19,0) +hasLocation(#20326,#20327) +#20328=* +entry_cfg_node(#20328,#20001) +#20329=@"loc,{#10000},1,1,1,0" +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) +#20331=* +entry_cfg_node(#20331,#20098) +#20332=@"loc,{#10000},7,1,7,0" +locations_default(#20332,#10000,7,1,7,0) +hasLocation(#20331,#20332) +#20333=* +exit_cfg_node(#20333,#20098) +#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) +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 new file mode 100644 index 00000000000..3a09f8959a9 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/export.ts.trap @@ -0,0 +1,327 @@ +#10000=@"/export.ts;sourcefile" +files(#10000,"/export.ts","export","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,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) +#20008=* +stmts(#20008,30,#20001,0,"export ... o = 42;") +#20009=@"loc,{#10000},1,1,1,22" +locations_default(#20009,#10000,1,1,1,22) +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) +hasLocation(#20010,#20011) +stmtContainers(#20010,#20001) +#20012=* +exprs(#20012,64,#20010,0,"foo = 42") +#20013=@"loc,{#10000},1,14,1,21" +locations_default(#20013,#10000,1,14,1,21) +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) +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) +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) +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) +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) +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) +#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) +#20032=* +stmts(#20032,29,#20001,2,"export ... f() {}") +#20033=@"loc,{#10000},5,1,5,30" +locations_default(#20033,#10000,5,1,5,30) +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) +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) +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) +#20040=* +stmts(#20040,1,#20034,-2,"{}") +#20041=@"loc,{#10000},5,29,5,30" +locations_default(#20041,#10000,5,29,5,30) +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) +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) +#20048=* +lines(#20048,#20001,""," +") +#20049=@"loc,{#10000},4,1,4,0" +locations_default(#20049,#10000,4,1,4,0) +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) +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) +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) +#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) +#20066=* +tokeninfo(#20066,6,#20001,8,"C") +hasLocation(#20066,#20023) +#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) +#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) +#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) +#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) +#20084=* +tokeninfo(#20084,8,#20001,18,"}") +#20085=@"loc,{#10000},5,30,5,30" +locations_default(#20085,#10000,5,30,5,30) +hasLocation(#20084,#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) +#20089=* +entry_cfg_node(#20089,#20001) +#20090=@"loc,{#10000},1,1,1,0" +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) +#20092=* +entry_cfg_node(#20092,#20034) +#20093=@"loc,{#10000},5,16,5,15" +locations_default(#20093,#10000,5,16,5,15) +hasLocation(#20092,#20093) +#20094=* +exit_cfg_node(#20094,#20034) +#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) +#20096=* +entry_cfg_node(#20096,#20028) +hasLocation(#20096,#20026) +#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) +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 new file mode 100644 index 00000000000..cf91787cd6c --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/export2.ts.trap @@ -0,0 +1,75 @@ +#10000=@"/export2.ts;sourcefile" +files(#10000,"/export2.ts","export2","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,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;"," +") +hasLocation(#20008,#20005) +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) +#20016=* +tokeninfo(#20016,0,#20001,4,"") +#20017=@"loc,{#10000},2,1,2,0" +locations_default(#20017,#10000,2,1,2,0) +hasLocation(#20016,#20017) +#20018=* +entry_cfg_node(#20018,#20001) +#20019=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..59b9c422840 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/exportasnamespace.d.ts.trap @@ -0,0 +1,149 @@ +#10000=@"/exportasnamespace.d.ts;sourcefile" +files(#10000,"/exportasnamespace.d.ts","exportasnamespace.d","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,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) +#20004=* +stmts(#20004,30,#20001,0,"export ... foo();") +#20005=@"loc,{#10000},1,1,1,30" +locations_default(#20005,#10000,1,1,1,30) +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) +#20026=* +tokeninfo(#20026,8,#20001,4,"(") +#20027=@"loc,{#10000},1,28,1,28" +locations_default(#20027,#10000,1,28,1,28) +hasLocation(#20026,#20027) +#20028=* +tokeninfo(#20028,8,#20001,5,")") +#20029=@"loc,{#10000},1,29,1,29" +locations_default(#20029,#10000,1,29,1,29) +hasLocation(#20028,#20029) +#20030=* +tokeninfo(#20030,8,#20001,6,";") +#20031=@"loc,{#10000},1,30,1,30" +locations_default(#20031,#10000,1,30,1,30) +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) +#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) +#20039=* +tokeninfo(#20039,8,#20001,11,";") +#20040=@"loc,{#10000},2,24,2,24" +locations_default(#20040,#10000,2,24,2,24) +hasLocation(#20039,#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) +#20043=* +entry_cfg_node(#20043,#20001) +#20044=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..0bd00d25127 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/exportassign.ts.trap @@ -0,0 +1,75 @@ +#10000=@"/exportassign.ts;sourcefile" +files(#10000,"/exportassign.ts","exportassign","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,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;"," +") +hasLocation(#20008,#20005) +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) +#20016=* +tokeninfo(#20016,0,#20001,4,"") +#20017=@"loc,{#10000},2,1,2,0" +locations_default(#20017,#10000,2,1,2,0) +hasLocation(#20016,#20017) +#20018=* +entry_cfg_node(#20018,#20001) +#20019=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..7ebb546ca4d --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/exprs.ts.trap @@ -0,0 +1,349 @@ +#10000=@"/exprs.ts;sourcefile" +files(#10000,"/exprs.ts","exprs","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,5,1" +locations_default(#20002,#10000,1,1,5,1) +hasLocation(#20001,#20002) +#20003=@"var;{f};{#20000}" +variables(#20003,"f",#20000) +#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) {"," +") +#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) +indentation(#10000,2," ",2) +#20049=* +lines(#20049,#20001," x, y;"," +") +#20050=@"loc,{#10000},3,1,3,7" +locations_default(#20050,#10000,3,1,3,7) +hasLocation(#20049,#20050) +indentation(#10000,3," ",2) +#20051=* +lines(#20051,#20001," [x, y] = z;"," +") +#20052=@"loc,{#10000},4,1,4,13" +locations_default(#20052,#10000,4,1,4,13) +hasLocation(#20051,#20052) +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) +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) +#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) +#20063=* +tokeninfo(#20063,8,#20001,5,"{") +#20064=@"loc,{#10000},1,15,1,15" +locations_default(#20064,#10000,1,15,1,15) +hasLocation(#20063,#20064) +#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) +#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) +#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) +#20074=* +tokeninfo(#20074,8,#20001,12,",") +#20075=@"loc,{#10000},3,4,3,4" +locations_default(#20075,#10000,3,4,3,4) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,6,#20001,13,"y") +hasLocation(#20076,#20032) +#20077=* +tokeninfo(#20077,8,#20001,14,";") +#20078=@"loc,{#10000},3,7,3,7" +locations_default(#20078,#10000,3,7,3,7) +hasLocation(#20077,#20078) +#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) +#20082=* +tokeninfo(#20082,8,#20001,17,",") +#20083=@"loc,{#10000},4,5,4,5" +locations_default(#20083,#10000,4,5,4,5) +hasLocation(#20082,#20083) +#20084=* +tokeninfo(#20084,6,#20001,18,"y") +hasLocation(#20084,#20042) +#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) +#20090=* +tokeninfo(#20090,8,#20001,22,";") +#20091=@"loc,{#10000},4,13,4,13" +locations_default(#20091,#10000,4,13,4,13) +hasLocation(#20090,#20091) +#20092=* +tokeninfo(#20092,8,#20001,23,"}") +hasLocation(#20092,#20054) +#20093=* +tokeninfo(#20093,0,#20001,24,"") +#20094=@"loc,{#10000},5,2,5,1" +locations_default(#20094,#10000,5,2,5,1) +hasLocation(#20093,#20094) +#20095=* +entry_cfg_node(#20095,#20001) +#20096=@"loc,{#10000},1,1,1,0" +locations_default(#20096,#10000,1,1,1,0) +hasLocation(#20095,#20096) +#20097=* +exit_cfg_node(#20097,#20001) +hasLocation(#20097,#20094) +successor(#20004,#20097) +#20098=* +entry_cfg_node(#20098,#20004) +hasLocation(#20098,#20096) +#20099=* +exit_cfg_node(#20099,#20004) +hasLocation(#20099,#20094) +successor(#20012,#20017) +successor(#20033,#20037) +successor(#20043,#20035) +successor(#20037,#20039) +successor(#20041,#20043) +successor(#20039,#20041) +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) +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 new file mode 100644 index 00000000000..bdec1bf471f --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/externalmodule.ts.trap @@ -0,0 +1,371 @@ +#10000=@"/externalmodule.ts;sourcefile" +files(#10000,"/externalmodule.ts","externalmodule","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,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) +#20010=* +stmts(#20010,31,#20003,0,"module ... {}\n }") +#20011=@"loc,{#10000},2,3,4,3" +locations_default(#20011,#10000,2,3,4,3) +hasLocation(#20010,#20011) +stmtContainers(#20010,#20003) +#20012=* +exprs(#20012,78,#20010,-1,"M") +#20013=@"loc,{#10000},2,10,2,10" +locations_default(#20013,#10000,2,10,2,10) +hasLocation(#20012,#20013) +enclosingStmt(#20012,#20010) +exprContainers(#20012,#20003) +literals("M","M",#20012) +namespacedecl(#20012,#20008) +#20014=* +scopes(#20014,9) +scopenodes(#20010,#20014) +scopenesting(#20014,#20007) +#20015=@"local_type_name;{I};{#20014}" +local_type_names(#20015,"I",#20014) +#20016=* +stmts(#20016,30,#20010,0,"export ... ce I {}") +#20017=@"loc,{#10000},3,5,3,25" +locations_default(#20017,#10000,3,5,3,25) +hasLocation(#20016,#20017) +stmtContainers(#20016,#20010) +#20018=* +stmts(#20018,34,#20016,-1,"interface I {}") +#20019=@"loc,{#10000},3,12,3,25" +locations_default(#20019,#10000,3,12,3,25) +hasLocation(#20018,#20019) +stmtContainers(#20018,#20010) +#20020=* +typeexprs(#20020,1,#20018,0,"I") +#20021=@"loc,{#10000},3,22,3,22" +locations_default(#20021,#10000,3,22,3,22) +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) +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) +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) +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) +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) +#20066=* +tokeninfo(#20066,8,#20001,3,"{") +#20067=@"loc,{#10000},1,20,1,20" +locations_default(#20067,#10000,1,20,1,20) +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) +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) +#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) +#20082=* +tokeninfo(#20082,8,#20001,12,"}") +#20083=@"loc,{#10000},4,3,4,3" +locations_default(#20083,#10000,4,3,4,3) +hasLocation(#20082,#20083) +#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) +#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) +#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) +#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) +#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) +#20109=* +tokeninfo(#20109,8,#20001,28,";") +#20110=@"loc,{#10000},8,13,8,13" +locations_default(#20110,#10000,8,13,8,13) +hasLocation(#20109,#20110) +#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) +#20114=* +entry_cfg_node(#20114,#20001) +#20115=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..7d3e1fd7ae9 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/functiondecorators.ts.trap @@ -0,0 +1,1364 @@ +#10000=@"/functiondecorators.ts;sourcefile" +files(#10000,"/functiondecorators.ts","functiondecorators","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;{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) +#20012=* +typeexprs(#20012,2,#20007,2,"any") +#20013=@"loc,{#10000},1,17,1,19" +locations_default(#20013,#10000,1,17,1,19) +hasLocation(#20012,#20013) +enclosingStmt(#20012,#20005) +exprContainers(#20012,#20001) +literals("any","any",#20012) +#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) +hasLocation(#20014,#20015) +stmtContainers(#20014,#20001) +hasDeclareKeyword(#20014) +#20016=* +exprs(#20016,64,#20014,0,"B : any") +#20017=@"loc,{#10000},2,13,2,19" +locations_default(#20017,#10000,2,13,2,19) +hasLocation(#20016,#20017) +enclosingStmt(#20016,#20014) +exprContainers(#20016,#20001) +#20018=* +exprs(#20018,78,#20016,0,"B") +#20019=@"loc,{#10000},2,13,2,13" +locations_default(#20019,#10000,2,13,2,13) +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) +#20036=* +properties(#20036,#20031,2,0,"m1(none) {}") +#20037=@"loc,{#10000},6,3,6,13" +locations_default(#20037,#10000,6,3,6,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) +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) +#20046=* +stmts(#20046,1,#20040,-2,"{}") +#20047=@"loc,{#10000},6,12,6,13" +locations_default(#20047,#10000,6,12,6,13) +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) +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) +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) +#20058=* +exprs(#20058,104,#20052,-8,"@A") +#20059=@"loc,{#10000},7,6,7,7" +locations_default(#20059,#10000,7,6,7,7) +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) +#20070=* +scopes(#20070,1) +scopenodes(#20069,#20070) +scopenesting(#20070,#20035) +#20071=@"var;{ab};{#20070}" +variables(#20071,"ab",#20070) +#20072=* +exprs(#20072,78,#20069,0,"ab") +#20073=@"loc,{#10000},8,12,8,13" +locations_default(#20073,#10000,8,12,8,13) +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) +#20092=* +scopes(#20092,1) +scopenodes(#20091,#20092) +scopenesting(#20092,#20035) +#20093=@"var;{none};{#20092}" +variables(#20093,"none",#20092) +#20094=* +exprs(#20094,78,#20091,0,"none") +#20095=@"loc,{#10000},10,6,10,9" +locations_default(#20095,#10000,10,6,10,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) +#20100=* +exprs(#20100,104,#20091,-12,"@A") +#20101=@"loc,{#10000},10,12,10,13" +locations_default(#20101,#10000,10,12,10,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) +#20112=* +scopes(#20112,1) +scopenodes(#20111,#20112) +scopenesting(#20112,#20035) +#20113=@"var;{none};{#20112}" +variables(#20113,"none",#20112) +#20114=* +exprs(#20114,78,#20111,0,"none") +#20115=@"loc,{#10000},11,6,11,9" +locations_default(#20115,#10000,11,6,11,9) +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) +#20120=* +exprs(#20120,104,#20111,-12,"@A @B") +#20121=@"loc,{#10000},11,12,11,16" +locations_default(#20121,#10000,11,12,11,16) +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) +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) +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) +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) +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) +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) +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) +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) +#20142=* +exprs(#20142,78,#20136,1,"b") +#20143=@"loc,{#10000},13,15,13,15" +locations_default(#20143,#10000,13,15,13,15) +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) +#20148=* +exprs(#20148,79,#20147,0,"A") +#20149=@"loc,{#10000},13,7,13,7" +locations_default(#20149,#10000,13,7,13,7) +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) +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) +#20162=* +scopes(#20162,1) +scopenodes(#20161,#20162) +scopenesting(#20162,#20035) +#20163=@"var;{a};{#20162}" +variables(#20163,"a",#20162) +#20164=* +exprs(#20164,78,#20161,0,"a") +#20165=@"loc,{#10000},14,9,14,9" +locations_default(#20165,#10000,14,9,14,9) +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) +#20170=* +exprs(#20170,104,#20161,-8,"@A") +#20171=@"loc,{#10000},14,6,14,7" +locations_default(#20171,#10000,14,6,14,7) +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) +#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) +#20194=* +lines(#20194,#20001,"declare var A : any;"," +") +hasLocation(#20194,#20006) +#20195=* +lines(#20195,#20001,"declare var B : any;"," +") +hasLocation(#20195,#20015) +#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) +#20219=* +lines(#20219,#20001,"}"," +") +#20220=@"loc,{#10000},15,1,15,1" +locations_default(#20220,#10000,15,1,15,1) +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) +#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) +#20229=* +tokeninfo(#20229,8,#20001,5,";") +#20230=@"loc,{#10000},1,20,1,20" +locations_default(#20230,#10000,1,20,1,20) +hasLocation(#20229,#20230) +#20231=* +tokeninfo(#20231,7,#20001,6,"declare") +#20232=@"loc,{#10000},2,1,2,7" +locations_default(#20232,#10000,2,1,2,7) +hasLocation(#20231,#20232) +#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) +#20235=* +tokeninfo(#20235,6,#20001,8,"B") +hasLocation(#20235,#20019) +#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) +#20239=* +tokeninfo(#20239,8,#20001,11,";") +#20240=@"loc,{#10000},2,20,2,20" +locations_default(#20240,#10000,2,20,2,20) +hasLocation(#20239,#20240) +#20241=* +tokeninfo(#20241,7,#20001,12,"declare") +#20242=@"loc,{#10000},3,1,3,7" +locations_default(#20242,#10000,3,1,3,7) +hasLocation(#20241,#20242) +#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) +#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) +#20248=* +tokeninfo(#20248,7,#20001,16,"any") +hasLocation(#20248,#20030) +#20249=* +tokeninfo(#20249,8,#20001,17,";") +#20250=@"loc,{#10000},3,20,3,20" +locations_default(#20250,#10000,3,20,3,20) +hasLocation(#20249,#20250) +#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) +#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) +#20257=* +tokeninfo(#20257,8,#20001,22,"(") +#20258=@"loc,{#10000},6,5,6,5" +locations_default(#20258,#10000,6,5,6,5) +hasLocation(#20257,#20258) +#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) +#20266=* +tokeninfo(#20266,6,#20001,27,"m2") +hasLocation(#20266,#20051) +#20267=* +tokeninfo(#20267,8,#20001,28,"(") +#20268=@"loc,{#10000},7,5,7,5" +locations_default(#20268,#10000,7,5,7,5) +hasLocation(#20267,#20268) +#20269=* +tokeninfo(#20269,8,#20001,29,"@") +#20270=@"loc,{#10000},7,6,7,6" +locations_default(#20270,#10000,7,6,7,6) +hasLocation(#20269,#20270) +#20271=* +tokeninfo(#20271,6,#20001,30,"A") +hasLocation(#20271,#20062) +#20272=* +tokeninfo(#20272,6,#20001,31,"a") +hasLocation(#20272,#20056) +#20273=* +tokeninfo(#20273,8,#20001,32,")") +#20274=@"loc,{#10000},7,10,7,10" +locations_default(#20274,#10000,7,10,7,10) +hasLocation(#20273,#20274) +#20275=* +tokeninfo(#20275,8,#20001,33,"{") +#20276=@"loc,{#10000},7,12,7,12" +locations_default(#20276,#10000,7,12,7,12) +hasLocation(#20275,#20276) +#20277=* +tokeninfo(#20277,8,#20001,34,"}") +#20278=@"loc,{#10000},7,13,7,13" +locations_default(#20278,#10000,7,13,7,13) +hasLocation(#20277,#20278) +#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) +#20282=* +tokeninfo(#20282,8,#20001,37,"@") +#20283=@"loc,{#10000},8,6,8,6" +locations_default(#20283,#10000,8,6,8,6) +hasLocation(#20282,#20283) +#20284=* +tokeninfo(#20284,6,#20001,38,"A") +hasLocation(#20284,#20080) +#20285=* +tokeninfo(#20285,8,#20001,39,"@") +#20286=@"loc,{#10000},8,9,8,9" +locations_default(#20286,#10000,8,9,8,9) +hasLocation(#20285,#20286) +#20287=* +tokeninfo(#20287,6,#20001,40,"B") +hasLocation(#20287,#20084) +#20288=* +tokeninfo(#20288,6,#20001,41,"ab") +hasLocation(#20288,#20073) +#20289=* +tokeninfo(#20289,8,#20001,42,")") +#20290=@"loc,{#10000},8,14,8,14" +locations_default(#20290,#10000,8,14,8,14) +hasLocation(#20289,#20290) +#20291=* +tokeninfo(#20291,8,#20001,43,"{") +#20292=@"loc,{#10000},8,16,8,16" +locations_default(#20292,#10000,8,16,8,16) +hasLocation(#20291,#20292) +#20293=* +tokeninfo(#20293,8,#20001,44,"}") +#20294=@"loc,{#10000},8,17,8,17" +locations_default(#20294,#10000,8,17,8,17) +hasLocation(#20293,#20294) +#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) +#20299=* +tokeninfo(#20299,8,#20001,48,",") +#20300=@"loc,{#10000},10,10,10,10" +locations_default(#20300,#10000,10,10,10,10) +hasLocation(#20299,#20300) +#20301=* +tokeninfo(#20301,8,#20001,49,"@") +#20302=@"loc,{#10000},10,12,10,12" +locations_default(#20302,#10000,10,12,10,12) +hasLocation(#20301,#20302) +#20303=* +tokeninfo(#20303,6,#20001,50,"A") +hasLocation(#20303,#20104) +#20304=* +tokeninfo(#20304,6,#20001,51,"a") +hasLocation(#20304,#20098) +#20305=* +tokeninfo(#20305,8,#20001,52,")") +#20306=@"loc,{#10000},10,16,10,16" +locations_default(#20306,#10000,10,16,10,16) +hasLocation(#20305,#20306) +#20307=* +tokeninfo(#20307,8,#20001,53,"{") +#20308=@"loc,{#10000},10,18,10,18" +locations_default(#20308,#10000,10,18,10,18) +hasLocation(#20307,#20308) +#20309=* +tokeninfo(#20309,8,#20001,54,"}") +#20310=@"loc,{#10000},10,19,10,19" +locations_default(#20310,#10000,10,19,10,19) +hasLocation(#20309,#20310) +#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) +#20315=* +tokeninfo(#20315,8,#20001,58,",") +#20316=@"loc,{#10000},11,10,11,10" +locations_default(#20316,#10000,11,10,11,10) +hasLocation(#20315,#20316) +#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) +#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) +#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) +#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) +#20331=* +tokeninfo(#20331,8,#20001,68,"(") +#20332=@"loc,{#10000},13,5,13,5" +locations_default(#20332,#10000,13,5,13,5) +hasLocation(#20331,#20332) +#20333=* +tokeninfo(#20333,8,#20001,69,"@") +#20334=@"loc,{#10000},13,6,13,6" +locations_default(#20334,#10000,13,6,13,6) +hasLocation(#20333,#20334) +#20335=* +tokeninfo(#20335,6,#20001,70,"A") +hasLocation(#20335,#20149) +#20336=* +tokeninfo(#20336,6,#20001,71,"a") +hasLocation(#20336,#20140) +#20337=* +tokeninfo(#20337,8,#20001,72,",") +#20338=@"loc,{#10000},13,10,13,10" +locations_default(#20338,#10000,13,10,13,10) +hasLocation(#20337,#20338) +#20339=* +tokeninfo(#20339,8,#20001,73,"@") +#20340=@"loc,{#10000},13,12,13,12" +locations_default(#20340,#10000,13,12,13,12) +hasLocation(#20339,#20340) +#20341=* +tokeninfo(#20341,6,#20001,74,"B") +hasLocation(#20341,#20154) +#20342=* +tokeninfo(#20342,6,#20001,75,"b") +hasLocation(#20342,#20143) +#20343=* +tokeninfo(#20343,8,#20001,76,")") +#20344=@"loc,{#10000},13,16,13,16" +locations_default(#20344,#10000,13,16,13,16) +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) +#20347=* +tokeninfo(#20347,8,#20001,78,"}") +#20348=@"loc,{#10000},13,19,13,19" +locations_default(#20348,#10000,13,19,13,19) +hasLocation(#20347,#20348) +#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) +#20355=* +tokeninfo(#20355,6,#20001,83,"a") +hasLocation(#20355,#20165) +#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) +#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) +#20364=* +tokeninfo(#20364,6,#20001,89,"bc") +hasLocation(#20364,#20168) +#20365=* +tokeninfo(#20365,8,#20001,90,")") +#20366=@"loc,{#10000},14,20,14,20" +locations_default(#20366,#10000,14,20,14,20) +hasLocation(#20365,#20366) +#20367=* +tokeninfo(#20367,8,#20001,91,"{") +#20368=@"loc,{#10000},14,22,14,22" +locations_default(#20368,#10000,14,22,14,22) +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) +#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) +#20374=* +entry_cfg_node(#20374,#20001) +#20375=@"loc,{#10000},1,1,1,0" +locations_default(#20375,#10000,1,1,1,0) +hasLocation(#20374,#20375) +#20376=* +exit_cfg_node(#20376,#20001) +hasLocation(#20376,#20373) +successor(#20190,#20187) +#20377=* +entry_cfg_node(#20377,#20190) +hasLocation(#20377,#20188) +#20378=* +exit_cfg_node(#20378,#20190) +hasLocation(#20378,#20188) +successor(#20193,#20378) +successor(#20377,#20193) +successor(#20189,#20190) +successor(#20187,#20031) +successor(#20161,#20157) +#20379=* +entry_cfg_node(#20379,#20161) +#20380=@"loc,{#10000},14,3,14,2" +locations_default(#20380,#10000,14,3,14,2) +hasLocation(#20379,#20380) +#20381=* +exit_cfg_node(#20381,#20161) +#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) +#20383=* +entry_cfg_node(#20383,#20136) +#20384=@"loc,{#10000},13,3,13,2" +locations_default(#20384,#10000,13,3,13,2) +hasLocation(#20383,#20384) +#20385=* +exit_cfg_node(#20385,#20136) +#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) +#20387=* +entry_cfg_node(#20387,#20111) +#20388=@"loc,{#10000},11,3,11,2" +locations_default(#20388,#10000,11,3,11,2) +hasLocation(#20387,#20388) +#20389=* +exit_cfg_node(#20389,#20111) +#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) +#20391=* +entry_cfg_node(#20391,#20091) +#20392=@"loc,{#10000},10,3,10,2" +locations_default(#20392,#10000,10,3,10,2) +hasLocation(#20391,#20392) +#20393=* +exit_cfg_node(#20393,#20091) +#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) +#20395=* +entry_cfg_node(#20395,#20069) +#20396=@"loc,{#10000},8,3,8,2" +locations_default(#20396,#10000,8,3,8,2) +hasLocation(#20395,#20396) +#20397=* +exit_cfg_node(#20397,#20069) +#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) +#20399=* +entry_cfg_node(#20399,#20052) +#20400=@"loc,{#10000},7,3,7,2" +locations_default(#20400,#10000,7,3,7,2) +hasLocation(#20399,#20400) +#20401=* +exit_cfg_node(#20401,#20052) +#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) +#20403=* +entry_cfg_node(#20403,#20040) +#20404=@"loc,{#10000},6,3,6,2" +locations_default(#20404,#10000,6,3,6,2) +hasLocation(#20403,#20404) +#20405=* +exit_cfg_node(#20405,#20040) +#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) +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 new file mode 100644 index 00000000000..73b76774111 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/hello.ts.trap @@ -0,0 +1,326 @@ +#10000=@"/hello.ts;sourcefile" +files(#10000,"/hello.ts","hello","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,6,0" +locations_default(#20002,#10000,1,1,6,0) +hasLocation(#20001,#20002) +#20003=@"var;{greeter};{#20000}" +variables(#20003,"greeter",#20000) +#20004=* +stmts(#20004,17,#20001,0,"functio ... ""!"";\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,"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,"}"," +") +#20047=@"loc,{#10000},3,1,3,1" +locations_default(#20047,#10000,3,1,3,1) +hasLocation(#20046,#20047) +#20048=* +lines(#20048,#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""));"," +") +hasLocation(#20050,#20030) +numlines(#20001,5,4,0) +#20051=* +tokeninfo(#20051,7,#20001,0,"function") +#20052=@"loc,{#10000},1,1,1,8" +locations_default(#20052,#10000,1,1,1,8) +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) +#20057=* +tokeninfo(#20057,8,#20001,4,":") +#20058=@"loc,{#10000},1,24,1,24" +locations_default(#20058,#10000,1,24,1,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) +#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) +#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) +#20073=* +tokeninfo(#20073,8,#20001,14,";") +#20074=@"loc,{#10000},2,36,2,36" +locations_default(#20074,#10000,2,36,2,36) +hasLocation(#20073,#20074) +#20075=* +tokeninfo(#20075,8,#20001,15,"}") +hasLocation(#20075,#20047) +#20076=* +tokeninfo(#20076,6,#20001,16,"alert") +hasLocation(#20076,#20034) +#20077=* +tokeninfo(#20077,8,#20001,17,"(") +#20078=@"loc,{#10000},5,6,5,6" +locations_default(#20078,#10000,5,6,5,6) +hasLocation(#20077,#20078) +#20079=* +tokeninfo(#20079,6,#20001,18,"greeter") +hasLocation(#20079,#20039) +#20080=* +tokeninfo(#20080,8,#20001,19,"(") +#20081=@"loc,{#10000},5,14,5,14" +locations_default(#20081,#10000,5,14,5,14) +hasLocation(#20080,#20081) +#20082=* +tokeninfo(#20082,4,#20001,20,"""world""") +hasLocation(#20082,#20041) +#20083=* +tokeninfo(#20083,8,#20001,21,")") +#20084=@"loc,{#10000},5,22,5,22" +locations_default(#20084,#10000,5,22,5,22) +hasLocation(#20083,#20084) +#20085=* +tokeninfo(#20085,8,#20001,22,")") +#20086=@"loc,{#10000},5,23,5,23" +locations_default(#20086,#10000,5,23,5,23) +hasLocation(#20085,#20086) +#20087=* +tokeninfo(#20087,8,#20001,23,";") +#20088=@"loc,{#10000},5,24,5,24" +locations_default(#20088,#10000,5,24,5,24) +hasLocation(#20087,#20088) +#20089=* +tokeninfo(#20089,0,#20001,24,"") +#20090=@"loc,{#10000},6,1,6,0" +locations_default(#20090,#10000,6,1,6,0) +hasLocation(#20089,#20090) +#20091=* +entry_cfg_node(#20091,#20001) +#20092=@"loc,{#10000},1,1,1,0" +locations_default(#20092,#10000,1,1,1,0) +hasLocation(#20091,#20092) +#20093=* +exit_cfg_node(#20093,#20001) +hasLocation(#20093,#20090) +successor(#20029,#20033) +successor(#20040,#20036) +successor(#20038,#20040) +successor(#20036,#20031) +successor(#20033,#20038) +successor(#20031,#20093) +successor(#20004,#20029) +#20094=* +entry_cfg_node(#20094,#20004) +hasLocation(#20094,#20092) +#20095=* +exit_cfg_node(#20095,#20004) +#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) +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 new file mode 100644 index 00000000000..de08e495ed8 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/importExport.ts.trap @@ -0,0 +1,218 @@ +#10000=@"/importExport.ts;sourcefile" +files(#10000,"/importExport.ts","importExport","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,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';"," +") +hasLocation(#20029,#20010) +#20030=* +lines(#20030,#20001,""," +") +#20031=@"loc,{#10000},2,1,2,0" +locations_default(#20031,#10000,2,1,2,0) +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) +#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) +#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) +#20052=* +tokeninfo(#20052,6,#20001,11,"Something") +hasLocation(#20052,#20026) +#20053=* +tokeninfo(#20053,8,#20001,12,".") +#20054=@"loc,{#10000},3,39,3,39" +locations_default(#20054,#10000,3,39,3,39) +hasLocation(#20053,#20054) +#20055=* +tokeninfo(#20055,6,#20001,13,"thingy") +hasLocation(#20055,#20028) +#20056=* +tokeninfo(#20056,8,#20001,14,";") +#20057=@"loc,{#10000},3,46,3,46" +locations_default(#20057,#10000,3,46,3,46) +hasLocation(#20056,#20057) +#20058=* +tokeninfo(#20058,0,#20001,15,"") +#20059=@"loc,{#10000},4,1,4,0" +locations_default(#20059,#10000,4,1,4,0) +hasLocation(#20058,#20059) +#20060=* +entry_cfg_node(#20060,#20001) +#20061=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..e16168664d5 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/importassign.ts.trap @@ -0,0 +1,122 @@ +#10000=@"/importassign.ts;sourcefile" +files(#10000,"/importassign.ts","importassign","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,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"");"," +") +hasLocation(#20015,#20008) +numlines(#20001,1,1,0) +#20016=* +tokeninfo(#20016,7,#20001,0,"import") +#20017=@"loc,{#10000},1,1,1,6" +locations_default(#20017,#10000,1,1,1,6) +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) +#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) +#20032=* +entry_cfg_node(#20032,#20001) +#20033=@"loc,{#10000},1,1,1,0" +locations_default(#20033,#10000,1,1,1,0) +hasLocation(#20032,#20033) +#20034=* +exit_cfg_node(#20034,#20001) +hasLocation(#20034,#20031) +successor(#20013,#20011) +successor(#20011,#20007) +successor(#20009,#20013) +successor(#20007,#20034) +successor(#20032,#20009) +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 new file mode 100644 index 00000000000..7b31fda6ffa --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/interfaces.ts.trap @@ -0,0 +1,444 @@ +#10000=@"/interfaces.ts;sourcefile" +files(#10000,"/interfaces.ts","interfaces","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,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) +#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) +#20016=* +properties(#20016,#20005,3,0,"bar(x: ... string;") +#20017=@"loc,{#10000},3,3,3,25" +locations_default(#20017,#10000,3,3,3,25) +hasLocation(#20016,#20017) +#20018=* +exprs(#20018,0,#20016,0,"bar") +#20019=@"loc,{#10000},3,3,3,5" +locations_default(#20019,#10000,3,3,3,5) +hasLocation(#20018,#20019) +enclosingStmt(#20018,#20005) +exprContainers(#20018,#20001) +literals("bar","bar",#20018) +#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) +#20026=* +typeexprs(#20026,2,#20020,-3,"string") +#20027=@"loc,{#10000},3,19,3,24" +locations_default(#20027,#10000,3,19,3,24) +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) +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) +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) +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) +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) +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) +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) +#20042=* +stmts(#20042,30,#20036,0,"export ... ();\n }") +#20043=@"loc,{#10000},8,3,10,3" +locations_default(#20043,#10000,8,3,10,3) +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) +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) +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) +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) +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) +#20065=* +lines(#20065,#20001,""," +") +#20066=@"loc,{#10000},6,1,6,0" +locations_default(#20066,#10000,6,1,6,0) +hasLocation(#20065,#20066) +#20067=* +lines(#20067,#20001,"namespace Foo {"," +") +#20068=@"loc,{#10000},7,1,7,15" +locations_default(#20068,#10000,7,1,7,15) +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) +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) +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) +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) +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) +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) +#20083=* +tokeninfo(#20083,8,#20001,4,"(") +#20084=@"loc,{#10000},2,6,2,6" +locations_default(#20084,#10000,2,6,2,6) +hasLocation(#20083,#20084) +#20085=* +tokeninfo(#20085,8,#20001,5,")") +#20086=@"loc,{#10000},2,7,2,7" +locations_default(#20086,#10000,2,7,2,7) +hasLocation(#20085,#20086) +#20087=* +tokeninfo(#20087,8,#20001,6,";") +#20088=@"loc,{#10000},2,8,2,8" +locations_default(#20088,#10000,2,8,2,8) +hasLocation(#20087,#20088) +#20089=* +tokeninfo(#20089,6,#20001,7,"bar") +hasLocation(#20089,#20019) +#20090=* +tokeninfo(#20090,8,#20001,8,"(") +#20091=@"loc,{#10000},3,6,3,6" +locations_default(#20091,#10000,3,6,3,6) +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) +#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) +#20098=* +tokeninfo(#20098,8,#20001,13,":") +#20099=@"loc,{#10000},3,17,3,17" +locations_default(#20099,#10000,3,17,3,17) +hasLocation(#20098,#20099) +#20100=* +tokeninfo(#20100,7,#20001,14,"string") +hasLocation(#20100,#20027) +#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) +#20104=* +tokeninfo(#20104,8,#20001,17,":") +#20105=@"loc,{#10000},4,8,4,8" +locations_default(#20105,#10000,4,8,4,8) +hasLocation(#20104,#20105) +#20106=* +tokeninfo(#20106,7,#20001,18,"number") +hasLocation(#20106,#20035) +#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) +#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) +#20112=* +tokeninfo(#20112,6,#20001,22,"Foo") +hasLocation(#20112,#20039) +#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) +#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) +#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) +#20123=* +tokeninfo(#20123,8,#20001,29,"(") +#20124=@"loc,{#10000},9,8,9,8" +locations_default(#20124,#10000,9,8,9,8) +hasLocation(#20123,#20124) +#20125=* +tokeninfo(#20125,8,#20001,30,")") +#20126=@"loc,{#10000},9,9,9,9" +locations_default(#20126,#10000,9,9,9,9) +hasLocation(#20125,#20126) +#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) +#20131=* +tokeninfo(#20131,8,#20001,33,"}") +hasLocation(#20131,#20076) +#20132=* +tokeninfo(#20132,0,#20001,34,"") +#20133=@"loc,{#10000},12,1,12,0" +locations_default(#20133,#10000,12,1,12,0) +hasLocation(#20132,#20133) +#20134=* +entry_cfg_node(#20134,#20001) +#20135=@"loc,{#10000},1,1,1,0" +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) +numlines(#10000,11,10,0) +filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/ts/output/trap/invalidModuleSpecifier.ts.trap b/javascript/extractor/tests/ts/output/trap/invalidModuleSpecifier.ts.trap new file mode 100644 index 00000000000..9dfd0cd54cd --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/invalidModuleSpecifier.ts.trap @@ -0,0 +1,28 @@ +#10000=@"/invalidModuleSpecifier.ts;sourcefile" +files(#10000,"/invalidModuleSpecifier.ts","invalidModuleSpecifier","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,1,1" +locations_default(#20002,#10000,1,1,1,1) +hasLocation(#20001,#20002) +#20003=* +jsParseErrors(#20003,#20001,"Error: Unsupported TypeScript syntax","import * as x from `x`; +") +hasLocation(#20003,#20002) +#20004=* +lines(#20004,#20001,"import * as x from `x`;"," +") +#20005=@"loc,{#10000},1,1,1,23" +locations_default(#20005,#10000,1,1,1,23) +hasLocation(#20004,#20005) +numlines(#20001,1,0,0) +numlines(#10000,1,0,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 new file mode 100644 index 00000000000..09ae5ae76bc --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/let.ts.trap @@ -0,0 +1,215 @@ +#10000=@"/let.ts;sourcefile" +files(#10000,"/let.ts","let","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,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) +#20006=* +stmts(#20006,18,#20001,0,"var varX = 5;") +#20007=@"loc,{#10000},1,1,1,13" +locations_default(#20007,#10000,1,1,1,13) +hasLocation(#20006,#20007) +stmtContainers(#20006,#20001) +#20008=* +exprs(#20008,64,#20006,0,"varX = 5") +#20009=@"loc,{#10000},1,5,1,12" +locations_default(#20009,#10000,1,5,1,12) +hasLocation(#20008,#20009) +enclosingStmt(#20008,#20006) +exprContainers(#20008,#20001) +#20010=* +exprs(#20010,78,#20008,0,"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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +#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) +#20036=* +tokeninfo(#20036,8,#20001,2,"=") +#20037=@"loc,{#10000},1,10,1,10" +locations_default(#20037,#10000,1,10,1,10) +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) +#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) +#20047=* +tokeninfo(#20047,8,#20001,9,";") +#20048=@"loc,{#10000},2,13,2,13" +locations_default(#20048,#10000,2,13,2,13) +hasLocation(#20047,#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) +#20052=* +tokeninfo(#20052,8,#20001,12,"=") +#20053=@"loc,{#10000},3,14,3,14" +locations_default(#20053,#10000,3,14,3,14) +hasLocation(#20052,#20053) +#20054=* +tokeninfo(#20054,3,#20001,13,"7") +hasLocation(#20054,#20029) +#20055=* +tokeninfo(#20055,8,#20001,14,";") +#20056=@"loc,{#10000},3,17,3,17" +locations_default(#20056,#10000,3,17,3,17) +hasLocation(#20055,#20056) +#20057=* +tokeninfo(#20057,0,#20001,15,"") +#20058=@"loc,{#10000},4,1,4,0" +locations_default(#20058,#10000,4,1,4,0) +hasLocation(#20057,#20058) +#20059=* +entry_cfg_node(#20059,#20001) +#20060=@"loc,{#10000},1,1,1,0" +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) +numlines(#10000,3,3,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 new file mode 100644 index 00000000000..220ec3ec884 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/mappedTypeModifiers.ts.trap @@ -0,0 +1,1186 @@ +#10000=@"/mappedTypeModifiers.ts;sourcefile" +files(#10000,"/mappedTypeModifiers.ts","mappedTypeModifiers","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,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) +#20004=* +stmts(#20004,31,#20001,0,"namespa ... ing }\n}") +#20005=@"loc,{#10000},1,1,11,1" +locations_default(#20005,#10000,1,1,11,1) +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) +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 {"," +") +#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 ?"," +") +#20158=@"loc,{#10000},2,1,2,91" +locations_default(#20158,#10000,2,1,2,91) +hasLocation(#20157,#20158) +indentation(#10000,2," ",2) +#20159=* +lines(#20159,#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) +indentation(#10000,3," ",2) +#20161=* +lines(#20161,#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 ?"," +") +#20164=@"loc,{#10000},5,1,5,87" +locations_default(#20164,#10000,5,1,5,87) +hasLocation(#20163,#20164) +indentation(#10000,5," ",2) +#20165=* +lines(#20165,#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] };"," +") +#20168=@"loc,{#10000},7,1,7,48" +locations_default(#20168,#10000,7,1,7,48) +hasLocation(#20167,#20168) +indentation(#10000,7," ",2) +#20169=* +lines(#20169,#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 }"," +") +#20172=@"loc,{#10000},9,1,9,67" +locations_default(#20172,#10000,9,1,9,67) +hasLocation(#20171,#20172) +indentation(#10000,9," ",2) +#20173=* +lines(#20173,#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) +indentation(#10000,10," ",2) +#20175=* +lines(#20175,#20001,"}"," +") +#20176=@"loc,{#10000},11,1,11,1" +locations_default(#20176,#10000,11,1,11,1) +hasLocation(#20175,#20176) +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) +#20180=* +tokeninfo(#20180,8,#20001,2,"{") +#20181=@"loc,{#10000},1,31,1,31" +locations_default(#20181,#10000,1,31,1,31) +hasLocation(#20180,#20181) +#20182=* +tokeninfo(#20182,7,#20001,3,"type") +#20183=@"loc,{#10000},2,3,2,6" +locations_default(#20183,#10000,2,3,2,6) +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) +#20188=* +tokeninfo(#20188,8,#20001,7,">") +#20189=@"loc,{#10000},2,25,2,25" +locations_default(#20189,#10000,2,25,2,25) +hasLocation(#20188,#20189) +#20190=* +tokeninfo(#20190,8,#20001,8,"=") +#20191=@"loc,{#10000},2,27,2,27" +locations_default(#20191,#10000,2,27,2,27) +hasLocation(#20190,#20191) +#20192=* +tokeninfo(#20192,8,#20001,9,"{") +#20193=@"loc,{#10000},2,29,2,29" +locations_default(#20193,#10000,2,29,2,29) +hasLocation(#20192,#20193) +#20194=* +tokeninfo(#20194,8,#20001,10,"-") +#20195=@"loc,{#10000},2,31,2,31" +locations_default(#20195,#10000,2,31,2,31) +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) +hasLocation(#20196,#20197) +#20198=* +tokeninfo(#20198,8,#20001,12,"[") +#20199=@"loc,{#10000},2,41,2,41" +locations_default(#20199,#10000,2,41,2,41) +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) +#20206=* +tokeninfo(#20206,8,#20001,17,"]") +#20207=@"loc,{#10000},2,54,2,54" +locations_default(#20207,#10000,2,54,2,54) +hasLocation(#20206,#20207) +#20208=* +tokeninfo(#20208,8,#20001,18,"-") +#20209=@"loc,{#10000},2,55,2,55" +locations_default(#20209,#10000,2,55,2,55) +hasLocation(#20208,#20209) +#20210=* +tokeninfo(#20210,8,#20001,19,"?") +#20211=@"loc,{#10000},2,56,2,56" +locations_default(#20211,#10000,2,56,2,56) +hasLocation(#20210,#20211) +#20212=* +tokeninfo(#20212,8,#20001,20,":") +#20213=@"loc,{#10000},2,57,2,57" +locations_default(#20213,#10000,2,57,2,57) +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) +#20218=* +tokeninfo(#20218,8,#20001,24,"]") +#20219=@"loc,{#10000},2,62,2,62" +locations_default(#20219,#10000,2,62,2,62) +hasLocation(#20218,#20219) +#20220=* +tokeninfo(#20220,8,#20001,25,"}") +#20221=@"loc,{#10000},2,64,2,64" +locations_default(#20221,#10000,2,64,2,64) +hasLocation(#20220,#20221) +#20222=* +tokeninfo(#20222,8,#20001,26,";") +#20223=@"loc,{#10000},2,65,2,65" +locations_default(#20223,#10000,2,65,2,65) +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) +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) +#20230=* +tokeninfo(#20230,8,#20001,31,">") +#20231=@"loc,{#10000},3,25,3,25" +locations_default(#20231,#10000,3,25,3,25) +hasLocation(#20230,#20231) +#20232=* +tokeninfo(#20232,8,#20001,32,"=") +#20233=@"loc,{#10000},3,27,3,27" +locations_default(#20233,#10000,3,27,3,27) +hasLocation(#20232,#20233) +#20234=* +tokeninfo(#20234,8,#20001,33,"{") +#20235=@"loc,{#10000},3,29,3,29" +locations_default(#20235,#10000,3,29,3,29) +hasLocation(#20234,#20235) +#20236=* +tokeninfo(#20236,8,#20001,34,"+") +#20237=@"loc,{#10000},3,31,3,31" +locations_default(#20237,#10000,3,31,3,31) +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) +hasLocation(#20238,#20239) +#20240=* +tokeninfo(#20240,8,#20001,36,"[") +#20241=@"loc,{#10000},3,41,3,41" +locations_default(#20241,#10000,3,41,3,41) +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) +#20248=* +tokeninfo(#20248,8,#20001,41,"]") +#20249=@"loc,{#10000},3,54,3,54" +locations_default(#20249,#10000,3,54,3,54) +hasLocation(#20248,#20249) +#20250=* +tokeninfo(#20250,8,#20001,42,"+") +#20251=@"loc,{#10000},3,55,3,55" +locations_default(#20251,#10000,3,55,3,55) +hasLocation(#20250,#20251) +#20252=* +tokeninfo(#20252,8,#20001,43,"?") +#20253=@"loc,{#10000},3,56,3,56" +locations_default(#20253,#10000,3,56,3,56) +hasLocation(#20252,#20253) +#20254=* +tokeninfo(#20254,8,#20001,44,":") +#20255=@"loc,{#10000},3,57,3,57" +locations_default(#20255,#10000,3,57,3,57) +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) +#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) +#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) +#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) +#20280=* +tokeninfo(#20280,8,#20001,59,"[") +#20281=@"loc,{#10000},5,41,5,41" +locations_default(#20281,#10000,5,41,5,41) +hasLocation(#20280,#20281) +#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) +#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) +#20292=* +tokeninfo(#20292,8,#20001,66,":") +#20293=@"loc,{#10000},5,56,5,56" +locations_default(#20293,#10000,5,56,5,56) +hasLocation(#20292,#20293) +#20294=* +tokeninfo(#20294,6,#20001,67,"T") +hasLocation(#20294,#20093) +#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) +#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) +#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) +#20307=* +tokeninfo(#20307,8,#20001,75,"<") +#20308=@"loc,{#10000},7,16,7,16" +locations_default(#20308,#10000,7,16,7,16) +hasLocation(#20307,#20308) +#20309=* +tokeninfo(#20309,6,#20001,76,"T") +hasLocation(#20309,#20103) +#20310=* +tokeninfo(#20310,8,#20001,77,">") +#20311=@"loc,{#10000},7,18,7,18" +locations_default(#20311,#10000,7,18,7,18) +hasLocation(#20310,#20311) +#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) +#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) +#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) +#20323=* +tokeninfo(#20323,6,#20001,84,"T") +hasLocation(#20323,#20116) +#20324=* +tokeninfo(#20324,8,#20001,85,"]") +#20325=@"loc,{#10000},7,37,7,37" +locations_default(#20325,#10000,7,37,7,37) +hasLocation(#20324,#20325) +#20326=* +tokeninfo(#20326,8,#20001,86,"-") +#20327=@"loc,{#10000},7,38,7,38" +locations_default(#20327,#10000,7,38,7,38) +hasLocation(#20326,#20327) +#20328=* +tokeninfo(#20328,8,#20001,87,"?") +#20329=@"loc,{#10000},7,39,7,39" +locations_default(#20329,#10000,7,39,7,39) +hasLocation(#20328,#20329) +#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) +#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) +#20336=* +tokeninfo(#20336,8,#20001,92,"]") +#20337=@"loc,{#10000},7,45,7,45" +locations_default(#20337,#10000,7,45,7,45) +hasLocation(#20336,#20337) +#20338=* +tokeninfo(#20338,8,#20001,93,"}") +#20339=@"loc,{#10000},7,47,7,47" +locations_default(#20339,#10000,7,47,7,47) +hasLocation(#20338,#20339) +#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) +#20344=* +tokeninfo(#20344,6,#20001,96,"Foo") +hasLocation(#20344,#20126) +#20345=* +tokeninfo(#20345,8,#20001,97,"=") +#20346=@"loc,{#10000},9,12,9,12" +locations_default(#20346,#10000,9,12,9,12) +hasLocation(#20345,#20346) +#20347=* +tokeninfo(#20347,8,#20001,98,"{") +#20348=@"loc,{#10000},9,14,9,14" +locations_default(#20348,#10000,9,14,9,14) +hasLocation(#20347,#20348) +#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) +#20352=* +tokeninfo(#20352,8,#20001,101,":") +#20353=@"loc,{#10000},9,18,9,18" +locations_default(#20353,#10000,9,18,9,18) +hasLocation(#20352,#20353) +#20354=* +tokeninfo(#20354,7,#20001,102,"string") +hasLocation(#20354,#20134) +#20355=* +tokeninfo(#20355,8,#20001,103,"}") +#20356=@"loc,{#10000},9,27,9,27" +locations_default(#20356,#10000,9,27,9,27) +hasLocation(#20355,#20356) +#20357=* +tokeninfo(#20357,8,#20001,104,";") +#20358=@"loc,{#10000},9,28,9,28" +locations_default(#20358,#10000,9,28,9,28) +hasLocation(#20357,#20358) +#20359=* +tokeninfo(#20359,7,#20001,105,"type") +#20360=@"loc,{#10000},10,3,10,6" +locations_default(#20360,#10000,10,3,10,6) +hasLocation(#20359,#20360) +next_token(#20151,#20359) +#20361=* +tokeninfo(#20361,6,#20001,106,"Bar") +hasLocation(#20361,#20138) +#20362=* +tokeninfo(#20362,8,#20001,107,"=") +#20363=@"loc,{#10000},10,12,10,12" +locations_default(#20363,#10000,10,12,10,12) +hasLocation(#20362,#20363) +#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) +#20367=* +tokeninfo(#20367,6,#20001,110,"Foo") +hasLocation(#20367,#20144) +#20368=* +tokeninfo(#20368,8,#20001,111,">") +#20369=@"loc,{#10000},10,26,10,26" +locations_default(#20369,#10000,10,26,10,26) +hasLocation(#20368,#20369) +#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) +#20373=* +tokeninfo(#20373,0,#20001,114,"") +#20374=@"loc,{#10000},12,1,12,0" +locations_default(#20374,#10000,12,1,12,0) +hasLocation(#20373,#20374) +#20375=* +entry_cfg_node(#20375,#20001) +#20376=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..25a7e9b2043 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/namespaces.ts.trap @@ -0,0 +1,353 @@ +#10000=@"/namespaces.ts;sourcefile" +files(#10000,"/namespaces.ts","namespaces","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,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 {"," +") +#20048=@"loc,{#10000},1,1,1,13" +locations_default(#20048,#10000,1,1,1,13) +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) +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) +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) +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) +hasLocation(#20055,#20056) +#20057=* +lines(#20057,#20001,""," +") +#20058=@"loc,{#10000},6,1,6,0" +locations_default(#20058,#10000,6,1,6,0) +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) +#20063=* +tokeninfo(#20063,8,#20001,2,"{") +#20064=@"loc,{#10000},1,13,1,13" +locations_default(#20064,#10000,1,13,1,13) +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) +#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) +#20077=* +tokeninfo(#20077,8,#20001,10,"=") +#20078=@"loc,{#10000},3,18,3,18" +locations_default(#20078,#10000,3,18,3,18) +hasLocation(#20077,#20078) +#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) +#20082=* +tokeninfo(#20082,8,#20001,13,"}") +#20083=@"loc,{#10000},4,3,4,3" +locations_default(#20083,#10000,4,3,4,3) +hasLocation(#20082,#20083) +#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) +#20088=* +tokeninfo(#20088,8,#20001,17,"=") +#20089=@"loc,{#10000},7,10,7,10" +locations_default(#20089,#10000,7,10,7,10) +hasLocation(#20088,#20089) +#20090=* +tokeninfo(#20090,6,#20001,18,"M") +hasLocation(#20090,#20042) +#20091=* +tokeninfo(#20091,8,#20001,19,".") +#20092=@"loc,{#10000},7,13,7,13" +locations_default(#20092,#10000,7,13,7,13) +hasLocation(#20091,#20092) +#20093=* +tokeninfo(#20093,6,#20001,20,"N") +hasLocation(#20093,#20044) +#20094=* +tokeninfo(#20094,8,#20001,21,".") +#20095=@"loc,{#10000},7,15,7,15" +locations_default(#20095,#10000,7,15,7,15) +hasLocation(#20094,#20095) +#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) +#20099=* +tokeninfo(#20099,0,#20001,24,"") +#20100=@"loc,{#10000},8,1,8,0" +locations_default(#20100,#10000,8,1,8,0) +hasLocation(#20099,#20100) +#20101=* +entry_cfg_node(#20101,#20001) +#20102=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..8efd45b2d70 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/nestedNamespace.ts.trap @@ -0,0 +1,471 @@ +#10000=@"/nestedNamespace.ts;sourcefile" +files(#10000,"/nestedNamespace.ts","nestedNamespace","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,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 {}"," +") +hasLocation(#20069,#20006) +#20070=* +lines(#20070,#20001,"namespace A.B.C {}"," +") +hasLocation(#20070,#20018) +#20071=* +lines(#20071,#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 {"," +") +#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 {}"," +") +#20076=@"loc,{#10000},5,1,5,25" +locations_default(#20076,#10000,5,1,5,25) +hasLocation(#20075,#20076) +indentation(#10000,5," ",2) +#20077=* +lines(#20077,#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 {}"," +") +#20080=@"loc,{#10000},7,1,7,18" +locations_default(#20080,#10000,7,1,7,18) +hasLocation(#20079,#20080) +indentation(#10000,7," ",2) +#20081=* +lines(#20081,#20001,"}"," +") +#20082=@"loc,{#10000},8,1,8,1" +locations_default(#20082,#10000,8,1,8,1) +hasLocation(#20081,#20082) +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) +#20085=* +tokeninfo(#20085,6,#20001,1,"A") +hasLocation(#20085,#20008) +#20086=* +tokeninfo(#20086,8,#20001,2,".") +#20087=@"loc,{#10000},1,12,1,12" +locations_default(#20087,#10000,1,12,1,12) +hasLocation(#20086,#20087) +#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) +#20091=* +tokeninfo(#20091,8,#20001,5,"}") +#20092=@"loc,{#10000},1,16,1,16" +locations_default(#20092,#10000,1,16,1,16) +hasLocation(#20091,#20092) +#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) +#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) +#20099=* +tokeninfo(#20099,8,#20001,10,".") +#20100=@"loc,{#10000},2,14,2,14" +locations_default(#20100,#10000,2,14,2,14) +hasLocation(#20099,#20100) +#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) +#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) +#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) +#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) +#20116=* +tokeninfo(#20116,8,#20001,20,".") +#20117=@"loc,{#10000},5,21,5,21" +locations_default(#20117,#10000,5,21,5,21) +hasLocation(#20116,#20117) +#20118=* +tokeninfo(#20118,6,#20001,21,"Z") +hasLocation(#20118,#20055) +#20119=* +tokeninfo(#20119,8,#20001,22,"{") +#20120=@"loc,{#10000},5,24,5,24" +locations_default(#20120,#10000,5,24,5,24) +hasLocation(#20119,#20120) +#20121=* +tokeninfo(#20121,8,#20001,23,"}") +#20122=@"loc,{#10000},5,25,5,25" +locations_default(#20122,#10000,5,25,5,25) +hasLocation(#20121,#20122) +#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) +#20125=* +tokeninfo(#20125,6,#20001,25,"W") +hasLocation(#20125,#20060) +#20126=* +tokeninfo(#20126,8,#20001,26,".") +#20127=@"loc,{#10000},7,14,7,14" +locations_default(#20127,#10000,7,14,7,14) +hasLocation(#20126,#20127) +#20128=* +tokeninfo(#20128,6,#20001,27,"Q") +hasLocation(#20128,#20067) +#20129=* +tokeninfo(#20129,8,#20001,28,"{") +#20130=@"loc,{#10000},7,17,7,17" +locations_default(#20130,#10000,7,17,7,17) +hasLocation(#20129,#20130) +#20131=* +tokeninfo(#20131,8,#20001,29,"}") +#20132=@"loc,{#10000},7,18,7,18" +locations_default(#20132,#10000,7,18,7,18) +hasLocation(#20131,#20132) +#20133=* +tokeninfo(#20133,8,#20001,30,"}") +hasLocation(#20133,#20082) +#20134=* +tokeninfo(#20134,0,#20001,31,"") +#20135=@"loc,{#10000},9,1,9,0" +locations_default(#20135,#10000,9,1,9,0) +hasLocation(#20134,#20135) +#20136=* +entry_cfg_node(#20136,#20001) +#20137=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..6453fc5d4c6 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/nobody.ts.trap @@ -0,0 +1,1212 @@ +#10000=@"/nobody.ts;sourcefile" +files(#10000,"/nobody.ts","nobody","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},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) +#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) +#20012=* +stmts(#20012,26,#20001,1,"abstrac ... mber;\n}") +#20013=@"loc,{#10000},4,1,15,1" +locations_default(#20013,#10000,4,1,15,1) +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) +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) +#20019=* +exprs(#20019,0,#20017,0,"h") +#20020=@"loc,{#10000},6,12,6,12" +locations_default(#20020,#10000,6,12,6,12) +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) +#20029=* +scopes(#20029,1) +scopenodes(#20028,#20029) +scopenesting(#20029,#20016) +#20030=@"var;{x};{#20029}" +variables(#20030,"x",#20029) +#20031=* +exprs(#20031,78,#20028,0,"x") +#20032=@"loc,{#10000},9,5,9,5" +locations_default(#20032,#10000,9,5,9,5) +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) +#20043=* +scopes(#20043,1) +scopenodes(#20042,#20043) +scopenesting(#20043,#20016) +#20044=@"var;{x};{#20043}" +variables(#20044,"x",#20043) +#20045=* +exprs(#20045,78,#20042,0,"x") +#20046=@"loc,{#10000},10,5,10,5" +locations_default(#20046,#10000,10,5,10,5) +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) +#20050=* +typeexprs(#20050,2,#20042,-6,"string") +#20051=@"loc,{#10000},10,8,10,13" +locations_default(#20051,#10000,10,8,10,13) +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) +hasLocation(#20052,#20053) +#20054=* +exprs(#20054,0,#20052,0,"g") +#20055=@"loc,{#10000},11,3,11,3" +locations_default(#20055,#10000,11,3,11,3) +hasLocation(#20054,#20055) +enclosingStmt(#20054,#20012) +exprContainers(#20054,#20001) +literals("g","g",#20054) +#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) +#20062=* +typeexprs(#20062,2,#20056,-6,"any") +#20063=@"loc,{#10000},11,8,11,10" +locations_default(#20063,#10000,11,8,11,10) +hasLocation(#20062,#20063) +exprContainers(#20062,#20056) +literals("any","any",#20062) +#20064=* +stmts(#20064,1,#20056,-2,"{}") +#20065=@"loc,{#10000},11,13,11,14" +locations_default(#20065,#10000,11,13,11,14) +hasLocation(#20064,#20065) +stmtContainers(#20064,#20056) +numlines(#20056,1,1,0) +isMethod(#20052) +#20066=* +properties(#20066,#20012,6,8,"abstract x: number;") +#20067=@"loc,{#10000},14,3,14,21" +locations_default(#20067,#10000,14,3,14,21) +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) +hasLocation(#20068,#20069) +enclosingStmt(#20068,#20012) +exprContainers(#20068,#20001) +literals("x","x",#20068) +#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) +#20076=* +scopes(#20076,1) +scopenodes(#20070,#20076) +scopenesting(#20076,#20016) +#20077=@"var;{arguments};{#20076}" +variables(#20077,"arguments",#20076) +isArgumentsObject(#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) +#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) +#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) +#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) +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) +hasLocation(#20094,#20095) +enclosingStmt(#20094,#20079) +exprContainers(#20094,#20001) +literals("g","g",#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) +#20102=* +typeexprs(#20102,2,#20096,-3,"number") +#20103=@"loc,{#10000},23,17,23,22" +locations_default(#20103,#10000,23,17,23,22) +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) +hasLocation(#20104,#20105) +exprContainers(#20104,#20096) +literals("number","number",#20104) +numlines(#20096,1,1,0) +isMethod(#20092) +#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) +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) +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) +#20116=* +typeexprs(#20116,2,#20110,-3,"string") +#20117=@"loc,{#10000},24,17,24,22" +locations_default(#20117,#10000,24,17,24,22) +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) +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) +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) +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) +#20130=* +typeexprs(#20130,2,#20124,-6,"any") +#20131=@"loc,{#10000},25,8,25,10" +locations_default(#20131,#10000,25,8,25,10) +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) +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) +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) +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) +#20144=* +scopes(#20144,1) +scopenodes(#20138,#20144) +scopenesting(#20144,#20084) +#20145=@"var;{arguments};{#20144}" +variables(#20145,"arguments",#20144) +isArgumentsObject(#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) +#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) +#20167=* +lines(#20167,#20001,"abstract class C {"," +") +#20168=@"loc,{#10000},4,1,4,18" +locations_default(#20168,#10000,4,1,4,18) +hasLocation(#20167,#20168) +#20169=* +lines(#20169,#20001," // Abstract methods"," +") +#20170=@"loc,{#10000},5,1,5,21" +locations_default(#20170,#10000,5,1,5,21) +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) +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) +hasLocation(#20173,#20174) +#20175=* +lines(#20175,#20001," // Overload signatures"," +") +#20176=@"loc,{#10000},8,1,8,24" +locations_default(#20176,#10000,8,1,8,24) +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) +hasLocation(#20177,#20178) +indentation(#10000,9," ",2) +#20179=* +lines(#20179,#20001," g(x: string): string;"," +") +#20180=@"loc,{#10000},10,1,10,23" +locations_default(#20180,#10000,10,1,10,23) +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) +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) +hasLocation(#20183,#20184) +#20185=* +lines(#20185,#20001," // Abstract fields"," +") +#20186=@"loc,{#10000},13,1,13,20" +locations_default(#20186,#10000,13,1,13,20) +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) +hasLocation(#20187,#20188) +indentation(#10000,14," ",2) +#20189=* +lines(#20189,#20001,"}"," +") +#20190=@"loc,{#10000},15,1,15,1" +locations_default(#20190,#10000,15,1,15,1) +hasLocation(#20189,#20190) +#20191=* +lines(#20191,#20001,""," +") +#20192=@"loc,{#10000},16,1,16,0" +locations_default(#20192,#10000,16,1,16,0) +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) +#20223=* +tokeninfo(#20223,8,#20001,3,"(") +#20224=@"loc,{#10000},2,19,2,19" +locations_default(#20224,#10000,2,19,2,19) +hasLocation(#20223,#20224) +#20225=* +tokeninfo(#20225,8,#20001,4,")") +#20226=@"loc,{#10000},2,20,2,20" +locations_default(#20226,#10000,2,20,2,20) +hasLocation(#20225,#20226) +#20227=* +tokeninfo(#20227,8,#20001,5,";") +#20228=@"loc,{#10000},2,21,2,21" +locations_default(#20228,#10000,2,21,2,21) +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) +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) +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) +#20239=* +tokeninfo(#20239,8,#20001,12,"(") +#20240=@"loc,{#10000},6,13,6,13" +locations_default(#20240,#10000,6,13,6,13) +hasLocation(#20239,#20240) +#20241=* +tokeninfo(#20241,8,#20001,13,")") +#20242=@"loc,{#10000},6,14,6,14" +locations_default(#20242,#10000,6,14,6,14) +hasLocation(#20241,#20242) +#20243=* +tokeninfo(#20243,8,#20001,14,";") +#20244=@"loc,{#10000},6,15,6,15" +locations_default(#20244,#10000,6,15,6,15) +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) +#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) +#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) +#20260=* +tokeninfo(#20260,8,#20001,25,"(") +#20261=@"loc,{#10000},10,4,10,4" +locations_default(#20261,#10000,10,4,10,4) +hasLocation(#20260,#20261) +#20262=* +tokeninfo(#20262,6,#20001,26,"x") +hasLocation(#20262,#20046) +#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) +#20266=* +tokeninfo(#20266,8,#20001,29,")") +#20267=@"loc,{#10000},10,14,10,14" +locations_default(#20267,#10000,10,14,10,14) +hasLocation(#20266,#20267) +#20268=* +tokeninfo(#20268,8,#20001,30,":") +#20269=@"loc,{#10000},10,15,10,15" +locations_default(#20269,#10000,10,15,10,15) +hasLocation(#20268,#20269) +#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) +#20273=* +tokeninfo(#20273,6,#20001,33,"g") +hasLocation(#20273,#20055) +#20274=* +tokeninfo(#20274,8,#20001,34,"(") +#20275=@"loc,{#10000},11,4,11,4" +locations_default(#20275,#10000,11,4,11,4) +hasLocation(#20274,#20275) +#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) +#20279=* +tokeninfo(#20279,7,#20001,37,"any") +hasLocation(#20279,#20063) +#20280=* +tokeninfo(#20280,8,#20001,38,")") +#20281=@"loc,{#10000},11,11,11,11" +locations_default(#20281,#10000,11,11,11,11) +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) +#20284=* +tokeninfo(#20284,8,#20001,40,"}") +#20285=@"loc,{#10000},11,14,11,14" +locations_default(#20285,#10000,11,14,11,14) +hasLocation(#20284,#20285) +#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) +#20288=* +tokeninfo(#20288,6,#20001,42,"x") +hasLocation(#20288,#20069) +#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) +#20292=* +tokeninfo(#20292,8,#20001,45,";") +#20293=@"loc,{#10000},14,21,14,21" +locations_default(#20293,#10000,14,21,14,21) +hasLocation(#20292,#20293) +#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) +#20299=* +tokeninfo(#20299,7,#20001,49,"class") +#20300=@"loc,{#10000},18,18,18,22" +locations_default(#20300,#10000,18,18,18,22) +hasLocation(#20299,#20300) +#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) +#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) +#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) +#20309=* +tokeninfo(#20309,8,#20001,55,")") +#20310=@"loc,{#10000},20,14,20,14" +locations_default(#20310,#10000,20,14,20,14) +hasLocation(#20309,#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) +#20314=* +tokeninfo(#20314,8,#20001,58,"(") +#20315=@"loc,{#10000},23,4,23,4" +locations_default(#20315,#10000,23,4,23,4) +hasLocation(#20314,#20315) +#20316=* +tokeninfo(#20316,6,#20001,59,"x") +hasLocation(#20316,#20100) +#20317=* +tokeninfo(#20317,8,#20001,60,":") +#20318=@"loc,{#10000},23,6,23,6" +locations_default(#20318,#10000,23,6,23,6) +hasLocation(#20317,#20318) +#20319=* +tokeninfo(#20319,7,#20001,61,"number") +hasLocation(#20319,#20105) +#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) +#20325=* +tokeninfo(#20325,8,#20001,65,";") +#20326=@"loc,{#10000},23,23,23,23" +locations_default(#20326,#10000,23,23,23,23) +hasLocation(#20325,#20326) +#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) +#20331=* +tokeninfo(#20331,8,#20001,69,":") +#20332=@"loc,{#10000},24,6,24,6" +locations_default(#20332,#10000,24,6,24,6) +hasLocation(#20331,#20332) +#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) +#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) +#20339=* +tokeninfo(#20339,8,#20001,74,";") +#20340=@"loc,{#10000},24,23,24,23" +locations_default(#20340,#10000,24,23,24,23) +hasLocation(#20339,#20340) +#20341=* +tokeninfo(#20341,6,#20001,75,"g") +hasLocation(#20341,#20123) +#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) +#20345=* +tokeninfo(#20345,8,#20001,78,":") +#20346=@"loc,{#10000},25,6,25,6" +locations_default(#20346,#10000,25,6,25,6) +hasLocation(#20345,#20346) +#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) +#20352=* +tokeninfo(#20352,8,#20001,82,"}") +#20353=@"loc,{#10000},25,14,25,14" +locations_default(#20353,#10000,25,14,25,14) +hasLocation(#20352,#20353) +#20354=* +tokeninfo(#20354,7,#20001,83,"abstract") +#20355=@"loc,{#10000},28,3,28,10" +locations_default(#20355,#10000,28,3,28,10) +hasLocation(#20354,#20355) +next_token(#20161,#20354) +#20356=* +tokeninfo(#20356,6,#20001,84,"x") +hasLocation(#20356,#20137) +#20357=* +tokeninfo(#20357,8,#20001,85,":") +#20358=@"loc,{#10000},28,13,28,13" +locations_default(#20358,#10000,28,13,28,13) +hasLocation(#20357,#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) +#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) +#20365=* +entry_cfg_node(#20365,#20001) +#20366=@"loc,{#10000},2,1,2,0" +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) +#20368=* +entry_cfg_node(#20368,#20070) +hasLocation(#20368,#20074) +#20369=* +exit_cfg_node(#20369,#20070) +hasLocation(#20369,#20074) +successor(#20078,#20369) +successor(#20368,#20078) +successor(#20075,#20070) +successor(#20073,#20012) +successor(#20056,#20052) +#20370=* +entry_cfg_node(#20370,#20056) +#20371=@"loc,{#10000},11,3,11,2" +locations_default(#20371,#10000,11,3,11,2) +hasLocation(#20370,#20371) +#20372=* +exit_cfg_node(#20372,#20056) +#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) +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 new file mode 100644 index 00000000000..6ac70784c1b --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/objectLiteralAccessor.ts.trap @@ -0,0 +1,309 @@ +#10000=@"/objectLiteralAccessor.ts;sourcefile" +files(#10000,"/objectLiteralAccessor.ts","objectLiteralAccessor","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,5,0" +locations_default(#20002,#10000,1,1,5,0) +hasLocation(#20001,#20002) +#20003=@"var;{x};{#20000}" +variables(#20003,"x",#20000) +#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) +hasLocation(#20004,#20005) +stmtContainers(#20004,#20001) +#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) +hasLocation(#20006,#20007) +enclosingStmt(#20006,#20004) +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,#20004) +exprContainers(#20008,#20001) +literals("x","x",#20008) +decl(#20008,#20003) +#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) +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) +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) +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) +#20030=* +scopes(#20030,1) +scopenodes(#20029,#20030) +scopenesting(#20030,#20000) +#20031=@"var;{v};{#20030}" +variables(#20031,"v",#20030) +#20032=* +exprs(#20032,78,#20029,0,"v") +#20033=@"loc,{#10000},3,11,3,11" +locations_default(#20033,#10000,3,11,3,11) +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) +#20048=* +tokeninfo(#20048,8,#20001,2,"=") +#20049=@"loc,{#10000},1,7,1,7" +locations_default(#20049,#10000,1,7,1,7) +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) +#20055=* +tokeninfo(#20055,8,#20001,6,"(") +#20056=@"loc,{#10000},2,10,2,10" +locations_default(#20056,#10000,2,10,2,10) +hasLocation(#20055,#20056) +#20057=* +tokeninfo(#20057,8,#20001,7,")") +#20058=@"loc,{#10000},2,11,2,11" +locations_default(#20058,#10000,2,11,2,11) +hasLocation(#20057,#20058) +#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) +#20064=* +tokeninfo(#20064,8,#20001,11,"}") +#20065=@"loc,{#10000},2,22,2,22" +locations_default(#20065,#10000,2,22,2,22) +hasLocation(#20064,#20065) +#20066=* +tokeninfo(#20066,8,#20001,12,",") +#20067=@"loc,{#10000},2,23,2,23" +locations_default(#20067,#10000,2,23,2,23) +hasLocation(#20066,#20067) +#20068=* +tokeninfo(#20068,7,#20001,13,"set") +#20069=@"loc,{#10000},3,3,3,5" +locations_default(#20069,#10000,3,3,3,5) +hasLocation(#20068,#20069) +#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) +#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) +#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) +#20081=* +tokeninfo(#20081,0,#20001,21,"") +#20082=@"loc,{#10000},5,1,5,0" +locations_default(#20082,#10000,5,1,5,0) +hasLocation(#20081,#20082) +#20083=* +entry_cfg_node(#20083,#20001) +#20084=@"loc,{#10000},1,1,1,0" +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) +#20086=* +entry_cfg_node(#20086,#20029) +#20087=@"loc,{#10000},3,3,3,2" +locations_default(#20087,#10000,3,3,3,2) +hasLocation(#20086,#20087) +#20088=* +exit_cfg_node(#20088,#20029) +#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) +#20090=* +entry_cfg_node(#20090,#20016) +#20091=@"loc,{#10000},2,3,2,2" +locations_default(#20091,#10000,2,3,2,2) +hasLocation(#20090,#20091) +#20092=* +exit_cfg_node(#20092,#20016) +#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) +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 new file mode 100644 index 00000000000..9dde794a3c7 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/omitted.ts.trap @@ -0,0 +1,86 @@ +#10000=@"/omitted.ts;sourcefile" +files(#10000,"/omitted.ts","omitted","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,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) +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) +#20016=* +tokeninfo(#20016,8,#20001,4,"]") +#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,0,#20001,6,"") +#20021=@"loc,{#10000},1,8,1,7" +locations_default(#20021,#10000,1,8,1,7) +hasLocation(#20020,#20021) +#20022=* +entry_cfg_node(#20022,#20001) +#20023=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..004453ae01f --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/regexp.ts.trap @@ -0,0 +1,56 @@ +#10000=@"/regexp.ts;sourcefile" +files(#10000,"/regexp.ts","regexp","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,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) +numlines(#20001,1,1,0) +#20008=* +tokeninfo(#20008,8,#20001,0,"/a/") +hasLocation(#20008,#20002) +#20009=* +tokeninfo(#20009,0,#20001,1,"") +#20010=@"loc,{#10000},1,4,1,3" +locations_default(#20010,#10000,1,4,1,3) +hasLocation(#20009,#20010) +#20011=* +entry_cfg_node(#20011,#20001) +#20012=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..70ff6007831 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/templates.ts.trap @@ -0,0 +1,142 @@ +#10000=@"/templates.ts;sourcefile" +files(#10000,"/templates.ts","templates","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,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}"")`"," +") +hasLocation(#20021,#20004) +numlines(#20001,1,1,0) +#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) +#20025=* +tokeninfo(#20025,8,#20001,2,".") +#20026=@"loc,{#10000},1,12,1,12" +locations_default(#20026,#10000,1,12,1,12) +hasLocation(#20025,#20026) +#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) +#20031=* +tokeninfo(#20031,8,#20001,6,"}"")`") +#20032=@"loc,{#10000},1,27,1,30" +locations_default(#20032,#10000,1,27,1,30) +hasLocation(#20031,#20032) +#20033=* +tokeninfo(#20033,0,#20001,7,"") +#20034=@"loc,{#10000},2,1,2,0" +locations_default(#20034,#10000,2,1,2,0) +hasLocation(#20033,#20034) +#20035=* +entry_cfg_node(#20035,#20001) +#20036=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..a9f7715442d --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/thisparameter.ts.trap @@ -0,0 +1,759 @@ +#10000=@"/thisparameter.ts;sourcefile" +files(#10000,"/thisparameter.ts","thisparameter","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,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) +#20008=* +stmts(#20008,17,#20001,0,"functio ... ber) {}") +#20009=@"loc,{#10000},1,1,1,46" +locations_default(#20009,#10000,1,1,1,46) +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) +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) +#20014=* +exprs(#20014,78,#20008,0,"x") +#20015=@"loc,{#10000},1,34,1,34" +locations_default(#20015,#10000,1,34,1,34) +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) +#20036=* +typeexprs(#20036,2,#20029,-4,"string") +#20037=@"loc,{#10000},3,24,3,29" +locations_default(#20037,#10000,3,24,3,29) +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) +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) +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) +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) +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) +#20052=* +typeexprs(#20052,2,#20042,-4,"string") +#20053=@"loc,{#10000},5,32,5,37" +locations_default(#20053,#10000,5,32,5,37) +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) +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) +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) +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) +#20066=* +scopes(#20066,1) +scopenodes(#20065,#20066) +scopenesting(#20066,#20060) +#20067=@"var;{arguments};{#20066}" +variables(#20067,"arguments",#20066) +isArgumentsObject(#20067) +#20068=* +stmts(#20068,1,#20065,-2,"{}") +#20069=@"loc,{#10000},8,19,8,20" +locations_default(#20069,#10000,8,19,8,20) +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) +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) +#20074=* +scopes(#20074,1) +scopenodes(#20073,#20074) +scopenesting(#20074,#20060) +#20075=@"var;{arguments};{#20074}" +variables(#20075,"arguments",#20074) +isArgumentsObject(#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) +#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) +#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) +#20092=* +lines(#20092,#20001,""," +") +#20093=@"loc,{#10000},4,1,4,0" +locations_default(#20093,#10000,4,1,4,0) +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) +#20116=* +tokeninfo(#20116,8,#20001,2,"(") +#20117=@"loc,{#10000},1,21,1,21" +locations_default(#20117,#10000,1,21,1,21) +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) +hasLocation(#20118,#20119) +#20120=* +tokeninfo(#20120,8,#20001,4,":") +#20121=@"loc,{#10000},1,26,1,26" +locations_default(#20121,#10000,1,26,1,26) +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) +#20126=* +tokeninfo(#20126,8,#20001,8,":") +#20127=@"loc,{#10000},1,35,1,35" +locations_default(#20127,#10000,1,35,1,35) +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) +#20135=* +tokeninfo(#20135,7,#20001,13,"var") +#20136=@"loc,{#10000},3,1,3,3" +locations_default(#20136,#10000,3,1,3,3) +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) +#20149=* +tokeninfo(#20149,8,#20001,21,",") +#20150=@"loc,{#10000},3,30,3,30" +locations_default(#20150,#10000,3,30,3,30) +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) +#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) +#20165=* +tokeninfo(#20165,6,#20001,30,"ambient") +hasLocation(#20165,#20045) +#20166=* +tokeninfo(#20166,8,#20001,31,"(") +#20167=@"loc,{#10000},5,25,5,25" +locations_default(#20167,#10000,5,25,5,25) +hasLocation(#20166,#20167) +#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) +#20170=* +tokeninfo(#20170,8,#20001,33,":") +#20171=@"loc,{#10000},5,30,5,30" +locations_default(#20171,#10000,5,30,5,30) +hasLocation(#20170,#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) +#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) +#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) +#20185=* +tokeninfo(#20185,6,#20001,42,"C") +hasLocation(#20185,#20059) +#20186=* +tokeninfo(#20186,8,#20001,43,"{") +#20187=@"loc,{#10000},7,9,7,9" +locations_default(#20187,#10000,7,9,7,9) +hasLocation(#20186,#20187) +#20188=* +tokeninfo(#20188,6,#20001,44,"member") +hasLocation(#20188,#20064) +#20189=* +tokeninfo(#20189,8,#20001,45,"(") +#20190=@"loc,{#10000},8,9,8,9" +locations_default(#20190,#10000,8,9,8,9) +hasLocation(#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) +#20193=* +tokeninfo(#20193,8,#20001,47,":") +#20194=@"loc,{#10000},8,14,8,14" +locations_default(#20194,#10000,8,14,8,14) +hasLocation(#20193,#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) +#20197=* +tokeninfo(#20197,8,#20001,49,")") +#20198=@"loc,{#10000},8,17,8,17" +locations_default(#20198,#10000,8,17,8,17) +hasLocation(#20197,#20198) +#20199=* +tokeninfo(#20199,8,#20001,50,"{") +#20200=@"loc,{#10000},8,19,8,19" +locations_default(#20200,#10000,8,19,8,19) +hasLocation(#20199,#20200) +#20201=* +tokeninfo(#20201,8,#20001,51,"}") +#20202=@"loc,{#10000},8,20,8,20" +locations_default(#20202,#10000,8,20,8,20) +hasLocation(#20201,#20202) +#20203=* +tokeninfo(#20203,8,#20001,52,"}") +hasLocation(#20203,#20102) +#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) +#20207=* +tokeninfo(#20207,8,#20001,55,"{") +#20208=@"loc,{#10000},11,13,11,13" +locations_default(#20208,#10000,11,13,11,13) +hasLocation(#20207,#20208) +#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) +#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) +#20216=* +tokeninfo(#20216,6,#20001,60,"I") +#20217=@"loc,{#10000},12,16,12,16" +locations_default(#20217,#10000,12,16,12,16) +hasLocation(#20216,#20217) +#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) +#20222=* +tokeninfo(#20222,8,#20001,63,"}") +hasLocation(#20222,#20110) +#20223=* +tokeninfo(#20223,0,#20001,64,"") +#20224=@"loc,{#10000},15,1,15,0" +locations_default(#20224,#10000,15,1,15,0) +hasLocation(#20223,#20224) +#20225=* +entry_cfg_node(#20225,#20001) +#20226=@"loc,{#10000},1,1,1,0" +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) +#20228=* +entry_cfg_node(#20228,#20073) +hasLocation(#20228,#20071) +#20229=* +exit_cfg_node(#20229,#20073) +hasLocation(#20229,#20071) +successor(#20076,#20229) +successor(#20228,#20076) +successor(#20072,#20073) +successor(#20070,#20056) +successor(#20065,#20061) +#20230=* +entry_cfg_node(#20230,#20065) +#20231=@"loc,{#10000},8,3,8,2" +locations_default(#20231,#10000,8,3,8,2) +hasLocation(#20230,#20231) +#20232=* +exit_cfg_node(#20232,#20065) +#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) +#20234=* +entry_cfg_node(#20234,#20029) +#20235=@"loc,{#10000},3,9,3,8" +locations_default(#20235,#10000,3,9,3,8) +hasLocation(#20234,#20235) +#20236=* +exit_cfg_node(#20236,#20029) +#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) +#20238=* +entry_cfg_node(#20238,#20008) +hasLocation(#20238,#20226) +#20239=* +exit_cfg_node(#20239,#20008) +#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) +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 new file mode 100644 index 00000000000..70d753e1be0 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/tryfinally.ts.trap @@ -0,0 +1,285 @@ +#10000=@"/tryfinally.ts;sourcefile" +files(#10000,"/tryfinally.ts","tryfinally","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,8,0" +locations_default(#20002,#10000,1,1,8,0) +hasLocation(#20001,#20002) +#20003=@"var;{foo};{#20000}" +variables(#20003,"foo",#20000) +#20004=* +stmts(#20004,17,#20001,0,"functio ... ;\n }\n}") +#20005=@"loc,{#10000},1,1,7,1" +locations_default(#20005,#10000,1,1,7,1) +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 {"," +") +#20036=@"loc,{#10000},3,1,3,7" +locations_default(#20036,#10000,3,1,3,7) +hasLocation(#20035,#20036) +indentation(#10000,3," ",2) +#20037=* +lines(#20037,#20001," } finally {"," +") +#20038=@"loc,{#10000},4,1,4,13" +locations_default(#20038,#10000,4,1,4,13) +hasLocation(#20037,#20038) +indentation(#10000,4," ",2) +#20039=* +lines(#20039,#20001," return x;"," +") +#20040=@"loc,{#10000},5,1,5,13" +locations_default(#20040,#10000,5,1,5,13) +hasLocation(#20039,#20040) +indentation(#10000,5," ",4) +#20041=* +lines(#20041,#20001," }"," +") +#20042=@"loc,{#10000},6,1,6,3" +locations_default(#20042,#10000,6,1,6,3) +hasLocation(#20041,#20042) +indentation(#10000,6," ",2) +#20043=* +lines(#20043,#20001,"}"," +") +#20044=@"loc,{#10000},7,1,7,1" +locations_default(#20044,#10000,7,1,7,1) +hasLocation(#20043,#20044) +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) +#20048=* +tokeninfo(#20048,8,#20001,2,"(") +#20049=@"loc,{#10000},1,13,1,13" +locations_default(#20049,#10000,1,13,1,13) +hasLocation(#20048,#20049) +#20050=* +tokeninfo(#20050,8,#20001,3,")") +#20051=@"loc,{#10000},1,14,1,14" +locations_default(#20051,#10000,1,14,1,14) +hasLocation(#20050,#20051) +#20052=* +tokeninfo(#20052,8,#20001,4,"{") +#20053=@"loc,{#10000},1,16,1,16" +locations_default(#20053,#10000,1,16,1,16) +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) +#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) +#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) +#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) +#20075=* +tokeninfo(#20075,8,#20001,17,";") +#20076=@"loc,{#10000},5,13,5,13" +locations_default(#20076,#10000,5,13,5,13) +hasLocation(#20075,#20076) +#20077=* +tokeninfo(#20077,8,#20001,18,"}") +#20078=@"loc,{#10000},6,3,6,3" +locations_default(#20078,#10000,6,3,6,3) +hasLocation(#20077,#20078) +#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) +#20082=* +entry_cfg_node(#20082,#20001) +#20083=@"loc,{#10000},1,1,1,0" +locations_default(#20083,#10000,1,1,1,0) +hasLocation(#20082,#20083) +#20084=* +exit_cfg_node(#20084,#20001) +hasLocation(#20084,#20081) +successor(#20004,#20084) +#20085=* +entry_cfg_node(#20085,#20004) +hasLocation(#20085,#20083) +#20086=* +exit_cfg_node(#20086,#20004) +#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) +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 new file mode 100644 index 00000000000..a9064643cc4 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/tsx.tsx.trap @@ -0,0 +1,376 @@ +#10000=@"/tsx.tsx;sourcefile" +files(#10000,"/tsx.tsx","tsx","tsx",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,5,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,"
"," +") +#20046=@"loc,{#10000},1,1,1,45" +locations_default(#20046,#10000,1,1,1,45) +hasLocation(#20045,#20046) +#20047=* +lines(#20047,#20001," "," +") +#20048=@"loc,{#10000},2,1,2,20" +locations_default(#20048,#10000,2,1,2,20) +hasLocation(#20047,#20048) +indentation(#10000,2," ",2) +#20049=* +lines(#20049,#20001," "," +") +#20050=@"loc,{#10000},3,1,3,21" +locations_default(#20050,#10000,3,1,3,21) +hasLocation(#20049,#20050) +indentation(#10000,3," ",2) +#20051=* +lines(#20051,#20001,"
"," +") +#20052=@"loc,{#10000},4,1,4,6" +locations_default(#20052,#10000,4,1,4,6) +hasLocation(#20051,#20052) +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) +#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) +#20062=* +tokeninfo(#20062,8,#20001,6,"}") +#20063=@"loc,{#10000},1,28,1,28" +locations_default(#20063,#10000,1,28,1,28) +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) +#20070=* +tokeninfo(#20070,8,#20001,11,"}") +#20071=@"loc,{#10000},1,44,1,44" +locations_default(#20071,#10000,1,44,1,44) +hasLocation(#20070,#20071) +#20072=* +tokeninfo(#20072,8,#20001,12,">") +#20073=@"loc,{#10000},1,45,1,45" +locations_default(#20073,#10000,1,45,1,45) +hasLocation(#20072,#20073) +#20074=* +tokeninfo(#20074,8,#20001,13,"<") +#20075=@"loc,{#10000},2,3,2,3" +locations_default(#20075,#10000,2,3,2,3) +hasLocation(#20074,#20075) +#20076=* +tokeninfo(#20076,7,#20001,14,"this") +hasLocation(#20076,#20031) +#20077=* +tokeninfo(#20077,8,#20001,15,".") +#20078=@"loc,{#10000},2,8,2,8" +locations_default(#20078,#10000,2,8,2,8) +hasLocation(#20077,#20078) +#20079=* +tokeninfo(#20079,6,#20001,16,"props") +hasLocation(#20079,#20034) +#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) +#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) +#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) +#20091=* +tokeninfo(#20091,8,#20001,23,"-") +#20092=@"loc,{#10000},3,8,3,8" +locations_default(#20092,#10000,3,8,3,8) +hasLocation(#20091,#20092) +#20093=* +tokeninfo(#20093,7,#20001,24,"with") +#20094=@"loc,{#10000},3,9,3,12" +locations_default(#20094,#10000,3,9,3,12) +hasLocation(#20093,#20094) +#20095=* +tokeninfo(#20095,8,#20001,25,"-") +#20096=@"loc,{#10000},3,13,3,13" +locations_default(#20096,#10000,3,13,3,13) +hasLocation(#20095,#20096) +#20097=* +tokeninfo(#20097,6,#20001,26,"dashes") +#20098=@"loc,{#10000},3,14,3,19" +locations_default(#20098,#10000,3,14,3,19) +hasLocation(#20097,#20098) +#20099=* +tokeninfo(#20099,8,#20001,27,"/") +#20100=@"loc,{#10000},3,20,3,20" +locations_default(#20100,#10000,3,20,3,20) +hasLocation(#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) +#20103=* +tokeninfo(#20103,8,#20001,29,"") +#20108=@"loc,{#10000},4,6,4,6" +locations_default(#20108,#10000,4,6,4,6) +hasLocation(#20107,#20108) +#20109=* +tokeninfo(#20109,0,#20001,32,"") +#20110=@"loc,{#10000},5,1,5,0" +locations_default(#20110,#10000,5,1,5,0) +hasLocation(#20109,#20110) +#20111=* +entry_cfg_node(#20111,#20001) +#20112=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..b968796c59b --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/typeannotations.ts.trap @@ -0,0 +1,4820 @@ +#10000=@"/typeannotations.ts;sourcefile" +files(#10000,"/typeannotations.ts","typeannotations","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,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) +#20078=* +stmts(#20078,30,#20071,0,"export ... ce I {}") +#20079=@"loc,{#10000},4,3,4,23" +locations_default(#20079,#10000,4,3,4,23) +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) +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) +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) +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) +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) +#20090=* +typeexprs(#20090,22,#20086,-2,"T") +#20091=@"loc,{#10000},5,22,5,22" +locations_default(#20091,#10000,5,22,5,22) +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) +#20187=* +typeexprs(#20187,2,#20183,2,"number") +#20188=@"loc,{#10000},18,30,18,35" +locations_default(#20188,#10000,18,30,18,35) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +#20301=* +scopes(#20301,1) +scopenodes(#20300,#20301) +scopenesting(#20301,#20000) +#20302=@"var;{arguments};{#20301}" +variables(#20302,"arguments",#20301) +isArgumentsObject(#20302) +#20303=* +typeexprs(#20303,0,#20300,-3,"Point") +#20304=@"loc,{#10000},28,35,28,39" +locations_default(#20304,#10000,28,35,28,39) +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) +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) +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) +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) +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) +#20327=* +scopes(#20327,1) +scopenodes(#20326,#20327) +scopenesting(#20327,#20000) +#20328=@"var;{arguments};{#20327}" +variables(#20328,"arguments",#20327) +isArgumentsObject(#20328) +#20329=* +typeexprs(#20329,2,#20326,-3,"never") +#20330=@"loc,{#10000},30,31,30,35" +locations_default(#20330,#10000,30,31,30,35) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +#20437=* +exprs(#20437,78,#20433,0,"x") +#20438=@"loc,{#10000},40,29,40,29" +locations_default(#20438,#10000,40,29,40,29) +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) +#20447=* +stmts(#20447,18,#20001,35,"var gen ... ) => T;") +#20448=@"loc,{#10000},41,1,41,47" +locations_default(#20448,#10000,41,1,41,47) +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) +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) +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) +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) +#20459=* +exprs(#20459,78,#20455,0,"x") +#20460=@"loc,{#10000},41,37,41,37" +locations_default(#20460,#10000,41,37,41,37) +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) +#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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +#20567=* +typeexprs(#20567,1,#20560,0,"GenericInterface") +#20568=@"loc,{#10000},50,11,50,26" +locations_default(#20568,#10000,50,11,50,26) +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) +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) +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) +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) +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) +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) +#20585=* +typeexprs(#20585,0,#20579,-3,"T") +#20586=@"loc,{#10000},52,17,52,17" +locations_default(#20586,#10000,52,17,52,17) +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) +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) +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) +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) +#20595=* +typeexprs(#20595,22,#20589,-3,"T") +#20596=@"loc,{#10000},54,29,54,29" +locations_default(#20596,#10000,54,29,54,29) +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=* +#20609=* +typeexprs(#20609,0,#20604,2,"T") +#20610=@"loc,{#10000},55,10,55,10" +locations_default(#20610,#10000,55,10,55,10) +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) +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) +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) +#20621=* +typeexprs(#20621,0,#20615,-3,"T") +#20622=@"loc,{#10000},56,25,56,25" +locations_default(#20622,#10000,56,25,56,25) +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) +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) +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) +#20631=* +stmts(#20631,26,#20001,45,"class Fish {}") +#20632=@"loc,{#10000},59,1,59,13" +locations_default(#20632,#10000,59,1,59,13) +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) +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) +#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) +#20643=* +stmts(#20643,26,#20001,46,"class Bird {}") +#20644=@"loc,{#10000},60,1,60,13" +locations_default(#20644,#10000,60,1,60,13) +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) +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) +#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) +#20655=* +stmts(#20655,17,#20001,47,"functio ... Fish {}") +#20656=@"loc,{#10000},61,1,61,50" +locations_default(#20656,#10000,61,1,61,50) +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) +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) +#20661=* +exprs(#20661,78,#20655,0,"pet") +#20662=@"loc,{#10000},61,17,61,19" +locations_default(#20662,#10000,61,17,61,19) +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) +#20683=* +properties(#20683,#20678,2,0,"foo(x: ... this; }") +#20684=@"loc,{#10000},64,3,64,39" +locations_default(#20684,#10000,64,3,64,39) +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) +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) +#20693=* +typeexprs(#20693,2,#20687,-3,"this") +#20694=@"loc,{#10000},64,19,64,22" +locations_default(#20694,#10000,64,19,64,22) +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) +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) +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) +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) +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) +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) +#20707=* +scopes(#20707,1) +scopenodes(#20706,#20707) +scopenesting(#20707,#20682) +#20708=@"var;{arguments};{#20707}" +variables(#20708,"arguments",#20707) +isArgumentsObject(#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) +#20711=* +lines(#20711,#20001,""," +") +#20712=@"loc,{#10000},2,1,2,0" +locations_default(#20712,#10000,2,1,2,0) +hasLocation(#20711,#20712) +#20713=* +lines(#20713,#20001,"namespace N {"," +") +#20714=@"loc,{#10000},3,1,3,13" +locations_default(#20714,#10000,3,1,3,13) +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) +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) +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) +hasLocation(#20719,#20720) +#20721=* +lines(#20721,#20001,""," +") +#20722=@"loc,{#10000},7,1,7,0" +locations_default(#20722,#10000,7,1,7,0) +hasLocation(#20721,#20722) +#20723=* +lines(#20723,#20001,"var anyVar: any;"," +") +hasLocation(#20723,#20096) +#20724=* +lines(#20724,#20001,"var objectVar: object;"," +") +hasLocation(#20724,#20104) +#20725=* +lines(#20725,#20001,"var numberVar: number;"," +") +hasLocation(#20725,#20112) +#20726=* +lines(#20726,#20001,"var stringVar: string;"," +") +hasLocation(#20726,#20120) +#20727=* +lines(#20727,#20001,"var booleanVar: boolean;"," +") +hasLocation(#20727,#20128) +#20728=* +lines(#20728,#20001,"var nullVar: null;"," +") +hasLocation(#20728,#20136) +#20729=* +lines(#20729,#20001,"var undefinedVar: undefined;"," +") +hasLocation(#20729,#20144) +#20730=* +lines(#20730,#20001,"var voidVar: void;"," +") +hasLocation(#20730,#20152) +#20731=* +lines(#20731,#20001,"var neverVar: never;"," +") +hasLocation(#20731,#20160) +#20732=* +lines(#20732,#20001,"var symbolVar: symbol;"," +") +hasLocation(#20732,#20168) +#20733=* +lines(#20733,#20001,"var objectVar: { x: number; }"," +") +hasLocation(#20733,#20176) +#20734=* +lines(#20734,#20001,"var nestedObjectVar: { x: { y: number } }"," +") +hasLocation(#20734,#20190) +#20735=* +lines(#20735,#20001,"var arrayVar: number[]"," +") +hasLocation(#20735,#20210) +#20736=* +lines(#20736,#20001,"var stringObjectVar: String"," +") +hasLocation(#20736,#20220) +#20737=* +lines(#20737,#20001,"var pointVar: Point"," +") +hasLocation(#20737,#20228) +#20738=* +lines(#20738,#20001,"var rawFunctionVar: Function"," +") +hasLocation(#20738,#20236) +#20739=* +lines(#20739,#20001,"var varVar: x11"," +") +hasLocation(#20739,#20244) +#20740=* +lines(#20740,#20001,"var genericArrayVar: Array"," +") +hasLocation(#20740,#20252) +#20741=* +lines(#20741,#20001,"var nestedGenericVar: Foo>"," +") +hasLocation(#20741,#20264) +#20742=* +lines(#20742,#20001,"var callSigVar: () => number;"," +") +hasLocation(#20742,#20280) +#20743=* +lines(#20743,#20001,"var constructSigVar: new () => Point;"," +") +hasLocation(#20743,#20293) +#20744=* +lines(#20744,#20001,"var callSigVoidVar: () => void;"," +") +hasLocation(#20744,#20306) +#20745=* +lines(#20745,#20001,"var callSigNeverVar: () => never;"," +") +hasLocation(#20745,#20319) +#20746=* +lines(#20746,#20001,"var unionVar: number | string;"," +") +hasLocation(#20746,#20332) +#20747=* +lines(#20747,#20001,"var stringLiteralVar: ""literal"";"," +") +hasLocation(#20747,#20344) +#20748=* +lines(#20748,#20001,"var trueVar: true;"," +") +hasLocation(#20748,#20352) +#20749=* +lines(#20749,#20001,"var falseVar: false;"," +") +hasLocation(#20749,#20360) +#20750=* +lines(#20750,#20001,"var intLiteralVar: 100;"," +") +hasLocation(#20750,#20368) +#20751=* +lines(#20751,#20001,"var doubleLiteralVar: 100.50;"," +") +hasLocation(#20751,#20376) +#20752=* +lines(#20752,#20001,"var tupleVar: [string, number]"," +") +hasLocation(#20752,#20384) +#20753=* +lines(#20753,#20001,"var longUnionVar: null | 1 | ""two"" | [3]"," +") +hasLocation(#20753,#20396) +#20754=* +lines(#20754,#20001,"var intersectVar: Foo & Bar;"," +") +hasLocation(#20754,#20414) +#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) +#20757=* +lines(#20757,#20001,"var keyofVar: keyof Point"," +") +hasLocation(#20757,#20470) +#20758=* +lines(#20758,#20001,"var indexedVar: Point[""x""]"," +") +hasLocation(#20758,#20480) +#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) +#20761=* +lines(#20761,#20001,"var parenthesizedVar: (number);"," +") +hasLocation(#20761,#20523) +#20762=* +lines(#20762,#20001,"var namespaceTypeVar: N.I;"," +") +hasLocation(#20762,#20533) +#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) +#20785=* +lines(#20785,#20001,"class Bird {}"," +") +hasLocation(#20785,#20644) +#20786=* +lines(#20786,#20001,"function isFish(pet : Fish | Bird): pet is Fish {}"," +") +hasLocation(#20786,#20656) +#20787=* +lines(#20787,#20001,""," +") +#20788=@"loc,{#10000},62,1,62,0" +locations_default(#20788,#10000,62,1,62,0) +hasLocation(#20787,#20788) +#20789=* +lines(#20789,#20001,"class ThisTypes {"," +") +#20790=@"loc,{#10000},63,1,63,17" +locations_default(#20790,#10000,63,1,63,17) +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) +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) +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) +#20798=* +tokeninfo(#20798,8,#20001,2,"{") +#20799=@"loc,{#10000},1,17,1,17" +locations_default(#20799,#10000,1,17,1,17) +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) +#20804=* +tokeninfo(#20804,8,#20001,6,";") +#20805=@"loc,{#10000},1,28,1,28" +locations_default(#20805,#10000,1,28,1,28) +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) +#20810=* +tokeninfo(#20810,8,#20001,10,"}") +#20811=@"loc,{#10000},1,40,1,40" +locations_default(#20811,#10000,1,40,1,40) +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) +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) +#20822=* +tokeninfo(#20822,8,#20001,17,"{") +#20823=@"loc,{#10000},4,22,4,22" +locations_default(#20823,#10000,4,22,4,22) +hasLocation(#20822,#20823) +#20824=* +tokeninfo(#20824,8,#20001,18,"}") +#20825=@"loc,{#10000},4,23,4,23" +locations_default(#20825,#10000,4,23,4,23) +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) +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) +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) +#20834=* +tokeninfo(#20834,8,#20001,24,">") +#20835=@"loc,{#10000},5,23,5,23" +locations_default(#20835,#10000,5,23,5,23) +hasLocation(#20834,#20835) +#20836=* +tokeninfo(#20836,8,#20001,25,"{") +#20837=@"loc,{#10000},5,25,5,25" +locations_default(#20837,#10000,5,25,5,25) +hasLocation(#20836,#20837) +#20838=* +tokeninfo(#20838,8,#20001,26,"}") +#20839=@"loc,{#10000},5,26,5,26" +locations_default(#20839,#10000,5,26,5,26) +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) +#20844=* +tokeninfo(#20844,8,#20001,30,":") +#20845=@"loc,{#10000},8,11,8,11" +locations_default(#20845,#10000,8,11,8,11) +hasLocation(#20844,#20845) +#20846=* +tokeninfo(#20846,7,#20001,31,"any") +hasLocation(#20846,#20102) +#20847=* +tokeninfo(#20847,8,#20001,32,";") +#20848=@"loc,{#10000},8,28,8,28" +locations_default(#20848,#10000,8,28,8,28) +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) +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) +#20855=* +tokeninfo(#20855,8,#20001,37,";") +#20856=@"loc,{#10000},9,31,9,31" +locations_default(#20856,#10000,9,31,9,31) +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) +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) +#20863=* +tokeninfo(#20863,8,#20001,42,";") +#20864=@"loc,{#10000},10,31,10,31" +locations_default(#20864,#10000,10,31,10,31) +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) +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) +#20871=* +tokeninfo(#20871,8,#20001,47,";") +#20872=@"loc,{#10000},11,31,11,31" +locations_default(#20872,#10000,11,31,11,31) +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) +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) +#20879=* +tokeninfo(#20879,8,#20001,52,";") +#20880=@"loc,{#10000},12,32,12,32" +locations_default(#20880,#10000,12,32,12,32) +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) +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) +#20887=* +tokeninfo(#20887,8,#20001,57,";") +#20888=@"loc,{#10000},13,29,13,29" +locations_default(#20888,#10000,13,29,13,29) +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) +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) +#20895=* +tokeninfo(#20895,8,#20001,62,";") +#20896=@"loc,{#10000},14,34,14,34" +locations_default(#20896,#10000,14,34,14,34) +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) +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) +#20903=* +tokeninfo(#20903,8,#20001,67,";") +#20904=@"loc,{#10000},15,29,15,29" +locations_default(#20904,#10000,15,29,15,29) +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) +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) +#20911=* +tokeninfo(#20911,8,#20001,72,";") +#20912=@"loc,{#10000},16,30,16,30" +locations_default(#20912,#10000,16,30,16,30) +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) +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) +#20919=* +tokeninfo(#20919,8,#20001,77,";") +#20920=@"loc,{#10000},17,31,17,31" +locations_default(#20920,#10000,17,31,17,31) +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) +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) +#20926=* +tokeninfo(#20926,8,#20001,81,"{") +#20927=@"loc,{#10000},18,25,18,25" +locations_default(#20927,#10000,18,25,18,25) +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) +#20981=* +tokeninfo(#20981,8,#20001,115,":") +#20982=@"loc,{#10000},23,19,23,19" +locations_default(#20982,#10000,23,19,23,19) +hasLocation(#20981,#20982) +#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) +#20986=* +tokeninfo(#20986,6,#20001,118,"varVar") +hasLocation(#20986,#20248) +#20987=* +tokeninfo(#20987,8,#20001,119,":") +#20988=@"loc,{#10000},24,11,24,11" +locations_default(#20988,#10000,24,11,24,11) +hasLocation(#20987,#20988) +#20989=* +tokeninfo(#20989,6,#20001,120,"x11") +hasLocation(#20989,#20250) +#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) +#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) +#20999=* +tokeninfo(#20999,8,#20001,127,">") +#21000=@"loc,{#10000},25,37,25,37" +locations_default(#21000,#10000,25,37,25,37) +hasLocation(#20999,#21000) +#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) +#21004=* +tokeninfo(#21004,8,#20001,130,":") +#21005=@"loc,{#10000},26,21,26,21" +locations_default(#21005,#10000,26,21,26,21) +hasLocation(#21004,#21005) +#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) +#21009=* +tokeninfo(#21009,6,#20001,133,"Foo") +hasLocation(#21009,#20276) +#21010=* +tokeninfo(#21010,8,#20001,134,"<") +#21011=@"loc,{#10000},26,32,26,32" +locations_default(#21011,#10000,26,32,26,32) +hasLocation(#21010,#21011) +#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) +#21015=* +tokeninfo(#21015,8,#20001,137,">") +#21016=@"loc,{#10000},26,40,26,40" +locations_default(#21016,#10000,26,40,26,40) +hasLocation(#21015,#21016) +#21017=* +tokeninfo(#21017,7,#20001,138,"var") +#21018=@"loc,{#10000},27,1,27,3" +locations_default(#21018,#10000,27,1,27,3) +hasLocation(#21017,#21018) +#21019=* +tokeninfo(#21019,6,#20001,139,"callSigVar") +hasLocation(#21019,#20284) +#21020=* +tokeninfo(#21020,8,#20001,140,":") +#21021=@"loc,{#10000},27,15,27,15" +locations_default(#21021,#10000,27,15,27,15) +hasLocation(#21020,#21021) +#21022=* +tokeninfo(#21022,8,#20001,141,"(") +#21023=@"loc,{#10000},27,25,27,25" +locations_default(#21023,#10000,27,25,27,25) +hasLocation(#21022,#21023) +#21024=* +tokeninfo(#21024,8,#20001,142,")") +#21025=@"loc,{#10000},27,26,27,26" +locations_default(#21025,#10000,27,26,27,26) +hasLocation(#21024,#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) +#21029=* +tokeninfo(#21029,8,#20001,145,";") +#21030=@"loc,{#10000},27,37,27,37" +locations_default(#21030,#10000,27,37,27,37) +hasLocation(#21029,#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) +#21034=* +tokeninfo(#21034,8,#20001,148,":") +#21035=@"loc,{#10000},28,20,28,20" +locations_default(#21035,#10000,28,20,28,20) +hasLocation(#21034,#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) +#21040=* +tokeninfo(#21040,8,#20001,151,")") +#21041=@"loc,{#10000},28,30,28,30" +locations_default(#21041,#10000,28,30,28,30) +hasLocation(#21040,#21041) +#21042=* +tokeninfo(#21042,8,#20001,152,"=>") +#21043=@"loc,{#10000},28,32,28,33" +locations_default(#21043,#10000,28,32,28,33) +hasLocation(#21042,#21043) +#21044=* +tokeninfo(#21044,6,#20001,153,"Point") +hasLocation(#21044,#20304) +#21045=* +tokeninfo(#21045,8,#20001,154,";") +#21046=@"loc,{#10000},28,40,28,40" +locations_default(#21046,#10000,28,40,28,40) +hasLocation(#21045,#21046) +#21047=* +tokeninfo(#21047,7,#20001,155,"var") +#21048=@"loc,{#10000},29,1,29,3" +locations_default(#21048,#10000,29,1,29,3) +hasLocation(#21047,#21048) +#21049=* +tokeninfo(#21049,6,#20001,156,"callSigVoidVar") +hasLocation(#21049,#20310) +#21050=* +tokeninfo(#21050,8,#20001,157,":") +#21051=@"loc,{#10000},29,19,29,19" +locations_default(#21051,#10000,29,19,29,19) +hasLocation(#21050,#21051) +#21052=* +tokeninfo(#21052,8,#20001,158,"(") +#21053=@"loc,{#10000},29,25,29,25" +locations_default(#21053,#10000,29,25,29,25) +hasLocation(#21052,#21053) +#21054=* +tokeninfo(#21054,8,#20001,159,")") +#21055=@"loc,{#10000},29,26,29,26" +locations_default(#21055,#10000,29,26,29,26) +hasLocation(#21054,#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) +#21059=* +tokeninfo(#21059,8,#20001,162,";") +#21060=@"loc,{#10000},29,35,29,35" +locations_default(#21060,#10000,29,35,29,35) +hasLocation(#21059,#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) +#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) +#21070=* +tokeninfo(#21070,8,#20001,168,"=>") +#21071=@"loc,{#10000},30,28,30,29" +locations_default(#21071,#10000,30,28,30,29) +hasLocation(#21070,#21071) +#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) +#21075=* +tokeninfo(#21075,7,#20001,171,"var") +#21076=@"loc,{#10000},31,1,31,3" +locations_default(#21076,#10000,31,1,31,3) +hasLocation(#21075,#21076) +#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) +#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) +#21084=* +tokeninfo(#21084,8,#20001,177,";") +#21085=@"loc,{#10000},31,40,31,40" +locations_default(#21085,#10000,31,40,31,40) +hasLocation(#21084,#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) +#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) +#21092=* +tokeninfo(#21092,8,#20001,182,";") +#21093=@"loc,{#10000},32,34,32,34" +locations_default(#21093,#10000,32,34,32,34) +hasLocation(#21092,#21093) +#21094=* +tokeninfo(#21094,7,#20001,183,"var") +#21095=@"loc,{#10000},33,1,33,3" +locations_default(#21095,#10000,33,1,33,3) +hasLocation(#21094,#21095) +#21096=* +tokeninfo(#21096,6,#20001,184,"trueVar") +hasLocation(#21096,#20356) +#21097=* +tokeninfo(#21097,8,#20001,185,":") +#21098=@"loc,{#10000},33,12,33,12" +locations_default(#21098,#10000,33,12,33,12) +hasLocation(#21097,#21098) +#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) +#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) +#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) +#21107=* +tokeninfo(#21107,2,#20001,191,"false") +hasLocation(#21107,#20366) +#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) +#21112=* +tokeninfo(#21112,6,#20001,194,"intLiteralVar") +hasLocation(#21112,#20372) +#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) +#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) +#21120=* +tokeninfo(#21120,6,#20001,199,"doubleLiteralVar") +hasLocation(#21120,#20380) +#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) +#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) +#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) +#21131=* +tokeninfo(#21131,8,#20001,206,"[") +#21132=@"loc,{#10000},37,25,37,25" +locations_default(#21132,#10000,37,25,37,25) +hasLocation(#21131,#21132) +#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) +#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) +#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) +#21141=* +tokeninfo(#21141,6,#20001,212,"longUnionVar") +hasLocation(#21141,#20400) +#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) +#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) +#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) +#21151=* +tokeninfo(#21151,8,#20001,219,"|") +#21152=@"loc,{#10000},38,42,38,42" +locations_default(#21152,#10000,38,42,38,42) +hasLocation(#21151,#21152) +#21153=* +tokeninfo(#21153,8,#20001,220,"[") +#21154=@"loc,{#10000},38,44,38,44" +locations_default(#21154,#10000,38,44,38,44) +hasLocation(#21153,#21154) +#21155=* +tokeninfo(#21155,3,#20001,221,"3") +hasLocation(#21155,#20412) +#21156=* +tokeninfo(#21156,8,#20001,222,"]") +#21157=@"loc,{#10000},38,46,38,46" +locations_default(#21157,#10000,38,46,38,46) +hasLocation(#21156,#21157) +#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) +#21161=* +tokeninfo(#21161,8,#20001,225,":") +#21162=@"loc,{#10000},39,17,39,17" +locations_default(#21162,#10000,39,17,39,17) +hasLocation(#21161,#21162) +#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) +#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) +#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) +#21171=* +tokeninfo(#21171,6,#20001,231,"genericCallSigVar") +hasLocation(#21171,#20430) +#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) +#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) +#21179=* +tokeninfo(#21179,8,#20001,236,"(") +#21180=@"loc,{#10000},40,28,40,28" +locations_default(#21180,#10000,40,28,40,28) +hasLocation(#21179,#21180) +#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) +#21184=* +tokeninfo(#21184,6,#20001,239,"T") +hasLocation(#21184,#20443) +#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) +#21189=* +tokeninfo(#21189,6,#20001,242,"T") +hasLocation(#21189,#20441) +#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) +#21194=* +tokeninfo(#21194,6,#20001,245,"genericConstructSigVar") +hasLocation(#21194,#20452) +#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) +#21199=* +tokeninfo(#21199,8,#20001,248,"<") +#21200=@"loc,{#10000},41,33,41,33" +locations_default(#21200,#10000,41,33,41,33) +hasLocation(#21199,#21200) +#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) +#21204=* +tokeninfo(#21204,8,#20001,251,"(") +#21205=@"loc,{#10000},41,36,41,36" +locations_default(#21205,#10000,41,36,41,36) +hasLocation(#21204,#21205) +#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) +#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) +#21212=* +tokeninfo(#21212,8,#20001,256,"=>") +#21213=@"loc,{#10000},41,43,41,44" +locations_default(#21213,#10000,41,43,41,44) +hasLocation(#21212,#21213) +#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) +#21217=* +tokeninfo(#21217,7,#20001,259,"var") +#21218=@"loc,{#10000},42,1,42,3" +locations_default(#21218,#10000,42,1,42,3) +hasLocation(#21217,#21218) +#21219=* +tokeninfo(#21219,6,#20001,260,"keyofVar") +hasLocation(#21219,#20474) +#21220=* +tokeninfo(#21220,8,#20001,261,":") +#21221=@"loc,{#10000},42,13,42,13" +locations_default(#21221,#10000,42,13,42,13) +hasLocation(#21220,#21221) +#21222=* +tokeninfo(#21222,7,#20001,262,"keyof") +#21223=@"loc,{#10000},42,25,42,29" +locations_default(#21223,#10000,42,25,42,29) +hasLocation(#21222,#21223) +#21224=* +tokeninfo(#21224,6,#20001,263,"Point") +hasLocation(#21224,#20478) +#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) +#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) +#21231=* +tokeninfo(#21231,8,#20001,268,"[") +#21232=@"loc,{#10000},43,30,43,30" +locations_default(#21232,#10000,43,30,43,30) +hasLocation(#21231,#21232) +#21233=* +tokeninfo(#21233,4,#20001,269,"""x""") +hasLocation(#21233,#20490) +#21234=* +tokeninfo(#21234,8,#20001,270,"]") +#21235=@"loc,{#10000},43,34,43,34" +locations_default(#21235,#10000,43,34,43,34) +hasLocation(#21234,#21235) +#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) +#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) +#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) +#21246=* +tokeninfo(#21246,6,#20001,277,"mappedVar") +hasLocation(#21246,#20507) +#21247=* +tokeninfo(#21247,8,#20001,278,":") +#21248=@"loc,{#10000},45,14,45,14" +locations_default(#21248,#10000,45,14,45,14) +hasLocation(#21247,#21248) +#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) +#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) +#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) +#21259=* +tokeninfo(#21259,8,#20001,285,"]") +#21260=@"loc,{#10000},45,44,45,44" +locations_default(#21260,#10000,45,44,45,44) +hasLocation(#21259,#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) +#21263=* +tokeninfo(#21263,7,#20001,287,"any") +hasLocation(#21263,#20521) +#21264=* +tokeninfo(#21264,8,#20001,288,"}") +#21265=@"loc,{#10000},45,51,45,51" +locations_default(#21265,#10000,45,51,45,51) +hasLocation(#21264,#21265) +#21266=* +tokeninfo(#21266,7,#20001,289,"var") +#21267=@"loc,{#10000},46,1,46,3" +locations_default(#21267,#10000,46,1,46,3) +hasLocation(#21266,#21267) +#21268=* +tokeninfo(#21268,6,#20001,290,"parenthesizedVar") +hasLocation(#21268,#20527) +#21269=* +tokeninfo(#21269,8,#20001,291,":") +#21270=@"loc,{#10000},46,21,46,21" +locations_default(#21270,#10000,46,21,46,21) +hasLocation(#21269,#21270) +#21271=* +tokeninfo(#21271,8,#20001,292,"(") +#21272=@"loc,{#10000},46,25,46,25" +locations_default(#21272,#10000,46,25,46,25) +hasLocation(#21271,#21272) +#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) +#21276=* +tokeninfo(#21276,8,#20001,295,";") +#21277=@"loc,{#10000},46,33,46,33" +locations_default(#21277,#10000,46,33,46,33) +hasLocation(#21276,#21277) +#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) +#21280=* +tokeninfo(#21280,6,#20001,297,"namespaceTypeVar") +hasLocation(#21280,#20537) +#21281=* +tokeninfo(#21281,8,#20001,298,":") +#21282=@"loc,{#10000},47,21,47,21" +locations_default(#21282,#10000,47,21,47,21) +hasLocation(#21281,#21282) +#21283=* +tokeninfo(#21283,6,#20001,299,"N") +hasLocation(#21283,#20541) +#21284=* +tokeninfo(#21284,8,#20001,300,".") +#21285=@"loc,{#10000},47,26,47,26" +locations_default(#21285,#10000,47,26,47,26) +hasLocation(#21284,#21285) +#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) +#21289=* +tokeninfo(#21289,7,#20001,303,"var") +#21290=@"loc,{#10000},48,1,48,3" +locations_default(#21290,#10000,48,1,48,3) +hasLocation(#21289,#21290) +#21291=* +tokeninfo(#21291,6,#20001,304,"namespaceGenericTypeVar") +hasLocation(#21291,#20549) +#21292=* +tokeninfo(#21292,8,#20001,305,":") +#21293=@"loc,{#10000},48,28,48,28" +locations_default(#21293,#10000,48,28,48,28) +hasLocation(#21292,#21293) +#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) +#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) +#21301=* +tokeninfo(#21301,8,#20001,311,">") +#21302=@"loc,{#10000},48,40,48,40" +locations_default(#21302,#10000,48,40,48,40) +hasLocation(#21301,#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) +#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) +#21310=* +tokeninfo(#21310,6,#20001,316,"T") +hasLocation(#21310,#20565) +#21311=* +tokeninfo(#21311,8,#20001,317,">") +#21312=@"loc,{#10000},50,29,50,29" +locations_default(#21312,#10000,50,29,50,29) +hasLocation(#21311,#21312) +#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) +#21316=* +tokeninfo(#21316,8,#20001,320,":") +#21317=@"loc,{#10000},51,8,51,8" +locations_default(#21317,#10000,51,8,51,8) +hasLocation(#21316,#21317) +#21318=* +tokeninfo(#21318,6,#20001,321,"T") +hasLocation(#21318,#20574) +#21319=* +tokeninfo(#21319,8,#20001,322,";") +#21320=@"loc,{#10000},51,11,51,11" +locations_default(#21320,#10000,51,11,51,11) +hasLocation(#21319,#21320) +#21321=* +tokeninfo(#21321,6,#20001,323,"method") +hasLocation(#21321,#20578) +#21322=* +tokeninfo(#21322,8,#20001,324,"(") +#21323=@"loc,{#10000},52,9,52,9" +locations_default(#21323,#10000,52,9,52,9) +hasLocation(#21322,#21323) +#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) +#21327=* +tokeninfo(#21327,6,#20001,327,"T") +hasLocation(#21327,#20588) +#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) +#21333=* +tokeninfo(#21333,8,#20001,331,";") +#21334=@"loc,{#10000},52,18,52,18" +locations_default(#21334,#10000,52,18,52,18) +hasLocation(#21333,#21334) +#21335=* +tokeninfo(#21335,8,#20001,332,"}") +hasLocation(#21335,#20773) +#21336=* +tokeninfo(#21336,7,#20001,333,"abstract") +#21337=@"loc,{#10000},54,1,54,8" +locations_default(#21337,#10000,54,1,54,8) +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) +#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) +#21343=* +tokeninfo(#21343,6,#20001,337,"T") +hasLocation(#21343,#20596) +#21344=* +tokeninfo(#21344,8,#20001,338,">") +#21345=@"loc,{#10000},54,30,54,30" +locations_default(#21345,#10000,54,30,54,30) +hasLocation(#21344,#21345) +#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) +#21348=* +tokeninfo(#21348,6,#20001,340,"GenericInterface") +hasLocation(#21348,#20601) +#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) +#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) +#21356=* +tokeninfo(#21356,6,#20001,345,"field") +hasLocation(#21356,#20607) +#21357=* +tokeninfo(#21357,8,#20001,346,":") +#21358=@"loc,{#10000},55,8,55,8" +locations_default(#21358,#10000,55,8,55,8) +hasLocation(#21357,#21358) +#21359=* +tokeninfo(#21359,6,#20001,347,"T") +hasLocation(#21359,#20610) +#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) +#21363=* +tokeninfo(#21363,8,#20001,350,"(") +#21364=@"loc,{#10000},56,18,56,18" +locations_default(#21364,#10000,56,18,56,18) +hasLocation(#21363,#21364) +#21365=* +tokeninfo(#21365,6,#20001,351,"x") +hasLocation(#21365,#20619) +#21366=* +tokeninfo(#21366,8,#20001,352,":") +#21367=@"loc,{#10000},56,20,56,20" +locations_default(#21367,#10000,56,20,56,20) +hasLocation(#21366,#21367) +#21368=* +tokeninfo(#21368,6,#20001,353,"T") +hasLocation(#21368,#20624) +#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) +#21374=* +tokeninfo(#21374,8,#20001,357,";") +#21375=@"loc,{#10000},56,26,56,26" +locations_default(#21375,#10000,56,26,56,26) +hasLocation(#21374,#21375) +#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) +#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) +#21382=* +tokeninfo(#21382,8,#20001,362,"}") +#21383=@"loc,{#10000},59,13,59,13" +locations_default(#21383,#10000,59,13,59,13) +hasLocation(#21382,#21383) +#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) +#21387=* +tokeninfo(#21387,8,#20001,365,"{") +#21388=@"loc,{#10000},60,12,60,12" +locations_default(#21388,#10000,60,12,60,12) +hasLocation(#21387,#21388) +#21389=* +tokeninfo(#21389,8,#20001,366,"}") +#21390=@"loc,{#10000},60,13,60,13" +locations_default(#21390,#10000,60,13,60,13) +hasLocation(#21389,#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) +#21393=* +tokeninfo(#21393,6,#20001,368,"isFish") +hasLocation(#21393,#20658) +#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) +#21397=* +tokeninfo(#21397,8,#20001,371,":") +#21398=@"loc,{#10000},61,21,61,21" +locations_default(#21398,#10000,61,21,61,21) +hasLocation(#21397,#21398) +#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) +#21402=* +tokeninfo(#21402,6,#20001,374,"Bird") +hasLocation(#21402,#20675) +#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) +#21408=* +tokeninfo(#21408,7,#20001,378,"is") +#21409=@"loc,{#10000},61,41,61,42" +locations_default(#21409,#10000,61,41,61,42) +hasLocation(#21408,#21409) +#21410=* +tokeninfo(#21410,6,#20001,379,"Fish") +hasLocation(#21410,#20669) +#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) +#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) +#21418=* +tokeninfo(#21418,8,#20001,384,"{") +#21419=@"loc,{#10000},63,17,63,17" +locations_default(#21419,#10000,63,17,63,17) +hasLocation(#21418,#21419) +#21420=* +tokeninfo(#21420,6,#20001,385,"foo") +hasLocation(#21420,#20686) +#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) +#21424=* +tokeninfo(#21424,8,#20001,388,":") +#21425=@"loc,{#10000},64,8,64,8" +locations_default(#21425,#10000,64,8,64,8) +hasLocation(#21424,#21425) +#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) +#21431=* +tokeninfo(#21431,7,#20001,392,"this") +hasLocation(#21431,#20694) +#21432=* +tokeninfo(#21432,8,#20001,393,"{") +#21433=@"loc,{#10000},64,24,64,24" +locations_default(#21433,#10000,64,24,64,24) +hasLocation(#21432,#21433) +#21434=* +tokeninfo(#21434,7,#20001,394,"return") +#21435=@"loc,{#10000},64,26,64,31" +locations_default(#21435,#10000,64,26,64,31) +hasLocation(#21434,#21435) +#21436=* +tokeninfo(#21436,7,#20001,395,"this") +hasLocation(#21436,#20702) +#21437=* +tokeninfo(#21437,8,#20001,396,";") +#21438=@"loc,{#10000},64,37,64,37" +locations_default(#21438,#10000,64,37,64,37) +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) +#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) +#21444=* +entry_cfg_node(#21444,#20001) +#21445=@"loc,{#10000},1,1,1,0" +locations_default(#21445,#10000,1,1,1,0) +hasLocation(#21444,#21445) +#21446=* +exit_cfg_node(#21446,#20001) +hasLocation(#21446,#21443) +successor(#20706,#20703) +#21447=* +entry_cfg_node(#21447,#20706) +hasLocation(#21447,#20704) +#21448=* +exit_cfg_node(#21448,#20706) +hasLocation(#21448,#20704) +successor(#20709,#21448) +successor(#21447,#20709) +successor(#20705,#20706) +successor(#20703,#20678) +successor(#20687,#20683) +#21449=* +entry_cfg_node(#21449,#20687) +#21450=@"loc,{#10000},64,3,64,2" +locations_default(#21450,#10000,64,3,64,2) +hasLocation(#21449,#21450) +#21451=* +exit_cfg_node(#21451,#20687) +#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) +#21453=* +entry_cfg_node(#21453,#20655) +#21454=@"loc,{#10000},61,1,61,0" +locations_default(#21454,#10000,61,1,61,0) +hasLocation(#21453,#21454) +#21455=* +exit_cfg_node(#21455,#20655) +#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) +#21457=* +entry_cfg_node(#21457,#20651) +hasLocation(#21457,#20649) +#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) +#21459=* +entry_cfg_node(#21459,#20639) +hasLocation(#21459,#20637) +#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) +#21461=* +entry_cfg_node(#21461,#20608) +hasLocation(#21461,#20626) +successor(#20604,#20630) +#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) +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 new file mode 100644 index 00000000000..0508f485c17 --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/unicode.ts.trap @@ -0,0 +1,58 @@ +#10000=@"/unicode.ts;sourcefile" +files(#10000,"/unicode.ts","unicode","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},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) +#20009=* +lines(#20009,#20001,"// Ø α"," +") +hasLocation(#20009,#20004) +#20010=* +lines(#20010,#20001,"// ࢢ "," +") +hasLocation(#20010,#20006) +#20011=* +lines(#20011,#20001,"// ð„ž"," +") +hasLocation(#20011,#20008) +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) +#20013=* +entry_cfg_node(#20013,#20001) +hasLocation(#20013,#20002) +#20014=* +exit_cfg_node(#20014,#20001) +hasLocation(#20014,#20002) +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 new file mode 100644 index 00000000000..aa3513e68ee --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/unicodeId.ts.trap @@ -0,0 +1,93 @@ +#10000=@"/unicodeId.ts;sourcefile" +files(#10000,"/unicodeId.ts","unicodeId","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,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) +#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) +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) +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) +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") +#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) +#20018=* +tokeninfo(#20018,3,#20001,3,"1") +hasLocation(#20018,#20011) +#20019=* +tokeninfo(#20019,8,#20001,4,";") +#20020=@"loc,{#10000},1,82,1,82" +locations_default(#20020,#10000,1,82,1,82) +hasLocation(#20019,#20020) +#20021=* +tokeninfo(#20021,0,#20001,5,"") +#20022=@"loc,{#10000},2,1,2,0" +locations_default(#20022,#10000,2,1,2,0) +hasLocation(#20021,#20022) +#20023=* +entry_cfg_node(#20023,#20001) +#20024=@"loc,{#10000},1,1,1,0" +locations_default(#20024,#10000,1,1,1,0) +hasLocation(#20023,#20024) +#20025=* +exit_cfg_node(#20025,#20001) +hasLocation(#20025,#20022) +successor(#20004,#20008) +successor(#20010,#20006) +successor(#20008,#20010) +successor(#20006,#20025) +successor(#20023,#20004) +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 new file mode 100644 index 00000000000..2fe5f45632c --- /dev/null +++ b/javascript/extractor/tests/ts/output/trap/uninstantiatedNamespace.ts.trap @@ -0,0 +1,998 @@ +#10000=@"/uninstantiatedNamespace.ts;sourcefile" +files(#10000,"/uninstantiatedNamespace.ts","uninstantiatedNamespace","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,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) +#20020=* +stmts(#20020,31,#20005,0,"namespace Empty {}") +#20021=@"loc,{#10000},3,3,3,20" +locations_default(#20021,#10000,3,3,3,20) +hasLocation(#20020,#20021) +stmtContainers(#20020,#20005) +#20022=* +exprs(#20022,78,#20020,-1,"Empty") +#20023=@"loc,{#10000},3,13,3,17" +locations_default(#20023,#10000,3,13,3,17) +hasLocation(#20022,#20023) +enclosingStmt(#20022,#20020) +exprContainers(#20022,#20005) +literals("Empty","Empty",#20022) +namespacedecl(#20022,#20013) +#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) +#20030=* +stmts(#20030,31,#20005,2,"namespa ... {}\n }") +#20031=@"loc,{#10000},8,3,10,3" +locations_default(#20031,#10000,8,3,10,3) +hasLocation(#20030,#20031) +stmtContainers(#20030,#20005) +#20032=* +exprs(#20032,78,#20030,-1,"Outer") +#20033=@"loc,{#10000},8,13,8,17" +locations_default(#20033,#10000,8,13,8,17) +hasLocation(#20032,#20033) +enclosingStmt(#20032,#20030) +exprContainers(#20032,#20005) +literals("Outer","Outer",#20032) +namespacedecl(#20032,#20015) +#20034=* +scopes(#20034,9) +scopenodes(#20030,#20034) +scopenesting(#20034,#20009) +#20035=@"local_namespace_name;{Inner};{#20034}" +local_namespace_names(#20035,"Inner",#20034) +#20036=* +stmts(#20036,31,#20030,0,"namespace Inner {}") +#20037=@"loc,{#10000},9,5,9,22" +locations_default(#20037,#10000,9,5,9,22) +hasLocation(#20036,#20037) +stmtContainers(#20036,#20030) +#20038=* +exprs(#20038,78,#20036,-1,"Inner") +#20039=@"loc,{#10000},9,15,9,19" +locations_default(#20039,#10000,9,15,9,19) +hasLocation(#20038,#20039) +enclosingStmt(#20038,#20036) +exprContainers(#20038,#20030) +literals("Inner","Inner",#20038) +namespacedecl(#20038,#20035) +#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) +#20054=* +stmts(#20054,31,#20005,4,"namespa ... }\n }") +#20055=@"loc,{#10000},14,3,19,3" +locations_default(#20055,#10000,14,3,19,3) +hasLocation(#20054,#20055) +stmtContainers(#20054,#20005) +#20056=* +exprs(#20056,78,#20054,-1,"Interfaces") +#20057=@"loc,{#10000},14,13,14,22" +locations_default(#20057,#10000,14,13,14,22) +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) +#20060=* +stmts(#20060,34,#20054,0,"interfa ... ;\n }") +#20061=@"loc,{#10000},15,5,18,5" +locations_default(#20061,#10000,15,5,18,5) +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) +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) +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) +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) +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) +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) +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) +#20084=* +stmts(#20084,0,#20079,0,";") +#20085=@"loc,{#10000},21,29,21,29" +locations_default(#20085,#10000,21,29,21,29) +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) +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) +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) +#20104=* +exprs(#20104,79,#20099,1,"Comments") +#20105=@"loc,{#10000},24,19,24,26" +locations_default(#20105,#10000,24,19,24,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) +#20110=* +exprs(#20110,79,#20099,3,"Outer2") +#20111=@"loc,{#10000},24,36,24,41" +locations_default(#20111,#10000,24,36,24,41) +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) +#20116=* +exprs(#20116,79,#20099,5,"EmptyStatement") +#20117=@"loc,{#10000},24,56,24,69" +locations_default(#20117,#10000,24,56,24,69) +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) +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) +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) +hasLocation(#20122,#20123) +#20124=* +lines(#20124,#20001,"namespace Wrapper {"," +") +#20125=@"loc,{#10000},1,1,1,19" +locations_default(#20125,#10000,1,1,1,19) +hasLocation(#20124,#20125) +#20126=* +lines(#20126,#20001,""," +") +#20127=@"loc,{#10000},2,1,2,0" +locations_default(#20127,#10000,2,1,2,0) +hasLocation(#20126,#20127) +#20128=* +lines(#20128,#20001," namespace Empty {}"," +") +#20129=@"loc,{#10000},3,1,3,20" +locations_default(#20129,#10000,3,1,3,20) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +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) +hasLocation(#20162,#20163) +#20164=* +lines(#20164,#20001," namespace EmptyStatement {;}"," +") +#20165=@"loc,{#10000},21,1,21,30" +locations_default(#20165,#10000,21,1,21,30) +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) +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) +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) +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) +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) +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) +#20182=* +tokeninfo(#20182,8,#20001,5,"{") +#20183=@"loc,{#10000},3,19,3,19" +locations_default(#20183,#10000,3,19,3,19) +hasLocation(#20182,#20183) +#20184=* +tokeninfo(#20184,8,#20001,6,"}") +#20185=@"loc,{#10000},3,20,3,20" +locations_default(#20185,#10000,3,20,3,20) +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) +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) +#20196=* +tokeninfo(#20196,8,#20001,13,"{") +#20197=@"loc,{#10000},8,19,8,19" +locations_default(#20197,#10000,8,19,8,19) +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) +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) +#20207=* +tokeninfo(#20207,7,#20001,19,"namespace") +#20208=@"loc,{#10000},11,3,11,11" +locations_default(#20208,#10000,11,3,11,11) +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) +#20212=* +tokeninfo(#20212,7,#20001,22,"export") +#20213=@"loc,{#10000},12,5,12,10" +locations_default(#20213,#10000,12,5,12,10) +hasLocation(#20212,#20213) +#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) +#20226=* +tokeninfo(#20226,8,#20001,30,"{") +#20227=@"loc,{#10000},14,24,14,24" +locations_default(#20227,#10000,14,24,14,24) +hasLocation(#20226,#20227) +#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) +#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) +#20233=* +tokeninfo(#20233,6,#20001,34,"x") +hasLocation(#20233,#20067) +#20234=* +tokeninfo(#20234,8,#20001,35,":") +#20235=@"loc,{#10000},16,8,16,8" +locations_default(#20235,#10000,16,8,16,8) +hasLocation(#20234,#20235) +#20236=* +tokeninfo(#20236,7,#20001,36,"number") +hasLocation(#20236,#20069) +#20237=* +tokeninfo(#20237,8,#20001,37,";") +#20238=@"loc,{#10000},16,16,16,16" +locations_default(#20238,#10000,16,16,16,16) +hasLocation(#20237,#20238) +#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) +#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) +#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) +#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) +#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) +#20259=* +tokeninfo(#20259,8,#20001,50,"}") +#20260=@"loc,{#10000},21,30,21,30" +locations_default(#20260,#10000,21,30,21,30) +hasLocation(#20259,#20260) +#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) +#20264=* +tokeninfo(#20264,8,#20001,53,"{") +#20265=@"loc,{#10000},22,24,22,24" +locations_default(#20265,#10000,22,24,22,24) +hasLocation(#20264,#20265) +#20266=* +tokeninfo(#20266,8,#20001,54,"{") +#20267=@"loc,{#10000},22,25,22,25" +locations_default(#20267,#10000,22,25,22,25) +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) +#20270=* +tokeninfo(#20270,8,#20001,56,"}") +#20271=@"loc,{#10000},22,27,22,27" +locations_default(#20271,#10000,22,27,22,27) +hasLocation(#20270,#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) +#20275=* +tokeninfo(#20275,8,#20001,59,"=") +#20276=@"loc,{#10000},24,9,24,9" +locations_default(#20276,#10000,24,9,24,9) +hasLocation(#20275,#20276) +#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) +#20280=* +tokeninfo(#20280,8,#20001,62,",") +#20281=@"loc,{#10000},24,17,24,17" +locations_default(#20281,#10000,24,17,24,17) +hasLocation(#20280,#20281) +#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) +#20286=* +tokeninfo(#20286,8,#20001,66,",") +#20287=@"loc,{#10000},24,34,24,34" +locations_default(#20287,#10000,24,34,24,34) +hasLocation(#20286,#20287) +#20288=* +tokeninfo(#20288,6,#20001,67,"Outer2") +hasLocation(#20288,#20111) +#20289=* +tokeninfo(#20289,8,#20001,68,",") +#20290=@"loc,{#10000},24,42,24,42" +locations_default(#20290,#10000,24,42,24,42) +hasLocation(#20289,#20290) +#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) +#20295=* +tokeninfo(#20295,8,#20001,72,",") +#20296=@"loc,{#10000},24,70,24,70" +locations_default(#20296,#10000,24,70,24,70) +hasLocation(#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) +#20301=* +tokeninfo(#20301,0,#20001,76,"") +#20302=@"loc,{#10000},26,1,26,0" +locations_default(#20302,#10000,26,1,26,0) +hasLocation(#20301,#20302) +#20303=* +entry_cfg_node(#20303,#20001) +#20304=@"loc,{#10000},1,1,1,0" +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) +numlines(#10000,25,20,2) +filetype(#10000,"typescript") diff --git a/javascript/extractor/tests/v8/input/tst.js b/javascript/extractor/tests/v8/input/tst.js new file mode 100644 index 00000000000..56433afb380 --- /dev/null +++ b/javascript/extractor/tests/v8/input/tst.js @@ -0,0 +1,2 @@ +%CheckIsBootstrapping(); +a%%NumberAdd(1, 2); \ No newline at end of file diff --git a/javascript/extractor/tests/v8/options.json b/javascript/extractor/tests/v8/options.json new file mode 100644 index 00000000000..075583ca1f6 --- /dev/null +++ b/javascript/extractor/tests/v8/options.json @@ -0,0 +1,3 @@ +{ + "experimental": true +} diff --git a/javascript/extractor/tests/v8/output/trap/tst.js.trap b/javascript/extractor/tests/v8/output/trap/tst.js.trap new file mode 100644 index 00000000000..cb2ccc20a90 --- /dev/null +++ b/javascript/extractor/tests/v8/output/trap/tst.js.trap @@ -0,0 +1,196 @@ +#10000=@"/tst.js;sourcefile" +files(#10000,"/tst.js","tst","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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();"," +") +hasLocation(#20026,#20004) +#20027=* +lines(#20027,#20001,"a%%NumberAdd(1, 2);","") +hasLocation(#20027,#20011) +numlines(#20001,2,2,0) +#20028=* +tokeninfo(#20028,8,#20001,0,"%") +#20029=@"loc,{#10000},1,1,1,1" +locations_default(#20029,#10000,1,1,1,1) +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) +#20040=* +tokeninfo(#20040,8,#20001,7,"%") +#20041=@"loc,{#10000},2,3,2,3" +locations_default(#20041,#10000,2,3,2,3) +hasLocation(#20040,#20041) +#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) +#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) +#20049=* +tokeninfo(#20049,8,#20001,13,")") +#20050=@"loc,{#10000},2,18,2,18" +locations_default(#20050,#10000,2,18,2,18) +hasLocation(#20049,#20050) +#20051=* +tokeninfo(#20051,8,#20001,14,";") +#20052=@"loc,{#10000},2,19,2,19" +locations_default(#20052,#10000,2,19,2,19) +hasLocation(#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) +#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,#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) +numlines(#10000,2,2,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/variables/input/const.js b/javascript/extractor/tests/variables/input/const.js new file mode 100644 index 00000000000..398d670719c --- /dev/null +++ b/javascript/extractor/tests/variables/input/const.js @@ -0,0 +1 @@ +const answer = 42; \ No newline at end of file diff --git a/javascript/extractor/tests/variables/input/finally.js b/javascript/extractor/tests/variables/input/finally.js new file mode 100644 index 00000000000..c3ee36500d2 --- /dev/null +++ b/javascript/extractor/tests/variables/input/finally.js @@ -0,0 +1,8 @@ +function f(x) { + function g() { + try { + } finally { + var x; + } + } +} diff --git a/javascript/extractor/tests/variables/input/switch.js b/javascript/extractor/tests/variables/input/switch.js new file mode 100644 index 00000000000..b9cc5bfe1bb --- /dev/null +++ b/javascript/extractor/tests/variables/input/switch.js @@ -0,0 +1,6 @@ +function g() { + switch (0) { + default: + var i; + } +} diff --git a/javascript/extractor/tests/variables/input/try.js b/javascript/extractor/tests/variables/input/try.js new file mode 100644 index 00000000000..170d204f5cc --- /dev/null +++ b/javascript/extractor/tests/variables/input/try.js @@ -0,0 +1,5 @@ +function f() { + try { + var x; + } finally {} +} \ No newline at end of file diff --git a/javascript/extractor/tests/variables/input/variables.js b/javascript/extractor/tests/variables/input/variables.js new file mode 100644 index 00000000000..d53cf314bcd --- /dev/null +++ b/javascript/extractor/tests/variables/input/variables.js @@ -0,0 +1,19 @@ +var global; +also_a_global = 23; +global; +another_global; +{ + var another_global; +} +function f() { + var x; + x; +} +function g() { + x; + var x; + { + function h() {} + !function k() {} + } +} \ No newline at end of file diff --git a/javascript/extractor/tests/variables/output/trap/const.js.trap b/javascript/extractor/tests/variables/output/trap/const.js.trap new file mode 100644 index 00000000000..e3e1846c4fc --- /dev/null +++ b/javascript/extractor/tests/variables/output/trap/const.js.trap @@ -0,0 +1,90 @@ +#10000=@"/const.js;sourcefile" +files(#10000,"/const.js","const","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,1,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) +numlines(#20001,1,1,0) +#20012=* +tokeninfo(#20012,7,#20001,0,"const") +#20013=@"loc,{#10000},1,1,1,5" +locations_default(#20013,#10000,1,1,1,5) +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) +#20017=* +tokeninfo(#20017,3,#20001,3,"42") +hasLocation(#20017,#20010) +#20018=* +tokeninfo(#20018,8,#20001,4,";") +#20019=@"loc,{#10000},1,18,1,18" +locations_default(#20019,#10000,1,18,1,18) +hasLocation(#20018,#20019) +#20020=* +tokeninfo(#20020,0,#20001,5,"") +#20021=@"loc,{#10000},1,19,1,18" +locations_default(#20021,#10000,1,19,1,18) +hasLocation(#20020,#20021) +#20022=* +entry_cfg_node(#20022,#20001) +#20023=@"loc,{#10000},1,1,1,0" +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) +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 new file mode 100644 index 00000000000..b1c76a9e920 --- /dev/null +++ b/javascript/extractor/tests/variables/output/trap/finally.js.trap @@ -0,0 +1,329 @@ +#10000=@"/finally.js;sourcefile" +files(#10000,"/finally.js","finally","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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) {"," +") +#20037=@"loc,{#10000},1,1,1,15" +locations_default(#20037,#10000,1,1,1,15) +hasLocation(#20036,#20037) +#20038=* +lines(#20038,#20001," function g() {"," +") +#20039=@"loc,{#10000},2,1,2,16" +locations_default(#20039,#10000,2,1,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) +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) +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) +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) +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) +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) +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) +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) +#20058=* +tokeninfo(#20058,8,#20001,4,")") +#20059=@"loc,{#10000},1,13,1,13" +locations_default(#20059,#10000,1,13,1,13) +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) +#20065=* +tokeninfo(#20065,8,#20001,8,"(") +#20066=@"loc,{#10000},2,13,2,13" +locations_default(#20066,#10000,2,13,2,13) +hasLocation(#20065,#20066) +#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) +#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) +#20073=* +tokeninfo(#20073,8,#20001,12,"{") +#20074=@"loc,{#10000},3,9,3,9" +locations_default(#20074,#10000,3,9,3,9) +hasLocation(#20073,#20074) +#20075=* +tokeninfo(#20075,8,#20001,13,"}") +#20076=@"loc,{#10000},4,5,4,5" +locations_default(#20076,#10000,4,5,4,5) +hasLocation(#20075,#20076) +#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) +#20081=* +tokeninfo(#20081,7,#20001,16,"var") +#20082=@"loc,{#10000},5,7,5,9" +locations_default(#20082,#10000,5,7,5,9) +hasLocation(#20081,#20082) +#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) +#20091=* +tokeninfo(#20091,0,#20001,22,"") +#20092=@"loc,{#10000},9,1,9,0" +locations_default(#20092,#10000,9,1,9,0) +hasLocation(#20091,#20092) +#20093=* +entry_cfg_node(#20093,#20001) +#20094=@"loc,{#10000},1,1,1,0" +locations_default(#20094,#10000,1,1,1,0) +hasLocation(#20093,#20094) +#20095=* +exit_cfg_node(#20095,#20001) +hasLocation(#20095,#20092) +successor(#20004,#20095) +#20096=* +entry_cfg_node(#20096,#20004) +hasLocation(#20096,#20094) +#20097=* +exit_cfg_node(#20097,#20004) +#20098=@"loc,{#10000},8,2,8,1" +locations_default(#20098,#10000,8,2,8,1) +hasLocation(#20097,#20098) +successor(#20014,#20016) +successor(#20016,#20097) +#20099=* +entry_cfg_node(#20099,#20016) +#20100=@"loc,{#10000},2,3,2,2" +locations_default(#20100,#10000,2,3,2,2) +hasLocation(#20099,#20100) +#20101=* +exit_cfg_node(#20101,#20016) +#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) +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 new file mode 100644 index 00000000000..f3cd6549fb6 --- /dev/null +++ b/javascript/extractor/tests/variables/output/trap/switch.js.trap @@ -0,0 +1,239 @@ +#10000=@"/switch.js;sourcefile" +files(#10000,"/switch.js","switch","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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() {"," +") +#20025=@"loc,{#10000},1,1,1,14" +locations_default(#20025,#10000,1,1,1,14) +hasLocation(#20024,#20025) +#20026=* +lines(#20026,#20001," switch (0) {"," +") +#20027=@"loc,{#10000},2,1,2,13" +locations_default(#20027,#10000,2,1,2,13) +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) +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) +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) +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) +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) +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) +#20047=* +tokeninfo(#20047,8,#20001,6,"(") +#20048=@"loc,{#10000},2,9,2,9" +locations_default(#20048,#10000,2,9,2,9) +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) +#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) +#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) +#20066=* +tokeninfo(#20066,0,#20001,17,"") +#20067=@"loc,{#10000},7,1,7,0" +locations_default(#20067,#10000,7,1,7,0) +hasLocation(#20066,#20067) +#20068=* +entry_cfg_node(#20068,#20001) +#20069=@"loc,{#10000},1,1,1,0" +locations_default(#20069,#10000,1,1,1,0) +hasLocation(#20068,#20069) +#20070=* +exit_cfg_node(#20070,#20001) +hasLocation(#20070,#20067) +successor(#20004,#20070) +#20071=* +entry_cfg_node(#20071,#20004) +hasLocation(#20071,#20069) +#20072=* +exit_cfg_node(#20072,#20004) +#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) +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 new file mode 100644 index 00000000000..601b9e6d413 --- /dev/null +++ b/javascript/extractor/tests/variables/output/trap/try.js.trap @@ -0,0 +1,217 @@ +#10000=@"/try.js;sourcefile" +files(#10000,"/try.js","try","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,5,1" +locations_default(#20002,#10000,1,1,5,1) +hasLocation(#20001,#20002) +#20003=@"var;{f};{#20000}" +variables(#20003,"f",#20000) +#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() {"," +") +#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) +indentation(#10000,2," ",1) +#20027=* +lines(#20027,#20001," var x;"," +") +#20028=@"loc,{#10000},3,1,3,8" +locations_default(#20028,#10000,3,1,3,8) +hasLocation(#20027,#20028) +indentation(#10000,3," ",2) +#20029=* +lines(#20029,#20001," } finally {}"," +") +#20030=@"loc,{#10000},4,1,4,13" +locations_default(#20030,#10000,4,1,4,13) +hasLocation(#20029,#20030) +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) +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) +#20036=* +tokeninfo(#20036,8,#20001,2,"(") +#20037=@"loc,{#10000},1,11,1,11" +locations_default(#20037,#10000,1,11,1,11) +hasLocation(#20036,#20037) +#20038=* +tokeninfo(#20038,8,#20001,3,")") +#20039=@"loc,{#10000},1,12,1,12" +locations_default(#20039,#10000,1,12,1,12) +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) +#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) +#20059=* +tokeninfo(#20059,8,#20001,14,"}") +hasLocation(#20059,#20032) +#20060=* +tokeninfo(#20060,0,#20001,15,"") +#20061=@"loc,{#10000},5,2,5,1" +locations_default(#20061,#10000,5,2,5,1) +hasLocation(#20060,#20061) +#20062=* +entry_cfg_node(#20062,#20001) +#20063=@"loc,{#10000},1,1,1,0" +locations_default(#20063,#10000,1,1,1,0) +hasLocation(#20062,#20063) +#20064=* +exit_cfg_node(#20064,#20001) +hasLocation(#20064,#20061) +successor(#20004,#20064) +#20065=* +entry_cfg_node(#20065,#20004) +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) +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 new file mode 100644 index 00000000000..38256367619 --- /dev/null +++ b/javascript/extractor/tests/variables/output/trap/variables.js.trap @@ -0,0 +1,781 @@ +#10000=@"/variables.js;sourcefile" +files(#10000,"/variables.js","variables","js",0) +#10001=@"/;folder" +folders(#10001,"/","") +containerparent(#10001,#10000) +#10002=@"loc,{#10000},0,0,0,0" +locations_default(#10002,#10000,0,0,0,0) +hasLocation(#10000,#10002) +#20000=@"global_scope" +scopes(#20000,0) +#20001=@"script;{#10000},1,1" +toplevels(#20001,0) +#20002=@"loc,{#10000},1,1,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) +#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) +hasLocation(#20012,#20013) +stmtContainers(#20012,#20001) +#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) +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) +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) +#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) +hasLocation(#20036,#20037) +stmtContainers(#20036,#20001) +#20038=* +exprs(#20038,78,#20036,-1,"f") +#20039=@"loc,{#10000},8,10,8,10" +locations_default(#20039,#10000,8,10,8,10) +hasLocation(#20038,#20039) +exprContainers(#20038,#20036) +literals("f","f",#20038) +decl(#20038,#20005) +#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) +#20050=* +stmts(#20050,2,#20043,1,"x;") +#20051=@"loc,{#10000},10,2,10,3" +locations_default(#20051,#10000,10,2,10,3) +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) +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) +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) +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) +#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) +#20070=* +exprs(#20070,64,#20068,0,"x") +#20071=@"loc,{#10000},14,6,14,6" +locations_default(#20071,#10000,14,6,14,6) +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) +#20086=* +exprs(#20086,9,#20085,0,"function k() {}") +#20087=@"loc,{#10000},17,4,17,18" +locations_default(#20087,#10000,17,4,17,18) +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) +#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) +#20093=* +stmts(#20093,1,#20086,-2,"{}") +#20094=@"loc,{#10000},17,17,17,18" +locations_default(#20094,#10000,17,17,17,18) +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) +#20097=* +lines(#20097,#20001,"global;"," +") +hasLocation(#20097,#20022) +#20098=* +lines(#20098,#20001,"another_global;"," +") +hasLocation(#20098,#20026) +#20099=* +lines(#20099,#20001,"{"," +") +#20100=@"loc,{#10000},5,1,5,1" +locations_default(#20100,#10000,5,1,5,1) +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) +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) +hasLocation(#20103,#20104) +#20105=* +lines(#20105,#20001,"function f() {"," +") +#20106=@"loc,{#10000},8,1,8,14" +locations_default(#20106,#10000,8,1,8,14) +hasLocation(#20105,#20106) +#20107=* +lines(#20107,#20001," var x;"," +") +#20108=@"loc,{#10000},9,1,9,7" +locations_default(#20108,#10000,9,1,9,7) +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) +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) +hasLocation(#20111,#20112) +#20113=* +lines(#20113,#20001,"function g() {"," +") +#20114=@"loc,{#10000},12,1,12,14" +locations_default(#20114,#10000,12,1,12,14) +hasLocation(#20113,#20114) +#20115=* +lines(#20115,#20001," x;"," +") +#20116=@"loc,{#10000},13,1,13,3" +locations_default(#20116,#10000,13,1,13,3) +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) +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) +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) +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) +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) +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) +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) +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) +#20135=* +tokeninfo(#20135,8,#20001,4,"=") +#20136=@"loc,{#10000},2,15,2,15" +locations_default(#20136,#10000,2,15,2,15) +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) +#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) +#20149=* +tokeninfo(#20149,6,#20001,13,"another_global") +hasLocation(#20149,#20034) +#20150=* +tokeninfo(#20150,8,#20001,14,";") +#20151=@"loc,{#10000},6,20,6,20" +locations_default(#20151,#10000,6,20,6,20) +hasLocation(#20150,#20151) +#20152=* +tokeninfo(#20152,8,#20001,15,"}") +hasLocation(#20152,#20104) +#20153=* +tokeninfo(#20153,7,#20001,16,"function") +#20154=@"loc,{#10000},8,1,8,8" +locations_default(#20154,#10000,8,1,8,8) +hasLocation(#20153,#20154) +#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) +#20158=* +tokeninfo(#20158,8,#20001,19,")") +#20159=@"loc,{#10000},8,12,8,12" +locations_default(#20159,#10000,8,12,8,12) +hasLocation(#20158,#20159) +#20160=* +tokeninfo(#20160,8,#20001,20,"{") +#20161=@"loc,{#10000},8,14,8,14" +locations_default(#20161,#10000,8,14,8,14) +hasLocation(#20160,#20161) +#20162=* +tokeninfo(#20162,7,#20001,21,"var") +#20163=@"loc,{#10000},9,2,9,4" +locations_default(#20163,#10000,9,2,9,4) +hasLocation(#20162,#20163) +#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) +#20167=* +tokeninfo(#20167,6,#20001,24,"x") +hasLocation(#20167,#20053) +#20168=* +tokeninfo(#20168,8,#20001,25,";") +#20169=@"loc,{#10000},10,3,10,3" +locations_default(#20169,#10000,10,3,10,3) +hasLocation(#20168,#20169) +#20170=* +tokeninfo(#20170,8,#20001,26,"}") +hasLocation(#20170,#20112) +#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) +#20174=* +tokeninfo(#20174,8,#20001,29,"(") +#20175=@"loc,{#10000},12,11,12,11" +locations_default(#20175,#10000,12,11,12,11) +hasLocation(#20174,#20175) +#20176=* +tokeninfo(#20176,8,#20001,30,")") +#20177=@"loc,{#10000},12,12,12,12" +locations_default(#20177,#10000,12,12,12,12) +hasLocation(#20176,#20177) +#20178=* +tokeninfo(#20178,8,#20001,31,"{") +#20179=@"loc,{#10000},12,14,12,14" +locations_default(#20179,#10000,12,14,12,14) +hasLocation(#20178,#20179) +#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) +#20183=* +tokeninfo(#20183,7,#20001,34,"var") +#20184=@"loc,{#10000},14,2,14,4" +locations_default(#20184,#10000,14,2,14,4) +hasLocation(#20183,#20184) +#20185=* +tokeninfo(#20185,6,#20001,35,"x") +hasLocation(#20185,#20071) +#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) +#20190=* +tokeninfo(#20190,7,#20001,38,"function") +#20191=@"loc,{#10000},16,3,16,10" +locations_default(#20191,#10000,16,3,16,10) +hasLocation(#20190,#20191) +#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) +#20195=* +tokeninfo(#20195,8,#20001,41,")") +#20196=@"loc,{#10000},16,14,16,14" +locations_default(#20196,#10000,16,14,16,14) +hasLocation(#20195,#20196) +#20197=* +tokeninfo(#20197,8,#20001,42,"{") +#20198=@"loc,{#10000},16,16,16,16" +locations_default(#20198,#10000,16,16,16,16) +hasLocation(#20197,#20198) +#20199=* +tokeninfo(#20199,8,#20001,43,"}") +#20200=@"loc,{#10000},16,17,16,17" +locations_default(#20200,#10000,16,17,16,17) +hasLocation(#20199,#20200) +#20201=* +tokeninfo(#20201,8,#20001,44,"!") +#20202=@"loc,{#10000},17,3,17,3" +locations_default(#20202,#10000,17,3,17,3) +hasLocation(#20201,#20202) +#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) +#20206=* +tokeninfo(#20206,8,#20001,47,"(") +#20207=@"loc,{#10000},17,14,17,14" +locations_default(#20207,#10000,17,14,17,14) +hasLocation(#20206,#20207) +#20208=* +tokeninfo(#20208,8,#20001,48,")") +#20209=@"loc,{#10000},17,15,17,15" +locations_default(#20209,#10000,17,15,17,15) +hasLocation(#20208,#20209) +#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) +#20217=* +tokeninfo(#20217,0,#20001,53,"") +#20218=@"loc,{#10000},19,2,19,1" +locations_default(#20218,#10000,19,2,19,1) +hasLocation(#20217,#20218) +#20219=* +entry_cfg_node(#20219,#20001) +#20220=@"loc,{#10000},1,1,1,0" +locations_default(#20220,#10000,1,1,1,0) +hasLocation(#20219,#20220) +#20221=* +exit_cfg_node(#20221,#20001) +hasLocation(#20221,#20218) +successor(#20054,#20221) +#20222=* +entry_cfg_node(#20222,#20054) +#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) +#20225=* +entry_cfg_node(#20225,#20086) +#20226=@"loc,{#10000},17,4,17,3" +locations_default(#20226,#10000,17,4,17,3) +hasLocation(#20225,#20226) +#20227=* +exit_cfg_node(#20227,#20086) +#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) +#20229=* +entry_cfg_node(#20229,#20075) +#20230=@"loc,{#10000},16,3,16,2" +locations_default(#20230,#10000,16,3,16,2) +hasLocation(#20229,#20230) +#20231=* +exit_cfg_node(#20231,#20075) +#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) +#20233=* +entry_cfg_node(#20233,#20036) +#20234=@"loc,{#10000},8,1,8,0" +locations_default(#20234,#10000,8,1,8,0) +hasLocation(#20233,#20234) +#20235=* +exit_cfg_node(#20235,#20036) +#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) +numlines(#10000,19,19,0) +filetype(#10000,"javascript") diff --git a/javascript/extractor/tests/vue/input/test.vue b/javascript/extractor/tests/vue/input/test.vue new file mode 100644 index 00000000000..6c70bcfe4d4 --- /dev/null +++ b/javascript/extractor/tests/vue/input/test.vue @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/javascript/extractor/tests/vue/output/trap/test.vue.trap b/javascript/extractor/tests/vue/output/trap/test.vue.trap new file mode 100644 index 00000000000..8b2e7e79195 --- /dev/null +++ b/javascript/extractor/tests/vue/output/trap/test.vue.trap @@ -0,0 +1,17 @@ +#10000=@"/test.vue;sourcefile" +files(#10000,"/test.vue","test","vue",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=* +xmlElements(#20001,"html",#10000,0,#10000) +#20002=@"loc,{#10000},1,1,1,13" +locations_default(#20002,#10000,1,1,1,13) +xmllocations(#20001,#20002) +numlines(#10000,1,0,0) +filetype(#10000,"html") diff --git a/javascript/extractor/tests/yaml/input/cyclic.yaml b/javascript/extractor/tests/yaml/input/cyclic.yaml new file mode 100644 index 00000000000..ee3bb55b2fc --- /dev/null +++ b/javascript/extractor/tests/yaml/input/cyclic.yaml @@ -0,0 +1,3 @@ +--- +cyclic: &cyc + backedge: *cyc diff --git a/javascript/extractor/tests/yaml/input/merge.yaml b/javascript/extractor/tests/yaml/input/merge.yaml new file mode 100644 index 00000000000..0bd92fa725b --- /dev/null +++ b/javascript/extractor/tests/yaml/input/merge.yaml @@ -0,0 +1,3 @@ +- &A { x: 23, y: 42 } +- x: 56 + <<: *A \ No newline at end of file diff --git a/javascript/extractor/tests/yaml/input/tst.yml b/javascript/extractor/tests/yaml/input/tst.yml new file mode 100644 index 00000000000..aeec65c2e9c --- /dev/null +++ b/javascript/extractor/tests/yaml/input/tst.yml @@ -0,0 +1,33 @@ +--- +receipt: Oz-Ware Purchase Invoice +date: 2012-08-06 +customer: + given: Dorothy + family: Gale + +items: + - part_no: A4786 + descrip: Water Bucket (Filled) + price: 1.47 + quantity: 4 + + - part_no: E1628 + descrip: High Heeled "Ruby" Slippers + size: 8 + price: 100.27 + quantity: 1 + +bill-to: &id001 + street: | + 123 Tornado Alley + Suite 16 + city: East Centerville + state: KS + +ship-to: *id001 + +specialDelivery: > + Follow the Yellow Brick + Road to the Emerald City. + Pay no attention to the + man behind the curtain. \ No newline at end of file diff --git a/javascript/extractor/tests/yaml/output/trap/cyclic.yaml.trap b/javascript/extractor/tests/yaml/output/trap/cyclic.yaml.trap new file mode 100644 index 00000000000..292d24f957d --- /dev/null +++ b/javascript/extractor/tests/yaml/output/trap/cyclic.yaml.trap @@ -0,0 +1,39 @@ +#10000=@"/cyclic.yaml;sourcefile" +files(#10000,"/cyclic.yaml","cyclic","yaml",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=* +#20001=* +yaml_scalars(#20001,0,"cyclic") +yaml(#20001,0,#20000,1,"tag:yaml.org,2002:str","cyclic") +#20002=@"loc,{#10000},2,1,2,6" +locations_default(#20002,#10000,2,1,2,6) +hasLocation(#20001,#20002) +#20003=* +yaml_anchors(#20003,"cyc") +#20004=* +yaml_scalars(#20004,0,"backedge") +yaml(#20004,0,#20003,1,"tag:yaml.org,2002:str","backedge") +#20005=@"loc,{#10000},3,5,3,12" +locations_default(#20005,#10000,3,5,3,12) +hasLocation(#20004,#20005) +#20006=* +yaml_aliases(#20006,"cyc") +yaml(#20006,3,#20003,-1,"","*cyc") +#20007=@"loc,{#10000},3,15,3,18" +locations_default(#20007,#10000,3,15,3,18) +hasLocation(#20006,#20007) +yaml(#20003,1,#20000,-1,"tag:yaml.org,2002:map","&cyc") +#20008=@"loc,{#10000},2,9,4,0" +locations_default(#20008,#10000,2,9,4,0) +hasLocation(#20003,#20008) +yaml(#20000,1,#10000,0,"tag:yaml.org,2002:map","cyclic: &cyc") +#20009=@"loc,{#10000},2,1,4,0" +locations_default(#20009,#10000,2,1,4,0) +hasLocation(#20000,#20009) +numlines(#10000,3,0,0) +filetype(#10000,"yaml") diff --git a/javascript/extractor/tests/yaml/output/trap/merge.yaml.trap b/javascript/extractor/tests/yaml/output/trap/merge.yaml.trap new file mode 100644 index 00000000000..759f2946e57 --- /dev/null +++ b/javascript/extractor/tests/yaml/output/trap/merge.yaml.trap @@ -0,0 +1,74 @@ +#10000=@"/merge.yaml;sourcefile" +files(#10000,"/merge.yaml","merge","yaml",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=* +#20001=* +yaml_anchors(#20001,"A") +#20002=* +yaml_scalars(#20002,0,"x") +yaml(#20002,0,#20001,1,"tag:yaml.org,2002:str","x") +#20003=@"loc,{#10000},1,8,1,8" +locations_default(#20003,#10000,1,8,1,8) +hasLocation(#20002,#20003) +#20004=* +yaml_scalars(#20004,0,"23") +yaml(#20004,0,#20001,-1,"tag:yaml.org,2002:int","23") +#20005=@"loc,{#10000},1,11,1,12" +locations_default(#20005,#10000,1,11,1,12) +hasLocation(#20004,#20005) +#20006=* +yaml_scalars(#20006,0,"y") +yaml(#20006,0,#20001,2,"tag:yaml.org,2002:str","y") +#20007=@"loc,{#10000},1,15,1,15" +locations_default(#20007,#10000,1,15,1,15) +hasLocation(#20006,#20007) +#20008=* +yaml_scalars(#20008,0,"42") +yaml(#20008,0,#20001,-2,"tag:yaml.org,2002:int","42") +#20009=@"loc,{#10000},1,18,1,19" +locations_default(#20009,#10000,1,18,1,19) +hasLocation(#20008,#20009) +yaml(#20001,1,#20000,0,"tag:yaml.org,2002:map","&A { x: 23, y: 42 }") +#20010=@"loc,{#10000},1,3,1,21" +locations_default(#20010,#10000,1,3,1,21) +hasLocation(#20001,#20010) +#20011=* +#20012=* +yaml_scalars(#20012,0,"x") +yaml(#20012,0,#20011,1,"tag:yaml.org,2002:str","x") +#20013=@"loc,{#10000},2,3,2,3" +locations_default(#20013,#10000,2,3,2,3) +hasLocation(#20012,#20013) +#20014=* +yaml_scalars(#20014,0,"56") +yaml(#20014,0,#20011,-1,"tag:yaml.org,2002:int","56") +#20015=@"loc,{#10000},2,6,2,7" +locations_default(#20015,#10000,2,6,2,7) +hasLocation(#20014,#20015) +#20016=* +yaml_scalars(#20016,0,"<<") +yaml(#20016,0,#20011,2,"tag:yaml.org,2002:merge","<<") +#20017=@"loc,{#10000},3,3,3,4" +locations_default(#20017,#10000,3,3,3,4) +hasLocation(#20016,#20017) +#20018=* +yaml_aliases(#20018,"A") +yaml(#20018,3,#20011,-2,"","*A") +#20019=@"loc,{#10000},3,7,3,8" +locations_default(#20019,#10000,3,7,3,8) +hasLocation(#20018,#20019) +yaml(#20011,1,#20000,1,"tag:yaml.org,2002:map","x: 56") +#20020=@"loc,{#10000},2,3,3,8" +locations_default(#20020,#10000,2,3,3,8) +hasLocation(#20011,#20020) +yaml(#20000,2,#10000,0,"tag:yaml.org,2002:seq","- &A { ... y: 42 }") +#20021=@"loc,{#10000},1,1,3,8" +locations_default(#20021,#10000,1,1,3,8) +hasLocation(#20000,#20021) +numlines(#10000,3,0,0) +filetype(#10000,"yaml") diff --git a/javascript/extractor/tests/yaml/output/trap/tst.yml.trap b/javascript/extractor/tests/yaml/output/trap/tst.yml.trap new file mode 100644 index 00000000000..65e84140f1a --- /dev/null +++ b/javascript/extractor/tests/yaml/output/trap/tst.yml.trap @@ -0,0 +1,277 @@ +#10000=@"/tst.yml;sourcefile" +files(#10000,"/tst.yml","tst","yml",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=* +#20001=* +yaml_scalars(#20001,0,"receipt") +yaml(#20001,0,#20000,1,"tag:yaml.org,2002:str","receipt") +#20002=@"loc,{#10000},2,1,2,7" +locations_default(#20002,#10000,2,1,2,7) +hasLocation(#20001,#20002) +#20003=* +yaml_scalars(#20003,0,"Oz-Ware Purchase Invoice") +yaml(#20003,0,#20000,-1,"tag:yaml.org,2002:str","Oz-Ware ... Invoice") +#20004=@"loc,{#10000},2,14,2,37" +locations_default(#20004,#10000,2,14,2,37) +hasLocation(#20003,#20004) +#20005=* +yaml_scalars(#20005,0,"date") +yaml(#20005,0,#20000,2,"tag:yaml.org,2002:str","date") +#20006=@"loc,{#10000},3,1,3,4" +locations_default(#20006,#10000,3,1,3,4) +hasLocation(#20005,#20006) +#20007=* +yaml_scalars(#20007,0,"2012-08-06") +yaml(#20007,0,#20000,-2,"tag:yaml.org,2002:timestamp","2012-08-06") +#20008=@"loc,{#10000},3,14,3,23" +locations_default(#20008,#10000,3,14,3,23) +hasLocation(#20007,#20008) +#20009=* +yaml_scalars(#20009,0,"customer") +yaml(#20009,0,#20000,3,"tag:yaml.org,2002:str","customer") +#20010=@"loc,{#10000},4,1,4,8" +locations_default(#20010,#10000,4,1,4,8) +hasLocation(#20009,#20010) +#20011=* +#20012=* +yaml_scalars(#20012,0,"given") +yaml(#20012,0,#20011,1,"tag:yaml.org,2002:str","given") +#20013=@"loc,{#10000},5,5,5,9" +locations_default(#20013,#10000,5,5,5,9) +hasLocation(#20012,#20013) +#20014=* +yaml_scalars(#20014,0,"Dorothy") +yaml(#20014,0,#20011,-1,"tag:yaml.org,2002:str","Dorothy") +#20015=@"loc,{#10000},5,14,5,20" +locations_default(#20015,#10000,5,14,5,20) +hasLocation(#20014,#20015) +#20016=* +yaml_scalars(#20016,0,"family") +yaml(#20016,0,#20011,2,"tag:yaml.org,2002:str","family") +#20017=@"loc,{#10000},6,5,6,10" +locations_default(#20017,#10000,6,5,6,10) +hasLocation(#20016,#20017) +#20018=* +yaml_scalars(#20018,0,"Gale") +yaml(#20018,0,#20011,-2,"tag:yaml.org,2002:str","Gale") +#20019=@"loc,{#10000},6,14,6,17" +locations_default(#20019,#10000,6,14,6,17) +hasLocation(#20018,#20019) +yaml(#20011,1,#20000,-3,"tag:yaml.org,2002:map","given: Dorothy") +#20020=@"loc,{#10000},5,5,8,0" +locations_default(#20020,#10000,5,5,8,0) +hasLocation(#20011,#20020) +#20021=* +yaml_scalars(#20021,0,"items") +yaml(#20021,0,#20000,4,"tag:yaml.org,2002:str","items") +#20022=@"loc,{#10000},8,1,8,5" +locations_default(#20022,#10000,8,1,8,5) +hasLocation(#20021,#20022) +#20023=* +#20024=* +#20025=* +yaml_scalars(#20025,0,"part_no") +yaml(#20025,0,#20024,1,"tag:yaml.org,2002:str","part_no") +#20026=@"loc,{#10000},9,7,9,13" +locations_default(#20026,#10000,9,7,9,13) +hasLocation(#20025,#20026) +#20027=* +yaml_scalars(#20027,0,"A4786") +yaml(#20027,0,#20024,-1,"tag:yaml.org,2002:str","A4786") +#20028=@"loc,{#10000},9,18,9,22" +locations_default(#20028,#10000,9,18,9,22) +hasLocation(#20027,#20028) +#20029=* +yaml_scalars(#20029,0,"descrip") +yaml(#20029,0,#20024,2,"tag:yaml.org,2002:str","descrip") +#20030=@"loc,{#10000},10,7,10,13" +locations_default(#20030,#10000,10,7,10,13) +hasLocation(#20029,#20030) +#20031=* +yaml_scalars(#20031,0,"Water Bucket (Filled)") +yaml(#20031,0,#20024,-2,"tag:yaml.org,2002:str","Water B ... Filled)") +#20032=@"loc,{#10000},10,18,10,38" +locations_default(#20032,#10000,10,18,10,38) +hasLocation(#20031,#20032) +#20033=* +yaml_scalars(#20033,0,"price") +yaml(#20033,0,#20024,3,"tag:yaml.org,2002:str","price") +#20034=@"loc,{#10000},11,7,11,11" +locations_default(#20034,#10000,11,7,11,11) +hasLocation(#20033,#20034) +#20035=* +yaml_scalars(#20035,0,"1.47") +yaml(#20035,0,#20024,-3,"tag:yaml.org,2002:float","1.47") +#20036=@"loc,{#10000},11,18,11,21" +locations_default(#20036,#10000,11,18,11,21) +hasLocation(#20035,#20036) +#20037=* +yaml_scalars(#20037,0,"quantity") +yaml(#20037,0,#20024,4,"tag:yaml.org,2002:str","quantity") +#20038=@"loc,{#10000},12,7,12,14" +locations_default(#20038,#10000,12,7,12,14) +hasLocation(#20037,#20038) +#20039=* +yaml_scalars(#20039,0,"4") +yaml(#20039,0,#20024,-4,"tag:yaml.org,2002:int","4") +#20040=@"loc,{#10000},12,18,12,18" +locations_default(#20040,#10000,12,18,12,18) +hasLocation(#20039,#20040) +yaml(#20024,1,#20023,0,"tag:yaml.org,2002:map","part_no: A4786") +#20041=@"loc,{#10000},9,7,14,4" +locations_default(#20041,#10000,9,7,14,4) +hasLocation(#20024,#20041) +#20042=* +#20043=* +yaml_scalars(#20043,0,"part_no") +yaml(#20043,0,#20042,1,"tag:yaml.org,2002:str","part_no") +#20044=@"loc,{#10000},14,7,14,13" +locations_default(#20044,#10000,14,7,14,13) +hasLocation(#20043,#20044) +#20045=* +yaml_scalars(#20045,0,"E1628") +yaml(#20045,0,#20042,-1,"tag:yaml.org,2002:str","E1628") +#20046=@"loc,{#10000},14,18,14,22" +locations_default(#20046,#10000,14,18,14,22) +hasLocation(#20045,#20046) +#20047=* +yaml_scalars(#20047,0,"descrip") +yaml(#20047,0,#20042,2,"tag:yaml.org,2002:str","descrip") +#20048=@"loc,{#10000},15,7,15,13" +locations_default(#20048,#10000,15,7,15,13) +hasLocation(#20047,#20048) +#20049=* +yaml_scalars(#20049,0,"High Heeled ""Ruby"" Slippers") +yaml(#20049,0,#20042,-2,"tag:yaml.org,2002:str","High He ... lippers") +#20050=@"loc,{#10000},15,18,15,44" +locations_default(#20050,#10000,15,18,15,44) +hasLocation(#20049,#20050) +#20051=* +yaml_scalars(#20051,0,"size") +yaml(#20051,0,#20042,3,"tag:yaml.org,2002:str","size") +#20052=@"loc,{#10000},16,7,16,10" +locations_default(#20052,#10000,16,7,16,10) +hasLocation(#20051,#20052) +#20053=* +yaml_scalars(#20053,0,"8") +yaml(#20053,0,#20042,-3,"tag:yaml.org,2002:int","8") +#20054=@"loc,{#10000},16,18,16,18" +locations_default(#20054,#10000,16,18,16,18) +hasLocation(#20053,#20054) +#20055=* +yaml_scalars(#20055,0,"price") +yaml(#20055,0,#20042,4,"tag:yaml.org,2002:str","price") +#20056=@"loc,{#10000},17,7,17,11" +locations_default(#20056,#10000,17,7,17,11) +hasLocation(#20055,#20056) +#20057=* +yaml_scalars(#20057,0,"100.27") +yaml(#20057,0,#20042,-4,"tag:yaml.org,2002:float","100.27") +#20058=@"loc,{#10000},17,18,17,23" +locations_default(#20058,#10000,17,18,17,23) +hasLocation(#20057,#20058) +#20059=* +yaml_scalars(#20059,0,"quantity") +yaml(#20059,0,#20042,5,"tag:yaml.org,2002:str","quantity") +#20060=@"loc,{#10000},18,7,18,14" +locations_default(#20060,#10000,18,7,18,14) +hasLocation(#20059,#20060) +#20061=* +yaml_scalars(#20061,0,"1") +yaml(#20061,0,#20042,-5,"tag:yaml.org,2002:int","1") +#20062=@"loc,{#10000},18,18,18,18" +locations_default(#20062,#10000,18,18,18,18) +hasLocation(#20061,#20062) +yaml(#20042,1,#20023,1,"tag:yaml.org,2002:map","part_no: E1628") +#20063=@"loc,{#10000},14,7,20,0" +locations_default(#20063,#10000,14,7,20,0) +hasLocation(#20042,#20063) +yaml(#20023,2,#20000,-4,"tag:yaml.org,2002:seq","- part_no: A4786") +#20064=@"loc,{#10000},9,5,20,0" +locations_default(#20064,#10000,9,5,20,0) +hasLocation(#20023,#20064) +#20065=* +yaml_scalars(#20065,0,"bill-to") +yaml(#20065,0,#20000,5,"tag:yaml.org,2002:str","bill-to") +#20066=@"loc,{#10000},20,1,20,7" +locations_default(#20066,#10000,20,1,20,7) +hasLocation(#20065,#20066) +#20067=* +yaml_anchors(#20067,"id001") +#20068=* +yaml_scalars(#20068,0,"street") +yaml(#20068,0,#20067,1,"tag:yaml.org,2002:str","street") +#20069=@"loc,{#10000},21,5,21,10" +locations_default(#20069,#10000,21,5,21,10) +hasLocation(#20068,#20069) +#20070=* +yaml_scalars(#20070,124,"123 Tornado Alley +Suite 16 +") +yaml(#20070,0,#20067,-1,"tag:yaml.org,2002:str","|") +#20071=@"loc,{#10000},21,13,24,0" +locations_default(#20071,#10000,21,13,24,0) +hasLocation(#20070,#20071) +#20072=* +yaml_scalars(#20072,0,"city") +yaml(#20072,0,#20067,2,"tag:yaml.org,2002:str","city") +#20073=@"loc,{#10000},24,5,24,8" +locations_default(#20073,#10000,24,5,24,8) +hasLocation(#20072,#20073) +#20074=* +yaml_scalars(#20074,0,"East Centerville") +yaml(#20074,0,#20067,-2,"tag:yaml.org,2002:str","East Centerville") +#20075=@"loc,{#10000},24,13,24,28" +locations_default(#20075,#10000,24,13,24,28) +hasLocation(#20074,#20075) +#20076=* +yaml_scalars(#20076,0,"state") +yaml(#20076,0,#20067,3,"tag:yaml.org,2002:str","state") +#20077=@"loc,{#10000},25,5,25,9" +locations_default(#20077,#10000,25,5,25,9) +hasLocation(#20076,#20077) +#20078=* +yaml_scalars(#20078,0,"KS") +yaml(#20078,0,#20067,-3,"tag:yaml.org,2002:str","KS") +#20079=@"loc,{#10000},25,13,25,14" +locations_default(#20079,#10000,25,13,25,14) +hasLocation(#20078,#20079) +yaml(#20067,1,#20000,-5,"tag:yaml.org,2002:map","&id001") +#20080=@"loc,{#10000},20,11,27,0" +locations_default(#20080,#10000,20,11,27,0) +hasLocation(#20067,#20080) +#20081=* +yaml_scalars(#20081,0,"ship-to") +yaml(#20081,0,#20000,6,"tag:yaml.org,2002:str","ship-to") +#20082=@"loc,{#10000},27,1,27,7" +locations_default(#20082,#10000,27,1,27,7) +hasLocation(#20081,#20082) +#20083=* +yaml_aliases(#20083,"id001") +yaml(#20083,3,#20000,-6,"","*id001") +#20084=@"loc,{#10000},27,11,27,16" +locations_default(#20084,#10000,27,11,27,16) +hasLocation(#20083,#20084) +#20085=* +yaml_scalars(#20085,0,"specialDelivery") +yaml(#20085,0,#20000,7,"tag:yaml.org,2002:str","specialDelivery") +#20086=@"loc,{#10000},29,1,29,15" +locations_default(#20086,#10000,29,1,29,15) +hasLocation(#20085,#20086) +#20087=* +yaml_scalars(#20087,62,"Follow the Yellow Brick Road to the Emerald City. Pay no attention to the man behind the curtain.") +yaml(#20087,0,#20000,-7,"tag:yaml.org,2002:str",">") +#20088=@"loc,{#10000},29,19,33,27" +locations_default(#20088,#10000,29,19,33,27) +hasLocation(#20087,#20088) +yaml(#20000,1,#10000,0,"tag:yaml.org,2002:map","receipt ... Invoice") +#20089=@"loc,{#10000},2,1,33,27" +locations_default(#20089,#10000,2,1,33,27) +hasLocation(#20000,#20089) +numlines(#10000,33,0,0) +filetype(#10000,"yaml") diff --git a/javascript/extractor/util/dotify-cfg.sh b/javascript/extractor/util/dotify-cfg.sh new file mode 100755 index 00000000000..b98e1e54f30 --- /dev/null +++ b/javascript/extractor/util/dotify-cfg.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# Given a trap file, extract the CFG and format it as a DOT digraph + +echo "digraph {" + +# Iterate over all tuples in the trap file. +# +# For tuples of the form `(#id, ..., "text")`, record +# "text (#id)" as a human-readable label for #id. As a special case, +# for tuples of the form `guard_node(#id1, , #id2)` we +# record "#id2 is (#id1)" as a human-readable label for #id1. +# +# For tuples of the form `successor(#id1, #id2)`, we output an +# edge from a node labelled with the human-readable label for #id1 +# to a node labelled with the human-readable label for #id2. If no +# labels have been recorded for either #id1 or #id2, the numeric +# ids are used instead. + +perl -lne 'print " " . ($labels[$1] || $1) . " -> " . ($labels[$2] || $2) . ";" if /successor\(#(\d+),#(\d+)\)/; $labels[$1] = "$2 (#$1)\"" if /^\w+\(#(\d+),.*,(".*)"\)$/; $labels[$1] = "\"#$3 is $2 (#$1)\"" if /^guard_node\(#(\d+),(\w+),#(\d+)\)$/;' $1 | sed 's/\\/\\\\/g' + +echo "}"