MCPcopy
hub / github.com/vuejs/core / validateBrowserExpression

Function validateBrowserExpression

packages/compiler-core/src/validateExpression.ts:28–65  ·  view source on GitHub ↗
(
  node: SimpleExpressionNode,
  context: TransformContext,
  asParams = false,
  asRawStatements = false,
)

Source from the content-addressed store, hash-verified

26 * doesn't prefix expressions.
27 */
28export function validateBrowserExpression(
29 node: SimpleExpressionNode,
30 context: TransformContext,
31 asParams = false,
32 asRawStatements = false,
33): void {
34 const exp = node.content
35
36 // empty expressions are validated per-directive since some directives
37 // do allow empty expressions.
38 if (!exp.trim()) {
39 return
40 }
41
42 try {
43 new Function(
44 asRawStatements
45 ? ` ${exp} `
46 : `return ${asParams ? `(${exp}) => {}` : `(${exp})`}`,
47 )
48 } catch (e: any) {
49 let message = e.message
50 const keywordMatch = exp
51 .replace(stripStringRE, '')
52 .match(prohibitedKeywordRE)
53 if (keywordMatch) {
54 message = `avoid using JavaScript keyword as property name: "${keywordMatch[0]}"`
55 }
56 context.onError(
57 createCompilerError(
58 ErrorCodes.X_INVALID_EXPRESSION,
59 node.loc,
60 undefined,
61 message,
62 ),
63 )
64 }
65}

Callers 4

processIfFunction · 0.90
transformOnFunction · 0.90
finalizeForParseResultFunction · 0.90
processExpressionFunction · 0.90

Calls 1

createCompilerErrorFunction · 0.90

Tested by

no test coverage detected