diff --git a/lib/elixir/lib/uri.ex b/lib/elixir/lib/uri.ex index c4702bb904b..3fe731ff12a 100644 --- a/lib/elixir/lib/uri.ex +++ b/lib/elixir/lib/uri.ex @@ -903,7 +903,7 @@ defmodule URI do @spec merge(t | binary, t | binary) :: t def merge(uri, rel) - def merge(%URI{host: nil}, _rel) do + def merge(%URI{scheme: nil}, _rel) do raise ArgumentError, "you must merge onto an absolute URI" end diff --git a/lib/elixir/test/elixir/uri_test.exs b/lib/elixir/test/elixir/uri_test.exs index 0f219bfc7e1..a46efad2380 100644 --- a/lib/elixir/test/elixir/uri_test.exs +++ b/lib/elixir/test/elixir/uri_test.exs @@ -460,6 +460,11 @@ defmodule URITest do "https://images.example.com/t/1600x/https://images.example.com/foo.jpg" end + test "merge/2 with host-less URIs" do + assert URI.merge("tag:example", "foo") |> to_string == "tag:foo" + assert URI.merge("tag:example", "#fragment") |> to_string == "tag:example#fragment" + end + test "merge/2 (with RFC examples)" do # These are examples from: #