diff --git a/CodeCompletion/FindReferences.cs b/CodeCompletion/FindReferences.cs index 4ab764213..d89fdb108 100644 --- a/CodeCompletion/FindReferences.cs +++ b/CodeCompletion/FindReferences.cs @@ -315,6 +315,10 @@ namespace CodeCompletion public override void visit(for_node _for_node) { + IBaseScope tmp = cur_scope; + cur_scope = entry_scope.FindScopeByLocation(_for_node.source_context.begin_position.line_num, _for_node.source_context.begin_position.column_num); + if (cur_scope == null) + cur_scope = tmp; if (_for_node.loop_variable != null) { ret_tn = cur_scope.FindNameInAnyOrder(_for_node.loop_variable.name); @@ -330,7 +334,10 @@ namespace CodeCompletion if (_for_node.increment_value != null) _for_node.increment_value.visit(this); if (_for_node.statements != null) + { _for_node.statements.visit(this); + } + cur_scope = tmp; } public override void visit(repeat_node _repeat_node) diff --git a/TestSuite/refactoring_tests/rename_tests/for1.pas b/TestSuite/refactoring_tests/rename_tests/for1.pas new file mode 100644 index 000000000..5fd38f102 --- /dev/null +++ b/TestSuite/refactoring_tests/rename_tests/for1.pas @@ -0,0 +1,6 @@ +begin + for var a := 0 to 0 do + for var {@}b := 0 to 0 do + Println({!}b); + +end. \ No newline at end of file diff --git a/TestSuite/refactoring_tests/rename_tests/lambdas1.pas b/TestSuite/refactoring_tests/rename_tests/lambdas1.pas new file mode 100644 index 000000000..76f10680c --- /dev/null +++ b/TestSuite/refactoring_tests/rename_tests/lambdas1.pas @@ -0,0 +1,21 @@ +type + t1 = class + + public class {@}i: integer; + + procedure p1; + begin + var i2: integer; + var p: procedure := () -> begin + + {!}i += 1; + i2 += 1; + end; + p; + end; + + end; + +begin + +end. \ No newline at end of file diff --git a/TestSuite/refactoring_tests/rename_tests/lambdas_generics5.pas b/TestSuite/refactoring_tests/rename_tests/lambdas_generics5.pas new file mode 100644 index 000000000..31071b025 --- /dev/null +++ b/TestSuite/refactoring_tests/rename_tests/lambdas_generics5.pas @@ -0,0 +1,8 @@ +begin + var a := new System.Collections.Generic.List(); + a.Add('abc'); + a.Add('def'); + var b := a.SelectMany(x -> x).Select({@}x -> {!}x); + foreach var c in b do + writeln(c); +end. \ No newline at end of file diff --git a/TestSuite/refactoring_tests/rename_tests/while1.pas b/TestSuite/refactoring_tests/rename_tests/while1.pas new file mode 100644 index 000000000..35b8de274 --- /dev/null +++ b/TestSuite/refactoring_tests/rename_tests/while1.pas @@ -0,0 +1,6 @@ +begin + while true do + for var {@}b := 0 to 0 do + Println({!}b); + +end. \ No newline at end of file diff --git a/VisualPlugins/CompilerController/CompilerInformation.cs b/VisualPlugins/CompilerController/CompilerInformation.cs index 15bbc15a3..6a686fe1f 100644 --- a/VisualPlugins/CompilerController/CompilerInformation.cs +++ b/VisualPlugins/CompilerController/CompilerInformation.cs @@ -256,7 +256,8 @@ namespace VisualPascalABCPlugins private void Button4_Click(object sender, EventArgs e) { - CodeCompletion.CodeCompletionTester.TestRename(@"c:\Work\Miks\_PABCNETGitHub\TestSuite\refactoring_tests\rename_tests"); + CodeCompletion.CodeCompletionTester.TestRename(@"c:\Work\Miks\_PABCNETGitHub\pascalabcnet\TestSuite\refactoring_tests\rename_tests"); + MessageBox.Show("Done"); } private void cbUseSemanticForIntellisense_CheckedChanged(object sender, EventArgs e)