This repository has been archived by the owner on Mar 26, 2020. It is now read-only.
Improve error messages and generate operator<< for records #417
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR improves the error messages when a record cannot conform to a typeclass, because it has fields of types that don’t. In addition, it generates the C++
operator<<
for enums, and introduces theshow
typeclass to do the same for recordsderiving (show)
.Assuming the following Djinni file:
This PR allows you to write the following C++ code:
If
Amount
would be missing the declaration of conformance toshow
, the error message from running Djinni would clearly say so:Supported Field Types
deriving (show)
enum
list<T>
whereT
is any of the above (or a map, or a list)map<K,V>
whereK
andV
are any of the above (or a map)Limitations/Known Issues
data
fields are printed as arrays of integers by defaultflag
andoptional
fields require handwritten overloads ofoperator<<
to be available in the translation unit of the record; failure to do so will not report an error until trying to compile the record’s.cpp
fileshow
, the error may not surface until trying to compile the record’s.cpp
file