-
Notifications
You must be signed in to change notification settings - Fork 413
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make the <~> operator equivalent to channel.read
/channel.write
#14430
Make the <~> operator equivalent to channel.read
/channel.write
#14430
Conversation
FYI, I plan to figure out why the test |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Generally this looks good to me.
The PR message has some out of date stuff (removing inline, e.g.). and says "Otherwise, the error is unpacked" but I think you mean "Otherwise EIO is stored in the channel".
I'll discuss your open questions with you separately.
This PR makes the
<~>
IO operator throw, and insofar as possible equivalent in semantics tochannel.read
andchannel.write
. It also adds thethrows
keyword todsi
IO routines for domains and arrays, as a consequence of the above.If a SystemError is thrown from within IO routines up through
readThis
/writeThis
, then the error is caught and the equivalent QIO error code is stored in the channel. Otherwise, the error is unpacked and theEIO
error code is stored in the channel.As of this time there is no way to distinguish between
SystemError
thrown by the user andSystemError
thrown by the Chapel IO machinery.The test
test/classes/deitz/class/tree.chpl
was rewritten to use an iterative postorder traversal instead of a recursive iterator due to compilation bugs (likely due to #7134).Testing:
ALL
onlinux64
whenCHPL_COMM=none
andCHPL_LLVM=llvm
ALL
onlinux64
whenCHPL_COMM=gasnet
andCHPL_LLVM=llvm