This commit is contained in:
parent
6b25d5943c
commit
23635ace40
9
TestSuite/errors/err0517_as_generic_parameter.pas
Normal file
9
TestSuite/errors/err0517_as_generic_parameter.pas
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
//!Операция as не может быть применена к обобщённому параметру T, не имеющему спецификатора "class"
|
||||
type
|
||||
A<T> = class
|
||||
public static procedure Test(x: T) := Print(x as T);
|
||||
end;
|
||||
|
||||
begin
|
||||
A&<integer>.Test(2); // выводит мусор
|
||||
end.
|
||||
|
|
@ -3179,7 +3179,7 @@ namespace PascalABCCompiler.TreeConverter
|
|||
}
|
||||
else
|
||||
{
|
||||
if (tp.is_generic_parameter && !tp.is_class && !(tp.base_type != null && tp.base_type.is_class) && !(tp.base_type != null && tp.base_type.original_generic != null && tp.base_type.original_generic.is_class))
|
||||
if (tp.is_generic_parameter && !tp.is_class && !(tp.base_type != null && tp.base_type.is_class && tp.base_type != SystemLibrary.SystemLibrary.object_type) && !(tp.base_type != null && tp.base_type.original_generic != null && tp.base_type.original_generic.is_class))
|
||||
AddError(get_location(node.type_def), "OPERATOR_AS_CAN_NOT_BE_USED_WITH_GENERIC_PARAMETER_{0}_WITHOUT_CLASS_CONSTRAINT", tp.name);
|
||||
if (tp.is_value_type)
|
||||
AddError(get_location(node.type_def), "OPERATOR_AS_MUST_BE_USED_WITCH_A_REFERENCE_TYPE_VALUETYPE{0}", tp.PrintableName);
|
||||
|
|
|
|||
Loading…
Reference in a new issue