blob: 3dbd6c4597df0657841ddd18229190d2dbbfbe2d [file]
// 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.
'use strict';
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().'});
}
}
}
};
}
};