|
|
@ -3,7 +3,6 @@ import { |
|
|
|
createObjectProperty, |
|
|
|
createSimpleExpression, |
|
|
|
ExpressionNode, |
|
|
|
locStub, |
|
|
|
NodeTypes |
|
|
|
} from '../ast' |
|
|
|
import { createCompilerError, ErrorCodes } from '../errors' |
|
|
@ -18,6 +17,16 @@ export const transformBind: DirectiveTransform = (dir, _node, context) => { |
|
|
|
const { modifiers, loc } = dir |
|
|
|
const arg = dir.arg! |
|
|
|
|
|
|
|
// :arg is replaced by :arg="arg"
|
|
|
|
let { exp } = dir |
|
|
|
if (!exp && arg.type === NodeTypes.SIMPLE_EXPRESSION) { |
|
|
|
const propName = camelize(arg.content) |
|
|
|
exp = dir.exp = createSimpleExpression(propName, false, arg.loc) |
|
|
|
if (!__BROWSER__) { |
|
|
|
exp = dir.exp = processExpression(exp, context) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (arg.type !== NodeTypes.SIMPLE_EXPRESSION) { |
|
|
|
arg.children.unshift(`(`) |
|
|
|
arg.children.push(`) || ""`) |
|
|
@ -48,18 +57,6 @@ export const transformBind: DirectiveTransform = (dir, _node, context) => { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// :arg is replaced by :arg="arg"
|
|
|
|
let { exp } = dir |
|
|
|
if (!exp && arg.type === NodeTypes.SIMPLE_EXPRESSION) { |
|
|
|
const propName = camelize(arg.loc.source) |
|
|
|
const simpleExpression = createSimpleExpression(propName, false, { |
|
|
|
...locStub, |
|
|
|
source: propName |
|
|
|
}) |
|
|
|
|
|
|
|
exp = dir.exp = processExpression(simpleExpression, context) |
|
|
|
} |
|
|
|
|
|
|
|
if ( |
|
|
|
!exp || |
|
|
|
(exp.type === NodeTypes.SIMPLE_EXPRESSION && !exp.content.trim()) |
|
|
|