loop-payments / prisma-lint

A linter for Prisma schema files.
https://www.npmjs.com/package/prisma-lint
MIT License
128 stars 6 forks source link

Generator name with hyphen throws an error #334

Closed daeteck closed 6 months ago

daeteck commented 7 months ago

When a hyphen is added to the name of the generator the linting throws an error.

Example:

generator markdown-something { provider = "prisma-markdown" }

Error:

MismatchedTokenException: Expecting --> '{' <-- but found --> 'something' <--
    at RecognizerEngine.consumeInternalError (/Users/diegoesteves/Documents/BGS2/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_engine.js:500:31)
    at RecognizerEngine.consumeInternal (/Users/diegoesteves/Documents/BGS2/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_engine.js:475:22)
    at RecognizerApi.CONSUME (/Users/diegoesteves/Documents/BGS2/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_api.js:47:21)
    at PrismaParser.<anonymous> (/Users/diegoesteves/Documents/BGS2/node_modules/@mrleebo/prisma-ast/dist/prisma-ast.cjs.development.js:395:13)
    at PrismaParser.invokeRuleWithTry [as block] (/Users/diegoesteves/Documents/BGS2/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_engine.js:133:26)
    at RecognizerEngine.subruleInternal (/Users/diegoesteves/Documents/BGS2/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_engine.js:447:37)
    at RecognizerApi.SUBRULE (/Users/diegoesteves/Documents/BGS2/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_api.js:77:21)
    at PrismaParser.<anonymous> (/Users/diegoesteves/Documents/BGS2/node_modules/@mrleebo/prisma-ast/dist/prisma-ast.cjs.development.js:576:13)
    at PrismaParser.invokeRuleWithTry [as component] (/Users/diegoesteves/Documents/BGS2/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_engine.js:133:26)
    at RecognizerEngine.subruleInternal (/Users/diegoesteves/Documents/BGS2/node_modules/chevrotain/lib/src/parse/parser/traits/recognizer_engine.js:447:37) {
  token: {
    image: 'something',
    startOffset: 810,
    endOffset: 818,
    startLine: 25,
    endLine: 25,
    startColumn: 19,
    endColumn: 27,
    tokenTypeIdx: 3,
    tokenType: {
      name: 'Identifier',
      PATTERN: /[a-zA-Z]\w*/,
      tokenTypeIdx: 3,
      CATEGORIES: [],
      categoryMatches: [],
      categoryMatchesMap: {},
      isParent: false
    }
  },
  resyncedTokens: [],
  previousToken: {
    image: 'markdown',
    startOffset: 801,
    endOffset: 808,
    startLine: 25,
    endLine: 25,
    startColumn: 11,
    endColumn: 18,
    tokenTypeIdx: 3,
    tokenType: {
      name: 'Identifier',
      PATTERN: /[a-zA-Z]\w*/,
      tokenTypeIdx: 3,
      CATEGORIES: [],
      categoryMatches: [],
      categoryMatchesMap: {},
      isParent: false
    }
  },
  context: {
    ruleStack: [ 'schema', 'component', 'block' ],
    ruleOccurrenceStack: [ 0, 0, 0 ]
  }
}
maxh commented 7 months ago

Interesting. Thanks for reporting. This looks like it might be an issue with https://github.com/MrLeebo/prisma-ast.

maxh commented 7 months ago

Filed https://github.com/MrLeebo/prisma-ast/issues/39

MrLeebo commented 7 months ago

This issue is already fixed in prisma-ast v0.10.1, which prisma-lint is using in the main branch.

maxh commented 6 months ago

Thanks @MrLeebo! @daeteck, this should be resolved in 0.1.1 https://github.com/loop-payments/prisma-lint/pull/335