bug fix issue #110
This commit is contained in:
parent
cb7236ab16
commit
29682aa824
|
|
@ -2804,6 +2804,8 @@ namespace PascalABCCompiler.PCU
|
|||
cnfn.ConnectedToType.base_type.Scope.AddSymbol(cnfn.name, new SymbolInfo(cnfn));
|
||||
else if (cnfn.ConnectedToType is compiled_generic_instance_type_node && cnfn.ConnectedToType.original_generic.Scope != null)
|
||||
cnfn.ConnectedToType.original_generic.Scope.AddSymbol(cnfn.name, new SymbolInfo(cnfn));
|
||||
else if (cnfn.ConnectedToType != null && cnfn.ConnectedToType.IsDelegate && cnfn.ConnectedToType.base_type.IsDelegate)
|
||||
compiled_type_node.get_type_node(typeof(Delegate)).Scope.AddSymbol(cnfn.name, new SymbolInfo(cnfn));
|
||||
return cnfn;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1060,7 +1060,9 @@ namespace PascalABCCompiler.NetHelper
|
|||
if (si.sym_info is common_namespace_function_node)
|
||||
{
|
||||
function_node fn = si.sym_info as function_node;
|
||||
if (fn.return_value_type == to && fn.parameters.Count == 1 && fn.parameters[0].type == from)
|
||||
if ((fn.return_value_type == to || fn.return_value_type.original_generic == to) &&
|
||||
fn.parameters.Count == 1 &&
|
||||
(fn.parameters[0].type == from || fn.parameters[0].type.original_generic == from))
|
||||
{
|
||||
return fn;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12171,6 +12171,8 @@ namespace PascalABCCompiler.TreeConverter
|
|||
top_function.ConnectedToType.base_type.Scope.AddSymbol(top_function.name, new SymbolInfo(context.top_function));
|
||||
else if (top_function.ConnectedToType is compiled_generic_instance_type_node && top_function.ConnectedToType.original_generic.Scope != null)
|
||||
top_function.ConnectedToType.original_generic.Scope.AddSymbol(top_function.name, new SymbolInfo(context.top_function));
|
||||
else if (top_function.ConnectedToType.IsDelegate && top_function.ConnectedToType.base_type.IsDelegate)
|
||||
compiled_type_node.get_type_node(typeof(Delegate)).Scope.AddSymbol(top_function.name, new SymbolInfo(context.top_function));
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -3398,6 +3398,17 @@ namespace PascalABCCompiler.TreeRealization
|
|||
fn = NetHelper.NetHelper.get_implicit_conversion(this, this, cctn, scope);
|
||||
if (fn is compiled_function_node)
|
||||
_implicit_convertions_to.Add(cctn, fn);
|
||||
/*else if (_compiled_type.IsGenericType && !_compiled_type.IsGenericTypeDefinition)
|
||||
{
|
||||
compiled_type_node orig_generic = compiled_type_node.get_type_node(_compiled_type.GetGenericTypeDefinition());
|
||||
compiled_type_node orig_generic2 = compiled_type_node.get_type_node(cctn.compiled_type.GetGenericTypeDefinition());
|
||||
fn = NetHelper.NetHelper.get_implicit_conversion(orig_generic, orig_generic, orig_generic2, orig_generic.scope);
|
||||
if (fn != null)
|
||||
{
|
||||
//fn = fn.get_instance(this.ge)
|
||||
_implicit_convertions_to.Add(cctn, fn);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
return fn;
|
||||
|
|
@ -4317,7 +4328,8 @@ namespace PascalABCCompiler.TreeRealization
|
|||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return compiled_type_node.get_type_node(typeof(Delegate)).find(name);
|
||||
//return null;
|
||||
}
|
||||
public override SymbolInfo find_in_type(string name, SymbolTable.Scope CurrentScope)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue