123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 'use strict';
- const docsUrl = require('../util/docsUrl');
- const isTagNameRe = /^[a-z]/;
- const isTagName = (name) => isTagNameRe.test(name);
- module.exports = {
-
- meta: {
- docs: {
- description: 'Disallow variables used in JSX to be incorrectly marked as unused',
- category: 'Best Practices',
- recommended: true,
- url: docsUrl('jsx-uses-vars'),
- },
- schema: [],
- },
- create(context) {
- return {
- JSXOpeningElement(node) {
- let name;
- if (node.name.namespace) {
-
- return;
- }
- if (node.name.name) {
-
- name = node.name.name;
-
- if (isTagName(name)) {
- return;
- }
- } else if (node.name.object) {
-
- let parent = node.name.object;
- while (parent.object) {
- parent = parent.object;
- }
- name = parent.name;
- } else {
- return;
- }
- context.markVariableAsUsed(name);
- },
- };
- },
- };
|