-
Notifications
You must be signed in to change notification settings - Fork 52
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
Type System Definition Language #182
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Once done, we should have everything as directives-only in the system. |
Won't pass yet. There are still lots of stuff to do here before it'll work. |
This patch changes the parser to it follow the Type Definition Language in the GraphQL spec, but it doesn't yet implement the notion of extending a schema. Major changes: * There are no more annotations. Everything is now given as directives if this is what you desire to do. * Descriptions are optional first class citizens of the grammar and can be added to any kind of term in the grammar, more or less. * Change the grammar to be closer to the specifications layout. This is a bit more involved in the parser, but it makes it easier to follow along in the specification. * Remove '+' as a valid symbol in the scanner * NonTerminal cleanup and ordering * Change the internal schema we parse: - Add directives - Add description - Remove annotations (which are now handled by directives) * Handle the preprocessor as well * Adapt all the test cases to use the new format
An enum value is usually given as a binary value by the parser. But we factored this through the name/1 function. And the type spec was wrong on #p_enum_value.id. Fixing this untangles some calls and makes the dialyzer check pass.
Turned out to be far easier than I imagined. The above patches implements the type definition language and changes annotations to be directives in the system. This makes the engine compliant with the specification in this area as well. |
This works a bit toward supporting the schema {..} directive. We accept the grammar and we inject it into the system as the root schema.
More simplification of the graphql module. You can now load and parse a schema without injecting a root yourself. It is part of the GraphQL specification now.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 pull request handles the new type system definition language. The work is going to be split over several changes: