Currently in GHC changing the fixity of a term-level operator, such as (+) also changes the fixity of the corresponding type-level operator. We could have different fixities for the term-level (+) than the type level (+), but it would be confusing!

So rather than les tyou specify different fixities for each, as your patch implies, I think it'd be better simply to make infixr 2 ? work even when there is only a type-level (?) in scope.

Paolo might you look at this? (It in the renamer, not a big deal I think.)

The implementation of dataTcOccs in the above commit is slightly different from that of the patch, since we have to avoid generating two results when looking up something which is already in the TcClsName namespace, as can happen using :info in GHCi (testcase ghci020 would break).