explicitly set is_class
This commit is contained in:
parent
64f3ccd6c9
commit
a89fa4fe7b
19
TestSuite/where-array.pas
Normal file
19
TestSuite/where-array.pas
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
type
|
||||
r1 = record end;
|
||||
|
||||
t1<T> = class
|
||||
where T: System.Array;
|
||||
end;
|
||||
|
||||
procedure p1<T>; where T: System.Array;
|
||||
begin end;
|
||||
|
||||
begin
|
||||
|
||||
p1&<array of byte>;
|
||||
p1&<array of r1>;
|
||||
|
||||
new t1<array of byte>;
|
||||
new t1<array of r1>;
|
||||
|
||||
end.
|
||||
|
|
@ -1411,6 +1411,7 @@ namespace PascalABCCompiler.TreeConverter
|
|||
scope,def_loc);
|
||||
(scope as SymbolTable.ClassScope).class_type = tctn; // SSM 02.04.19 - каждый Scope пользовательского класса хранит свой type_node
|
||||
|
||||
tctn.is_class = true;
|
||||
tctn.IsPartial = is_partial;
|
||||
if (partial_class != null)
|
||||
{
|
||||
|
|
@ -1438,6 +1439,7 @@ namespace PascalABCCompiler.TreeConverter
|
|||
scope, def_loc);
|
||||
_cmn.scope.AddSymbol(name, new SymbolInfo(tctn));
|
||||
tctn.IsInterface = false;
|
||||
tctn.is_class = true;
|
||||
_cmn.types.AddElement(tctn);
|
||||
_ctn = tctn;
|
||||
SystemLibrary.SystemLibrary.init_reference_type(tctn);
|
||||
|
|
|
|||
|
|
@ -1995,11 +1995,6 @@ namespace PascalABCCompiler.TreeConverter
|
|||
return find_eq_return_value_method_in_list(fn, funcs);
|
||||
}
|
||||
|
||||
public void init_reference_type(type_node ctn)
|
||||
{
|
||||
SystemLibrary.SystemLibrary.init_reference_type(ctn);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получение compiled_type_node из либо compiled_type_node либо compiled_generic_instance_type_node. Используется ниже локально
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -89,6 +89,7 @@ namespace PascalABCCompiler.TreeConverter
|
|||
compiler_string_consts.get_array_type_name(element_type.name,rank), SemanticTree.type_access_level.tal_public,
|
||||
cmn, convertion_data_and_alghoritms.symbol_table.CreateClassScope(top_scope,SystemLibrary.SystemLibrary.array_base_type.Scope), loc);
|
||||
comtn.internal_type_special_kind = SemanticTree.type_special_kind.array_kind;
|
||||
comtn.is_class = true;
|
||||
comtn.add_internal_interface(aii);
|
||||
if (!types_unsized_arrays.TryGetValue(element_type,out ret))
|
||||
{
|
||||
|
|
@ -250,7 +251,8 @@ namespace PascalABCCompiler.TreeConverter
|
|||
SemanticTree.type_access_level.tal_public, cmn,
|
||||
convertion_data_and_alghoritms.symbol_table.CreateClassScope(top_scope, SystemLibrary.SystemLibrary.delegate_base_type.Scope, "delegate " + name),
|
||||
loc);
|
||||
ctn.IsDelegate = true;
|
||||
ctn.IsDelegate = true;
|
||||
ctn.is_class = true;
|
||||
return ctn;
|
||||
}
|
||||
|
||||
|
|
@ -412,6 +414,7 @@ namespace PascalABCCompiler.TreeConverter
|
|||
common_type_node ctn = new common_type_node(null, name, SemanticTree.type_access_level.tal_public,
|
||||
_cmn, convertion_data_and_alghoritms.symbol_table.CreateClassScope(top_scope, null, "array_type " + name), loc);
|
||||
|
||||
ctn.is_class = true;
|
||||
ctn.SetBaseType(SystemLibrary.SystemLibrary.object_type);
|
||||
//DarkStar Add
|
||||
//loc не нужно мне это! и некому не нужно!
|
||||
|
|
|
|||
Loading…
Reference in a new issue