ErrorFunctionType(JSTypeRegistry registry, String name) { super( registry, name, null, registry.createArrowType( registry.createOptionalParameters( registry.getNativeType(ALL_TYPE), registry.getNativeType(ALL_TYPE), registry.getNativeType(ALL_TYPE)), null), null, null, true, true); // NOTE(nicksantos): Errors have the weird behavior in that they can // be called as functions, and they will return instances of themselves. // Error('x') instanceof Error => true // // In user-defined types, we would deal with this case by creating // a NamedType with the name "Error" and then resolve it later. // // For native types, we don't really want the native types to // depend on type-resolution. So we just set the return type manually // at the end of construction. // // There's similar logic in JSTypeRegistry for Array and RegExp. getInternalArrowType().returnType = getInstanceType(); } }
.withParamsNode(createOptionalParameters(allType)) .withReturnsOwnInstanceType() .withTemplateKeys(iObjectIndexTemplateKey, iObjectElementTemplateKey) createOptionalParameters( createUnionType( promiseTemplateKey, unknownType, createOptionalParameters(allType))); Node promiseParameter = IR.name(""); promiseParameter.setJSType(promiseParameterType); .withParamsNode(createOptionalParameters(allType)) .withReturnType(booleanType) .build(); .withParamsNode(createOptionalParameters( unknownType, unknownType, .withParamsNode(createOptionalParameters(allType)) .withReturnType(numberType) .build(); .withParamsNode(createOptionalParameters(allType, allType)) .withReturnsOwnInstanceType() .build(); .withParamsNode(createOptionalParameters(allType))
createArrowType(createOptionalParameters(ALL_TYPE), null), null, createTemplateTypeMap(ImmutableList.of( createArrowType(createOptionalParameters(ALL_TYPE), BOOLEAN_TYPE), null, null, true, true); new FunctionType(this, "Date", null, createArrowType( createOptionalParameters(UNKNOWN_TYPE, UNKNOWN_TYPE, UNKNOWN_TYPE, UNKNOWN_TYPE, UNKNOWN_TYPE, UNKNOWN_TYPE, UNKNOWN_TYPE), STRING_TYPE), createArrowType(createOptionalParameters(ALL_TYPE), NUMBER_TYPE), null, null, true, true); createArrowType(createOptionalParameters(ALL_TYPE, ALL_TYPE)), null, null, true, true); REGEXP_FUNCTION_TYPE.getInternalArrowType().returnType = createArrowType(createOptionalParameters(ALL_TYPE), STRING_TYPE), null, null, true, true);