code: function genDefaultModel (
    el: ASTElement,
    value: string,
    modifiers: ?ASTModifiers
  ): ?boolean {
    const type = el.attrsMap.type
  
    // warn if v-bind:value conflicts with v-model
    // except for inputs with v-bind:type
    /* istanbul ignore next */
    if (process.env.NODE_ENV !== 'production') {
      const value = el.attrsMap['v-bind:value'] || el.attrsMap[':value']
      const typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type']
      if (value && !typeBinding) {
        const binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value'
        warn(
          `${binding}="${value}" conflicts with v-model on the same element ` +
          'because the latter already expands to a value binding internally',
          el.rawAttrsMap[binding]
        )
      }
    }
  
    const { lazy, number, trim } = modifiers || {}
    const needCompositionGuard = !lazy && type !== 'range'
    // input.type=range not supported
    const event = lazy
      ? 'blur'
      : type === 'range'
      /* istanbul ignore next */ ? RANGE_TOKEN
        : 'input'
  
    let valueExpression = '$event.target.value'
    if (trim) {
      valueExpression = `$event.target.value.trim()`
    }
    if (number) {
      valueExpression = `_n(${valueExpression})`
    }
  
    let code = genAssignmentCode(value, valueExpression)
    if (needCompositionGuard) {
      code = `if($event.target.composing)return;${code}`
    }
  
    addProp(el, 'value', `(${value})`)
    addHandler(el, event, code, null, true)
    if (trim || number) {
      addHandler(el, 'blur', '$forceUpdate()')
    }
  }
docs: const assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]' let code = `var $$selectedVal = ${selectedVal};` code = `${code} ${genAssignmentCode(value, assignment)}` addHandler(el, 'change', code, null, true) }