44module internal Microsoft.FSharp.Compiler.CompileOps
55
66open System
7+ open System.Collections .Concurrent
8+ open System.Collections .Generic
79open System.Diagnostics
8- open System.Text
910open System.IO
10- open System.Collections .Generic
1111open System.Runtime .CompilerServices
12+ open System.Text
1213
1314open Internal.Utilities
1415open Internal.Utilities .Text
@@ -3509,14 +3510,14 @@ let PostParseModuleSpecs (defaultNamespace, filename, isLastCompiland, ParsedSig
35093510 ParsedInput.SigFile( ParsedSigFileInput( filename, qualName, scopedPragmas, hashDirectives, specs))
35103511
35113512/// Checks if a module name is already given and deduplicates the name if needed.
3512- let DeduplicateModuleName ( moduleNamesDict : Dictionary < string , Set < string >>) ( paths : Set < string >) path ( qualifiedNameOfFile : QualifiedNameOfFile ) =
3513+ let DeduplicateModuleName ( moduleNamesDict : IDictionary < string , Set < string >>) ( paths : Set < string >) path ( qualifiedNameOfFile : QualifiedNameOfFile ) =
35133514let count = if paths.Contains paththen paths.Countelse paths.Count+ 1
35143515 moduleNamesDict.[ qualifiedNameOfFile.Text] <- Set.add path paths
35153516let id = qualifiedNameOfFile.Id
35163517if count= 1 then qualifiedNameOfFileelse QualifiedNameOfFile( Ident( id.idText+ " ___" + count.ToString(), id.idRange))
35173518
35183519/// Checks if a ParsedInput is using a module name that was already given and deduplicates the name if needed.
3519- let DeduplicateParsedInputModuleName ( moduleNamesDict : Dictionary < string , Set < string >>) input =
3520+ let DeduplicateParsedInputModuleName ( moduleNamesDict : IDictionary < string , Set < string >>) input =
35203521match inputwith
35213522| ParsedInput.ImplFile( ParsedImplFileInput.ParsedImplFileInput( fileName, isScript, qualifiedNameOfFile, scopedPragmas, hashDirectives, modules, ( isLastCompiland, isExe))) ->
35223523let path = Path.GetDirectoryName fileName
@@ -3525,7 +3526,7 @@ let DeduplicateParsedInputModuleName (moduleNamesDict:Dictionary<string, Set<str
35253526let qualifiedNameOfFile = DeduplicateModuleName moduleNamesDict paths path qualifiedNameOfFile
35263527 ParsedInput.ImplFile( ParsedImplFileInput.ParsedImplFileInput( fileName, isScript, qualifiedNameOfFile, scopedPragmas, hashDirectives, modules, ( isLastCompiland, isExe)))
35273528| _ ->
3528- moduleNamesDict.Add ( qualifiedNameOfFile.Text, Set.singleton path)
3529+ moduleNamesDict.[ qualifiedNameOfFile.Text] <- Set.singleton path
35293530 input
35303531| ParsedInput.SigFile( ParsedSigFileInput.ParsedSigFileInput( fileName, qualifiedNameOfFile, scopedPragmas, hashDirectives, modules)) ->
35313532let path = Path.GetDirectoryName fileName
@@ -3534,7 +3535,7 @@ let DeduplicateParsedInputModuleName (moduleNamesDict:Dictionary<string, Set<str
35343535let qualifiedNameOfFile = DeduplicateModuleName moduleNamesDict paths path qualifiedNameOfFile
35353536 ParsedInput.SigFile( ParsedSigFileInput.ParsedSigFileInput( fileName, qualifiedNameOfFile, scopedPragmas, hashDirectives, modules))
35363537| _ ->
3537- moduleNamesDict.Add ( qualifiedNameOfFile.Text, Set.singleton path)
3538+ moduleNamesDict.[ qualifiedNameOfFile.Text] <- Set.singleton path
35383539 input
35393540
35403541let ParseInput ( lexer , errorLogger : ErrorLogger , lexbuf : UnicodeLexing.Lexbuf , defaultNamespace , filename , isLastCompiland ) =