This commit is contained in:
Бондарев Иван 2018-10-04 19:52:02 +02:00
parent 1ac993bc58
commit 226ab08fbd
3 changed files with 22 additions and 0 deletions

View file

@ -0,0 +1,19 @@
type
t1<T>=class
static p: Action<T>;
end;
procedure p0<T>;
begin
var p1: Action<T>;
p1 := o1->t1&<T>.p(o1);//Ошибка: В данной версии компилятора не поддерживается замыкание данного типа символов
p1(default(T));
end;
var i: integer;
begin
t1&<integer>.p := x -> begin i := 1; end;
p0&<integer>;
assert(i = 1);
end.

View file

@ -164,6 +164,7 @@ namespace TreeConverter.LambdaExpressions.Closure
si.sym_info.semantic_node_type == semantic_node_type.common_namespace_node ||
si.sym_info.semantic_node_type == semantic_node_type.compiled_unit_node ||
si.sym_info.semantic_node_type == semantic_node_type.template_type ||
si.sym_info.semantic_node_type == semantic_node_type.generic_indicator ||
si.sym_info.semantic_node_type == semantic_node_type.class_constant_definition ||
si.sym_info.semantic_node_type == semantic_node_type.basic_function_node && idName == "exit")
{

View file

@ -3055,6 +3055,7 @@ namespace PascalABCCompiler.TreeRealization
private void add_delegate_operator(string name, compile_time_executor executor)
{
common_namespace_function_node cnfn = new common_namespace_function_node(name, this, null, null, null);
cnfn.ConnectedToType = this;
cnfn.compile_time_executor = executor;
add_name(name, new SymbolInfo(cnfn));
@ -3064,6 +3065,7 @@ namespace PascalABCCompiler.TreeRealization
cnfn, concrete_parameter_type.cpt_none, null, null);
cnfn.parameters.AddElement(cp1);
cnfn.parameters.AddElement(cp2);
}
//private bool ctors_inited = false;