@@ -86,53 +86,55 @@ struct GenerateSwiftSyntax: ParsableCommand {
8686 func run( ) throws {
8787 let destination = URL ( fileURLWithPath: self . destination) . standardizedFileURL
8888
89- let fileSpecs : [ GeneratedFileSpec ] =
89+ var fileSpecs : [ GeneratedFileSpec ] = [
90+ // SwiftParser
91+ GeneratedFileSpec ( swiftParserGeneratedDir + [ " IsLexerClassified.swift " ] , isLexerClassifiedFile) ,
92+ GeneratedFileSpec ( swiftParserGeneratedDir + [ " LayoutNodes+Parsable.swift " ] , parserEntryFile) ,
93+ GeneratedFileSpec ( swiftParserGeneratedDir + [ " Parser+TokenSpecSet.swift " ] , parserTokenSpecSetFile) ,
94+ GeneratedFileSpec ( swiftParserGeneratedDir + [ " TokenSpecStaticMembers.swift " ] , tokenSpecStaticMembersFile) ,
95+
96+ // SwiftParserDiagnostics
97+ GeneratedFileSpec ( swiftParserDiagnosticsGeneratedDir + [ " ChildNameForDiagnostics.swift " ] , childNameForDiagnosticFile) ,
98+ GeneratedFileSpec ( swiftParserDiagnosticsGeneratedDir + [ " SyntaxKindNameForDiagnostics.swift " ] , syntaxKindNameForDiagnosticFile) ,
99+ GeneratedFileSpec ( swiftParserDiagnosticsGeneratedDir + [ " TokenNameForDiagnostics.swift " ] , tokenNameForDiagnosticFile) ,
100+
101+ // SwiftSyntax
102+ GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " ChildNameForKeyPath.swift " ] , childNameForKeyPathFile) ,
103+ GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " Keyword.swift " ] , keywordFile) ,
104+ GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " raw " , " RawSyntaxValidation.swift " ] , rawSyntaxValidationFile) ,
105+ GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " RenamedChildrenCompatibility.swift " ] , renamedChildrenCompatibilityFile) ,
106+ GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " RenamedNodesCompatibility.swift " ] , renamedSyntaxNodesFile) ,
107+ GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " SyntaxAnyVisitor.swift " ] , syntaxAnyVisitorFile) ,
108+ GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " SyntaxBaseNodes.swift " ] , syntaxBaseNodesFile) ,
109+ GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " SyntaxCollections.swift " ] , syntaxCollectionsFile) ,
110+ GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " SyntaxEnum.swift " ] , syntaxEnumFile) ,
111+ GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " SyntaxKind.swift " ] , syntaxKindFile) ,
112+ GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " SyntaxRewriter.swift " ] , syntaxRewriterFile) ,
113+ GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " SyntaxTraits.swift " ] , syntaxTraitsFile) ,
114+ GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " SyntaxTransform.swift " ] , syntaxTransformFile) ,
115+ GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " SyntaxVisitor.swift " ] , syntaxVisitorFile) ,
116+ GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " TokenKind.swift " ] , tokenKindFile) ,
117+ GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " Tokens.swift " ] , tokensFile) ,
118+ GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " TriviaPieces.swift " ] , triviaPiecesFile) ,
119+ GeneratedFileSpec ( [ " SwiftSyntax " , " Documentation.docc " , " generated " , " SwiftSyntax.md " ] , swiftSyntaxDoccIndex) ,
120+
121+ // SwiftSyntaxBuilder
122+ GeneratedFileSpec ( swiftSyntaxBuilderGeneratedDir + [ " BuildableNodes.swift " ] , buildableNodesFile) ,
123+ GeneratedFileSpec ( swiftSyntaxBuilderGeneratedDir + [ " ResultBuilders.swift " ] , resultBuildersFile) ,
124+ GeneratedFileSpec (
125+ swiftSyntaxBuilderGeneratedDir + [ " SyntaxExpressibleByStringInterpolationConformances.swift " ] ,
126+ syntaxExpressibleByStringInterpolationConformancesFile
127+ ) ,
128+ GeneratedFileSpec ( swiftSyntaxBuilderGeneratedDir + [ " RenamedChildrenBuilderCompatibility.swift " ] , renamedChildrenBuilderCompatibilityFile) ,
129+ ]
130+ // This split of letters produces files for the syntax nodes that have about equal size, which improves compile time
131+
132+ fileSpecs += [ " AB " , " C " , " D " , " EF " , " GHI " , " JKLMN " , " OP " , " QRS " , " TUVWXYZ " ] . flatMap { ( letters: String ) -> [ GeneratedFileSpec ] in
90133 [
91- // SwiftParser
92- GeneratedFileSpec ( swiftParserGeneratedDir + [ " IsLexerClassified.swift " ] , isLexerClassifiedFile) ,
93- GeneratedFileSpec ( swiftParserGeneratedDir + [ " LayoutNodes+Parsable.swift " ] , parserEntryFile) ,
94- GeneratedFileSpec ( swiftParserGeneratedDir + [ " Parser+TokenSpecSet.swift " ] , parserTokenSpecSetFile) ,
95- GeneratedFileSpec ( swiftParserGeneratedDir + [ " TokenSpecStaticMembers.swift " ] , tokenSpecStaticMembersFile) ,
96-
97- // SwiftParserDiagnostics
98- GeneratedFileSpec ( swiftParserDiagnosticsGeneratedDir + [ " ChildNameForDiagnostics.swift " ] , childNameForDiagnosticFile) ,
99- GeneratedFileSpec ( swiftParserDiagnosticsGeneratedDir + [ " SyntaxKindNameForDiagnostics.swift " ] , syntaxKindNameForDiagnosticFile) ,
100- GeneratedFileSpec ( swiftParserDiagnosticsGeneratedDir + [ " TokenNameForDiagnostics.swift " ] , tokenNameForDiagnosticFile) ,
101-
102- // SwiftSyntax
103- GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " ChildNameForKeyPath.swift " ] , childNameForKeyPathFile) ,
104- GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " Keyword.swift " ] , keywordFile) ,
105- GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " raw " , " RawSyntaxNodes.swift " ] , rawSyntaxNodesFile) ,
106- GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " raw " , " RawSyntaxValidation.swift " ] , rawSyntaxValidationFile) ,
107- GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " RenamedChildrenCompatibility.swift " ] , renamedChildrenCompatibilityFile) ,
108- GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " RenamedNodesCompatibility.swift " ] , renamedSyntaxNodesFile) ,
109- GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " SyntaxAnyVisitor.swift " ] , syntaxAnyVisitorFile) ,
110- GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " SyntaxBaseNodes.swift " ] , syntaxBaseNodesFile) ,
111- GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " SyntaxCollections.swift " ] , syntaxCollectionsFile) ,
112- GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " SyntaxEnum.swift " ] , syntaxEnumFile) ,
113- GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " SyntaxKind.swift " ] , syntaxKindFile) ,
114- GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " SyntaxRewriter.swift " ] , syntaxRewriterFile) ,
115- GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " SyntaxTraits.swift " ] , syntaxTraitsFile) ,
116- GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " SyntaxTransform.swift " ] , syntaxTransformFile) ,
117- GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " SyntaxVisitor.swift " ] , syntaxVisitorFile) ,
118- GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " TokenKind.swift " ] , tokenKindFile) ,
119- GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " Tokens.swift " ] , tokensFile) ,
120- GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " TriviaPieces.swift " ] , triviaPiecesFile) ,
121-
122- // SwiftSyntaxBuilder
123- GeneratedFileSpec ( swiftSyntaxBuilderGeneratedDir + [ " BuildableNodes.swift " ] , buildableNodesFile) ,
124- GeneratedFileSpec ( swiftSyntaxBuilderGeneratedDir + [ " ResultBuilders.swift " ] , resultBuildersFile) ,
125- GeneratedFileSpec (
126- swiftSyntaxBuilderGeneratedDir + [ " SyntaxExpressibleByStringInterpolationConformances.swift " ] ,
127- syntaxExpressibleByStringInterpolationConformancesFile
128- ) ,
129- GeneratedFileSpec ( swiftSyntaxBuilderGeneratedDir + [ " RenamedChildrenBuilderCompatibility.swift " ] , renamedChildrenBuilderCompatibilityFile) ,
130- ]
131- + BASE_KIND_FILES. map { baseKind in
132- GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " syntaxNodes " , baseKind. value] , syntaxNode ( emitKind: baseKind. key) )
133- } + [
134- GeneratedFileSpec ( [ " SwiftSyntax " , " Documentation.docc " , " generated " , " SwiftSyntax.md " ] , swiftSyntaxDoccIndex)
134+ GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " syntaxNodes " , " SyntaxNodes \( letters) .swift " ] , syntaxNode ( nodesStartingWith: Array ( letters) ) ) ,
135+ GeneratedFileSpec ( swiftSyntaxGeneratedDir + [ " raw " , " RawSyntaxNodes \( letters) .swift " ] , rawSyntaxNodesFile ( nodesStartingWith: Array ( letters) ) ) ,
135136 ]
137+ }
136138
137139 let modules = Set ( fileSpecs. compactMap { $0. pathComponents. first } )
138140
0 commit comments