Skip to content

Commit d10c4fa

Browse files
authored
Merge pull request #3829 from swiftwasm/maxd/main-merge
Resolve conflicts with upstream `main`
2 parents d215291 + 998930f commit d10c4fa

File tree

529 files changed

+31281
-4817
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

529 files changed

+31281
-4817
lines changed

.github/workflows/build-toolchain.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,7 @@ jobs:
148148
if: ${{ matrix.run_stdlib_test }}
149149
run: |
150150
TARGET_STDLIB_BUILD_DIR=${{ github.workspace }}/target-build/swift-stdlib-wasi-wasm32
151-
./swift/utils/run-test --build-dir "$TARGET_STDLIB_BUILD_DIR" --target wasi-wasm32 \
152-
"$TARGET_STDLIB_BUILD_DIR/test-wasi-wasm32/stdlib"
153-
./swift/utils/run-test --build-dir "$TARGET_STDLIB_BUILD_DIR" --target wasi-wasm32 \
154-
"$TARGET_STDLIB_BUILD_DIR/test-wasi-wasm32/Concurrency/Runtime"
151+
ninja check-swift-wasi-wasm32-custom -C "$TARGET_STDLIB_BUILD_DIR"
155152
156153
- name: Run all tests for wasi-wasm32
157154
if: ${{ matrix.run_full_test }}

CMakeLists.txt

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,9 @@ cmake_dependent_option(LIBSWIFT_BUILD_MODE "How to build libswift. Possible valu
204204
HOSTTOOLS: libswift is built with a pre-installed toolchain
205205
BOOTSTRAPPING: libswift is built with a 2-stage bootstrapping process
206206
BOOTSTRAPPING-WITH-HOSTLIBS: libswift is built with a 2-stage bootstrapping process,
207-
but the compiler links against the host system swift libs (macOS only)"
207+
but the compiler links against the host system swift libs (macOS only)
208+
CROSSCOMPILE-WITH-HOSTLIBS: libswift is built with a bootstrapping-with-hostlibs compiled
209+
compiler, provided in `SWIFT_NATIVE_SWIFT_TOOLS_PATH`"
208210
OFF "NOT CMAKE_GENERATOR STREQUAL \"Xcode\"" OFF)
209211

210212
# The following only works with the Ninja generator in CMake >= 3.0.
@@ -530,6 +532,9 @@ if(SWIFT_ENABLE_DISPATCH AND NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
530532
endif()
531533
endif()
532534

535+
file(STRINGS "utils/availability-macros.def" SWIFT_STDLIB_AVAILABILITY_DEFINITIONS)
536+
list(FILTER SWIFT_STDLIB_AVAILABILITY_DEFINITIONS EXCLUDE REGEX "^\\s*(#.*)?$")
537+
533538
#
534539
# Include CMake modules
535540
#
@@ -614,15 +619,19 @@ set(SWIFT_LIBRARY_OUTPUT_INTDIR "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib")
614619
if("${SWIFT_NATIVE_SWIFT_TOOLS_PATH}" STREQUAL "")
615620
set(SWIFT_NATIVE_SWIFT_TOOLS_PATH "${SWIFT_RUNTIME_OUTPUT_INTDIR}")
616621
set(SWIFT_EXEC_FOR_LIBSWIFT "${CMAKE_Swift_COMPILER}")
617-
elseif(LIBSWIFT_BUILD_MODE STREQUAL "BOOTSTRAPPING" OR LIBSWIFT_BUILD_MODE STREQUAL "BOOTSTRAPPING-WITH-HOSTLIBS")
622+
elseif(LIBSWIFT_BUILD_MODE MATCHES "BOOTSTRAPPING.*")
618623
# If cross-compiling we don't have to bootstrap. We can just use the previously
619624
# built native swiftc to build libswift.
620-
message(STATUS "Building libswift with native host tools instead of bootstrapping")
621-
set(LIBSWIFT_BUILD_MODE "HOSTTOOLS")
625+
message(STATUS "Building libswift with previously built tools instead of bootstrapping")
622626
set(SWIFT_EXEC_FOR_LIBSWIFT "${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/swiftc")
627+
if(LIBSWIFT_BUILD_MODE STREQUAL "BOOTSTRAPPING-WITH-HOSTLIBS")
628+
set(LIBSWIFT_BUILD_MODE "CROSSCOMPILE-WITH-HOSTLIBS")
629+
else()
630+
set(LIBSWIFT_BUILD_MODE "HOSTTOOLS")
631+
endif()
623632
endif()
624633

625-
if(LIBSWIFT_BUILD_MODE STREQUAL "HOSTTOOLS" OR LIBSWIFT_BUILD_MODE STREQUAL "BOOTSTRAPPING-WITH-HOSTLIBS")
634+
if(LIBSWIFT_BUILD_MODE MATCHES "HOSTTOOLS|.*-WITH-HOSTLIBS")
626635
if(SWIFT_ENABLE_ARRAY_COW_CHECKS)
627636
message(STATUS "array COW checks disabled when building libswift with host libraries")
628637
set(SWIFT_ENABLE_ARRAY_COW_CHECKS FALSE)
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
2+
set(SWIFT_HOST_VARIANT_SDK WINDOWS CACHE STRING "")
3+
set(SWIFT_HOST_VARIANT_ARCH aarch64 CACHE STRING "")
4+
5+
# NOTE(compnerd) disable the tools, we are trying to build just the standard
6+
# library.
7+
set(SWIFT_INCLUDE_TOOLS NO CACHE BOOL "")
8+
9+
# NOTE(compnerd) cannot build tests since the tests require the toolchain
10+
set(SWIFT_INCLUDE_TESTS NO CACHE BOOL "")
11+
12+
# NOTE(compnerd) cannot build docs since that requires perl
13+
set(SWIFT_INCLUDE_DOCS NO CACHE BOOL "")
14+
15+
# NOTE(compnerd) these are part of the toolchain, not the runtime.
16+
set(SWIFT_BUILD_SYNTAXPARSERLIB NO CACHE BOOL "")
17+
set(SWIFT_BUILD_SOURCEKIT NO CACHE BOOL "")
18+
19+
# NOTE(compnerd) build with the compiler specified, not a just built compiler.
20+
set(SWIFT_BUILD_RUNTIME_WITH_HOST_COMPILER YES CACHE BOOL "")
21+

cmake/modules/AddSwift.cmake

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -749,6 +749,13 @@ function(add_libswift name)
749749
set(deployment_version "10.15") # TODO: once #38675 lands, replace this with
750750
# set(deployment_version "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_DEPLOYMENT_VERSION}")
751751
set(sdk_option "-sdk" "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_ARCH_${SWIFT_HOST_VARIANT_ARCH}_PATH}")
752+
if(${LIBSWIFT_BUILD_MODE} STREQUAL "CROSSCOMPILE-WITH-HOSTLIBS")
753+
# Let the cross-compiled compile don't pick up the compiled stdlib by providing
754+
# an (almost) empty resource dir.
755+
# The compiler will instead pick up the stdlib from the SDK.
756+
get_filename_component(swift_exec_bin_dir ${ALS_SWIFT_EXEC} DIRECTORY)
757+
set(sdk_option ${sdk_option} "-resource-dir" "${swift_exec_bin_dir}/../bootstrapping0/lib/swift")
758+
endif()
752759
endif()
753760
get_versioned_target_triple(target ${SWIFT_HOST_VARIANT_SDK}
754761
${SWIFT_HOST_VARIANT_ARCH} "${deployment_version}")
@@ -880,6 +887,7 @@ function(add_swift_host_tool executable)
880887
# Please add each rpath separately below to the list, explaining why you are
881888
# adding it.
882889
set(RPATH_LIST)
890+
set(sdk_dir "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_ARCH_${SWIFT_HOST_VARIANT_ARCH}_PATH}/usr/lib/swift")
883891
884892
# If we found a swift compiler and are going to use swift code in swift
885893
# host side tools but link with clang, add the appropriate -L paths so we
@@ -892,9 +900,24 @@ function(add_swift_host_tool executable)
892900
get_filename_component(TOOLCHAIN_LIB_DIR "${TOOLCHAIN_BIN_DIR}/../lib/swift/macosx" ABSOLUTE)
893901
target_link_directories(${executable} PUBLIC ${TOOLCHAIN_LIB_DIR})
894902
895-
# Add in the SDK directory for the host platform.
896-
target_link_directories(${executable} PRIVATE
897-
${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_ARCH_${SWIFT_HOST_VARIANT_ARCH}_PATH}/usr/lib/swift)
903+
# Add the SDK directory for the host platform.
904+
target_link_directories(${executable} PRIVATE "${sdk_dir}")
905+
906+
# Include the abi stable system stdlib in our rpath.
907+
list(APPEND RPATH_LIST "/usr/lib/swift")
908+
909+
elseif(LIBSWIFT_BUILD_MODE STREQUAL "CROSSCOMPILE-WITH-HOSTLIBS")
910+
911+
# Intentinally don't add the lib dir of the cross-compiled compiler, so that
912+
# the stdlib is not picked up from there, but from the SDK.
913+
# This requires to explicitly add all the needed compatibility libraries. We
914+
# can take them from the current build.
915+
set(vsuffix "-${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}-${SWIFT_HOST_VARIANT_ARCH}")
916+
set(conctarget "swiftCompatibilityConcurrency${vsuffix}")
917+
target_link_libraries(${executable} PUBLIC ${conctarget})
918+
919+
# Add the SDK directory for the host platform.
920+
target_link_directories(${executable} PRIVATE "${sdk_dir}")
898921
899922
# Include the abi stable system stdlib in our rpath.
900923
list(APPEND RPATH_LIST "/usr/lib/swift")
@@ -903,9 +926,8 @@ function(add_swift_host_tool executable)
903926
# Pick up the built libswiftCompatibility<n>.a libraries
904927
_link_built_compatibility_libs(${executable})
905928
906-
# Add in the SDK directory for the host platform.
907-
target_link_directories(${executable} PRIVATE
908-
${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_ARCH_${SWIFT_HOST_VARIANT_ARCH}_PATH}/usr/lib/swift)
929+
# Add the SDK directory for the host platform.
930+
target_link_directories(${executable} PRIVATE "${sdk_dir}")
909931
910932
# Include the abi stable system stdlib in our rpath.
911933
list(APPEND RPATH_LIST "/usr/lib/swift")
@@ -951,8 +973,7 @@ function(add_swift_host_tool executable)
951973
# NOTE: We do this /after/ target_link_directorying TOOLCHAIN_LIB_DIR to
952974
# ensure that we first find libraries from the toolchain, rather than from
953975
# the SDK.
954-
target_link_directories(${executable} PRIVATE
955-
${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_ARCH_${SWIFT_HOST_VARIANT_ARCH}_PATH}/usr/lib/swift)
976+
target_link_directories(${executable} PRIVATE "${sdk_dir}")
956977
957978
# We also want to be able to find libraries from the base toolchain
958979
# directory. This is so swiftc can rely on its own host side dylibs that may

cmake/modules/Libdispatch.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ foreach(sdk ${DISPATCH_SDKS})
103103
-DCMAKE_ANDROID_API=${SWIFT_ANDROID_API_LEVEL}
104104
-DBUILD_SHARED_LIBS=YES
105105
-DENABLE_SWIFT=NO
106-
-DENABLE_TESTING=NO
106+
-DBUILD_TESTING=NO
107107
INSTALL_COMMAND
108108
# NOTE(compnerd) provide a custom install command to
109109
# ensure that we strip out the DESTDIR environment
@@ -195,7 +195,7 @@ foreach(sdk ${DISPATCH_SDKS})
195195
-DCMAKE_ANDROID_API=${SWIFT_ANDROID_API_LEVEL}
196196
-DBUILD_SHARED_LIBS=NO
197197
-DENABLE_SWIFT=NO
198-
-DENABLE_TESTING=NO
198+
-DBUILD_TESTING=NO
199199
INSTALL_COMMAND
200200
# NOTE(compnerd) provide a custom install command to
201201
# ensure that we strip out the DESTDIR environment

cmake/modules/SwiftUtils.cmake

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,12 +112,17 @@ function(get_bootstrapping_swift_lib_dir bs_lib_dir bootstrapping)
112112
endfunction()
113113

114114
function(add_bootstrapping_target bootstrapping)
115-
if(${LIBSWIFT_BUILD_MODE} STREQUAL "BOOTSTRAPPING" OR
116-
${LIBSWIFT_BUILD_MODE} STREQUAL "BOOTSTRAPPING-WITH-HOSTLIBS")
115+
if(${LIBSWIFT_BUILD_MODE} MATCHES "BOOTSTRAPPING.*")
117116

118117
set(target "bootstrapping${bootstrapping}-all")
119118
add_custom_target(${target})
120119

120+
if(${LIBSWIFT_BUILD_MODE} STREQUAL "BOOTSTRAPPING")
121+
set(lib_target "bootstrapping${bootstrapping}-corelib")
122+
add_custom_target(${lib_target})
123+
add_dependencies(${target} ${lib_target})
124+
endif()
125+
121126
if(SWIFT_PATH_TO_LIBICU_BUILD)
122127
# Need to symlink the libicu libraries to be able to run
123128
# the bootstrapping compiler with a custom library path.

docs/StandardLibraryProgrammersManual.md

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -298,34 +298,63 @@ Just like access control modifiers, we prefer to put `@available` attributes on
298298
299299
```swift
300300
// 😢👎
301-
@available(macOS 10.6, iOS 10, watchOS 3, tvOS 12, *)
301+
@available(SwiftStdlib 5.2, *)
302302
extension String {
303303
public func blanch() { ... }
304304
public func roast() { ... }
305305
}
306306
307307
// 🥲👍
308308
extension String {
309-
@available(macOS 10.6, iOS 10, watchOS 3, tvOS 12, *)
309+
@available(SwiftStdlib 5.2, *)
310310
public func blanch() { ... }
311311
312-
@available(macOS 10.6, iOS 10, watchOS 3, tvOS 12, *)
312+
@available(SwiftStdlib 5.2, *)
313313
public func roast() { ... }
314314
}
315315
```
316316
317317
This coding style is enforced by the ABI checker -- it will complain if an extension member declaration that needs an availability doesn't have it directly attached.
318318
319-
Features under development that haven't been released yet must be marked with the placeholder version number `9999`. This special version is always considered available in custom builds of the Swift toolchain (including development snapshots), but not in any ABI-stable production release.
319+
This repository defines a set of availability macros (of the form `SwiftStdlib x.y`) that map Swift Stdlib releases to the OS versions that shipped them, for all ABI stable platforms. The following two definitions are equivalent, but the second one is less error-prone, so we prefer that:
320320
321321
```swift
322+
extension String {
323+
// 😵‍💫👎
324+
@available(macOS 10.15.4, iOS 13.4, watchOS 6.2, tvOS 13.4, *)
325+
public func fiddle() { ... }
326+
327+
// 😎👍
328+
@available(SwiftStdlib 5.2, *)
329+
public func fiddle() { ... }
330+
}
331+
```
332+
333+
(Mistakes in the OS version number list are very easy to miss during review, but can have major ABI consequences.)
334+
335+
This is especially important for newly introduced APIs, where the corresponding OS releases may not even be known yet.
336+
337+
Features under development that haven't shipped yet must be marked as available in the placeholder OS version `9999`. This special version is always considered available in custom builds of the Swift toolchain (including development snapshots), but not in any ABI-stable production release.
338+
339+
Never explicitly spell out such placeholder availability -- instead, use the `SwiftStdlib` macro corresponding to the Swift version we're currently working on:
340+
341+
```swift
342+
// 😵‍💫👎
322343
@available(macOS 9999, iOS 9999, watchOS 9999, tvOS 9999, *)
323344
public struct FutureFeature {
324345
...
325346
}
347+
348+
// 😎👍
349+
@available(SwiftStdlib 6.3, *) // Or whatever
350+
public struct FutureFeature {
351+
...
352+
}
326353
```
327354
328-
On these platforms, the Swift Standard Library ships as an integrated part of the operating system; as such, it is the platform owners' responsibility to update these placeholder version numbers to actual versions as part of their release process.
355+
This way, platform owners can easily update declarations to the correct set of version numbers by simply changing the definition of the macro, rather than having to update each individual declaration.
356+
357+
If we haven't defined a version number for the "next" Swift release yet, please use the special placeholder version `SwiftStdlib 9999`, which always expands to 9999 versions. Declarations that use this version will need to be manually updated once we decide on the corresponding Swift version number.
329358
330359
## Internals
331360

include/swift/AST/ASTContext.h

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -350,8 +350,14 @@ class ASTContext final {
350350
/// Cache of module names that fail the 'canImport' test in this context.
351351
mutable llvm::SmallPtrSet<Identifier, 8> FailedModuleImportNames;
352352

353-
/// Mapping between aliases and real (physical) names of imported or referenced modules.
354-
mutable llvm::DenseMap<Identifier, Identifier> ModuleAliasMap;
353+
/// Set if a `-module-alias` was passed. Used to store mapping between module aliases and
354+
/// their corresponding real names, and vice versa for a reverse lookup, which is needed to check
355+
/// if the module names appearing in source files are aliases or real names.
356+
/// \see ASTContext::getRealModuleName.
357+
///
358+
/// The boolean in the value indicates whether or not the entry is keyed by an alias vs real name,
359+
/// i.e. true if the entry is [key: alias_name, value: (real_name, true)].
360+
mutable llvm::DenseMap<Identifier, std::pair<Identifier, bool>> ModuleAliasMap;
355361

356362
/// Retrieve the allocator for the given arena.
357363
llvm::BumpPtrAllocator &
@@ -483,9 +489,23 @@ class ASTContext final {
483489
/// are the real (physical) module names on disk.
484490
void setModuleAliases(const llvm::StringMap<StringRef> &aliasMap);
485491

486-
/// Retrieve the actual module name if a module alias is used via '-module-alias Foo=X', where Foo is
487-
/// a module alias and X is the real (physical) name. Returns \p key if no aliasing is used.
488-
Identifier getRealModuleName(Identifier key) const;
492+
/// Look up the module alias map by the given \p key.
493+
///
494+
/// \param key A module alias or real name to look up the map by
495+
/// \param alwaysReturnRealName Indicates whether it should always retrieve the real module name
496+
/// given \p key. Defaults to true. This takes a higher precedence than
497+
/// \p lookupAliasFromReal.
498+
/// \param lookupAliasFromReal Indicates whether to look up an alias by treating \p key
499+
/// as a real name. Defaults to false.
500+
/// \return The real name or alias mapped to the key.
501+
/// If \p alwaysReturnRealName is true, return the real module name if \p key is an alias
502+
/// or the key itself since that's the real name.
503+
/// If \p lookupAliasFromReal is true, and \p alwaysReturnRealName is false, return
504+
/// only if \p key is a real name, else an empty Identifier.
505+
/// If no aliasing is used, return \p key.
506+
Identifier getRealModuleName(Identifier key,
507+
bool alwaysReturnRealName = true,
508+
bool lookupAliasFromReal = false) const;
489509

490510
/// Decide how to interpret two precedence groups.
491511
Associativity associateInfixOperators(PrecedenceGroupDecl *left,

include/swift/AST/ActorIsolation.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ class ActorIsolation {
106106
operator Kind() const { return getKind(); }
107107

108108
bool isUnspecified() const { return kind == Unspecified; }
109+
110+
bool isIndependent() const { return kind == Independent; }
109111

110112
NominalTypeDecl *getActor() const {
111113
assert(getKind() == ActorInstance || getKind() == DistributedActorInstance);

include/swift/AST/Attr.def

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ TYPE_ATTR(noDerivative)
5656
TYPE_ATTR(async)
5757
TYPE_ATTR(Sendable)
5858
TYPE_ATTR(unchecked)
59+
TYPE_ATTR(_typeSequence)
5960

6061
// SIL-specific attributes
6162
TYPE_ATTR(block_storage)
@@ -426,7 +427,12 @@ DECL_ATTR(_restatedObjCConformance, RestatedObjCConformance,
426427
NotSerialized |
427428
ABIStableToAdd | ABIStableToRemove | APIStableToAdd | APIStableToRemove,
428429
70)
429-
// NOTE: 71 is unused
430+
DECL_ATTR(_typeSequence, TypeSequence,
431+
OnGenericTypeParam |
432+
UserInaccessible |
433+
NotSerialized |
434+
ABIBreakingToAdd | ABIBreakingToRemove | APIBreakingToAdd | APIBreakingToRemove,
435+
71)
430436
// NOTE: 72 is unused
431437
DECL_ATTR(_optimize, Optimize,
432438
OnAbstractFunction | OnSubscript | OnVar |
@@ -676,7 +682,7 @@ SIMPLE_DECL_ATTR(_noImplicitCopy, NoImplicitCopy,
676682
UserInaccessible |
677683
ABIStableToAdd | ABIBreakingToRemove |
678684
APIStableToAdd | APIBreakingToRemove |
679-
OnVar,
685+
OnParam | OnVar,
680686
122)
681687

682688
SIMPLE_DECL_ATTR(_noLocks, NoLocks,

include/swift/AST/Attr.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2061,6 +2061,20 @@ class NonSendableAttr : public DeclAttribute {
20612061
}
20622062
};
20632063

2064+
/// The @_typeSequence attribute, which treats a generic param decl as a variadic
2065+
/// sequence of value/type pairs.
2066+
class TypeSequenceAttr : public DeclAttribute {
2067+
TypeSequenceAttr(SourceLoc atLoc, SourceRange Range);
2068+
2069+
public:
2070+
static TypeSequenceAttr *create(ASTContext &Ctx, SourceLoc atLoc,
2071+
SourceRange Range);
2072+
2073+
static bool classof(const DeclAttribute *DA) {
2074+
return DA->getKind() == DAK_TypeSequence;
2075+
}
2076+
};
2077+
20642078
/// Attributes that may be applied to declarations.
20652079
class DeclAttributes {
20662080
/// Linked list of declaration attributes.

include/swift/AST/Decl.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4168,6 +4168,7 @@ class ProtocolDecl final : public NominalTypeDecl {
41684168
friend class StructuralRequirementsRequest;
41694169
friend class ProtocolDependenciesRequest;
41704170
friend class RequirementSignatureRequest;
4171+
friend class RequirementSignatureRequestRQM;
41714172
friend class ProtocolRequiresClassRequest;
41724173
friend class ExistentialConformsToSelfRequest;
41734174
friend class InheritedProtocolsRequest;
@@ -5371,6 +5372,10 @@ class ParamDecl : public VarDecl {
53715372
Bits.ParamDecl.defaultArgumentKind = static_cast<unsigned>(K);
53725373
}
53735374

5375+
bool isNoImplicitCopy() const {
5376+
return getAttrs().hasAttribute<NoImplicitCopyAttr>();
5377+
}
5378+
53745379
/// Whether this parameter has a default argument expression available.
53755380
///
53765381
/// Note that this will return false for deserialized declarations, which only

0 commit comments

Comments
 (0)