diff --git a/CodeCompletion/DomSyntaxTreeVisitor.cs b/CodeCompletion/DomSyntaxTreeVisitor.cs index 3461222bd..01395fb39 100644 --- a/CodeCompletion/DomSyntaxTreeVisitor.cs +++ b/CodeCompletion/DomSyntaxTreeVisitor.cs @@ -5052,7 +5052,10 @@ namespace CodeCompletion } cur_scope = tmp; - ps.return_type = new UnknownScope(new SymInfo("",SymbolKind.Class,""));// returned_scope as TypeScope; + if (_function_lambda_definition.usedkeyword == 2) + ps.return_type = null; + else + ps.return_type = new UnknownScope(new SymInfo("",SymbolKind.Class,""));// returned_scope as TypeScope; returned_scope = new ProcType(ps); } diff --git a/CodeCompletion/SymTable.cs b/CodeCompletion/SymTable.cs index d2bd531fc..f0b21d39a 100644 --- a/CodeCompletion/SymTable.cs +++ b/CodeCompletion/SymTable.cs @@ -1804,6 +1804,8 @@ namespace CodeCompletion return true; if (ts is CompiledScope) return ts.IsConvertable(this); + if (ts is TemplateParameterScope || ts.IsGenericParameter) + return true; return false; } diff --git a/TestSuite/intellisense_tests/generics14.pas b/TestSuite/intellisense_tests/generics14.pas new file mode 100644 index 000000000..42759882b --- /dev/null +++ b/TestSuite/intellisense_tests/generics14.pas @@ -0,0 +1,6 @@ +procedure F() := exit; + +begin + var a{@var a: (procedure,procedure);@} := Rec(procedure() -> exit, procedure() -> exit); // (T1, T2) + var b{@var b: (procedure,procedure);@} := Rec(F, F); +end. \ No newline at end of file