This commit is contained in:
parent
6d798fcce5
commit
289bf45e82
|
|
@ -518,9 +518,20 @@ namespace PascalABCCompiler.NETGenerator {
|
|||
private MethodInfo arr_mi=null;
|
||||
private Hashtable pas_defs = new Hashtable();
|
||||
private Hashtable memoized_exprs = new Hashtable();
|
||||
private Hashtable dummy_methods = new Hashtable();
|
||||
|
||||
public Helper() {}
|
||||
|
||||
public void AddDummyMethod(TypeBuilder tb, MethodBuilder mb)
|
||||
{
|
||||
dummy_methods[tb] = mb;
|
||||
}
|
||||
|
||||
public MethodBuilder GetDummyMethod(TypeBuilder tb)
|
||||
{
|
||||
return dummy_methods[tb] as MethodBuilder;
|
||||
}
|
||||
|
||||
public void AddPascalTypeReference(ITypeNode tn, Type t)
|
||||
{
|
||||
pas_defs[tn] = t;
|
||||
|
|
|
|||
|
|
@ -276,9 +276,13 @@ namespace PascalABCCompiler.NETGenerator
|
|||
if (ConvertedConstants.ContainsKey(c))
|
||||
return ConvertedConstants[c];
|
||||
ILGenerator ilb = il;
|
||||
il = ModulesInitILGenerators[cur_unit_type];
|
||||
if (entry_type != null && false)
|
||||
il = ModulesInitILGenerators[entry_type];
|
||||
else
|
||||
il = ModulesInitILGenerators[cur_unit_type];
|
||||
ConvertConstantDefinitionNode(null, GetTempName(), c.type, c);
|
||||
il = ilb;
|
||||
il.Emit(OpCodes.Call, helper.GetDummyMethod(cur_unit_type));
|
||||
return ConvertedConstants[c];
|
||||
}
|
||||
|
||||
|
|
@ -789,6 +793,9 @@ namespace PascalABCCompiler.NETGenerator
|
|||
if (save_debug_info) doc = sym_docs[cnns[iii].Location == null ? SourceFileName : cnns[iii].Location.document.file_name];
|
||||
cur_type = NamespacesTypes[cnns[iii]];
|
||||
cur_unit_type = NamespacesTypes[cnns[iii]];
|
||||
MethodBuilder mb = cur_unit_type.DefineMethod("$dummy$", MethodAttributes.Public | MethodAttributes.Static);
|
||||
mb.GetILGenerator().Emit(OpCodes.Ret);
|
||||
helper.AddDummyMethod(cur_unit_type, mb);
|
||||
ConvertTypeMemberHeaders(cnns[iii].types);
|
||||
}
|
||||
|
||||
|
|
|
|||
12
TestSuite/units/u_classconst2.pas
Normal file
12
TestSuite/units/u_classconst2.pas
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
unit u_classconst2;
|
||||
type
|
||||
t1 = class
|
||||
public const arr: array of string = ('abc', 'def');
|
||||
|
||||
public static function f1: array of string := arr;
|
||||
|
||||
end;
|
||||
|
||||
begin
|
||||
|
||||
end.
|
||||
4
TestSuite/usesunits/use_classconst2.pas
Normal file
4
TestSuite/usesunits/use_classconst2.pas
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
uses u_classconst2;
|
||||
begin
|
||||
assert(ArrEqual(t1.f1, |'abc','def'|));
|
||||
end.
|
||||
Loading…
Reference in a new issue