haskell-tools-builtin-refactorings-1.0.1.1: Language/Haskell/Tools/Refactor/Builtin/ExtensionOrganizer/Checkers/OverloadedStringsChecker.hs
module Language.Haskell.Tools.Refactor.Builtin.ExtensionOrganizer.Checkers.OverloadedStringsChecker where
import Type as GHC (eqType)
import TysWiredIn as GHC (stringTy)
import Control.Reference ((^.))
import Language.Haskell.Tools.AST
import Language.Haskell.Tools.Refactor
import Language.Haskell.Tools.Refactor.Builtin.ExtensionOrganizer.ExtMonad
chkOverloadedStringsLiteral :: CheckNode Literal
chkOverloadedStringsLiteral = conditional chkLit OverloadedStrings
where chkLit :: CheckNode Literal
chkLit lit
| UStringLit _ <- lit ^. element
, not . GHC.eqType GHC.stringTy $ semanticsLiteralType lit
= addOccurence OverloadedStrings lit
| otherwise = return lit