Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(linter): eslint/radix rule correctly check for unbound symbols #5446

Conversation

overlookmotel
Copy link
Contributor

@overlookmotel overlookmotel commented Sep 4, 2024

SymbolTable::get_symbol_id_from_name(name).is_none() is not always correct, because it will return false if there is a binding anywhere in the AST with that name, whereas what we actually want to know is whether this IdentifierReference is referring to a global or not.

Instead, look up whether this reference is resolved or not using SymbolTable::is_global_reference.

The 3 test cases added were not working prior to this change.

Copy link
Contributor Author

overlookmotel commented Sep 4, 2024

@github-actions github-actions bot added the A-linter Area - Linter label Sep 4, 2024
@overlookmotel overlookmotel marked this pull request as ready for review September 4, 2024 16:37
Copy link

codspeed-hq bot commented Sep 4, 2024

CodSpeed Performance Report

Merging #5446 will not alter performance

Comparing 09-04-fix_linter_eslint_radix_rule_correctly_check_for_unbound_symbols (6285a02) with main (2224cc4)

Summary

✅ 29 untouched benchmarks

@DonIsaac DonIsaac changed the base branch from 09-04-refactor_linter_simplify_eslint_radix_rule to graphite-base/5446 September 4, 2024 16:52
@overlookmotel overlookmotel force-pushed the 09-04-fix_linter_eslint_radix_rule_correctly_check_for_unbound_symbols branch from 45ec84a to 59ad46e Compare September 4, 2024 16:52
@DonIsaac DonIsaac changed the base branch from graphite-base/5446 to main September 4, 2024 16:56
@DonIsaac DonIsaac force-pushed the 09-04-fix_linter_eslint_radix_rule_correctly_check_for_unbound_symbols branch from 59ad46e to fcd4955 Compare September 4, 2024 16:56
@Boshen Boshen added the 0-merge Merge with Graphite Merge Queue label Sep 5, 2024
Copy link

graphite-app bot commented Sep 5, 2024

Merge activity

  • Sep 4, 9:17 PM EDT: The merge label 'merge' was detected. This PR will be added to the Graphite merge queue once it meets the requirements.
  • Sep 4, 9:18 PM EDT: Boshen added this pull request to the Graphite merge queue.
  • Sep 4, 9:23 PM EDT: Boshen merged this pull request with the Graphite merge queue.

…5446)

`SymbolTable::get_symbol_id_from_name(name).is_none()` is not always correct, because it will return `false` if there is a binding *anywhere* in the AST with that name, whereas what we actually want to know is whether *this* `IdentifierReference` is referring to a global or not.

Instead, look up whether this reference is resolved or not using `SymbolTable::is_global_reference`.

The 3 test cases added were not working prior to this change.
@Boshen Boshen force-pushed the 09-04-fix_linter_eslint_radix_rule_correctly_check_for_unbound_symbols branch from fcd4955 to 6285a02 Compare September 5, 2024 01:18
@graphite-app graphite-app bot merged commit 6285a02 into main Sep 5, 2024
24 checks passed
@graphite-app graphite-app bot deleted the 09-04-fix_linter_eslint_radix_rule_correctly_check_for_unbound_symbols branch September 5, 2024 01:23
@oxc-bot oxc-bot mentioned this pull request Sep 7, 2024
Boshen added a commit that referenced this pull request Sep 7, 2024
## [0.9.3] - 2024-09-07

### Features

- be3a432 linter: Implement typescript/no-magic-numbers (#4745)
(Alexander S.)
- 09aa86d linter/eslint: Implement `sort-vars` rule (#5430) (Jelle van
der Waa)
- 2ec2f7d linter/eslint: Implement no-alert (#5535) (Edwin Lim)
- a786acf linter/import: Add no-dynamic-require rule (#5389) (Jelle van
der Waa)
- 4473779 linter/node: Implement no-exports-assign (#5370) (dalaoshu)
- b846432 linter/oxc: Add fixer for `erasing-op` (#5377) (camc314)
- aff2c71 linter/react: Implement `self-closing-comp` (#5415) (Jelle van
der Waa)

### Bug Fixes

- 0df1d9d ast, codegen, linter: Panics in fixers. (#5431) (rzvxa)
- cdd1a91 linter: Typescript/no-magic-numbers: remove double minus for
reporting negative bigint numbers (#5565) (Alexander S.)
- ff88c1f linter: Don't mark binding rest elements as unused in TS
function overloads (#5470) (Cam McHenry)
- 088733b linter: Handle loops in `getter-return` rule (#5517) (Cam
McHenry)
- 82c0a16 linter: `tree_shaking/no_side_effects_in_initialization`
handle JSX correctly (#5450) (overlookmotel)
- 6285a02 linter: `eslint/radix` rule correctly check for unbound
symbols (#5446) (overlookmotel)
- c8ab353 linter/tree-shaking: Align JSXMemberExpression's report
(#5548) (mysteryven)
- 5187f38 linter/tree-shaking: Detect the correct export symbol
resolution (#5467) (mysteryven)

### Performance

- 8170954 linter/react: Add should_run conditions for react rules
(#5402) (Jelle van der Waa)

### Documentation

- a540215 linter: Update docs `Examples` for linter rules (#5513)
(dalaoshu)
- 7414190 linter: Update docs `Example` for linter rules (#5479)
(heygsc)

### Refactor

- 0ac420d linter: Use meaningful names for diagnostic parameters (#5564)
(Don Isaac)
- 81a394d linter: Deduplicate code in `oxc/no-async-await` (#5549)
(DonIsaac)
- 979c16c linter: Reduce nested if statements in
eslint/no_this_before_super (#5485) (IWANABETHATGUY)
- 1d3e973 linter: Simplify `eslint/radix` rule (#5445) (overlookmotel)
- fdb8857 linter: Use "parsed pattern" in `no_div_regex` rule. (#5417)
(rzvxa)
- 2ccbd93 linter: `react/jsx_no_undef` rule `get_member_ident` do not
return Option (#5411) (overlookmotel)

### Styling

- 2a43fa4 linter: Introduce the writing style from PR #5491 and reduce
the if nesting (#5512) (dalaoshu)- d8b29e7 Add trailing line breaks to
JSON files (#5544) (overlookmotel)- 694f032 Add trailing line breaks to
`package.json` files (#5542) (overlookmotel)

### Testing

- 340b535 linter/no-unused-vars: Arrow functions in tagged templates
(#5510) (Don Isaac)
- af69393 linter/no-useless-spread: Ensure spreads on identifiers pass
(#5561) (DonIsaac)- dc92489 Add trailing line breaks to conformance
fixtures (#5541) (overlookmotel)

Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
0-merge Merge with Graphite Merge Queue A-linter Area - Linter
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants