fix #1421
This commit is contained in:
parent
a2702ecb73
commit
694c75454e
12
TestSuite/errors/err0296.pas
Normal file
12
TestSuite/errors/err0296.pas
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
type
|
||||
t1 = class end;
|
||||
t2 = class end;
|
||||
i1 = interface end;
|
||||
|
||||
begin
|
||||
var a1: t1;
|
||||
var a2: t2;
|
||||
var a3: i1;
|
||||
|
||||
if a1 is t2(var o) then;
|
||||
end.
|
||||
12
TestSuite/errors/err0297.pas
Normal file
12
TestSuite/errors/err0297.pas
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
type
|
||||
t1 = class end;
|
||||
t2 = class end;
|
||||
i1 = interface end;
|
||||
|
||||
begin
|
||||
var a1: t1;
|
||||
var a2: t2;
|
||||
var a3: i1;
|
||||
|
||||
if a2 is t1(var o) then;
|
||||
end.
|
||||
12
TestSuite/errors/err0298.pas
Normal file
12
TestSuite/errors/err0298.pas
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
type
|
||||
t1 = class end;
|
||||
t2 = class end;
|
||||
i1 = interface end;
|
||||
|
||||
begin
|
||||
var a1: t1;
|
||||
var a2: t2;
|
||||
var a3: i1;
|
||||
|
||||
if a3 is t1(var o) then;
|
||||
end.
|
||||
12
TestSuite/errors/err0299.pas
Normal file
12
TestSuite/errors/err0299.pas
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
type
|
||||
t1 = class end;
|
||||
t2 = class end;
|
||||
i1 = interface end;
|
||||
|
||||
begin
|
||||
var a1: t1;
|
||||
var a2: t2;
|
||||
var a3: i1;
|
||||
|
||||
if a3 is t2(var o) then;
|
||||
end.
|
||||
18
TestSuite/patterns-types-interfaces-matching.pas
Normal file
18
TestSuite/patterns-types-interfaces-matching.pas
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
type
|
||||
t1 = class end;
|
||||
t2 = class end;
|
||||
i1 = interface end;
|
||||
|
||||
begin
|
||||
var a1: t1;
|
||||
var a2: t2;
|
||||
var a3: i1;
|
||||
|
||||
if a1 is t1(var o) then;
|
||||
if a1 is i1(var o) then;
|
||||
|
||||
if a2 is t2(var o) then;
|
||||
if a2 is i1(var o) then;
|
||||
|
||||
if a3 is i1(var o) then;
|
||||
end.
|
||||
|
|
@ -254,7 +254,7 @@ namespace PascalABCCompiler.TreeConverter
|
|||
if (type_table.is_derived(type, expression) ||
|
||||
type_table.is_derived(expression, type) ||
|
||||
AreTheSameType(type, expression) ||
|
||||
type.IsInterface && expression.IsInterface)
|
||||
type.IsInterface)
|
||||
return;
|
||||
|
||||
AddError(get_location(matchedExpression), "EXPRESSION_OF_TYPE_{0}_CANNOT_BE_MATCHED_AGAINST_PATTERN_WITH_TYPE_{1}", expression.name, type.name);
|
||||
|
|
|
|||
Loading…
Reference in a new issue