diff --git a/packages/jsdoc/lib/jsdoc/src/visitor.js b/packages/jsdoc/lib/jsdoc/src/visitor.js index 8c88180a..26d28e7a 100644 --- a/packages/jsdoc/lib/jsdoc/src/visitor.js +++ b/packages/jsdoc/lib/jsdoc/src/visitor.js @@ -319,7 +319,7 @@ function makeConstructorFinisher(parser) { return; } - combined = combineDoclets(eventDoclet, parentDoclet); + combined = combineDoclets(parentDoclet, eventDoclet); combined.longname = parentDoclet.longname; if (parentDoclet.memberof) { combined.memberof = parentDoclet.memberof; diff --git a/packages/jsdoc/test/fixtures/aliasexports.js b/packages/jsdoc/test/fixtures/aliasexports.js new file mode 100644 index 00000000..e4aaf1ad --- /dev/null +++ b/packages/jsdoc/test/fixtures/aliasexports.js @@ -0,0 +1,13 @@ +/** @module foo */ + +/** + * Bar class. + * + * @alias module:foo.Bar + */ +class Bar { + /** Create a Bar. */ + constructor() {} +} + +exports.Bar = Bar; diff --git a/packages/jsdoc/test/specs/documentation/alias.js b/packages/jsdoc/test/specs/documentation/alias.js index bde6ee38..cd28119e 100644 --- a/packages/jsdoc/test/specs/documentation/alias.js +++ b/packages/jsdoc/test/specs/documentation/alias.js @@ -106,4 +106,14 @@ describe('aliases', () => { expect(method).toBeArrayOfSize(1); }); }); + + describe('class with constructor exported from module', () => { + it('When an exported class with a constructor has an alias, the exported class has the correct scope.', () => { + const docSet = jsdoc.getDocSetFromFile('test/fixtures/aliasexports.js'); + const klass = docSet.getByLongname('module:foo.Bar').filter(d => !d.undocumented); + + expect(klass).toBeArrayOfSize(1); + expect(klass[0].scope).toBe('static'); + }); + }); });