"Overloading could not be solved" due to synonym in context

The program below fails to compile with an overloading error:

module list

import StdEnv

Start = f []

f :: !(l String) -> () | List l String
f [|_:xs] = f xs

Overloading error [list.icl,7,f]: internal overloading of "f" could not be solved for: List a String (context does not occur in function type)

Changing the context to List l {#Char} makes the program compile, but I think the above should work as well.