Skip to content

Bug: [require-await] Crash with yield* + Omit #5458

@stevenwdv

Description

@stevenwdv

Before You File a Bug Report Please Confirm You Have Done The Following...

  • I have tried restarting my IDE and the issue persists.
  • I have updated to the latest version of the packages.
  • I have searched for related issues and found none that matched my issue.
  • I have read the FAQ and my problem is not listed.

Playground Link

https://typescript-eslint.io/play/#ts=4.7.2&sourceType=module&code=IYZwngdgxgBAZgV2gFwJYHsICp4AoCUMA3gLABQMMANgKbIwAeAhAFwwDyAtqsgDykVKMANoBlMJwBG6KgDpQkKAElkNAE7Bk6NQF0CbAILhoK9Zu29gEMAD4A3OUoBfADQwA5AC93NxzDCoNFQAJjgMDmROQA&eslintrc=N4KABGBEBOCuA2BTAzpAXGUEKQAIBcBPABxQGNoBLY-AWhXkoDt8B6aRAR1ko9oEMA7v0r50URNGgB7aJHBgAviEVA&tsconfig=N4XyA

(Unfortunately the playground does not show internal errors)

Repro Code

async function* f() {
	let x!: Omit<{
		[Symbol.asyncIterator](): AsyncIterator<any>;
	}, 'z'>
	yield* x;
}

ESLint Config

module.exports = {
  parser: "@typescript-eslint/parser",
  rules: {
    "@typescript-eslint/require-await": ["error"],
  },
};

tsconfig

{}

Expected Result

I expected the linter to not crash and output nothing

Actual Result

Oops! Something went wrong! :(

ESLint: 8.21.0

TypeError: Cannot read properties of undefined (reading 'name')
Occurred while linting path\to\project\src\linttest.ts:5
Rule: "@typescript-eslint/require-await"
    at Object.getWellKnownSymbolPropertyOfType (path\to\project\node_modules\tsutils\util\type.js:181:102)
    at markAsHasDelegateGen (path\to\project\node_modules\@typescript-eslint\eslint-plugin\dist\rules\require-await.js:120:47)
    at ruleErrorHandler (path\to\project\node_modules\eslint\lib\linter\linter.js:1114:28)
    at path\to\project\node_modules\eslint\lib\linter\safe-emitter.js:45:58
    at Array.forEach (<anonymous>)
    at Object.emit (path\to\project\node_modules\eslint\lib\linter\safe-emitter.js:45:38)
    at NodeEventGenerator.applySelector (path\to\project\node_modules\eslint\lib\linter\node-event-generator.js:297:26)
    at NodeEventGenerator.applySelectors (path\to\project\node_modules\eslint\lib\linter\node-event-generator.js:326:22)
    at NodeEventGenerator.enterNode (path\to\project\node_modules\eslint\lib\linter\node-event-generator.js:340:14)
    at CodePathAnalyzer.enterNode (path\to\project\node_modules\eslint\lib\linter\code-path-analysis\code-path-analyzer.js:795:23)

Additional Info

2022-08-10T13:49:11.180Z eslint:cli CLI args: [ '.\\src\\linttest.ts', '--debug' ]
2022-08-10T13:49:11.183Z eslint:cli Running on files
2022-08-10T13:49:11.204Z eslintrc:config-array-factory Loading .eslintignore file: path\to\project\.eslintignore
2022-08-10T13:49:11.205Z eslintrc:ignore-pattern Create with: [ IgnorePattern { patterns: [ '/**/node_modules/*' ], basePath: 'path\\to\\project', loose: false } ]
2022-08-10T13:49:11.208Z eslintrc:ignore-pattern   processed: { basePath: 'path\\to\\project', patterns: [ '/**/node_modules/*' ] }
2022-08-10T13:49:11.208Z eslintrc:ignore-pattern Create with: [ IgnorePattern { patterns: [ '/**/node_modules/*' ], basePath: 'path\\to\\project', loose: false } ]
2022-08-10T13:49:11.209Z eslintrc:ignore-pattern   processed: { basePath: 'path\\to\\project', patterns: [ '/**/node_modules/*' ] }
2022-08-10T13:49:11.209Z eslint:file-enumerator Start to iterate files: [ '.\\src\\linttest.ts' ]
2022-08-10T13:49:11.210Z eslint:file-enumerator File: path\to\project\src\linttest.ts
2022-08-10T13:49:11.210Z eslintrc:cascading-config-array-factory Load config files for path\to\project\src.
2022-08-10T13:49:11.211Z eslintrc:cascading-config-array-factory No cache found: path\to\project\src.
2022-08-10T13:49:11.212Z eslintrc:config-array-factory Config file not found on path\to\project\src
2022-08-10T13:49:11.212Z eslintrc:cascading-config-array-factory No cache found: path\to\project.
2022-08-10T13:49:11.213Z eslintrc:config-array-factory Loading YAML config file: path\to\project\.eslintrc.yml
2022-08-10T13:49:11.237Z eslintrc:config-array-factory Config file found: path\to\project\.eslintrc.yml
2022-08-10T13:49:11.239Z eslintrc:config-array-factory Loading parser "@typescript-eslint/parser" from path\to\project\.eslintrc.yml
2022-08-10T13:49:11.241Z eslintrc:config-array-factory Loaded: @typescript-eslint/parser@5.33.0 (path\to\project\node_modules\@typescript-eslint\parser\dist\index.js)
2022-08-10T13:49:11.595Z eslintrc:config-array-factory Loading plugin "@typescript-eslint" from path\to\project\.eslintrc.yml
2022-08-10T13:49:11.597Z eslintrc:config-array-factory Loaded: @typescript-eslint/eslint-plugin@5.33.0 (path\to\project\node_modules\@typescript-eslint\eslint-plugin\dist\index.js)
2022-08-10T13:49:11.713Z eslint:rules Loading rule 'brace-style' (remaining=286)
2022-08-10T13:49:11.722Z eslint:rules Loading rule 'comma-dangle' (remaining=285)
2022-08-10T13:49:11.731Z eslint:rules Loading rule 'dot-notation' (remaining=284)
2022-08-10T13:49:11.738Z eslint:rules Loading rule 'indent' (remaining=283)
2022-08-10T13:49:11.743Z eslint:rules Loading rule 'init-declarations' (remaining=282)
2022-08-10T13:49:11.744Z eslint:rules Loading rule 'keyword-spacing' (remaining=281)
2022-08-10T13:49:11.746Z eslint:rules Loading rule 'lines-between-class-members' (remaining=280)
2022-08-10T13:49:11.765Z eslint:rules Loading rule 'no-dupe-class-members' (remaining=279)
2022-08-10T13:49:11.768Z eslint:rules Loading rule 'no-duplicate-imports' (remaining=278)
2022-08-10T13:49:11.770Z eslint:rules Loading rule 'no-empty-function' (remaining=277)
2022-08-10T13:49:11.773Z eslint:rules Loading rule 'no-extra-parens' (remaining=276)
2022-08-10T13:49:11.775Z eslint:rules Loading rule 'no-extra-semi' (remaining=275)
2022-08-10T13:49:11.789Z eslint:rules Loading rule 'no-invalid-this' (remaining=274)
2022-08-10T13:49:11.791Z eslint:rules Loading rule 'no-loop-func' (remaining=273)
2022-08-10T13:49:11.792Z eslint:rules Loading rule 'no-loss-of-precision' (remaining=272)
2022-08-10T13:49:11.794Z eslint:rules Loading rule 'no-magic-numbers' (remaining=271)
2022-08-10T13:49:11.817Z eslint:rules Loading rule 'no-restricted-imports' (remaining=270)
2022-08-10T13:49:11.855Z eslint:rules Loading rule 'no-unused-expressions' (remaining=269)
2022-08-10T13:49:11.858Z eslint:rules Loading rule 'no-useless-constructor' (remaining=268)
2022-08-10T13:49:11.864Z eslint:rules Loading rule 'object-curly-spacing' (remaining=267)
2022-08-10T13:49:11.894Z eslint:rules Loading rule 'quotes' (remaining=266)
2022-08-10T13:49:11.911Z eslint:rules Loading rule 'semi' (remaining=265)
2022-08-10T13:49:11.913Z eslint:rules Loading rule 'space-before-blocks' (remaining=264)
2022-08-10T13:49:11.916Z eslint:rules Loading rule 'space-infix-ops' (remaining=263)
2022-08-10T13:49:11.932Z eslintrc:config-array-factory Plugin path\to\project\node_modules\@typescript-eslint\eslint-plugin\dist\index.js loaded in: 335ms
2022-08-10T13:49:11.933Z eslintrc:cascading-config-array-factory Stop traversing because of 'root:true'.
2022-08-10T13:49:11.936Z eslintrc:cascading-config-array-factory Configuration was determined: ConfigArray(4) [ { type: 'config', name: 'DefaultIgnorePattern', filePath: '', criteria: null, env: undefined, globals: undefined, ignorePattern: IgnorePattern { patterns: [Array], basePath: 'path\\to\\project', loose: false }, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: undefined, settings: undefined }, { type: 'config', name: '.eslintrc.yml', filePath: 'path\\to\\project\\.eslintrc.yml', criteria: null, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: { error: null, filePath: 'path\\to\\project\\node_modules\\@typescript-eslint\\parser\\dist\\index.js', id: '@typescript-eslint/parser', importerName: '.eslintrc.yml', importerPath: 'path\\to\\project\\.eslintrc.yml' }, parserOptions: undefined, plugins: { '@typescript-eslint': [Object] }, processor: undefined, reportUnusedDisableDirectives: undefined, root: true, rules: undefined, settings: undefined }, { type: 'config', name: '.eslintrc.yml#overrides[0]', filePath: 'path\\to\\project\\.eslintrc.yml', criteria: { includes: [Array], excludes: [Array], basePath: 'path\\to\\project' }, env: undefined, globals: undefined, ignorePattern: undefined, noInlineConfig: undefined, parser: undefined, parserOptions: { project: './tsconfig.json' }, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: { '@typescript-eslint/require-await': 'error' }, settings: undefined }, { type: 'ignore', name: '.eslintignore', filePath: 'path\\to\\project\\.eslintignore', criteria: null, env: undefined, globals: undefined, ignorePattern: IgnorePattern { patterns: [Array], basePath: 'path\\to\\project', loose: true }, noInlineConfig: undefined, parser: undefined, parserOptions: undefined, plugins: undefined, processor: undefined, reportUnusedDisableDirectives: undefined, root: undefined, rules: undefined, settings: undefined } ] on path\to\project\src
2022-08-10T13:49:11.937Z eslintrc:ignore-pattern Create with: [ IgnorePattern { patterns: [ '/**/node_modules/*' ], basePath: 'path\\to\\project', loose: false }, IgnorePattern { patterns: [ '/test/' ], basePath: 'path\\to\\project', loose: true } ]
2022-08-10T13:49:11.938Z eslintrc:ignore-pattern   processed: { basePath: 'path\\to\\project', patterns: [ '/**/node_modules/*', '/test/' ] }
2022-08-10T13:49:11.939Z eslintrc:ignore-pattern Check {
  filePath: 'path\\to\\project\\src\\linttest.ts',
  dot: false,
  relativePath: 'src/linttest.ts',
  result: false
}
2022-08-10T13:49:11.940Z eslint:cli-engine Lint path\to\project\src\linttest.ts
2022-08-10T13:49:11.940Z eslint:linter Linting code for path\to\project\src\linttest.ts (pass 1)
2022-08-10T13:49:11.940Z eslint:linter Verify
2022-08-10T13:49:11.940Z eslint:linter With ConfigArray: path\to\project\src\linttest.ts
2022-08-10T13:49:11.942Z eslint:linter Parsing: path\to\project\src\linttest.ts
2022-08-10T13:49:13.314Z eslint:linter Parsing successful: path\to\project\src\linttest.ts
2022-08-10T13:49:13.315Z eslint:linter Scope analysis: path\to\project\src\linttest.ts
2022-08-10T13:49:13.315Z eslint:linter Scope analysis successful: path\to\project\src\linttest.ts
2022-08-10T13:49:13.339Z eslint:linter An error occurred while traversing
2022-08-10T13:49:13.339Z eslint:linter Filename: path\to\project\src\linttest.ts
2022-08-10T13:49:13.339Z eslint:linter Line: 5
2022-08-10T13:49:13.339Z eslint:linter Parser Options: { project: './tsconfig.json', ecmaVersion: undefined }
2022-08-10T13:49:13.339Z eslint:linter Parser Path: path\to\project\node_modules\@typescript-eslint\parser\dist\index.js
2022-08-10T13:49:13.339Z eslint:linter Settings: {}

Oops! Something went wrong! :(

ESLint: 8.21.0

TypeError: Cannot read properties of undefined (reading 'name')
Occurred while linting path\to\project\src\linttest.ts:5
Rule: "@typescript-eslint/require-await"
    at Object.getWellKnownSymbolPropertyOfType (path\to\project\node_modules\tsutils\util\type.js:181:102)
    at markAsHasDelegateGen (path\to\project\node_modules\@typescript-eslint\eslint-plugin\dist\rules\require-await.js:120:47)
    at ruleErrorHandler (path\to\project\node_modules\eslint\lib\linter\linter.js:1114:28)
    at path\to\project\node_modules\eslint\lib\linter\safe-emitter.js:45:58
    at Array.forEach (<anonymous>)
    at Object.emit (path\to\project\node_modules\eslint\lib\linter\safe-emitter.js:45:38)
    at NodeEventGenerator.applySelector (path\to\project\node_modules\eslint\lib\linter\node-event-generator.js:297:26)
    at NodeEventGenerator.applySelectors (path\to\project\node_modules\eslint\lib\linter\node-event-generator.js:326:22)
    at NodeEventGenerator.enterNode (path\to\project\node_modules\eslint\lib\linter\node-event-generator.js:340:14)
    at CodePathAnalyzer.enterNode (path\to\project\node_modules\eslint\lib\linter\code-path-analysis\code-path-analyzer.js:795:23)

Versions

package version
@typescript-eslint/eslint-plugin 5.33.0
@typescript-eslint/parser 5.33.0
TypeScript 4.7.4
ESLint 8.21.0
node 18.7.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    accepting prsGo ahead, send a pull request that resolves this issuebugSomething isn't workingpackage: eslint-pluginIssues related to @typescript-eslint/eslint-plugin

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      pFad - Phonifier reborn

      Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

      Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


      Alternative Proxies:

      Alternative Proxy

      pFad Proxy

      pFad v3 Proxy

      pFad v4 Proxy