diff --git a/NETGenerator/NETGenerator.cs b/NETGenerator/NETGenerator.cs index efff77ffe..b910edc64 100644 --- a/NETGenerator/NETGenerator.cs +++ b/NETGenerator/NETGenerator.cs @@ -9685,8 +9685,20 @@ namespace PascalABCCompiler.NETGenerator if (is_constructor || cur_meth.IsStatic == false) pos = (byte)pb.Position; else pos = (byte)(pb.Position - 1); //***********************End of Kolay modified********************** - if (pos <= 255) il.Emit(OpCodes.Ldarga_S, pos); - else il.Emit(OpCodes.Ldarga, pos); + if (value.parameter.parameter_type != parameter_type.var) + { + if (pos <= 255) + il.Emit(OpCodes.Ldarga_S, pos); + else + il.Emit(OpCodes.Ldarga, pos); + } + else + { + if (pos <= 255) + il.Emit(OpCodes.Ldarg_S, pos); + else + il.Emit(OpCodes.Ldarg, pos); + } } else { diff --git a/TestSuite/pointers9.pas b/TestSuite/pointers9.pas new file mode 100644 index 000000000..73520bb37 --- /dev/null +++ b/TestSuite/pointers9.pas @@ -0,0 +1,18 @@ +type + r1 = record end; + +var h1: ^r1; + hh1: ^^r1; + +procedure p1(var h: ^r1); +begin + var hh:=@h; + assert(hh = hh1); + assert(h = h1); +end; + +begin + New(h1); + hh1 := @h1; + p1(h1); +end. \ No newline at end of file