[red-knot] Add definition for augmented assignment (#12892)

## Summary

This PR adds definition for augmented assignment. This is similar to
annotated assignment in terms of implementation.

An augmented assignment should also record a use of the variable but
that's a TODO for now.

## Test Plan

Add test case to validate that a definition is added.
This commit is contained in:
Dhruv Manilawala 2024-08-20 10:33:55 +05:30 committed by GitHub
parent df09045176
commit aefaddeae7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 96 additions and 3 deletions

View file

@ -463,6 +463,25 @@ mod tests {
));
}
#[test]
fn augmented_assignment() {
let TestCase { db, file } = test_case("x += 1");
let scope = global_scope(&db, file);
let global_table = symbol_table(&db, scope);
assert_eq!(names(&global_table), vec!["x"]);
let use_def = use_def_map(&db, scope);
let definition = use_def
.first_public_definition(global_table.symbol_id_by_name("x").unwrap())
.unwrap();
assert!(matches!(
definition.node(&db),
DefinitionKind::AugmentedAssignment(_)
));
}
#[test]
fn class_scope() {
let TestCase { db, file } = test_case(