bug fix #1415
This commit is contained in:
parent
6f0c7e5b09
commit
d32f637e09
|
|
@ -3008,7 +3008,8 @@ namespace PascalABCCompiler.NETGenerator
|
||||||
private void CreateArrayForClassField(ILGenerator il, FieldBuilder fb, TypeInfo ti, IArrayInitializer InitalValue, ITypeNode ArrayType)
|
private void CreateArrayForClassField(ILGenerator il, FieldBuilder fb, TypeInfo ti, IArrayInitializer InitalValue, ITypeNode ArrayType)
|
||||||
{
|
{
|
||||||
int rank = 1;
|
int rank = 1;
|
||||||
il.Emit(OpCodes.Ldarg_0);
|
if (!fb.IsStatic)
|
||||||
|
il.Emit(OpCodes.Ldarg_0);
|
||||||
if (NETGeneratorTools.IsBoundedArray(ti))
|
if (NETGeneratorTools.IsBoundedArray(ti))
|
||||||
NETGeneratorTools.CreateBoundedArray(il, fb, ti);
|
NETGeneratorTools.CreateBoundedArray(il, fb, ti);
|
||||||
else
|
else
|
||||||
|
|
@ -3023,8 +3024,13 @@ namespace PascalABCCompiler.NETGenerator
|
||||||
if (InitalValue != null)
|
if (InitalValue != null)
|
||||||
{
|
{
|
||||||
LocalBuilder lb = null;
|
LocalBuilder lb = null;
|
||||||
il.Emit(OpCodes.Ldarg_0);
|
if (!fb.IsStatic)
|
||||||
il.Emit(OpCodes.Ldfld, fb);
|
{
|
||||||
|
il.Emit(OpCodes.Ldarg_0);
|
||||||
|
il.Emit(OpCodes.Ldfld, fb);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
il.Emit(OpCodes.Ldsfld, fb);
|
||||||
if (NETGeneratorTools.IsBoundedArray(ti))
|
if (NETGeneratorTools.IsBoundedArray(ti))
|
||||||
{
|
{
|
||||||
lb = il.DeclareLocal(ti.arr_fld.FieldType);
|
lb = il.DeclareLocal(ti.arr_fld.FieldType);
|
||||||
|
|
|
||||||
14
TestSuite/arrays12.pas
Normal file
14
TestSuite/arrays12.pas
Normal 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.
|
||||||
Loading…
Reference in a new issue