From adfc66d3010bed12fb4cdaeced9d75af2659557b Mon Sep 17 00:00:00 2001 From: 43081j <43081j@users.noreply.github.com> Date: Tue, 17 Apr 2018 22:00:42 +0100 Subject: [PATCH 1/3] support all default param types --- packages/analyzer/src/javascript/esutil.ts | 2 +- .../src/test/javascript/class-scanner_test.ts | 21 ++++++++++++++++++- .../src/test/static/class/class-methods.js | 8 +++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/packages/analyzer/src/javascript/esutil.ts b/packages/analyzer/src/javascript/esutil.ts index 463b5e244..090ac1ab5 100644 --- a/packages/analyzer/src/javascript/esutil.ts +++ b/packages/analyzer/src/javascript/esutil.ts @@ -409,7 +409,7 @@ export function toMethodParam( } else if ( babel.isAssignmentPattern(nodeParam) && - babel.isIdentifier(nodeParam.left) && babel.isLiteral(nodeParam.right)) { + babel.isIdentifier(nodeParam.left)) { // Parameter with a default: method(param = "default") name = nodeParam.left.name; defaultValue = generate(nodeParam.right).code; diff --git a/packages/analyzer/src/test/javascript/class-scanner_test.ts b/packages/analyzer/src/test/javascript/class-scanner_test.ts index 24d81e27a..a665b01d5 100644 --- a/packages/analyzer/src/test/javascript/class-scanner_test.ts +++ b/packages/analyzer/src/test/javascript/class-scanner_test.ts @@ -264,6 +264,16 @@ suite('Class', async () => { description: '', params: [{name: 'a'}, {name: 'b'}, {name: 'c'}], }, + { + name: 'methodWithDefaultParam', + description: '', + params: [{name: 'x', defaultValue: '12'}], + }, + { + name: 'methodWithComplexDefaultParam', + description: '', + params: [{name: 'a', defaultValue: '[1, 2, 3]'}], + }, { name: 'customInstanceFunctionWithParamsAndJSDoc', description: 'This is the description for ' + @@ -527,7 +537,16 @@ suite('Class', async () => { name: 'customInstanceFunctionWithParams', description: '', params: [{name: 'a'}, {name: 'b'}, {name: 'c'}], - + }, + { + name: 'methodWithDefaultParam', + description: '', + params: [{name: 'x', defaultValue: '12'}], + }, + { + name: 'methodWithComplexDefaultParam', + description: '', + params: [{name: 'a', defaultValue: '[1, 2, 3]'}], }, { name: 'customInstanceFunctionWithParamsAndJSDoc', diff --git a/packages/analyzer/src/test/static/class/class-methods.js b/packages/analyzer/src/test/static/class/class-methods.js index 07b50b5f4..4d3087c59 100644 --- a/packages/analyzer/src/test/static/class/class-methods.js +++ b/packages/analyzer/src/test/static/class/class-methods.js @@ -15,6 +15,14 @@ class Class { return 4; } + methodWithDefaultParam(x = 12) { + return 24; + } + + methodWithComplexDefaultParam(a = [1, 2, 3]) { + return; + } + /** * This is the description for customInstanceFunctionWithJSDoc. * @return {Number} - The number 5, always. From 59ce4dab4be83f4f7df7755e0eaba992ae6122ee Mon Sep 17 00:00:00 2001 From: James Garbutt <43081j@users.noreply.github.com> Date: Wed, 18 Apr 2018 09:13:50 +0100 Subject: [PATCH 2/3] re-order assertions --- .../src/test/javascript/class-scanner_test.ts | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/packages/analyzer/src/test/javascript/class-scanner_test.ts b/packages/analyzer/src/test/javascript/class-scanner_test.ts index a665b01d5..f234c059b 100644 --- a/packages/analyzer/src/test/javascript/class-scanner_test.ts +++ b/packages/analyzer/src/test/javascript/class-scanner_test.ts @@ -250,6 +250,16 @@ suite('Class', async () => { name: 'customInstanceFunction', description: '', }, + { + name: 'methodWithDefaultParam', + description: '', + params: [{name: 'x', defaultValue: '12'}], + }, + { + name: 'methodWithComplexDefaultParam', + description: '', + params: [{name: 'a', defaultValue: '[1, 2, 3]'}], + }, { name: 'customInstanceFunctionWithJSDoc', description: 'This is the description for ' + @@ -264,16 +274,6 @@ suite('Class', async () => { description: '', params: [{name: 'a'}, {name: 'b'}, {name: 'c'}], }, - { - name: 'methodWithDefaultParam', - description: '', - params: [{name: 'x', defaultValue: '12'}], - }, - { - name: 'methodWithComplexDefaultParam', - description: '', - params: [{name: 'a', defaultValue: '[1, 2, 3]'}], - }, { name: 'customInstanceFunctionWithParamsAndJSDoc', description: 'This is the description for ' + @@ -524,6 +524,16 @@ suite('Class', async () => { name: 'customInstanceFunction', description: '', }, + { + name: 'methodWithDefaultParam', + description: '', + params: [{name: 'x', defaultValue: '12'}], + }, + { + name: 'methodWithComplexDefaultParam', + description: '', + params: [{name: 'a', defaultValue: '[1, 2, 3]'}], + }, { name: 'customInstanceFunctionWithJSDoc', description: 'This is the description for ' + @@ -538,16 +548,6 @@ suite('Class', async () => { description: '', params: [{name: 'a'}, {name: 'b'}, {name: 'c'}], }, - { - name: 'methodWithDefaultParam', - description: '', - params: [{name: 'x', defaultValue: '12'}], - }, - { - name: 'methodWithComplexDefaultParam', - description: '', - params: [{name: 'a', defaultValue: '[1, 2, 3]'}], - }, { name: 'customInstanceFunctionWithParamsAndJSDoc', description: 'This is the description for ' + From 5ae26e66b82dc03207fa45df31608a421a71ac42 Mon Sep 17 00:00:00 2001 From: James Garbutt <43081j@users.noreply.github.com> Date: Wed, 18 Apr 2018 16:10:09 +0100 Subject: [PATCH 3/3] Add void return type to default param tests --- packages/analyzer/src/test/javascript/class-scanner_test.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/analyzer/src/test/javascript/class-scanner_test.ts b/packages/analyzer/src/test/javascript/class-scanner_test.ts index f234c059b..a98df8691 100644 --- a/packages/analyzer/src/test/javascript/class-scanner_test.ts +++ b/packages/analyzer/src/test/javascript/class-scanner_test.ts @@ -259,6 +259,7 @@ suite('Class', async () => { name: 'methodWithComplexDefaultParam', description: '', params: [{name: 'a', defaultValue: '[1, 2, 3]'}], + return: { type: 'void' } }, { name: 'customInstanceFunctionWithJSDoc', @@ -533,6 +534,7 @@ suite('Class', async () => { name: 'methodWithComplexDefaultParam', description: '', params: [{name: 'a', defaultValue: '[1, 2, 3]'}], + return: { type: 'void' } }, { name: 'customInstanceFunctionWithJSDoc',