Skip to content

Panics for self-referential (recursive) generic classes or type aliases #256

@davidbgk

Description

@davidbgk

When running it against https://github.com/numerique-gouv/ami-notifications-api @ f9fa495fcbad07244f9f7598ac47574c3ae99ef2

$ uvx ty check
Installed 1 package in 4ms
error: panic: Panicked at /Users/runner/.cargo/git/checkouts/salsa-e6f3bb7c2a062968/f78a641/src/function/execute.rs:210:25 when checking `/Users/david/Sites/ami-notifications-api/tests/conftest.py`: `infer_definition_types(Id(2b01f)): execute: too many cycle iterations`
info: This indicates a bug in ty.
info: If you could open an issue at https://github.com/astral-sh/ty/issues/new?title=%5Bpanic%5D we'd be very appreciative!
info: Platform: macos x86_64
info: Args: ["ty", "check"]
info: run with `RUST_BACKTRACE=1` environment variable to show the full backtrace information
info: query stacktrace:
   0: symbol_by_id(Id(804b))
             at crates/ty_python_semantic/src/symbol.rs:576
   1: member_lookup_with_policy_(Id(6467))
             at crates/ty_python_semantic/src/types.rs:537
   2: infer_definition_types(Id(1a9e))
             at crates/ty_python_semantic/src/types/infer.rs:147
   3: symbol_by_id(Id(804a))
             at crates/ty_python_semantic/src/symbol.rs:576
   4: infer_deferred_types(Id(1aad))
             at crates/ty_python_semantic/src/types/infer.rs:185
   5: signature_(Id(a420))
             at crates/ty_python_semantic/src/types.rs:6611
   6: infer_expression_types(Id(3009))
             at crates/ty_python_semantic/src/types/infer.rs:221
   7: infer_definition_types(Id(281d))
             at crates/ty_python_semantic/src/types/infer.rs:147
   8: infer_scope_types(Id(2404))
             at crates/ty_python_semantic/src/types/infer.rs:120
   9: check_types(Id(c01))
             at crates/ty_python_semantic/src/types.rs:83

When runnning it with RUST_BACKTRACE=1 as proposed:

$ RUST_BACKTRACE=1 uvx ty check
error: panic: Panicked at /Users/runner/.cargo/git/checkouts/salsa-e6f3bb7c2a062968/f78a641/src/function/execute.rs:210:25 when checking `/Users/david/Sites/ami-notifications-api/tests/conftest.py`: `infer_definition_types(Id(2b883)): execute: too many cycle iterations`
info: This indicates a bug in ty.
info: If you could open an issue at https://github.com/astral-sh/ty/issues/new?title=%5Bpanic%5D we'd be very appreciative!
info: Platform: macos x86_64
info: Args: ["ty", "check"]
info: Backtrace:
   0: __mh_execute_header
   1: __mh_execute_header
   2: __mh_execute_header
   3: __mh_execute_header
   4: __mh_execute_header
   5: __mh_execute_header
   6: __mh_execute_header
   7: __mh_execute_header
   8: __mh_execute_header
   9: __mh_execute_header
  10: __mh_execute_header
  11: __mh_execute_header
  12: __mh_execute_header
  13: __mh_execute_header
  14: __mh_execute_header
  15: __mh_execute_header
  16: __mh_execute_header
  17: __mh_execute_header
  18: __mh_execute_header
  19: __mh_execute_header
  20: __mh_execute_header
  21: __mh_execute_header
  22: __mh_execute_header
  23: __mh_execute_header
  24: __mh_execute_header
  25: __mh_execute_header
  26: __mh_execute_header
  27: __mh_execute_header
  28: __mh_execute_header
  29: __mh_execute_header
  30: __mh_execute_header
  31: __mh_execute_header
  32: __mh_execute_header
  33: __mh_execute_header
  34: __mh_execute_header
  35: __mh_execute_header
  36: __mh_execute_header
  37: __mh_execute_header
  38: __mh_execute_header
  39: __mh_execute_header
  40: __mh_execute_header
  41: __mh_execute_header
  42: __mh_execute_header
  43: __mh_execute_header
  44: __mh_execute_header
  45: __mh_execute_header
  46: __mh_execute_header
  47: __mh_execute_header
  48: __mh_execute_header
  49: __mh_execute_header
  50: __mh_execute_header
  51: __mh_execute_header
  52: __mh_execute_header
  53: __mh_execute_header
  54: __mh_execute_header
  55: __mh_execute_header
  56: __mh_execute_header
  57: __mh_execute_header
  58: __mh_execute_header
  59: __mh_execute_header
  60: __mh_execute_header
  61: __mh_execute_header
  62: __mh_execute_header
  63: __mh_execute_header
  64: __mh_execute_header
  65: __mh_execute_header
  66: __mh_execute_header
  67: __mh_execute_header
  68: __mh_execute_header
  69: __mh_execute_header
  70: __mh_execute_header
  71: __mh_execute_header
  72: __mh_execute_header
  73: __mh_execute_header
  74: __mh_execute_header
  75: __mh_execute_header
  76: __mh_execute_header
  77: __mh_execute_header
  78: __mh_execute_header
  79: __mh_execute_header
  80: __mh_execute_header
  81: __mh_execute_header
  82: __mh_execute_header
  83: __mh_execute_header
  84: __mh_execute_header
  85: __mh_execute_header
  86: __mh_execute_header
  87: __mh_execute_header
  88: __mh_execute_header
  89: __mh_execute_header
  90: __mh_execute_header
  91: __mh_execute_header
  92: __mh_execute_header
  93: __mh_execute_header
  94: __mh_execute_header
  95: __mh_execute_header
  96: __mh_execute_header
  97: __mh_execute_header
  98: __mh_execute_header
  99: __mh_execute_header
 100: __mh_execute_header
 101: __mh_execute_header
 102: __mh_execute_header
 103: __mh_execute_header
 104: __mh_execute_header
 105: __mh_execute_header
 106: __mh_execute_header
 107: __mh_execute_header
 108: __pthread_start

info: query stacktrace:
   0: symbol_by_id(Id(e84b))
             at crates/ty_python_semantic/src/symbol.rs:576
   1: member_lookup_with_policy_(Id(8072))
             at crates/ty_python_semantic/src/types.rs:537
   2: infer_definition_types(Id(329e))
             at crates/ty_python_semantic/src/types/infer.rs:147
   3: symbol_by_id(Id(e84a))
             at crates/ty_python_semantic/src/symbol.rs:576
   4: infer_deferred_types(Id(32ad))
             at crates/ty_python_semantic/src/types/infer.rs:185
   5: signature_(Id(2181c))
             at crates/ty_python_semantic/src/types.rs:6611
   6: infer_expression_types(Id(4009))
             at crates/ty_python_semantic/src/types/infer.rs:221
   7: infer_definition_types(Id(281d))
             at crates/ty_python_semantic/src/types/infer.rs:147
   8: infer_scope_types(Id(1404))
             at crates/ty_python_semantic/src/types/infer.rs:120
   9: check_types(Id(c01))
             at crates/ty_python_semantic/src/types.rs:83

Hope it helps, I'm definitely not a Rust developer (yet!).

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingfatala fatal error (panic or crash)

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions