This commit is contained in:
parent
052d0e38a9
commit
77b5121056
|
|
@ -8,9 +8,11 @@ type
|
|||
end;
|
||||
|
||||
begin
|
||||
if new t1 is t1(var a) then
|
||||
var o := new t1;
|
||||
if o is t1(var a) then
|
||||
begin
|
||||
i := 2;
|
||||
assert(o = a);
|
||||
end;
|
||||
assert(i = 2);
|
||||
end.
|
||||
45
TestSuite/Deconstructs3.pas
Normal file
45
TestSuite/Deconstructs3.pas
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
type
|
||||
Person = class
|
||||
name: string;
|
||||
age: integer;
|
||||
|
||||
constructor(name: string; age: integer);
|
||||
begin
|
||||
self.name := name;
|
||||
self.age := age;
|
||||
end;
|
||||
|
||||
procedure Deconstruct(var name: string; var age: integer);
|
||||
begin
|
||||
name := self.name;
|
||||
age := self.age;
|
||||
end;
|
||||
end;
|
||||
|
||||
begin
|
||||
var p := new Person('John', 25);
|
||||
var s := '';
|
||||
var i := 0;
|
||||
if p is Person(var name, var age) then
|
||||
begin
|
||||
s := name;
|
||||
i := age;
|
||||
end;
|
||||
|
||||
assert(s = 'John');
|
||||
assert(i = 25);
|
||||
|
||||
s := '';
|
||||
i := 0;
|
||||
|
||||
match p with
|
||||
Person(name, age):
|
||||
begin
|
||||
s := name;
|
||||
i := age;
|
||||
end;
|
||||
end;
|
||||
|
||||
assert(s = 'John');
|
||||
assert(i = 25);
|
||||
end.
|
||||
|
|
@ -93,9 +93,8 @@ namespace PascalABCCompiler.TreeConverter
|
|||
out type_node[] parameterTypes)
|
||||
{
|
||||
parameterTypes = new type_node[givenParameterTypes.Length];
|
||||
if (candidate.parameters.Count == 0)
|
||||
return false;
|
||||
candidate.parameters[0].name = "Self"; // SSM 23.06.20 #2268 - это если в NET где-то такое нашли
|
||||
if (candidate.parameters.Count > 0)
|
||||
candidate.parameters[0].name = "Self"; // SSM 23.06.20 #2268 - это если в NET где-то такое нашли
|
||||
var selfParameter = candidate.is_extension_method ? candidate.parameters.FirstOrDefault(IsSelfParameter) : null;
|
||||
Debug.Assert(!candidate.is_extension_method || selfParameter != null, "Couldn't find self parameter in extension method");
|
||||
var candidateParameterTypes =
|
||||
|
|
|
|||
Loading…
Reference in a new issue