URL: Appending to an empty file path results in an absolute path #988
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When appending
path
to a URL with an empty relative path, the current code does:"" + "/" + path
. This is problematic because it makes the relative path absolute, so it no longer resolves against the base URL.E.g. for the following code,
we should get an output of
"/my/cwd/main.swift"
, not"/main.swift"
.This PR updates
URL.appending(path:)
so if the current path is empty (and thus relative), we don't append a slash which would make the path absolute. That is unless we have an authority. If we have an authority, we must add a slash to separate the path from the authority, e.g.URL("http://example.com").appending(path: "path") == http://example.com/path
.Resolves #921 (thanks @omochi for filing!)