diff --git a/lib/jsdoc/augment.js b/lib/jsdoc/augment.js index 7039db25..7207ef0b 100644 --- a/lib/jsdoc/augment.js +++ b/lib/jsdoc/augment.js @@ -191,7 +191,7 @@ exports.addImplemented = function(docs) { // class's interfaces cls.implements.forEach(function(impl) { var implProps = propertyInfo[impl]; - var props = docMap[cls.longname]; + var props = docMap[cls.longname] || []; for (var i = 0, len = props.length; i < len; i++) { var prop = props[i]; diff --git a/test/fixtures/interface-implements.js b/test/fixtures/interface-implements.js index c4e7ccb3..c9308f59 100644 --- a/test/fixtures/interface-implements.js +++ b/test/fixtures/interface-implements.js @@ -63,3 +63,9 @@ IWorker.prototype.work = function() {}; function MyWorker() {} MyWorker.prototype.work = function() {}; MyWorker.prototype.process = function() {}; + +/** + * @constructor + * @implements {IWorker} + */ +function MyIncompleteWorker() {} diff --git a/test/specs/tags/implementstag.js b/test/specs/tags/implementstag.js index ef991cb8..6691b17c 100644 --- a/test/specs/tags/implementstag.js +++ b/test/specs/tags/implementstag.js @@ -1,10 +1,11 @@ /*global describe, expect, it, jasmine */ 'use strict'; -describe('@interface tag', function() { +describe('@implements tag', function() { var docSet = jasmine.getDocSetFromFile('test/fixtures/interface-implements.js'); var myTester = docSet.getByLongname('MyTester')[0]; + var myIncompleteWorker = docSet.getByLongname('MyWorker')[0]; var beforeEachMethod = docSet.getByLongname('MyTester#beforeEach')[0]; var processMethod = docSet.getByLongname('MyWorker#process')[0]; @@ -22,4 +23,8 @@ describe('@interface tag', function() { it('MyWorker\'s process() method does not implement an interface', function() { expect(processMethod.implements).toBeUndefined(); }); + + it('MyIncompleteWorker does not have any methods', function() { + expect(docSet.getByLongname('MyIncompleteWorker#work').length).toBe(0); + }); });