bug fix #2146
This commit is contained in:
parent
ecdf35ab53
commit
38cc2e026f
|
|
@ -1434,21 +1434,30 @@ namespace PascalABCCompiler.PCU
|
|||
{
|
||||
common_namespace_function_node orig = GetNamespaceFunctionByOffset();
|
||||
List<type_node> parameters = GetTypesList();
|
||||
return orig.get_instance(parameters, false, null) as generic_namespace_function_instance_node;
|
||||
int tmp_pos = (int)br.BaseStream.Position;
|
||||
var instance = orig.get_instance(parameters, false, null) as generic_namespace_function_instance_node;
|
||||
br.BaseStream.Seek(tmp_pos, SeekOrigin.Begin);
|
||||
return instance;
|
||||
}
|
||||
|
||||
private function_node GetCompiledGenericMethodInstanceReference()
|
||||
{
|
||||
compiled_function_node orig = GetCompiledMethod(br.ReadInt32());
|
||||
List<type_node> parameters = GetTypesList();
|
||||
return orig.get_instance(parameters, false, null);
|
||||
int tmp_pos = (int)br.BaseStream.Position;
|
||||
var instance = orig.get_instance(parameters, false, null);
|
||||
br.BaseStream.Seek(tmp_pos, SeekOrigin.Begin);
|
||||
return instance;
|
||||
}
|
||||
|
||||
private generic_method_instance_node GetCommonGenericMethodInstanceReference()
|
||||
{
|
||||
common_method_node orig = GetMethodByOffset();
|
||||
List<type_node> parameters = GetTypesList();
|
||||
return orig.get_instance(parameters, false, null) as generic_method_instance_node;
|
||||
int tmp_pos = (int)br.BaseStream.Position;
|
||||
var instance = orig.get_instance(parameters, false, null) as generic_method_instance_node;
|
||||
br.BaseStream.Seek(tmp_pos, SeekOrigin.Begin);
|
||||
return instance;
|
||||
}
|
||||
|
||||
private common_type_node GetGenericParameterOfType()
|
||||
|
|
@ -4553,6 +4562,16 @@ namespace PascalABCCompiler.PCU
|
|||
return lab;
|
||||
}
|
||||
|
||||
public int GetStreamPosition()
|
||||
{
|
||||
return (int)br.BaseStream.Position;
|
||||
}
|
||||
|
||||
public void SetStreamPosition(int pos)
|
||||
{
|
||||
br.BaseStream.Seek(pos, SeekOrigin.Begin);
|
||||
}
|
||||
|
||||
/*private List<label_node> CreateLabels()
|
||||
{
|
||||
int count = br.ReadInt32();
|
||||
|
|
|
|||
20
TestSuite/units/u_where1.pas
Normal file
20
TestSuite/units/u_where1.pas
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
unit u_where1;
|
||||
|
||||
var i: integer;
|
||||
|
||||
type
|
||||
t1<T> = class end;
|
||||
|
||||
procedure p0<T,TEl>(a: T); where T: t1<TEl>;
|
||||
begin
|
||||
i := 1;
|
||||
end;
|
||||
|
||||
procedure p1;
|
||||
begin
|
||||
p0&<t1<byte>,byte>(new t1<byte>);
|
||||
end;
|
||||
begin
|
||||
p1;
|
||||
assert(i = 1);
|
||||
end.
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
unit u_while1;
|
||||
unit u_while1;
|
||||
begin
|
||||
var i := 1;
|
||||
var s := 0;
|
||||
|
|
|
|||
1
TestSuite/usesunits/use_where1.pas
Normal file
1
TestSuite/usesunits/use_where1.pas
Normal file
|
|
@ -0,0 +1 @@
|
|||
uses u_where1; begin end.
|
||||
Loading…
Reference in a new issue