multi-demangle 2.0.1__tar.gz → 2.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/Cargo.lock +1 -1
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/Cargo.toml +1 -1
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/PKG-INFO +12 -4
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/README.md +11 -3
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/build.rs +1 -1
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/pyproject.toml +1 -1
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/scripts/collect-swift-corpus.sh +15 -1
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/scripts/swift-corpus-fixture.swift +63 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/scripts/sync-swift.sh +1 -1
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/src/lib.rs +1 -1
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/src/structured/swift.rs +3 -2
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/MANIFEST.txt +1 -1
- multi_demangle-2.1.0/vendor/swift/SYNC.md +62 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm/ADT/Hashing.h +1 -1
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm/ADT/StringRef.h +2 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/swift/AST/Ownership.h +1 -1
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/swift/Demangling/Demangle.h +1 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/swift/Demangling/DemangleNodes.def +4 -2
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/swift/Demangling/Demangler.h +2 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/swift/Strings.h +4 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/lib/Demangling/Demangler.cpp +66 -8
- multi_demangle-2.0.1/vendor/swift/lib/Demangling/Errors.cpp → multi_demangle-2.1.0/vendor/swift/lib/Demangling/DemanglingErrorHandling.cpp +1 -1
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/lib/Demangling/NodePrinter.cpp +20 -6
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/lib/Demangling/Remangler.cpp +36 -8
- multi_demangle-2.0.1/vendor/swift/SYNC.md +0 -35
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/.github/workflows/CI.yml +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/.github/workflows/swift-sync-reminder.yml +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/.gitignore +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/LICENSE +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/benches/batch.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/contrib/README.md +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/contrib/collect-corpus.sh +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/contrib/docker/gnu-toolchains.Dockerfile +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/contrib/docker/kotlin-native.Dockerfile +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/contrib/fixtures/ada/corpus-child.adb +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/contrib/fixtures/ada/corpus-child.ads +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/contrib/fixtures/ada/corpus.adb +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/contrib/fixtures/ada/corpus.ads +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/contrib/fixtures/ada/main.adb +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/contrib/fixtures/dlang/corpus.d +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/contrib/fixtures/fortran/corpus.f90 +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/contrib/fixtures/kotlin/corpus.kt +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/contrib/scripts/emit-kotlin-symbols.sh +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/contrib/scripts/emit-symbols.sh +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/contrib/scripts/gen_dlang_symbols.py +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/contrib/scripts/update-corpus-expectations.sh +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/python/multi_demangle/__init__.py +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/python/multi_demangle/__init__.pyi +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/python/multi_demangle/multi_demangle.pyi +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/python/tests/test_demangle.py +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/python/tests/test_structured.py +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/scripts/collect-corpus.sh +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/src/ada.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/src/dlang.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/src/fortran.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/src/hygiene.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/src/kotlin_native.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/src/main.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/src/structured/mod.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/src/structured/msvc.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/src/swiftdemangle.cpp +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/gnuv2_demangle/Cargo.toml +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/gnuv2_demangle/Cargo.toml.orig +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/gnuv2_demangle/PATCH.md +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/gnuv2_demangle/README.md +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/gnuv2_demangle/src/dem.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/gnuv2_demangle/src/dem_arg.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/gnuv2_demangle/src/dem_arg_list.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/gnuv2_demangle/src/dem_namespace.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/gnuv2_demangle/src/dem_template.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/gnuv2_demangle/src/demangle_config.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/gnuv2_demangle/src/demangle_error.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/gnuv2_demangle/src/demangler.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/gnuv2_demangle/src/lib.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/gnuv2_demangle/src/option_display.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/gnuv2_demangle/src/remainer.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/gnuv2_demangle/src/str_cutter.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/msvc-demangler/Cargo.toml +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/msvc-demangler/Cargo.toml.orig +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/msvc-demangler/LICENSE.LLVM +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/msvc-demangler/LICENSE.MIT +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/msvc-demangler/PATCH.md +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/msvc-demangler/README.md +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/msvc-demangler/src/lib.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/scala-native-demangle/Cargo.toml +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/scala-native-demangle/Cargo.toml.orig +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/scala-native-demangle/PATCH.md +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/scala-native-demangle/README.md +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/scala-native-demangle/src/lib.rs +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/LICENSE.txt +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/LICENSE_LLVM.txt +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/README.md +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm/ADT/ADL.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm/ADT/DenseMapInfo.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm/ADT/PointerIntPair.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm/ADT/STLExtras.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm/ADT/STLForwardCompat.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm/ADT/STLFunctionalExtras.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm/ADT/StringSwitch.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm/ADT/bit.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm/ADT/iterator.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm/ADT/iterator_range.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm/Config/abi-breaking.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm/Config/llvm-config.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm/Support/Casting.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm/Support/Compiler.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm/Support/DataTypes.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm/Support/ErrorHandling.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm/Support/PointerLikeTypeTraits.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm/Support/SwapByteOrder.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm/Support/type_traits.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/llvm-c/DataTypes.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/swift/ABI/InvertibleProtocols.def +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/swift/AST/ReferenceStorage.def +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/swift/Basic/InlineBitfield.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/swift/Basic/LLVM.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/swift/Basic/MacroRoles.def +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/swift/Basic/STLExtras.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/swift/Demangling/Errors.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/swift/Demangling/ManglingFlavor.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/swift/Demangling/ManglingMacros.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/swift/Demangling/ManglingUtils.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/swift/Demangling/NamespaceMacros.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/swift/Demangling/Punycode.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/swift/Demangling/StandardTypesMangling.def +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/swift/Demangling/ValueWitnessMangling.def +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/lib/Demangling/Context.cpp +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/lib/Demangling/DemanglerAssert.h +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/lib/Demangling/ManglingUtils.cpp +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/lib/Demangling/NodeDumper.cpp +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/lib/Demangling/Punycode.cpp +0 -0
- {multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/lib/Demangling/RemanglerBase.h +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: multi-demangle
|
|
3
|
-
Version: 2.0
|
|
3
|
+
Version: 2.1.0
|
|
4
4
|
License-File: LICENSE
|
|
5
5
|
Summary: A library to demangle symbols from various languages and compilers.
|
|
6
6
|
Keywords: demangler,binary
|
|
@@ -22,7 +22,7 @@ Currently supported languages are:
|
|
|
22
22
|
| C++ | Itanium ABI (GCC, Clang), GNU v2, CodeWarrior, and MSVC | `cpp`, `gnuv2`, `codewarrior`, `msvc` |
|
|
23
23
|
| Rust | Both `legacy` and `v0` schemes | `rust` |
|
|
24
24
|
| Scala Native | Via the unknown-language fallback (symbols prefixed `_SM`) | `scala-native` |
|
|
25
|
-
| Swift | Up to Swift 6.
|
|
25
|
+
| Swift | Up to Swift 6.4.0, using a vendored Swift demangler | `swift` |
|
|
26
26
|
| D | D ABI mangling (`_D…`), incl. function types and templates | `dlang` |
|
|
27
27
|
| Fortran | gfortran `mod_MOD_proc`, Intel `mod_mp_proc_`, and the plain g77 `name_` form — **explicit request only** (see below) | `fortran` |
|
|
28
28
|
| Kotlin/Native | `_kfun:` symbols with parameter types | `kotlin-native` |
|
|
@@ -607,8 +607,16 @@ The supported-version claim above is backed by per-toolchain corpus snapshots:
|
|
|
607
607
|
`scripts/collect-swift-corpus.sh` compiles a fixture with a concrete Swift
|
|
608
608
|
toolchain (pass its `swiftc` to represent another one) into
|
|
609
609
|
`tests/corpus/swift/<version>/`, and the `swift_corpus` test pins the exact
|
|
610
|
-
rendering.
|
|
611
|
-
|
|
610
|
+
rendering. The fixture exercises the constructs whose manglings drift between
|
|
611
|
+
toolchains; Swift 6.4 additions (SE-0507 borrow/mutate accessors, SE-0521
|
|
612
|
+
optional opaque types, SE-0474 yielding accessors) are guarded with
|
|
613
|
+
`#if compiler(>=6.4)`, and the script retries the compile with
|
|
614
|
+
`-enable-experimental-feature CoroutineAccessors` when the toolchain gates the
|
|
615
|
+
yielding accessors (recorded in the corpus `provenance.txt`). After a sync
|
|
616
|
+
that changes output, regenerate snapshots deliberately and review the diff —
|
|
617
|
+
downstream consumers (blint) match on these strings. Note that Swift 6.4
|
|
618
|
+
renamed the rendering of the coroutine accessors: symbols that printed as
|
|
619
|
+
`.read2`/`.modify2` now print as `.yielding_borrow`/`.yielding_mutate`.
|
|
612
620
|
|
|
613
621
|
```
|
|
614
622
|
MULTI_DEMANGLE_UPDATE_SNAPSHOTS=1 cargo test --all-features --test test_swift_corpus
|
|
@@ -12,7 +12,7 @@ Currently supported languages are:
|
|
|
12
12
|
| C++ | Itanium ABI (GCC, Clang), GNU v2, CodeWarrior, and MSVC | `cpp`, `gnuv2`, `codewarrior`, `msvc` |
|
|
13
13
|
| Rust | Both `legacy` and `v0` schemes | `rust` |
|
|
14
14
|
| Scala Native | Via the unknown-language fallback (symbols prefixed `_SM`) | `scala-native` |
|
|
15
|
-
| Swift | Up to Swift 6.
|
|
15
|
+
| Swift | Up to Swift 6.4.0, using a vendored Swift demangler | `swift` |
|
|
16
16
|
| D | D ABI mangling (`_D…`), incl. function types and templates | `dlang` |
|
|
17
17
|
| Fortran | gfortran `mod_MOD_proc`, Intel `mod_mp_proc_`, and the plain g77 `name_` form — **explicit request only** (see below) | `fortran` |
|
|
18
18
|
| Kotlin/Native | `_kfun:` symbols with parameter types | `kotlin-native` |
|
|
@@ -597,8 +597,16 @@ The supported-version claim above is backed by per-toolchain corpus snapshots:
|
|
|
597
597
|
`scripts/collect-swift-corpus.sh` compiles a fixture with a concrete Swift
|
|
598
598
|
toolchain (pass its `swiftc` to represent another one) into
|
|
599
599
|
`tests/corpus/swift/<version>/`, and the `swift_corpus` test pins the exact
|
|
600
|
-
rendering.
|
|
601
|
-
|
|
600
|
+
rendering. The fixture exercises the constructs whose manglings drift between
|
|
601
|
+
toolchains; Swift 6.4 additions (SE-0507 borrow/mutate accessors, SE-0521
|
|
602
|
+
optional opaque types, SE-0474 yielding accessors) are guarded with
|
|
603
|
+
`#if compiler(>=6.4)`, and the script retries the compile with
|
|
604
|
+
`-enable-experimental-feature CoroutineAccessors` when the toolchain gates the
|
|
605
|
+
yielding accessors (recorded in the corpus `provenance.txt`). After a sync
|
|
606
|
+
that changes output, regenerate snapshots deliberately and review the diff —
|
|
607
|
+
downstream consumers (blint) match on these strings. Note that Swift 6.4
|
|
608
|
+
renamed the rendering of the coroutine accessors: symbols that printed as
|
|
609
|
+
`.read2`/`.modify2` now print as `.yielding_borrow`/`.yielding_mutate`.
|
|
602
610
|
|
|
603
611
|
```
|
|
604
612
|
MULTI_DEMANGLE_UPDATE_SNAPSHOTS=1 cargo test --all-features --test test_swift_corpus
|
|
@@ -13,7 +13,7 @@ fn main() {
|
|
|
13
13
|
"vendor/swift/lib/Demangling/NodePrinter.cpp",
|
|
14
14
|
"vendor/swift/lib/Demangling/Punycode.cpp",
|
|
15
15
|
"vendor/swift/lib/Demangling/Remangler.cpp",
|
|
16
|
-
"vendor/swift/lib/Demangling/
|
|
16
|
+
"vendor/swift/lib/Demangling/DemanglingErrorHandling.cpp",
|
|
17
17
|
];
|
|
18
18
|
|
|
19
19
|
cc::Build::new()
|
|
@@ -64,7 +64,20 @@ trap 'rm -rf "$TMP"' EXIT
|
|
|
64
64
|
# Internal (non-public) symbols are exactly what the demangler sees in real
|
|
65
65
|
# binaries' symtabs, so no visibility gymnastics are needed; -parse-as-library
|
|
66
66
|
# keeps top-level code out of the way of actors/global-actor isolation.
|
|
67
|
-
|
|
67
|
+
# Swift 6.4 gates the fixture's yielding accessors (SE-0474) behind an
|
|
68
|
+
# experimental feature flag; when the plain compile rejects them, retry with
|
|
69
|
+
# the flag and record it in the provenance so the corpus stays reproducible.
|
|
70
|
+
EXTRA_FLAGS=""
|
|
71
|
+
if ! "$SWIFTC" -c -parse-as-library -o "$TMP/fixture.o" "$FIXTURE" 2>"$TMP/compile.log"; then
|
|
72
|
+
if "$SWIFTC" -c -parse-as-library \
|
|
73
|
+
-enable-experimental-feature CoroutineAccessors \
|
|
74
|
+
-o "$TMP/fixture.o" "$FIXTURE" 2>"$TMP/compile-flag.log"; then
|
|
75
|
+
EXTRA_FLAGS="-enable-experimental-feature CoroutineAccessors"
|
|
76
|
+
else
|
|
77
|
+
cat "$TMP/compile-flag.log" >&2
|
|
78
|
+
exit 1
|
|
79
|
+
fi
|
|
80
|
+
fi
|
|
68
81
|
|
|
69
82
|
# Collect into the temp dir and only publish a corpus that passed the checks
|
|
70
83
|
# below: writing straight to $OUT_DIR would truncate the committed snapshot
|
|
@@ -92,6 +105,7 @@ COUNT="$(grep -c '' < "$TMP/symbols.txt")"
|
|
|
92
105
|
echo "target: $("$SWIFTC" -print-target-info 2>/dev/null \
|
|
93
106
|
| sed -n 's/.*"unversionedTriple"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' | head -1)"
|
|
94
107
|
echo "source: scripts/swift-corpus-fixture.swift compiled with $SWIFTC"
|
|
108
|
+
[ -z "$EXTRA_FLAGS" ] || echo "flags: $EXTRA_FLAGS"
|
|
95
109
|
} > "$TMP/provenance.txt"
|
|
96
110
|
|
|
97
111
|
mv "$TMP/symbols.txt" "$OUT_DIR/symbols.txt"
|
|
@@ -7,6 +7,14 @@
|
|
|
7
7
|
// between toolchains: generics and associated types, closures (escaping,
|
|
8
8
|
// autoclosure, @Sendable), async/await and throw, actors and global-actor
|
|
9
9
|
// isolation, property wrappers, subscripts, and specialization attributes.
|
|
10
|
+
//
|
|
11
|
+
// Swift 6.4 additions (SE-0507 borrow/mutate accessors, SE-0521 optional
|
|
12
|
+
// opaque/existential types, SE-0474 yielding accessors, SE-0493/SE-0504
|
|
13
|
+
// async-defer and cancellation shielding) are guarded with
|
|
14
|
+
// `#if compiler(>=6.4)` so the fixture still compiles with the 6.3.x
|
|
15
|
+
// toolchains that back the older corpora. The yielding accessors additionally
|
|
16
|
+
// need `-enable-experimental-feature CoroutineAccessors`, which
|
|
17
|
+
// collect-swift-corpus.sh passes automatically when the toolchain accepts it.
|
|
10
18
|
|
|
11
19
|
import Foundation
|
|
12
20
|
|
|
@@ -149,3 +157,58 @@ extension Packet: CustomStringConvertible {
|
|
|
149
157
|
|
|
150
158
|
@discardableResult
|
|
151
159
|
func discardable(_ flag: Bool) -> Int { flag ? 1 : 0 }
|
|
160
|
+
|
|
161
|
+
// --- Swift 6.4 ---
|
|
162
|
+
|
|
163
|
+
#if compiler(>=6.4)
|
|
164
|
+
// nonisolated(nonsending) parameter isolation: the closure type mangles with
|
|
165
|
+
// the NonIsolatedCallerFunctionType marker ('C').
|
|
166
|
+
actor Queue {
|
|
167
|
+
func enqueue(_ op: nonisolated(nonsending) () async -> Void) async {
|
|
168
|
+
await op()
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// SE-0507 borrow/mutate accessors on a Copyable type: the accessors mangle
|
|
172
|
+
// with the borrow ('b') and mutate ('z') accessor letters.
|
|
173
|
+
struct Gauge64 {
|
|
174
|
+
private var backing: Int = 7
|
|
175
|
+
var direct: Int {
|
|
176
|
+
borrow { backing }
|
|
177
|
+
mutate { &backing }
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// SE-0507 accessors on a ~Copyable type (the proposal's motivating form).
|
|
182
|
+
struct Rigid<Element: ~Copyable>: ~Copyable {
|
|
183
|
+
var _element: Element
|
|
184
|
+
var element: Element {
|
|
185
|
+
borrow {
|
|
186
|
+
return _element
|
|
187
|
+
}
|
|
188
|
+
mutate {
|
|
189
|
+
return &_element
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// SE-0521: optional opaque and existential types without parentheses.
|
|
195
|
+
func optionalOpaque64(_ p: Packet) -> some Payload? { p }
|
|
196
|
+
func optionalAny64(_ p: (any Payload)?) -> any Payload? { p }
|
|
197
|
+
|
|
198
|
+
// SE-0474 yielding accessors (experimental in 6.4): the coroutine accessors
|
|
199
|
+
// mangle as YieldingBorrowAccessor ('y') / YieldingMutateAccessor ('x').
|
|
200
|
+
struct Yielder {
|
|
201
|
+
private var storage: [Int] = [1, 2, 3]
|
|
202
|
+
var current: Int {
|
|
203
|
+
yielding borrow { yield storage[0] }
|
|
204
|
+
yielding mutate { yield &storage[0] }
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// SE-0493: defer in async code runs (and is awaited) before the function
|
|
209
|
+
// exits. No dedicated mangling, but it exercises 6.4 codegen for the corpus.
|
|
210
|
+
func deferredAsync(_ flag: Bool) async -> Int {
|
|
211
|
+
defer { print("exiting") }
|
|
212
|
+
return flag ? 1 : 0
|
|
213
|
+
}
|
|
214
|
+
#endif
|
|
@@ -48,7 +48,7 @@ LLVM_SPARSE=(
|
|
|
48
48
|
|
|
49
49
|
# build.rs compiles these lib/Demangling translation units; CrashReporter.cpp
|
|
50
50
|
# is intentionally omitted (SWIFT_RUNTIME_NO_CRASH_REPORTER).
|
|
51
|
-
BUILD_CPP="Context.cpp Demangler.cpp ManglingUtils.cpp NodeDumper.cpp NodePrinter.cpp Punycode.cpp Remangler.cpp
|
|
51
|
+
BUILD_CPP="Context.cpp Demangler.cpp ManglingUtils.cpp NodeDumper.cpp NodePrinter.cpp Punycode.cpp Remangler.cpp DemanglingErrorHandling.cpp"
|
|
52
52
|
|
|
53
53
|
FORCE=0
|
|
54
54
|
TAG=""
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
//! - C++ (Itanium, GNU v2, CodeWarrior, and MSVC) (`features = ["cpp", "gnuv2", "codewarrior", "msvc"]`)
|
|
6
6
|
//! - Rust (both `legacy` and `v0`) (`features = ["rust"]`)
|
|
7
7
|
//! - Scala Native via the unknown-language fallback (`features = ["scala-native"]`)
|
|
8
|
-
//! - Swift (up to Swift 6.
|
|
8
|
+
//! - Swift (up to Swift 6.4.0) (`features = ["swift"]`)
|
|
9
9
|
//! - D (`features = ["dlang"]`)
|
|
10
10
|
//! - Fortran, gfortran and Intel module symbols plus the plain g77 `name_`
|
|
11
11
|
//! form — explicit-request-only (`features = ["fortran"]`)
|
|
@@ -55,9 +55,10 @@ const ACCESSOR_KINDS: &[&str] = &[
|
|
|
55
55
|
"Setter",
|
|
56
56
|
"MaterializeForSet",
|
|
57
57
|
"ModifyAccessor",
|
|
58
|
-
|
|
58
|
+
// Renamed from Modify2Accessor/Read2Accessor at Swift 6.4 (SE-0474).
|
|
59
|
+
"YieldingMutateAccessor",
|
|
59
60
|
"ReadAccessor",
|
|
60
|
-
"
|
|
61
|
+
"YieldingBorrowAccessor",
|
|
61
62
|
"WillSet",
|
|
62
63
|
"DidSet",
|
|
63
64
|
"OwningAddressor",
|
|
@@ -56,7 +56,7 @@ include/swift/Strings.h
|
|
|
56
56
|
lib/Demangling/Context.cpp
|
|
57
57
|
lib/Demangling/Demangler.cpp
|
|
58
58
|
lib/Demangling/DemanglerAssert.h
|
|
59
|
-
lib/Demangling/
|
|
59
|
+
lib/Demangling/DemanglingErrorHandling.cpp
|
|
60
60
|
lib/Demangling/ManglingUtils.cpp
|
|
61
61
|
lib/Demangling/NodeDumper.cpp
|
|
62
62
|
lib/Demangling/NodePrinter.cpp
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Swift vendor sync log
|
|
2
|
+
|
|
3
|
+
Records of every `vendor/swift` sync from upstream Swift, produced by
|
|
4
|
+
`scripts/sync-swift.sh <swift-tag>` (run it rather than editing by hand).
|
|
5
|
+
Each entry lists the upstream refs, what changed in the vendored subset,
|
|
6
|
+
the diffstat, and the validation results. The `sync-metadata` block at the
|
|
7
|
+
bottom always describes the most recent sync; the monthly CI reminder
|
|
8
|
+
workflow parses it to list upstream commits since the last sync.
|
|
9
|
+
|
|
10
|
+
## 2026-08-29 — swift-6.3.3-RELEASE
|
|
11
|
+
|
|
12
|
+
- Swift ref: swift-6.3.3-RELEASE (064859e41d68596f486c5d724401cb370f260409)
|
|
13
|
+
- LLVM ref: swift-6.3.3-RELEASE (82cdc19fa54d566969527b56f587ea8ea30bef51)
|
|
14
|
+
- Headers added to the manifest: none
|
|
15
|
+
- Manifest files missing upstream: none
|
|
16
|
+
- Diffstat: 18 files changed, 3023 insertions(+), 1481 deletions(-)
|
|
17
|
+
- New files:
|
|
18
|
+
vendor/swift/SYNC.md
|
|
19
|
+
vendor/swift/include/llvm-c/
|
|
20
|
+
vendor/swift/include/llvm/ADT/ADL.h
|
|
21
|
+
vendor/swift/include/llvm/ADT/DenseMapInfo.h
|
|
22
|
+
vendor/swift/include/llvm/ADT/STLForwardCompat.h
|
|
23
|
+
vendor/swift/include/llvm/ADT/STLFunctionalExtras.h
|
|
24
|
+
vendor/swift/include/llvm/ADT/bit.h
|
|
25
|
+
vendor/swift/include/llvm/Config/
|
|
26
|
+
vendor/swift/include/llvm/Support/DataTypes.h
|
|
27
|
+
- Validation: cargo test --all-features PASS; pytest PASS; ASan/UBSan corpus PASS
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## 2026-09-15 — swift-6.4.0-RELEASE
|
|
31
|
+
|
|
32
|
+
- Swift ref: swift-6.4.0-RELEASE (b8189d766d86ad7fc8106787d6ce9e402f38dd72)
|
|
33
|
+
- LLVM ref: swift-6.4.0-RELEASE (903b9faaae5c43ecc9b7e33f8db9c94c7429374a)
|
|
34
|
+
- Headers added to the manifest: none
|
|
35
|
+
- Manifest files missing upstream: lib/Demangling/Errors.cpp — renamed upstream
|
|
36
|
+
to lib/Demangling/DemanglingErrorHandling.cpp (byte-identical modulo the
|
|
37
|
+
header comment); vendored under the new name, dropped the old one, and
|
|
38
|
+
updated build.rs/scripts accordingly
|
|
39
|
+
- Diffstat: 10 files changed, 137 insertions(+), 26 deletions(-)
|
|
40
|
+
- Mangling changes: Read2Accessor/Modify2Accessor renamed to
|
|
41
|
+
YieldingBorrowAccessor/YieldingMutateAccessor (printed `yielding_borrow`/
|
|
42
|
+
`yielding_mutate`, SE-0474); new BuiltinBorrow node (`BW`, SE-0507);
|
|
43
|
+
new ImplNonisolatedNonsendingIsolation impl-function-type flag (`N`,
|
|
44
|
+
printed `@caller_isolated`); new EscapingClosureProp function-signature
|
|
45
|
+
specialization parameter (`E`); inverse requirements on associated types
|
|
46
|
+
(`j`/`J`)
|
|
47
|
+
- New files:
|
|
48
|
+
vendor/swift/lib/Demangling/DemanglingErrorHandling.cpp
|
|
49
|
+
- Validation: cargo test --all-features PASS; pytest PASS (run after the
|
|
50
|
+
sync — the script skipped it because the venv lacked maturin at the time);
|
|
51
|
+
ASan/UBSan corpus PASS (including the new tests/corpus/swift/6.4.0 corpus);
|
|
52
|
+
added per-toolchain corpus tests/corpus/swift/6.4.0 (Apple Swift 6.4.0,
|
|
53
|
+
arm64-apple-macosx, with -enable-experimental-feature CoroutineAccessors
|
|
54
|
+
for the fixture's SE-0474 accessors)
|
|
55
|
+
|
|
56
|
+
<!-- sync-metadata
|
|
57
|
+
swift-ref: swift-6.4.0-RELEASE
|
|
58
|
+
swift-commit: b8189d766d86ad7fc8106787d6ce9e402f38dd72
|
|
59
|
+
llvm-ref: swift-6.4.0-RELEASE
|
|
60
|
+
llvm-commit: 903b9faaae5c43ecc9b7e33f8db9c94c7429374a
|
|
61
|
+
date: 2026-09-15
|
|
62
|
+
-->
|
|
@@ -329,7 +329,7 @@ struct hash_state {
|
|
|
329
329
|
/// This variable can be set using the \see llvm::set_fixed_execution_seed
|
|
330
330
|
/// function. See that function for details. Do not, under any circumstances,
|
|
331
331
|
/// set or read this variable.
|
|
332
|
-
extern uint64_t fixed_seed_override;
|
|
332
|
+
LLVM_ABI extern uint64_t fixed_seed_override;
|
|
333
333
|
|
|
334
334
|
inline uint64_t get_execution_seed() {
|
|
335
335
|
// FIXME: This needs to be a per-execution seed. This is just a placeholder
|
|
@@ -38,6 +38,8 @@ namespace llvm {
|
|
|
38
38
|
LLVM_ABI bool getAsSignedInteger(StringRef Str, unsigned Radix,
|
|
39
39
|
long long &Result);
|
|
40
40
|
|
|
41
|
+
LLVM_ABI unsigned getAutoSenseRadix(StringRef &Str);
|
|
42
|
+
|
|
41
43
|
LLVM_ABI bool consumeUnsignedInteger(StringRef &Str, unsigned Radix,
|
|
42
44
|
unsigned long long &Result);
|
|
43
45
|
LLVM_ABI bool consumeSignedInteger(StringRef &Str, unsigned Radix,
|
|
@@ -153,7 +153,7 @@ ValueOwnership asValueOwnership(ParameterOwnership o);
|
|
|
153
153
|
static inline llvm::StringRef getOwnershipSpelling(ValueOwnership ownership) {
|
|
154
154
|
switch (ownership) {
|
|
155
155
|
case ValueOwnership::Default:
|
|
156
|
-
return "";
|
|
156
|
+
return "default";
|
|
157
157
|
case ValueOwnership::InOut:
|
|
158
158
|
return "inout";
|
|
159
159
|
case ValueOwnership::Shared:
|
{multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/swift/Demangling/Demangle.h
RENAMED
|
@@ -118,6 +118,7 @@ enum class FunctionSigSpecializationParamKind : unsigned {
|
|
|
118
118
|
ConstantPropKeyPath = 9,
|
|
119
119
|
ConstantPropStruct = 10,
|
|
120
120
|
ClosurePropPreviousArg = 11,
|
|
121
|
+
EscapingClosureProp = 12,
|
|
121
122
|
|
|
122
123
|
// Option Set Flags use bits 6-31. This gives us 26 bits to use for option
|
|
123
124
|
// flags.
|
|
@@ -47,6 +47,7 @@ NODE(BoundGenericFunction)
|
|
|
47
47
|
NODE(BuiltinTypeName)
|
|
48
48
|
NODE(BuiltinTupleType)
|
|
49
49
|
NODE(BuiltinFixedArray)
|
|
50
|
+
NODE(BuiltinBorrow)
|
|
50
51
|
NODE(CFunctionPointer)
|
|
51
52
|
NODE(ClangType)
|
|
52
53
|
CONTEXT_NODE(Class)
|
|
@@ -134,6 +135,7 @@ CONTEXT_NODE(IVarDestroyer)
|
|
|
134
135
|
NODE(ImplEscaping)
|
|
135
136
|
NODE(ImplConvention)
|
|
136
137
|
NODE(ImplDifferentiabilityKind)
|
|
138
|
+
NODE(ImplNonisolatedNonsendingIsolation)
|
|
137
139
|
NODE(ImplErasedIsolation)
|
|
138
140
|
NODE(ImplSendingResult)
|
|
139
141
|
NODE(ImplParameterResultDifferentiability)
|
|
@@ -186,7 +188,7 @@ NODE(ObjCMetadataUpdateFunction)
|
|
|
186
188
|
NODE(ObjCResilientClassStub)
|
|
187
189
|
NODE(FullObjCResilientClassStub)
|
|
188
190
|
CONTEXT_NODE(ModifyAccessor)
|
|
189
|
-
CONTEXT_NODE(
|
|
191
|
+
CONTEXT_NODE(YieldingMutateAccessor)
|
|
190
192
|
CONTEXT_NODE(Module)
|
|
191
193
|
CONTEXT_NODE(NativeOwningAddressor)
|
|
192
194
|
CONTEXT_NODE(NativeOwningMutableAddressor)
|
|
@@ -240,7 +242,7 @@ NODE(ReabstractionThunkHelper)
|
|
|
240
242
|
NODE(ReabstractionThunkHelperWithSelf)
|
|
241
243
|
NODE(ReabstractionThunkHelperWithGlobalActor)
|
|
242
244
|
CONTEXT_NODE(ReadAccessor)
|
|
243
|
-
CONTEXT_NODE(
|
|
245
|
+
CONTEXT_NODE(YieldingBorrowAccessor)
|
|
244
246
|
NODE(RelatedEntityDeclName)
|
|
245
247
|
NODE(RetroactiveConformance)
|
|
246
248
|
NODE(ReturnType)
|
{multi_demangle-2.0.1 → multi_demangle-2.1.0}/vendor/swift/include/swift/Demangling/Demangler.h
RENAMED
|
@@ -496,6 +496,7 @@ protected:
|
|
|
496
496
|
Vector<NodePointer> NodeStack;
|
|
497
497
|
Vector<NodePointer> Substitutions;
|
|
498
498
|
int NumWords;
|
|
499
|
+
StringRef Words[MaxNumWords];
|
|
499
500
|
StringRef Text;
|
|
500
501
|
size_t Pos;
|
|
501
502
|
std::function<SymbolicReferenceResolver_t> SymbolicReferenceResolver;
|
|
@@ -592,6 +593,7 @@ protected:
|
|
|
592
593
|
|
|
593
594
|
NodePointer popAssocTypeName();
|
|
594
595
|
NodePointer popAssocTypePath();
|
|
596
|
+
NodePointer popAssociatedConformanceWitnessAccessorSubject();
|
|
595
597
|
NodePointer getDependentGenericParamType(int depth, int index);
|
|
596
598
|
NodePointer demangleGenericParamIndex();
|
|
597
599
|
NodePointer popProtocolConformance();
|
|
@@ -37,6 +37,8 @@ constexpr static const StringLiteral SWIFT_STRING_PROCESSING_NAME = "_StringProc
|
|
|
37
37
|
constexpr static const StringLiteral SWIFT_SHIMS_NAME = "SwiftShims";
|
|
38
38
|
/// The name of the CxxShim module, which contains a cxx casting utility.
|
|
39
39
|
constexpr static const StringLiteral CXX_SHIM_NAME = "CxxShim";
|
|
40
|
+
/// The name of the CxxStdlibShim module, which contains utilities for the C++ stdlib overlay.
|
|
41
|
+
constexpr static const StringLiteral CXX_STDLIB_SHIM_NAME = "CxxStdlibShim";
|
|
40
42
|
/// The name of the Cxx module, which contains C++ interop helper protocols.
|
|
41
43
|
constexpr static const StringLiteral CXX_MODULE_NAME = "Cxx";
|
|
42
44
|
/// The name of the Builtin module, which contains Builtin functions.
|
|
@@ -178,6 +180,8 @@ constexpr static BuiltinNameStringLiteral BUILTIN_TYPE_NAME_VEC = {
|
|
|
178
180
|
"Builtin.Vec"};
|
|
179
181
|
constexpr static BuiltinNameStringLiteral BUILTIN_TYPE_NAME_FIXEDARRAY = {
|
|
180
182
|
"Builtin.FixedArray"};
|
|
183
|
+
constexpr static BuiltinNameStringLiteral BUILTIN_TYPE_NAME_BORROW = {
|
|
184
|
+
"Builtin.Borrow"};
|
|
181
185
|
/// The name of the Builtin type for SILToken
|
|
182
186
|
constexpr static BuiltinNameStringLiteral BUILTIN_TYPE_NAME_SILTOKEN = {
|
|
183
187
|
"Builtin.SILToken"};
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
//
|
|
15
15
|
//===----------------------------------------------------------------------===//
|
|
16
16
|
|
|
17
|
-
#include "llvm/Support/Compiler.h"
|
|
18
17
|
#include "swift/Demangling/Demangler.h"
|
|
19
18
|
#include "DemanglerAssert.h"
|
|
20
19
|
#include "swift/Demangling/ManglingMacros.h"
|
|
@@ -301,6 +300,20 @@ static bool isProtocolNode(Demangle::NodePointer Node) {
|
|
|
301
300
|
assert(0 && "unknown node kind");
|
|
302
301
|
}
|
|
303
302
|
|
|
303
|
+
static bool isGenericParamType(Demangle::NodePointer Node) {
|
|
304
|
+
if (!Node)
|
|
305
|
+
return false;
|
|
306
|
+
switch (Node->getKind()) {
|
|
307
|
+
case Demangle::Node::Kind::Type:
|
|
308
|
+
return isGenericParamType(Node->getChild(0));
|
|
309
|
+
case Demangle::Node::Kind::DependentGenericParamType:
|
|
310
|
+
return true;
|
|
311
|
+
default:
|
|
312
|
+
return false;
|
|
313
|
+
}
|
|
314
|
+
assert(0 && "unknown node kind");
|
|
315
|
+
}
|
|
316
|
+
|
|
304
317
|
bool swift::Demangle::isProtocol(llvm::StringRef mangledName) {
|
|
305
318
|
Demangle::Demangler Dem;
|
|
306
319
|
return isProtocolNode(Dem.demangleType(dropSwiftManglingPrefix(mangledName)));
|
|
@@ -722,6 +735,7 @@ Demangler::DemangleInitRAII::DemangleInitRAII(Demangler &Dem,
|
|
|
722
735
|
NumWords(Dem.NumWords), Text(Dem.Text), Pos(Dem.Pos),
|
|
723
736
|
SymbolicReferenceResolver(std::move(Dem.SymbolicReferenceResolver))
|
|
724
737
|
{
|
|
738
|
+
std::copy(Dem.Words, Dem.Words + MaxNumWords, Words);
|
|
725
739
|
// Reset the demangler state for a nested job.
|
|
726
740
|
Dem.NodeStack.init(Dem, 16);
|
|
727
741
|
Dem.Substitutions.init(Dem, 16);
|
|
@@ -736,6 +750,7 @@ Demangler::DemangleInitRAII::~DemangleInitRAII() {
|
|
|
736
750
|
Dem.NodeStack = NodeStack;
|
|
737
751
|
Dem.Substitutions = Substitutions;
|
|
738
752
|
Dem.NumWords = NumWords;
|
|
753
|
+
std::copy(Words, Words + MaxNumWords, Dem.Words);
|
|
739
754
|
Dem.Text = Text;
|
|
740
755
|
Dem.Pos = Pos;
|
|
741
756
|
Dem.SymbolicReferenceResolver = std::move(SymbolicReferenceResolver);
|
|
@@ -1510,6 +1525,14 @@ NodePointer Demangler::demangleBuiltinType() {
|
|
|
1510
1525
|
Ty->addChild(element, *this);
|
|
1511
1526
|
break;
|
|
1512
1527
|
}
|
|
1528
|
+
case 'W': {
|
|
1529
|
+
NodePointer referent = popNode(Node::Kind::Type);
|
|
1530
|
+
if (!referent)
|
|
1531
|
+
return nullptr;
|
|
1532
|
+
Ty = createNode(Node::Kind::BuiltinBorrow);
|
|
1533
|
+
Ty->addChild(referent, *this);
|
|
1534
|
+
break;
|
|
1535
|
+
}
|
|
1513
1536
|
case 'O':
|
|
1514
1537
|
Ty = createNode(Node::Kind::BuiltinTypeName,
|
|
1515
1538
|
BUILTIN_TYPE_NAME_UNKNOWNOBJECT);
|
|
@@ -2402,6 +2425,10 @@ NodePointer Demangler::demangleImplFunctionType() {
|
|
|
2402
2425
|
if (nextIf('A'))
|
|
2403
2426
|
type->addChild(createNode(Node::Kind::ImplErasedIsolation), *this);
|
|
2404
2427
|
|
|
2428
|
+
if (nextIf('N'))
|
|
2429
|
+
type->addChild(createNode(Node::Kind::ImplNonisolatedNonsendingIsolation),
|
|
2430
|
+
*this);
|
|
2431
|
+
|
|
2405
2432
|
switch ((MangledDifferentiabilityKind)peekChar()) {
|
|
2406
2433
|
case MangledDifferentiabilityKind::Normal: // 'd'
|
|
2407
2434
|
case MangledDifferentiabilityKind::Linear: // 'l'
|
|
@@ -2905,6 +2932,16 @@ NodePointer Demangler::popProtocolConformance() {
|
|
|
2905
2932
|
return Conf;
|
|
2906
2933
|
}
|
|
2907
2934
|
|
|
2935
|
+
NodePointer Demangler::popAssociatedConformanceWitnessAccessorSubject() {
|
|
2936
|
+
if (auto type = popNode(Node::Kind::Type)) {
|
|
2937
|
+
if (isGenericParamType(type))
|
|
2938
|
+
return type;
|
|
2939
|
+
|
|
2940
|
+
pushNode(type);
|
|
2941
|
+
}
|
|
2942
|
+
return popAssocTypePath();
|
|
2943
|
+
}
|
|
2944
|
+
|
|
2908
2945
|
NodePointer Demangler::demangleThunkOrSpecialization() {
|
|
2909
2946
|
switch (char c = nextChar()) {
|
|
2910
2947
|
// Thunks that are from a thunk inst. We take the TT namespace.
|
|
@@ -3080,19 +3117,19 @@ NodePointer Demangler::demangleThunkOrSpecialization() {
|
|
|
3080
3117
|
|
|
3081
3118
|
case 'n': {
|
|
3082
3119
|
NodePointer requirementTy = popProtocol();
|
|
3083
|
-
NodePointer
|
|
3120
|
+
NodePointer subject = popAssociatedConformanceWitnessAccessorSubject();
|
|
3084
3121
|
NodePointer protoTy = popNode(Node::Kind::Type);
|
|
3085
3122
|
return createWithChildren(Node::Kind::AssociatedConformanceDescriptor,
|
|
3086
|
-
protoTy,
|
|
3123
|
+
protoTy, subject, requirementTy);
|
|
3087
3124
|
}
|
|
3088
3125
|
|
|
3089
3126
|
case 'N': {
|
|
3090
3127
|
NodePointer requirementTy = popProtocol();
|
|
3091
|
-
|
|
3128
|
+
NodePointer subject = popAssociatedConformanceWitnessAccessorSubject();
|
|
3092
3129
|
NodePointer protoTy = popNode(Node::Kind::Type);
|
|
3093
3130
|
return createWithChildren(
|
|
3094
3131
|
Node::Kind::DefaultAssociatedConformanceAccessor,
|
|
3095
|
-
protoTy,
|
|
3132
|
+
protoTy, subject, requirementTy);
|
|
3096
3133
|
}
|
|
3097
3134
|
|
|
3098
3135
|
case 'b': {
|
|
@@ -3403,7 +3440,8 @@ NodePointer Demangler::demangleFunctionSpecialization() {
|
|
|
3403
3440
|
|
|
3404
3441
|
auto ParamKind = (FunctionSigSpecializationParamKind)KindNd->getIndex();
|
|
3405
3442
|
switch (ParamKind) {
|
|
3406
|
-
case FunctionSigSpecializationParamKind::ClosureProp:
|
|
3443
|
+
case FunctionSigSpecializationParamKind::ClosureProp:
|
|
3444
|
+
case FunctionSigSpecializationParamKind::EscapingClosureProp: {
|
|
3407
3445
|
while (NodePointer Ty = popNode(Node::Kind::Type)) {
|
|
3408
3446
|
paramToAdd = addChild(paramToAdd, Ty);
|
|
3409
3447
|
}
|
|
@@ -3445,6 +3483,12 @@ NodePointer Demangler::demangleFuncSpecParam(Node::Kind Kind) {
|
|
|
3445
3483
|
return addChild(Param, createNode(
|
|
3446
3484
|
Node::Kind::FunctionSignatureSpecializationParamKind,
|
|
3447
3485
|
uint64_t(FunctionSigSpecializationParamKind::ClosureProp)));
|
|
3486
|
+
case 'E':
|
|
3487
|
+
// Like 'c', but for escaping closures. Consumes an identifier and
|
|
3488
|
+
// multiple type parameters. The parameters will be added later.
|
|
3489
|
+
return addChild(Param, createNode(
|
|
3490
|
+
Node::Kind::FunctionSignatureSpecializationParamKind,
|
|
3491
|
+
uint64_t(FunctionSigSpecializationParamKind::EscapingClosureProp)));
|
|
3448
3492
|
case 'C': {
|
|
3449
3493
|
// Consumes an identifier and multiple type parameters.
|
|
3450
3494
|
// The parameters will be added later.
|
|
@@ -4123,9 +4167,9 @@ NodePointer Demangler::demangleAccessor(NodePointer ChildNode) {
|
|
|
4123
4167
|
case 'w': Kind = Node::Kind::WillSet; break;
|
|
4124
4168
|
case 'W': Kind = Node::Kind::DidSet; break;
|
|
4125
4169
|
case 'r': Kind = Node::Kind::ReadAccessor; break;
|
|
4126
|
-
case 'y': Kind = Node::Kind::
|
|
4170
|
+
case 'y': Kind = Node::Kind::YieldingBorrowAccessor; break;
|
|
4127
4171
|
case 'M': Kind = Node::Kind::ModifyAccessor; break;
|
|
4128
|
-
case 'x': Kind = Node::Kind::
|
|
4172
|
+
case 'x': Kind = Node::Kind::YieldingMutateAccessor; break;
|
|
4129
4173
|
case 'i': Kind = Node::Kind::InitAccessor; break;
|
|
4130
4174
|
case 'b':
|
|
4131
4175
|
Kind = Node::Kind::BorrowAccessor;
|
|
@@ -4397,6 +4441,20 @@ NodePointer Demangler::demangleGenericRequirement() {
|
|
|
4397
4441
|
if (!inverseKind)
|
|
4398
4442
|
return nullptr;
|
|
4399
4443
|
break;
|
|
4444
|
+
case 'j':
|
|
4445
|
+
ConstraintKind = Inverse;
|
|
4446
|
+
TypeKind = Assoc;
|
|
4447
|
+
inverseKind = demangleIndexAsNode();
|
|
4448
|
+
if (!inverseKind)
|
|
4449
|
+
return nullptr;
|
|
4450
|
+
break;
|
|
4451
|
+
case 'J':
|
|
4452
|
+
ConstraintKind = Inverse;
|
|
4453
|
+
TypeKind = CompoundAssoc;
|
|
4454
|
+
inverseKind = demangleIndexAsNode();
|
|
4455
|
+
if (!inverseKind)
|
|
4456
|
+
return nullptr;
|
|
4457
|
+
break;
|
|
4400
4458
|
default: ConstraintKind = Protocol; TypeKind = Generic; pushBack(); break;
|
|
4401
4459
|
}
|
|
4402
4460
|
|