Skip to content

[ty] implement proper handling of recursive types in CycleDetector#24773

Draft
mtshiba wants to merge 2 commits intoastral-sh:mainfrom
mtshiba:fix-cycle-detector
Draft

[ty] implement proper handling of recursive types in CycleDetector#24773
mtshiba wants to merge 2 commits intoastral-sh:mainfrom
mtshiba:fix-cycle-detector

Conversation

@mtshiba
Copy link
Copy Markdown
Collaborator

@mtshiba mtshiba commented Apr 21, 2026

Summary

This fixes the known issues with handling recursive aliases, as described here and elsewhere.

from typing import reveal_type

type A = list[A]

def foo(x: A):
    reveal_type(x[0])  # main: list[Any] -> this PR: list[A]

This allows us to safely remove the MAX_RECURSION_DEPTH limit that was associated with CycleDetector.

The point is that in the previous implementation, we simply compared types using hash values ​​to guard against recursion, but this was insufficient. By manually adding equality checks, the depth limit is no longer necessary.

Test Plan

mdtest updated

@mtshiba mtshiba added ty Multi-file analysis & type inference ecosystem-analyzer labels Apr 21, 2026
@astral-sh-bot
Copy link
Copy Markdown

astral-sh-bot Bot commented Apr 21, 2026

Typing conformance results

No changes detected ✅

Current numbers
The percentage of diagnostics emitted that were expected errors held steady at 87.94%. The percentage of expected errors that received a diagnostic held steady at 83.36%. The number of fully passing files held steady at 79/133.

@astral-sh-bot
Copy link
Copy Markdown

astral-sh-bot Bot commented Apr 21, 2026

Memory usage report

Summary

Project Old New Diff Outcome
flake8 47.68MB 47.68MB -
prefect 702.58MB 702.58MB -
trio 116.46MB 116.46MB -
sphinx 258.61MB 258.55MB -0.02% (58.41kB) ⬇️

Significant changes

Click to expand detailed breakdown

sphinx

Name Old New Diff Outcome
Type<'db>::apply_specialization_ 1.63MB 1.60MB -2.01% (33.46kB) ⬇️
StaticClassLiteral<'db>::try_mro_ 1.91MB 1.90MB -0.30% (5.90kB) ⬇️
infer_expression_types_impl 20.61MB 20.60MB -0.02% (5.04kB) ⬇️
infer_definition_types 23.56MB 23.55MB -0.02% (4.76kB) ⬇️
Specialization 1003.30kB 1005.48kB +0.22% (2.19kB) ⬇️
is_redundant_with_impl 929.56kB 927.88kB -0.18% (1.68kB) ⬇️
infer_unpack_types 437.01kB 435.69kB -0.30% (1.32kB) ⬇️
infer_scope_types_impl 15.36MB 15.35MB -0.01% (1.16kB) ⬇️
BoundMethodType<'db>::into_callable_type_ 277.68kB 276.64kB -0.37% (1.03kB) ⬇️
StaticClassLiteral<'db>::try_mro_::interned_arguments 445.08kB 444.09kB -0.22% (1008.00B) ⬇️
infer_expression_type_impl 2.90MB 2.90MB -0.03% (960.00B) ⬇️
GenericAlias 417.87kB 416.95kB -0.22% (936.00B) ⬇️
is_redundant_with_impl::interned_arguments 1.07MB 1.07MB -0.08% (880.00B) ⬇️
IntersectionType 463.77kB 462.95kB -0.18% (840.00B) ⬇️
UnionType 463.84kB 463.30kB -0.12% (560.00B) ⬇️
... 7 more

@astral-sh-bot
Copy link
Copy Markdown

astral-sh-bot Bot commented Apr 21, 2026

ecosystem-analyzer results: new timeouts detected ❌

Failing projects:

Project Old Status New Status Old Return Code New Return Code
more-itertools success timeout 1 None

Diagnostic changes:

Lint rule Added Removed Changed
invalid-argument-type 4 0 28
invalid-assignment 0 0 2
type-assertion-failure 2 0 0
unsupported-operator 1 0 1
invalid-return-type 0 1 0
no-matching-overload 1 0 0
Total 8 1 31
Raw diff (40 changes)
artigraph (https://github.com/artigraph/artigraph)
- src/arti/graphs/__init__.py:358:36 error[invalid-argument-type] Argument to bound method `BackendConnection.write_artifact_and_graph_partitions` is incorrect: Expected `Artifact`, found `Artifact | TypedBox[Artifact]`
+ src/arti/graphs/__init__.py:358:36 error[invalid-argument-type] Argument to bound method `BackendConnection.write_artifact_and_graph_partitions` is incorrect: Expected `Artifact`, found `TypedNode[Artifact]`

core (https://github.com/home-assistant/core)
- homeassistant/components/api/__init__.py:286:28 error[invalid-argument-type] Argument to bound method `StateMachine.async_set` is incorrect: Expected `str`, found `dict[str, Any] | list[Any] | str | int | float`
+ homeassistant/components/api/__init__.py:286:28 error[invalid-argument-type] Argument to bound method `StateMachine.async_set` is incorrect: Expected `str`, found `dict[str, JsonValueType] | list[JsonValueType] | str | int | float`
- homeassistant/components/api/__init__.py:286:39 error[invalid-argument-type] Argument to bound method `StateMachine.async_set` is incorrect: Expected `Mapping[str, Any] | None`, found `dict[str, Any] | list[Any] | str | ... omitted 3 union elements`
+ homeassistant/components/api/__init__.py:286:39 error[invalid-argument-type] Argument to bound method `StateMachine.async_set` is incorrect: Expected `Mapping[str, Any] | None`, found `JsonValueType | None`
- homeassistant/components/api/__init__.py:286:51 error[invalid-argument-type] Argument to bound method `StateMachine.async_set` is incorrect: Expected `bool`, found `dict[str, Any] | list[Any] | str | ... omitted 3 union elements`
+ homeassistant/components/api/__init__.py:286:51 error[invalid-argument-type] Argument to bound method `StateMachine.async_set` is incorrect: Expected `bool`, found `JsonValueType`
- homeassistant/components/api/__init__.py:353:44 error[invalid-argument-type] Argument to bound method `State.from_dict` is incorrect: Expected `dict[str, Any]`, found `dict[str, Any] | list[Any] | str | ... omitted 3 union elements`
+ homeassistant/components/api/__init__.py:353:44 error[invalid-argument-type] Argument to bound method `State.from_dict` is incorrect: Expected `dict[str, Any]`, found `dict[str, JsonValueType] | list[JsonValueType] | str | ... omitted 3 union elements`
- homeassistant/components/api/__init__.py:500:37 error[invalid-argument-type] Argument to bound method `Template.async_render` is incorrect: Expected `TemplateVarsType`, found `dict[str, Any] | list[Any] | str | ... omitted 3 union elements`
+ homeassistant/components/api/__init__.py:500:37 error[invalid-argument-type] Argument to bound method `Template.async_render` is incorrect: Expected `TemplateVarsType`, found `JsonValueType | None`
- homeassistant/components/conversation/chat_log.py:472:17 error[invalid-argument-type] Argument is incorrect: Expected `dict[str, dict[str, Any] | list[Any] | str | ... omitted 3 union elements]`, found `Unknown | dict[str, str]`
+ homeassistant/components/conversation/chat_log.py:472:17 error[invalid-argument-type] Argument is incorrect: Expected `JsonObjectType`, found `Unknown | dict[str, str]`
- homeassistant/components/cover/reproduce_state.py:220:9 error[invalid-argument-type] Argument to function `_async_set_position` is incorrect: Expected `partial[Coroutine[Any, Any, ServiceResponse]]`, found `partial[CoroutineType[Any, Any, dict[str, dict[str, Any] | list[Any] | str | ... omitted 3 union elements] | None]]`
+ homeassistant/components/cover/reproduce_state.py:220:9 error[invalid-argument-type] Argument to function `_async_set_position` is incorrect: Expected `partial[Coroutine[Any, Any, ServiceResponse]]`, found `partial[CoroutineType[Any, Any, ServiceResponse]]`
- homeassistant/components/cover/reproduce_state.py:223:9 error[invalid-argument-type] Argument to function `_async_set_tilt_position` is incorrect: Expected `partial[Coroutine[Any, Any, ServiceResponse]]`, found `partial[CoroutineType[Any, Any, dict[str, dict[str, Any] | list[Any] | str | ... omitted 3 union elements] | None]]`
+ homeassistant/components/cover/reproduce_state.py:223:9 error[invalid-argument-type] Argument to function `_async_set_tilt_position` is incorrect: Expected `partial[Coroutine[Any, Any, ServiceResponse]]`, found `partial[CoroutineType[Any, Any, ServiceResponse]]`
- homeassistant/components/cover/reproduce_state.py:228:13 error[invalid-argument-type] Argument to function `_async_close_cover` is incorrect: Expected `partial[Coroutine[Any, Any, ServiceResponse]]`, found `partial[CoroutineType[Any, Any, dict[str, dict[str, Any] | list[Any] | str | ... omitted 3 union elements] | None]]`
+ homeassistant/components/cover/reproduce_state.py:228:13 error[invalid-argument-type] Argument to function `_async_close_cover` is incorrect: Expected `partial[Coroutine[Any, Any, ServiceResponse]]`, found `partial[CoroutineType[Any, Any, ServiceResponse]]`
- homeassistant/components/cover/reproduce_state.py:233:13 error[invalid-argument-type] Argument to function `_async_open_cover` is incorrect: Expected `partial[Coroutine[Any, Any, ServiceResponse]]`, found `partial[CoroutineType[Any, Any, dict[str, dict[str, Any] | list[Any] | str | ... omitted 3 union elements] | None]]`
+ homeassistant/components/cover/reproduce_state.py:233:13 error[invalid-argument-type] Argument to function `_async_open_cover` is incorrect: Expected `partial[Coroutine[Any, Any, ServiceResponse]]`, found `partial[CoroutineType[Any, Any, ServiceResponse]]`
- homeassistant/components/google_assistant/http.py:413:12 error[invalid-return-type] Return type does not match returned value: expected `list[str]`, found `list[object]`
- homeassistant/components/mqtt/cover.py:441:23 error[invalid-assignment] Object of type `dict[str, Any] | list[Any] | str | ... omitted 3 union elements` is not assignable to `ReceivePayloadType`
+ homeassistant/components/mqtt/cover.py:441:23 error[invalid-assignment] Object of type `dict[str, JsonValueType] | list[JsonValueType] | str | ... omitted 3 union elements` is not assignable to `ReceivePayloadType`
- homeassistant/components/websocket_api/connection.py:205:21 error[invalid-argument-type] Argument to function `error_message` is incorrect: Expected `int | None`, found `dict[str, Any] | list[Any] | str | ... omitted 3 union elements`
+ homeassistant/components/websocket_api/connection.py:205:21 error[invalid-argument-type] Argument to function `error_message` is incorrect: Expected `int | None`, found `dict[str, JsonValueType] | list[JsonValueType] | str | ... omitted 3 union elements`
- homeassistant/helpers/restore_state.py:284:37 error[invalid-argument-type] Argument to bound method `State.from_dict` is incorrect: Expected `dict[str, Any]`, found `dict[str, Any] | list[Any] | str | ... omitted 3 union elements`
+ homeassistant/helpers/restore_state.py:284:37 error[invalid-argument-type] Argument to bound method `State.from_dict` is incorrect: Expected `dict[str, Any]`, found `JsonValueType`
- homeassistant/helpers/singleton.py:103:5 error[invalid-argument-type] Argument is incorrect: Expected `(HomeAssistant, /) -> Coroutine[Any, Any, int]`, found `def func_error(hass: HomeAssistant) -> int`
+ homeassistant/helpers/singleton.py:103:5 error[invalid-argument-type] Argument is incorrect: Expected `_FuncType[_Coro[int]]`, found `def func_error(hass: HomeAssistant) -> int`
+ homeassistant/helpers/storage.py:461:35 error[invalid-argument-type] Argument to bound method `Store.async_save` is incorrect: Argument type `Unknown | dict[str, JsonValueType] | list[JsonValueType] | ... omitted 4 union elements` does not satisfy upper bound `Mapping[str, Any] | Sequence[Any]` of type variable `_T`
+ homeassistant/helpers/storage.py:461:35 error[invalid-argument-type] Argument to bound method `Store.async_save` is incorrect: Expected `_T@Store`, found `Unknown | dict[str, JsonValueType] | list[JsonValueType] | ... omitted 4 union elements`
- homeassistant/helpers/storage.py:429:12 error[unsupported-operator] Operator `not in` is not supported between objects of type `Literal["minor_version"]` and `dict[str, Any] | list[Any] | str | ... omitted 3 union elements`
+ homeassistant/helpers/storage.py:429:12 error[unsupported-operator] Operator `not in` is not supported between objects of type `Literal["minor_version"]` and `dict[str, Any] | dict[str, JsonValueType] | list[JsonValueType] | ... omitted 4 union elements`
- homeassistant/helpers/storage.py:430:13 error[invalid-assignment] Invalid subscript assignment with key of type `Literal["minor_version"]` and value of type `Literal[1]` on object of type `list[Any]`
+ homeassistant/helpers/storage.py:430:13 error[invalid-assignment] Invalid subscript assignment with key of type `Literal["minor_version"]` and value of type `Literal[1]` on object of type `list[JsonValueType]`
- homeassistant/helpers/storage.py:433:13 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> Any, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[Any]]` cannot be called with key of type `Literal["version"]` on object of type `list[Any]`
+ homeassistant/helpers/storage.py:433:13 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> JsonValueType, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[JsonValueType]]` cannot be called with key of type `Literal["version"]` on object of type `list[JsonValueType]`
- homeassistant/helpers/storage.py:434:17 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> Any, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[Any]]` cannot be called with key of type `Literal["minor_version"]` on object of type `list[Any]`
+ homeassistant/helpers/storage.py:434:17 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> JsonValueType, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[JsonValueType]]` cannot be called with key of type `Literal["minor_version"]` on object of type `list[JsonValueType]`
- homeassistant/helpers/storage.py:436:22 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> Any, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[Any]]` cannot be called with key of type `Literal["data"]` on object of type `list[Any]`
+ homeassistant/helpers/storage.py:436:22 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> JsonValueType, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[JsonValueType]]` cannot be called with key of type `Literal["data"]` on object of type `list[JsonValueType]`
- homeassistant/helpers/storage.py:438:16 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> Any, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[Any]]` cannot be called with key of type `Literal["version"]` on object of type `list[Any]`
+ homeassistant/helpers/storage.py:438:16 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> JsonValueType, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[JsonValueType]]` cannot be called with key of type `Literal["version"]` on object of type `list[JsonValueType]`
+ homeassistant/helpers/storage.py:438:16 error[unsupported-operator] Operator `>` is not supported between objects of type `Any | dict[str, JsonValueType] | list[JsonValueType] | ... omitted 4 union elements` and `int`
- homeassistant/helpers/storage.py:440:31 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> Any, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[Any]]` cannot be called with key of type `Literal["version"]` on object of type `list[Any]`
+ homeassistant/helpers/storage.py:440:31 error[invalid-argument-type] Argument to `UnsupportedStorageVersionError.__init__` is incorrect: Expected `int`, found `Any | dict[str, JsonValueType] | list[JsonValueType] | ... omitted 4 union elements`
+ homeassistant/helpers/storage.py:440:31 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> JsonValueType, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[JsonValueType]]` cannot be called with key of type `Literal["version"]` on object of type `list[JsonValueType]`
- homeassistant/helpers/storage.py:445:17 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> Any, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[Any]]` cannot be called with key of type `Literal["version"]` on object of type `list[Any]`
+ homeassistant/helpers/storage.py:445:17 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> JsonValueType, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[JsonValueType]]` cannot be called with key of type `Literal["version"]` on object of type `list[JsonValueType]`
- homeassistant/helpers/storage.py:446:17 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> Any, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[Any]]` cannot be called with key of type `Literal["minor_version"]` on object of type `list[Any]`
+ homeassistant/helpers/storage.py:446:17 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> JsonValueType, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[JsonValueType]]` cannot be called with key of type `Literal["minor_version"]` on object of type `list[JsonValueType]`
- homeassistant/helpers/storage.py:451:57 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> Any, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[Any]]` cannot be called with key of type `Literal["version"]` on object of type `list[Any]`
+ homeassistant/helpers/storage.py:451:57 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> JsonValueType, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[JsonValueType]]` cannot be called with key of type `Literal["version"]` on object of type `list[JsonValueType]`
- homeassistant/helpers/storage.py:451:74 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> Any, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[Any]]` cannot be called with key of type `Literal["data"]` on object of type `list[Any]`
+ homeassistant/helpers/storage.py:451:74 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> JsonValueType, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[JsonValueType]]` cannot be called with key of type `Literal["data"]` on object of type `list[JsonValueType]`
- homeassistant/helpers/storage.py:455:25 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> Any, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[Any]]` cannot be called with key of type `Literal["version"]` on object of type `list[Any]`
+ homeassistant/helpers/storage.py:455:25 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> JsonValueType, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[JsonValueType]]` cannot be called with key of type `Literal["version"]` on object of type `list[JsonValueType]`
- homeassistant/helpers/storage.py:455:42 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> Any, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[Any]]` cannot be called with key of type `Literal["minor_version"]` on object of type `list[Any]`
+ homeassistant/helpers/storage.py:455:42 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> JsonValueType, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[JsonValueType]]` cannot be called with key of type `Literal["minor_version"]` on object of type `list[JsonValueType]`
- homeassistant/helpers/storage.py:455:65 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> Any, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[Any]]` cannot be called with key of type `Literal["data"]` on object of type `list[Any]`
+ homeassistant/helpers/storage.py:455:65 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> JsonValueType, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[JsonValueType]]` cannot be called with key of type `Literal["data"]` on object of type `list[JsonValueType]`
- homeassistant/helpers/storage.py:458:24 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> Any, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[Any]]` cannot be called with key of type `Literal["version"]` on object of type `list[Any]`
+ homeassistant/helpers/storage.py:458:24 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> JsonValueType, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[JsonValueType]]` cannot be called with key of type `Literal["version"]` on object of type `list[JsonValueType]`
- homeassistant/helpers/storage.py:460:30 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> Any, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[Any]]` cannot be called with key of type `Literal["data"]` on object of type `list[Any]`
+ homeassistant/helpers/storage.py:460:30 error[invalid-argument-type] Method `__getitem__` of type `Overload[(i: SupportsIndex, /) -> JsonValueType, (s: slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None], /) -> list[JsonValueType]]` cannot be called with key of type `Literal["data"]` on object of type `list[JsonValueType]`

more-itertools (https://github.com/more-itertools/more-itertools)
- FAILED old=success(1) new=timeout(None)

scipy-stubs (https://github.com/scipy/scipy-stubs)
+ tests/integrate/test_solve_bvp.pyi:19:18 error[invalid-argument-type] Argument to function `solve_bvp` is incorrect: Expected `(Array1D, Unknown, /) -> Unknown`, found `def fun0(x: ndarray[tuple[Any, ...], dtype[float64]], y: ndarray[tuple[Any, ...], dtype[float64]]) -> ndarray[tuple[Any, ...], dtype[float64]]`
+ tests/integrate/test_solve_bvp.pyi:20:1 error[type-assertion-failure] Type `Unknown` does not match asserted type `PPoly[float64]`
+ tests/integrate/test_solve_bvp.pyi:30:8 error[no-matching-overload] No overload of function `solve_bvp` matches arguments
+ tests/integrate/test_solve_bvp.pyi:31:1 error[type-assertion-failure] Type `Unknown` does not match asserted type `PPoly[float64]`

Full report with detailed diff (timing results)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ecosystem-analyzer ty Multi-file analysis & type inference

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant