What's the effect of imposing the following restriction on inductive type families?
This is not a real restriction to the power of the language

First, it is possible to turn all indices of the type family into variables by adding extra arguments to the constructor expressing the constraints. For example, Test can be turned into

data Test a where
  Foo :: Integer -&gt; a = Color -&gt; Test a
  Bar :: Float   -&gt; a = Sign -&gt; Test a


Second, you can define your own version of the propositional equality as an inductive family and use that instead of the built-in one.

data Eq :: * -&gt; * -&gt; * where
  Refl :: Eq a a


This definition follows your restrictions, but it won't be detected as being 'the' identity type. (In case you want to build in some kind of detection for identity-like types, I'd guess that the property of being identity-like may well be undecidable.) So there is nothing that you can do without your restriction that you couldn't do with it in a (somewhat) more complicated way.