@@ -486,6 +486,28 @@ def validate_type_params
486486 end
487487 end
488488
489+ def resolve_signature ( resolver , table , dirs , decls , only : nil )
490+ map = UseMap . new ( table : table )
491+ dirs . each do |dir |
492+ case dir
493+ when AST ::Directives ::Use
494+ dir . clauses . each do |clause |
495+ map . build_map ( clause )
496+ end
497+ end
498+ end
499+
500+ decls = decls . map do |decl |
501+ if only && !only . member? ( decl )
502+ decl
503+ else
504+ resolve_declaration ( resolver , map , decl , outer : [ ] , prefix : Namespace . root )
505+ end
506+ end
507+
508+ [ dirs , decls ]
509+ end
510+
489511 def resolve_type_names ( only : nil )
490512 resolver = Resolver ::TypeNameResolver . new ( self )
491513 env = Environment . new
@@ -498,21 +520,10 @@ def resolve_type_names(only: nil)
498520 table . compute_children
499521
500522 signatures . each do |buffer , ( dirs , decls ) |
501- map = UseMap . new ( table : table )
502- dirs . each do |dir |
503- dir . clauses . each do |clause |
504- map . build_map ( clause )
505- end
523+ resolve = dirs . find { _1 . is_a? ( AST ::Directives ::ResolveTypeNames ) } #: AST::Directives::ResolveTypeNames?
524+ if !resolve || resolve . value
525+ _ , decls = resolve_signature ( resolver , table , dirs , decls )
506526 end
507-
508- decls = decls . map do |decl |
509- if only && !only . member? ( decl )
510- decl
511- else
512- resolve_declaration ( resolver , map , decl , outer : [ ] , prefix : Namespace . root )
513- end
514- end
515-
516527 env . add_signature ( buffer : buffer , directives : dirs , decls : decls )
517528 end
518529
0 commit comments