diff --git a/CodeCompletion/ExpressionVisitor.cs b/CodeCompletion/ExpressionVisitor.cs index 434e6466a..184b71e9b 100644 --- a/CodeCompletion/ExpressionVisitor.cs +++ b/CodeCompletion/ExpressionVisitor.cs @@ -719,6 +719,7 @@ namespace CodeCompletion _dot_node.left.visit(this); search_all = tmp2; by_dot = tmp; + if (returned_scope != null && returned_scope is ElementScope && (returned_scope as ElementScope).sc is ProcScope) { if (((returned_scope as ElementScope).sc as ProcScope).return_type != null) @@ -728,6 +729,7 @@ namespace CodeCompletion } else if (returned_scope != null && returned_scope is ProcScope) { + ProcScope ps = returned_scope as ProcScope; if (ps.return_type == null) { @@ -1030,6 +1032,8 @@ namespace CodeCompletion (_method_call.dereferencing_value as dot_node).left.visit(this); if (returned_scope is ElementScope) returned_scope = (returned_scope as ElementScope).sc; + else if (returned_scope is ProcScope) + returned_scope = (returned_scope as ProcScope).return_type; obj = returned_scope as TypeScope; by_dot = tmp; if (obj != null && proc.parameters != null && proc.parameters.Count > 0 && !(proc.parameters[0].sc is TemplateParameterScope || proc.parameters[0].sc is UnknownScope)) diff --git a/CodeCompletion/SymTable.cs b/CodeCompletion/SymTable.cs index 538cc9344..3571cdb09 100644 --- a/CodeCompletion/SymTable.cs +++ b/CodeCompletion/SymTable.cs @@ -2004,20 +2004,20 @@ namespace CodeCompletion int ind = this.template_parameters.IndexOf((parameter.sc as TypeScope).Name); ElementScope inst_param = null; if (gen_args.Count > ind && ind != -1) - inst_param = new ElementScope(parameter.si, gen_args[ind], parameter.topScope); + inst_param = new ElementScope(new SymInfo(parameter.si.name, parameter.si.kind, parameter.si.description), gen_args[ind], parameter.topScope); else - inst_param = new ElementScope(parameter.si, parameter.sc, parameter.topScope); + inst_param = new ElementScope(new SymInfo(parameter.si.name, parameter.si.kind, parameter.si.description), parameter.sc, parameter.topScope); instance.parameters.Add(inst_param); } else { ElementScope inst_param = null; if ((parameter.sc as TypeScope).IsGeneric) - inst_param = new ElementScope(parameter.si, (parameter.sc as TypeScope).GetInstance(gen_args), parameter.topScope); + inst_param = new ElementScope(new SymInfo(parameter.si.name, parameter.si.kind, parameter.si.description), (parameter.sc as TypeScope).GetInstance(gen_args), parameter.topScope); else if ((parameter.sc as TypeScope).GetElementType() != null && (parameter.sc as TypeScope).GetElementType().IsGenericParameter) - inst_param = new ElementScope(parameter.si, (parameter.sc as TypeScope).GetInstance(gen_args), parameter.topScope); + inst_param = new ElementScope(new SymInfo(parameter.si.name, parameter.si.kind, parameter.si.description), (parameter.sc as TypeScope).GetInstance(gen_args), parameter.topScope); else - inst_param = new ElementScope(parameter.si, parameter.sc, parameter.topScope); + inst_param = new ElementScope(new SymInfo(parameter.si.name, parameter.si.kind, parameter.si.description), parameter.sc, parameter.topScope); instance.parameters.Add(inst_param); } if (parameter.param_kind == parametr_kind.params_parametr && i < gen_args.Count)