Skip to content

Commit bdb5c16

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

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
@@ -5,9 +5,10 @@ let logger: ILogger;
55

66
export interface TransformerLogger {
77
circularGenericNotSupported(nodeName: string): void;
8-
unexpectedCreateMock(mockFileName: string, expectedFileName: string): void;
8+
overloadNonLiteralParameterNotSupported(type: string): void;
99
typeNotSupported(type: string): void;
1010
typeOfFunctionCallNotFound(node: string): void;
11+
unexpectedCreateMock(mockFileName: string, expectedFileName: string): void;
1112
}
1213

1314
export function TransformerLogger(): TransformerLogger {
@@ -20,16 +21,19 @@ export function TransformerLogger(): TransformerLogger {
2021
'The generated mock will be incomplete.',
2122
);
2223
},
23-
unexpectedCreateMock(mockFileName: string, expectedFileName: string): void {
24-
logger.warning(`I\'ve found a mock creator but it comes from a different folder
25-
found: ${mockFileName}
26-
expected: ${expectedFileName}`);
24+
overloadNonLiteralParameterNotSupported(type: string): void {
25+
logger.warning(`Non-literal \`${type}' is not supported - falling back to \`instanceof Object' in the conditional typing`);
2726
},
2827
typeNotSupported(type: string): void {
2928
logger.warning(`Not supported type: ${type} - it will convert to null`);
3029
},
3130
typeOfFunctionCallNotFound(node: string): void {
3231
logger.warning(`Cannot find type of function call: ${node} - it will convert to null`);
3332
},
33+
unexpectedCreateMock(mockFileName: string, expectedFileName: string): void {
34+
logger.warning(`I\'ve found a mock creator but it comes from a different folder
35+
found: ${mockFileName}
36+
expected: ${expectedFileName}`);
37+
},
3438
};
3539
}

0 commit comments

Comments
 (0)