Skip to content

Commit a73b207

Browse files
committed
More updates
1 parent f7f7221 commit a73b207

File tree

2 files changed

+45
-52
lines changed

2 files changed

+45
-52
lines changed

src/Compiler/Checking/NameResolution.fs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2143,11 +2143,13 @@ type TcResultsSinkImpl(tcGlobals, ?sourceText: ISourceText) =
21432143
member sink.NotifyNameResolution(endPos, item, tpinst, occurenceType, nenv, ad, m, replace) =
21442144
if isAlreadyDone endPos item m || not (allowedRange m) then () else
21452145

2146-
let replaced =
2147-
match replace with
2148-
| None -> false
2149-
| Some f ->
2146+
let cnr = CapturedNameResolution(item, tpinst, occurenceType, nenv, ad, m)
21502147

2148+
match replace with
2149+
| None ->
2150+
capturedNameResolutions.Add(cnr)
2151+
2152+
| Some f ->
21512153
match item with
21522154
| Item.MethodGroup _ ->
21532155
match capturedMethodGroupResolutions.FindLastIndex(fun cnr -> equals cnr.Range m) with
@@ -2156,13 +2158,11 @@ type TcResultsSinkImpl(tcGlobals, ?sourceText: ISourceText) =
21562158
| _ -> ()
21572159

21582160
match capturedNameResolutions.FindLastIndex(fun cnr -> equals cnr.Range m) with
2159-
| i when i >= 0 && f capturedNameResolutions[i].Item ->
2160-
capturedNameResolutions[i] <- CapturedNameResolution(item, tpinst, occurenceType, nenv, ad, m)
2161-
true
2162-
| _ -> false
2163-
2164-
if not replaced then
2165-
capturedNameResolutions.Add(CapturedNameResolution(item, tpinst, occurenceType, nenv, ad, m))
2161+
| i when i >= 0 ->
2162+
if f capturedNameResolutions[i].Item then
2163+
capturedNameResolutions[i] <- cnr
2164+
| _ ->
2165+
capturedNameResolutions.Add(cnr)
21662166

21672167
member sink.NotifyMethodGroupNameResolution(endPos, item, itemMethodGroup, tpinst, occurenceType, nenv, ad, m, replace) =
21682168
if allowedRange m then

tests/service/ProjectAnalysisTests.fs

Lines changed: 34 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,8 @@ let ``Test project1 all uses of all signature symbols`` () =
355355
yield s.ToString(),
356356
[ for s in wholeProjectResults.GetUsesOfSymbol(s) ->
357357
(Project1.cleanFileName s.FileName, tupsZ s.Range) ] ]
358-
let expected =
358+
359+
allUsesOfAllSymbols |> shouldEqual
359360
[("N", [("file2", ((1, 7), (1, 8)))]);
360361
("val y2", [("file2", ((12, 4), (12, 6)))]);
361362
("val pair2", [("file2", ((23, 10), (23, 15)))]);
@@ -399,19 +400,16 @@ let ``Test project1 all uses of all signature symbols`` () =
399400
("val fff", [("file1", ((7, 4), (7, 7))); ("file2", ((9, 28), (9, 33)))]);
400401
("C",
401402
[("file1", ((3, 5), (3, 6))); ("file1", ((9, 15), (9, 16)));
402-
("file2", ((38, 12), (38, 15))); ("file2", ((38, 22), (38, 25)))]);
403+
("file2", ((38, 12), (38, 15))); ("file2", ((38, 22), (38, 25))); ("file2", ((38, 22), (38, 25)))]);
403404
("member .ctor",
404405
[("file1", ((3, 5), (3, 6))); ("file1", ((9, 15), (9, 16)));
405-
("file2", ((38, 12), (38, 15))); ("file2", ((38, 22), (38, 25)))]);
406+
("file2", ((38, 12), (38, 15))); ("file2", ((38, 22), (38, 25))); ("file2", ((38, 22), (38, 25)))]);
406407
("member get_P", [("file1", ((4, 13), (4, 14)))]);
407408
("property P", [("file1", ((4, 13), (4, 14)))]);
408409
("CAbbrev",
409410
[("file1", ((9, 5), (9, 12))); ("file2", ((39, 12), (39, 21)));
410-
("file2", ((39, 28), (39, 37)))]);
411+
("file2", ((39, 28), (39, 37))); ("file2", ((39, 28), (39, 37)))]);
411412
("property P", [("file1", ((4, 13), (4, 14)))])]
412-
set allUsesOfAllSymbols - set expected |> shouldEqual Set.empty
413-
set expected - set allUsesOfAllSymbols |> shouldEqual Set.empty
414-
(set expected = set allUsesOfAllSymbols) |> shouldEqual true
415413

416414
[<Test>]
417415
let ``Test project1 all uses of all symbols`` () =
@@ -724,36 +722,32 @@ let ``Test project2 all uses of all signature symbols`` () =
724722
[ for s in allSymbols do
725723
let uses = [ for s in wholeProjectResults.GetUsesOfSymbol(s) -> (if s.FileName = Project2.fileName1 then "file1" else "??"), tupsZ s.Range ]
726724
yield s.ToString(), uses ]
727-
let expected =
728-
[("M", [("file1", ((1, 7), (1, 8)))]);
729-
("val c", [("file1", ((19, 4), (19, 5))); ("file1", ((20, 8), (20, 9)))]);
730-
("val GenericFunction",
731-
[("file1", ((22, 4), (22, 19))); ("file1", ((24, 8), (24, 23)))]);
732-
("generic parameter T",
733-
[("file1", ((22, 23), (22, 25))); ("file1", ((22, 30), (22, 32)));
734-
("file1", ((22, 45), (22, 47))); ("file1", ((22, 50), (22, 52)))]);
735-
("DUWithNormalFields", [("file1", ((3, 5), (3, 23)))]);
736-
("DU1", [("file1", ((4, 6), (4, 9))); ("file1", ((8, 8), (8, 11)))]);
737-
("field Item1", []); ("field Item2", []);
738-
("DU2", [("file1", ((5, 6), (5, 9))); ("file1", ((9, 8), (9, 11)))]);
739-
("D", [("file1", ((6, 6), (6, 7))); ("file1", ((10, 8), (10, 9)))]);
740-
("DUWithNamedFields", [("file1", ((12, 5), (12, 22)))]);
741-
("DU", [("file1", ((12, 25), (12, 27))); ("file1", ((14, 8), (14, 10)))]);
742-
("field x", [("file1", ((12, 31), (12, 32))); ("file1", ((14, 11), (14, 12)))]);
743-
("field y", [("file1", ((12, 41), (12, 42))); ("file1", ((14, 16), (14, 17)))]);
744-
("GenericClass`1",
745-
[("file1", ((16, 5), (16, 17))); ("file1", ((19, 8), (19, 20)))]);
746-
("generic parameter T",
747-
[("file1", ((16, 18), (16, 20))); ("file1", ((17, 34), (17, 36)))]);
748-
("member .ctor",
749-
[("file1", ((16, 5), (16, 17))); ("file1", ((19, 8), (19, 20)))]);
750-
("member GenericMethod",
751-
[("file1", ((17, 13), (17, 26))); ("file1", ((20, 8), (20, 23)))]);
752-
("generic parameter U",
753-
[("file1", ((17, 27), (17, 29))); ("file1", ((17, 41), (17, 43)))])]
754-
set allUsesOfAllSymbols - set expected |> shouldEqual Set.empty
755-
set expected - set allUsesOfAllSymbols |> shouldEqual Set.empty
756-
(set expected = set allUsesOfAllSymbols) |> shouldEqual true
725+
allUsesOfAllSymbols |> shouldEqual
726+
[("M", [("file1", ((1, 7), (1, 8)))]);
727+
("val c", [("file1", ((19, 4), (19, 5))); ("file1", ((20, 8), (20, 9)))]);
728+
("val GenericFunction", [("file1", ((22, 4), (22, 19))); ("file1", ((24, 8), (24, 23)))]);
729+
("generic parameter T", [
730+
("file1", ((22, 23), (22, 25)))
731+
("file1", ((22, 30), (22, 32)))
732+
("file1", ((22, 45), (22, 47)))
733+
("file1", ((22, 50), (22, 52)))
734+
]);
735+
("DUWithNormalFields", [("file1", ((3, 5), (3, 23)))]);
736+
("DU1", [("file1", ((4, 6), (4, 9))); ("file1", ((8, 8), (8, 11)))]);
737+
("field Item1", []); ("field Item2", []);
738+
("DU2", [("file1", ((5, 6), (5, 9))); ("file1", ((9, 8), (9, 11)))]);
739+
("field Item1", []); ("field Item2", []);
740+
("D", [("file1", ((6, 6), (6, 7))); ("file1", ((10, 8), (10, 9)))])
741+
("field Item1", []); ("field Item2", []);
742+
("DUWithNamedFields", [("file1", ((12, 5), (12, 22)))]);
743+
("DU", [("file1", ((12, 25), (12, 27))); ("file1", ((14, 8), (14, 10)))]);
744+
("field x", [("file1", ((12, 31), (12, 32))); ("file1", ((14, 11), (14, 12)))]);
745+
("field y", [("file1", ((12, 41), (12, 42))); ("file1", ((14, 16), (14, 17)))]);
746+
("GenericClass`1", [("file1", ((16, 5), (16, 17))); ("file1", ((19, 8), (19, 20)))]);
747+
("generic parameter T", [("file1", ((16, 18), (16, 20))); ("file1", ((17, 34), (17, 36)))]);
748+
("member .ctor", [("file1", ((16, 5), (16, 17))); ("file1", ((19, 8), (19, 20)))]);
749+
("member GenericMethod", [("file1", ((17, 13), (17, 26))); ("file1", ((20, 8), (20, 23)))]);
750+
("generic parameter U", [("file1", ((17, 27), (17, 29))); ("file1", ((17, 41), (17, 43)))])]
757751

758752
[<Test>]
759753
let ``Test project2 all uses of all symbols`` () =
@@ -807,7 +801,6 @@ let ``Test project2 all uses of all symbols`` () =
807801
("t", "file1", ((17, 31), (17, 32)), []);
808802
("GenericClass", "file1", ((19, 8), (19, 20)), ["member"; "ctor"]);
809803
("int", "file1", ((19, 21), (19, 24)), ["abbrev"])
810-
("GenericClass", "file1", ((19, 8), (19, 20)), ["class"]);
811804
("c", "file1", ((19, 4), (19, 5)), ["val"]);
812805
("c", "file1", ((20, 8), (20, 9)), ["val"]);
813806
("int", "file1", ((20, 24), (20, 27)), ["abbrev"]);
@@ -2185,15 +2178,15 @@ let ``Test Project13 all symbols`` () =
21852178

21862179
allUsesOfAllSymbols |> shouldEqual
21872180
[|("System", "System", "file1", ((4, 14), (4, 20)), [], ["namespace"]);
2188-
("Object", "Object", "file1", ((4, 14), (4, 27)), [], ["class"]);
2181+
("Object", "Object", "file1", ((4, 14), (4, 27)), ["type"], ["class"]);
21892182
("member .ctor", "Object", "file1", ((4, 14), (4, 27)), [], ["member"]);
21902183
("val x1", "x1", "file1", ((4, 4), (4, 6)), ["defn"], ["val"]);
21912184
("System", "System", "file1", ((5, 14), (5, 20)), [], ["namespace"]);
2192-
("DateTime", "DateTime", "file1", ((5, 14), (5, 29)), [], ["valuetype"]);
2185+
("DateTime", "DateTime", "file1", ((5, 14), (5, 29)), ["type"], ["valuetype"]);
21932186
("member .ctor", "DateTime", "file1", ((5, 14), (5, 29)), [], ["member"]);
21942187
("val x2", "x2", "file1", ((5, 4), (5, 6)), ["defn"], ["val"]);
21952188
("System", "System", "file1", ((6, 13), (6, 19)), [], ["namespace"]);
2196-
("DateTime", "DateTime", "file1", ((6, 13), (6, 28)), [], ["valuetype"]);
2189+
("DateTime", "DateTime", "file1", ((6, 13), (6, 28)), ["type"], ["valuetype"]);
21972190
("member .ctor", "DateTime", "file1", ((6, 13), (6, 28)), [], ["member"]);
21982191
("val x3", "x3", "file1", ((6, 4), (6, 6)), ["defn"], ["val"]);
21992192
("ExternalTypes", "ExternalTypes", "file1", ((2, 7), (2, 20)), ["defn"],

0 commit comments

Comments
 (0)