File tree Expand file tree Collapse file tree 1 file changed +21
-2
lines changed
typescript/src/completions Expand file tree Collapse file tree 1 file changed +21
-2
lines changed Original file line number Diff line number Diff line change @@ -103,11 +103,30 @@ const isStringCompletion = (type: ts.Type) => {
103103 return false
104104}
105105
106- const isBooleanCompletion = ( type : ts . Type ) => {
106+ const isBooleanCompletion = ( type : ts . Type , checker : ts . TypeChecker ) => {
107107 if ( type . flags & ts . TypeFlags . Undefined ) return false
108108 // todo support boolean literals (boolean like)
109109 if ( type . flags & ts . TypeFlags . Boolean ) return true
110- if ( type . isUnion ( ) ) return isEverySubtype ( type , type => isBooleanCompletion ( type ) )
110+ const trueType = ( checker as unknown as FullChecker ) . getTrueType ( )
111+ const falseType = ( checker as unknown as FullChecker ) . getFalseType ( )
112+ let seenTrueType = false
113+ let seenFalseType = false
114+ if ( type . isUnion ( ) ) {
115+ const match = isEverySubtype ( type , type => {
116+ if ( ! ! ( type . flags & ts . TypeFlags . Boolean ) ) return true
117+ if ( type === trueType ) {
118+ seenTrueType = true
119+ return true
120+ }
121+ if ( type === falseType ) {
122+ seenFalseType = true
123+ return true
124+ }
125+ return false
126+ } )
127+ if ( seenFalseType !== seenTrueType ) return false
128+ return match
129+ }
111130 return false
112131}
113132
You can’t perform that action at this time.
0 commit comments