Reject enum values, interface fields and union members that a type declares twice in 15.0.0
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 新手友好度
- 76/100
- Issue 类型
- 缺陷
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- graphql, kotlin
调研方向
Start with SchemaParser#warnRepeated, createEnumObject, and createInterfaceObject, then read the repeats covered by TypeExtensionTest.repeats and extensions without a type keep building. Move those cases into an error test and check that the SchemaError names the type and repeated value, field, or member. Update the 15.0.0 release notes; done means repeats are rejected and the tests verify the error.
由索引模型根据 Issue 内容生成。
描述
Since #855, extensions are merged into the type they extend. When a type ends up declaring an enum value, interface field or union member twice, e.g. in the type and again in an extension, tools keeps the first one and logs a warning:
enum Color { RED }
extend enum Color { RED GREEN }
Type 'Color' declares value 'RED' more than once, only the first one is kept.
graphql-java's SchemaGenerator rejects these schemas, and the spec doesn't allow an extension to redeclare what the type already has. But they built before #855, since the extension used to replace the type, so failing on them has to wait for a major release.
Keeping the first one hides mistakes though. interface Node { id: ID } plus extend interface Node { id: String } builds with id: ID, and only a log line says the extension's id was dropped.
What to change
- replace the warning in
SchemaParser#warnRepeatedwith aSchemaErrorthat names the type and the repeated value, field or member - drop the
distinctBy { it.name }on the enum values increateEnumObjectand the interface fields increateInterfaceObject - move the repeats out of
TypeExtensionTest.repeats and extensions without a type keep buildinginto a test for the error - mention it in the 15.0.0 release notes
- 主要语言
- Kotlin
- 星标
- 824
- 派生
- 175
- 平均合并
- 2 天 5 小时
- 30 天内合并 PR
- 52
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
graphql-java-kickstart/graphql-java-tools 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 85/100
graphql-java-kickstart/graphql-java-tools#893 ·
维护者通常 1 天内回复
-
bug
难度 3/5 1-2 天 新手友好度 74/100
graphql-java-kickstart/graphql-java-tools#896 ·
维护者通常 1 天内回复
-
难度 3/5 1-2 天 新手友好度 72/100
graphql-java-kickstart/graphql-java-tools#889 ·
维护者通常 1 天内回复
-
bug
难度 3/5 1-2 天 新手友好度 55/100
graphql-java-kickstart/graphql-java-tools#886 ·
维护者通常 1 天内回复
-
enhancement
难度 3/5 1-2 天 新手友好度 72/100
graphql-java-kickstart/graphql-java-tools#884 ·
维护者通常 1 天内回复
查看 graphql-java-kickstart/graphql-java-tools 的全部 Issue
相似的 Issue
-
area:data-quality importer size:S
难度 2/5 1-3 小时 新手友好度 84/100
enorm-labs/event-junkie#3707 ·
维护者通常 1 天内回复
-
area/ui priority/p2 type/bug
难度 1/5 1 小时以内 新手友好度 94/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
commons-app/apps-android-commons#7072 ·
维护者通常 1 天内回复
-
bug ci good first issue help wanted severity: medium
难度 2/5 1-3 小时 新手友好度 65/100
dhananjay-nautiyal/music#17 · 1 条评论 ·
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 66/100
T8RIN/ImageToolbox#3255 · 2 条评论 ·
维护者通常 1 天内回复