import { BindingTypes, DOMErrorCodes, ElementTypes, ErrorCodes, NodeTypes, createCompilerError, createDOMCompilerError, createSimpleExpression, findDir, findProp, hasDynamicKeyVBind, isMemberExpression, isStaticArgOf, } from '@vue/compiler-dom' import type { DirectiveTransform } from '../transform' import { IRNodeTypes, type VaporHelper } from '../ir' export const transformVModel: DirectiveTransform = (dir, node, context) => { const { exp, arg } = dir if (!exp) { context.options.onError( createCompilerError(ErrorCodes.X_V_MODEL_NO_EXPRESSION, dir.loc), ) return } // we assume v-model directives are always parsed // (not artificially created by a transform) const rawExp = exp.loc.source // in SFC