@@ -29,7 +29,7 @@ function fixNounPhrase(noun: English.NounPhrase): English.NounPhrase {
2929 determiners : fixMultipleDeterminers ( noun . determiners ) ,
3030 adjectives : fixMultipleAdjectives ( noun . adjectives ) ,
3131 postCompound : mapNullable ( noun . postCompound , fixNounPhrase ) ,
32- prepositions : noun . prepositions . map ( fixPreposition ) ,
32+ prepositions : fixMultiplePrepositions ( noun . prepositions ) ,
3333 } ;
3434 case "compound" :
3535 return {
@@ -212,15 +212,15 @@ function fixVerbPhrase(verb: English.VerbPhrase): English.VerbPhrase {
212212 contentClause : mapNullable ( verb . contentClause , fixClause ) ,
213213 object : mapNullable ( verb . object , fixNounPhrase ) ,
214214 objectComplement : mapNullable ( verb . objectComplement , fixComplement ) ,
215- prepositions : verb . prepositions . map ( fixPreposition ) ,
215+ prepositions : fixMultiplePrepositions ( verb . prepositions ) ,
216216 } ;
217217 case "compound" :
218218 return {
219219 ...verb ,
220220 verbs : verb . verbs . map ( fixVerbPhrase ) ,
221221 object : mapNullable ( verb . object , fixNounPhrase ) ,
222222 objectComplement : mapNullable ( verb . objectComplement , fixComplement ) ,
223- prepositions : verb . prepositions . map ( fixPreposition ) ,
223+ prepositions : fixMultiplePrepositions ( verb . prepositions ) ,
224224 } ;
225225 }
226226}
@@ -245,6 +245,18 @@ function fixPreposition(
245245 object : fixNounPhrase ( preposition . object ) ,
246246 } ;
247247}
248+ function fixMultiplePrepositions (
249+ prepositions : ReadonlyArray < English . Preposition > ,
250+ ) : ReadonlyArray < English . Preposition > {
251+ if (
252+ prepositions . filter ( ( preposition ) => preposition . preposition . word === "of" )
253+ . length > 1
254+ ) {
255+ throw new FilteredError ( 'multiple "of"' ) ;
256+ } else {
257+ return prepositions . map ( fixPreposition ) ;
258+ }
259+ }
248260function fixClause ( clause : English . Clause ) : English . Clause {
249261 switch ( clause . type ) {
250262 case "simple" :
0 commit comments