UNPKG

@maniascript/mslint

Version:
28 lines (27 loc) 992 B
import {} from '../linter/rule.js'; import { ExpressionStatement, Kind, DotAccessExpression } from '@maniascript/parser'; export const noUnusedExpression = { meta: { id: 'no-unused-expression', description: 'Forbid unused expression', recommended: true }, create(context) { function isForbidden(expression) { if (expression instanceof DotAccessExpression) { return (expression.functionCall === undefined && isForbidden(expression.object)); } else { return expression.kind !== Kind.FunctionCallExpression; } } return { 'ExpressionStatement:enter': (node) => { if (node instanceof ExpressionStatement && isForbidden(node.expression)) { context.report(node, 'Expected an assignement or function call and instead found an expression'); } } }; } };