From e6b0fdfe7f4205090541e17c4d9fd45ebb32da79 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: Mon, 19 Feb 2018 20:33:48 +0100 Subject: [PATCH] bug fix #685 --- CodeCompletion/DomSyntaxTreeVisitor.cs | 5 +++-- TestSuite/intellisense_tests/function3.pas | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 TestSuite/intellisense_tests/function3.pas diff --git a/CodeCompletion/DomSyntaxTreeVisitor.cs b/CodeCompletion/DomSyntaxTreeVisitor.cs index 4ca01a1a5..0843d582d 100644 --- a/CodeCompletion/DomSyntaxTreeVisitor.cs +++ b/CodeCompletion/DomSyntaxTreeVisitor.cs @@ -2517,8 +2517,9 @@ namespace CodeCompletion } if (returned_scope != null && returned_scope is ProcScope && (returned_scope as ProcScope).return_type != null) { - if ((returned_scope as ProcScope).parameters.Count == 0) - returned_scope = (returned_scope as ProcScope).return_type; + ProcScope ps = returned_scope as ProcScope; + if (ps.parameters.Count == 0 || ps.is_extension || ps.parameters[0].param_kind == parametr_kind.params_parametr || ps.parameters[0].cnst_val != null) + returned_scope = ps.return_type; return; } else if (returned_scope is ElementScope) diff --git a/TestSuite/intellisense_tests/function3.pas b/TestSuite/intellisense_tests/function3.pas new file mode 100644 index 000000000..2152d3e01 --- /dev/null +++ b/TestSuite/intellisense_tests/function3.pas @@ -0,0 +1,19 @@ +type TClass = class +function f(params arr: array of char): char; +begin + +end; + +function f2(a:integer:=2): integer; +begin + +end; +end; + +begin + var a: sequence of byte; + var b{@var b: array of byte;@} := a.ToArray; + var o := new TClass; + var c{@var c: char;@} := o.f; + var i{@var i: integer;@} := o.f2; +end. \ No newline at end of file