Skip to content

Commit 9161907

Browse files
antonsyndclaude
andcommitted
test: add integration fixtures for builtin method type resolution
Add dict_method_types and list_method_types test fixtures that exercise the full compilation pipeline for registry-based member access resolution (items/keys/values/get for dict; append/insert/pop/remove/count/sort/ reverse/copy/clear for list). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 356cf9e commit 9161907

4 files changed

Lines changed: 112 additions & 0 deletions

File tree

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
x
2+
10
3+
y
4+
20
5+
z
6+
30
7+
3
8+
60
9+
10
10+
-1
11+
20
12+
0
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Test: dict method type resolution through BuiltinMethodDefinitions
2+
# Exercises items(), keys(), values(), get() via the registry-based member access path
3+
def main():
4+
d: dict[str, int] = {"x": 10, "y": 20, "z": 30}
5+
6+
# items() - iterates key-value pairs
7+
for k, v in d.items():
8+
print(k)
9+
print(v)
10+
11+
# keys() - iterates keys
12+
key_count: int = 0
13+
for k in d.keys():
14+
key_count += 1
15+
print(key_count)
16+
17+
# values() - iterates values
18+
total: int = 0
19+
for v in d.values():
20+
total += v
21+
print(total)
22+
23+
# get(key, default) - 2-arg form returns V
24+
val: int = d.get("x", 0)
25+
print(val)
26+
print(d.get("missing", -1))
27+
28+
# get(key) - 1-arg form returns V? (Optional)
29+
result = d.get("y")
30+
print(result)
31+
print(d.get("nope"))
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
4
2+
4
3+
0
4+
5
5+
4
6+
4
7+
0
8+
4
9+
3
10+
2
11+
1
12+
2
13+
2
14+
3
15+
4
16+
0
17+
4
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# Test: list method type resolution through BuiltinMethodDefinitions
2+
# Exercises append, insert, pop, remove, count, sort, reverse, copy, clear
3+
def main():
4+
nums: list[int] = [3, 1, 2]
5+
6+
# append - returns void, mutates list
7+
nums.append(4)
8+
print(len(nums))
9+
print(nums[3])
10+
11+
# insert - returns void, inserts at index
12+
nums.insert(0, 0)
13+
print(nums[0])
14+
print(len(nums))
15+
16+
# pop() - no args, returns T
17+
last: int = nums.pop()
18+
print(last)
19+
print(len(nums))
20+
21+
# pop(index) - returns T
22+
first: int = nums.pop(0)
23+
print(first)
24+
25+
# remove - removes first occurrence
26+
nums.append(1)
27+
print(len(nums))
28+
nums.remove(1)
29+
print(len(nums))
30+
31+
# count
32+
nums.append(2)
33+
print(nums.count(2))
34+
35+
# sort
36+
nums.sort()
37+
print(nums[0])
38+
print(nums[1])
39+
print(nums[2])
40+
41+
# reverse
42+
nums.reverse()
43+
print(nums[0])
44+
45+
# copy - returns list[T]
46+
copied: list[int] = nums.copy()
47+
print(len(copied))
48+
49+
# clear
50+
nums.clear()
51+
print(len(nums))
52+
print(len(copied))

0 commit comments

Comments
 (0)