Skip to content

Commit

Permalink
Merge pull request #928 from bmish/require-super-in-init-perf
Browse files Browse the repository at this point in the history
Refactor `require-super-in-init` rule to improve performance
  • Loading branch information
bmish committed Sep 7, 2020
2 parents 047b370 + 39c10e8 commit d74517b
Showing 1 changed file with 27 additions and 17 deletions.
44 changes: 27 additions & 17 deletions lib/rules/require-super-in-init.js
Expand Up @@ -88,28 +88,38 @@ module.exports = {
};

return {
CallExpression(node) {
Property(node) {
if (
!ember.isEmberComponent(context, node) &&
!ember.isEmberController(context, node) &&
!ember.isEmberRoute(context, node) &&
!ember.isEmberMixin(context, node) &&
!ember.isEmberService(context, node)
!types.isIdentifier(node.key) ||
node.key.name !== 'init' ||
!types.isFunctionExpression(node.value)
) {
// Not init function.
return;
}

const initProperty = ember
.getModuleProperties(node)
.find((property) => types.isProperty(property) && property.key.name === 'init');

if (initProperty && types.isFunctionExpression(initProperty.value)) {
const initPropertyBody = initProperty.value.body.body;
const nodes = findStmtNodes(initPropertyBody);
const hasSuper = checkForSuper(nodes);
if (!hasSuper) {
report(initProperty);
}
const parentParent = node.parent.parent;
if (!types.isCallExpression(node.parent.parent)) {
// Not inside potential Ember class.
return;
}

if (
!ember.isEmberComponent(context, parentParent) &&
!ember.isEmberController(context, parentParent) &&
!ember.isEmberRoute(context, parentParent) &&
!ember.isEmberMixin(context, parentParent) &&
!ember.isEmberService(context, parentParent)
) {
// Not inside an Ember class.
return;
}

const initPropertyBody = node.value.body.body;
const nodes = findStmtNodes(initPropertyBody);
const hasSuper = checkForSuper(nodes);
if (!hasSuper) {
report(node);
}
},
};
Expand Down

0 comments on commit d74517b

Please sign in to comment.