diff --git a/CodeCompletion/DomSyntaxTreeVisitor.cs b/CodeCompletion/DomSyntaxTreeVisitor.cs index 61cdf85f4..bbbefa4ac 100644 --- a/CodeCompletion/DomSyntaxTreeVisitor.cs +++ b/CodeCompletion/DomSyntaxTreeVisitor.cs @@ -2831,6 +2831,14 @@ namespace CodeCompletion else return false; } + if (parameter.param_kind == parametr_kind.var_parametr || parameter.param_kind == parametr_kind.const_parametr) + { + TypeScope param_ts = parameter.sc as TypeScope; + if (param_ts is CompiledScope && ps is CompiledMethodScope) + param_ts = param_ts.GetElementType(); + if (param_ts == null || !ts.IsEqual(param_ts)) + return false; + } } return true; } diff --git a/CodeCompletion/SymTable.cs b/CodeCompletion/SymTable.cs index 678ae7c63..ca3e7f901 100644 --- a/CodeCompletion/SymTable.cs +++ b/CodeCompletion/SymTable.cs @@ -5353,7 +5353,8 @@ namespace CodeCompletion } if (this.ctn == cs.ctn) return true; - + if (cs.ctn.IsByRef && this.ctn == cs.ctn.GetElementType()) + return true; if (this.ctn.IsSubclassOf(cs.ctn)) return true; if (implemented_interfaces != null) diff --git a/TestSuite/intellisense_tests/divrem.pas b/TestSuite/intellisense_tests/divrem.pas new file mode 100644 index 000000000..025eca020 --- /dev/null +++ b/TestSuite/intellisense_tests/divrem.pas @@ -0,0 +1,17 @@ +function mydivrem(a,b: integer; var r: integer): integer; +begin + +end; + +function mydivrem(a,b: int64; var r: int64): int64; +begin + +end; +begin + var rem32: integer; + var rem64: int64; + System.Math.DivRem{@class function Math.DivRem(a: integer; b: integer; var result: integer): integer;@}(1, 1, rem32); + System.Math.DivRem{@class function Math.DivRem(a: int64; b: int64; var result: int64): int64;@}(1, 1, rem64); + mydivrem{@function mydivrem(a: integer; b: integer; var r: integer): integer;@}(1, 1, rem32); + mydivrem{@function mydivrem(a: int64; b: int64; var r: int64): int64;@}(1, 1, rem64); +end. \ No newline at end of file