Skip to content

Commit 0a98cc9

Browse files
authored
Merge pull request #5542 from unisonweb/topic/calling-conventions
Change interpreter calling conventions to be more direct
2 parents b182c6b + 85feecc commit 0a98cc9

File tree

7 files changed

+1185
-1476
lines changed

7 files changed

+1185
-1476
lines changed

parser-typechecker/src/Unison/Builtin/Decls.hs

+24
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,11 @@ constructorId ref name = do
107107
(_, _, dd) <- find (\(_, r, _) -> Reference.DerivedId r == ref) builtinDataDecls
108108
fmap fromIntegral . elemIndex name $ DD.constructorNames dd
109109

110+
effectId :: Reference -> Text -> Maybe ConstructorId
111+
effectId ref name = do
112+
(_, _, ed) <- find (\(_, r, _) -> Reference.DerivedId r == ref) builtinEffectDecls
113+
fmap fromIntegral . elemIndex name . DD.constructorNames $ DD.toDataDecl ed
114+
110115
noneId, someId, okConstructorId, failConstructorId, docBlobId, docLinkId, docSignatureId, docSourceId, docEvaluateId, docJoinId, linkTermId, linkTypeId, eitherRightId, eitherLeftId :: ConstructorId
111116
isPropagatedConstructorId, isTestConstructorId, bufferModeNoBufferingId, bufferModeLineBufferingId, bufferModeBlockBufferingId, bufferModeSizedBlockBufferingId :: ConstructorId
112117
seqViewEmpty, seqViewElem :: ConstructorId
@@ -153,6 +158,25 @@ bufferModeBlockBufferingId = Maybe.fromJust $ constructorId bufferModeRef "io2.B
153158

154159
bufferModeSizedBlockBufferingId = Maybe.fromJust $ constructorId bufferModeRef "io2.BufferMode.SizedBlockBuffering"
155160

161+
fileModeReadId, fileModeWriteId, fileModeAppendId, fileModeReadWriteId :: ConstructorId
162+
fileModeReadId = Maybe.fromJust $ constructorId fileModeRef "io2.FileMode.Read"
163+
fileModeWriteId = Maybe.fromJust $ constructorId fileModeRef "io2.FileMode.Write"
164+
fileModeAppendId = Maybe.fromJust $ constructorId fileModeRef "io2.FileMode.Append"
165+
fileModeReadWriteId = Maybe.fromJust $ constructorId fileModeRef "io2.FileMode.ReadWrite"
166+
167+
seekModeAbsoluteId, seekModeRelativeId, seekModeEndId :: ConstructorId
168+
seekModeAbsoluteId = Maybe.fromJust $ constructorId seekModeRef "io2.SeekMode.AbsoluteSeek"
169+
seekModeRelativeId = Maybe.fromJust $ constructorId seekModeRef "io2.SeekMode.RelativeSeek"
170+
seekModeEndId = Maybe.fromJust $ constructorId seekModeRef "io2.SeekMode.SeekFromEnd"
171+
172+
stdInId, stdOutId, stdErrId :: ConstructorId
173+
stdInId = Maybe.fromJust $ constructorId stdHandleRef "io2.StdHandle.StdIn"
174+
stdOutId = Maybe.fromJust $ constructorId stdHandleRef "io2.StdHandle.StdOut"
175+
stdErrId = Maybe.fromJust $ constructorId stdHandleRef "io2.StdHandle.StdErr"
176+
177+
exceptionRaiseId :: ConstructorId
178+
exceptionRaiseId = Maybe.fromJust $ effectId exceptionRef "Exception.raise"
179+
156180
okConstructorReferent, failConstructorReferent :: Referent.Referent
157181
okConstructorReferent = Referent.Con (ConstructorReference testResultRef okConstructorId) CT.Data
158182
failConstructorReferent = Referent.Con (ConstructorReference testResultRef failConstructorId) CT.Data

0 commit comments

Comments
 (0)