@@ -1030,7 +1030,7 @@ func (r *resolutionState) tryLoadModuleUsingPathsIfEligible() *resolved {
1030
1030
return continueSearching ()
1031
1031
}
1032
1032
baseDirectory := getPathsBasePath (r .compilerOptions , r .resolver .host .GetCurrentDirectory ())
1033
- pathPatterns := tryParsePatternsCached ( r .resolver , r . compilerOptions . Paths )
1033
+ pathPatterns := r .resolver . getParsedPatternsForPaths ( )
1034
1034
return r .tryLoadModuleUsingPaths (
1035
1035
r .extensions ,
1036
1036
r .name ,
@@ -1044,7 +1044,7 @@ func (r *resolutionState) tryLoadModuleUsingPathsIfEligible() *resolved {
1044
1044
)
1045
1045
}
1046
1046
1047
- func (r * resolutionState ) tryLoadModuleUsingPaths (extensions extensions , moduleName string , containingDirectory string , paths * collections.OrderedMap [string , []string ], pathPatterns parsedPatterns , loader resolutionKindSpecificLoader , onlyRecordFailures bool ) * resolved {
1047
+ func (r * resolutionState ) tryLoadModuleUsingPaths (extensions extensions , moduleName string , containingDirectory string , paths * collections.OrderedMap [string , []string ], pathPatterns * parsedPatterns , loader resolutionKindSpecificLoader , onlyRecordFailures bool ) * resolved {
1048
1048
if matchedPattern := matchPatternOrExact (pathPatterns , moduleName ); matchedPattern .IsValid () {
1049
1049
matchedStar := matchedPattern .MatchedText (moduleName )
1050
1050
if r .resolver .traceEnabled () {
@@ -1701,21 +1701,14 @@ type parsedPatterns struct {
1701
1701
patterns []core.Pattern
1702
1702
}
1703
1703
1704
- func tryParsePatternsCached (r * Resolver , paths * collections.OrderedMap [string , []string ]) parsedPatterns {
1705
- var pathPatterns parsedPatterns
1706
- if cached , ok := r .parsedPatternsCache [paths ]; ok {
1707
- pathPatterns = cached
1708
- } else {
1709
- pathPatterns = tryParsePatterns (paths )
1710
- if r .parsedPatternsCache == nil {
1711
- r .parsedPatternsCache = make (map [* collections.OrderedMap [string , []string ]]parsedPatterns )
1712
- }
1713
- r .caches .parsedPatternsCache [paths ] = pathPatterns
1714
- }
1715
- return pathPatterns
1704
+ func (r * Resolver ) getParsedPatternsForPaths () * parsedPatterns {
1705
+ r .parsedPatternsForPathsOnce .Do (func () {
1706
+ r .parsedPatternsForPaths = tryParsePatterns (r .compilerOptions .Paths )
1707
+ })
1708
+ return r .parsedPatternsForPaths
1716
1709
}
1717
1710
1718
- func tryParsePatterns (pathMappings * collections.OrderedMap [string , []string ]) parsedPatterns {
1711
+ func tryParsePatterns (pathMappings * collections.OrderedMap [string , []string ]) * parsedPatterns {
1719
1712
paths := pathMappings .Keys ()
1720
1713
1721
1714
numPatterns := 0
@@ -1744,13 +1737,13 @@ func tryParsePatterns(pathMappings *collections.OrderedMap[string, []string]) pa
1744
1737
}
1745
1738
}
1746
1739
}
1747
- return parsedPatterns {
1740
+ return & parsedPatterns {
1748
1741
matchableStringSet : matchableStringSet ,
1749
1742
patterns : patterns ,
1750
1743
}
1751
1744
}
1752
1745
1753
- func matchPatternOrExact (patterns parsedPatterns , candidate string ) core.Pattern {
1746
+ func matchPatternOrExact (patterns * parsedPatterns , candidate string ) core.Pattern {
1754
1747
if patterns .matchableStringSet .Has (candidate ) {
1755
1748
return core.Pattern {
1756
1749
Text : candidate ,
0 commit comments