Skip to content

A canonical path should have all existing components canonicalized #128

Description

@ForNeVeR

Currently, AbsolutePath::Canonicalize will mostly do nothing for a non-existing path, it will be returned as-is.

Which is mostly fine, but might cause misinterpretation on the user's side: e.g. while myPath.Canonicalize() is okay-ish and follows the spec "canonical if exists", myPath.Canonicalize().Parent is not okay — if myPath doesn't exist then this will not be canonicalized, even if existing.

We should think about this situation, perhaps let's introduce two more methods?

  • CanonicalIfExists(): AbsolutePath?
  • CanonicalRecursive(): AbsolutePath — which will essentially do CanonicalIfExists() ?? Parent.CanonicalRecursive() / FileName — e.g. will try to canonicalize existing parent chain whenever possible

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions