In the "file host state" there are steps where host is set to the empty string, but in the "path state" at some step host is tested for null (and also set to null).
Because of this difference parser will report validation error for such valid URL:
file:///C:/path
In the "file host state" host is set to empty string, but in the "path state": "If url’s host is non-null, validation error."
So I think, host must be set to (and tested for) the same value in both cases; Maybe this value must be null?