git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Merge pull request #1163 from mjgpy3/1142_extra_type_class_member_error
2c43ca9Phil Freeman
src/Language/PureScript/Errors.hs+4
@@ -107,6 +107,7 @@ data SimpleErrorMessage
107 | ArgListLengthsDiffer Ident
107 | ArgListLengthsDiffer Ident
108 | OverlappingArgNames (Maybe Ident)
108 | OverlappingArgNames (Maybe Ident)
109 | MissingClassMember Ident
109 | MissingClassMember Ident
110+ | ExtraneousClassMember Ident
110 | ExpectedType Kind
111 | ExpectedType Kind
111 | IncorrectConstructorArity (Qualified ProperName)
112 | IncorrectConstructorArity (Qualified ProperName)
112 | SubsumptionCheckFailed
113 | SubsumptionCheckFailed
@@ -215,6 +216,7 @@ errorCode em = case unwrapErrorMessage em of
215 (ArgListLengthsDiffer _) -> "ArgListLengthsDiffer"
216 (ArgListLengthsDiffer _) -> "ArgListLengthsDiffer"
216 (OverlappingArgNames _) -> "OverlappingArgNames"
217 (OverlappingArgNames _) -> "OverlappingArgNames"
217 (MissingClassMember _) -> "MissingClassMember"
218 (MissingClassMember _) -> "MissingClassMember"
219+ (ExtraneousClassMember _) -> "ExtraneousClassMember"
218 (ExpectedType _) -> "ExpectedType"
220 (ExpectedType _) -> "ExpectedType"
219 (IncorrectConstructorArity _) -> "IncorrectConstructorArity"
221 (IncorrectConstructorArity _) -> "IncorrectConstructorArity"
220 SubsumptionCheckFailed -> "SubsumptionCheckFailed"
222 SubsumptionCheckFailed -> "SubsumptionCheckFailed"
@@ -513,6 +515,8 @@ prettyPrintSingleError full e = prettyPrintErrorMessage <$> onTypesInErrorMessag
513 line $ "Overlapping names in function/binder" ++ foldMap ((" in declaration" ++) . show) ident
515 line $ "Overlapping names in function/binder" ++ foldMap ((" in declaration" ++) . show) ident
514 goSimple (MissingClassMember ident) =
516 goSimple (MissingClassMember ident) =
515 line $ "Member " ++ show ident ++ " has not been implemented"
517 line $ "Member " ++ show ident ++ " has not been implemented"
518+ goSimple (ExtraneousClassMember ident) =
519+ line $ "Member " ++ show ident ++ " is not a member of the class being instantiated"
516 goSimple (ExpectedType kind) =
520 goSimple (ExpectedType kind) =
517 line $ "Expected type of kind *, was " ++ prettyPrintKind kind
521 line $ "Expected type of kind *, was " ++ prettyPrintKind kind
518 goSimple (IncorrectConstructorArity nm) =
522 goSimple (IncorrectConstructorArity nm) =
src/Language/PureScript/Sugar/TypeClasses.hs+1−1
@@ -277,7 +277,7 @@ typeInstanceDictionaryDeclaration name mn deps className tys decls =
277
277
278 memberToValue :: (Functor m, Applicative m, MonadSupply m, MonadError MultipleErrors m) => [(Ident, Type)] -> Declaration -> Desugar m Expr
278 memberToValue :: (Functor m, Applicative m, MonadSupply m, MonadError MultipleErrors m) => [(Ident, Type)] -> Declaration -> Desugar m Expr
279 memberToValue tys' (ValueDeclaration ident _ [] (Right val)) = do
279 memberToValue tys' (ValueDeclaration ident _ [] (Right val)) = do
280− _ <- maybe (throwError . errorMessage $ MissingClassMember ident) return $ lookup ident tys'
280+ _ <- maybe (throwError . errorMessage $ ExtraneousClassMember ident) return $ lookup ident tys'
281 return val
281 return val
282 memberToValue tys' (PositionedDeclaration pos com d) = rethrowWithPosition pos $ do
282 memberToValue tys' (PositionedDeclaration pos com d) = rethrowWithPosition pos $ do
283 val <- memberToValue tys' d
283 val <- memberToValue tys' d