From 420111125bd87604ca2a700181e73e17d33a4ba2 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 10 Nov 2026 17:25:22 +0000 Subject: [PATCH] WIP: Failing self-verifying test for ByRef parameterized property write-back (#909) Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_019FEr8FVAmHV9bscZ82CChg --- .../VBToCS/ByRefParameterizedPropertyTests.vb | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 Tests/TestData/SelfVerifyingTests/VBToCS/ByRefParameterizedPropertyTests.vb diff --git a/Tests/TestData/SelfVerifyingTests/VBToCS/ByRefParameterizedPropertyTests.vb b/Tests/TestData/SelfVerifyingTests/VBToCS/ByRefParameterizedPropertyTests.vb new file mode 100644 index 000000000..c5a164533 --- /dev/null +++ b/Tests/TestData/SelfVerifyingTests/VBToCS/ByRefParameterizedPropertyTests.vb @@ -0,0 +1,48 @@ +Imports System.Collections.Generic +Imports Xunit + +Public Class ByRefParameterizedPropertyTests + + Public Sub ParameterizedPropertyIsWrittenBackThroughItsSetterIssue909() + Dim db As New Db + db.Get_Equal(db.Qr(1, 21)) + Assert.Equal("changed", db.Qr(1, 21)) + Assert.Equal("get 1,21;set 1,21=changed;get 1,21", String.Join(";", db.Log)) + End Sub + + + Public Sub IndexArgumentsAreEvaluatedOnce() + Dim db As New Db + Dim calls = 0 + db.Get_Equal(db.Qr(NextIndex(calls), 21)) + Assert.Equal(1, calls) + Assert.Equal("get 1,21;set 1,21=changed", String.Join(";", db.Log)) + End Sub + + Private Shared Function NextIndex(ByRef calls As Integer) As Integer + calls += 1 + Return calls + End Function + + Private Class Db + Public ReadOnly Log As New List(Of String) + Private ReadOnly _values As New Dictionary(Of String, String) + + Public Sub Get_Equal(ByRef keyValue As String) + keyValue = "changed" + End Sub + + Public Property Qr(tableBuffer As Integer, fieldNumber As Integer) As String + Get + Log.Add("get " & tableBuffer & "," & fieldNumber) + Dim value As String = Nothing + _values.TryGetValue(tableBuffer & "," & fieldNumber, value) + Return value + End Get + Set(value As String) + Log.Add("set " & tableBuffer & "," & fieldNumber & "=" & value) + _values(tableBuffer & "," & fieldNumber) = value + End Set + End Property + End Class +End Class