Repository navigation
Add mermaid serialization of the trie from graph based typechecking - #15144
Merged
Merged
Conversation
…king to a mermaid diagram
Member
|
Oh, that's great! I'd be up to setting it up in CI to publish those as comments in PRs as well for FCS and VF solutions |
nojaf
approved these changes
Apr 26, 2023
…ching but about traversing
dawedawe
marked this pull request as ready for review
April 26, 2023 06:38
T-Gro
approved these changes
Apr 26, 2023
edgarfgp
approved these changes
May 1, 2023
T-Gro
enabled auto-merge (squash)
May 2, 2023 08:39
psfinaki
approved these changes
May 2, 2023
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
If the dependency graph from graph-based typechecking is serialized, let's also dump the trie used in the algorithm.
Example from Fantomas.Core:
classDiagram class root root <|-- ns_Microsoft class ns_Microsoft { .NETStandard,Version=v2.0.AssemblyAttributes.fs(0) } ns_Microsoft <|-- ns_BuildSettings class ns_BuildSettings { .NETStandard,Version=v2.0.AssemblyAttributes.fs(0) } root <|-- ns_FSharp class ns_FSharp { Fantomas.Core.AssemblyInfo.fs(1) } root <|-- ns_Fantomas class ns_Fantomas { AssemblyInfo.fs(2) ISourceTextExtensions.fsi(3) RangeHelpers.fsi(5) Utils.fsi(7) FormatConfig.fs(9) SyntaxOak.fs(10) ASTTransformer.fsi(11) Version.fs(13) Queue.fs(14) Trivia.fsi(15) Defines.fsi(17) CodeFormatterTypes.fs(19) Context.fsi(20) CodePrinter.fsi(22) MultipleDefineCombinations.fsi(24) CodeFormatterImpl.fsi(26) Validation.fsi(28) Selection.fsi(30) CodeFormatter.fsi(32) } ns_Fantomas <|-- ns_Core class ns_Core { FormatConfig.fs[9] Queue.fs[14] Defines.fsi[17] CodeFormatterTypes.fs[19] CodeFormatter.fsi[32] AssemblyInfo.fs(2) ISourceTextExtensions.fsi(3) RangeHelpers.fsi(5) Utils.fsi(7) SyntaxOak.fs(10) ASTTransformer.fsi(11) Version.fs(13) Trivia.fsi(15) Context.fsi(20) CodePrinter.fsi(22) MultipleDefineCombinations.fsi(24) CodeFormatterImpl.fsi(26) Validation.fsi(28) Selection.fsi(30) } ns_Core <|-- mod_AssemblyVersionInformation class mod_AssemblyVersionInformation { AssemblyInfo.fs[2] } ns_Core <|-- mod_ISourceTextExtensions class mod_ISourceTextExtensions { ISourceTextExtensions.fsi[3] } ns_Core <|-- mod_RangeHelpers class mod_RangeHelpers { RangeHelpers.fsi[5] } ns_Core <|-- mod_RangePatterns class mod_RangePatterns { RangeHelpers.fsi[5] } ns_Core <|-- mod_String class mod_String { Utils.fsi[7] } ns_Core <|-- mod_List class mod_List { Utils.fsi[7] } ns_Core <|-- mod_Async class mod_Async { Utils.fsi[7] } ns_Core <|-- mod_Continuation class mod_Continuation { Utils.fsi[7] } ns_Core <|-- mod_SyntaxOak class mod_SyntaxOak { SyntaxOak.fs[10] } ns_Core <|-- mod_ASTTransformer class mod_ASTTransformer { ASTTransformer.fsi[11] } ns_Core <|-- mod_Version class mod_Version { Version.fs[13] } ns_Core <|-- mod_Queue class mod_Queue { Queue.fs[14] } ns_Core <|-- mod_Trivia class mod_Trivia { Trivia.fsi[15] } ns_Core <|-- mod_Defines class mod_Defines { Defines.fsi[17] } ns_Core <|-- mod_Context class mod_Context { Context.fsi[20] } ns_Core <|-- mod_CodePrinter class mod_CodePrinter { CodePrinter.fsi[22] } ns_Core <|-- mod_MultipleDefineCombinations class mod_MultipleDefineCombinations { MultipleDefineCombinations.fsi[24] } ns_Core <|-- mod_CodeFormatterImpl class mod_CodeFormatterImpl { CodeFormatterImpl.fsi[26] } ns_Core <|-- mod_Validation class mod_Validation { Validation.fsi[28] } ns_Core <|-- mod_Selection class mod_Selection { Selection.fsi[30] }