From 6e12603bb9f610231270bad4b013e1f769828e3f Mon Sep 17 00:00:00 2001 From: Naman Kumar Date: Thu, 21 May 2020 21:55:08 +0530 Subject: [PATCH] Add better error message for extension with descriptions --- src/language/__tests__/schema-parser-test.js | 6 ++++-- src/language/parser.js | 11 ++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/language/__tests__/schema-parser-test.js b/src/language/__tests__/schema-parser-test.js index a9577d12da..054b6b3d5a 100644 --- a/src/language/__tests__/schema-parser-test.js +++ b/src/language/__tests__/schema-parser-test.js @@ -333,7 +333,8 @@ describe('Schema Parser', () => { world: String } `).to.deep.equal({ - message: 'Syntax Error: Unexpected Name "extend".', + message: + 'Syntax Error: Unexpected Name "extend". Extension do not include descriptions.', locations: [{ line: 3, column: 7 }], }); @@ -354,7 +355,8 @@ describe('Schema Parser', () => { world: String } `).to.deep.equal({ - message: 'Syntax Error: Unexpected Name "extend".', + message: + 'Syntax Error: Unexpected Name "extend". Extension do not include descriptions.', locations: [{ line: 3, column: 7 }], }); diff --git a/src/language/parser.js b/src/language/parser.js index 2fdcdc6ab6..1cb9ff0faf 100644 --- a/src/language/parser.js +++ b/src/language/parser.js @@ -725,7 +725,8 @@ class Parser { */ parseTypeSystemDefinition(): TypeSystemDefinitionNode { // Many definitions begin with a description and require a lookahead. - const keywordToken = this.peekDescription() + const hasDescription = this.peekDescription(); + const keywordToken = hasDescription ? this._lexer.lookahead() : this._lexer.token; @@ -750,6 +751,14 @@ class Parser { } } + if (hasDescription && keywordToken.value === 'extend') { + throw syntaxError( + this._lexer.source, + keywordToken.start, + 'Unexpected Name "extend". Extension do not include descriptions.', + ); + } + throw this.unexpected(keywordToken); }