mirror of
https://github.com/anoma/juvix.git
synced 2024-12-15 01:52:11 +03:00
parent
6b38543ae3
commit
286cdb0026
@ -2088,7 +2088,7 @@ checkRecordCreation RecordCreation {..} = do
|
||||
Just ci -> do
|
||||
let name = NameUnqualified (ci ^. constructorInfoTypeName . nameConcrete)
|
||||
nameId = ci ^. constructorInfoTypeName . S.nameId
|
||||
info <- getRecordInfo' name nameId
|
||||
info <- getRecordInfo' (getLoc _recordCreationConstructor) name nameId
|
||||
let sig = info ^. recordInfoSignature
|
||||
(vars', fields') <- withLocalScope $ localBindings $ ignoreSyntax $ do
|
||||
vs <- mapM (reserveFunctionSymbol . (^. fieldDefineFunDef)) _recordCreationFields
|
||||
@ -2201,19 +2201,20 @@ getRecordInfo ::
|
||||
(Members '[State ScoperState, Error ScoperError] r) =>
|
||||
ScopedIden ->
|
||||
Sem r RecordInfo
|
||||
getRecordInfo indTy = getRecordInfo' (indTy ^. scopedIdenFinal . nameConcrete) (indTy ^. scopedIdenFinal . S.nameId)
|
||||
getRecordInfo indTy = getRecordInfo' (getLoc indTy) (indTy ^. scopedIdenFinal . nameConcrete) (indTy ^. scopedIdenFinal . S.nameId)
|
||||
|
||||
getRecordInfo' ::
|
||||
forall r.
|
||||
(Members '[State ScoperState, Error ScoperError] r) =>
|
||||
Interval ->
|
||||
Name ->
|
||||
NameId ->
|
||||
Sem r RecordInfo
|
||||
getRecordInfo' name nameId =
|
||||
getRecordInfo' loc name nameId =
|
||||
fromMaybeM err (gets (^. scoperRecordFields . at nameId))
|
||||
where
|
||||
err :: Sem r a
|
||||
err = throw (ErrNotARecord (NotARecord name))
|
||||
err = throw (ErrNotARecord (NotARecord name loc))
|
||||
|
||||
getNameSignature :: (Members '[State ScoperState, Error ScoperError] r) => ScopedIden -> Sem r NameSignature
|
||||
getNameSignature s = do
|
||||
|
@ -751,8 +751,9 @@ instance ToGenericError ConstructorNotARecord where
|
||||
i :: Interval
|
||||
i = getLoc _constructorNotARecord
|
||||
|
||||
newtype NotARecord = NotARecord
|
||||
{ _notARecord :: Name
|
||||
data NotARecord = NotARecord
|
||||
{ _notARecord :: Name,
|
||||
_notARecordLocation :: Interval
|
||||
}
|
||||
deriving stock (Show)
|
||||
|
||||
@ -771,7 +772,7 @@ instance ToGenericError NotARecord where
|
||||
}
|
||||
where
|
||||
i :: Interval
|
||||
i = getLoc _notARecord
|
||||
i = _notARecordLocation
|
||||
|
||||
newtype UnexpectedField = UnexpectedField
|
||||
{ _unexpectedField :: Symbol
|
||||
|
Loading…
Reference in New Issue
Block a user