From aa04e9c77f80e4a1fcc59ab49145328416bbd2dc Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 11 Dec 2018 17:36:22 +0000 Subject: [PATCH] TS: fix extraction of binding pattern with default --- .../src/com/semmle/js/parser/TypeScriptASTConverter.java | 2 +- .../library-tests/TypeScript/BindingPattern/VarDecl.expected | 3 +++ .../test/library-tests/TypeScript/BindingPattern/VarDecl.ql | 4 ++++ .../ql/test/library-tests/TypeScript/BindingPattern/tst.tsx | 4 ++++ 4 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 javascript/ql/test/library-tests/TypeScript/BindingPattern/VarDecl.expected create mode 100644 javascript/ql/test/library-tests/TypeScript/BindingPattern/VarDecl.ql create mode 100644 javascript/ql/test/library-tests/TypeScript/BindingPattern/tst.tsx diff --git a/javascript/extractor/src/com/semmle/js/parser/TypeScriptASTConverter.java b/javascript/extractor/src/com/semmle/js/parser/TypeScriptASTConverter.java index c462686ea90..557bcc04272 100644 --- a/javascript/extractor/src/com/semmle/js/parser/TypeScriptASTConverter.java +++ b/javascript/extractor/src/com/semmle/js/parser/TypeScriptASTConverter.java @@ -1612,7 +1612,7 @@ public class TypeScriptASTConverter { if (hasChild(element, "dotDotDotToken")) { propVal = new RestElement(eltLoc, propKey); } else if (hasChild(element, "initializer")) { - propVal = new AssignmentPattern(eltLoc, "=", propKey, convertChild(element, "initializer")); + propVal = new AssignmentPattern(eltLoc, "=", convertChild(element, "name"), convertChild(element, "initializer")); } else { propVal = convertChild(element, "name"); } diff --git a/javascript/ql/test/library-tests/TypeScript/BindingPattern/VarDecl.expected b/javascript/ql/test/library-tests/TypeScript/BindingPattern/VarDecl.expected new file mode 100644 index 00000000000..aead5092430 --- /dev/null +++ b/javascript/ql/test/library-tests/TypeScript/BindingPattern/VarDecl.expected @@ -0,0 +1,3 @@ +| tst.tsx:1:10:1:10 | f | +| tst.tsx:1:12:1:12 | o | +| tst.tsx:2:14:2:14 | v | diff --git a/javascript/ql/test/library-tests/TypeScript/BindingPattern/VarDecl.ql b/javascript/ql/test/library-tests/TypeScript/BindingPattern/VarDecl.ql new file mode 100644 index 00000000000..7039e6fa812 --- /dev/null +++ b/javascript/ql/test/library-tests/TypeScript/BindingPattern/VarDecl.ql @@ -0,0 +1,4 @@ +import javascript + +from VarDecl decl +select decl diff --git a/javascript/ql/test/library-tests/TypeScript/BindingPattern/tst.tsx b/javascript/ql/test/library-tests/TypeScript/BindingPattern/tst.tsx new file mode 100644 index 00000000000..db332181280 --- /dev/null +++ b/javascript/ql/test/library-tests/TypeScript/BindingPattern/tst.tsx @@ -0,0 +1,4 @@ +function f(o) { + const { p: v = [] } = o; + return v; +}