chore: lint for unused arguments

This commit is contained in:
Evan You
2020-06-12 16:31:31 -04:00
parent 825ec1500f
commit 91fa52850a
7 changed files with 13 additions and 62 deletions

View File

@@ -1,49 +0,0 @@
import { NodeTransform, TransformContext } from '../transform'
import { NodeTypes, SimpleExpressionNode } from '../ast'
/**
* When using the runtime compiler in function mode, some expressions will
* become invalid (e.g. using keyworkds like `class` in expressions) so we need
* to detect them.
*
* This transform is browser-only and dev-only.
*/
export const validateExpression: NodeTransform = (node, context) => {
if (node.type === NodeTypes.INTERPOLATION) {
validateBrowserExpression(node.content as SimpleExpressionNode, context)
} else if (node.type === NodeTypes.ELEMENT) {
// handle directives on element
for (let i = 0; i < node.props.length; i++) {
const dir = node.props[i]
// do not process for v-on & v-for since they are special handled
if (dir.type === NodeTypes.DIRECTIVE && dir.name !== 'for') {
const exp = dir.exp
const arg = dir.arg
// do not process exp if this is v-on:arg - we need special handling
// for wrapping inline statements.
if (
exp &&
exp.type === NodeTypes.SIMPLE_EXPRESSION &&
!(dir.name === 'on' && arg)
) {
validateBrowserExpression(
exp,
context,
// slot args must be processed as function params
dir.name === 'slot'
)
}
if (arg && arg.type === NodeTypes.SIMPLE_EXPRESSION && !arg.isStatic) {
validateBrowserExpression(arg, context)
}
}
}
}
}
export function validateBrowserExpression(
node: SimpleExpressionNode,
context: TransformContext,
asParams = false,
asRawStatements = false
) {}