mirror of
https://github.com/jsdoc/jsdoc.git
synced 2025-12-08 19:46:11 +00:00
prevent crash when a class claims to implement an interface but has no members
This commit is contained in:
parent
7c2a6d7438
commit
7ef13bf40b
@ -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];
|
||||
|
||||
6
test/fixtures/interface-implements.js
vendored
6
test/fixtures/interface-implements.js
vendored
@ -63,3 +63,9 @@ IWorker.prototype.work = function() {};
|
||||
function MyWorker() {}
|
||||
MyWorker.prototype.work = function() {};
|
||||
MyWorker.prototype.process = function() {};
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @implements {IWorker}
|
||||
*/
|
||||
function MyIncompleteWorker() {}
|
||||
|
||||
@ -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);
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user