Skip to content

Commit cb4a99f

Browse files
committed
changes - not working
1 parent ed795dd commit cb4a99f

10 files changed

Lines changed: 34 additions & 291 deletions

File tree

src/Compiler/Driver/ParseAndCheckInputs.fs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1491,14 +1491,6 @@ let CheckOneInputAux'
14911491
// (tcGlobals, amap, hadSig, prefixPathOpt, tcSink, tcState.tcsTcImplEnv, qualNameOfFile, sigFileType)
14921492
// tcState
14931493

1494-
// TODO Do we
1495-
let _, _, _, _ = fsiPartialResult
1496-
1497-
let ccuSigForFile, _ =
1498-
AddCheckResultsToTcState
1499-
(tcGlobals, amap, true, prefixPathOpt, tcSink, tcState.tcsTcImplEnv, qualNameOfFile, sigFileType)
1500-
tcState
1501-
15021494
// Save info needed for type-checking .fs file later on
15031495
// TODO Remove most of this
15041496
let fsiBackedInfo: FsiBackedInfo =
@@ -1507,7 +1499,7 @@ let CheckOneInputAux'
15071499
match ast with
15081500
| ParsedInput.ImplFile parsedImplFileInput -> parsedImplFileInput
15091501
| ParsedInput.SigFile _ -> failwith "Unexpected SigFile"
1510-
amap, conditionalDefines, sigFileType, priorErrors, file, tcStateForImplFile, ccuSigForFile
1502+
amap, conditionalDefines, sigFileType, priorErrors, file, tcStateForImplFile, sigFileType
15111503

15121504
fsiBackedInfos[file.FileName] <- fsiBackedInfo
15131505

tests/DiamondTest/Broken1/A.fs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,2 @@
1-
namespace N.M
2-
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
3-
module internal A =
4-
let x = 3
1+
module A
2+
let a = 1

tests/DiamondTest/Broken1/B.fs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
namespace N.M.K
2-
module Y = let y = 4
1+
module B
2+
let b = 1 + A.a

tests/DiamondTest/Broken1/B.fsi

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1-
namespace N.M.K
2-
module Y = val y : int
1+
module B
2+
open A
3+
val b : int

tests/FSharp.Compiler.Service.Tests2/DiamondArgs_broken.txt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,3 @@
211211
C:\projekty\fsharp\heuristic\tests\DiamondTest\Broken1\A.fs
212212
C:\projekty\fsharp\heuristic\tests\DiamondTest\Broken1\B.fsi
213213
C:\projekty\fsharp\heuristic\tests\DiamondTest\Broken1\B.fs
214-
C:\projekty\fsharp\heuristic\tests\DiamondTest\Broken1\C.fs
215-
C:\projekty\fsharp\heuristic\tests\DiamondTest\Broken1\D.fs
216-
C:\projekty\fsharp\heuristic\tests\DiamondTest\Broken1\E.fs

tests/FSharp.Compiler.Service.Tests2/FCSArgs.txt

Lines changed: 0 additions & 265 deletions
Original file line numberDiff line numberDiff line change
@@ -236,268 +236,3 @@ Utilities\QueueList.fsi
236236
Utilities\QueueList.fs
237237
Utilities\lib.fsi
238238
Utilities\lib.fs
239-
Utilities\ImmutableArray.fsi
240-
Utilities\ImmutableArray.fs
241-
Utilities\rational.fsi
242-
Utilities\rational.fs
243-
Utilities\PathMap.fsi
244-
Utilities\PathMap.fs
245-
Utilities\RidHelpers.fs
246-
Utilities\range.fsi
247-
Utilities\range.fs
248-
Facilities\Logger.fsi
249-
Facilities\Logger.fs
250-
Facilities\LanguageFeatures.fsi
251-
Facilities\LanguageFeatures.fs
252-
Facilities\DiagnosticOptions.fsi
253-
Facilities\DiagnosticOptions.fs
254-
Facilities\TextLayoutRender.fsi
255-
Facilities\TextLayoutRender.fs
256-
Facilities\DiagnosticsLogger.fsi
257-
Facilities\DiagnosticsLogger.fs
258-
Facilities\DiagnosticResolutionHints.fsi
259-
Facilities\DiagnosticResolutionHints.fs
260-
Facilities\prim-lexing.fsi
261-
Facilities\prim-lexing.fs
262-
Facilities\prim-parsing.fsi
263-
Facilities\prim-parsing.fs
264-
Facilities\ReferenceResolver.fsi
265-
Facilities\ReferenceResolver.fs
266-
Facilities\SimulatedMSBuildReferenceResolver.fsi
267-
Facilities\SimulatedMSBuildReferenceResolver.fs
268-
Facilities\CompilerLocation.fsi
269-
Facilities\CompilerLocation.fs
270-
Facilities\BuildGraph.fsi
271-
Facilities\BuildGraph.fs
272-
AbstractIL\il.fsi
273-
AbstractIL\il.fs
274-
AbstractIL\ilx.fsi
275-
AbstractIL\ilx.fs
276-
AbstractIL\ilascii.fsi
277-
AbstractIL\ilascii.fs
278-
C:\projekty\fsharp\fsharp_main\artifacts\obj\FSharp.Compiler.Service\Debug\netstandard2.0\ilpars.fs
279-
C:\projekty\fsharp\fsharp_main\artifacts\obj\FSharp.Compiler.Service\Debug\netstandard2.0\illex.fs
280-
AbstractIL\ilprint.fsi
281-
AbstractIL\ilprint.fs
282-
AbstractIL\ilmorph.fsi
283-
AbstractIL\ilmorph.fs
284-
AbstractIL\ilsign.fsi
285-
AbstractIL\ilsign.fs
286-
AbstractIL\ilnativeres.fsi
287-
AbstractIL\ilnativeres.fs
288-
AbstractIL\ilsupp.fsi
289-
AbstractIL\ilsupp.fs
290-
AbstractIL\ilbinary.fsi
291-
AbstractIL\ilbinary.fs
292-
AbstractIL\ilread.fsi
293-
AbstractIL\ilread.fs
294-
AbstractIL\ilwritepdb.fsi
295-
AbstractIL\ilwritepdb.fs
296-
AbstractIL\ilwrite.fsi
297-
AbstractIL\ilwrite.fs
298-
AbstractIL\ilreflect.fsi
299-
AbstractIL\ilreflect.fs
300-
SyntaxTree\PrettyNaming.fsi
301-
SyntaxTree\PrettyNaming.fs
302-
SyntaxTree\UnicodeLexing.fsi
303-
SyntaxTree\UnicodeLexing.fs
304-
SyntaxTree\XmlDoc.fsi
305-
SyntaxTree\XmlDoc.fs
306-
SyntaxTree\SyntaxTrivia.fsi
307-
SyntaxTree\SyntaxTrivia.fs
308-
SyntaxTree\SyntaxTree.fsi
309-
SyntaxTree\SyntaxTree.fs
310-
SyntaxTree\SyntaxTreeOps.fsi
311-
SyntaxTree\SyntaxTreeOps.fs
312-
SyntaxTree\ParseHelpers.fsi
313-
SyntaxTree\ParseHelpers.fs
314-
C:\projekty\fsharp\fsharp_main\artifacts\obj\FSharp.Compiler.Service\Debug\netstandard2.0\pppars.fs
315-
C:\projekty\fsharp\fsharp_main\artifacts\obj\FSharp.Compiler.Service\Debug\netstandard2.0\pars.fs
316-
SyntaxTree\LexHelpers.fsi
317-
SyntaxTree\LexHelpers.fs
318-
C:\projekty\fsharp\fsharp_main\artifacts\obj\FSharp.Compiler.Service\Debug\netstandard2.0\pplex.fs
319-
C:\projekty\fsharp\fsharp_main\artifacts\obj\FSharp.Compiler.Service\Debug\netstandard2.0\\lex.fs
320-
SyntaxTree\LexFilter.fsi
321-
SyntaxTree\LexFilter.fs
322-
TypedTree\tainted.fsi
323-
TypedTree\tainted.fs
324-
TypedTree\TypeProviders.fsi
325-
TypedTree\TypeProviders.fs
326-
TypedTree\QuotationPickler.fsi
327-
TypedTree\QuotationPickler.fs
328-
TypedTree\CompilerGlobalState.fsi
329-
TypedTree\CompilerGlobalState.fs
330-
TypedTree\TypedTree.fsi
331-
TypedTree\TypedTree.fs
332-
TypedTree\TypedTreeBasics.fsi
333-
TypedTree\TypedTreeBasics.fs
334-
TypedTree\TcGlobals.fs
335-
TypedTree\TypedTreeOps.fsi
336-
TypedTree\TypedTreeOps.fs
337-
TypedTree\TypedTreePickle.fsi
338-
TypedTree\TypedTreePickle.fs
339-
Checking\import.fsi
340-
Checking\import.fs
341-
Checking\TypeHierarchy.fsi
342-
Checking\TypeHierarchy.fs
343-
Checking\infos.fsi
344-
Checking\infos.fs
345-
Checking\AccessibilityLogic.fsi
346-
Checking\AccessibilityLogic.fs
347-
Checking\AttributeChecking.fsi
348-
Checking\AttributeChecking.fs
349-
Checking\TypeRelations.fsi
350-
Checking\TypeRelations.fs
351-
Checking\InfoReader.fsi
352-
Checking\InfoReader.fs
353-
Checking\NicePrint.fsi
354-
Checking\NicePrint.fs
355-
Checking\AugmentWithHashCompare.fsi
356-
Checking\AugmentWithHashCompare.fs
357-
Checking\NameResolution.fsi
358-
Checking\NameResolution.fs
359-
Checking\SignatureConformance.fsi
360-
Checking\SignatureConformance.fs
361-
Checking\MethodOverrides.fsi
362-
Checking\MethodOverrides.fs
363-
Checking\MethodCalls.fsi
364-
Checking\MethodCalls.fs
365-
Checking\PatternMatchCompilation.fsi
366-
Checking\PatternMatchCompilation.fs
367-
Checking\ConstraintSolver.fsi
368-
Checking\ConstraintSolver.fs
369-
Checking\CheckFormatStrings.fsi
370-
Checking\CheckFormatStrings.fs
371-
Checking\FindUnsolved.fsi
372-
Checking\FindUnsolved.fs
373-
Checking\QuotationTranslator.fsi
374-
Checking\QuotationTranslator.fs
375-
Checking\PostInferenceChecks.fsi
376-
Checking\PostInferenceChecks.fs
377-
Checking\CheckBasics.fsi
378-
Checking\CheckBasics.fs
379-
Checking\CheckExpressions.fsi
380-
Checking\CheckExpressions.fs
381-
Checking\CheckPatterns.fsi
382-
Checking\CheckPatterns.fs
383-
Checking\CheckComputationExpressions.fsi
384-
Checking\CheckComputationExpressions.fs
385-
Checking\CheckIncrementalClasses.fsi
386-
Checking\CheckIncrementalClasses.fs
387-
Checking\CheckDeclarations.fsi
388-
Checking\CheckDeclarations.fs
389-
Optimize\Optimizer.fsi
390-
Optimize\Optimizer.fs
391-
Optimize\DetupleArgs.fsi
392-
Optimize\DetupleArgs.fs
393-
Optimize\InnerLambdasToTopLevelFuncs.fsi
394-
Optimize\InnerLambdasToTopLevelFuncs.fs
395-
Optimize\LowerCalls.fsi
396-
Optimize\LowerCalls.fs
397-
Optimize\LowerSequences.fsi
398-
Optimize\LowerSequences.fs
399-
Optimize\LowerComputedCollections.fsi
400-
Optimize\LowerComputedCollections.fs
401-
Optimize\LowerStateMachines.fsi
402-
Optimize\LowerStateMachines.fs
403-
Optimize\LowerLocalMutables.fsi
404-
Optimize\LowerLocalMutables.fs
405-
CodeGen\EraseClosures.fsi
406-
CodeGen\EraseClosures.fs
407-
CodeGen\EraseUnions.fsi
408-
CodeGen\EraseUnions.fs
409-
CodeGen\IlxGen.fsi
410-
CodeGen\IlxGen.fs
411-
Driver\FxResolver.fsi
412-
Driver\FxResolver.fs
413-
DependencyManager/AssemblyResolveHandler.fsi
414-
DependencyManager/AssemblyResolveHandler.fs
415-
DependencyManager/NativeDllResolveHandler.fsi
416-
DependencyManager/NativeDllResolveHandler.fs
417-
DependencyManager/DependencyProvider.fsi
418-
DependencyManager/DependencyProvider.fs
419-
Driver\CompilerConfig.fsi
420-
Driver\CompilerConfig.fs
421-
Driver\CompilerImports.fsi
422-
Driver\CompilerImports.fs
423-
Driver\CompilerDiagnostics.fsi
424-
Driver\CompilerDiagnostics.fs
425-
Driver\ParseAndCheckInputs.fsi
426-
Driver\ParseAndCheckInputs.fs
427-
Driver\ScriptClosure.fsi
428-
Driver\ScriptClosure.fs
429-
Driver\CompilerOptions.fsi
430-
Driver\CompilerOptions.fs
431-
Driver\OptimizeInputs.fsi
432-
Driver\OptimizeInputs.fs
433-
Driver\XmlDocFileWriter.fsi
434-
Driver\XmlDocFileWriter.fs
435-
Driver\BinaryResourceFormats.fsi
436-
Driver\BinaryResourceFormats.fs
437-
Driver\StaticLinking.fsi
438-
Driver\StaticLinking.fs
439-
Driver\CreateILModule.fsi
440-
Driver\CreateILModule.fs
441-
Driver\fsc.fsi
442-
Driver\fsc.fs
443-
Symbols\FSharpDiagnostic.fsi
444-
Symbols\FSharpDiagnostic.fs
445-
Symbols\SymbolHelpers.fsi
446-
Symbols\SymbolHelpers.fs
447-
Symbols\Symbols.fsi
448-
Symbols\Symbols.fs
449-
Symbols\Exprs.fsi
450-
Symbols\Exprs.fs
451-
Symbols\SymbolPatterns.fsi
452-
Symbols\SymbolPatterns.fs
453-
Service\SemanticClassification.fsi
454-
Service\SemanticClassification.fs
455-
Service\ItemKey.fsi
456-
Service\ItemKey.fs
457-
Service\SemanticClassificationKey.fsi
458-
Service\SemanticClassificationKey.fs
459-
Service\FSharpSource.fsi
460-
Service\FSharpSource.fs
461-
Service\IncrementalBuild.fsi
462-
Service\IncrementalBuild.fs
463-
Service\ServiceCompilerDiagnostics.fsi
464-
Service\ServiceCompilerDiagnostics.fs
465-
Service\ServiceConstants.fs
466-
Service\ServiceDeclarationLists.fsi
467-
Service\ServiceDeclarationLists.fs
468-
Service\ServiceLexing.fsi
469-
Service\ServiceLexing.fs
470-
Service\ServiceParseTreeWalk.fsi
471-
Service\ServiceParseTreeWalk.fs
472-
Service\ServiceNavigation.fsi
473-
Service\ServiceNavigation.fs
474-
Service\ServiceParamInfoLocations.fsi
475-
Service\ServiceParamInfoLocations.fs
476-
Service\FSharpParseFileResults.fsi
477-
Service\FSharpParseFileResults.fs
478-
Service\ServiceParsedInputOps.fsi
479-
Service\ServiceParsedInputOps.fs
480-
Service\ServiceAssemblyContent.fsi
481-
Service\ServiceAssemblyContent.fs
482-
Service\ServiceXmlDocParser.fsi
483-
Service\ServiceXmlDocParser.fs
484-
Service\ExternalSymbol.fsi
485-
Service\ExternalSymbol.fs
486-
Service\QuickParse.fsi
487-
Service\QuickParse.fs
488-
Service\FSharpCheckerResults.fsi
489-
Service\FSharpCheckerResults.fs
490-
Service\service.fsi
491-
Service\service.fs
492-
Service\ServiceInterfaceStubGenerator.fsi
493-
Service\ServiceInterfaceStubGenerator.fs
494-
Service\ServiceStructure.fsi
495-
Service\ServiceStructure.fs
496-
Service\ServiceAnalysis.fsi
497-
Service\ServiceAnalysis.fs
498-
Interactive\ControlledExecution.fs
499-
Interactive\fsi.fsi
500-
Interactive\fsi.fs
501-
Legacy\LegacyMSBuildReferenceResolver.fsi
502-
Legacy\LegacyMSBuildReferenceResolver.fs
503-
Legacy\LegacyHostedCompilerForTesting.fs

tests/FSharp.Compiler.Service.Tests2/GraphProcessing.fs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,13 @@ let combineResults
4343
let biggestDep =
4444
let sizeMetric node =
4545
// Could also use eg. total file size/AST size
46-
node.Info.TransitiveDeps.Length
46+
node.Info.Item
47+
// node.Info.TransitiveDeps.Length
4748
deps
48-
|> Array.maxBy sizeMetric
49+
// TODO To workaround a problem with merging state in the wrong order,
50+
// we temporarily effectively pick the child with the lowest index.
51+
// This means children are folded fully in sequence
52+
|> Array.minBy sizeMetric
4953
let orFail value =
5054
value
5155
|> Option.defaultWith (fun () -> failwith "Unexpected lack of result")
@@ -75,11 +79,12 @@ let combineResults
7579
state
7680

7781
// TODO Could be replaced with a simpler recursive approach with memoised per-item results
78-
let processGraph<'Item, 'State, 'Result, 'FinalFileResult when 'Item : equality>
82+
let processGraph<'Item, 'State, 'Result, 'FinalFileResult when 'Item : equality and 'Item : comparison>
7983
(graph : Graph<'Item>)
8084
(doWork : 'Item -> 'State -> 'Result)
8185
(folder : 'State -> 'Result -> 'FinalFileResult * 'State)
8286
(emptyState : 'State)
87+
(includeInFinalState : 'Item -> bool)
8388
(parallelism : int)
8489
: 'FinalFileResult[] * 'State
8590
=
@@ -153,8 +158,13 @@ let processGraph<'Item, 'State, 'Result, 'FinalFileResult when 'Item : equality>
153158
let nodesArray = nodes.Values |> Seq.toArray
154159
let x: 'FinalFileResult[] * 'State =
155160
nodesArray
156-
|> Array.fold (fun (fileResults, state) item ->
157-
let fileResult, state = folder state (item.Result.Value |> snd)
161+
|> Array.sortBy (fun node -> node.Info.Item)
162+
|> fun nodes ->
163+
printfn $"%+A{nodes |> Array.map (fun n -> n.Info.Item.ToString())}"
164+
nodes
165+
|> Array.fold (fun (fileResults, state) node ->
166+
let fileResult, newState = folder state (node.Result.Value |> snd)
167+
let state = if includeInFinalState node.Info.Item then newState else state
158168
Array.append fileResults [|fileResult|], state
159169
) ([||], emptyState)
160170
x

tests/FSharp.Compiler.Service.Tests2/ParallelTypeChecking.fs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,7 @@ module internal Real =
261261
processFile
262262
folder
263263
state
264+
(fun it -> (not it.FsiBacked) && it = it)
264265
1
265266

266267
partialResults |> Array.toList, tcState
@@ -274,6 +275,7 @@ let typeCheckGraph (graph : FileGraph) : FinalFileResult[] * State =
274275
typeCheckFile
275276
folder
276277
""
278+
(fun _ -> true)
277279
parallelism
278280

279281
let typeCheckGraph2 (graph : FileGraph) : FinalFileResult[] * State =
@@ -283,6 +285,7 @@ let typeCheckGraph2 (graph : FileGraph) : FinalFileResult[] * State =
283285
typeCheckFile
284286
folder
285287
""
288+
(fun _ -> true)
286289
parallelism
287290

288291
let typeCheck (files : SourceFiles) : FinalFileResult[] * State =

0 commit comments

Comments
 (0)