mirror of
https://github.com/jsdoc/jsdoc.git
synced 2025-12-08 19:46:11 +00:00
Fix jsdoc #535: @member and @constant with only type create incorrect doclet.
This commit is contained in:
parent
f55feb1a0e
commit
8be3a1fecc
@ -208,9 +208,12 @@ exports.defineTags = function(dictionary) {
|
||||
|
||||
dictionary.defineTag('constant', {
|
||||
canHaveType: true,
|
||||
canHaveName: true,
|
||||
onTagged: function(doclet, tag) {
|
||||
setDocletKindToTitle(doclet, tag);
|
||||
setDocletNameToValue(doclet, tag);
|
||||
if (tag.value && tag.value.name) {
|
||||
doclet.addTag('name', tag.value.name);
|
||||
}
|
||||
if (tag.value && tag.value.type) {
|
||||
doclet.type = tag.value.type;
|
||||
}
|
||||
@ -430,9 +433,12 @@ exports.defineTags = function(dictionary) {
|
||||
|
||||
dictionary.defineTag('member', {
|
||||
canHaveType: true,
|
||||
canHaveName: true,
|
||||
onTagged: function(doclet, tag) {
|
||||
setDocletKindToTitle(doclet, tag);
|
||||
setDocletNameToValue(doclet, tag);
|
||||
if (tag.value && tag.value.name) {
|
||||
doclet.addTag('name', tag.value.name);
|
||||
}
|
||||
if (tag.value && tag.value.type) {
|
||||
doclet.type = tag.value.type;
|
||||
}
|
||||
|
||||
3
test/fixtures/constanttag.js
vendored
3
test/fixtures/constanttag.js
vendored
@ -4,3 +4,6 @@ var FOO = 1;
|
||||
/** @const BAR */
|
||||
|
||||
/** @const {string} BAZ */
|
||||
|
||||
/** @const {number} */
|
||||
var FOOS = 2;
|
||||
|
||||
3
test/fixtures/membertag.js
vendored
3
test/fixtures/membertag.js
vendored
@ -3,3 +3,6 @@ var x;
|
||||
|
||||
/** @var foobar */
|
||||
/** @var {string} baz */
|
||||
|
||||
/** @member {Object} */
|
||||
var y;
|
||||
|
||||
@ -2,12 +2,15 @@ describe("@constant tag", function() {
|
||||
var docSet = jasmine.getDocSetFromFile('test/fixtures/constanttag.js'),
|
||||
FOO = docSet.getByLongname('FOO')[0],
|
||||
BAR = docSet.getByLongname('BAR')[0],
|
||||
BAZ = docSet.getByLongname('BAZ')[0];
|
||||
BAZ = docSet.getByLongname('BAZ')[0],
|
||||
FOOS = docSet.getByLongname('FOOS')[0];
|
||||
|
||||
|
||||
it("sets the doclet's 'kind' property to 'constant'", function() {
|
||||
expect(FOO.kind).toBe('constant');
|
||||
expect(BAR.kind).toBe('constant');
|
||||
expect(BAZ.kind).toBe('constant');
|
||||
expect(FOOS.kind).toBe('constant');
|
||||
});
|
||||
|
||||
it("If used as a standalone, takes the name from the code", function() {
|
||||
@ -25,4 +28,12 @@ describe("@constant tag", function() {
|
||||
expect(BAZ.type.names.length).toBe(1);
|
||||
expect(BAZ.type.names[0]).toBe('string');
|
||||
});
|
||||
|
||||
it("If used with only a type, takes the name from the code", function() {
|
||||
expect(FOOS.name).toBe('FOOS');
|
||||
expect(FOOS.type).toBeDefined();
|
||||
expect(Array.isArray(FOOS.type.names)).toBeTruthy();
|
||||
expect(FOOS.type.names.length).toBe(1);
|
||||
expect(FOOS.type.names[0]).toBe('number');
|
||||
});
|
||||
});
|
||||
|
||||
@ -2,12 +2,14 @@ describe("@member tag", function() {
|
||||
var docSet = jasmine.getDocSetFromFile('test/fixtures/membertag.js'),
|
||||
doc = docSet.getByLongname('x')[0],
|
||||
doc2 = docSet.getByLongname('foobar')[0],
|
||||
doc3 = docSet.getByLongname('baz')[0];
|
||||
doc3 = docSet.getByLongname('baz')[0],
|
||||
doc4 = docSet.getByLongname('y')[0];
|
||||
|
||||
it("sets the doclet's 'kind' property to 'member'", function() {
|
||||
expect(doc.kind).toBe('member');
|
||||
expect(doc2.kind).toBe('member');
|
||||
expect(doc3.kind).toBe('member');
|
||||
expect(doc4.kind).toBe('member');
|
||||
});
|
||||
|
||||
it("If specified with a name, sets the doclet's name property", function() {
|
||||
@ -22,4 +24,15 @@ describe("@member tag", function() {
|
||||
expect(doc3.type.names.length).toBe(1);
|
||||
expect(doc3.type.names[0]).toBe('string');
|
||||
});
|
||||
|
||||
it("If specified with a type but no name, sets the doclet's name from the following JavaScript syntax", function() {
|
||||
expect(doc4.name).toBe('y');
|
||||
});
|
||||
|
||||
it("If specified with a type but no name, sets the doclet's type appropriately", function() {
|
||||
expect(doc4.type).toBeDefined();
|
||||
expect(Array.isArray(doc4.type.names)).toBeTruthy();
|
||||
expect(doc4.type.names.length).toBe(1);
|
||||
expect(doc4.type.names[0]).toBe('Object');
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user