Skip to content

Commit 8d1b578

Browse files
committed
[Regex] Really build _RegexParser without resilience.
This was originally attempted with swiftlang#58810 but `_RegexParser` still ended up being built with library evolution enabled because the `-enable-library-evolution` flag is added to the command line after calling `add_swift_target_library` and therefore stripping the flag out of `SWIFT_COMPILE_FLAGS` does nothing. The `IS_FRAGILE` flag was introduced to support building C++ interop overlay modules without library evolution and it can now be used to prevent `_RegexParser` from being built with library evolution. Resolves rdar://93067204
1 parent 2061640 commit 8d1b578

File tree

2 files changed

+6
-9
lines changed

2 files changed

+6
-9
lines changed

stdlib/public/RegexParser/CMakeLists.txt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,10 @@ foreach(source ${_MATCHING_ENGINE_SOURCES})
2222
endforeach()
2323
message(STATUS "Using Experimental String Processing library for _RegexParser (${SWIFT_PATH_TO_STRING_PROCESSING_SOURCE}).")
2424

25-
set(SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS_NO_RESILIENCE)
26-
string(REGEX REPLACE "-enable-library-evolution" ""
27-
SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS_NO_RESILIENCE
28-
"${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}")
29-
30-
add_swift_target_library(swift_RegexParser ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_STDLIB
25+
# The parser module can be fragile (does not use library evolution) because its
26+
# only dependents are _StringProcessing and RegexBuilder and it's version-locked
27+
# with those modules.
28+
add_swift_target_library(swift_RegexParser ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_STDLIB IS_FRAGILE
3129
"${MATCHING_ENGINE_SOURCES}"
3230

3331
SWIFT_MODULE_DEPENDS_LINUX Glibc
@@ -42,7 +40,6 @@ add_swift_target_library(swift_RegexParser ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} I
4240
C_COMPILE_FLAGS
4341
-Dswift_RegexParser_EXPORTS
4442
SWIFT_COMPILE_FLAGS
45-
${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS_NO_RESILIENCE}
4643
# Workaround until `_RegexParser` is imported as implementation-only
4744
# by `_StringProcessing`.
4845
-Xfrontend -disable-implicit-string-processing-module-import

validation-test/ParseableInterface/verify_all_overlays.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@
5050
]:
5151
continue
5252

53-
# Cxx and CxxStdlib are built without library evolution and don't have a
53+
# These modules are built without library evolution and don't have a
5454
# .swiftinterface file
55-
if module_name in ["Cxx", "CxxStdlib"]:
55+
if module_name in ["Cxx", "CxxStdlib", "_RegexParser"]:
5656
if not os.path.exists(interface_file):
5757
continue
5858

0 commit comments

Comments
 (0)