From 7fe6c8219fe651b98ad4c66693626a63d380f157 Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Tue, 1 Nov 2022 14:17:46 +0100 Subject: [PATCH] fix pascalabcnet/pascalabcnetide#251 --- TestSuite/intellisense_tests/generics27.pas | 17 +++++++++++++++++ TreeConverter/NetWrappers/NetHelper.cs | 7 +++++++ .../TreeConversion/syntax_tree_visitor.cs | 2 +- 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 TestSuite/intellisense_tests/generics27.pas diff --git a/TestSuite/intellisense_tests/generics27.pas b/TestSuite/intellisense_tests/generics27.pas new file mode 100644 index 000000000..a6e7edf9e --- /dev/null +++ b/TestSuite/intellisense_tests/generics27.pas @@ -0,0 +1,17 @@ +type + I1 = interface; + I2 = interface; + + I1 = interface(I2) + + end; + + I2 = interface(I1) + + end; + +type t1=class(I1) end; + +begin + new t1; +end. \ No newline at end of file diff --git a/TreeConverter/NetWrappers/NetHelper.cs b/TreeConverter/NetWrappers/NetHelper.cs index caaae12eb..10203f76a 100644 --- a/TreeConverter/NetWrappers/NetHelper.cs +++ b/TreeConverter/NetWrappers/NetHelper.cs @@ -982,6 +982,13 @@ namespace PascalABCCompiler.NetHelper return true; return false; } + + public static bool IsNetNamespaceInAssembly(string name, Assembly a) + { + if (cur_used_assemblies != null && cur_used_assemblies.ContainsKey(a) && (namespace_assemblies[a] as Hashtable).ContainsKey(name)) + return true; + return false; + } public static bool IsNetNamespace(string name,PascalABCCompiler.TreeRealization.using_namespace_list _unar, out string full_ns) { diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index ccbb79e99..8a5db6245 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -140,7 +140,7 @@ namespace PascalABCCompiler.TreeConverter internal void AddError(location loc, string ErrResourceString, params object[] values) { Errors.Error err = new SimpleSemanticError(loc, ErrResourceString, values); - if (ThrowCompilationError && !for_intellisense) + if ((ThrowCompilationError && !for_intellisense) || ErrResourceString == "FORWARD_DECLARATION_{0}_AS_BASE_TYPE") { throw err; }