Add MI/GDB and VSCode tests for anonymous functions.
authorMikhail Kurinnoi <m.kurinnoi@samsung.com>
Tue, 20 Jun 2023 15:30:52 +0000 (18:30 +0300)
committerGleb Balykov/Advanced System SW Lab /SRR/Staff Engineer/Samsung Electronics <g.balykov@samsung.com>
Fri, 7 Jul 2023 07:04:28 +0000 (10:04 +0300)
src/managed/SymbolReader.cs
test-suite/MITestSrcBreakpointResolve/Program.cs
test-suite/VSCodeTestSrcBreakpointResolve/Program.cs

index 9fcc66ef3f5e7e1b0a26d29353b1930649aa0568..86b0a79339e2ca76d3b7eb64f4da4e44c891644a 100644 (file)
@@ -816,6 +816,9 @@ namespace NetCoreDbg
                             break;
                         }
 
+                        // Note, sequence points can't partially overlap each other, since same lemmas can't belong to 2 different sequence points for sure.
+                        // In this case we could check not "line" (start line - end line datas) but only "point" (end line data) for
+                        // current method sequence point and first nested method sequence point.
                         if (current_p.EndLine > nested_start_p.EndLine || (current_p.EndLine == nested_start_p.EndLine && current_p.EndColumn > nested_start_p.EndColumn))
                         {
                             list.Add(new resolved_bp_t(nested_start_p.StartLine, nested_start_p.EndLine, nested_start_p.Offset, nestedToken));
index b7ab65246dafe2bcf5c9ec34ad0571467bed27f5..cae4b309bf99ced00d819cb27a3f27ac8c4cc90b 100644 (file)
@@ -1,6 +1,6 @@
 using System;\r
 using System.IO;\r
-\r
+using System.Collections.Generic;\r
 using NetcoreDbgTest;\r
 using NetcoreDbgTest.MI;\r
 using NetcoreDbgTest.Script;\r
@@ -354,8 +354,14 @@ Label.Breakpoint("resolved_bp4");       Console.WriteLine(
                 Context.EnableBreakpoint(@"__FILE__:__LINE__", "bp18");\r
                 Context.EnableBreakpoint(@"__FILE__:__LINE__", "bp19");\r
                 Context.EnableBreakpoint(@"__FILE__:__LINE__", "bp20");\r
+                Context.EnableBreakpoint(@"__FILE__:__LINE__", "bp20_1");\r
+                Context.EnableBreakpoint(@"__FILE__:__LINE__", "bp20_2");\r
                 Context.EnableBreakpoint(@"__FILE__:__LINE__", "bp21");\r
+                Context.EnableBreakpoint(@"__FILE__:__LINE__", "bp21_1");\r
+                Context.EnableBreakpoint(@"__FILE__:__LINE__", "bp21_2");\r
                 Context.EnableBreakpoint(@"__FILE__:__LINE__", "bp22");\r
+                Context.EnableBreakpoint(@"__FILE__:__LINE__", "bp22_1");\r
+                Context.EnableBreakpoint(@"__FILE__:__LINE__", "bp22_2");\r
                 Context.EnableBreakpoint(@"__FILE__:__LINE__", "bp23");\r
                 Context.EnableBreakpoint(@"__FILE__:__LINE__", "bp24");\r
                 Context.EnableBreakpoint(@"__FILE__:__LINE__", "bp25");\r
@@ -398,7 +404,7 @@ Label.Breakpoint("resolved_bp4");       Console.WriteLine(
             }; void nested_func10() { };                                            Label.Breakpoint("bp18");\r
             nested_func9();\r
 \r
-            void nested_func11() { void nested_func12() { void nested_func13() { \r
+            void nested_func11() { void nested_func12() { void nested_func13() {\r
                                                                                     Label.Breakpoint("bp19");\r
             };                                                                      Label.Breakpoint("resloved_bp19");\r
             nested_func13(); }; \r
@@ -410,6 +416,19 @@ Label.Breakpoint("resolved_bp4");       Console.WriteLine(
             };                                                                      Label.Breakpoint("bp22");\r
             nested_func14();                                                        Label.Breakpoint("bp21");\r
 \r
+            List<string> numbers = new List<string>();\r
+            numbers.Add("1");\r
+            numbers.Add("2");\r
+\r
+Label.Breakpoint("bp20_1");            numbers.ForEach((string number) => {\r
+                Console.WriteLine(number);                                          Label.Breakpoint("bp21_1");\r
+            });                                                                     Label.Breakpoint("bp22_1");\r
+\r
+Label.Breakpoint("bp20_2");            numbers.ForEach(delegate(string number) {\r
+                                                                                    Label.Breakpoint("bp21_2");\r
+                Console.WriteLine(number);                                          Label.Breakpoint("bp21_2_resolved");\r
+            });                                                                     Label.Breakpoint("bp22_2");\r
+\r
             Label.Checkpoint("bp_test_nested", "bp_test_constructor", (Object context) => {\r
                 Context Context = (Context)context;\r
                 Context.WasBreakpointHit(@"__FILE__:__LINE__", "resloved_bp10");\r
@@ -438,6 +457,28 @@ Label.Breakpoint("resolved_bp4");       Console.WriteLine(
                 Context.Continue(@"__FILE__:__LINE__");\r
                 Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp22");\r
                 Context.Continue(@"__FILE__:__LINE__");\r
+\r
+                Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp20_1");\r
+                Context.Continue(@"__FILE__:__LINE__");\r
+                Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp21_1");\r
+                Context.Continue(@"__FILE__:__LINE__");\r
+                Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp22_1");\r
+                Context.Continue(@"__FILE__:__LINE__");\r
+                Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp21_1");\r
+                Context.Continue(@"__FILE__:__LINE__");\r
+                Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp22_1");\r
+                Context.Continue(@"__FILE__:__LINE__");\r
+\r
+                Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp20_2");\r
+                Context.Continue(@"__FILE__:__LINE__");\r
+                Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp21_2_resolved");\r
+                Context.Continue(@"__FILE__:__LINE__");\r
+                Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp22_2");\r
+                Context.Continue(@"__FILE__:__LINE__");\r
+                Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp21_2_resolved");\r
+                Context.Continue(@"__FILE__:__LINE__");\r
+                Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp22_2");\r
+                Context.Continue(@"__FILE__:__LINE__");\r
             });\r
 \r
             // test constructor\r
index db948d7714049552be18ea7344a0ad2f06eb4eda..831a843de25e8e90aa2b082fbd6e97be0572d8d1 100644 (file)
@@ -438,8 +438,14 @@ Label.Breakpoint("resolved_bp4");       Console.WriteLine(
                 Context.AddBreakpoint(@"__FILE__:__LINE__", "bp18");\r
                 Context.AddBreakpoint(@"__FILE__:__LINE__", "bp19");\r
                 Context.AddBreakpoint(@"__FILE__:__LINE__", "bp20");\r
+                Context.AddBreakpoint(@"__FILE__:__LINE__", "bp20_1");\r
+                Context.AddBreakpoint(@"__FILE__:__LINE__", "bp20_2");\r
                 Context.AddBreakpoint(@"__FILE__:__LINE__", "bp21");\r
+                Context.AddBreakpoint(@"__FILE__:__LINE__", "bp21_1");\r
+                Context.AddBreakpoint(@"__FILE__:__LINE__", "bp21_2");\r
                 Context.AddBreakpoint(@"__FILE__:__LINE__", "bp22");\r
+                Context.AddBreakpoint(@"__FILE__:__LINE__", "bp22_1");\r
+                Context.AddBreakpoint(@"__FILE__:__LINE__", "bp22_2");\r
                 Context.AddBreakpoint(@"__FILE__:__LINE__", "bp23");\r
                 Context.AddBreakpoint(@"__FILE__:__LINE__", "bp24");\r
                 Context.AddBreakpoint(@"__FILE__:__LINE__", "bp25");\r
@@ -495,6 +501,19 @@ Label.Breakpoint("resolved_bp4");       Console.WriteLine(
             };                                                                      Label.Breakpoint("bp22");\r
             nested_func14();                                                        Label.Breakpoint("bp21");\r
 \r
+            List<string> numbers = new List<string>();\r
+            numbers.Add("1");\r
+            numbers.Add("2");\r
+\r
+Label.Breakpoint("bp20_1");            numbers.ForEach((string number) => {\r
+                Console.WriteLine(number);                                          Label.Breakpoint("bp21_1");\r
+            });                                                                     Label.Breakpoint("bp22_1");\r
+\r
+Label.Breakpoint("bp20_2");            numbers.ForEach(delegate(string number) {\r
+                                                                                    Label.Breakpoint("bp21_2");\r
+                Console.WriteLine(number);                                          Label.Breakpoint("bp21_2_resolved");\r
+            });                                                                     Label.Breakpoint("bp22_2");\r
+\r
             Label.Checkpoint("bp_test_nested", "bp_test_constructor", (Object context) => {\r
                 Context Context = (Context)context;\r
                 Context.WasBreakpointHit(@"__FILE__:__LINE__", "resloved_bp10");\r
@@ -523,6 +542,28 @@ Label.Breakpoint("resolved_bp4");       Console.WriteLine(
                 Context.Continue(@"__FILE__:__LINE__");\r
                 Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp22");\r
                 Context.Continue(@"__FILE__:__LINE__");\r
+\r
+                Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp20_1");\r
+                Context.Continue(@"__FILE__:__LINE__");\r
+                Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp21_1");\r
+                Context.Continue(@"__FILE__:__LINE__");\r
+                Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp22_1");\r
+                Context.Continue(@"__FILE__:__LINE__");\r
+                Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp21_1");\r
+                Context.Continue(@"__FILE__:__LINE__");\r
+                Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp22_1");\r
+                Context.Continue(@"__FILE__:__LINE__");\r
+\r
+                Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp20_2");\r
+                Context.Continue(@"__FILE__:__LINE__");\r
+                Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp21_2_resolved");\r
+                Context.Continue(@"__FILE__:__LINE__");\r
+                Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp22_2");\r
+                Context.Continue(@"__FILE__:__LINE__");\r
+                Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp21_2_resolved");\r
+                Context.Continue(@"__FILE__:__LINE__");\r
+                Context.WasBreakpointHit(@"__FILE__:__LINE__", "bp22_2");\r
+                Context.Continue(@"__FILE__:__LINE__");\r
             });\r
 \r
             // test constructor\r