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
support Class Fields #14343
Comments
@aladdin-add can you investigate to see which rules need to be updated and list them in this issue? |
that's exactly what I want to do later. 😄 |
indent ? Class Foo {
private foo1 = 1
private foo2 = 2 // eslint indent rule not given any errors
} |
Does ESLint need to upgrade |
Published new version of eslint-visitor-keys |
* Update: add ES2022 class features support (refs eslint/eslint#14343) * update README.md * update tools and add docs for adding new syntax * add dist * upgrade eslint-visitor-keys * Revert "add dist" This reverts commit 3e9caa7. * add npm prepare script * Update CONTRIBUTING.md Co-authored-by: 薛定谔的猫 <weiran.zsd@outlook.com> * update CONTRIBUTING.md * fix for JSON incompatible values * Apply suggestions from code review Co-authored-by: 薛定谔的猫 <weiran.zsd@outlook.com> Co-authored-by: Nicholas C. Zakas <nicholas@nczconsulting.com>
* Update: support class fields (refs eslint/eslint#14343) * upgrade eslint-visitor-keys * update espree * make function-scope for class field initializers * Update package.json * Update package.json * Update tests/class-fields.js * Update tests/class-fields.js Co-authored-by: Brandon Mills <btmills@users.noreply.github.com> * Remove trailing whitespace to fix lint failure * introduce class-field-initializer scope * fix typo * fix variableScope Co-authored-by: Nicholas C. Zakas <nicholas@nczconsulting.com> Co-authored-by: Brandon Mills <btmills@users.noreply.github.com>
Published new version of eslint-scope. |
…#14591) * update package.json (temporary) * update ast-utils - `getFunctionNameWithKind(node)` ... supports class fields and private identifier. And now it uses property names rather than function names if named function expressions are methods because the property name is exposed. - `getFunctionHeadLoc(node)` ... supports class fields. And now returns the range of property names instead of the arrow locations if arrow functions are at method places. - `isSameReference(l,r)` ... supports `PrivateIdentifier`. * update camelcase This commit includes a large refactoring. Previously, the `Identifier` node listener handled all cases by checking parent node types. But because the `Identifier` node has so broad meanings, it's confusing about what kind of nodes it's handling. Now it uses variables and references of `eslint-scope`. And it checks properties, re-exported identifiers, and labels by detailed esqueries. The property check newly supports class fields and private identifiers. This fixes #13021 as well. * update accessor-pairs (test-only) * update class-methods-use-this * update computed-property-spacing * update dot-location (test-only) * update dot-notation (test-only) * update func-names Function expressions at field initializers have inferred names. Therefore the `as-needed` option should not report anonymous functions at field initializers. * update getter-return (test-only) * update grouped-accessor-pairs (test-only) * update indent * update keyword-spacing * update lines-between-class-members (test-only) * update no-dupe-class-members * update no-extra-semi * update no-invalid-this * update no-multi-assign * update no-proto (test-only) * update no-prototype-builtins (test-only) * update no-restricted-properties (test-only) * update no-self-assign * update no-self-compare (test-only) * update no-setter-return * update no-shadow (test-only) * update no-this-before-super (test-only) * update no-throw-literal (test-only) * update no-undef-init * update no-underscore-dangle * update no-unexpected-multiline (test-only) * update no-unreachable * update no-useless-call (test-only) * update no-useless-computed-key * update no-eval * update operator-assignment (test-only) * update operator-linebreak * update padded-blocks (test-only) * update prefer-exponentiation-operator * update prefer-numeric-literals (test-only) * update prefer-object-spread (test-only) * update prefer-promise-reject-errors (test-only) * update prefer-regex-literals (test-only) * update prefer-spread (test-only) * update quotes * update radix (test-only) * update require-atomic-updates (test-only) * update require-unicode-regexp (test-only) * update semi-spacing * update semi-style * update semi * update space-infix-ops * update strict (test-only) * add more tests to no-unexpected-multiline * fix some tests for 7345747 * fix no-invalid-this * fix no-eval * Update eslint-scope * Upgrade Espree * Fix eslint-scope references to parser test * Fix: id-denylist * Update comments * Fix: id-match * Fix: id-length * Update: id-denylist for class fields * Update: id-length * Update: id-denylist code and docs * Docs: id-denylist * Update: id-match Co-authored-by: Nicholas C. Zakas <nicholas@humanwhocodes.com>
* Fix: Code path analysis for class fields (fixes #14343) * PropertyDefinition code paths * Add test and comments * Reverse order of code path closing * Added CodePath#origin * Update tests/lib/linter/code-path-analysis/code-path.js Co-authored-by: Milos Djermanovic <milos.djermanovic@gmail.com> * Update lib/linter/code-path-analysis/code-path.js Co-authored-by: Milos Djermanovic <milos.djermanovic@gmail.com> Co-authored-by: Milos Djermanovic <milos.djermanovic@gmail.com>
Class foo {
#x
} still yields |
Be sure to have this setting in
|
@minimit That's the one! Thanks! |
I have this same error running eslint 8.4.1 using gulp-eslint 7.21.1
package.json {
"version": "1.0.0",
"name": "my-website",
"private": true,
"engines": {
"node": ">=17"
},
"scripts": {
},
"devDependencies": {
"fs": "^0.0.2",
"glob": "^7.2.0",
"gulp": "^4.0.2",
"gulp-cli": "^2.3.0",
"gulp-clean": "^0.4.0",
"sass": "^1.44.0",
"eslint": "^8.4.1",
"gulp-eslint": "^6.0.0"
},
"dependencies": {
}
} .eslintrc.json {
"extends": "eslint:recommended",
"globals": {},
"env": {
"browser": true,
"commonjs": true,
"es6": true,
"jquery": true
},
"parserOptions":{
"ecmaVersion": 2020 <--- I tried with multiple values (11, 13, 2018, 2020), but no one of them solved the problem
},
"rules": {
"no-prototype-builtins": "off",
"no-unused-vars": "off",
"no-undef": "off"
}
} gulpFile.js /// <binding AfterBuild='build-scss'/>
const gulp = require('gulp');
const clean = require('gulp-clean');
const glob = require("glob");
const fs = require("fs");
const eslint = require('gulp-eslint');
gulp.task("run-eslint", callback => {
const options = {
realpath: true,
nodir: false
};
console.log('START Es Lint');
glob("wwwroot/js/*.js", options, async (er, files) => {
if (er) {
console.error(er);
callback(er);
} else {
for (const f of files) {
if (!f.endsWith('.min.js')) {
runEsLint(f);
}
}
}
callback();
console.log('END Es Lint');
});
});
function runEsLint(filePath) {
gulp.src(filePath). // get the target file
pipe(eslint()). // attaches the lint output to the "eslint" property of the file object so it can be used by other modules.
pipe(eslint.format()). // outputs the lint results to the console
pipe(eslint.format('visualstudio')). // outputs the lint results formatted for Visual Studio
pipe(eslint.failAfterError()) // To have the process exit with an error code (1) on lint error, return the stream and pipe to failAfterError last.
;
} Any idea ? |
@NinjaCross |
I see. Thank you, I wasn't aware of this. |
The version of ESLint you are using.
latest
The problem you want to solve.
support class fields officially, as it has reached stage-4.
refs: https://github.com/tc39/proposals/blob/master/finished-proposals.md
Your take on the correct solution to problem.
eslint-visitor-keys
update: Update: add PrivateIdentifier and PropertyDefinition eslint-visitor-keys#20espree
update: Update: add class fields (refs eslint/eslint#14343) espree#486eslint-scope
update: Update: support class fields (refs eslint/eslint#14343) eslint-scope#69eslint
syntax and rules update: Breaking: upgrade espree and support new class features (refs #14343) #14591eslint
code path analysis updateThe text was updated successfully, but these errors were encountered: