Skip to content

buildSchema triggers infinite recursion on Input types with self reference fields that have default values #2661

Closed
@IvanGoncharov

Description

@IvanGoncharov

Patch to reproduce:

diff --git a/src/utilities/__tests__/buildASTSchema-test.js b/src/utilities/__tests__/buildASTSchema-test.js
index 1d74e356..0b773a0b 100644
--- a/src/utilities/__tests__/buildASTSchema-test.js
+++ b/src/utilities/__tests__/buildASTSchema-test.js
@@ -287,6 +287,16 @@ describe('Schema Builder', () => {
     expect(cycleSDL(sdl)).to.equal(sdl);
   });

+  it('Recursive type', () => {
+    const sdl = dedent`
+      input SomeInput {
+        str: String
+        recurse: SomeInput = { str: "foo" }
+      }
+    `;
+    expect(cycleSDL(sdl)).to.equal(sdl);
+  });
+
   it('Two types circular', () => {
     const sdl = dedent`
       type TypeOne {

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions