mirror of
https://github.com/anoma/juvix.git
synced 2024-09-11 16:26:33 +03:00
Use Interval in GenericError (#125)
This commit is contained in:
parent
a4eb2124b2
commit
58534b8240
@ -12,6 +12,9 @@
|
||||
:error-patterns
|
||||
(
|
||||
(error line-start (file-name) ":" line ":" column ": error:" (message (one-or-more (not "ת"))))
|
||||
(error line-start (file-name) ":" line ":" column "-" end-column ": error:" (message (one-or-more (not "ת"))))
|
||||
(error line-start (file-name) ":" line "-" end-line ":" column ": error:" (message (one-or-more (not "ת"))))
|
||||
(error line-start (file-name) ":" line "-" end-line ":" column "-" end-column ": error:" (message (one-or-more (not "ת"))))
|
||||
)
|
||||
:modes minijuvix-mode
|
||||
)
|
||||
|
@ -11,8 +11,7 @@ import Prettyprinter.Render.Text
|
||||
import System.Console.ANSI qualified as Ansi
|
||||
|
||||
data GenericError = GenericError
|
||||
{ _genericErrorLoc :: Loc,
|
||||
_genericErrorFile :: FilePath,
|
||||
{ _genericErrorLoc :: Interval,
|
||||
_genericErrorMessage :: AnsiText,
|
||||
_genericErrorIntervals :: [Interval]
|
||||
}
|
||||
@ -21,18 +20,17 @@ makeLenses ''GenericError
|
||||
|
||||
instance Pretty GenericError where
|
||||
pretty :: GenericError -> Doc a
|
||||
pretty g =
|
||||
let lineNum = g ^. genericErrorLoc . locFileLoc . locLine
|
||||
colNum = g ^. genericErrorLoc . locFileLoc . locCol
|
||||
in pretty (g ^. genericErrorFile)
|
||||
<> colon
|
||||
<> pretty lineNum
|
||||
<> colon
|
||||
<> pretty colNum
|
||||
<> colon <+> "error"
|
||||
<> colon
|
||||
<> line
|
||||
<> pretty (g ^. genericErrorMessage)
|
||||
pretty g = genericErrorHeader g <> pretty (g ^. genericErrorMessage)
|
||||
|
||||
instance HasLoc GenericError where
|
||||
getLoc = (^. genericErrorLoc)
|
||||
|
||||
genericErrorHeader :: GenericError -> Doc a
|
||||
genericErrorHeader g =
|
||||
pretty (g ^. genericErrorLoc)
|
||||
<> colon <+> "error"
|
||||
<> colon
|
||||
<> line
|
||||
|
||||
class ToGenericError a where
|
||||
genericError :: a -> GenericError
|
||||
@ -49,19 +47,8 @@ render ansi err
|
||||
helper f x = (f . layoutPretty defaultLayoutOptions) (header <> x <> endChar)
|
||||
g :: GenericError
|
||||
g = genericError err
|
||||
|
||||
header :: Doc a
|
||||
header =
|
||||
let lineNum = g ^. genericErrorLoc . locFileLoc . locLine
|
||||
colNum = g ^. genericErrorLoc . locFileLoc . locCol
|
||||
in pretty (g ^. genericErrorFile)
|
||||
<> colon
|
||||
<> pretty lineNum
|
||||
<> colon
|
||||
<> pretty colNum
|
||||
<> colon <+> "error"
|
||||
<> colon
|
||||
<> line
|
||||
header = genericErrorHeader g
|
||||
endChar :: Doc a
|
||||
endChar = "ת"
|
||||
|
||||
|
@ -13,8 +13,7 @@ newtype ParserError = ParserError
|
||||
instance ToGenericError ParserError where
|
||||
genericError e =
|
||||
GenericError
|
||||
{ _genericErrorLoc = intervalStartLoc i,
|
||||
_genericErrorFile = i ^. intervalFile,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = AnsiText $ pretty @_ @AnsiStyle e,
|
||||
_genericErrorIntervals = [i]
|
||||
}
|
||||
|
@ -28,8 +28,7 @@ data MultipleDeclarations = MultipleDeclarations
|
||||
instance ToGenericError MultipleDeclarations where
|
||||
genericError MultipleDeclarations {..} =
|
||||
GenericError
|
||||
{ _genericErrorFile = _multipleDeclSecond ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i1,
|
||||
{ _genericErrorLoc = i1,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i1, _multipleDeclSecond]
|
||||
}
|
||||
@ -50,8 +49,7 @@ newtype InfixError = InfixError
|
||||
instance ToGenericError InfixError where
|
||||
genericError InfixError {..} =
|
||||
GenericError
|
||||
{ _genericErrorFile = i ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i]
|
||||
}
|
||||
@ -72,8 +70,7 @@ newtype InfixErrorP = InfixErrorP
|
||||
instance ToGenericError InfixErrorP where
|
||||
genericError InfixErrorP {..} =
|
||||
GenericError
|
||||
{ _genericErrorFile = i ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i]
|
||||
}
|
||||
@ -94,8 +91,7 @@ newtype LacksTypeSig = LacksTypeSig
|
||||
instance ToGenericError LacksTypeSig where
|
||||
genericError LacksTypeSig {..} =
|
||||
GenericError
|
||||
{ _genericErrorFile = i ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i]
|
||||
}
|
||||
@ -115,8 +111,7 @@ newtype LacksFunctionClause = LacksFunctionClause
|
||||
instance ToGenericError LacksFunctionClause where
|
||||
genericError LacksFunctionClause {..} =
|
||||
GenericError
|
||||
{ _genericErrorFile = i ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i]
|
||||
}
|
||||
@ -136,8 +131,7 @@ newtype ImportCycle = ImportCycle
|
||||
instance ToGenericError ImportCycle where
|
||||
genericError ImportCycle {..} =
|
||||
GenericError
|
||||
{ _genericErrorFile = i ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i]
|
||||
}
|
||||
@ -162,8 +156,7 @@ newtype QualSymNotInScope = QualSymNotInScope
|
||||
instance ToGenericError QualSymNotInScope where
|
||||
genericError QualSymNotInScope {..} =
|
||||
GenericError
|
||||
{ _genericErrorFile = i ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i]
|
||||
}
|
||||
@ -180,8 +173,7 @@ data BindGroupConflict = BindGroupConflict
|
||||
instance ToGenericError BindGroupConflict where
|
||||
genericError BindGroupConflict {..} =
|
||||
GenericError
|
||||
{ _genericErrorFile = i2 ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i2,
|
||||
{ _genericErrorLoc = i2,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i1, i2]
|
||||
}
|
||||
@ -204,8 +196,7 @@ data DuplicateFixity = DuplicateFixity
|
||||
instance ToGenericError DuplicateFixity where
|
||||
genericError DuplicateFixity {..} =
|
||||
GenericError
|
||||
{ _genericErrorFile = i2 ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i2,
|
||||
{ _genericErrorLoc = i2,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i1, i2]
|
||||
}
|
||||
@ -233,8 +224,7 @@ data MultipleExportConflict = MultipleExportConflict
|
||||
instance ToGenericError MultipleExportConflict where
|
||||
genericError MultipleExportConflict {..} =
|
||||
GenericError
|
||||
{ _genericErrorFile = i ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i]
|
||||
}
|
||||
@ -257,8 +247,7 @@ makeLenses ''NotInScope
|
||||
instance ToGenericError NotInScope where
|
||||
genericError e@NotInScope {..} =
|
||||
GenericError
|
||||
{ _genericErrorFile = e ^. notInScopeSymbol . symbolLoc . intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc (e ^. notInScopeSymbol . symbolLoc),
|
||||
{ _genericErrorLoc = (e ^. notInScopeSymbol . symbolLoc),
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [e ^. notInScopeSymbol . symbolLoc]
|
||||
}
|
||||
@ -298,8 +287,7 @@ makeLenses ''ModuleNotInScope
|
||||
instance ToGenericError ModuleNotInScope where
|
||||
genericError e@ModuleNotInScope {..} =
|
||||
GenericError
|
||||
{ _genericErrorFile = i ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i]
|
||||
}
|
||||
@ -323,8 +311,7 @@ newtype UnusedOperatorDef = UnusedOperatorDef
|
||||
instance ToGenericError UnusedOperatorDef where
|
||||
genericError UnusedOperatorDef {..} =
|
||||
GenericError
|
||||
{ _genericErrorFile = i ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i]
|
||||
}
|
||||
@ -344,8 +331,7 @@ data WrongTopModuleName = WrongTopModuleName
|
||||
instance ToGenericError WrongTopModuleName where
|
||||
genericError WrongTopModuleName {..} =
|
||||
GenericError
|
||||
{ _genericErrorFile = i ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i]
|
||||
}
|
||||
@ -370,8 +356,7 @@ data AmbiguousSym = AmbiguousSym
|
||||
instance ToGenericError AmbiguousSym where
|
||||
genericError AmbiguousSym {..} =
|
||||
GenericError
|
||||
{ _genericErrorFile = i ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = i : is
|
||||
}
|
||||
@ -389,8 +374,7 @@ data AmbiguousModuleSym = AmbiguousModuleSym
|
||||
instance ToGenericError AmbiguousModuleSym where
|
||||
genericError AmbiguousModuleSym {..} =
|
||||
GenericError
|
||||
{ _genericErrorFile = i ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = i : is
|
||||
}
|
||||
@ -408,8 +392,7 @@ data WrongLocationCompileBlock = WrongLocationCompileBlock
|
||||
instance ToGenericError WrongLocationCompileBlock where
|
||||
genericError WrongLocationCompileBlock {..} =
|
||||
GenericError
|
||||
{ _genericErrorFile = i ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i]
|
||||
}
|
||||
@ -431,8 +414,7 @@ data MultipleCompileBlockSameName = MultipleCompileBlockSameName
|
||||
instance ToGenericError MultipleCompileBlockSameName where
|
||||
genericError MultipleCompileBlockSameName {..} =
|
||||
GenericError
|
||||
{ _genericErrorFile = i2 ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i2,
|
||||
{ _genericErrorLoc = i2,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i1, i2]
|
||||
}
|
||||
@ -452,8 +434,7 @@ data MultipleCompileRuleSameBackend = MultipleCompileRuleSameBackend
|
||||
instance ToGenericError MultipleCompileRuleSameBackend where
|
||||
genericError MultipleCompileRuleSameBackend {..} =
|
||||
GenericError
|
||||
{ _genericErrorFile = i ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i]
|
||||
}
|
||||
@ -477,8 +458,7 @@ data WrongKindExpressionCompileBlock = WrongKindExpressionCompileBlock
|
||||
instance ToGenericError WrongKindExpressionCompileBlock where
|
||||
genericError WrongKindExpressionCompileBlock {..} =
|
||||
GenericError
|
||||
{ _genericErrorFile = i ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i]
|
||||
}
|
||||
|
@ -20,8 +20,7 @@ makeLenses ''WrongConstructorType
|
||||
instance ToGenericError WrongConstructorType where
|
||||
genericError e =
|
||||
GenericError
|
||||
{ _genericErrorFile = i ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i]
|
||||
}
|
||||
@ -50,8 +49,7 @@ makeLenses ''WrongConstructorAppArgs
|
||||
instance ToGenericError WrongConstructorAppArgs where
|
||||
genericError e =
|
||||
GenericError
|
||||
{ _genericErrorFile = i ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i]
|
||||
}
|
||||
@ -89,8 +87,7 @@ makeLenses ''WrongType
|
||||
instance ToGenericError WrongType where
|
||||
genericError e =
|
||||
GenericError
|
||||
{ _genericErrorFile = i ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i]
|
||||
}
|
||||
@ -124,8 +121,7 @@ makeLenses ''ExpectedFunctionType
|
||||
instance ToGenericError ExpectedFunctionType where
|
||||
genericError e =
|
||||
GenericError
|
||||
{ _genericErrorFile = i ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i]
|
||||
}
|
||||
@ -156,8 +152,7 @@ makeLenses ''TooManyPatterns
|
||||
instance ToGenericError TooManyPatterns where
|
||||
genericError e =
|
||||
GenericError
|
||||
{ _genericErrorFile = i ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i]
|
||||
}
|
||||
|
@ -16,8 +16,7 @@ makeLenses 'NoLexOrder
|
||||
instance ToGenericError NoLexOrder where
|
||||
genericError NoLexOrder {..} =
|
||||
GenericError
|
||||
{ _genericErrorFile = i ^. intervalFile,
|
||||
_genericErrorLoc = intervalStartLoc i,
|
||||
{ _genericErrorLoc = i,
|
||||
_genericErrorMessage = prettyError msg,
|
||||
_genericErrorIntervals = [i]
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user