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
|
// class's interfaces
|
||||||
cls.implements.forEach(function(impl) {
|
cls.implements.forEach(function(impl) {
|
||||||
var implProps = propertyInfo[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++) {
|
for (var i = 0, len = props.length; i < len; i++) {
|
||||||
var prop = props[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() {}
|
function MyWorker() {}
|
||||||
MyWorker.prototype.work = function() {};
|
MyWorker.prototype.work = function() {};
|
||||||
MyWorker.prototype.process = function() {};
|
MyWorker.prototype.process = function() {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @constructor
|
||||||
|
* @implements {IWorker}
|
||||||
|
*/
|
||||||
|
function MyIncompleteWorker() {}
|
||||||
|
|||||||
@ -1,10 +1,11 @@
|
|||||||
/*global describe, expect, it, jasmine */
|
/*global describe, expect, it, jasmine */
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
describe('@interface tag', function() {
|
describe('@implements tag', function() {
|
||||||
var docSet = jasmine.getDocSetFromFile('test/fixtures/interface-implements.js');
|
var docSet = jasmine.getDocSetFromFile('test/fixtures/interface-implements.js');
|
||||||
|
|
||||||
var myTester = docSet.getByLongname('MyTester')[0];
|
var myTester = docSet.getByLongname('MyTester')[0];
|
||||||
|
var myIncompleteWorker = docSet.getByLongname('MyWorker')[0];
|
||||||
var beforeEachMethod = docSet.getByLongname('MyTester#beforeEach')[0];
|
var beforeEachMethod = docSet.getByLongname('MyTester#beforeEach')[0];
|
||||||
var processMethod = docSet.getByLongname('MyWorker#process')[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() {
|
it('MyWorker\'s process() method does not implement an interface', function() {
|
||||||
expect(processMethod.implements).toBeUndefined();
|
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