(t *Type, candidate *Type, assumeTrue bool, checkDerived bool)
| 831 | } |
| 832 | |
| 833 | func (c *Checker) getNarrowedType(t *Type, candidate *Type, assumeTrue bool, checkDerived bool) *Type { |
| 834 | if t.flags&TypeFlagsUnion == 0 { |
| 835 | return c.getNarrowedTypeWorker(t, candidate, assumeTrue, checkDerived) |
| 836 | } |
| 837 | key := NarrowedTypeKey{t, candidate, assumeTrue, checkDerived} |
| 838 | if narrowedType, ok := c.narrowedTypes[key]; ok { |
| 839 | return narrowedType |
| 840 | } |
| 841 | narrowedType := c.getNarrowedTypeWorker(t, candidate, assumeTrue, checkDerived) |
| 842 | c.narrowedTypes[key] = narrowedType |
| 843 | return narrowedType |
| 844 | } |
| 845 | |
| 846 | func (c *Checker) getNarrowedTypeWorker(t *Type, candidate *Type, assumeTrue bool, checkDerived bool) *Type { |
| 847 | if !assumeTrue { |
no test coverage detected