@@ -158,13 +158,30 @@ let mkTestFileAndOptions source additionalArgs =
158158 let project = Path.GetTempFileName()
159159 let dllName = Path.ChangeExtension( project, " .dll" )
160160 let projFileName = Path.ChangeExtension( project, " .fsproj" )
161- let fileSource1 = " module M"
162- File.WriteAllText( fileName, fileSource1)
161+ File.WriteAllText( fileName, source)
163162
164163 let args = Array.append ( mkProjectCommandLineArgs ( dllName, [ fileName])) additionalArgs
165164 let options = checker.GetProjectOptionsFromCommandLineArgs ( projFileName, args)
166165 fileName, options
167166
167+ let getProjectReferences ( content , dllFiles ) =
168+ let fileName , options =
169+ mkTestFileAndOptions content
170+ [| for dllFile in dllFiles do
171+ yield " -r:" + dllFile |]
172+ let results = checker.ParseAndCheckProject( options) |> Async.RunSynchronously
173+ if results.HasCriticalErrors then
174+ let builder = new System.Text.StringBuilder()
175+ for err in results.Errors do
176+ builder.AppendLine( sprintf " **** %s : %s " ( if err.Severity = FSharpErrorSeverity.Error then " error" else " warning" ) err.Message)
177+ |> ignore
178+ failwith ( builder.ToString())
179+ let assemblies =
180+ results.ProjectContext.GetReferencedAssemblies()
181+ |> List.map( fun x -> x.SimpleName, x)
182+ |> dict
183+ results, assemblies
184+
168185let parseAndCheckFile fileName source options =
169186 match checker.ParseAndCheckFileInProject( fileName, 0 , source, options) |> Async.RunSynchronously with
170187 | parseResults, FSharpCheckFileAnswer.Succeeded( checkResults) -> parseResults, checkResults
0 commit comments