unison icon indicating copy to clipboard operation
unison copied to clipboard

`find` should skip transitive dependencies

Open pchiusano opened this issue 4 months ago • 1 comments

If you do find test.verify you get a million results, buried in the versions of base that exist in your transitive dependencies. For instance:

arcella/page> find test.verify

  ☝️
  
  I couldn't find matches in this namespace, searching in 'lib'...


  1.  lib.ceedubs_exists_1_6_0.lib.unison_base_3_13_0.test.verify : '{g,
                                                                    Exception,
                                                                    Each,
                                                                    Random,
                                                                    Label} ()
                                                                    ->{g} [Result]
  2.  lib.orderator_0_10_0.lib.unison_base_3_32_0.test.verify : '{g,
                                                                Exception,
                                                                Each,
                                                                Random,
                                                                Label} ()
                                                                ->{g} [Result]
  3.  lib.unison_cloud_20_15_0.lib.unison_http_3_6_0.lib.systemfw_concurrent_2_2_0.lib.unison_base_3_7_0.test.verify : '{g,
                                                                                                                       Exception,
                                                                                                                       Each,
                                                                                                                       Random,
                                                                                                                       Label} ()
                                                                                                                       ->{g} [Result]
  4.  lib.ceedubs_exists_1_6_0.lib.unison_base_3_13_0.test.verify.doc : Doc
  5.  lib.ceedubs_exists_1_6_0.lib.unison_base_3_13_0.test.verifyWithSeed : Nat
                                                                            -> '{g,
                                                                            Exception,
                                                                            Each,
                                                                            Random,
                                                                            Label} ()
                                                                            ->{g} [Result]
  6.  lib.ceedubs_exists_1_6_0.lib.unison_base_3_13_0.test.verifyWithSeed.doc : Doc
  7.  lib.orderator_0_10_0.lib.unison_base_3_32_0.test.verify.doc : Doc
  8.  lib.orderator_0_10_0.lib.unison_base_3_32_0.test.verifyWithSeed : Nat
                                                                        -> '{g,
                                                                        Exception,
                                                                        Each,
                                                                        Random,
                                                                        Label} ()
                                                                        ->{g} [Result]
  9.  lib.orderator_0_10_0.lib.unison_base_3_32_0.test.verifyWithSeed.doc : Doc
  10. lib.unison_base_4_2_0.test.verify.doc : Doc
  11. lib.unison_base_4_2_0.test.verifyWithSeed.doc : Doc
  12. lib.unison_cloud_20_15_0.lib.unison_base_4_0_0.test.verify.doc : Doc
  13. lib.unison_cloud_20_15_0.lib.unison_http_3_6_0.lib.systemfw_concurrent_2_2_0.lib.unison_base_3_7_0.test.verify.doc : Doc
  14. lib.unison_cloud_20_15_0.lib.unison_http_3_6_0.lib.systemfw_concurrent_2_2_0.lib.unison_base_3_7_0.test.verifyWithSeed : Nat
                                                                                                                               -> '{g,
                                                                                                                               Exception,
                                                                                                                               Each,
                                                                                                                               Random,
                                                                                                                               Label} ()
                                                                                                                               ->{g} [Result]
  15. lib.unison_cloud_20_15_0.lib.unison_http_3_6_0.lib.systemfw_concurrent_2_2_0.lib.unison_base_3_7_0.test.verifyWithSeed.doc : Doc

Gak!

Easy fix. Don't search transitive dependencies, unless there are no results otherwise.

pchiusano avatar Aug 15 '25 16:08 pchiusano

Side note, I think I've hit the case where I want to look up a library function (probably a direct dependency, not transitive, but I'm not sure offhand), but can't because another name in my project itself matches, so ucm doesn't end up looking through the libs.

Point being, there should probably be a flag for doing any search that can get skipped.

aryairani avatar Aug 15 '25 17:08 aryairani