bug fix in intellisense: methods of multidimensional arrays are not displayed

This commit is contained in:
Бондарев Иван 2017-01-30 20:48:17 +01:00
parent 709c12ade7
commit 36ba728b27
2 changed files with 8 additions and 18 deletions

View file

@ -3018,7 +3018,7 @@ namespace CodeCompletion
public override List<SymScope> FindOverloadNamesOnlyInType(string name)
{
if (!is_dynamic_arr)
if (!is_dynamic_arr && !IsMultiDynArray)
return new List<SymScope>();
List<SymScope> syms = base.FindOverloadNamesOnlyInType(name);
if (implemented_interfaces != null)
@ -3037,7 +3037,7 @@ namespace CodeCompletion
public override SymScope FindName(string name)
{
if (!is_dynamic_arr)
if (!is_dynamic_arr && !IsMultiDynArray)
return null;
SymScope sc = null;
if (baseScope != null && is_dynamic_arr) sc = baseScope.FindNameOnlyInType(name);
@ -3049,7 +3049,7 @@ namespace CodeCompletion
public override List<SymScope> FindOverloadNames(string name)
{
List<SymScope> names = new List<SymScope>();
if (!is_dynamic_arr)
if (!is_dynamic_arr && !IsMultiDynArray)
return names;
if (baseScope != null && is_dynamic_arr) names.AddRange(baseScope.FindOverloadNamesOnlyInType(name));
if (topScope != null)
@ -3059,7 +3059,7 @@ namespace CodeCompletion
public override SymScope FindNameInAnyOrder(string name)
{
if (!is_dynamic_arr)
if (!is_dynamic_arr && !IsMultiDynArray)
return null;
SymScope sc = null;
if (baseScope != null && is_dynamic_arr) sc = baseScope.FindNameOnlyInType(name);
@ -3109,20 +3109,6 @@ namespace CodeCompletion
return this.indexes.Length == arrs.indexes.Length;
}
return true;
/*if (this.indexes == null && arrs.indexes == null) return true;//?????
if (this.indexes != null && arrs.indexes != null)
{
if (this.indexes.Length != arrs.indexes.Length) return false;
for (int i=0; i<this.indexes.Length; i++)
if (this.indexes[i] == null && arrs.indexes[i] == null)
continue;
else if (this.indexes[i] == null && arrs.indexes[i] != null || this.indexes[i] != null && arrs.indexes[i] == null)
return false;
else
if (!this.indexes[i].IsEqual(arrs.indexes[i])) return false;
return true;
}
return false;*/
}
public override bool IsEqual(SymScope ts)

View file

@ -2908,6 +2908,10 @@ namespace PascalABCCompiler.PCU
cnfn.ConnectedToType.base_type.Scope.AddSymbol(cnfn.name, new SymbolInfo(cnfn));
else if (cnfn.ConnectedToType is compiled_generic_instance_type_node && cnfn.ConnectedToType.original_generic.Scope != null)
cnfn.ConnectedToType.original_generic.Scope.AddSymbol(cnfn.name, new SymbolInfo(cnfn));
else if (cnfn.ConnectedToType != null && cnfn.ConnectedToType.IsDelegate && cnfn.ConnectedToType.base_type.IsDelegate)
compiled_type_node.get_type_node(typeof(Delegate)).Scope.AddSymbol(cnfn.name, new SymbolInfo(cnfn));
else if (cnfn.ConnectedToType != null && cnfn.ConnectedToType.type_special_kind == SemanticTree.type_special_kind.typed_file && cnfn.ConnectedToType.element_type.is_generic_parameter && SystemLibrary.SystemLibInitializer.TypedFileType.sym_info != null)
(SystemLibrary.SystemLibInitializer.TypedFileType.sym_info as type_node).Scope.AddSymbol(cnfn.name, new SymbolInfo(cnfn));
br.BaseStream.Seek(pos,SeekOrigin.Begin);
return cnfn;
}