Make C++ typeid accept specializations of fused types (#3205)
* Potential fix for GH issue #3203 Gets the specialized type if possible from NameNode.analyse_as_type This does introduce a potential new bug: ``` cimport cython just_float = cython.fused_type(float) cdef OK1(just_float x): return just_float in floating cdef fail1(just_float x, floating y): return just_float in floating cdef fail2(floating x): return floating in floating def show(): """ >>> show() True True True True """ print(OK1(1.0)) print(fail1(1.0, 2.0)) print(fail1[float, double](1.0, 2.0)) print(fail2[float](1.0)) ``` fail1 and fail2 work before this patch but fail with it. It isn't clear to me if this should actually be considered a bug. It works in both versions with `cython.floating`, which possibly suggests analyse_as_type in AttributeNode should also be changed * Bring attribute.fused types in line * Removed try-catch * Fix and test "type in fused_type" special-case * Added "analyse_as_specialized_type" * Fixed cpp_operators (handle type is None)
Showing
Please register or sign in to comment