mirror of
https://github.com/DeusData/codebase-memory-mcp.git
synced 2026-10-27 06:53:11 +08:00
Round 3 parity push: - match/case (PEP 634): when the case pattern is class_pattern (wrapped in a case_pattern), narrow the match subject identifier to NAMED(class) inside the case body. Push/pop scope per case. Capture sub-patterns bind to UNKNOWN (field-type extraction is a v1.1 task — would require field type info in the registry). - await expr: identity passthrough. async def f() -> T registers with return T, so `await f()` returning T is the resolved-call shape we want without modeling Coroutine[Any, Any, T] explicitly. - Expanded test_py_lsp_bench.c fixture from 65 lines to 136 lines exercising every parity feature: dotted-module walks, dataclass + Self chaining, multi-inheritance with super(), Optional/Union annotations + narrowing (isinstance / is not None / walrus), generic list[T] / dict[K, V] / defaultdict comprehensions, classmethod / staticmethod, match/case dispatch, async/await, common stdlib (logging.getLogger, json.loads, pathlib.Path, functools.lru_cache). Bench result on the new fixture: 38 calls, 30 resolved, 79%, 7.50 ms. Remaining 21% includes patterns where intermediate types lose precision (e.g. super() constructor, dict subscript), instance attribute typing (self.x where x isn't annotated at class scope), and decorator return-type substitution (lru_cache). All 2888 prior tests stay green; 2 new tests + bench expansion. Total 2890 / 0.