Skip to content

Commit b4d2060

Browse files
committed
enhancement(transformer): Add warning for overloads with non literal inputs
1 parent a7c75c5 commit b4d2060

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

src/transformer/descriptor/method/method.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { TypescriptCreator } from '../../helper/creator';
44
import { MockDefiner } from '../../mockDefiner/mockDefiner';
55
import { ModuleName } from '../../mockDefiner/modules/moduleName';
66
import { TypescriptHelper } from '../helper/helper';
7+
import { TransformerLogger } from '../../logger/transformerLogger';
78

89
export interface MethodSignature {
910
parameters?: ts.ParameterDeclaration[];
@@ -60,6 +61,7 @@ function CreateTypeEquality(signatureType: ts.TypeNode | undefined, primaryDecla
6061
);
6162
} else {
6263
// FIXME: Support `instanceof Class`, falls back to Object for now. The fallback causes undefined behavior!
64+
TransformerLogger().overloadNonLiteralParameterNotSupported(signatureType.getText());
6365
return ts.createBinary(identifier, ts.SyntaxKind.InstanceOfKeyword, ts.createIdentifier('Object'));
6466
}
6567
}

src/transformer/logger/transformerLogger.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,29 @@ import { ILogger } from '../../logger/logger.interface';
44
let logger: ILogger;
55

66
export interface TransformerLogger {
7-
unexpectedCreateMock(mockFileName: string, expectedFileName: string): void;
7+
overloadNonLiteralParameterNotSupported(type: string): void;
88
typeNotSupported(type: string): void;
99
typeOfFunctionCallNotFound(node: string): void;
10+
unexpectedCreateMock(mockFileName: string, expectedFileName: string): void;
1011
}
1112

1213
export function TransformerLogger(): TransformerLogger {
1314
logger = logger || Logger('Transformer');
1415

1516
return {
16-
unexpectedCreateMock(mockFileName: string, expectedFileName: string): void {
17-
logger.warning(`I\'ve found a mock creator but it comes from a different folder
18-
found: ${mockFileName}
19-
expected: ${expectedFileName}`);
17+
overloadNonLiteralParameterNotSupported(type: string): void {
18+
logger.warning(`Non-literal \`${type}' is not supported - falling back to \`instanceof Object' in the conditional typing`);
2019
},
2120
typeNotSupported(type: string): void {
2221
logger.warning(`Not supported type: ${type} - it will convert to null`);
2322
},
2423
typeOfFunctionCallNotFound(node: string): void {
2524
logger.warning(`Cannot find type of function call: ${node} - it will convert to null`);
2625
},
26+
unexpectedCreateMock(mockFileName: string, expectedFileName: string): void {
27+
logger.warning(`I\'ve found a mock creator but it comes from a different folder
28+
found: ${mockFileName}
29+
expected: ${expectedFileName}`);
30+
},
2731
};
2832
}

0 commit comments

Comments
 (0)