IPAdddress::tryParse() parses IPv6 address by only checking if address is different from an empty IPv6AdddressImpl, which "::" is not, and thus the parsing of it fails.
Simple comparison of string with "::" is not sufficient either, because any IPv6 address can be eg. 0:0:0:0:0:0:0:0, 0::0, and many other forms.