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();
|
common_namespace_function_node orig = GetNamespaceFunctionByOffset();
|
||||||
List<type_node> parameters = GetTypesList();
|
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()
|
private function_node GetCompiledGenericMethodInstanceReference()
|
||||||
{
|
{
|
||||||
compiled_function_node orig = GetCompiledMethod(br.ReadInt32());
|
compiled_function_node orig = GetCompiledMethod(br.ReadInt32());
|
||||||
List<type_node> parameters = GetTypesList();
|
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()
|
private generic_method_instance_node GetCommonGenericMethodInstanceReference()
|
||||||
{
|
{
|
||||||
common_method_node orig = GetMethodByOffset();
|
common_method_node orig = GetMethodByOffset();
|
||||||
List<type_node> parameters = GetTypesList();
|
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()
|
private common_type_node GetGenericParameterOfType()
|
||||||
|
|
@ -4553,6 +4562,16 @@ namespace PascalABCCompiler.PCU
|
||||||
return lab;
|
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()
|
/*private List<label_node> CreateLabels()
|
||||||
{
|
{
|
||||||
int count = br.ReadInt32();
|
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
|
begin
|
||||||
var i := 1;
|
var i := 1;
|
||||||
var s := 0;
|
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