function genCodeFragment(context: CodegenContext) {
let codegen = ''
- let line = 1
- let column = 1
- let offset = 0
+ const pos = { line: 1, column: 1, offset: 0 }
for (let frag of context.code) {
if (!frag) continue
if (loc) addMapping(loc.start, name)
if (newlineIndex === NewlineType.Unknown) {
// multiple newlines, full iteration
- advancePositionWithMutation({ line, column, offset }, code)
+ advancePositionWithMutation(pos, code)
} else {
// fast paths
- offset += code.length
+ pos.offset += code.length
if (newlineIndex === NewlineType.None) {
// no newlines; fast path to avoid newline detection
if (__TEST__ && code.includes('\n')) {
`newlines: ${code.replace(/\n/g, '\\n')}`,
)
}
- column += code.length
+ pos.column += code.length
} else {
// single newline at known index
if (newlineIndex === NewlineType.End) {
`but does not conform: ${code.replace(/\n/g, '\\n')}`,
)
}
- line++
- column = code.length - newlineIndex
+ pos.line++
+ pos.column = code.length - newlineIndex
}
}
if (loc && loc !== locStub) {
_mappings.add({
originalLine: loc.line,
originalColumn: loc.column - 1, // source-map column is 0 based
- generatedLine: line,
- generatedColumn: column - 1,
+ generatedLine: pos.line,
+ generatedColumn: pos.column - 1,
source: context.options.filename,
// @ts-expect-error it is possible to be null
name,
const { call, newline, vaporHelper, helper } = context
const element = `n${oper.element}`
- const expr = genExpression(oper.key, context)
+ const key = genExpression(oper.key, context)
+ const value = genExpression(oper.value, context)
// fast path for static props
if (isString(oper.key) || oper.key.isStatic) {
if (helperName) {
return [
newline(),
- ...call(
- vaporHelper(helperName),
- element,
- omitKey ? false : expr,
- genExpression(oper.value, context),
- ),
+ ...call(vaporHelper(helperName), element, omitKey ? false : key, value),
]
}
}
return [
newline(),
- ...call(
- vaporHelper('setDynamicProp'),
- element,
- genDynamicKey(),
- genExpression(oper.value, context),
- ),
+ ...call(vaporHelper('setDynamicProp'), element, genDynamicKey(), value),
]
function genDynamicKey(): CodeFragment[] {
if (oper.runtimeCamelize) {
- return call(helper('camelize'), expr)
+ return call(helper('camelize'), key)
} else if (oper.modifier) {
- return [`\`${oper.modifier}\${`, ...expr, `}\``]
+ return [`\`${oper.modifier}\${`, ...key, `}\``]
} else {
- return expr
+ return key
}
}
}