@@ -6,11 +6,7 @@ import io.joern.swiftsrc2cpg.parser.SwiftJsonParser
66import io .joern .swiftsrc2cpg .parser .SwiftJsonParser .ParseResult
77import io .joern .swiftsrc2cpg .utils .AstGenRunner .AstGenRunnerResult
88import io .joern .swiftsrc2cpg .utils .SwiftTypesProvider
9- import io .joern .swiftsrc2cpg .utils .SwiftTypesProvider .{
10- MutableSwiftFileLocalTypeMapping ,
11- MutableSwiftTypeMapping ,
12- SwiftFileLocalTypeMapping
13- }
9+ import io .joern .swiftsrc2cpg .utils .SwiftTypesProvider .SwiftFileLocalTypeMapping
1410import io .joern .x2cpg .ValidationMode
1511import io .joern .x2cpg .datastructures .Global
1612import io .joern .x2cpg .frontendspecific .swiftsrc2cpg .Defines
@@ -21,7 +17,6 @@ import io.shiftleft.utils.IOUtils
2117import org .slf4j .{Logger , LoggerFactory }
2218
2319import java .nio .file .Paths
24- import scala .collection .concurrent .TrieMap
2520import scala .jdk .CollectionConverters .*
2621import scala .util .{Failure , Success , Try }
2722
@@ -32,7 +27,7 @@ class AstCreationPass(cpg: Cpg, astGenRunnerResult: AstGenRunnerResult, config:
3227 private val logger : Logger = LoggerFactory .getLogger(classOf [AstCreationPass ])
3328
3429 private val global = new Global ()
35- private val typeMap = SwiftTypesProvider (config).map(_.retrieveMappings()).getOrElse(Map .empty)
30+ private var typeMap = SwiftTypesProvider (config).map(_.retrieveMappings()).getOrElse(Map .empty)
3631
3732 def typesSeen (): List [String ] = global.usedTypes.keys().asScala.filterNot(Defines .SwiftTypes .contains).toList
3833
@@ -52,13 +47,18 @@ class AstCreationPass(cpg: Cpg, astGenRunnerResult: AstGenRunnerResult, config:
5247 }
5348
5449 private def extractFileLocalTypeMap (parseResult : ParseResult ): SwiftFileLocalTypeMapping = {
55- val fileLocalTypesMap = typeMap.collectFirst {
56- // special handling for GitHub Windows and MacOS runner
57- // Windows: C:\Users\RUNNER~1\AppData\Local\Temp\hash\Input\file.swift vs. C:\Users\runneradmin\AppData\Local\Temp\hash\Input\file.swift
58- // macOS: /private/var/folders/y6/hash/T/Input/file.swift vs. /var/folders/y6/hash/T/Input/file.swift
59- case (filename, map) if filename.replace(" \\ " , " /" ).endsWith(parseResult.filename) => map
60- }
61- fileLocalTypesMap.getOrElse(Map .empty)
50+ typeMap
51+ .collectFirst {
52+ // special handling for GitHub Windows and MacOS runner
53+ // Windows: C:\Users\RUNNER~1\AppData\Local\Temp\hash\Input\file.swift vs. C:\Users\runneradmin\AppData\Local\Temp\hash\Input\file.swift
54+ // macOS: /private/var/folders/y6/hash/T/Input/file.swift vs. /var/folders/y6/hash/T/Input/file.swift
55+ case (filename, map) if filename.replace(" \\ " , " /" ).endsWith(parseResult.filename) => (filename, map)
56+ }
57+ .map { case (filename, map) =>
58+ typeMap = typeMap.removed(filename)
59+ map
60+ }
61+ .getOrElse(Map .empty)
6262 }
6363
6464 override def runOnPart (diffGraph : DiffGraphBuilder , input : String ): Unit = {
0 commit comments