id,summary,reporter,owner,description,type,status,priority,version,resolution,keywords,cc
24,CorruptedPGF when using non-eta-expanded linearizations,PeterLjunglof,,"The following grammar gets a compilation error (""CorruptedPGF""):

{{{
lincat
NP = {s:Str; n:Num};
Det = {s:{g:Gen} => Str; d:Defness; n:Num};
Noun = {s:{d:Defness;n:Num} => Str; g:Gen};
fun np : Det -> Noun -> NP;
lin np x y = {s = x.s!y ++ y.s!x; n = x.n};
}}}

If one eta-expands the arguments x and y, it works:

{{{
lin np x y = {s = x.s!{g=y.g} ++ y.s!{d=x.d;n=x.n}; n = x.n};
}}}

The error message differs, depending on wheter x or y or none is eta-expanded:

No expansion:
{{{
* lin np x y = {s = x.s!y ++ y.s!x; n = x.n};
linking ... projection from P (P (V 0) (C 0)) (P (P (P (V 1) (C 0)) (C 0)) (C 0)) : S []
happened in function np
happened in language TravelEng
Corrupted PGF

gf: unifyPType R [R [S [],S []],C 1,C 1]
}}}

y is eta-expanded:
{{{
* lin np x y = {s = x.s!{g=y.g} ++ y.s!x; n = x.n};

linking ... projection from P (P (V 0) (C 0)) (P (P (P (V 1) (C 0)) (C 0)) (C 0)) : S []
happened in function np
happened in language TravelEng
Corrupted PGF

gf: unifyPType R [R [S [],S []],C 1,C 1]
}}}

x is eta-expanded:
{{{
* lin np x y = {s = x.s!y ++ y.s!{d=x.d;n=x.n}; n = x.n};

linking ... projection from P (P (V 0) (C 0)) (P (P (P (V 1) (C 0)) (C 0)) (C 0)) : S []
happened in function np
happened in language TravelEng
Corrupted PGF

gf: GF/Compile/GenerateFCFG.hs:(250,38)-(251,95): Non-exhaustive patterns in case
}}}

",defect,new,major,3.0,,,
