fix: 修正Admin JSDoc入口角色识别
This commit is contained in:
parent
56ab9b9359
commit
f77be76c4e
@ -688,11 +688,14 @@ function getFunctionExpressionRole(node, sourceFile) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const parent = expression.parent;
|
const parent = expression.parent;
|
||||||
if (ts.isPropertyAssignment(parent) && parent.initializer === expression) {
|
if (
|
||||||
|
(ts.isPropertyAssignment(parent) || ts.isPropertyDeclaration(parent)) &&
|
||||||
|
parent.initializer === expression
|
||||||
|
) {
|
||||||
return getNodeName(parent, sourceFile);
|
return getNodeName(parent, sourceFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
return getNodeName(node, sourceFile);
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function classifyTarget(node, sourceFile) {
|
function classifyTarget(node, sourceFile) {
|
||||||
@ -705,9 +708,6 @@ function classifyTarget(node, sourceFile) {
|
|||||||
if (!name) {
|
if (!name) {
|
||||||
return { allowed: false, target: 'anonymous-function-declaration' };
|
return { allowed: false, target: 'anonymous-function-declaration' };
|
||||||
}
|
}
|
||||||
if (name === 'setup') {
|
|
||||||
return { allowed: false, target: 'setup' };
|
|
||||||
}
|
|
||||||
return { allowed: true, target: 'named-function-declaration' };
|
return { allowed: true, target: 'named-function-declaration' };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -298,6 +298,59 @@ function mounted() {}
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('allows ordinary same-name named functions outside entry roles', () => {
|
||||||
|
const source = `
|
||||||
|
/** 执行普通初始化任务。 */
|
||||||
|
function setup() {}
|
||||||
|
|
||||||
|
const setupTask =
|
||||||
|
/** 执行普通具名函数表达式。 */
|
||||||
|
function setup() {};
|
||||||
|
|
||||||
|
const mountedTask =
|
||||||
|
/** 执行普通具名函数表达式。 */
|
||||||
|
function mounted() {};
|
||||||
|
|
||||||
|
consume(
|
||||||
|
/** 执行普通具名回调。 */
|
||||||
|
function onModuleInit() {},
|
||||||
|
);
|
||||||
|
`;
|
||||||
|
|
||||||
|
assert.deepEqual(
|
||||||
|
inspectFileSource('ordinary-same-name.ts', source).violations,
|
||||||
|
[],
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('uses class property roles for setup and lifecycle function expressions', () => {
|
||||||
|
const source = `
|
||||||
|
class ComponentFields {
|
||||||
|
setup =
|
||||||
|
/** 组件初始化类字段入口。 */
|
||||||
|
function setupField() {};
|
||||||
|
|
||||||
|
static mounted =
|
||||||
|
/** 组件挂载类字段入口。 */
|
||||||
|
function mountedField() {};
|
||||||
|
|
||||||
|
task =
|
||||||
|
/** 执行普通类字段任务。 */
|
||||||
|
function setup() {};
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
assert.deepEqual(
|
||||||
|
inspectFileSource('class-property-role.ts', source).violations.map(
|
||||||
|
({ rule, target }) => [rule, target],
|
||||||
|
),
|
||||||
|
[
|
||||||
|
['invalid-target', 'setup'],
|
||||||
|
['invalid-target', 'lifecycle-entry'],
|
||||||
|
],
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('rejects declarations and callables excluded by the policy', () => {
|
it('rejects declarations and callables excluded by the policy', () => {
|
||||||
const source = `
|
const source = `
|
||||||
/** 接口说明。 */
|
/** 接口说明。 */
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user