typescript-is
Advanced tools
Comparing version 0.18.2 to 0.18.3
@@ -27,3 +27,3 @@ "use strict"; | ||
: VisitorTypeCheck.visitType(propertyInfo.type, visitorContext)); | ||
return VisitorUtils.createDisjunctionFunction(functionNames, name); | ||
return VisitorUtils.createDisjunctionFunction(functionNames, name, visitorContext); | ||
} | ||
@@ -39,3 +39,3 @@ else { | ||
: VisitorTypeCheck.visitType(propertyInfo.type, visitorContext)); | ||
return VisitorUtils.createDisjunctionFunction(functionNames, name); | ||
return VisitorUtils.createDisjunctionFunction(functionNames, name, visitorContext); | ||
} | ||
@@ -56,3 +56,3 @@ }); | ||
const functionNames = type.typeArguments.map((type) => VisitorTypeCheck.visitType(type, visitorContext)); | ||
return VisitorUtils.createDisjunctionFunction(functionNames, name); | ||
return VisitorUtils.createDisjunctionFunction(functionNames, name, visitorContext); | ||
} | ||
@@ -65,3 +65,3 @@ else { | ||
const functionNames = numbers.map((value) => VisitorTypeCheck.visitType(type.typeArguments[value], visitorContext)); | ||
return VisitorUtils.createDisjunctionFunction(functionNames, name); | ||
return VisitorUtils.createDisjunctionFunction(functionNames, name, visitorContext); | ||
} | ||
@@ -107,3 +107,3 @@ }); | ||
// (T & U)[I] = T[I] | U[I] | ||
return VisitorUtils.createDisjunctionFunction(functionNames, name); | ||
return VisitorUtils.createDisjunctionFunction(functionNames, name, visitorContext); | ||
} | ||
@@ -110,0 +110,0 @@ }); |
@@ -19,3 +19,3 @@ "use strict"; | ||
// keyof (T & U) = (keyof T) | (keyof U) | ||
return VisitorUtils.createDisjunctionFunction(functionNames, name); | ||
return VisitorUtils.createDisjunctionFunction(functionNames, name, visitorContext); | ||
} | ||
@@ -22,0 +22,0 @@ }); |
@@ -257,3 +257,3 @@ "use strict"; | ||
return VisitorUtils.setFunctionIfNotExists(name, visitorContext, () => { | ||
return VisitorUtils.createDisjunctionFunction(functionNames, name); | ||
return VisitorUtils.createDisjunctionFunction(functionNames, name, visitorContext); | ||
}); | ||
@@ -260,0 +260,0 @@ } |
@@ -40,3 +40,3 @@ import * as ts from 'typescript'; | ||
export declare function createConjunctionFunction(functionNames: string[], functionName: string, extraStatements?: ts.Statement[]): ts.FunctionDeclaration; | ||
export declare function createDisjunctionFunction(functionNames: string[], functionName: string): ts.FunctionDeclaration; | ||
export declare function createDisjunctionFunction(functionNames: string[], functionName: string, visitorContext: VisitorContext): ts.FunctionDeclaration; | ||
export declare function createStrictNullCheckStatement(identifier: ts.Identifier, visitorContext: VisitorContext): ts.EmptyStatement | ts.IfStatement; | ||
@@ -43,0 +43,0 @@ export declare function createAssertionFunction(failureCondition: ts.Expression, expected: Reason, functionName: string, ...otherStatements: ts.Statement[]): ts.FunctionDeclaration; |
@@ -292,3 +292,10 @@ "use strict"; | ||
exports.createConjunctionFunction = createConjunctionFunction; | ||
function createDisjunctionFunction(functionNames, functionName) { | ||
function createDisjunctionFunction(functionNames, functionName, visitorContext) { | ||
if (functionNames.length === 2) { | ||
const nullTypeCheckFunction = getNullFunction(visitorContext); | ||
const nullIndex = functionNames.indexOf(nullTypeCheckFunction); | ||
if (nullIndex > -1) { | ||
return createNullableTypeCheck(functionNames[1 - nullIndex], functionName); | ||
} | ||
} | ||
const conditionsIdentifier = ts.createIdentifier('conditions'); | ||
@@ -313,2 +320,9 @@ const conditionIdentifier = ts.createIdentifier('condition'); | ||
exports.createDisjunctionFunction = createDisjunctionFunction; | ||
function createNullableTypeCheck(typeCheckFunction, functionName) { | ||
return ts.createFunctionDeclaration(undefined, undefined, undefined, functionName, undefined, [ | ||
ts.createParameter(undefined, undefined, undefined, exports.objectIdentifier, undefined, undefined, undefined) | ||
], undefined, ts.createBlock([ | ||
ts.createIf(ts.createStrictEquality(exports.objectIdentifier, ts.createNull()), ts.createReturn(ts.createNull()), ts.createReturn(ts.createCall(ts.createIdentifier(typeCheckFunction), undefined, [exports.objectIdentifier]))) | ||
])); | ||
} | ||
function createStrictNullCheckStatement(identifier, visitorContext) { | ||
@@ -315,0 +329,0 @@ if (visitorContext.compilerOptions.strictNullChecks !== false) { |
{ | ||
"name": "typescript-is", | ||
"version": "0.18.2", | ||
"version": "0.18.3", | ||
"engines": { | ||
@@ -5,0 +5,0 @@ "node": ">=6.14.4" |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
263349
2959