chrome-devtools-frontend
Version:
Chrome DevTools UI
34 lines (30 loc) • 1.12 kB
JavaScript
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
;
module.exports = {
meta: {
type: 'problem',
docs: {
description: 'Checks wasShown() method definitions call super.wasShown();',
category: 'Possible Errors',
},
fixable: 'code',
schema: [] // no options
},
create: function(context) {
return {
MethodDefinition(node) {
const nodeName = node.key.name;
if (node.parent.parent.superClass?.property?.name === 'Widget' && nodeName === 'wasShown') {
const topBodyNode = node.value.body.body[0];
if (!(topBodyNode.type === 'ExpressionStatement' && topBodyNode.expression.type === 'CallExpression' &&
topBodyNode.expression.callee.object.type === 'Super' &&
topBodyNode.expression.callee.property.name === 'wasShown')) {
context.report({node, message: 'Please make sure the first call in wasShown is to super.wasShown().'});
}
}
}
};
}
};