Hi,
When I try to compile the following example:
abstract Test = Cat ** {
cat X ;
fun mkQualifiedX : Cat.A -> X -> X ;
}
concrete TestC of Test = CatEng **
open SyntaxEng in {
lincat X = CatEng.CN ;
lin mkQualifiedX adj x = mkCN adj x ;
}
I get the following warning message:
TestC.gf:
TestC.gf:4:
Happened in linearization of mkQualifiedX
Warning: ambiguous overloading of mkCN resolved by selecting the first of the alternatives
\x,y -> NounEng.AdjCN (AdjectiveEng.PositA x) (NounEng.UseN y)
\x,y -> NounEng.AdjCN (AdjectiveEng.PositA x) y
UseN promotes a noun to a CN, but in the context of mkQualifiedX its second argument is of type X (i.e., CN). Therefore, I was expecting that only the second alternative would be applicable (the second argument of mkQualifiedX is not a noun).
I would really appreciate it if someone could help me to understand this warning message and give me some hints on how to avoid it.
Thank you in advance.
Best regards,
Gustavo