diff --git a/CodeCompletion/DomSyntaxTreeVisitor.cs b/CodeCompletion/DomSyntaxTreeVisitor.cs index e543ddbae..0e7659526 100644 --- a/CodeCompletion/DomSyntaxTreeVisitor.cs +++ b/CodeCompletion/DomSyntaxTreeVisitor.cs @@ -5980,6 +5980,12 @@ namespace CodeCompletion var ne = new new_expr(ntr, new expression_list(new uint64_const(bi.val)), bi.source_context); ne.visit(this); } + + public override void visit(let_var_expr _let_var_expr) + { + var_def_statement vds = new var_def_statement(_let_var_expr.id, _let_var_expr.ex, _let_var_expr.source_context); + vds.visit(this); + } } } diff --git a/CodeCompletion/FindReferences.cs b/CodeCompletion/FindReferences.cs index 68f7bbc4d..797f1c1b9 100644 --- a/CodeCompletion/FindReferences.cs +++ b/CodeCompletion/FindReferences.cs @@ -244,6 +244,19 @@ namespace CodeCompletion _var_def_statement.inital_value.visit(this); } + public override void visit(let_var_expr _let_var_expr) + { + if (for_refactoring) + { + IBaseScope ss = entry_scope.FindScopeByLocation(_let_var_expr.id.source_context.begin_position.line_num, _let_var_expr.id.source_context.begin_position.column_num); + if (ss != null && ss.IsEqual(founded_scope)) + pos_list.Add(get_position(_let_var_expr.id)); + } + + if (_let_var_expr.ex != null) + _let_var_expr.ex.visit(this); + } + public override void visit(declaration _declaration) { throw new NotImplementedException(); diff --git a/TestSuite/intellisense_tests/let1.pas b/TestSuite/intellisense_tests/let1.pas new file mode 100644 index 000000000..fff03b5d0 --- /dev/null +++ b/TestSuite/intellisense_tests/let1.pas @@ -0,0 +1,5 @@ +begin + var a := (var b{@var b: integer;@} := 1); + writeln(b{@var b: integer;@}); + var r{@var r: real;@} := (var r2 := 2.3); +end. \ No newline at end of file diff --git a/TestSuite/refactoring_tests/rename_tests/let1.pas b/TestSuite/refactoring_tests/rename_tests/let1.pas new file mode 100644 index 000000000..d86320523 --- /dev/null +++ b/TestSuite/refactoring_tests/rename_tests/let1.pas @@ -0,0 +1,4 @@ +begin + var a := (var {@}b := 1); + writeln({!}b); +end. \ No newline at end of file