Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Remove extra error at
interfaceExtendsObjectIntersectionErrors
(
#1103) **Description:** ```ts interface I31<T> extends T { x: string } ``` I have a concern. The following functions cause duplicate error handling due to duplicate function calls. ```rs #[validator] impl Analyzer<'_, '_> { fn validate(&mut self, d: &RTsInterfaceDecl) -> VResult<Type> { let ty = self.with_child(ScopeKind::Flow, Default::default(), |child: &mut Analyzer| -> VResult<_> { match &*d.id.sym { "any" | "void" | "never" | "unknown" | "string" | "number" | "bigint" | "boolean" | "null" | "undefined" | "symbol" => { child.storage.report(ErrorKind::InvalidInterfaceName { span: d.id.span }.into()); } _ => {} } let mut ty = Interface { span: d.span, name: d.id.clone().into(), type_params: try_opt!(d.type_params.validate_with(&mut *child).map(|v| v.map(Box::new))), extends: d.extends.validate_with(child)?.freezed(), body: d.body.validate_with(child)?, metadata: Default::default(), tracker: Default::default(), }; child.prevent_expansion(&mut ty.body); ty.body.freeze(); child.resolve_parent_interfaces(&d.extends, true); child.report_error_for_conflicting_parents(d.id.span, &ty.extends); child.report_error_for_wrong_interface_inheritance(d.id.span, &ty.body, &ty.extends); let ty = Type::Interface(ty).freezed(); Ok(ty) })?; // TODO(kdy1): Recover self.register_type(d.id.clone().into(), ty.clone()); Ok(ty) } } ``` `child.resolve_parent_interfaces` and `child.report_error_for_wrong_interface_inheritance` call `report_error_for_unresolved_type` this fn cause `ErrorKind::TypeNotFound` This PR only clogs the hole. If there seems to be a need for fundamental improvement, please open up the issue
- Loading branch information