bug fix #260
This commit is contained in:
parent
e6f4a08cc1
commit
48340c1a8c
|
|
@ -287,7 +287,7 @@ namespace PascalABCCompiler.PCU
|
|||
ChangeState(this, PCUReaderWriterState.EndReadTree, unit);
|
||||
return unit;
|
||||
}
|
||||
catch (Exception)
|
||||
catch (Exception ex)
|
||||
{
|
||||
CloseUnit();
|
||||
throw;
|
||||
|
|
@ -476,7 +476,11 @@ namespace PascalABCCompiler.PCU
|
|||
|
||||
type_node tn = GetSpecialTypeReference(names[i].offset);
|
||||
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);
|
||||
}
|
||||
else if (tn is generic_instance_type_node)
|
||||
tn.Scope.AddSymbol(names[i].name, si);
|
||||
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