When a function is defined in infix syntax, haskell-definition-face applies to the function name. So in the following, op will bear the definition face.
However, haskell-definition-face will fail to be assigned when an as-pattern precedes the function name. So, op below receives haskell-operator-face.
foo@Nothing `op` bar = undefined