Merge pull request #24761 from ajafff/avoid-useless-closures

checker: avoid useless closures
This commit is contained in:
Mohamed Hegazy 2018-06-07 12:18:08 -07:00 committed by GitHub
commit d2be8dd6c4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2900,7 +2900,7 @@ namespace ts {
function hasVisibleDeclarations(symbol: Symbol, shouldComputeAliasToMakeVisible: boolean): SymbolVisibilityResult | undefined { function hasVisibleDeclarations(symbol: Symbol, shouldComputeAliasToMakeVisible: boolean): SymbolVisibilityResult | undefined {
let aliasesToMakeVisible: LateVisibilityPaintedStatement[] | undefined; let aliasesToMakeVisible: LateVisibilityPaintedStatement[] | undefined;
if (forEach(symbol.declarations, declaration => !getIsDeclarationVisible(declaration))) { if (!every(symbol.declarations, getIsDeclarationVisible)) {
return undefined; return undefined;
} }
return { accessibility: SymbolAccessibility.Accessible, aliasesToMakeVisible }; return { accessibility: SymbolAccessibility.Accessible, aliasesToMakeVisible };
@ -5494,7 +5494,7 @@ namespace ts {
// object types. // object types.
function isValidBaseType(type: Type): type is BaseType { function isValidBaseType(type: Type): type is BaseType {
return !!(type.flags & (TypeFlags.Object | TypeFlags.NonPrimitive | TypeFlags.Any)) && !isGenericMappedType(type) || return !!(type.flags & (TypeFlags.Object | TypeFlags.NonPrimitive | TypeFlags.Any)) && !isGenericMappedType(type) ||
!!(type.flags & TypeFlags.Intersection) && !some((<IntersectionType>type).types, t => !isValidBaseType(t)); !!(type.flags & TypeFlags.Intersection) && every((<IntersectionType>type).types, isValidBaseType);
} }
function resolveBaseTypesOfInterface(type: InterfaceType): void { function resolveBaseTypesOfInterface(type: InterfaceType): void {
@ -10294,7 +10294,7 @@ namespace ts {
return type.flags & TypeFlags.Object ? isEmptyResolvedType(resolveStructuredTypeMembers(<ObjectType>type)) : return type.flags & TypeFlags.Object ? isEmptyResolvedType(resolveStructuredTypeMembers(<ObjectType>type)) :
type.flags & TypeFlags.NonPrimitive ? true : type.flags & TypeFlags.NonPrimitive ? true :
type.flags & TypeFlags.Union ? some((<UnionType>type).types, isEmptyObjectType) : type.flags & TypeFlags.Union ? some((<UnionType>type).types, isEmptyObjectType) :
type.flags & TypeFlags.Intersection ? !some((<UnionType>type).types, t => !isEmptyObjectType(t)) : type.flags & TypeFlags.Intersection ? every((<UnionType>type).types, isEmptyObjectType) :
false; false;
} }
@ -11955,7 +11955,7 @@ namespace ts {
function isLiteralType(type: Type): boolean { function isLiteralType(type: Type): boolean {
return type.flags & TypeFlags.Boolean ? true : return type.flags & TypeFlags.Boolean ? true :
type.flags & TypeFlags.Union ? type.flags & TypeFlags.EnumLiteral ? true : !forEach((<UnionType>type).types, t => !isUnitType(t)) : type.flags & TypeFlags.Union ? type.flags & TypeFlags.EnumLiteral ? true : every((<UnionType>type).types, isUnitType) :
isUnitType(type); isUnitType(type);
} }
@ -16165,7 +16165,7 @@ namespace ts {
return !!(type.flags & (TypeFlags.AnyOrUnknown | TypeFlags.NonPrimitive) || return !!(type.flags & (TypeFlags.AnyOrUnknown | TypeFlags.NonPrimitive) ||
getFalsyFlags(type) & TypeFlags.DefinitelyFalsy && isValidSpreadType(removeDefinitelyFalsyTypes(type)) || getFalsyFlags(type) & TypeFlags.DefinitelyFalsy && isValidSpreadType(removeDefinitelyFalsyTypes(type)) ||
type.flags & TypeFlags.Object && !isGenericMappedType(type) || type.flags & TypeFlags.Object && !isGenericMappedType(type) ||
type.flags & TypeFlags.UnionOrIntersection && !forEach((<UnionOrIntersectionType>type).types, t => !isValidSpreadType(t))); type.flags & TypeFlags.UnionOrIntersection && every((<UnionOrIntersectionType>type).types, isValidSpreadType));
} }
function checkJsxSelfClosingElement(node: JsxSelfClosingElement, checkMode: CheckMode | undefined): Type { function checkJsxSelfClosingElement(node: JsxSelfClosingElement, checkMode: CheckMode | undefined): Type {
@ -20443,7 +20443,7 @@ namespace ts {
if (propType.symbol && propType.symbol.flags & SymbolFlags.Class) { if (propType.symbol && propType.symbol.flags & SymbolFlags.Class) {
const name = prop.escapedName; const name = prop.escapedName;
const symbol = resolveName(prop.valueDeclaration, name, SymbolFlags.Type, undefined, name, /*isUse*/ false); const symbol = resolveName(prop.valueDeclaration, name, SymbolFlags.Type, undefined, name, /*isUse*/ false);
if (symbol && symbol.declarations.some(d => d.kind === SyntaxKind.JSDocTypedefTag)) { if (symbol && symbol.declarations.some(isJSDocTypedefTag)) {
grammarErrorOnNode(symbol.declarations[0], Diagnostics.Duplicate_identifier_0, unescapeLeadingUnderscores(name)); grammarErrorOnNode(symbol.declarations[0], Diagnostics.Duplicate_identifier_0, unescapeLeadingUnderscores(name));
return grammarErrorOnNode(prop.valueDeclaration, Diagnostics.Duplicate_identifier_0, unescapeLeadingUnderscores(name)); return grammarErrorOnNode(prop.valueDeclaration, Diagnostics.Duplicate_identifier_0, unescapeLeadingUnderscores(name));
} }