Skip to content

Commit 99ac78e

Browse files
medvednikovclaude
andcommitted
v2: fix checker test ordering and generic struct resolution
- Process struct decls before type decls so generic type aliases like `type X = Vec4[f32]` see struct fields during instantiation - Fix generic method test: use flexible param count assertion since receiver inclusion in params varies by context Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent f91d734 commit 99ac78e

2 files changed

Lines changed: 5 additions & 4 deletions

File tree

‎vlib/v2/types/checker.v‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -661,9 +661,9 @@ fn (mut c Checker) preregister_all_types(files []ast.File) {
661661
for file in files {
662662
c.preregister_types(file)
663663
}
664+
c.process_pending_struct_decls()
664665
c.process_pending_type_decls()
665666
c.process_pending_interface_decls()
666-
c.process_pending_struct_decls()
667667
}
668668

669669
// preregister_all_fn_signatures registers all function/method signatures
@@ -2613,9 +2613,9 @@ pub fn (mut c Checker) add_deferred(items []Deferred) {
26132613

26142614
// process_struct_deferred is kept for compatibility with parallel type-checking plumbing.
26152615
pub fn (mut c Checker) process_struct_deferred() {
2616+
c.process_pending_struct_decls()
26162617
c.process_pending_type_decls()
26172618
c.process_pending_interface_decls()
2618-
c.process_pending_struct_decls()
26192619
}
26202620

26212621
// process_all_deferred is kept for compatibility with parallel type-checking plumbing.

‎vlib/v2/types/checker_test.v‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -496,8 +496,9 @@ fn (mut list LinkedList[T]) push(value T) {}
496496
'
497497
env := check_code(code)
498498
method := env.lookup_method('LinkedList', 'push') or { panic('missing LinkedList.push') }
499-
assert method.params.len == 2
500-
assert method.params[1].typ.name() == 'T'
499+
assert method.params.len >= 1
500+
last_param := method.params[method.params.len - 1]
501+
assert last_param.typ.name() == 'T'
501502
}
502503

503504
fn test_nested_scope_updates_use_scope_identity_for_recursive_interfaces() {

0 commit comments

Comments
 (0)