@@ -95,18 +95,27 @@ separatedDecls
9595 -> HsDecl GhcPs
9696 -> Bool
9797separatedDecls (TypeSignature n) (FunctionBody n') = n /= n'
98−separatedDecls (FunctionBody n) (InlinePragma n') = n /= n'
99−separatedDecls (InlinePragma n) (TypeSignature n') = n /= n'
100−separatedDecls (FunctionBody n) (SpecializePragma n') = n /= n'
101−separatedDecls (SpecializePragma n) (TypeSignature n') = n /= n'
102−separatedDecls (SpecializePragma n) (SpecializePragma n') = n /= n'
98+separatedDecls (FunctionBody n) x | Just n' <- isPragma x = n /= n'
99+separatedDecls x y | Just n <- isPragma x, Just n' <- isPragma y = n /= n'
100+separatedDecls x (TypeSignature n') | Just n <- isPragma x = n /= n'
103101separatedDecls _ _ = True
104102
103+isPragma
104+ :: HsDecl GhcPs
105+ -> (Maybe RdrName)
106+isPragma = \case
107+ InlinePragma n -> Just n
108+ SpecializePragma n -> Just n
109+ SCCPragma n -> Just n
110+ _ -> Nothing
111+
105112pattern TypeSignature
106113 , FunctionBody
107114 , InlinePragma
108− , SpecializePragma :: RdrName -> HsDecl GhcPs
115+ , SpecializePragma
116+ , SCCPragma :: RdrName -> HsDecl GhcPs
109117pattern TypeSignature n <- SigD NoExt (TypeSig NoExt ((L _ n):_) _)
110118pattern FunctionBody n <- ValD NoExt (FunBind NoExt (L _ n) _ _ _)
111119pattern InlinePragma n <- SigD NoExt (InlineSig NoExt (L _ n) _)
112120pattern SpecializePragma n <- SigD NoExt (SpecSig NoExt (L _ n) _ _)
121+pattern SCCPragma n <- SigD NoExt (SCCFunSig NoExt _ (L _ n) _)