@@ -330,12 +330,13 @@ findSigOfBinds range = go
330
330
findSigOfBind range (unLoc lHsBindLR)
331
331
go _ = Nothing
332
332
333
- findInstanceHead :: (Outputable (HsType p ), p ~ GhcPass p0 ) => DynFlags -> String -> [LHsDecl p ] -> Maybe (LHsType p )
334
- findInstanceHead df instanceHead decls =
333
+ findInstanceHead :: (Outputable (HsType p ), p ~ GhcPass p0 ) => DynFlags -> Range -> [LHsDecl p ] -> Maybe (LHsType p )
334
+ findInstanceHead df diagnosticLocation decls =
335
335
listToMaybe
336
336
[ hsib_body
337
- | L _ (InstD _ (ClsInstD _ ClsInstDecl {cid_poly_ty = (unLoc -> HsSig {sig_body = hsib_body})})) <- decls,
338
- showSDoc df (ppr hsib_body) == instanceHead
337
+ | L (locA -> instanceLocation) (InstD _ (ClsInstD _ ClsInstDecl {cid_poly_ty = (unLoc -> HsSig {sig_body = hsib_body})})) <- decls
338
+ , Just instanceRange <- [srcSpanToRange instanceLocation]
339
+ , (subRange diagnosticLocation instanceRange)
339
340
]
340
341
341
342
findDeclContainingLoc :: Foldable t => Position -> t (GenLocated (SrcSpanAnn' a ) e ) -> Maybe (GenLocated (SrcSpanAnn' a ) e )
@@ -1250,8 +1251,7 @@ suggestInstanceConstraint df (L _ HsModule {hsmodDecls}) Diagnostic {..} missing
1250
1251
-- • In the expression: x == y
1251
1252
-- In an equation for ‘==’: (Wrap x) == (Wrap y) = x == y
1252
1253
-- In the instance declaration for ‘Eq (Wrap a)’
1253
- | Just [instanceDeclaration] <- matchRegexUnifySpaces _message " In the instance declaration for ‘([^`]*)’"
1254
- , Just instHead <- findInstanceHead df (T. unpack instanceDeclaration) hsmodDecls
1254
+ | Just instHead <- findInstanceHead df _range hsmodDecls
1255
1255
= Just instHead
1256
1256
-- Suggests a constraint for an instance declaration with one or more existing constraints.
1257
1257
-- • Could not deduce (Eq b) arising from a use of ‘==’
0 commit comments