@@ -54,10 +54,10 @@ throwNamingError = either (Left . NamingError) return
54
54
55
55
-- TODO(bladyjoker): Revisit and make part of compiler.proto
56
56
data 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
61
61
| NoClassArgs ClassName SourceInfo
62
62
| MultipleClassArgs ClassName SourceInfo
63
63
| NoTyAppArgs SourceInfo
@@ -387,6 +387,41 @@ instance IsMessage P.Product'Record'Field Field where
387
387
Classes, instances, constraints
388
388
-}
389
389
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
+
390
425
instance IsMessage P. ClassDef ClassDef where
391
426
fromProto cd = do
392
427
si <- fromProto $ cd ^. P. sourceInfo
@@ -411,7 +446,7 @@ instance IsMessage P.ClassDef ClassDef where
411
446
instance IsMessage P. InstanceClause InstanceClause where
412
447
fromProto ic = do
413
448
si <- fromProto $ ic ^. P. sourceInfo
414
- cnm <- fromProto $ ic ^. P. className
449
+ cnm <- fromProto $ ic ^. P. classRef
415
450
csts <- traverse fromProto $ ic ^. P. constraints
416
451
hds <- ic ^. (P. heads . traversing fromProto)
417
452
hd <- case hds of
@@ -422,15 +457,15 @@ instance IsMessage P.InstanceClause InstanceClause where
422
457
423
458
toProto (InstanceClause cnm hd csts si) =
424
459
defMessage
425
- & P. className .~ toProto cnm
460
+ & P. classRef .~ toProto cnm
426
461
& P. heads .~ pure (toProto hd)
427
462
& P. constraints .~ (toProto <$> csts)
428
463
& P. sourceInfo .~ toProto si
429
464
430
465
instance IsMessage P. Constraint Constraint where
431
466
fromProto c = do
432
467
si <- fromProto $ c ^. P. sourceInfo
433
- cnm <- fromProto $ c ^. P. className
468
+ cnm <- fromProto $ c ^. P. classRef
434
469
args <- c ^. (P. arguments . traversing fromProto)
435
470
arg <- case args of
436
471
[] -> throwProtoError $ NoConstraintArgs cnm si
@@ -440,7 +475,7 @@ instance IsMessage P.Constraint Constraint where
440
475
441
476
toProto (Constraint cnm arg si) =
442
477
defMessage
443
- & P. className .~ toProto cnm
478
+ & P. classRef .~ toProto cnm
444
479
& P. arguments .~ pure (toProto arg)
445
480
& P. sourceInfo .~ toProto si
446
481
@@ -454,15 +489,17 @@ instance IsMessage P.Module Module where
454
489
tdefs <- traverse fromProto $ m ^. P. typeDefs
455
490
cdefs <- traverse fromProto $ m ^. P. classDefs
456
491
insts <- traverse fromProto $ m ^. P. instances
492
+ impts <- traverse fromProto $ m ^. P. imports
457
493
si <- fromProto $ m ^. P. sourceInfo
458
- pure $ Module mnm tdefs cdefs insts si
494
+ pure $ Module mnm tdefs cdefs insts impts si
459
495
460
- toProto (Module mnm tdefs cdefs insts si) =
496
+ toProto (Module mnm tdefs cdefs insts impts si) =
461
497
defMessage
462
498
& P. moduleName .~ toProto mnm
463
499
& P. typeDefs .~ (toProto <$> tdefs)
464
500
& P. classDefs .~ (toProto <$> cdefs)
465
501
& P. instances .~ (toProto <$> insts)
502
+ & P. imports .~ (toProto <$> impts)
466
503
& P. sourceInfo .~ toProto si
467
504
468
505
instance IsMessage P. CompilerInput CompilerInput where
@@ -529,7 +566,7 @@ instance IsMessage P.KindCheckError KindCheckError where
529
566
<$> fromProto (err ^. P. tyName)
530
567
<*> fromProto (err ^. P. inferredKind)
531
568
<*> fromProto (err ^. P. definedKind)
532
- P. KindCheckError'MultipleTyDefError' err ->
569
+ P. KindCheckError'MultipleTydefError err ->
533
570
MultipleTyDefError
534
571
<$> fromProto (err ^. P. declaration1)
535
572
<*> fromProto (err ^. P. declaration2)
@@ -555,8 +592,8 @@ instance IsMessage P.KindCheckError KindCheckError where
555
592
& (P. inconsistentTypeError . P. definedKind) .~ toProto kd
556
593
MultipleTyDefError d1 d2 ->
557
594
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
560
597
561
598
instance IsMessage P. CompilerError CompilerError where
562
599
fromProto cErr = case cErr ^. P. maybe'compilerError of
0 commit comments