Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[red-knot] Resolve references in eager nested scopes eagerly #16079

Merged
merged 53 commits into from
Feb 19, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
9d101d6
Improve encapsulation of `Scope`
AlexWaygood Nov 14, 2024
2789cd0
add a failing test
AlexWaygood Nov 14, 2024
23ed82d
existing tests pass
AlexWaygood Nov 15, 2024
5f566cd
Get a naive version working
AlexWaygood Nov 21, 2024
6ea3655
another passing test
AlexWaygood Nov 21, 2024
1e5ae86
another passing test
AlexWaygood Nov 21, 2024
16b63ba
add a failing test
AlexWaygood Nov 21, 2024
f4904b1
wip
AlexWaygood Nov 21, 2024
b8ffa78
Merge branch 'main' into alex/eager-scopes
dcreager Feb 10, 2025
e5eaab9
Fix merge conflicts
dcreager Feb 10, 2025
a3ea477
Fix type inference merge conflicts
dcreager Feb 10, 2025
4cd5ae0
This unknown is because there is no declared type
dcreager Feb 11, 2025
0c394ab
Add more commentary
dcreager Feb 11, 2025
df91210
Look for eager references in any enclosing scope, not just innermost
dcreager Feb 11, 2025
06f76ae
clippy
dcreager Feb 11, 2025
cf78c49
linter
dcreager Feb 11, 2025
54efbbe
Add a bunch of nested examples
dcreager Feb 11, 2025
7e0ef53
Merge branch 'main' into alex/eager-scopes
dcreager Feb 11, 2025
be8f9eb
lint
dcreager Feb 11, 2025
908d3e2
doc typo
dcreager Feb 11, 2025
a63c6e6
comment
dcreager Feb 11, 2025
5db470e
Merge branch 'main' into alex/eager-scopes
dcreager Feb 18, 2025
28d6513
Don't reexport UseDefMap
dcreager Feb 18, 2025
f72c268
Don't impl Deref
dcreager Feb 18, 2025
f647032
Expect all eager scopes to have nested ID
dcreager Feb 18, 2025
4eb38fd
Extract eager symbol lookup into separate function
dcreager Feb 18, 2025
de73d08
Name nit
dcreager Feb 18, 2025
dfb7384
Rework eager bindings storage
dcreager Feb 18, 2025
95a6bb8
Remove unneeded mem::take
dcreager Feb 18, 2025
e13ac91
Move more lookup logic into the semantic index builder
dcreager Feb 18, 2025
71194ba
Only consider bindings
dcreager Feb 18, 2025
3b5277e
Add test for class definition bindings
dcreager Feb 18, 2025
fc93843
Revert AstIds changes
dcreager Feb 18, 2025
4556f4d
Clarify expect message
dcreager Feb 18, 2025
03ce733
Move clone
dcreager Feb 18, 2025
fc6c009
Don't snapshot eager bindings for bound symbols
dcreager Feb 18, 2025
40d5be2
Add tests for deferred annotations
dcreager Feb 18, 2025
3cf2308
Add failing tests for eager scopes in global scope
dcreager Feb 18, 2025
8a2449f
Handle eager lookups in global scope
dcreager Feb 18, 2025
576f54d
Remove unneeded track_caller
dcreager Feb 18, 2025
c344871
Deferred expressions are always lazy
dcreager Feb 18, 2025
260756b
Remove stale TODO
dcreager Feb 18, 2025
b24cf07
Remove another stale track_caller
dcreager Feb 18, 2025
4931bd4
Remove stale clone/copy
dcreager Feb 18, 2025
1a7cbe8
Another track_caller
dcreager Feb 18, 2025
a55a01a
Merge branch 'main' into alex/eager-scopes
dcreager Feb 19, 2025
d76d362
Don't save eager bindings in class definitions
dcreager Feb 19, 2025
c65011f
Make test iterables non-empty
dcreager Feb 19, 2025
889a64b
Verify that eager bindings are used in public types of class attrs
dcreager Feb 19, 2025
888ba7b
Add technically incorrect test for generators evaluated later
dcreager Feb 19, 2025
cb22523
Add link to generator spec
dcreager Feb 19, 2025
86a243c
lint
dcreager Feb 19, 2025
f474b43
fix heading
dcreager Feb 19, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,7 @@ class IntIterable:
def __iter__(self) -> IntIterator:
return IntIterator()

# TODO: This could be a `tuple[int, int]` if we model that `y` can not be modified in the outer comprehension scope
# revealed: tuple[int, Unknown | int]
# revealed: tuple[int, int]
[[reveal_type((x, y)) for x in IntIterable()] for y in IntIterable()]
```

Expand All @@ -67,8 +66,7 @@ class IterableOfIterables:
def __iter__(self) -> IteratorOfIterables:
return IteratorOfIterables()

# TODO: This could be a `tuple[int, int]` (see above)
# revealed: tuple[int, Unknown | IntIterable]
# revealed: tuple[int, IntIterable]
[[reveal_type((x, y)) for x in y] for y in IterableOfIterables()]
```

Expand Down
Loading
Loading