url.RawFragment = u.RawFragment
}
}
+ if ref.Path == "" && u.Opaque != "" {
+ url.Opaque = u.Opaque
+ url.User = nil
+ url.Host = ""
+ url.Path = ""
+ return &url
+ }
// The "abs_path" or "rel_path" cases.
url.Host = u.Host
url.User = u.User
// Empty path and query but with ForceQuery (issue 46033).
{"https://a/b/c/d;p?q#s", "?", "https://a/b/c/d;p?"},
+
+ // Opaque URLs (issue 66084).
+ {"https://foo.com/bar?a=b", "http:opaque", "http:opaque"},
+ {"http:opaque?x=y#zzz", "https:/foo?a=b#frag", "https:/foo?a=b#frag"},
+ {"http:opaque?x=y#zzz", "https:foo:bar", "https:foo:bar"},
+ {"http:opaque?x=y#zzz", "https:bar/baz?a=b#frag", "https:bar/baz?a=b#frag"},
+ {"http:opaque?x=y#zzz", "https://user@host:1234?a=b#frag", "https://user@host:1234?a=b#frag"},
+ {"http:opaque?x=y#zzz", "?a=b#frag", "http:opaque?a=b#frag"},
}
func TestResolveReference(t *testing.T) {