Add JSpecify annotations to 10 graphql.language classes#4217
Add JSpecify annotations to 10 graphql.language classes#4217
Conversation
Co-authored-by: dondonz <13839920+dondonz@users.noreply.github.com>
Co-authored-by: dondonz <13839920+dondonz@users.noreply.github.com>
Co-authored-by: dondonz <13839920+dondonz@users.noreply.github.com>
# Conflicts: # .claude/commands/jspecify-annotate.md
Test Results 335 files ±0 335 suites ±0 5m 5s ⏱️ ±0s Results for commit 2d02ff0. ± Comparison against base commit 89b4446. This pull request removes 196 and adds 172 tests. Note that renamed tests count towards both.♻️ This comment has been updated with latest results. |
| @PublicApi | ||
| @NullMarked | ||
| public class Description implements Serializable { | ||
| public final String content; |
There was a problem hiding this comment.
An interesting note: descriptions do not need to exist on GraphQL schema elements. However this is the AST representation - this Description element is only created when one exists.
| if (node == null) { | ||
| return (out, type) -> { | ||
| }; | ||
| } |
There was a problem hiding this comment.
I feel like code get missed here in diff terms??
There was a problem hiding this comment.
I removed it because the input is not nullable - so the question becomes can the input be nullable?
Is it possible or normal behaviour to pass in a null node into the printer?
bbakerman
left a comment
There was a problem hiding this comment.
I think there is a code delete problem here
Adds JSpecify null-safety annotations to 10 core AST classes in
graphql.language, removing them from the exemption list.Changes
Annotated classes:
AbstractDescribedNode,DescribedNode-@Nullableon description field/return (descriptions are optional in GraphQL SDL)Description-@Nullableon content and sourceLocation fieldsAstPrinter,AstSignature,AstSorter,AstTransformer-@Nullableon method parameters that accept nullsAstNodeAdapter- Non-null throughoutDirective,DirectiveDefinition-@NullUnmarkedon Builder inner classes per conventionNullAway fixes:
assertNotNull()calls indeepCopy()methods where generic@Nullable List<V>returns are passed to non-null constructors (lists are always non-null at call site)Example
Removed all 10 classes from
JSpecifyAnnotationsCheck.groovyexemption list.Original prompt
This pull request was created from Copilot chat.
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.