@@ -54,10 +54,10 @@ throwNamingError = either (Left . NamingError) return
5454
5555-- TODO(bladyjoker): Revisit and make part of compiler.proto
5656data ProtoError
57- = MultipleInstanceHeads ClassName [Ty ] SourceInfo
58- | NoInstanceHead ClassName SourceInfo
59- | NoConstraintArgs ClassName SourceInfo
60- | MultipleConstraintArgs ClassName [Ty ] SourceInfo
57+ = MultipleInstanceHeads TyClassRef [Ty ] SourceInfo
58+ | NoInstanceHead TyClassRef SourceInfo
59+ | NoConstraintArgs TyClassRef SourceInfo
60+ | MultipleConstraintArgs TyClassRef [Ty ] SourceInfo
6161 | NoClassArgs ClassName SourceInfo
6262 | MultipleClassArgs ClassName SourceInfo
6363 | NoTyAppArgs SourceInfo
@@ -387,6 +387,41 @@ instance IsMessage P.Product'Record'Field Field where
387387 Classes, instances, constraints
388388-}
389389
390+ instance IsMessage P. TyClassRef'Local LocalClassRef where
391+ fromProto lr = do
392+ si <- fromProto $ lr ^. P. sourceInfo
393+ nm <- fromProto $ lr ^. P. className
394+ pure $ LocalClassRef nm si
395+
396+ toProto (LocalClassRef nm si) =
397+ defMessage
398+ & P. className .~ toProto nm
399+ & P. sourceInfo .~ toProto si
400+
401+ instance IsMessage P. TyClassRef'Foreign ForeignClassRef where
402+ fromProto fr = do
403+ si <- fromProto $ fr ^. P. sourceInfo
404+ mn <- fromProto $ fr ^. P. moduleName
405+ tn <- fromProto $ fr ^. P. className
406+ pure $ ForeignClassRef tn mn si
407+
408+ toProto (ForeignClassRef tn mn si) =
409+ defMessage
410+ & P. className .~ toProto tn
411+ & P. moduleName .~ toProto mn
412+ & P. sourceInfo .~ toProto si
413+
414+ instance IsMessage P. TyClassRef TyClassRef where
415+ fromProto tr = case tr ^. P. maybe'classRef of
416+ Nothing -> throwProtoError $ OneOfNotSet " class_ref"
417+ Just x -> case x of
418+ P. TyClassRef'LocalClassRef lr -> LocalCI <$> fromProto lr
419+ P. TyClassRef'ForeignClassRef f -> ForeignCI <$> fromProto f
420+
421+ toProto = \ case
422+ LocalCI lr -> defMessage & P. localClassRef .~ toProto lr
423+ ForeignCI fr -> defMessage & P. foreignClassRef .~ toProto fr
424+
390425instance IsMessage P. ClassDef ClassDef where
391426 fromProto cd = do
392427 si <- fromProto $ cd ^. P. sourceInfo
@@ -411,7 +446,7 @@ instance IsMessage P.ClassDef ClassDef where
411446instance IsMessage P. InstanceClause InstanceClause where
412447 fromProto ic = do
413448 si <- fromProto $ ic ^. P. sourceInfo
414- cnm <- fromProto $ ic ^. P. className
449+ cnm <- fromProto $ ic ^. P. classRef
415450 csts <- traverse fromProto $ ic ^. P. constraints
416451 hds <- ic ^. (P. heads . traversing fromProto)
417452 hd <- case hds of
@@ -422,15 +457,15 @@ instance IsMessage P.InstanceClause InstanceClause where
422457
423458 toProto (InstanceClause cnm hd csts si) =
424459 defMessage
425- & P. className .~ toProto cnm
460+ & P. classRef .~ toProto cnm
426461 & P. heads .~ pure (toProto hd)
427462 & P. constraints .~ (toProto <$> csts)
428463 & P. sourceInfo .~ toProto si
429464
430465instance IsMessage P. Constraint Constraint where
431466 fromProto c = do
432467 si <- fromProto $ c ^. P. sourceInfo
433- cnm <- fromProto $ c ^. P. className
468+ cnm <- fromProto $ c ^. P. classRef
434469 args <- c ^. (P. arguments . traversing fromProto)
435470 arg <- case args of
436471 [] -> throwProtoError $ NoConstraintArgs cnm si
@@ -440,7 +475,7 @@ instance IsMessage P.Constraint Constraint where
440475
441476 toProto (Constraint cnm arg si) =
442477 defMessage
443- & P. className .~ toProto cnm
478+ & P. classRef .~ toProto cnm
444479 & P. arguments .~ pure (toProto arg)
445480 & P. sourceInfo .~ toProto si
446481
@@ -454,15 +489,17 @@ instance IsMessage P.Module Module where
454489 tdefs <- traverse fromProto $ m ^. P. typeDefs
455490 cdefs <- traverse fromProto $ m ^. P. classDefs
456491 insts <- traverse fromProto $ m ^. P. instances
492+ impts <- traverse fromProto $ m ^. P. imports
457493 si <- fromProto $ m ^. P. sourceInfo
458- pure $ Module mnm tdefs cdefs insts si
494+ pure $ Module mnm tdefs cdefs insts impts si
459495
460- toProto (Module mnm tdefs cdefs insts si) =
496+ toProto (Module mnm tdefs cdefs insts impts si) =
461497 defMessage
462498 & P. moduleName .~ toProto mnm
463499 & P. typeDefs .~ (toProto <$> tdefs)
464500 & P. classDefs .~ (toProto <$> cdefs)
465501 & P. instances .~ (toProto <$> insts)
502+ & P. imports .~ (toProto <$> impts)
466503 & P. sourceInfo .~ toProto si
467504
468505instance IsMessage P. CompilerInput CompilerInput where
@@ -529,7 +566,7 @@ instance IsMessage P.KindCheckError KindCheckError where
529566 <$> fromProto (err ^. P. tyName)
530567 <*> fromProto (err ^. P. inferredKind)
531568 <*> fromProto (err ^. P. definedKind)
532- P. KindCheckError'MultipleTyDefError' err ->
569+ P. KindCheckError'MultipleTydefError err ->
533570 MultipleTyDefError
534571 <$> fromProto (err ^. P. declaration1)
535572 <*> fromProto (err ^. P. declaration2)
@@ -555,8 +592,8 @@ instance IsMessage P.KindCheckError KindCheckError where
555592 & (P. inconsistentTypeError . P. definedKind) .~ toProto kd
556593 MultipleTyDefError d1 d2 ->
557594 defMessage
558- & (P. multipleTyDefError . P. declaration1) .~ toProto d1
559- & (P. multipleTyDefError . P. declaration2) .~ toProto d2
595+ & (P. multipleTydefError . P. declaration1) .~ toProto d1
596+ & (P. multipleTydefError . P. declaration2) .~ toProto d2
560597
561598instance IsMessage P. CompilerError CompilerError where
562599 fromProto cErr = case cErr ^. P. maybe'compilerError of
0 commit comments