@@ -86,53 +86,55 @@ struct GenerateSwiftSyntax: ParsableCommand {
86
86
func run( ) throws {
87
87
let destination = URL ( fileURLWithPath: self . destination) . standardizedFileURL
88
88
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
90
133
[
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) ) ) ,
135
136
]
137
+ }
136
138
137
139
let modules = Set ( fileSpecs. compactMap { $0. pathComponents. first } )
138
140
0 commit comments