@@ -29,7 +29,7 @@ function fixNounPhrase(noun: English.NounPhrase): English.NounPhrase {
29
29
determiners : fixMultipleDeterminers ( noun . determiners ) ,
30
30
adjectives : fixMultipleAdjectives ( noun . adjectives ) ,
31
31
postCompound : mapNullable ( noun . postCompound , fixNounPhrase ) ,
32
- prepositions : noun . prepositions . map ( fixPreposition ) ,
32
+ prepositions : fixMultiplePrepositions ( noun . prepositions ) ,
33
33
} ;
34
34
case "compound" :
35
35
return {
@@ -212,15 +212,15 @@ function fixVerbPhrase(verb: English.VerbPhrase): English.VerbPhrase {
212
212
contentClause : mapNullable ( verb . contentClause , fixClause ) ,
213
213
object : mapNullable ( verb . object , fixNounPhrase ) ,
214
214
objectComplement : mapNullable ( verb . objectComplement , fixComplement ) ,
215
- prepositions : verb . prepositions . map ( fixPreposition ) ,
215
+ prepositions : fixMultiplePrepositions ( verb . prepositions ) ,
216
216
} ;
217
217
case "compound" :
218
218
return {
219
219
...verb ,
220
220
verbs : verb . verbs . map ( fixVerbPhrase ) ,
221
221
object : mapNullable ( verb . object , fixNounPhrase ) ,
222
222
objectComplement : mapNullable ( verb . objectComplement , fixComplement ) ,
223
- prepositions : verb . prepositions . map ( fixPreposition ) ,
223
+ prepositions : fixMultiplePrepositions ( verb . prepositions ) ,
224
224
} ;
225
225
}
226
226
}
@@ -245,6 +245,18 @@ function fixPreposition(
245
245
object : fixNounPhrase ( preposition . object ) ,
246
246
} ;
247
247
}
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
+ }
248
260
function fixClause ( clause : English . Clause ) : English . Clause {
249
261
switch ( clause . type ) {
250
262
case "simple" :
0 commit comments