From d0900679e324265593ef107edc40612775c2a0ab 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: Thu, 12 Oct 2017 20:52:33 +0200 Subject: [PATCH] bug fix #518 --- CodeCompletion/FindReferences.cs | 3 ++- CodeCompletion/SymTable.cs | 5 +++-- TestSuite/intellisense_tests/class2.pas | 13 +++++++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 TestSuite/intellisense_tests/class2.pas diff --git a/CodeCompletion/FindReferences.cs b/CodeCompletion/FindReferences.cs index 0bd2b5670..7cf0825b8 100644 --- a/CodeCompletion/FindReferences.cs +++ b/CodeCompletion/FindReferences.cs @@ -70,7 +70,8 @@ namespace CodeCompletion foreach (statement stmt in _statement_list.subnodes) { IBaseScope tmp2 = cur_scope; - cur_scope = cur_scope.FindScopeByLocation(stmt.source_context.begin_position.line_num, stmt.source_context.begin_position.column_num); + if (stmt.source_context != null) + cur_scope = cur_scope.FindScopeByLocation(stmt.source_context.begin_position.line_num, stmt.source_context.begin_position.column_num); if (cur_scope == null) cur_scope = tmp2; stmt.visit(this); diff --git a/CodeCompletion/SymTable.cs b/CodeCompletion/SymTable.cs index 2a4e92abf..b1aff5bbc 100644 --- a/CodeCompletion/SymTable.cs +++ b/CodeCompletion/SymTable.cs @@ -1511,11 +1511,12 @@ namespace CodeCompletion public override SymScope FindName(string name) { //SymScope sc = ht[name] as SymScope; - SymScope sc = def_proc.FindNameOnlyInType(name); + /*SymScope sc = def_proc.FindNameOnlyInType(name); if (sc != null) return sc; if (top_mod_scope != null) return top_mod_scope.FindName(name); - return null; + return null;*/ + return def_proc.FindName(name); } public override SymScope FindNameOnlyInType(string name) diff --git a/TestSuite/intellisense_tests/class2.pas b/TestSuite/intellisense_tests/class2.pas new file mode 100644 index 000000000..77ea2b45d --- /dev/null +++ b/TestSuite/intellisense_tests/class2.pas @@ -0,0 +1,13 @@ +type + t1=class + + i:integer; + + procedure p1; + + end; + +procedure t1.p1 := writeln(i{@var t1.i: integer;@}); + +begin +end. \ No newline at end of file