@@ -280,6 +280,7 @@ extension ModuleDependencyGraph {
280
280
case metadata = 1
281
281
case moduleDepGraphNode = 2
282
282
case identifierNode = 3
283
+ case externalDepNode = 5
283
284
284
285
/// The human-readable name of this record.
285
286
///
@@ -292,6 +293,8 @@ extension ModuleDependencyGraph {
292
293
return " METADATA "
293
294
case . moduleDepGraphNode:
294
295
return " MODULE_DEP_GRAPH_NODE "
296
+ case . externalDepNode:
297
+ return " EXTERNAL_DEP_NODE "
295
298
case . identifierNode:
296
299
return " IDENTIFIER_NODE "
297
300
}
@@ -306,6 +309,7 @@ extension ModuleDependencyGraph {
306
309
case malformedFingerprintRecord
307
310
case malformedIdentifierRecord
308
311
case malformedModuleDepGraphNodeRecord
312
+ case malformedExternalDepNodeRecord
309
313
case unknownRecord
310
314
case unexpectedSubblock
311
315
case bogusNameOrContext
@@ -421,6 +425,14 @@ extension ModuleDependencyGraph {
421
425
fingerprint: fingerprint,
422
426
swiftDeps: swiftDeps)
423
427
sequenceNumber += 1
428
+ case . externalDepNode:
429
+ guard record. fields. count == 1 ,
430
+ record. fields [ 0 ] < identifiers. count
431
+ else {
432
+ throw ReadError . malformedExternalDepNodeRecord
433
+ }
434
+ let path = identifiers [ Int ( record. fields [ 0 ] ) ]
435
+ self . graph. externalDependencies. insert ( ExternalDependency ( path) )
424
436
case . identifierNode:
425
437
guard record. fields. count == 0 ,
426
438
case . blob( let identifierBlob) = record. payload,
@@ -575,13 +587,22 @@ extension ModuleDependencyGraph {
575
587
}
576
588
}
577
589
590
+ for path in graph. externalDependencies {
591
+ self . addIdentifier ( path. fileName)
592
+ }
593
+
578
594
for str in self . identifiersToWrite {
579
595
self . stream. writeRecord ( self . abbreviations [ . identifierNode] !, {
580
596
$0. append ( RecordID . identifierNode)
581
597
} , blob: str)
582
598
}
583
599
}
584
600
601
+ self . abbreviate ( . externalDepNode, [
602
+ . literal( RecordID . externalDepNode. rawValue) ,
603
+ // path ID
604
+ . vbr( chunkBitWidth: 13 ) ,
605
+ ] )
585
606
private func abbreviate(
586
607
_ record: RecordID ,
587
608
_ operands: [ Bitstream . Abbreviation . Operand ]
@@ -652,6 +673,13 @@ extension ModuleDependencyGraph {
652
673
$0. append ( ( node. fingerprint != nil ) ? UInt32 ( 1 ) : UInt32 ( 0 ) )
653
674
} , blob: node. fingerprint ?? " " )
654
675
}
676
+
677
+ for dep in graph. externalDependencies {
678
+ serializer. stream. writeRecord ( serializer. abbreviations [ . externalDepNode] !) {
679
+ $0. append ( RecordID . externalDepNode)
680
+ $0. append ( serializer. lookupIdentifierCode ( for: dep. fileName) )
681
+ }
682
+ }
655
683
}
656
684
return ByteString ( serializer. stream. data)
657
685
}
@@ -765,11 +793,11 @@ fileprivate extension DependencyKey.Designator {
765
793
case . dynamicLookup( name: let name) :
766
794
return name
767
795
case . externalDepend( let path) :
768
- return path. file ? . basename
796
+ return path. fileName
769
797
case . sourceFileProvide( name: let name) :
770
798
return name
771
799
case . incrementalExternalDependency( let path) :
772
- return path. file ? . basename
800
+ return path. fileName
773
801
case . member( context: _, name: let name) :
774
802
return name
775
803
case . nominal( context: _) :
0 commit comments