@@ -9,10 +9,10 @@ import { ExhaustedError, FilteredError } from "./error.ts";
99import { CONJUNCTION } from "./misc.ts" ;
1010import {
1111 adjectivalIsNone ,
12- AdjectivalModifier ,
12+ AdjectivalModifier , adverbialIsNone ,
1313 AdverbialModifier ,
1414 multipleModifiers ,
15- } from " ./modifier.ts" ;
15+ } from ' ./modifier.ts'
1616import { nounAsPreposition , preposition } from "./preposition.ts" ;
1717import { wordUnit } from "./word_unit.ts" ;
1818
@@ -273,7 +273,7 @@ function preverb(
273273 return { ...verb , subjectComplement, emphasis } ;
274274 } else if ( verb . predicateType === "verb" ) {
275275 const predicateAsVerb = phraseAsVerb ( predicate ) ;
276- if ( predicateAsVerb . type === "simple" ) {
276+ if ( predicateAsVerb != null && predicateAsVerb . type === "simple" ) {
277277 const first = predicateAsVerb . verb [ 0 ] ;
278278 // TODO: filter out modal verb when found in the middle
279279 const verbForPreverb : English . AdverbVerb = {
@@ -327,7 +327,7 @@ export function phrase(
327327}
328328export function phraseAsVerb (
329329 phrase : PhraseTranslation ,
330- ) : English . VerbPhrase {
330+ ) : null | English . VerbPhrase {
331331 // TODO: on grammar fixer, extract noun and adjective negative modifier and put it on the verb
332332 switch ( phrase . type ) {
333333 case "noun" :
@@ -336,11 +336,15 @@ export function phraseAsVerb(
336336 let inWayPhrase : null | English . AdjectivePhrase ;
337337 switch ( phrase . type ) {
338338 case "noun" : {
339- inWayPhrase = null ;
340- subjectComplement = {
341- type : "noun" ,
342- noun : phrase . noun ,
343- } ;
339+ if ( adverbialIsNone ( phrase . adverbialModifier ) ) {
340+ inWayPhrase = null ;
341+ subjectComplement = {
342+ type : "noun" ,
343+ noun : phrase . noun ,
344+ } ;
345+ } else {
346+ return null ;
347+ }
344348 break ;
345349 }
346350 case "adjective" : {
@@ -450,17 +454,22 @@ export function multiplePhrases(
450454 } ;
451455 }
452456 } else {
453- return {
454- type : "verb" ,
455- verb : {
456- type : "compound" ,
457- conjunction,
458- verbs : phrase . map ( phraseAsVerb ) ,
459- object : null ,
460- objectComplement : null ,
461- prepositions : [ ] ,
462- } ,
463- } ;
457+ const verbs = phrase . map ( phraseAsVerb ) ;
458+ if ( verbs . every ( ( verb ) => verb != null ) ) {
459+ return {
460+ type : "verb" ,
461+ verb : {
462+ type : "compound" ,
463+ conjunction,
464+ verbs,
465+ object : null ,
466+ objectComplement : null ,
467+ prepositions : [ ] ,
468+ } ,
469+ } ;
470+ } else {
471+ return null ;
472+ }
464473 }
465474 } )
466475 . addErrorWhenNone ( ( ) =>
0 commit comments