@@ -298,17 +298,19 @@ parseInstanceChainSeparator =
298
298
parseInstance :: Parser (Recovered Instance )
299
299
parseInstance = do
300
300
keyword <- tokKeyword " instance"
301
- name <- parseIdent
302
- separator <- tokDoubleColon
301
+ name <- optional parseInstanceName
303
302
constraints <- optional $ try $ Tuple <$> parseClassConstraints parseType3 <*> tokRightFatArrow
304
303
className <- parseQualifiedProper
305
304
types <- many parseTypeAtom
306
305
body <- optional $ Tuple <$> tokKeyword " where" <*> layoutNonEmpty parseInstanceBinding
307
306
pure $ Instance
308
- { head: { keyword, name, separator, constraints, className, types }
307
+ { head: { keyword, name, constraints, className, types }
309
308
, body
310
309
}
311
310
311
+ parseInstanceName :: Parser (Tuple (Name Ident ) SourceToken )
312
+ parseInstanceName = Tuple <$> parseIdent <*> tokDoubleColon
313
+
312
314
parseInstanceBinding :: Parser (Recovered InstanceBinding )
313
315
parseInstanceBinding = do
314
316
ident <- parseIdent
@@ -332,12 +334,11 @@ parseDeclDerive = do
332
334
derive_ <- tokKeyword " derive"
333
335
newtype_ <- optional $ tokKeyword " newtype"
334
336
keyword <- tokKeyword " instance"
335
- name <- parseIdent
336
- separator <- tokDoubleColon
337
+ name <- optional parseInstanceName
337
338
constraints <- optional $ try $ Tuple <$> parseClassConstraints parseType3 <*> tokRightFatArrow
338
339
className <- parseQualifiedProper
339
340
types <- many parseTypeAtom
340
- pure $ DeclDerive derive_ newtype_ { keyword, name, separator, constraints, className, types }
341
+ pure $ DeclDerive derive_ newtype_ { keyword, name, constraints, className, types }
341
342
342
343
parseDeclValue :: Parser (Recovered Declaration )
343
344
parseDeclValue = do
0 commit comments