diff --git a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/ir2wasm/BodyGenerator.kt b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/ir2wasm/BodyGenerator.kt index c3378ad1657..3aa3e1ab49d 100644 --- a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/ir2wasm/BodyGenerator.kt +++ b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/ir2wasm/BodyGenerator.kt @@ -220,17 +220,20 @@ class BodyGenerator( val field = expression.symbol.owner val receiver = expression.receiver + val location = expression.getSourceLocation() + if (receiver != null) { generateExpression(receiver) generateExpression(expression.value) body.buildStructSet( struct = context.referenceGcType(field.parentAsClass.symbol), fieldId = context.getStructFieldRef(field), + location ) body.commentPreviousInstr { "name: ${field.name}, type: ${field.type.render()}" } } else { generateExpression(expression.value) - body.buildSetGlobal(context.referenceGlobalField(expression.symbol), expression.getSourceLocation()) + body.buildSetGlobal(context.referenceGlobalField(expression.symbol), location) body.commentPreviousInstr { "type: ${field.type.render()}" } } diff --git a/wasm/wasm.ir/src/org/jetbrains/kotlin/wasm/ir/WasmExpressionBuilder.kt b/wasm/wasm.ir/src/org/jetbrains/kotlin/wasm/ir/WasmExpressionBuilder.kt index 267b30ca17a..b4892297144 100644 --- a/wasm/wasm.ir/src/org/jetbrains/kotlin/wasm/ir/WasmExpressionBuilder.kt +++ b/wasm/wasm.ir/src/org/jetbrains/kotlin/wasm/ir/WasmExpressionBuilder.kt @@ -158,9 +158,10 @@ abstract class WasmExpressionBuilder { buildInstr(WasmOp.STRUCT_NEW, location, WasmImmediate.GcType(struct)) } - fun buildStructSet(struct: WasmSymbol, fieldId: WasmSymbol) { + fun buildStructSet(struct: WasmSymbol, fieldId: WasmSymbol, location: SourceLocation) { buildInstr( WasmOp.STRUCT_SET, + location, WasmImmediate.GcType(struct), WasmImmediate.StructFieldIdx(fieldId) )