From 0a040f1afd890a53854d13c2c962c002b6457173 Mon Sep 17 00:00:00 2001 From: Shunsuke Shibayama Date: Tue, 13 Aug 2024 17:35:09 +0900 Subject: [PATCH] feat: add `typing` APIs --- crates/erg_compiler/context/register.rs | 3 +++ crates/erg_compiler/lib/pystd/typing.d.er | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/crates/erg_compiler/context/register.rs b/crates/erg_compiler/context/register.rs index eca4adeba..2912665bf 100644 --- a/crates/erg_compiler/context/register.rs +++ b/crates/erg_compiler/context/register.rs @@ -1838,6 +1838,9 @@ impl Context { self.level, ); for sup in super_classes.into_iter() { + if sup.is_failure() { + continue; + } let sup_ctx = match self.get_nominal_type_ctx(&sup).ok_or_else(|| { TyCheckErrors::from(TyCheckError::type_not_found( self.cfg.input.clone(), diff --git a/crates/erg_compiler/lib/pystd/typing.d.er b/crates/erg_compiler/lib/pystd/typing.d.er index 5f65daae5..acd38d5a0 100644 --- a/crates/erg_compiler/lib/pystd/typing.d.er +++ b/crates/erg_compiler/lib/pystd/typing.d.er @@ -66,11 +66,19 @@ .assert_never: (arg: Obj) -> NoneType .assert_type: (val: Obj, typ: Type) -> NoneType .cast: |T|(typ: {T}, val: Obj) -> T +.clear_overloads!: () => NoneType .final: |C <: GenericCallable or Type|(func_or_type: C) -> C +.get_args: (type: Type) -> [Type; _] .get_type_hints: (obj: Obj, globalns: {Str: Obj}, localns: {Str: Obj}) -> {Str: Obj} +.get_origin: (type: Type) -> Type +.get_overloads: (func: GenericCallable) -> [Obj; _] +.is_typeddict: (type: Type) -> Bool +.no_type_check: |C <: GenericCallable|(func: C) -> C +.no_type_check_decorator: |C <: GenericCallable|(func: C) -> C .overload: |C <: GenericCallable|(func: C) -> C .override: |C <: GenericCallable|(func: C) -> C .reveal_type: (obj: Obj) -> NoneType +.type_check_only: |C <: GenericCallable|(func: C) -> C .AbstractSet: ClassType .AbstractSet.