From 43cf831ba3d6993b9b0fae3b15d60e0c144cfa55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D0=BD=D0=B4=D0=B0=D1=80=D0=B5=D0=B2=20=D0=98?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD?= Date: Sun, 15 Mar 2020 17:57:06 +0100 Subject: [PATCH] fix #2190 --- TestSuite/where11.pas | 14 ++++++++++++++ .../TreeConversion/syntax_tree_visitor.cs | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 TestSuite/where11.pas diff --git a/TestSuite/where11.pas b/TestSuite/where11.pas new file mode 100644 index 000000000..d6bdd6df4 --- /dev/null +++ b/TestSuite/where11.pas @@ -0,0 +1,14 @@ +type + + t1 = class where T: t1; + + function p1: T; + begin + var a: t1; + var b := a as T; + end; + + end; + +begin +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index 5ea7fff54..501adcd49 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -3085,7 +3085,7 @@ namespace PascalABCCompiler.TreeConverter } else { - if (tp.is_generic_parameter && !tp.is_class && !(tp.base_type != null && tp.base_type.is_class)) + 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)) 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);