bug fix #260
This commit is contained in:
parent
e6f4a08cc1
commit
48340c1a8c
|
|
@ -287,7 +287,7 @@ namespace PascalABCCompiler.PCU
|
||||||
ChangeState(this, PCUReaderWriterState.EndReadTree, unit);
|
ChangeState(this, PCUReaderWriterState.EndReadTree, unit);
|
||||||
return unit;
|
return unit;
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
CloseUnit();
|
CloseUnit();
|
||||||
throw;
|
throw;
|
||||||
|
|
@ -476,7 +476,11 @@ namespace PascalABCCompiler.PCU
|
||||||
|
|
||||||
type_node tn = GetSpecialTypeReference(names[i].offset);
|
type_node tn = GetSpecialTypeReference(names[i].offset);
|
||||||
if (tn is compiled_type_node)
|
if (tn is compiled_type_node)
|
||||||
|
{
|
||||||
|
if ((tn as compiled_type_node).scope == null)
|
||||||
|
(tn as compiled_type_node).init_scope();
|
||||||
(tn as compiled_type_node).scope.AddSymbol(names[i].name, si);
|
(tn as compiled_type_node).scope.AddSymbol(names[i].name, si);
|
||||||
|
}
|
||||||
else if (tn is generic_instance_type_node)
|
else if (tn is generic_instance_type_node)
|
||||||
tn.Scope.AddSymbol(names[i].name, si);
|
tn.Scope.AddSymbol(names[i].name, si);
|
||||||
else if (tn is common_type_node)
|
else if (tn is common_type_node)
|
||||||
|
|
|
||||||
47
TestSuite/params9.pas
Normal file
47
TestSuite/params9.pas
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
procedure Test(params arr: array of integer);
|
||||||
|
begin
|
||||||
|
assert(arr[0]=1);
|
||||||
|
assert(arr[1]=2);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function Testsum(params arr: array of integer): integer;
|
||||||
|
begin
|
||||||
|
Result := arr[0]+arr[1];
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Test2;
|
||||||
|
var i2 := Testsum(1,2);
|
||||||
|
procedure Nested;
|
||||||
|
begin
|
||||||
|
Test(1,2);
|
||||||
|
var i := Testsum(1,2);
|
||||||
|
assert(i = 3);
|
||||||
|
assert(i2 = 3);
|
||||||
|
end;
|
||||||
|
begin
|
||||||
|
Test(1,2);
|
||||||
|
Nested;
|
||||||
|
var i := Testsum(1,2);
|
||||||
|
assert(i = 3);
|
||||||
|
assert(i2 = 3);
|
||||||
|
end;
|
||||||
|
|
||||||
|
type TClass = class
|
||||||
|
i := Testsum(1,2);
|
||||||
|
constructor;
|
||||||
|
begin
|
||||||
|
assert(i = 3);
|
||||||
|
Test(1,2);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var i2 := Testsum(1,2);
|
||||||
|
|
||||||
|
begin
|
||||||
|
Test(1,2);
|
||||||
|
Test2;
|
||||||
|
var i := Testsum(1,2);
|
||||||
|
assert(i = 3);
|
||||||
|
assert(i2 = 3);
|
||||||
|
var obj := new TClass;
|
||||||
|
end.
|
||||||
Loading…
Reference in a new issue