# `reify` doesn't find associated type families

Template Haskell's `reify`

doesn't find the the associated type families of a type class. Consider the following two classes:

```
class C a where
f :: a -> Int
class C' a where
type F a :: *
f' :: a -> Int
```

These produce identical, up to renaming, output when passed to `reify`

:

```
-- putStrLn $(stringE . show =<< reify ''C)
ClassI (ClassD [] Ghci1.C [PlainTV a_1627398388] []
[SigD Ghci1.f
(ForallT [PlainTV a_1627398388]
[ClassP Ghci1.C [VarT a_1627398388]]
(AppT (AppT ArrowT (VarT a_1627398388))
(ConT GHC.Types.Int)))])
[]
-- putStrLn $(stringE . show =<< reify ''C')
ClassI (ClassD [] Ghci3.C' [PlainTV a_1627405973] []
[SigD Ghci3.f'
(ForallT [PlainTV a_1627405973]
[ClassP Ghci3.C' [VarT a_1627405973]]
(AppT (AppT ArrowT (VarT a_1627405973))
(ConT GHC.Types.Int)))])
[]
```

If I know the name of `F`

, I can look up information about it:

```
-- putStrLn $(stringE . show =<< reify ''F)
FamilyI (FamilyD TypeFam
Ghci3.F
[PlainTV a_1627405973]
(Just StarT))
[]
```

But I can't find the name of `F`

in the first place. Even if I add an instance of the type class, the `InstanceD`

has none of the information about the definition. Given

```
instance C' [a] where
type F [a] = a
f' = length
```

we get

```
-- putStrLn $(stringE . show =<< reify ''C')
ClassI (ClassD [] Ghci3.C' [PlainTV a_1627405973] []
[SigD Ghci3.f'
(ForallT [PlainTV a_1627405973]
[ClassP Ghci3.C' [VarT a_1627405973]]
(AppT (AppT ArrowT (VarT a_1627405973))
(ConT GHC.Types.Int)))])
[InstanceD []
(AppT (ConT Ghci3.C')
(AppT ListT (VarT a_1627406161)))
[]]
```

This problem was confirmed to exist in the following configurations:

- GHC 7.10.2 with version 2.10.0.0 of the template-haskell package.
- GHC 7.8.3 with version 2.9.0.0 of the template-haskell package.
- GHC 7.4.2 with version 2.7.0.0 of the template-haskell package.

(I also posted this on Stack Overflow in //2013//, where it has been languishing ever since: http://stackoverflow.com/q/17247880/237428.)