1
1
mirror of https://github.com/anoma/juvix.git synced 2024-08-17 20:20:23 +03:00

Use Interval in GenericError (#125)

This commit is contained in:
janmasrovira 2022-05-27 01:27:19 +02:00 committed by GitHub
parent a4eb2124b2
commit 58534b8240
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 43 additions and 80 deletions

View File

@ -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
)

View File

@ -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 = "ת"

View File

@ -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]
}

View File

@ -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]
}

View File

@ -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]
}

View File

@ -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]
}