This commit is contained in:
Бондарев Иван 2019-01-04 12:57:01 +01:00
parent 6f0c7e5b09
commit d32f637e09
2 changed files with 23 additions and 3 deletions

View file

@ -3008,7 +3008,8 @@ namespace PascalABCCompiler.NETGenerator
private void CreateArrayForClassField(ILGenerator il, FieldBuilder fb, TypeInfo ti, IArrayInitializer InitalValue, ITypeNode ArrayType)
{
int rank = 1;
il.Emit(OpCodes.Ldarg_0);
if (!fb.IsStatic)
il.Emit(OpCodes.Ldarg_0);
if (NETGeneratorTools.IsBoundedArray(ti))
NETGeneratorTools.CreateBoundedArray(il, fb, ti);
else
@ -3023,8 +3024,13 @@ namespace PascalABCCompiler.NETGenerator
if (InitalValue != null)
{
LocalBuilder lb = null;
il.Emit(OpCodes.Ldarg_0);
il.Emit(OpCodes.Ldfld, fb);
if (!fb.IsStatic)
{
il.Emit(OpCodes.Ldarg_0);
il.Emit(OpCodes.Ldfld, fb);
}
else
il.Emit(OpCodes.Ldsfld, fb);
if (NETGeneratorTools.IsBoundedArray(ti))
{
lb = il.DeclareLocal(ti.arr_fld.FieldType);

14
TestSuite/arrays12.pas Normal file
View file

@ -0,0 +1,14 @@
type
t1=class
static a: array of integer := (0,1);
static a2: array[1..2] of integer := (0,1);
b: array of integer := (0,1);
end;
begin
assert(t1.a[1] = 1);
assert(t1.a2[2] = 1);
var o := new t1;
assert(o.b[1] = 1);
end.